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);
            }
        }
Exemple #2
0
        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));
            }
        }
Exemple #3
0
        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));
            }
        }