public async Task <IActionResult> Get(string id) { Guid guid = Guid.Parse(id); VerifyUser(); GarmentLoadingDto garmentLoadingDto = _garmentLoadingRepository.Find(o => o.Identity == guid).Select(loading => new GarmentLoadingDto(loading) { Items = _garmentLoadingItemRepository.Find(o => o.LoadingId == loading.Identity).OrderBy(i => i.Color).ThenBy(i => i.SizeName).Select(loadingItem => new GarmentLoadingItemDto(loadingItem) ).ToList() } ).FirstOrDefault(); await Task.Yield(); return(Ok(garmentLoadingDto)); }
public async Task <GarmentLoading> Handle(UpdateGarmentLoadingCommand request, CancellationToken cancellationToken) { var loading = _garmentLoadingRepository.Query.Where(o => o.Identity == request.Identity).Select(o => new GarmentLoading(o)).Single(); Dictionary <Guid, double> sewingDOItemToBeUpdated = new Dictionary <Guid, double>(); _garmentLoadingItemRepository.Find(o => o.LoadingId == loading.Identity).ForEach(async loadingItem => { var itemToBeDeleted = request.Items.Where(o => o.Id == loadingItem.Identity && o.IsSave == false).SingleOrDefault(); var item = request.Items.Where(o => o.Id == loadingItem.Identity).Single(); var diffSewingDOQuantity = itemToBeDeleted == null ? Math.Round(loadingItem.Quantity - item.Quantity, 2) : Math.Round(itemToBeDeleted.Quantity, 2); if (sewingDOItemToBeUpdated.ContainsKey(loadingItem.SewingDOItemId)) { sewingDOItemToBeUpdated[loadingItem.SewingDOItemId] += diffSewingDOQuantity; } else { sewingDOItemToBeUpdated.Add(loadingItem.SewingDOItemId, diffSewingDOQuantity); } loadingItem.SetPrice(item.Price); loadingItem.SetQuantity(item.Quantity); loadingItem.SetRemainingQuantity(item.RemainingQuantity); loadingItem.Modify(); if (itemToBeDeleted != null) { loadingItem.Remove(); } await _garmentLoadingItemRepository.Update(loadingItem); }); foreach (var sewingDOItem in sewingDOItemToBeUpdated) { var garmentSewingDOItem = _garmentSewingDOItemRepository.Query.Where(x => x.Identity == sewingDOItem.Key).Select(s => new GarmentSewingDOItem(s)).Single(); garmentSewingDOItem.setRemainingQuantity(Math.Round(garmentSewingDOItem.RemainingQuantity + sewingDOItem.Value, 2)); garmentSewingDOItem.Modify(); await _garmentSewingDOItemRepository.Update(garmentSewingDOItem); } loading.Modify(); await _garmentLoadingRepository.Update(loading); _storage.Save(); return(loading); }
public async Task <GarmentLoading> Handle(RemoveGarmentLoadingCommand request, CancellationToken cancellationToken) { var loading = _garmentLoadingRepository.Query.Where(o => o.Identity == request.Identity).Select(o => new GarmentLoading(o)).Single(); Dictionary <Guid, double> sewingDOItemToBeUpdated = new Dictionary <Guid, double>(); _garmentLoadingItemRepository.Find(o => o.LoadingId == loading.Identity).ForEach(async loadingItem => { if (sewingDOItemToBeUpdated.ContainsKey(loadingItem.SewingDOItemId)) { sewingDOItemToBeUpdated[loadingItem.SewingDOItemId] += loadingItem.Quantity; } else { sewingDOItemToBeUpdated.Add(loadingItem.SewingDOItemId, loadingItem.Quantity); } loadingItem.Remove(); await _garmentLoadingItemRepository.Update(loadingItem); }); foreach (var sewingDOItem in sewingDOItemToBeUpdated) { var garmentSewingDOItem = _garmentSewingDOItemRepository.Query.Where(x => x.Identity == sewingDOItem.Key).Select(s => new GarmentSewingDOItem(s)).Single(); garmentSewingDOItem.setRemainingQuantity(garmentSewingDOItem.RemainingQuantity + sewingDOItem.Value); garmentSewingDOItem.Modify(); await _garmentSewingDOItemRepository.Update(garmentSewingDOItem); } loading.Remove(); await _garmentLoadingRepository.Update(loading); _storage.Save(); return(loading); }