public async Task <IActionResult> Get(string id) { Guid guid = Guid.Parse(id); VerifyUser(); GarmentSewingOutDto garmentSewingOutDto = _garmentSewingOutRepository.Find(o => o.Identity == guid).Select(sewOut => new GarmentSewingOutDto(sewOut) { Items = _garmentSewingOutItemRepository.Find(o => o.SewingOutId == sewOut.Identity).OrderBy(i => i.Color).ThenBy(i => i.SizeName).Select(sewOutItem => new GarmentSewingOutItemDto(sewOutItem) { Details = _garmentSewingOutDetailRepository.Find(o => o.SewingOutItemId == sewOutItem.Identity).OrderBy(i => i.SizeName).Select(sewOutDetail => new GarmentSewingOutDetailDto(sewOutDetail) { }).ToList() }).ToList() } ).FirstOrDefault(); await Task.Yield(); return(Ok(garmentSewingOutDto)); }
public async Task <GarmentAvalComponent> Handle(PlaceGarmentAvalComponentCommand request, CancellationToken cancellationToken) { GarmentComodity garmentComodity = request.Comodity ?? new GarmentComodity(0, null, null); var avalComponentNo = GenerateNo(request); GarmentAvalComponent garmentAvalComponent = new GarmentAvalComponent( Guid.NewGuid(), avalComponentNo, new UnitDepartmentId(request.Unit.Id), request.Unit.Code, request.Unit.Name, request.AvalComponentType, request.RONo, request.Article, new GarmentComodityId(garmentComodity.Id), garmentComodity.Code, garmentComodity.Name, request.Date.GetValueOrDefault() ); foreach (var item in request.Items.Where(w => w.IsSave)) { SizeValueObject sizeValueObject = item.Size ?? new SizeValueObject(0, null); GarmentAvalComponentItem garmentAvalComponentItem = new GarmentAvalComponentItem( Guid.NewGuid(), garmentAvalComponent.Identity, item.CuttingInDetailId, item.SewingOutItemId, item.SewingOutDetailId, new ProductId(item.Product.Id), item.Product.Code, item.Product.Name, item.DesignColor, item.Color, item.Quantity, item.Quantity, new SizeId(sizeValueObject.Id), sizeValueObject.Size, item.Price, item.BasicPrice ); await _garmentAvalComponentItemRepository.Update(garmentAvalComponentItem); if (garmentAvalComponent.AvalComponentType == "CUTTING") { var cuttingInDetail = _garmentCuttingInDetailRepository.Find(f => f.Identity == garmentAvalComponentItem.CuttingInDetailId).SingleOrDefault(); if (cuttingInDetail == null) { throw new Exception($"CuttingInDetail {garmentAvalComponentItem.CuttingInDetailId} not found"); } else { cuttingInDetail.SetRemainingQuantity(cuttingInDetail.RemainingQuantity - garmentAvalComponentItem.Quantity); cuttingInDetail.Modify(); await _garmentCuttingInDetailRepository.Update(cuttingInDetail); } } else if (garmentAvalComponent.AvalComponentType == "SEWING") { //if (item.IsDifferentSize) //{ // var sewingOutDetail = _garmentSewingOutDetailRepository.Find(f => f.Identity == garmentAvalComponentItem.SewingOutDetailId).SingleOrDefault(); // if (sewingOutDetail == null) // { // throw new Exception($"SewingOutDetail {garmentAvalComponentItem.SewingOutDetailId} not found"); // } // //else // //{ // // sewingOutDetail.Modify(); // // await _garmentSewingOutDetailRepository.Update(sewingOutDetail); // //} //} //else //{ var sewingOutItem = _garmentSewingOutItemRepository.Find(f => f.Identity == garmentAvalComponentItem.SewingOutItemId).SingleOrDefault(); if (sewingOutItem == null) { throw new Exception($"SewingOutItem {garmentAvalComponentItem.SewingOutItemId} not found"); } else { sewingOutItem.SetRemainingQuantity(sewingOutItem.RemainingQuantity - garmentAvalComponentItem.Quantity); sewingOutItem.Modify(); await _garmentSewingOutItemRepository.Update(sewingOutItem); } //} } } await _garmentAvalComponentRepository.Update(garmentAvalComponent); _storage.Save(); return(garmentAvalComponent); }
public async Task <GarmentSewingOut> Handle(UpdateGarmentSewingOutCommand request, CancellationToken cancellationToken) { var sewOut = _garmentSewingOutRepository.Query.Where(o => o.Identity == request.Identity).Select(o => new GarmentSewingOut(o)).Single(); GarmentComodityPrice garmentComodityPrice = _garmentComodityPriceRepository.Query.Where(a => a.IsValid == true && a.UnitId == request.Unit.Id && a.ComodityId == request.Comodity.Id).Select(s => new GarmentComodityPrice(s)).Single(); if (sewOut.SewingTo == "CUTTING") { Guid cutInId = _garmentCuttingInItemRepository.Query.Where(a => a.SewingOutId == sewOut.Identity).First().CutInId; var cutIn = _garmentCuttingInRepository.Query.Where(a => a.Identity == cutInId).Select(a => new GarmentCuttingIn(a)).Single(); _garmentCuttingInItemRepository.Find(o => o.CutInId == cutIn.Identity).ForEach(async cutInItem => { cutInItem.Modify(); await _garmentCuttingInItemRepository.Update(cutInItem); }); cutIn.SetDate(request.SewingOutDate.GetValueOrDefault()); cutIn.Modify(); await _garmentCuttingInRepository.Update(cutIn); } Dictionary <Guid, double> sewInItemToBeUpdated = new Dictionary <Guid, double>(); _garmentSewingOutItemRepository.Find(o => o.SewingOutId == sewOut.Identity).ForEach(async sewOutItem => { var item = request.Items.Where(o => o.Id == sewOutItem.Identity).Single(); var diffSewInQuantity = item.IsSave ? (sewOutItem.Quantity - (request.IsDifferentSize ? item.TotalQuantity : item.Quantity)): sewOutItem.Quantity; if (sewInItemToBeUpdated.ContainsKey(sewOutItem.SewingInItemId)) { sewInItemToBeUpdated[sewOutItem.SewingInItemId] += diffSewInQuantity; } else { sewInItemToBeUpdated.Add(sewOutItem.SewingInItemId, diffSewInQuantity); } if (!item.IsSave) { item.Quantity = 0; if (request.IsDifferentSize) { _garmentSewingOutDetailRepository.Find(o => o.SewingOutItemId == sewOutItem.Identity).ForEach(async sewOutDetail => { if (sewOut.SewingTo == "CUTTING") { GarmentCuttingInDetail cuttingInDetail = _garmentCuttingInDetailRepository.Query.Where(a => a.SewingOutDetailId == sewOutDetail.Identity).Select(a => new GarmentCuttingInDetail(a)).Single(); cuttingInDetail.Remove(); await _garmentCuttingInDetailRepository.Update(cuttingInDetail); } sewOutDetail.Remove(); await _garmentSewingOutDetailRepository.Update(sewOutDetail); }); if (sewOut.SewingTo == "CUTTING") { Guid cuttingInItemId = _garmentCuttingInDetailRepository.Query.Where(a => a.SewingOutDetailId == item.Details.First().Id).Select(a => new GarmentCuttingInDetail(a)).First().CutInItemId; GarmentCuttingInItem cuttingInItem = _garmentCuttingInItemRepository.Query.Where(a => a.Identity == cuttingInItemId).Select(a => new GarmentCuttingInItem(a)).Single(); cuttingInItem.Remove(); await _garmentCuttingInItemRepository.Update(cuttingInItem); } } else { if (sewOut.SewingTo == "CUTTING") { GarmentCuttingInDetail cuttingInDetail = _garmentCuttingInDetailRepository.Query.Where(a => a.SewingOutItemId == sewOutItem.Identity).Select(a => new GarmentCuttingInDetail(a)).Single(); GarmentCuttingInItem cuttingInItem = _garmentCuttingInItemRepository.Query.Where(a => a.Identity == cuttingInDetail.CutInItemId).Select(a => new GarmentCuttingInItem(a)).Single(); cuttingInDetail.Remove(); await _garmentCuttingInDetailRepository.Update(cuttingInDetail); cuttingInItem.Remove(); await _garmentCuttingInItemRepository.Update(cuttingInItem); } } sewOutItem.Remove(); } else { if (request.IsDifferentSize) { _garmentSewingOutDetailRepository.Find(o => o.SewingOutItemId == sewOutItem.Identity).ForEach(async sewOutDetail => { if (sewOutDetail.Identity != Guid.Empty) { var detail = item.Details.Where(o => o.Id == sewOutDetail.Identity).SingleOrDefault(); if (detail != null) { if (sewOut.SewingTo == "CUTTING") { GarmentCuttingInDetail cuttingInDetail = _garmentCuttingInDetailRepository.Query.Where(a => a.SewingOutDetailId == sewOutDetail.Identity).Select(a => new GarmentCuttingInDetail(a)).Single(); cuttingInDetail.SetCuttingInQuantity(Convert.ToInt32(detail.Quantity)); cuttingInDetail.SetPrice((item.BasicPrice + ((double)garmentComodityPrice.Price * 25 / 100)) * detail.Quantity); cuttingInDetail.SetRemainingQuantity(Convert.ToInt32(detail.Quantity)); cuttingInDetail.Modify(); await _garmentCuttingInDetailRepository.Update(cuttingInDetail); } sewOutDetail.SetQuantity(detail.Quantity); sewOutDetail.SetSizeId(new SizeId(detail.Size.Id)); sewOutDetail.SetSizeName(detail.Size.Size); sewOutDetail.Modify(); } else { if (sewOut.SewingTo == "CUTTING") { GarmentCuttingInDetail cuttingInDetail = _garmentCuttingInDetailRepository.Query.Where(a => a.SewingOutDetailId == sewOutDetail.Identity).Select(a => new GarmentCuttingInDetail(a)).Single(); cuttingInDetail.Remove(); await _garmentCuttingInDetailRepository.Update(cuttingInDetail); } sewOutDetail.Remove(); } await _garmentSewingOutDetailRepository.Update(sewOutDetail); } else { GarmentSewingOutDetail garmentSewingOutDetail = new GarmentSewingOutDetail( Guid.NewGuid(), sewOutItem.Identity, sewOutDetail.SizeId, sewOutDetail.SizeName, sewOutDetail.Quantity, sewOutDetail.UomId, sewOutDetail.UomUnit ); await _garmentSewingOutDetailRepository.Update(garmentSewingOutDetail); if (sewOut.SewingTo == "CUTTING") { Guid cuttingInItemId = _garmentCuttingInDetailRepository.Query.Where(a => a.SewingOutItemId == sewOutItem.Identity).Select(a => new GarmentCuttingInDetail(a)).First().CutInItemId; GarmentCuttingInDetail garmentCuttingInDetail = new GarmentCuttingInDetail( Guid.NewGuid(), cuttingInItemId, Guid.Empty, sewOutItem.Identity, garmentSewingOutDetail.Identity, new ProductId(item.Product.Id), item.Product.Code, item.Product.Name, item.DesignColor, null, 0, new UomId(0), null, Convert.ToInt32(garmentSewingOutDetail.Quantity), garmentSewingOutDetail.UomId, garmentSewingOutDetail.UomUnit, garmentSewingOutDetail.Quantity, item.BasicPrice, (item.BasicPrice + ((double)garmentComodityPrice.Price * 25 / 100)) * garmentSewingOutDetail.Quantity, 0, item.Color ); await _garmentCuttingInDetailRepository.Update(garmentCuttingInDetail); } } }); foreach (var detail in item.Details) { if (detail.Id == Guid.Empty) { GarmentSewingOutDetail garmentSewingOutDetail = new GarmentSewingOutDetail( Guid.NewGuid(), sewOutItem.Identity, new SizeId(detail.Size.Id), detail.Size.Size, detail.Quantity, new UomId(detail.Uom.Id), detail.Uom.Unit ); await _garmentSewingOutDetailRepository.Update(garmentSewingOutDetail); if (sewOut.SewingTo == "CUTTING") { Guid cuttingInItemId = _garmentCuttingInDetailRepository.Query.Where(a => a.SewingOutItemId == sewOutItem.Identity).Select(a => new GarmentCuttingInDetail(a)).First().CutInItemId; GarmentCuttingInDetail garmentCuttingInDetail = new GarmentCuttingInDetail( Guid.NewGuid(), cuttingInItemId, Guid.Empty, sewOutItem.Identity, garmentSewingOutDetail.Identity, new ProductId(item.Product.Id), item.Product.Code, item.Product.Name, item.DesignColor, null, 0, new UomId(0), null, Convert.ToInt32(garmentSewingOutDetail.Quantity), garmentSewingOutDetail.UomId, garmentSewingOutDetail.UomUnit, garmentSewingOutDetail.Quantity, item.BasicPrice, (item.BasicPrice + ((double)garmentComodityPrice.Price * 25 / 100)) * garmentSewingOutDetail.Quantity, 0, item.Color ); await _garmentCuttingInDetailRepository.Update(garmentCuttingInDetail); } } } sewOutItem.SetQuantity(item.TotalQuantity); sewOutItem.SetRemainingQuantity(item.TotalQuantity); } else { sewOutItem.SetQuantity(item.Quantity); sewOutItem.SetRemainingQuantity(item.Quantity); if (sewOut.SewingTo == "CUTTING") { GarmentCuttingInDetail cuttingInDetail = _garmentCuttingInDetailRepository.Query.Where(a => a.SewingOutItemId == sewOutItem.Identity).Select(a => new GarmentCuttingInDetail(a)).Single(); cuttingInDetail.SetCuttingInQuantity(Convert.ToInt32(sewOutItem.Quantity)); cuttingInDetail.SetPrice((item.BasicPrice + ((double)garmentComodityPrice.Price * 25 / 100)) * sewOutItem.Quantity); cuttingInDetail.SetRemainingQuantity(Convert.ToInt32(sewOutItem.Quantity)); cuttingInDetail.Modify(); await _garmentCuttingInDetailRepository.Update(cuttingInDetail); } } sewOutItem.SetPrice(item.Price); sewOutItem.Modify(); } await _garmentSewingOutItemRepository.Update(sewOutItem); }); foreach (var sewingInItem in sewInItemToBeUpdated) { var garmentSewInItem = _garmentSewingInItemRepository.Query.Where(x => x.Identity == sewingInItem.Key).Select(s => new GarmentSewingInItem(s)).Single(); garmentSewInItem.SetRemainingQuantity(garmentSewInItem.RemainingQuantity + sewingInItem.Value); garmentSewInItem.Modify(); await _garmentSewingInItemRepository.Update(garmentSewInItem); } sewOut.SetDate(request.SewingOutDate.GetValueOrDefault()); sewOut.Modify(); await _garmentSewingOutRepository.Update(sewOut); _storage.Save(); return(sewOut); }
public async Task <GarmentSewingOut> Handle(RemoveGarmentSewingOutCommand request, CancellationToken cancellationToken) { var sewOut = _garmentSewingOutRepository.Query.Where(o => o.Identity == request.Identity).Select(o => new GarmentSewingOut(o)).Single(); if (sewOut.SewingTo == "CUTTING") { Guid cutInId = _garmentCuttingInItemRepository.Query.Where(a => a.SewingOutId == sewOut.Identity).First().CutInId; var cutIn = _garmentCuttingInRepository.Query.Where(a => a.Identity == cutInId).Select(a => new GarmentCuttingIn(a)).Single(); _garmentCuttingInItemRepository.Find(o => o.CutInId == cutIn.Identity).ForEach(async cutInItem => { _garmentCuttingInDetailRepository.Find(o => o.CutInItemId == cutInItem.Identity).ForEach(async cutInDetail => { cutInDetail.Remove(); await _garmentCuttingInDetailRepository.Update(cutInDetail); }); cutInItem.Remove(); await _garmentCuttingInItemRepository.Update(cutInItem); }); cutIn.Remove(); await _garmentCuttingInRepository.Update(cutIn); } Dictionary <Guid, double> sewInItemToBeUpdated = new Dictionary <Guid, double>(); _garmentSewingOutItemRepository.Find(o => o.SewingOutId == sewOut.Identity).ForEach(async sewOutItem => { if (sewOut.IsDifferentSize) { _garmentSewingOutDetailRepository.Find(o => o.SewingOutItemId == sewOutItem.Identity).ForEach(async sewOutDetail => { if (sewInItemToBeUpdated.ContainsKey(sewOutItem.SewingInItemId)) { sewInItemToBeUpdated[sewOutItem.SewingInItemId] += sewOutDetail.Quantity; } else { sewInItemToBeUpdated.Add(sewOutItem.SewingInItemId, sewOutDetail.Quantity); } sewOutDetail.Remove(); await _garmentSewingOutDetailRepository.Update(sewOutDetail); }); } else { if (sewInItemToBeUpdated.ContainsKey(sewOutItem.SewingInItemId)) { sewInItemToBeUpdated[sewOutItem.SewingInItemId] += sewOutItem.Quantity; } else { sewInItemToBeUpdated.Add(sewOutItem.SewingInItemId, sewOutItem.Quantity); } } sewOutItem.Remove(); await _garmentSewingOutItemRepository.Update(sewOutItem); }); foreach (var sewingInItem in sewInItemToBeUpdated) { var garmentSewInItem = _garmentSewingInItemRepository.Query.Where(x => x.Identity == sewingInItem.Key).Select(s => new GarmentSewingInItem(s)).Single(); garmentSewInItem.SetRemainingQuantity(garmentSewInItem.RemainingQuantity + sewingInItem.Value); garmentSewInItem.Modify(); await _garmentSewingInItemRepository.Update(garmentSewInItem); } sewOut.Remove(); await _garmentSewingOutRepository.Update(sewOut); _storage.Save(); return(sewOut); }
public async Task <GarmentAvalComponent> Handle(RemoveGarmentAvalComponentCommand request, CancellationToken cancellationToken) { GarmentAvalComponent garmentAvalComponent = _garmentAvalComponentRepository.Query.Where(w => w.Identity == request.Identity).Select(s => new GarmentAvalComponent(s)).Single(); _garmentAvalComponentItemRepository.Find(f => f.AvalComponentId == garmentAvalComponent.Identity).ForEach(async garmentAvalComponentItem => { garmentAvalComponentItem.Remove(); await _garmentAvalComponentItemRepository.Update(garmentAvalComponentItem); if (garmentAvalComponent.AvalComponentType == "CUTTING") { var cuttingInDetail = _garmentCuttingInDetailRepository.Find(f => f.Identity == garmentAvalComponentItem.CuttingInDetailId).SingleOrDefault(); if (cuttingInDetail == null) { throw new Exception($"CuttingInDetail {garmentAvalComponentItem.CuttingInDetailId} not found"); } else { cuttingInDetail.SetRemainingQuantity(cuttingInDetail.RemainingQuantity + garmentAvalComponentItem.Quantity); cuttingInDetail.Modify(); await _garmentCuttingInDetailRepository.Update(cuttingInDetail); } } else if (garmentAvalComponent.AvalComponentType == "SEWING") { //if (item.IsDifferentSize) //{ // var sewingOutDetail = _garmentSewingOutDetailRepository.Find(f => f.Identity == garmentAvalComponentItem.SewingOutDetailId).SingleOrDefault(); // if (sewingOutDetail == null) // { // throw new Exception($"SewingOutDetail {garmentAvalComponentItem.SewingOutDetailId} not found"); // } // //else // //{ // // sewingOutDetail.Modify(); // // await _garmentSewingOutDetailRepository.Update(sewingOutDetail); // //} //} //else //{ var sewingOutItem = _garmentSewingOutItemRepository.Find(f => f.Identity == garmentAvalComponentItem.SewingOutItemId).SingleOrDefault(); if (sewingOutItem == null) { throw new Exception($"SewingOutItem {garmentAvalComponentItem.SewingOutItemId} not found"); } else { sewingOutItem.SetRemainingQuantity(sewingOutItem.RemainingQuantity + garmentAvalComponentItem.Quantity); sewingOutItem.Modify(); await _garmentSewingOutItemRepository.Update(sewingOutItem); } //} } }); garmentAvalComponent.Remove(); await _garmentAvalComponentRepository.Update(garmentAvalComponent); _storage.Save(); return(garmentAvalComponent); }