немного изменений и добавлены классы для магазина в ...FileImplement
This commit is contained in:
parent
7f2811d1cf
commit
7e2dcf663e
@ -2,6 +2,7 @@
|
|||||||
using SushiBar;
|
using SushiBar;
|
||||||
using SushiBarContracts.BindingModel;
|
using SushiBarContracts.BindingModel;
|
||||||
using SushiBarContracts.BusinessLogicsContracts;
|
using SushiBarContracts.BusinessLogicsContracts;
|
||||||
|
using SushiBarView.Shops;
|
||||||
|
|
||||||
namespace SushiBarView
|
namespace SushiBarView
|
||||||
{
|
{
|
||||||
|
@ -53,6 +53,7 @@ namespace SushiBarBusinessLogic.BusinessLogic
|
|||||||
public bool FinishOrder(OrderBindingModel model)
|
public bool FinishOrder(OrderBindingModel model)
|
||||||
{
|
{
|
||||||
return ChangeStatus(model, OrderStatus.Готов);
|
return ChangeStatus(model, OrderStatus.Готов);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool DeliveryOrder(OrderBindingModel model)
|
public bool DeliveryOrder(OrderBindingModel model)
|
||||||
|
@ -6,6 +6,7 @@ using SushiBarContracts.StoragesContracts;
|
|||||||
using SushiBarContracts.ViewModels;
|
using SushiBarContracts.ViewModels;
|
||||||
using SushiBarDataModels;
|
using SushiBarDataModels;
|
||||||
using SushiBarDataModels.Models;
|
using SushiBarDataModels.Models;
|
||||||
|
using System.Numerics;
|
||||||
|
|
||||||
namespace SushiBarBusinessLogic
|
namespace SushiBarBusinessLogic
|
||||||
{
|
{
|
||||||
@ -14,6 +15,7 @@ namespace SushiBarBusinessLogic
|
|||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
private readonly IShopStorage _shopStorage;
|
private readonly IShopStorage _shopStorage;
|
||||||
|
|
||||||
|
|
||||||
public ShopLogic(ILogger<ShopLogic> logger, IShopStorage shopStorage)
|
public ShopLogic(ILogger<ShopLogic> logger, IShopStorage shopStorage)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
@ -53,7 +55,7 @@ namespace SushiBarBusinessLogic
|
|||||||
public bool Create(ShopBindingModel model)
|
public bool Create(ShopBindingModel model)
|
||||||
{
|
{
|
||||||
CheckModel(model);
|
CheckModel(model);
|
||||||
if(_shopStorage.Insert(model) == null)
|
if (_shopStorage.Insert(model) == null)
|
||||||
{
|
{
|
||||||
_logger.LogWarning("Вставка в хранилище прервана");
|
_logger.LogWarning("Вставка в хранилище прервана");
|
||||||
return false;
|
return false;
|
||||||
@ -64,7 +66,7 @@ namespace SushiBarBusinessLogic
|
|||||||
public bool Update(ShopBindingModel model)
|
public bool Update(ShopBindingModel model)
|
||||||
{
|
{
|
||||||
CheckModel(model);
|
CheckModel(model);
|
||||||
if(_shopStorage.Update(model) == null)
|
if (_shopStorage.Update(model) == null)
|
||||||
{
|
{
|
||||||
_logger.LogWarning("Обновление прервано");
|
_logger.LogWarning("Обновление прервано");
|
||||||
return false;
|
return false;
|
||||||
@ -75,7 +77,7 @@ namespace SushiBarBusinessLogic
|
|||||||
public bool Delete(ShopBindingModel model)
|
public bool Delete(ShopBindingModel model)
|
||||||
{
|
{
|
||||||
CheckModel(model);
|
CheckModel(model);
|
||||||
if(_shopStorage?.Delete(model) == null)
|
if (_shopStorage?.Delete(model) == null)
|
||||||
{
|
{
|
||||||
_logger.LogWarning("Удаление прервано");
|
_logger.LogWarning("Удаление прервано");
|
||||||
return false;
|
return false;
|
||||||
@ -85,15 +87,22 @@ namespace SushiBarBusinessLogic
|
|||||||
|
|
||||||
public bool AddSushiInShop(ShopSearchModel model, ISushiModel sushi, int count)
|
public bool AddSushiInShop(ShopSearchModel model, ISushiModel sushi, int count)
|
||||||
{
|
{
|
||||||
if (model == null) throw new ArgumentNullException(nameof(model));
|
if (model == null)
|
||||||
if(count <= 0)
|
throw new ArgumentNullException(nameof(model));
|
||||||
throw new ArgumentException(nameof(count));
|
if (count <= 0)
|
||||||
_logger.LogInformation("AddSushiInShop. ShopName:{ShopName}.Id:{ Id}", model.ShopName, model.Id);
|
throw new ArgumentException("Количество суши должно быть больше нуля, ало", nameof(count));
|
||||||
|
_logger.LogInformation("Добавлены суши в магазин: {ShopName}.Id:{ Id}", model.ShopName, model.Id);
|
||||||
|
|
||||||
var element = _shopStorage.GetElement(model);
|
var element = _shopStorage.GetElement(model);
|
||||||
if (element == null)
|
if (element == null)
|
||||||
{
|
{
|
||||||
_logger.LogWarning("Не добавлено");
|
_logger.LogWarning("Не добавлено, магазин не найден с таким названием");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var countSushis = element.ShopSushis.Select(x => x.Value.Item2).Sum();
|
||||||
|
if (element.MaxCountSushis - countSushis < count)
|
||||||
|
{
|
||||||
|
_logger.LogWarning("В магазине не хватает места");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (element.ShopSushis.TryGetValue(sushi.Id, out var samesushi))
|
if (element.ShopSushis.TryGetValue(sushi.Id, out var samesushi))
|
||||||
@ -119,9 +128,29 @@ namespace SushiBarBusinessLogic
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool SellSushis(ISushiModel sushi, int count)
|
||||||
|
{
|
||||||
|
if (sushi == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(sushi));
|
||||||
|
}
|
||||||
|
if (count <= 0)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException("Количество суши должно быть больше нуля! алло!", nameof(count));
|
||||||
|
}
|
||||||
|
if (_shopStorage.SellSushis(sushi, count))
|
||||||
|
{
|
||||||
|
_logger.LogInformation("Selling sucsess");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
_logger.LogInformation("Selling failed");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void CheckModel(ShopBindingModel model, bool withParams = true)
|
private void CheckModel(ShopBindingModel model, bool withParams = true)
|
||||||
{
|
{
|
||||||
if(model == null)
|
if (model == null)
|
||||||
throw new ArgumentNullException($"{nameof(model)} является null");
|
throw new ArgumentNullException($"{nameof(model)} является null");
|
||||||
if (!withParams) return;
|
if (!withParams) return;
|
||||||
if (string.IsNullOrEmpty(model.ShopName))
|
if (string.IsNullOrEmpty(model.ShopName))
|
||||||
@ -134,7 +163,7 @@ namespace SushiBarBusinessLogic
|
|||||||
{
|
{
|
||||||
ShopName = model.ShopName,
|
ShopName = model.ShopName,
|
||||||
});
|
});
|
||||||
if(element != null && element.Id != model.Id && element.ShopName == model.ShopName)
|
if (element != null && element.Id != model.Id && element.ShopName == model.ShopName)
|
||||||
{
|
{
|
||||||
throw new InvalidOperationException("Такой магазин с таким названием уже есть");
|
throw new InvalidOperationException("Такой магазин с таким названием уже есть");
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ namespace SushiBarContracts.BindingModel
|
|||||||
public class ShopBindingModel : IShopModel
|
public class ShopBindingModel : IShopModel
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
public int MaxCountSushis { get; set; }
|
||||||
public string ShopName { get; set; }
|
public string ShopName { get; set; }
|
||||||
public string Address { get; set; }
|
public string Address { get; set; }
|
||||||
public DateTime DateOpening { get; set; } = DateTime.Now;
|
public DateTime DateOpening { get; set; } = DateTime.Now;
|
||||||
|
@ -13,5 +13,6 @@ namespace SushiBarContracts.BusinessLogicsContracts
|
|||||||
bool Update(ShopBindingModel model);
|
bool Update(ShopBindingModel model);
|
||||||
bool Delete(ShopBindingModel model);
|
bool Delete(ShopBindingModel model);
|
||||||
bool AddSushiInShop(ShopSearchModel model, ISushiModel sushi, int count);
|
bool AddSushiInShop(ShopSearchModel model, ISushiModel sushi, int count);
|
||||||
|
bool SellSushis(ISushiModel sushi, int count);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
using SushiBarContracts.BindingModel;
|
using SushiBarContracts.BindingModel;
|
||||||
using SushiBarContracts.SearchModel;
|
using SushiBarContracts.SearchModel;
|
||||||
using SushiBarContracts.ViewModels;
|
using SushiBarContracts.ViewModels;
|
||||||
|
using SushiBarDataModels.Models;
|
||||||
|
|
||||||
namespace SushiBarContracts.StoragesContracts
|
namespace SushiBarContracts.StoragesContracts
|
||||||
{
|
{
|
||||||
@ -12,5 +13,9 @@ namespace SushiBarContracts.StoragesContracts
|
|||||||
ShopViewModel? Insert(ShopBindingModel model);
|
ShopViewModel? Insert(ShopBindingModel model);
|
||||||
ShopViewModel? Update(ShopBindingModel model);
|
ShopViewModel? Update(ShopBindingModel model);
|
||||||
ShopViewModel? Delete(ShopBindingModel model);
|
ShopViewModel? Delete(ShopBindingModel model);
|
||||||
|
|
||||||
|
bool SellSushis(ISushiModel model, int count);
|
||||||
|
|
||||||
|
bool CheckCountSushi(ISushiModel model, int count);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,9 @@ namespace SushiBarContracts.ViewModels
|
|||||||
[DisplayName("Адрес")]
|
[DisplayName("Адрес")]
|
||||||
public string Address { get; set; } = string.Empty;
|
public string Address { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[DisplayName("Максимальное количество суши")]
|
||||||
|
public int MaxCountSushis { get; set; }
|
||||||
|
|
||||||
[DisplayName("Дата открытия")]
|
[DisplayName("Дата открытия")]
|
||||||
public DateTime DateOpening { get; set; } = DateTime.Now;
|
public DateTime DateOpening { get; set; } = DateTime.Now;
|
||||||
public Dictionary<int, (ISushiModel, int)> ShopSushis { get; set; } = new();
|
public Dictionary<int, (ISushiModel, int)> ShopSushis { get; set; } = new();
|
||||||
|
@ -4,6 +4,7 @@ namespace SushiBarDataModels
|
|||||||
{
|
{
|
||||||
public interface IShopModel : IId
|
public interface IShopModel : IId
|
||||||
{
|
{
|
||||||
|
int MaxCountSushis { get; }
|
||||||
string ShopName { get; }
|
string ShopName { get; }
|
||||||
string Address { get; }
|
string Address { get; }
|
||||||
DateTime DateOpening { get; }
|
DateTime DateOpening { get; }
|
||||||
|
@ -13,9 +13,12 @@ namespace SushiBarFileImplement
|
|||||||
|
|
||||||
private readonly string SushiFileName = "Sushi.xml";
|
private readonly string SushiFileName = "Sushi.xml";
|
||||||
|
|
||||||
|
private readonly string ShopFileName = "Shop.xml";
|
||||||
|
|
||||||
public List<Component> Components { get; private set; }
|
public List<Component> Components { get; private set; }
|
||||||
public List<Order> Orders { get; private set; }
|
public List<Order> Orders { get; private set; }
|
||||||
public List<Sushi> Sushis { get; private set; }
|
public List<Sushi> Sushis { get; private set; }
|
||||||
|
public List<Shop> Shops { get; private set; }
|
||||||
|
|
||||||
public static DataFileSingleton GetInstance()
|
public static DataFileSingleton GetInstance()
|
||||||
{
|
{
|
||||||
@ -29,12 +32,14 @@ namespace SushiBarFileImplement
|
|||||||
public void SaveComponents() => SaveData(Components, ComponentFileName, "Components", x => x.GetXElement);
|
public void SaveComponents() => SaveData(Components, ComponentFileName, "Components", x => x.GetXElement);
|
||||||
public void SaveSushis() => SaveData(Sushis, SushiFileName, "Sushis", x => x.GetXElement);
|
public void SaveSushis() => SaveData(Sushis, SushiFileName, "Sushis", x => x.GetXElement);
|
||||||
public void SaveOrders() => SaveData(Orders, OrderFileName, "Orders", x => x.GetXElement);
|
public void SaveOrders() => SaveData(Orders, OrderFileName, "Orders", x => x.GetXElement);
|
||||||
|
public void SaveShops() => SaveData(Shops, ShopFileName, "Shops", x => x.GetXElement);
|
||||||
|
|
||||||
private DataFileSingleton()
|
private DataFileSingleton()
|
||||||
{
|
{
|
||||||
Components = LoadData(ComponentFileName, "Component", x => Component.Create(x)!)!;
|
Components = LoadData(ComponentFileName, "Component", x => Component.Create(x)!)!;
|
||||||
Sushis = LoadData(SushiFileName, "Sushi", x => Sushi.Create(x)!)!;
|
Sushis = LoadData(SushiFileName, "Sushi", x => Sushi.Create(x)!)!;
|
||||||
Orders = LoadData(OrderFileName, "Order", x => Order.Create(x)!)!;
|
Orders = LoadData(OrderFileName, "Order", x => Order.Create(x)!)!;
|
||||||
|
Shops = LoadData(ShopFileName, "Shop", x => Shop.Create(x)!)!;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<T>? LoadData<T>(string filename, string xmlNodeName, Func<XElement, T> selectFunction)
|
private static List<T>? LoadData<T>(string filename, string xmlNodeName, Func<XElement, T> selectFunction)
|
||||||
|
115
SushiBarFileImplement/Implements/ShopStorage.cs
Normal file
115
SushiBarFileImplement/Implements/ShopStorage.cs
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
using SushiBarContracts.BindingModel;
|
||||||
|
using SushiBarContracts.SearchModel;
|
||||||
|
using SushiBarContracts.StoragesContracts;
|
||||||
|
using SushiBarContracts.ViewModels;
|
||||||
|
using SushiBarDataModels.Models;
|
||||||
|
using SushiBarFileImplement.Models;
|
||||||
|
|
||||||
|
namespace SushiBarFileImplement.Implements
|
||||||
|
{
|
||||||
|
public class ShopStorage : IShopStorage
|
||||||
|
{
|
||||||
|
private readonly DataFileSingleton _source;
|
||||||
|
public ShopStorage()
|
||||||
|
{
|
||||||
|
_source = DataFileSingleton.GetInstance();
|
||||||
|
}
|
||||||
|
public List<ShopViewModel> GetFullList()
|
||||||
|
{
|
||||||
|
return _source.Shops.Select(x => x.GetViewModel).ToList();
|
||||||
|
}
|
||||||
|
public List<ShopViewModel> GetFilteredList(ShopSearchModel model)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(model.ShopName))
|
||||||
|
{
|
||||||
|
return new();
|
||||||
|
}
|
||||||
|
return _source.Shops.Where(x => x.ShopName.Contains(model.ShopName)).Select(x => x.GetViewModel).ToList();
|
||||||
|
|
||||||
|
}
|
||||||
|
public ShopViewModel? GetElement(ShopSearchModel model)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(model.ShopName) && !model.Id.HasValue)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return _source.Shops.FirstOrDefault(x => (!string.IsNullOrEmpty(model.ShopName) && x.ShopName == model.ShopName) || (model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
|
||||||
|
}
|
||||||
|
public ShopViewModel? Insert(ShopBindingModel model)
|
||||||
|
{
|
||||||
|
model.Id = _source.Shops.Count > 0 ? _source.Shops.Max(x => x.Id) + 1 : 1;
|
||||||
|
var newShop = Shop.Create(model);
|
||||||
|
if (newShop == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
_source.Shops.Add(newShop);
|
||||||
|
_source.SaveShops();
|
||||||
|
return newShop.GetViewModel;
|
||||||
|
}
|
||||||
|
public ShopViewModel? Update(ShopBindingModel model)
|
||||||
|
{
|
||||||
|
var component = _source.Shops.FirstOrDefault(x => x.Id == model.Id);
|
||||||
|
if (component == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
component.Update(model);
|
||||||
|
_source.SaveShops();
|
||||||
|
return component.GetViewModel;
|
||||||
|
}
|
||||||
|
public ShopViewModel? Delete(ShopBindingModel model)
|
||||||
|
{
|
||||||
|
var element = _source.Shops.FirstOrDefault(x => x.Id == model.Id);
|
||||||
|
if (element != null)
|
||||||
|
{
|
||||||
|
_source.Shops.Remove(element);
|
||||||
|
_source.SaveShops();
|
||||||
|
return element.GetViewModel;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
public bool CheckCountSushi(ISushiModel model, int count)
|
||||||
|
{
|
||||||
|
int store = _source.Shops.Select(x => x.ShopSushis.Select(y => (y.Value.Item1.Id == model.Id ? y.Value.Item2 : 0)).Sum()).Sum();
|
||||||
|
return store >= count;
|
||||||
|
}
|
||||||
|
public bool SellSushis(ISushiModel model, int count)
|
||||||
|
{
|
||||||
|
var sushi = _source.Sushis.FirstOrDefault(x => x.Id == model.Id);
|
||||||
|
if (sushi == null || !CheckCountSushi(model, count))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var shop in _source.Shops)
|
||||||
|
{
|
||||||
|
var sushis = shop.ShopSushis;
|
||||||
|
foreach (var elem in sushis.Where(x => x.Value.Item1.Id == sushi.Id))
|
||||||
|
{
|
||||||
|
var selling = Math.Min(elem.Value.Item2, count);
|
||||||
|
sushis[elem.Value.Item1.Id] = (elem.Value.Item1, elem.Value.Item2 - selling);
|
||||||
|
count -= selling;
|
||||||
|
|
||||||
|
if (count <= 0)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
shop.Update(new ShopBindingModel
|
||||||
|
{
|
||||||
|
Id = model.Id,
|
||||||
|
ShopName = shop.ShopName,
|
||||||
|
Address = shop.Address,
|
||||||
|
DateOpening = shop.DateOpening,
|
||||||
|
ShopSushis = sushis,
|
||||||
|
MaxCountSushis = shop.MaxCountSushis
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
_source.SaveShops();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
103
SushiBarFileImplement/Models/Shop.cs
Normal file
103
SushiBarFileImplement/Models/Shop.cs
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
using SushiBarContracts.BindingModel;
|
||||||
|
using SushiBarContracts.ViewModels;
|
||||||
|
using SushiBarDataModels;
|
||||||
|
using SushiBarDataModels.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
|
||||||
|
namespace SushiBarFileImplement.Models
|
||||||
|
{
|
||||||
|
public class Shop : IShopModel
|
||||||
|
{
|
||||||
|
public int Id { get; private set; }
|
||||||
|
public string ShopName { get; private set; }
|
||||||
|
public string Address { get; private set; }
|
||||||
|
public DateTime DateOpening { get; private set; }
|
||||||
|
public int MaxCountSushis { get; private set; }
|
||||||
|
public Dictionary<int, int> Sushis { get; private set; } = new();
|
||||||
|
|
||||||
|
private Dictionary<int, (ISushiModel, int)>? _shopSushis = null;
|
||||||
|
public Dictionary<int, (ISushiModel, int)> ShopSushis
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_shopSushis == null)
|
||||||
|
{
|
||||||
|
var source = DataFileSingleton.GetInstance();
|
||||||
|
_shopSushis = Sushis.ToDictionary(x => x.Key, y => ((source.Sushis.FirstOrDefault(z => z.Id == y.Key) as ISushiModel)!, y.Value));
|
||||||
|
}
|
||||||
|
return _shopSushis;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static Shop? Create(ShopBindingModel model)
|
||||||
|
{
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return new Shop()
|
||||||
|
{
|
||||||
|
Id = model.Id,
|
||||||
|
ShopName = model.ShopName,
|
||||||
|
Address = model.Address,
|
||||||
|
DateOpening = model.DateOpening,
|
||||||
|
MaxCountSushis = model.MaxCountSushis,
|
||||||
|
Sushis = model.ShopSushis.ToDictionary(x => x.Key, x => x.Value.Item2)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
public static Shop? Create(XElement element)
|
||||||
|
{
|
||||||
|
if (element == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return new Shop()
|
||||||
|
{
|
||||||
|
Id = Convert.ToInt32(element.Attribute("Id")!.Value),
|
||||||
|
ShopName = element.Element("ShopName")!.Value,
|
||||||
|
Address = element.Element("Address")!.Value,
|
||||||
|
MaxCountSushis = Convert.ToInt32(element.Element("MaxCountSushis")!.Value),
|
||||||
|
DateOpening = Convert.ToDateTime(element.Element("DateOpening")!.Value),
|
||||||
|
Sushis = element.Element("ShopSushis")!.Elements("ShopSushis").ToDictionary(x => Convert.ToInt32(x.Element("Key")?.Value), x => Convert.ToInt32(x.Element("Value")?.Value))
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
public void Update(ShopBindingModel? model)
|
||||||
|
{
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ShopName = model.ShopName;
|
||||||
|
Address = model.Address;
|
||||||
|
DateOpening = model.DateOpening;
|
||||||
|
MaxCountSushis = model.MaxCountSushis;
|
||||||
|
if (model.ShopSushis.Count > 0)
|
||||||
|
{
|
||||||
|
Sushis = model.ShopSushis.ToDictionary(x => x.Key, x => x.Value.Item2);
|
||||||
|
_shopSushis = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public ShopViewModel GetViewModel => new()
|
||||||
|
{
|
||||||
|
Id = Id,
|
||||||
|
ShopName = ShopName,
|
||||||
|
Address = Address,
|
||||||
|
DateOpening = DateOpening,
|
||||||
|
MaxCountSushis = MaxCountSushis,
|
||||||
|
ShopSushis = ShopSushis
|
||||||
|
};
|
||||||
|
|
||||||
|
public XElement GetXElement => new XElement("Shop",
|
||||||
|
new XAttribute("Id", Id),
|
||||||
|
new XElement("ShopName", ShopName),
|
||||||
|
new XElement("Address", Address),
|
||||||
|
new XElement("DateOpening", DateOpening),
|
||||||
|
new XElement("MaxCountSushis", MaxCountSushis),
|
||||||
|
new XElement("ShopSushis", Sushis.Select(x => new XElement("ShopSushis", new XElement("Key", x.Key), new XElement("Value", x.Value))).ToArray()));
|
||||||
|
}
|
||||||
|
}
|
@ -2,6 +2,7 @@
|
|||||||
using SushiBarContracts.SearchModel;
|
using SushiBarContracts.SearchModel;
|
||||||
using SushiBarContracts.StoragesContracts;
|
using SushiBarContracts.StoragesContracts;
|
||||||
using SushiBarContracts.ViewModels;
|
using SushiBarContracts.ViewModels;
|
||||||
|
using SushiBarDataModels;
|
||||||
using SushiBarListImplement;
|
using SushiBarListImplement;
|
||||||
using SushiBarListImplements.Models;
|
using SushiBarListImplements.Models;
|
||||||
|
|
||||||
@ -106,5 +107,15 @@ namespace SushiBarListImplements.Implements
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool SellSushis(IShopModel model, int count)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool CheckCountSushi(IShopModel model, int count)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ using SushiBarDataModels.Models;
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
@ -13,6 +14,7 @@ namespace SushiBarListImplements.Models
|
|||||||
public class Shop : IShopModel
|
public class Shop : IShopModel
|
||||||
{
|
{
|
||||||
public int Id { get; private set; }
|
public int Id { get; private set; }
|
||||||
|
public int MaxCountSushis { get; private set; }
|
||||||
public string ShopName { get; private set; }
|
public string ShopName { get; private set; }
|
||||||
public string Address { get; private set; }
|
public string Address { get; private set; }
|
||||||
public DateTime DateOpening { get; private set; } = DateTime.Now;
|
public DateTime DateOpening { get; private set; } = DateTime.Now;
|
||||||
@ -31,7 +33,8 @@ namespace SushiBarListImplements.Models
|
|||||||
ShopName = model.ShopName,
|
ShopName = model.ShopName,
|
||||||
Address = model.Address,
|
Address = model.Address,
|
||||||
DateOpening = model.DateOpening,
|
DateOpening = model.DateOpening,
|
||||||
ShopSushis = model.ShopSushis
|
ShopSushis = model.ShopSushis,
|
||||||
|
MaxCountSushis = model.MaxCountSushis
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,6 +45,7 @@ namespace SushiBarListImplements.Models
|
|||||||
Address = model.Address;
|
Address = model.Address;
|
||||||
DateOpening = model.DateOpening;
|
DateOpening = model.DateOpening;
|
||||||
ShopSushis = model.ShopSushis;
|
ShopSushis = model.ShopSushis;
|
||||||
|
MaxCountSushis = model.MaxCountSushis;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ShopViewModel GetViewModel => new()
|
public ShopViewModel GetViewModel => new()
|
||||||
@ -50,7 +54,8 @@ namespace SushiBarListImplements.Models
|
|||||||
ShopName = ShopName,
|
ShopName = ShopName,
|
||||||
Address = Address,
|
Address = Address,
|
||||||
DateOpening = DateOpening,
|
DateOpening = DateOpening,
|
||||||
ShopSushis = ShopSushis
|
ShopSushis = ShopSushis,
|
||||||
|
MaxCountSushis = MaxCountSushis
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user