Example #1
0
        public HttpResponseMessage insertTransaction(long SourceAccount, long destinationAccount, int amt, string type, string comment)
        {
            int               userId            = getCustomerId(SourceAccount);
            DateTime          date              = DateTime.Now;
            transactionDetail transactionInsert = new transactionDetail
            {
                sourceAccountNumber      = SourceAccount,
                destinationAccountNumber = destinationAccount,
                transactionDate          = date,
                transactionAmount        = amt,
                transactionType          = type,
                comments = comment,
                transactionAuthorizedBy = userId
            };

            dbContext.transactionDetails.Add(transactionInsert);
            dbContext.SaveChanges();
            return(Request.CreateResponse(HttpStatusCode.OK));
        }
        public IHttpActionResult ProcessTransaction(TransactionViewModel transaction)
        {
            try
            {
                using (DB_FleetServiceEntities db = new DB_FleetServiceEntities())
                {
                    var rta = new ResponseApiViewModel();

                    var consecutive = 0;

                    decimal valueWithoutDscount           = Convert.ToDecimal(string.Format("{0:F2}", transaction.valueWithoutDiscount));
                    decimal discountValue                 = Convert.ToDecimal(string.Format("{0:F2}", transaction.discountValue));
                    decimal taxesValue                    = Convert.ToDecimal(string.Format("{0:F2}", transaction.taxesValue));
                    decimal valueWithDiscountWithoutTaxes = Convert.ToDecimal(string.Format("{0:F2}", transaction.valueWithDiscountWithoutTaxes));
                    decimal valueTRX = Convert.ToDecimal(string.Format("{0:F2}", transaction.value));

                    consecutive = db.STRPRC_PROCESS_TRANSACTION_V2(
                        transaction.client.id,
                        transaction.movement.id,
                        valueWithoutDscount,
                        discountValue,
                        valueWithDiscountWithoutTaxes,
                        taxesValue,
                        valueTRX,
                        (transaction.transactionState != null) ? transaction.transactionState.id : null,
                        transaction.usu_id
                        );

                    if (consecutive > 0)
                    {
                        var trx_tmp = db.transactions.Where(trx => trx.cli_id == transaction.client.id && trx.m_id == transaction.movement.id)
                                      .OrderByDescending(trx => trx.trx_registrationDate).FirstOrDefault();

                        if (trx_tmp != null)
                        {
                            var trx_id = trx_tmp.trx_id;


                            transaction.id = trx_id;
                            rta.response   = true;
                            rta.message    = "Se ha procesado la: " + transaction.movement.name.ToLower() + " correctamente";


                            if (transaction.headerDetails != null)
                            {
                                transactionDetail trxDetail = new transactionDetail();
                                trxDetail.trx_id          = trx_id;
                                trxDetail.trx_relation_id = (transaction.headerDetails.relatedTransaction != null) ? transaction.headerDetails.relatedTransaction.id : null;
                                if (transaction.headerDetails.vehicle != null)
                                {
                                    VehicleController vehController = new VehicleController();
                                    vehController.Update(transaction.headerDetails.vehicle);
                                }
                                trxDetail.veh_id  = (transaction.headerDetails.vehicle != null) ? transaction.headerDetails.vehicle.id : null;
                                trxDetail.deal_id = (transaction.headerDetails.dealer != null) ? transaction.headerDetails.dealer.id : null;
                                trxDetail.bra_id  = (transaction.headerDetails.branch != null) ? transaction.headerDetails.branch.id : null;
                                trxDetail.mr_id   = (transaction.headerDetails.maintenanceRoutine != null) ? transaction.headerDetails.maintenanceRoutine.id : null;
                                trxDetail.cntr_id = (transaction.headerDetails.contract != null) ? transaction.headerDetails.contract.id : null;

                                if (transaction.movement.id == (int)EnumMovement.APROBACION_ORDEN_DE_TRABAJO)
                                {
                                    var trxRelated = db.transactions.Where(tr => tr.trx_id == trxDetail.trx_relation_id).FirstOrDefault();
                                    trxRelated.trxst_id = (int)EnumTransactionState.APROBADA;
                                    var trxRelatedDetail = db.transactionDetail.Where(trx => trx.trx_id == trxDetail.trx_relation_id).FirstOrDefault();
                                    trxRelatedDetail.usu_approbation     = transaction.usu_id;
                                    trxRelatedDetail.trx_approbationDate = DateTime.Now;
                                }

                                if (transaction.movement.id == (int)EnumMovement.CANCELACION_ORDEN_DE_TRABAJO)
                                {
                                    var trxRelated = db.transactions.Where(tr => tr.trx_id == trxDetail.trx_relation_id).FirstOrDefault();
                                    trxRelated.trxst_id = (int)EnumTransactionState.RECHAZADA;
                                    var trxRelatedDetail = db.transactionDetail.Where(trx => trx.trx_id == trxDetail.trx_relation_id).FirstOrDefault();
                                    trxRelatedDetail.usu_reject     = transaction.usu_id;
                                    trxRelatedDetail.trx_rejectDate = DateTime.Now;
                                }


                                if (transaction.movement.id == (int)EnumMovement.FINALIZACION_ORDEN_DE_TRABAJO)
                                {
                                    var trxRelated = db.transactions.Where(tr => tr.trx_id == trxDetail.trx_relation_id).FirstOrDefault();
                                    trxRelated.trxst_id = (int)EnumTransactionState.FINALIZADA;
                                    var trxRelatedDetail = db.transactionDetail.Where(trx => trx.trx_id == trxDetail.trx_relation_id).FirstOrDefault();
                                    trxRelatedDetail.usu_ending     = transaction.usu_id;
                                    trxRelatedDetail.trx_endingDate = DateTime.Now;
                                }


                                if (transaction.movement.id == (int)EnumMovement.ANULACION_ORDEN_DE_TRABAJO)
                                {
                                    var trxRelated = db.transactions.Where(tr => tr.trx_id == trxDetail.trx_relation_id).FirstOrDefault();
                                    trxRelated.trxst_id = (int)EnumTransactionState.ANULADA;
                                    var trxRelatedDetail = db.transactionDetail.Where(trx => trx.trx_id == trxDetail.trx_relation_id).FirstOrDefault();
                                    trxRelatedDetail.usu_anulation     = transaction.usu_id;
                                    trxRelatedDetail.trx_anulationDate = DateTime.Now;
                                }



                                db.transactionDetail.Add(trxDetail);
                                db.SaveChanges();
                            }


                            if (transaction.lsItems != null)
                            {
                                if (transaction.lsItems.Count > 0)
                                {
                                    foreach (var item in transaction.lsItems)
                                    {
                                        var taxValue             = (item.taxesValue != null) ? item.taxesValue : 0;
                                        transactionItems oItemDB = new transactionItems();
                                        oItemDB.trx_id                           = trx_id;
                                        oItemDB.mi_id                            = item.id;
                                        oItemDB.mi_amount                        = item.amount;
                                        oItemDB.mi_referencePrice                = item.referencePrice;
                                        oItemDB.mi_valueWithoutDiscount          = item.valueWithoutDiscount;
                                        oItemDB.mi_discountValue                 = item.discountValue;
                                        oItemDB.mi_valueWithDiscountWithoutTaxes = item.valueWithDiscountWithoutTaxes;
                                        oItemDB.mi_totalPrice                    = item.valueWithDiscountWithoutTaxes + taxValue;
                                        oItemDB.mi_taxesValue                    = taxValue;
                                        db.transactionItems.Add(oItemDB);
                                        db.SaveChanges();
                                    }
                                }
                            }


                            if (transaction.lsObservations != null)
                            {
                                if (transaction.lsObservations.Count > 0)
                                {
                                    foreach (var observation in transaction.lsObservations)
                                    {
                                        observationsByTransaction observationDb = new observationsByTransaction();
                                        observationDb.trx_id                  = trx_id;
                                        observationDb.obstrx_description      = observation.description;
                                        observationDb.usr_id                  = transaction.usu_id;
                                        observationDb.obstrx_registrationDate = DateTime.Now;
                                        db.observationsByTransaction.Add(observationDb);

                                        db.SaveChanges();
                                    }
                                }
                            }
                        }
                    }
                    return(Ok(rta));
                }
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }