ISEbd-21.Fedotov.I.A.LabWork01 #1

Closed
Ilfedotov.01 wants to merge 6 commits from ISEbd-21.Fedotov.I.A.LabWork01 into main
5 changed files with 41 additions and 23 deletions
Showing only changes of commit bb8f28e937 - Show all commits

View File

@ -13,7 +13,7 @@ namespace DinerContracts.StoragesContracts
{ {
List<OrderViewModel> GetFullList(); List<OrderViewModel> GetFullList();
List<OrderViewModel> GetFilteredList(OrderSearchModel model); List<OrderViewModel> GetFilteredList(OrderSearchModel model);
OrderViewModel GetElement(OrderSearchModel model); OrderViewModel? GetElement(OrderSearchModel model);
OrderViewModel? Insert(OrderBindingModel model); OrderViewModel? Insert(OrderBindingModel model);
OrderViewModel? Update(OrderBindingModel model); OrderViewModel? Update(OrderBindingModel model);

View File

@ -11,9 +11,9 @@ namespace DinerListImplement
{ {
public static DataListSingleton? _instance; public static DataListSingleton? _instance;
public List<Food>? Foods { get; set; } public List<Food> Foods { get; set; }
public List<Snack>? Snacks { get; set; } public List<Snack> Snacks { get; set; }
public List<Order>? Orders { get; set; } public List<Order> Orders { get; set; }
private DataListSingleton() { private DataListSingleton() {
Foods = new List<Food>(); Foods = new List<Food>();

View File

@ -25,18 +25,18 @@ namespace DinerListImplement.Implements
if (_source.Orders[i].ID == model.ID) { if (_source.Orders[i].ID == model.ID) {
var element = _source.Orders[i]; var element = _source.Orders[i];
_source.Orders.RemoveAt(i); _source.Orders.RemoveAt(i);
return element.GetViewModel; return GetViewModel(element);
} }
} }
return null; return null;
} }
public OrderViewModel GetElement(OrderSearchModel model) public OrderViewModel? GetElement(OrderSearchModel model)
{ {
if (!model.ID.HasValue) return null; if (!model.ID.HasValue) return null;
foreach (var order in _source.Orders) { foreach (var order in _source.Orders) {
if (model.ID.HasValue && order.ID == model.ID) { if (model.ID.HasValue && order.ID == model.ID) {
return order.GetViewModel; return GetViewModel(order);
} }
} }
return null; return null;
@ -48,7 +48,7 @@ namespace DinerListImplement.Implements
if (!model.ID.HasValue) return result; if (!model.ID.HasValue) return result;
foreach (var order in _source.Orders) { foreach (var order in _source.Orders) {
if (order.ID == model.ID) { if (order.ID == model.ID) {
result.Add(order.GetViewModel); result.Add(GetViewModel(order));
} }
} }
return result; return result;
@ -58,11 +58,23 @@ namespace DinerListImplement.Implements
{ {
var result = new List<OrderViewModel>(); var result = new List<OrderViewModel>();
foreach (var order in _source.Orders) { foreach (var order in _source.Orders) {
result.Add(order.GetViewModel); result.Add(GetViewModel(order));
} }
return result; 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) public OrderViewModel? Insert(OrderBindingModel model)
{ {
model.ID = 1; model.ID = 1;
@ -74,7 +86,7 @@ namespace DinerListImplement.Implements
var newOrder = Order.Create(model); var newOrder = Order.Create(model);
if (newOrder == null) return null; if (newOrder == null) return null;
_source.Orders.Add(newOrder); _source.Orders.Add(newOrder);
return newOrder.GetViewModel; return GetViewModel(newOrder);
} }
public OrderViewModel? Update(OrderBindingModel model) public OrderViewModel? Update(OrderBindingModel model)
@ -82,7 +94,7 @@ namespace DinerListImplement.Implements
foreach (var order in _source.Orders) { foreach (var order in _source.Orders) {
if (order.ID == model.ID) { if (order.ID == model.ID) {
order.Update(model); order.Update(model);
return order.GetViewModel; return GetViewModel(order);
} }
} }
return null; return null;

View File

@ -41,8 +41,6 @@ namespace DinerListImplement.Models
} }
public void Update(OrderBindingModel? model) { public void Update(OrderBindingModel? model) {
if (model == null) return; if (model == null) return;
Count = model.Count;
Sum = model.Sum;
Status = model.Status; Status = model.Status;
DateImplement = model?.DateImplement; DateImplement = model?.DateImplement;
} }

View File

@ -26,7 +26,9 @@ namespace DineryBusinessLogic.BusinessLogic
public bool CreateOrder(OrderBindingModel model) public bool CreateOrder(OrderBindingModel model)
{ {
CheckModel(model); CheckModel(model);
model.Status = OrderStatus.Принят;
if (_orderStorage.Insert(model) == null) { if (_orderStorage.Insert(model) == null) {
model.Status = OrderStatus.Неизвестен;
_logger.LogWarning("Insert operation failed"); _logger.LogWarning("Insert operation failed");
return false; return false;
} }
@ -46,7 +48,7 @@ namespace DineryBusinessLogic.BusinessLogic
public List<OrderViewModel>? ReadList(OrderSearchModel? model) public List<OrderViewModel>? ReadList(OrderSearchModel? model)
{ {
_logger.LogInformation("ReadList. ID:{ID}", model?.ID); _logger.LogInformation("ReadList. ID:{ID}", model?.ID);
var list= model == null? _orderStorage.GetFullList() : _orderStorage.GetFilteredList(model); var list = model == null? _orderStorage.GetFullList() : _orderStorage.GetFilteredList(model);
if (list == null) { if (list == null) {
_logger.LogWarning("ReadList return null list"); _logger.LogWarning("ReadList return null list");
return null; return null;
@ -73,20 +75,26 @@ namespace DineryBusinessLogic.BusinessLogic
} }
private bool StatusUpdate(OrderBindingModel model, OrderStatus newOrderStatus) { private bool StatusUpdate(OrderBindingModel model, OrderStatus newOrderStatus) {
CheckModel(model, false); CheckModel(model, false);
var viewModel = _orderStorage.GetElement(new OrderSearchModel { ID = model.ID });
if (model.Status + 1 != newOrderStatus) { if (viewModel == null)
{
throw new ArgumentNullException(nameof(model));
}
if (viewModel.Status + 1 != newOrderStatus) {
_logger.LogWarning("Status update to " + newOrderStatus.ToString() + " operation failed."); _logger.LogWarning("Status update to " + newOrderStatus.ToString() + " operation failed.");
return false; return false;
} }
model.Status = newOrderStatus; 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.Готов) { if (model.Status == OrderStatus.Готов) {
model.DateImplement = DateTime.Now; 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; return true;
} }