private void setDataPrice(int dealerId, int itemId, float referencePrice, string transacctionType, ref PricesByDealer priceByDealer)
        {
            priceByDealer.deal_id           = dealerId;
            priceByDealer.mi_id             = itemId;
            priceByDealer.mi_referencePrice = referencePrice;

            if (transacctionType == "INSERT")
            {
                priceByDealer.pbd_registrationDate = DateTime.Now;
            }

            if (transacctionType == "UPDATE")
            {
                priceByDealer.pbd_updateDate = DateTime.Now;
            }
        }
        public IHttpActionResult SetPricesByDealer(PricesByDealerViewModel pricesByDealer)
        {
            try
            {
                using (DB_FleetServiceEntities db = new DB_FleetServiceEntities())
                {
                    ResponseApiViewModel rta = new ResponseApiViewModel();

                    var lsOldPrices = db.PricesByDealer.Where(pbd => pbd.deal_id == pricesByDealer.dealer.id).ToList();

                    IEnumerable <MaintenanceItemViewModel> lsNewItems = from lsItems in pricesByDealer.lsMaintenanceItems
                                                                        where !lsOldPrices.Any(itm => itm.mi_id == lsItems.id)
                                                                        select lsItems;


                    if (lsOldPrices.Count > 0)
                    {
                        foreach (var oldPrice in lsOldPrices)
                        {
                            var newPrice = pricesByDealer.lsMaintenanceItems.Find(mi => mi.id == oldPrice.mi_id && mi.state == true);
                            if (newPrice != null)
                            {
                                if (oldPrice.mi_referencePrice != newPrice.referencePrice)
                                {
                                    PricesByDealer priceByDealer = db.PricesByDealer.Where(pbd => pbd.pbd_id == oldPrice.pbd_id).FirstOrDefault();
                                    this.setDataPrice((int)pricesByDealer.dealer.id, (int)oldPrice.mi_id, (float)newPrice.referencePrice, "UPDATE", ref priceByDealer);
                                    db.SaveChanges();
                                }
                            }
                        }


                        foreach (var item in lsNewItems)
                        {
                            PricesByDealer priceByDealer = new PricesByDealer();
                            this.setDataPrice((int)pricesByDealer.dealer.id, (int)item.id, (float)item.referencePrice, "INSERT", ref priceByDealer);
                            db.PricesByDealer.Add(priceByDealer);
                            db.SaveChanges();
                        }
                    }
                    else
                    {
                        foreach (var item in pricesByDealer.lsMaintenanceItems)
                        {
                            PricesByDealer priceByDealer = new PricesByDealer();
                            this.setDataPrice((int)pricesByDealer.dealer.id, (int)item.id, (float)item.referencePrice, "INSERT", ref priceByDealer);
                            db.PricesByDealer.Add(priceByDealer);
                            db.SaveChanges();
                        }
                    }

                    rta.response = true;
                    rta.message  = "Se han asociado de manera correcta los precios para el concesionario: " + pricesByDealer.dealer.name;

                    return(Ok(rta));
                }
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }