예제 #1
0
        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));
        }
예제 #2
0
        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()));
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }