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