public ResponseApiViewModel SetPricesByContract(PricesByContractViewModel pricesByContract) { try { using (DB_FleetServiceEntities db = new DB_FleetServiceEntities()) { ResponseApiViewModel rta = new ResponseApiViewModel(); string transactionType = ""; int contract_id = (int)pricesByContract.contract.id; var lsOldPrices = db.PricesByContract.Where(pbc => pbc.cntr_id == pricesByContract.contract.id).ToList(); IEnumerable <MaintenanceItemViewModel> lsNewItems = from lsItems in pricesByContract.lsMaintenanceItems where !lsOldPrices.Any(itm => itm.mi_id == lsItems.id) select lsItems; if (lsOldPrices.Count > 0) { foreach (var oldPrice in lsOldPrices) { var newPrice = pricesByContract.lsMaintenanceItems.Find(it => it.id == oldPrice.mi_id); if (oldPrice.mi_referencePrice != newPrice.referencePrice) { transactionType = "UPDATE"; PricesByContract priceByContract = db.PricesByContract.Where(pbc => pbc.pbc_id == oldPrice.pbc_id).FirstOrDefault(); this.setDataPricesByContract(contract_id, (int)oldPrice.mi_id, (float)newPrice.referencePrice, transactionType, ref priceByContract); db.SaveChanges(); } foreach (var item in lsNewItems) { PricesByContract priceByContract = new PricesByContract(); this.setDataPricesByContract((int)pricesByContract.contract.id, (int)item.id, (float)item.referencePrice, "INSERT", ref priceByContract); db.PricesByContract.Add(priceByContract); db.SaveChanges(); } } } else { transactionType = "INSERT"; foreach (var item in pricesByContract.lsMaintenanceItems) { PricesByContract priceByContract = new PricesByContract(); this.setDataPricesByContract(contract_id, (int)item.id, (float)item.referencePrice, transactionType, ref priceByContract); db.PricesByContract.Add(priceByContract); db.SaveChanges(); } } rta.response = true; rta.message = "Se han asignado los precios del contrato: " + pricesByContract.contract.code; return(rta); } } catch (Exception ex) { return(null); } }
public IHttpActionResult Update(ContractViewModel pContract) { try { var transactionType = "UPDATE"; var rta = new ResponseApiViewModel(); using (DB_FleetServiceEntities db = new DB_FleetServiceEntities()) { Contract oContractDB = db.Contract.Where(ct => ct.cntr_id == pContract.id).FirstOrDefault(); this.setDataToContract(pContract, ref oContractDB, transactionType); db.SaveChanges(); var contract_id = (int)pContract.id; this.deleteVehicleModelsToContract(contract_id); this.deleteVehiclesToContract(contract_id); this.setVehicleModelsToContract(contract_id, pContract.lsVehicleModels); this.setVehicleToContract(contract_id, pContract.lsVehicles); PricesByContractViewModel pricesByContract = new PricesByContractViewModel(); pContract.id = contract_id; pricesByContract.contract = pContract; pricesByContract.lsMaintenanceItems = pContract.lsMaintenanceItems; var response = this.MaintenanceItemController.SetPricesByContract(pricesByContract); if (response.response) { rta.response = true; rta.message = "Se ha actualizado el contrato " + oContractDB.cntr_code; } return(Ok(rta)); } } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public IHttpActionResult Insert(ContractViewModel pContract) { try { var transactionType = "INSERT"; var rta = new ResponseApiViewModel(); Contract oContractDB = new Contract(); this.setDataToContract(pContract, ref oContractDB, transactionType); using (DB_FleetServiceEntities db = new DB_FleetServiceEntities()) { db.Contract.Add(oContractDB); db.SaveChanges(); var contract_id = db.Contract.Where(ctr => oContractDB.cntr_code == ctr.cntr_code).FirstOrDefault().cntr_id; this.setVehicleModelsToContract(contract_id, pContract.lsVehicleModels); this.setVehicleToContract(contract_id, pContract.lsVehicles); PricesByContractViewModel pricesByContract = new PricesByContractViewModel(); pContract.id = contract_id; pricesByContract.contract = pContract; pricesByContract.lsMaintenanceItems = pContract.lsMaintenanceItems; var response = this.MaintenanceItemController.SetPricesByContract(pricesByContract); if (response.response) { rta.response = true; rta.message = "Se ha insertado de manera correcta el contrato " + oContractDB.cntr_code; } return(Ok(rta)); } } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public IHttpActionResult GetPricesByContract(int pContract_id) { try { using (DB_FleetServiceEntities db = new DB_FleetServiceEntities()) { var priceByContract = new PricesByContractViewModel(); priceByContract.contract = db.Contract.Where(ct => ct.cntr_id == pContract_id) .Select(ct => new ContractViewModel { id = ct.cntr_id, consecutive = ct.cntr_consecutive, code = ct.cntr_code, name = ct.cntr_name, observation = ct.cntr_observation, dealer = new DealerViewModel { id = ct.deal_id, document = ct.Dealer.deal_document, name = ct.Dealer.deal_name }, client = new ClientViewModel { id = ct.cli_id, document = ct.Client.cli_document, name = ct.Client.cli_name }, contractState = new ContractStateViewModel { id = ct.cntrst_id, name = ct.ContractState.cntrst_name, description = ct.ContractState.cntrst_description }, discountType = new DiscountTypeViewModel { id = ct.dst_id, name = ct.DiscountType.dst_name }, discountValue = ct.cntr_discountValue, amountOfMaintenances = ct.cntr_amountOfMaintenances, amountVehicles = ct.cntr_amountVehicles, startingDate = ct.cntr_startingDate, endingDate = ct.cntr_endingDate, duration = ct.cntr_duration, registrationDate = ct.cntr_registrationDate } ).FirstOrDefault(); priceByContract.lsMaintenanceItems = db.PricesByContract.Where(ct => ct.cntr_id == pContract_id) .Select( pbc => new MaintenanceItemViewModel { id = pbc.mi_id, code = pbc.MaintenanceItem.mi_code, name = pbc.MaintenanceItem.mi_name, description = pbc.MaintenanceItem.mi_description, type = new TypeOfMaintenanceItemViewModel { id = pbc.MaintenanceItem.tmi_id, name = pbc.MaintenanceItem.TypeOfMaintenanceItem.tmi_name }, presentationUnit = new PresentationUnitViewModel { id = pbc.MaintenanceItem.pu_id, shortName = pbc.MaintenanceItem.PresentationUnit.pu_shortName, longName = pbc.MaintenanceItem.PresentationUnit.pu_longName }, category = (pbc.MaintenanceItem.mict_id != null) ? new CategoryViewModel { id = pbc.MaintenanceItem.mict_id, name = pbc.MaintenanceItem.MaintenanceItemCategory.mict_name } : null, referencePrice = pbc.mi_referencePrice, state = pbc.MaintenanceItem.mi_state, handleTax = pbc.MaintenanceItem.mi_handleTax } ).ToList(); foreach (var maintenanceItem in priceByContract.lsMaintenanceItems) { if (maintenanceItem.handleTax == true) { var lsTaxes = db.TaxesByMaintenanceItem.Where(tx => tx.mi_id == maintenanceItem.id) .Select(tx => new TaxViewModel { id = tx.tax_id, name = tx.Taxes.tax_name, description = tx.Taxes.tax_desccription, percentValue = tx.Taxes.tax_percentValue, registrationDate = tx.Taxes.tax_registrationDate }).ToList(); if (lsTaxes != null) { maintenanceItem.lsTaxes = lsTaxes; } } } return(Ok(priceByContract)); } } catch (Exception ex) { return(BadRequest(ex.Message)); } }