Revert "supply fix"

This reverts commit 4e3fd46750.
This commit is contained in:
user
2025-03-30 17:11:34 +04:00
parent 4e3fd46750
commit 22c101c77c
5 changed files with 0 additions and 216 deletions

View File

@@ -1,162 +0,0 @@
using AutoMapper;
using SquirrelContract.DataModels;
using SquirrelContract.Exceptions;
using SquirrelContract.StoragesContracts;
using SquirrelDatabase.Models;
namespace SquirrelDatabase.Implementations;
public class WarehouseStorageContract : IWarehouseStorageContract
{
private readonly SquirrelDbContext _dbContext;
private readonly Mapper _mapper;
public WarehouseStorageContract(SquirrelDbContext dbContext)
{
_dbContext = dbContext;
var config = new MapperConfiguration(cfg =>
{
cfg.AddMaps(typeof(Warehouse));
});
_mapper = new Mapper(config);
}
public List<WarehouseDataModel> GetList()
{
try
{
return [.. _dbContext.Warehouses.Select(x => _mapper.Map<WarehouseDataModel>(x))];
}
catch (Exception ex)
{
_dbContext.ChangeTracker.Clear();
throw new StorageException(ex);
}
}
public WarehouseDataModel GetElementById(string id)
{
try
{
return _mapper.Map<WarehouseDataModel>(GetWarehouseById(id));
}
catch (Exception ex)
{
_dbContext.ChangeTracker.Clear();
throw new StorageException(ex);
}
}
public void AddElement(WarehouseDataModel warehouseDataModel)
{
try
{
_dbContext.Warehouses.Add(_mapper.Map<Warehouse>(warehouseDataModel));
_dbContext.SaveChanges();
}
catch (Exception ex)
{
_dbContext.ChangeTracker.Clear();
throw new StorageException(ex);
}
}
public void UpdElement(WarehouseDataModel warehouseDataModel)
{
try
{
var element = GetWarehouseById(warehouseDataModel.Id) ?? throw new ElementNotFoundException(warehouseDataModel.Id);
_dbContext.Warehouses.Update(_mapper.Map(warehouseDataModel, element));
_dbContext.SaveChanges();
}
catch (ElementNotFoundException)
{
_dbContext.ChangeTracker.Clear();
throw;
}
catch (Exception ex)
{
_dbContext.ChangeTracker.Clear();
throw new StorageException(ex);
}
}
public void DelElement(string id)
{
try
{
var element = GetWarehouseById(id) ?? throw new ElementNotFoundException(id);
_dbContext.Warehouses.Remove(element);
_dbContext.SaveChanges();
}
catch (ElementNotFoundException)
{
_dbContext.ChangeTracker.Clear();
throw;
}
catch (Exception ex)
{
_dbContext.ChangeTracker.Clear();
throw new StorageException(ex);
}
}
public void UpdWarehouseOnSupply(SupplyDataModel supplyDataModel)
{
foreach (var supplyCocktail in supplyDataModel.Cocktails)
{
var warehouse = _warehouseStorageContract.GetList()
.FirstOrDefault(w => w.Cocktails.Any(c => c.CocktailId == supplyCocktail.CocktailId));
if (warehouse == null)
{
throw new ElementNotFoundException($"No warehouse found for cocktail {supplyCocktail.CocktailId}");
}
var warehouseCocktail = warehouse.Cocktails.FirstOrDefault(c => c.CocktailId == supplyCocktail.CocktailId);
if (warehouseCocktail != null)
{
warehouseCocktail.Count += supplyCocktail.Count; // Увеличиваем количество
}
else
{
warehouse.Cocktails.Add(new WarehouseCocktailDataModel(warehouse.Id, supplyCocktail.CocktailId, supplyCocktail.Count));
}
_warehouseStorageContract.UpdElement(warehouse);
}
}
public bool CheckCocktails(SaleDataModel saleDataModel)
{
try
{
foreach (var saleCocktail in saleDataModel.Cocktails)
{
var warehouse = _dbContext.Warehouses
.FirstOrDefault(w => w.Cocktails.Any(c => c.CocktailId == saleCocktail.CocktailId));
if (warehouse == null)
{
return false;
}
var warehouseCocktail = warehouse.Cocktails
.FirstOrDefault(c => c.CocktailId == saleCocktail.CocktailId);
if (warehouseCocktail == null || warehouseCocktail.Count < saleCocktail.Count)
{
return false;
}
}
return true;
}
catch (Exception ex)
{
throw new StorageException(ex);
}
}
private Warehouse? GetWarehouseById(string id) => _dbContext.Warehouses.FirstOrDefault(x => x.Id == id);
}

View File

@@ -1,15 +0,0 @@
using AutoMapper;
using SquirrelContract.DataModels;
using System.ComponentModel.DataAnnotations.Schema;
namespace SquirrelDatabase.Models;
[AutoMap(typeof(SupplyDataModel), ReverseMap = true)]
public class Supply
{
public required string Id { get; set; }
public DateTime SupplyDate { get; set; }
[ForeignKey("SupplyId")]
public List<SupplyCocktail>? Cocktails { get; set; }
}

View File

@@ -1,14 +0,0 @@
using AutoMapper;
using SquirrelContract.DataModels;
namespace SquirrelDatabase.Models;
[AutoMap(typeof(SupplyCocktailDataModel), ReverseMap = true)]
public class SupplyCocktail
{
public required string SuppliesId { get; set; }
public required string CocktailId { get; set; }
public int Count { get; set; }
public Supply? Supply { get; set; }
public Cocktail? Cocktails { get; set; }
}

View File

@@ -1,15 +0,0 @@
using AutoMapper;
using SquirrelContract.DataModels;
using System.ComponentModel.DataAnnotations.Schema;
namespace SquirrelDatabase.Models;
[AutoMap(typeof(WarehouseDataModel), ReverseMap = true)]
public class Warehouse
{
public required string Id { get; set; }
public required string Name { get; set; }
[ForeignKey("WarehouseId")]
public List<WarehouseCocktail>? Cocktails { get; set; }
}

View File

@@ -1,10 +0,0 @@
namespace SquirrelDatabase.Models;
public class WarehouseCocktail
{
public required string WarehouseId { get; set; }
public required string CocktailId { get; set; }
public int Count { get; set; }
public Warehouse? Warehouse { get; set; }
public Cocktail? Cocktails { get; set; }
}