public IHttpActionResult GetPricesByDealer(int pDealer_id)
        {
            try
            {
                using (DB_FleetServiceEntities db = new DB_FleetServiceEntities())
                {
                    PricesByDealerViewModel lsPricesByItem = new PricesByDealerViewModel();


                    lsPricesByItem.dealer = db.Dealer.Where(deal => deal.deal_id == pDealer_id)
                                            .Select(deal => new DealerViewModel
                    {
                        id   = deal.deal_id,
                        name = deal.deal_name
                    }).FirstOrDefault();

                    lsPricesByItem.lsMaintenanceItems = db.PricesByDealer
                                                        .Where(pbd => pbd.deal_id == pDealer_id)
                                                        .Select(
                        pbd => new MaintenanceItemViewModel
                    {
                        id          = pbd.mi_id,
                        code        = pbd.MaintenanceItem.mi_code,
                        name        = pbd.MaintenanceItem.mi_name,
                        description = pbd.MaintenanceItem.mi_description,
                        type        = new TypeOfMaintenanceItemViewModel
                        {
                            id   = pbd.MaintenanceItem.tmi_id,
                            name = pbd.MaintenanceItem.TypeOfMaintenanceItem.tmi_name
                        },
                        presentationUnit = new PresentationUnitViewModel
                        {
                            id        = pbd.MaintenanceItem.pu_id,
                            shortName = pbd.MaintenanceItem.PresentationUnit.pu_shortName,
                            longName  = pbd.MaintenanceItem.PresentationUnit.pu_longName
                        },
                        category = (pbd.MaintenanceItem.mict_id != null) ? new CategoryViewModel
                        {
                            id   = pbd.MaintenanceItem.mict_id,
                            name = pbd.MaintenanceItem.MaintenanceItemCategory.mict_name
                        } : null,
                        referencePrice   = pbd.mi_referencePrice,
                        state            = pbd.MaintenanceItem.mi_state,
                        registrationDate = pbd.MaintenanceItem.mi_registrationDate
                    }
                        ).ToList();


                    return(Ok(lsPricesByItem));
                }
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        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));
            }
        }