Ejemplo n.º 1
0
        public async Task <ActionResult> Create([FromBody] SaveDeliveryRequest entity)
        {
            try
            {
                RemoveZeroLineItems(entity);

                var delivery = mapper.Map <Delivery>(entity);
                await context.Deliveries.AddAsync(delivery);

                // Update the order line item for quantity returned
                await orderService.ProcessDeliveries(delivery.LineItems, AdjustmentType.Add);

                await context.SaveChangesAsync();

                return(StatusCode(StatusCodes.Status201Created));
            }
            catch (QuantityDeliveredException dEx)
            {
                logger.LogError(dEx.Message);

                ModelState.AddModelError(Constants.ErrorMessage, dEx.Message);
                return(BadRequest(ModelState));
            }
            catch (Exception e)
            {
                logger.LogError(e.Message);
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }
Ejemplo n.º 2
0
        public async Task <ActionResult> Update(long id, [FromBody] SaveDeliveryRequest entity)
        {
            try
            {
                var delivery = await context.Deliveries
                               .Include(c => c.LineItems)
                               .AsNoTracking()
                               .SingleOrDefaultAsync(a => a.Id == id);

                if (delivery == null)
                {
                    return(NotFound());
                }

                // Process the deliveries
                await orderService.ProcessDeliveries(delivery.LineItems, AdjustmentType.Deduct);

                await orderService.ProcessDeliveries(entity.LineItems, AdjustmentType.Add);

                // Process deleted line items
                RemoveZeroLineItems(entity);
                entityListHelpers.CheckItemsForDeletion(delivery.LineItems, entity.LineItems);

                delivery = mapper.Map <Delivery>(entity);

                context.Update(delivery);
                await context.SaveChangesAsync();

                return(StatusCode(StatusCodes.Status204NoContent));
            }
            catch (QuantityDeliveredException dEx)
            {
                logger.LogError(dEx.Message);

                ModelState.AddModelError(Constants.ErrorMessage, dEx.Message);
                return(BadRequest(ModelState));
            }
            catch (DbUpdateConcurrencyException concurrencyEx)
            {
                logger.LogError(concurrencyEx.Message);
                return(StatusCode(StatusCodes.Status409Conflict, Constants.ErrorMessages.ConcurrencyErrorMessage));
            }
            catch (Exception ex)
            {
                logger.LogError(ex.Message);
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }
Ejemplo n.º 3
0
 private SaveDeliveryRequest RemoveZeroLineItems(SaveDeliveryRequest request)
 {
     request.LineItems = request.LineItems.Where(a => a.Quantity != 0);
     return(request);
 }