Ejemplo n.º 1
0
        /// <summary>
        /// Saves specified delivery details.
        /// </summary>
        /// <param name="manufacturer">Object of the manufacturer</param>
        /// <param name="materialItems">List of the Material Items</param>
        /// <returns>Manufacturer</returns>
        public Manufacturer SaveDelivery(Manufacturer manufacturer, List <MaterialItems> materialItems)
        {
            using (_loggerFactory.CreateMethodLogger(MethodBase.GetCurrentMethod(), _logger))
            {
                using (var context = _dbContextFactory.CreateDbContext())
                {
                    if (manufacturer != null)
                    {
                        var delivery = new Delivery()
                        {
                            DeliveryDate = DateTime.Now
                        };
                        context.SaveDeliveryDetails(delivery);

                        if (delivery != null)
                        {
                            var itemDetails = materialItems?.GroupBy(x => x.ItemId)
                                              .Select(item =>
                            {
                                var returnQTY      = item.First();
                                returnQTY.Quantity = item.Sum(xt => xt.Quantity);
                                return(returnQTY);
                            }).ToList();

                            itemDetails?.ForEach(item =>
                            {
                                var deliveryDetails = new DeliveryDetails()
                                {
                                    DeliveryId   = delivery.DeliveryId,
                                    DeliveryDate = DateTime.Now,
                                    ItemId       = item.ItemId,
                                    Quantity     = item.Quantity
                                };

                                context.SaveDeliveryDetails(deliveryDetails);
                            });
                        }

                        context.SaveChanges();
                    }

                    return(manufacturer);
                }
            }
        }