Compare commits

..

2 Commits

Author SHA1 Message Date
fa374edd58 После изм. усл. лаб. 2 2024-05-15 10:05:18 +04:00
001688a3a0 Правка 2024-05-15 10:03:57 +04:00

View File

@ -90,33 +90,42 @@ namespace GarmentFactoryFileImplement.Implements
return false; return false;
} }
int remainingSpace = source.Shops.Select(x => x.Textiles.ContainsKey(model.TextileId.Value) ? x.Textiles[model.TextileId.Value] : 0).Sum(); //магазины по степени наполненности (от самого наполненного) с этим текстилем
var shopsWithThisTextile = source.Shops.Where(x => x.Textiles.ContainsKey(model.TextileId.Value)).OrderByDescending(x => x.Textiles[model.TextileId.Value]).ToList();
if (remainingSpace < model.Count) int thisTextileInShops = shopsWithThisTextile.Select(x => x.Textiles[model.TextileId.Value]).Sum();
if (thisTextileInShops < model.Count)
{ {
return false; return false;
} }
var shops = source.Shops.Where(x => x.Textiles.ContainsKey(model.TextileId.Value)).OrderByDescending(x => x.Textiles[model.TextileId.Value]).ToList(); foreach (var shop in shopsWithThisTextile)
{
//кол-во необходимых текстилей после возможной продажи всех текстилей
int thisTextileNeed = model.Count.Value - shop.Textiles[model.TextileId.Value];
foreach (var shop in shops) //Если текстиль ещё нужен будет
{ if (thisTextileNeed > 0)
int residue = model.Count.Value - shop.Textiles[model.TextileId.Value];
if (residue > 0)
{ {
//удаление всех текстилей в этом магазине
shop.Textiles.Remove(model.TextileId.Value); shop.Textiles.Remove(model.TextileId.Value);
shop.TextilesUpdate(); shop.TextilesUpdate();
model.Count = residue; model.Count = thisTextileNeed;
} }
else else
{ {
if (residue == 0) //Если ровно хватает
if (thisTextileNeed == 0)
{ {
shop.Textiles.Remove(model.TextileId.Value); shop.Textiles.Remove(model.TextileId.Value);
} }
//Если нужно меньше, чем есть в магазине
else else
{ {
shop.Textiles[model.TextileId.Value] = -residue; //уменьшение кол-ва
shop.Textiles[model.TextileId.Value] = -thisTextileNeed;
} }
shop.TextilesUpdate(); shop.TextilesUpdate();
source.SaveShops(); source.SaveShops();