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> GetFilteredList(OrderSearchModel model);
OrderViewModel GetElement(OrderSearchModel model);
OrderViewModel? GetElement(OrderSearchModel model);
OrderViewModel? Insert(OrderBindingModel model);
OrderViewModel? Update(OrderBindingModel model);

View File

@ -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>();

View File

@ -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;

View File

@ -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;
}

View File

@ -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;
}
@ -46,7 +48,7 @@ namespace DineryBusinessLogic.BusinessLogic
public List<OrderViewModel>? ReadList(OrderSearchModel? model)
{
_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) {
_logger.LogWarning("ReadList return null list");
return null;
@ -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;
}