public async Task <ServiceResponse <int> > CreateAsync(DeliveryItemDto deliveryItem, int userId) { if (deliveryItem == null) { throw new ArgumentNullException(nameof(deliveryItem)); } var deliveryItemEntity = deliveryItem.ToEntity(); deliveryItemEntity.UpdateCreatedFields(userId).UpdateModifiedFields(userId); deliveryItemEntity.Recommendations.UpdateCreatedFields(userId).UpdateModifiedFields(userId); deliveryItemEntity.Attachments.UpdateCreatedFields(userId).UpdateModifiedFields(userId); var saved = UnitOfWork.Get <DeliveryItem>().Add(deliveryItemEntity); var deliveryEntity = await UnitOfWork.Get <Delivery>().GetAsync(deliveryItem.DeliveryID); deliveryEntity.TotalGrossPrice = deliveryEntity.TotalGrossPrice + deliveryItem.GrossPrice; deliveryEntity.TotalDiscount = deliveryEntity.TotalDiscount + deliveryItem.Discount; deliveryEntity.TotalDiscountedPrice = deliveryEntity.TotalDiscountedPrice + deliveryItem.DiscountedPrice; UnitOfWork.Get <Delivery>().Update(deliveryEntity); await UnitOfWork.SaveAsync(); return(new SuccessResponse <int>(saved.ID)); }
public async Task <ServiceResponse <DeliveryItemDto> > UpdateAsync(DeliveryItemDto deliveryItem, int userId) { if (deliveryItem == null) { throw new ArgumentNullException(nameof(deliveryItem)); } var existentEntity = await UnitOfWork.Get <DeliveryItem>().GetAsync(di => di.ID == deliveryItem.ID); if (existentEntity == null) { return(new ServiceResponse <DeliveryItemDto>(ServiceResponseStatus.NotFound)); } var deliveryEntity = await UnitOfWork.Get <Delivery>().GetAsync(deliveryItem.DeliveryID); deliveryEntity.TotalGrossPrice = deliveryEntity.TotalGrossPrice - existentEntity.GrossPrice; deliveryEntity.TotalDiscount = deliveryEntity.TotalDiscount - existentEntity.Discount; deliveryEntity.TotalDiscountedPrice = deliveryEntity.TotalDiscountedPrice - existentEntity.DiscountedPrice; var entity = deliveryItem.ToEntity(); existentEntity.Attachments = GetAttachments(existentEntity.ID).ToList(); existentEntity.Recommendations = GetRecommendations(existentEntity.ID).ToList(); existentEntity .UpdateFields(entity) .UpdateAttachments(entity, UnitOfWork, userId) .UpdateRecommendations(entity, UnitOfWork, userId) .UpdateModifiedFields(userId); var updated = UnitOfWork.Get <DeliveryItem>().Update(existentEntity); deliveryEntity.TotalGrossPrice = deliveryEntity.TotalGrossPrice + deliveryItem.GrossPrice; deliveryEntity.TotalDiscount = deliveryEntity.TotalDiscount + deliveryItem.Discount; deliveryEntity.TotalDiscountedPrice = deliveryEntity.TotalDiscountedPrice + deliveryItem.DiscountedPrice; UnitOfWork.Get <Delivery>().Update(deliveryEntity); await UnitOfWork.SaveAsync(); return(new SuccessResponse <DeliveryItemDto>(updated.ToDto())); }
public static DeliveryItemDto ToDto(this DeliveryItem model) { var dto = new DeliveryItemDto { ID = model.ID, DeliveryID = model.DeliveryID, Delivery = model.Delivery?.ToDto(), ArticleID = model.ArticleID, Article = model.Article?.ToDto(), Quantity = model.Quantity, UnitPrice = model.UnitPrice, GrossPrice = model.GrossPrice, Discount = model.Discount, DiscountedPrice = model.DiscountedPrice }; dto.MapDetails(model); dto.CanBeDeleted = !((model.Delivery?.IsSubmitted ?? false) || model.IsDeleted); return(dto); }
public static DeliveryItem ToEntity(this DeliveryItemDto dto) { var entity = new DeliveryItem { ID = dto.ID, DeliveryID = dto.DeliveryID, ArticleID = dto.ArticleID, Quantity = dto.Quantity, UnitPrice = dto.UnitPrice, GrossPrice = dto.GrossPrice, Discount = dto.Discount, DiscountedPrice = dto.DiscountedPrice, Recommendations = dto.Recommendations.Select(r => r.ToEntity()).ToList(), Attachments = dto.Attachments.Select(a => a.ToEntity()).ToList() }; if (!string.IsNullOrEmpty(dto.MainPicture?.FullPath)) { entity.Attachments.Add(dto.MainPicture.ToEntity()); } return(entity); }