ISEbd-21.Fedotov.I.A.LabWork01 #1
@ -13,7 +13,7 @@ namespace DinerContracts.StoragesContracts
|
||||
{
|
||||
List<OrderViewModel> GetFullList();
|
||||
List<OrderViewModel> GetFilteredList(OrderSearchModel model);
|
||||
OrderViewModel GetElement(OrderSearchModel model);
|
||||
OrderViewModel? GetElement(OrderSearchModel model);
|
||||
|
||||
OrderViewModel? Insert(OrderBindingModel model);
|
||||
OrderViewModel? Update(OrderBindingModel model);
|
||||
|
@ -11,9 +11,9 @@ namespace DinerListImplement
|
||||
{
|
||||
public static DataListSingleton? _instance;
|
||||
|
||||
public List<Food>? Foods { get; set; }
|
||||
public List<Snack>? Snacks { get; set; }
|
||||
public List<Order>? Orders { get; set; }
|
||||
public List<Food> Foods { get; set; }
|
||||
public List<Snack> Snacks { get; set; }
|
||||
public List<Order> Orders { get; set; }
|
||||
|
||||
private DataListSingleton() {
|
||||
Foods = new List<Food>();
|
||||
|
@ -25,18 +25,18 @@ namespace DinerListImplement.Implements
|
||||
if (_source.Orders[i].ID == model.ID) {
|
||||
var element = _source.Orders[i];
|
||||
_source.Orders.RemoveAt(i);
|
||||
return element.GetViewModel;
|
||||
return GetViewModel(element);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public OrderViewModel GetElement(OrderSearchModel model)
|
||||
public OrderViewModel? GetElement(OrderSearchModel model)
|
||||
{
|
||||
if (!model.ID.HasValue) return null;
|
||||
foreach (var order in _source.Orders) {
|
||||
if (model.ID.HasValue && order.ID == model.ID) {
|
||||
return order.GetViewModel;
|
||||
return GetViewModel(order);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
@ -48,7 +48,7 @@ namespace DinerListImplement.Implements
|
||||
if (!model.ID.HasValue) return result;
|
||||
foreach (var order in _source.Orders) {
|
||||
if (order.ID == model.ID) {
|
||||
result.Add(order.GetViewModel);
|
||||
result.Add(GetViewModel(order));
|
||||
}
|
||||
}
|
||||
return result;
|
||||
@ -58,11 +58,23 @@ namespace DinerListImplement.Implements
|
||||
{
|
||||
var result = new List<OrderViewModel>();
|
||||
foreach (var order in _source.Orders) {
|
||||
result.Add(order.GetViewModel);
|
||||
result.Add(GetViewModel(order));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private OrderViewModel GetViewModel(Order order)
|
||||
{
|
||||
var viewModel = order.GetViewModel;
|
||||
foreach (var product in _source.Snacks)
|
||||
{
|
||||
if (product.ID == order.ProductID)
|
||||
{
|
||||
viewModel.ProductName = product.ProductName;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return viewModel;
|
||||
}
|
||||
public OrderViewModel? Insert(OrderBindingModel model)
|
||||
{
|
||||
model.ID = 1;
|
||||
@ -74,7 +86,7 @@ namespace DinerListImplement.Implements
|
||||
var newOrder = Order.Create(model);
|
||||
if (newOrder == null) return null;
|
||||
_source.Orders.Add(newOrder);
|
||||
return newOrder.GetViewModel;
|
||||
return GetViewModel(newOrder);
|
||||
}
|
||||
|
||||
public OrderViewModel? Update(OrderBindingModel model)
|
||||
@ -82,7 +94,7 @@ namespace DinerListImplement.Implements
|
||||
foreach (var order in _source.Orders) {
|
||||
if (order.ID == model.ID) {
|
||||
order.Update(model);
|
||||
return order.GetViewModel;
|
||||
return GetViewModel(order);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
@ -41,8 +41,6 @@ namespace DinerListImplement.Models
|
||||
}
|
||||
public void Update(OrderBindingModel? model) {
|
||||
if (model == null) return;
|
||||
Count = model.Count;
|
||||
Sum = model.Sum;
|
||||
Status = model.Status;
|
||||
DateImplement = model?.DateImplement;
|
||||
}
|
||||
|
@ -26,7 +26,9 @@ namespace DineryBusinessLogic.BusinessLogic
|
||||
public bool CreateOrder(OrderBindingModel model)
|
||||
{
|
||||
CheckModel(model);
|
||||
model.Status = OrderStatus.Принят;
|
||||
if (_orderStorage.Insert(model) == null) {
|
||||
model.Status = OrderStatus.Неизвестен;
|
||||
_logger.LogWarning("Insert operation failed");
|
||||
return false;
|
||||
}
|
||||
@ -73,20 +75,26 @@ namespace DineryBusinessLogic.BusinessLogic
|
||||
}
|
||||
private bool StatusUpdate(OrderBindingModel model, OrderStatus newOrderStatus) {
|
||||
CheckModel(model, false);
|
||||
|
||||
if (model.Status + 1 != newOrderStatus) {
|
||||
var viewModel = _orderStorage.GetElement(new OrderSearchModel { ID = model.ID });
|
||||
if (viewModel == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(model));
|
||||
}
|
||||
if (viewModel.Status + 1 != newOrderStatus) {
|
||||
_logger.LogWarning("Status update to " + newOrderStatus.ToString() + " operation failed.");
|
||||
return false;
|
||||
}
|
||||
model.Status = newOrderStatus;
|
||||
var viewModel = _orderStorage.GetElement(new OrderSearchModel { ID = model.ID });
|
||||
if (viewModel == null) {
|
||||
throw new ArgumentNullException(nameof(model));
|
||||
}
|
||||
viewModel.Status = model.Status;
|
||||
if (model.Status == OrderStatus.Готов) {
|
||||
model.DateImplement = DateTime.Now;
|
||||
viewModel.DateImplement = DateTime.Now;
|
||||
}
|
||||
else {
|
||||
model.DateImplement = viewModel.DateImplement;
|
||||
}
|
||||
if (_orderStorage.Update(model) == null) {
|
||||
model.Status--;
|
||||
_logger.LogWarning("Update operarion failed");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user