не до конца рабочая 2

This commit is contained in:
Николай 2023-02-12 15:28:46 +04:00
parent ca830e0109
commit 1ceb6d9089
5 changed files with 98 additions and 125 deletions

View File

@ -9,14 +9,14 @@ namespace FoodOrdersFileImplement.Implements
{ {
public class ComponentStorage : IComponentStorage public class ComponentStorage : IComponentStorage
{ {
private readonly DataFileSingleton source; private readonly DataFileSingleton _source;
public ComponentStorage() public ComponentStorage()
{ {
source = DataFileSingleton.GetInstance(); _source = DataFileSingleton.GetInstance();
} }
public List<ComponentViewModel> GetFullList() public List<ComponentViewModel> GetFullList()
{ {
return source.Components.Select(x => x.GetViewModel).ToList(); return _source.Components.Select(x => x.GetViewModel).ToList();
} }
public List<ComponentViewModel> GetFilteredList(ComponentSearchModel public List<ComponentViewModel> GetFilteredList(ComponentSearchModel
model) model)
@ -25,50 +25,49 @@ namespace FoodOrdersFileImplement.Implements
{ {
return new(); return new();
} }
return source.Components.Where(x => x.ComponentName.Contains(model.ComponentName)).Select(x => x.GetViewModel).ToList(); return _source.Components.Where(x => x.ComponentName.Contains(model.ComponentName)).Select(x => x.GetViewModel).ToList();
} }
public ComponentViewModel? GetElement(ComponentSearchModel model) public ComponentViewModel? GetElement(ComponentSearchModel model)
{ {
if (string.IsNullOrEmpty(model.DishName) && !model.Id.HasValue) if (string.IsNullOrEmpty(model.ComponentName) && !model.Id.HasValue)
{ {
return null; return null;
} }
return source.Dishes return _source.Components.FirstOrDefault(x => (!string.IsNullOrEmpty(model.ComponentName) && x.ComponentName == model.ComponentName) || (model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.DishName) && x.DishName == model.DishName) || (model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
} }
public ComponentViewModel? Insert(ComponentBindingModel model) public ComponentViewModel? Insert(ComponentBindingModel model)
{ {
model.Id = source.Components.Count > 0 ? source.Components.Max(x => model.Id = _source.Components.Count > 0 ? _source.Components.Max(x =>
x.Id) + 1 : 1; x.Id) + 1 : 1;
var newComponent = Component.Create(model); var newComponent = Component.Create(model);
if (newComponent == null) if (newComponent == null)
{ {
return null; return null;
} }
source.Components.Add(newComponent); _source.Components.Add(newComponent);
source.SaveComponents(); _source.SaveComponents();
return newComponent.GetViewModel; return newComponent.GetViewModel;
} }
public ComponentViewModel? Update(ComponentBindingModel model) public ComponentViewModel? Update(ComponentBindingModel model)
{ {
var component = source.Components.FirstOrDefault(x => x.Id == var component = _source.Components.FirstOrDefault(x => x.Id ==
model.Id); model.Id);
if (component == null) if (component == null)
{ {
return null; return null;
} }
component.Update(model); component.Update(model);
source.SaveComponents(); _source.SaveComponents();
return component.GetViewModel; return component.GetViewModel;
} }
public ComponentViewModel? Delete(ComponentBindingModel model) public ComponentViewModel? Delete(ComponentBindingModel model)
{ {
var element = source.Components.FirstOrDefault(x => x.Id == var element = _source.Components.FirstOrDefault(x => x.Id ==
model.Id); model.Id);
if (element != null) if (element != null)
{ {
source.Components.Remove(element); _source.Components.Remove(element);
source.SaveComponents(); _source.SaveComponents();
return element.GetViewModel; return element.GetViewModel;
} }
return null; return null;

View File

@ -3,9 +3,9 @@ using FoodOrdersContracts.SearchModels;
using FoodOrdersContracts.StoragesContracts; using FoodOrdersContracts.StoragesContracts;
using FoodOrdersContracts.ViewModels; using FoodOrdersContracts.ViewModels;
using FoodOrdersFileImplement.Models; using FoodOrdersFileImplement.Models;
using FoodOrdersFileImplement; using System.Reflection.Metadata;
namespace FoodOrdersListImplement.Implements namespace FoodOrdersFileImplement.Implements
{ {
public class DishStorage : IDishStorage public class DishStorage : IDishStorage
{ {
@ -16,24 +16,15 @@ namespace FoodOrdersListImplement.Implements
} }
public List<DishViewModel> GetFullList() public List<DishViewModel> GetFullList()
{ {
return source.Components.Select(x => x.GetViewModel).ToList(); return _source.Dishes.Select(x => x.GetViewModel).ToList();
} }
public List<DishViewModel> GetFilteredList(DishSearchModel public List<DishViewModel> GetFilteredList(DishSearchModel model)
model)
{ {
var result = new List<DishViewModel>();
if (string.IsNullOrEmpty(model.DishName)) if (string.IsNullOrEmpty(model.DishName))
{ {
return result; return new();
} }
foreach (var dish in _source.Dishes) return _source.Dishes.Where(x => x.DishName.Contains(model.DishName)).Select(x => x.GetViewModel).ToList();
{
if (dish.DishName.Contains(model.DishName))
{
result.Add(dish.GetViewModel);
}
}
return result;
} }
public DishViewModel? GetElement(DishSearchModel model) public DishViewModel? GetElement(DishSearchModel model)
{ {
@ -41,59 +32,44 @@ namespace FoodOrdersListImplement.Implements
{ {
return null; return null;
} }
foreach (var dish in _source.Dishes) return _source.Dishes
{ .FirstOrDefault(x => (!string.IsNullOrEmpty(model.DishName) && x.DishName == model.DishName) || (model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
if ((!string.IsNullOrEmpty(model.DishName) &&
dish.DishName == model.DishName) ||
(model.Id.HasValue && dish.Id == model.Id))
{
return dish.GetViewModel;
}
}
return null;
} }
public DishViewModel? Insert(DishBindingModel model) public DishViewModel? Insert(DishBindingModel model)
{ {
model.Id = 1; model.Id = _source.Dishes.Count > 0 ? _source.Dishes.Max(x => x.Id) + 1 : 1;
foreach (var dish in _source.Dishes) var newDoc = Dish.Create(model);
{ if (newDoc == null)
if (model.Id <= dish.Id)
{
model.Id = dish.Id + 1;
}
}
var newDish = Dish.Create(model);
if (newDish == null)
{ {
return null; return null;
} }
_source.Dishes.Add(newDish); _source.Dishes.Add(newDoc);
return newDish.GetViewModel; _source.SaveDishes();
return newDoc.GetViewModel;
} }
public DishViewModel? Update(DishBindingModel model) public DishViewModel? Update(DishBindingModel model)
{ {
foreach (var dish in _source.Dishes) var dish = _source.Dishes.FirstOrDefault(x => x.Id == model.Id);
{ if (dish == null)
if (dish.Id == model.Id)
{ {
return null;
}
dish.Update(model); dish.Update(model);
_source.SaveDishes();
return dish.GetViewModel; return dish.GetViewModel;
} }
}
return null;
}
public DishViewModel? Delete(DishBindingModel model) public DishViewModel? Delete(DishBindingModel model)
{ {
for (int i = 0; i < _source.Dishes.Count; ++i) var document = _source.Dishes.FirstOrDefault(x => x.Id == model.Id);
if (document == null)
{ {
if (_source.Dishes[i].Id == model.Id)
{
var element = _source.Dishes[i];
_source.Dishes.RemoveAt(i);
return element.GetViewModel;
}
}
return null; return null;
} }
document.Update(model);
_source.SaveDishes();
return document.GetViewModel;
}
} }
} }

View File

@ -3,8 +3,9 @@ using FoodOrdersContracts.SearchModels;
using FoodOrdersContracts.StoragesContracts; using FoodOrdersContracts.StoragesContracts;
using FoodOrdersContracts.ViewModels; using FoodOrdersContracts.ViewModels;
using FoodOrdersFileImplement; using FoodOrdersFileImplement;
using FoodOrdersFileImplement.Models;
namespace FoodOrdersListImplement.Implements namespace FoodOrdersFileImplement.Implements
{ {
public class OrderStorage : IOrderStorage public class OrderStorage : IOrderStorage
{ {
@ -15,28 +16,15 @@ namespace FoodOrdersListImplement.Implements
} }
public List<OrderViewModel> GetFullList() public List<OrderViewModel> GetFullList()
{ {
var result = new List<OrderViewModel>(); return _source.Orders.Select(x => x.GetViewModel).ToList();
foreach (var order in _source.Orders)
{
result.Add(GetViewModel(order));
}
return result;
} }
public List<OrderViewModel> GetFilteredList(OrderSearchModel model) public List<OrderViewModel> GetFilteredList(OrderSearchModel model)
{ {
var result = new List<OrderViewModel>();
if (!model.Id.HasValue) if (!model.Id.HasValue)
{ {
return result; return new();
} }
foreach (var order in _source.Orders) return _source.Orders.Where(x => x.Id == model.Id).Select(x => x.GetViewModel).ToList();
{
if (order.Id == model.Id)
{
result.Add(GetViewModel(order));
}
}
return result;
} }
public OrderViewModel? GetElement(OrderSearchModel model) public OrderViewModel? GetElement(OrderSearchModel model)
@ -45,20 +33,14 @@ namespace FoodOrdersListImplement.Implements
{ {
return null; return null;
} }
foreach (var order in _source.Orders) return _source.Orders
{ .FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
if (model.Id.HasValue && order.Id == model.Id)
{
return GetViewModel(order);
}
}
return null;
} }
private OrderViewModel GetViewModel(Order order) private OrderViewModel GetViewModel(Order order)
{ {
var viewModel = order.GetViewModel; var viewModel = order.GetViewModel;
foreach (var iceCream in _source.Dish) foreach (var iceCream in _source.Dishes)
{ {
if (iceCream.Id == order.DishId) if (iceCream.Id == order.DishId)
{ {
@ -71,48 +53,39 @@ namespace FoodOrdersListImplement.Implements
public OrderViewModel? Delete(OrderBindingModel model) public OrderViewModel? Delete(OrderBindingModel model)
{ {
for (int i = 0; i < _source.Orders.Count; ++i) var order = _source.Orders.FirstOrDefault(x => x.Id == model.Id);
if (order == null)
{ {
if (_source.Orders[i].Id == model.Id)
{
var element = _source.Orders[i];
_source.Orders.RemoveAt(i);
return GetViewModel(element);
}
}
return null; return null;
} }
order.Update(model);
_source.SaveOrders();
return order.GetViewModel;
}
public OrderViewModel? Insert(OrderBindingModel model) public OrderViewModel? Insert(OrderBindingModel model)
{ {
model.Id = 1; model.Id = _source.Orders.Count > 0 ? _source.Orders.Max(x => x.Id) + 1 : 1;
foreach (var order in _source.Orders)
{
if (model.Id <= order.Id)
{
model.Id = order.Id + 1;
}
}
var newOrder = Order.Create(model); var newOrder = Order.Create(model);
if (newOrder == null) if (newOrder == null)
{ {
return null; return null;
} }
_source.Orders.Add(newOrder); _source.Orders.Add(newOrder);
return GetViewModel(newOrder); _source.SaveOrders();
return newOrder.GetViewModel;
} }
public OrderViewModel? Update(OrderBindingModel model) public OrderViewModel? Update(OrderBindingModel model)
{ {
foreach (var order in _source.Orders) var order = _source.Orders.FirstOrDefault(x => x.Id == model.Id);
if (order == null)
{ {
if (order.Id == model.Id)
{
order.Update(model);
return GetViewModel(order);
}
}
return null; return null;
} }
order.Update(model);
_source.SaveOrders();
return order.GetViewModel;
}
} }
} }

View File

@ -19,9 +19,9 @@ namespace FoodOrdersFileImplement.Models
{ {
if (_dishComponents == null) if (_dishComponents == null)
{ {
var source = DataFileSingleton.GetInstance(); var _source = DataFileSingleton.GetInstance();
_dishComponents = Components.ToDictionary(x => x.Key, y => _dishComponents = Components.ToDictionary(x => x.Key, y =>
((source.Components.FirstOrDefault(z => z.Id == y.Key) as IComponentModel)!, ((_source.Components.FirstOrDefault(z => z.Id == y.Key) as IComponentModel)!,
y.Value)); y.Value));
} }
return _dishComponents; return _dishComponents;

View File

@ -23,15 +23,40 @@ namespace FoodOrdersFileImplement.Models
{ {
return null; return null;
} }
return new Order() var order = new Order()
{ {
Id = Convert.ToInt32(element.Attribute("Id")!.Value), Id = Convert.ToInt32(element.Attribute("Id")!.Value),
DishId = Convert.ToInt32(element.Element("DocumentId")!.Value), DishId = Convert.ToInt32(element.Element("DishId")!.Value),
Sum = Convert.ToDouble(element.Element("Sum")!.Value),
Count = Convert.ToInt32(element.Element("Count")!.Value), Count = Convert.ToInt32(element.Element("Count")!.Value),
Status = (OrderStatus)Enum.Parse(typeof(OrderStatus), element.Element("Status")!.Value), Sum = Convert.ToDouble(element.Element("Sum")!.Value),
DateCreate = Convert.ToDateTime(element.Element("DateCreate")!.Value), DateCreate = DateTime.ParseExact(element.Element("DateCreate")!.Value, "G", null),
DateImplement = Convert.ToDateTime(element.Element("DateCreate")!.Value) };
DateTime.TryParse(element.Element("DateImplement")!.Value, out DateTime dateImpl);
order.DateImplement = dateImpl;
if (!Enum.TryParse(element.Element("Status")!.Value, out OrderStatus status))
{
return null;
}
order.Status = status;
return order;
}
public static Order? Create(OrderBindingModel? model)
{
if (model == null)
{
return null;
}
return new Order
{
Id = model.Id,
DishId = model.DishId,
Count = model.Count,
Sum = model.Sum,
Status = model.Status,
DateCreate = model.DateCreate,
DateImplement = model.DateImplement,
}; };
} }
public void Update(OrderBindingModel? model) public void Update(OrderBindingModel? model)