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)); } }