/*CODMANINI-ADD*/
        public string PagarOpenPay(Spartane.Core.Classes.Detalle_Pagos_Pacientes_OpenPay.Detalle_Pagos_Pacientes_OpenPay entity)
        {
            string sReturnValue = string.Empty;

            try
            {
                string     apiKey     = ConfigurationManager.AppSettings["openpay_apikey_private"];
                string     merchantId = ConfigurationManager.AppSettings["openpay_id"];
                bool       production = ConfigurationManager.AppSettings["openpay_env"] == "production";
                OpenpayAPI openpayAPI = new OpenpayAPI(apiKey, merchantId, production);

                Customer customer = new Customer();
                customer.Name        = entity.Nombre;
                customer.LastName    = entity.Apellidos;
                customer.PhoneNumber = entity.Telefono;
                customer.Email       = entity.Email;

                ChargeRequest request = new ChargeRequest();
                request.Method          = "card";
                request.SourceId        = entity.TokenID;
                request.Description     = entity.Concepto;
                request.Amount          = Convert.ToDecimal(entity.Importe);
                request.DeviceSessionId = entity.DeviceID;
                request.Customer        = customer;

                Charge charge = openpayAPI.ChargeService.Create(request);
                sReturnValue = charge.Authorization;
            }
            catch (Exception ex)
            {
                sReturnValue = "-1";
            }
            return(sReturnValue);
        }
        public int Update_Datos_Generales(Spartane.Core.Classes.Detalle_Pagos_Pacientes_OpenPay.Detalle_Pagos_Pacientes_OpenPay entity)
        {
            int rta;

            try
            {
                Spartane.Core.Classes.Detalle_Pagos_Pacientes_OpenPay.Detalle_Pagos_Pacientes_OpenPay Detalle_Pagos_Pacientes_OpenPayDB = GetByKey(entity.Folio, false);
                var paramUpdFolio = _dataProvider.GetParameter();
                paramUpdFolio.ParameterName = "Folio";
                paramUpdFolio.DbType        = DbType.Int32;
                paramUpdFolio.Value         = (object)entity.Folio ?? DBNull.Value;
                var paramUpdFolioPacientes = _dataProvider.GetParameter();
                paramUpdFolioPacientes.ParameterName = "FolioPacientes";
                paramUpdFolioPacientes.DbType        = DbType.Int32;
                paramUpdFolioPacientes.Value         = (object)entity.FolioPacientes ?? DBNull.Value;
                var paramUpdUsuario_que_Registra = _dataProvider.GetParameter();
                paramUpdUsuario_que_Registra.ParameterName = "Usuario_que_Registra";
                paramUpdUsuario_que_Registra.DbType        = DbType.Int32;
                paramUpdUsuario_que_Registra.Value         = (object)entity.Usuario_que_Registra ?? DBNull.Value;
                var paramUpdFecha_de_Pago = _dataProvider.GetParameter();
                paramUpdFecha_de_Pago.ParameterName = "Fecha_de_Pago";
                paramUpdFecha_de_Pago.DbType        = DbType.DateTime;
                paramUpdFecha_de_Pago.Value         = (object)entity.Fecha_de_Pago ?? DBNull.Value;
                var paramUpdHora_de_Pago = _dataProvider.GetParameter();
                paramUpdHora_de_Pago.ParameterName = "Hora_de_Pago";
                paramUpdHora_de_Pago.DbType        = DbType.String;
                paramUpdHora_de_Pago.Value         = (object)entity.Hora_de_Pago ?? DBNull.Value;
                var paramUpdTokenID = _dataProvider.GetParameter();
                paramUpdTokenID.ParameterName = "TokenID";
                paramUpdTokenID.DbType        = DbType.String;
                paramUpdTokenID.Value         = (object)entity.TokenID ?? DBNull.Value;
                var paramUpdImporte = _dataProvider.GetParameter();
                paramUpdImporte.ParameterName = "Importe";
                paramUpdImporte.DbType        = DbType.Decimal;
                paramUpdImporte.Value         = (object)entity.Importe ?? DBNull.Value;
                var paramUpdConcepto = _dataProvider.GetParameter();
                paramUpdConcepto.ParameterName = "Concepto";
                paramUpdConcepto.DbType        = DbType.String;
                paramUpdConcepto.Value         = (object)entity.Concepto ?? DBNull.Value;
                var paramUpdForma_de_pago = _dataProvider.GetParameter();
                paramUpdForma_de_pago.ParameterName = "Forma_de_pago";
                paramUpdForma_de_pago.DbType        = DbType.Int32;
                paramUpdForma_de_pago.Value         = (object)entity.Forma_de_pago ?? DBNull.Value;
                var paramUpdAutorizacion = _dataProvider.GetParameter();
                paramUpdAutorizacion.ParameterName = "Autorizacion";
                paramUpdAutorizacion.DbType        = DbType.String;
                paramUpdAutorizacion.Value         = (object)entity.Autorizacion ?? DBNull.Value;
                var paramUpdNombre = _dataProvider.GetParameter();
                paramUpdNombre.ParameterName = "Nombre";
                paramUpdNombre.DbType        = DbType.String;
                paramUpdNombre.Value         = (object)entity.Nombre ?? DBNull.Value;
                var paramUpdApellidos = _dataProvider.GetParameter();
                paramUpdApellidos.ParameterName = "Apellidos";
                paramUpdApellidos.DbType        = DbType.String;
                paramUpdApellidos.Value         = (object)entity.Apellidos ?? DBNull.Value;
                var paramUpdTelefono = _dataProvider.GetParameter();
                paramUpdTelefono.ParameterName = "Telefono";
                paramUpdTelefono.DbType        = DbType.String;
                paramUpdTelefono.Value         = (object)entity.Telefono ?? DBNull.Value;
                var paramUpdEmail = _dataProvider.GetParameter();
                paramUpdEmail.ParameterName = "Email";
                paramUpdEmail.DbType        = DbType.String;
                paramUpdEmail.Value         = (object)entity.Email ?? DBNull.Value;
                var paramUpdDeviceID = _dataProvider.GetParameter();
                paramUpdDeviceID.ParameterName = "DeviceID";
                paramUpdDeviceID.DbType        = DbType.String;
                paramUpdDeviceID.Value         = (object)entity.DeviceID ?? DBNull.Value;
                var paramUpdUsaPuntos = _dataProvider.GetParameter();
                paramUpdUsaPuntos.ParameterName = "UsaPuntos";
                paramUpdUsaPuntos.DbType        = DbType.Boolean;
                paramUpdUsaPuntos.Value         = (object)entity.UsaPuntos ?? DBNull.Value;
                var paramUpdPuntosID = _dataProvider.GetParameter();
                paramUpdPuntosID.ParameterName = "PuntosID";
                paramUpdPuntosID.DbType        = DbType.String;
                paramUpdPuntosID.Value         = (object)entity.PuntosID ?? DBNull.Value;
                var paramUpdEstatus = _dataProvider.GetParameter();
                paramUpdEstatus.ParameterName = "Estatus";
                paramUpdEstatus.DbType        = DbType.Int32;
                paramUpdEstatus.Value         = (object)entity.Estatus ?? DBNull.Value;


                var empEntity =
                    _dbContext.ExecuteStoredProcedureList <Spartane.Core.Classes.StoredProcedure.sp_UpdDetalle_Pagos_Pacientes_OpenPay>("sp_UpdDetalle_Pagos_Pacientes_OpenPay", paramUpdFolio, paramUpdFolioPacientes, paramUpdUsuario_que_Registra, paramUpdFecha_de_Pago, paramUpdHora_de_Pago, paramUpdTokenID, paramUpdImporte, paramUpdConcepto, paramUpdForma_de_pago, paramUpdAutorizacion, paramUpdNombre, paramUpdApellidos, paramUpdTelefono, paramUpdEmail, paramUpdDeviceID, paramUpdUsaPuntos, paramUpdPuntosID, paramUpdEstatus).FirstOrDefault();

                rta = Convert.ToInt32(empEntity.Folio);
            }
            catch (ExceptionBase ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw new ServiceException(ex.Message, ex);
            }

            return(rta);
        }
        /*CODMANFIN-ADD*/


        public int Insert(Spartane.Core.Classes.Detalle_Pagos_Pacientes_OpenPay.Detalle_Pagos_Pacientes_OpenPay entity)
        {
            int rta;

            try
            {
                /*CODMANINI-ADD*/
                if ((entity.Forma_de_pago == 1 || entity.Forma_de_pago == 2) && entity.Estatus == 2 && entity.Importe > 0)
                {
                    entity.Autorizacion = PagarOpenPay(entity);
                    if (entity.Autorizacion.Equals("-1"))
                    {
                        entity.Estatus = 4;
                    }
                    else
                    {
                        if (!entity.Autorizacion.Equals("0"))
                        {
                            entity.Estatus = 1;
                        }
                    }
                }
                /*CODMANFIN-ADD*/
                var padreFolio = _dataProvider.GetParameter();
                padreFolio.ParameterName = "Folio";
                padreFolio.DbType        = DbType.Int32;
                padreFolio.Value         = (object)entity.Folio ?? DBNull.Value;
                var padreFolioPacientes = _dataProvider.GetParameter();
                padreFolioPacientes.ParameterName = "FolioPacientes";
                padreFolioPacientes.DbType        = DbType.Int32;
                padreFolioPacientes.Value         = (object)entity.FolioPacientes ?? DBNull.Value;
                var padreUsuario_que_Registra = _dataProvider.GetParameter();
                padreUsuario_que_Registra.ParameterName = "Usuario_que_Registra";
                padreUsuario_que_Registra.DbType        = DbType.Int32;
                padreUsuario_que_Registra.Value         = (object)entity.Usuario_que_Registra ?? DBNull.Value;

                var padreFecha_de_Pago = _dataProvider.GetParameter();
                padreFecha_de_Pago.ParameterName = "Fecha_de_Pago";
                padreFecha_de_Pago.DbType        = DbType.DateTime;
                padreFecha_de_Pago.Value         = (object)entity.Fecha_de_Pago ?? DBNull.Value;

                var padreHora_de_Pago = _dataProvider.GetParameter();
                padreHora_de_Pago.ParameterName = "Hora_de_Pago";
                padreHora_de_Pago.DbType        = DbType.String;
                padreHora_de_Pago.Value         = (object)entity.Hora_de_Pago ?? DBNull.Value;
                var padreTokenID = _dataProvider.GetParameter();
                padreTokenID.ParameterName = "TokenID";
                padreTokenID.DbType        = DbType.String;
                padreTokenID.Value         = (object)entity.TokenID ?? DBNull.Value;
                var padreImporte = _dataProvider.GetParameter();
                padreImporte.ParameterName = "Importe";
                padreImporte.DbType        = DbType.Decimal;
                padreImporte.Value         = (object)entity.Importe ?? DBNull.Value;

                var padreConcepto = _dataProvider.GetParameter();
                padreConcepto.ParameterName = "Concepto";
                padreConcepto.DbType        = DbType.String;
                padreConcepto.Value         = (object)entity.Concepto ?? DBNull.Value;
                var padreForma_de_pago = _dataProvider.GetParameter();
                padreForma_de_pago.ParameterName = "Forma_de_pago";
                padreForma_de_pago.DbType        = DbType.Int32;
                padreForma_de_pago.Value         = (object)entity.Forma_de_pago ?? DBNull.Value;

                var padreAutorizacion = _dataProvider.GetParameter();
                padreAutorizacion.ParameterName = "Autorizacion";
                padreAutorizacion.DbType        = DbType.String;
                padreAutorizacion.Value         = (object)entity.Autorizacion ?? DBNull.Value;
                var padreNombre = _dataProvider.GetParameter();
                padreNombre.ParameterName = "Nombre";
                padreNombre.DbType        = DbType.String;
                padreNombre.Value         = (object)entity.Nombre ?? DBNull.Value;
                var padreApellidos = _dataProvider.GetParameter();
                padreApellidos.ParameterName = "Apellidos";
                padreApellidos.DbType        = DbType.String;
                padreApellidos.Value         = (object)entity.Apellidos ?? DBNull.Value;
                var padreTelefono = _dataProvider.GetParameter();
                padreTelefono.ParameterName = "Telefono";
                padreTelefono.DbType        = DbType.String;
                padreTelefono.Value         = (object)entity.Telefono ?? DBNull.Value;
                var padreEmail = _dataProvider.GetParameter();
                padreEmail.ParameterName = "Email";
                padreEmail.DbType        = DbType.String;
                padreEmail.Value         = (object)entity.Email ?? DBNull.Value;
                var padreDeviceID = _dataProvider.GetParameter();
                padreDeviceID.ParameterName = "DeviceID";
                padreDeviceID.DbType        = DbType.String;
                padreDeviceID.Value         = (object)entity.DeviceID ?? DBNull.Value;
                var padreUsaPuntos = _dataProvider.GetParameter();
                padreUsaPuntos.ParameterName = "UsaPuntos";
                padreUsaPuntos.DbType        = DbType.Boolean;
                padreUsaPuntos.Value         = (object)entity.UsaPuntos ?? DBNull.Value;
                var padrePuntosID = _dataProvider.GetParameter();
                padrePuntosID.ParameterName = "PuntosID";
                padrePuntosID.DbType        = DbType.String;
                padrePuntosID.Value         = (object)entity.PuntosID ?? DBNull.Value;
                var padreEstatus = _dataProvider.GetParameter();
                padreEstatus.ParameterName = "Estatus";
                padreEstatus.DbType        = DbType.Int32;
                padreEstatus.Value         = (object)entity.Estatus ?? DBNull.Value;



                var empEntity =
                    _dbContext.ExecuteStoredProcedureList <Spartane.Core.Classes.StoredProcedure.sp_InsDetalle_Pagos_Pacientes_OpenPay>("sp_InsDetalle_Pagos_Pacientes_OpenPay", padreFolioPacientes
                                                                                                                                        , padreUsuario_que_Registra
                                                                                                                                        , padreFecha_de_Pago
                                                                                                                                        , padreHora_de_Pago
                                                                                                                                        , padreTokenID
                                                                                                                                        , padreImporte
                                                                                                                                        , padreConcepto
                                                                                                                                        , padreForma_de_pago
                                                                                                                                        , padreAutorizacion
                                                                                                                                        , padreNombre
                                                                                                                                        , padreApellidos
                                                                                                                                        , padreTelefono
                                                                                                                                        , padreEmail
                                                                                                                                        , padreDeviceID
                                                                                                                                        , padreUsaPuntos
                                                                                                                                        , padrePuntosID
                                                                                                                                        , padreEstatus
                                                                                                                                        ).FirstOrDefault();

                rta = Convert.ToInt32(empEntity.Folio);
            }
            catch (ExceptionBase ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw new ServiceException(ex.Message, ex);
            }

            return(rta);
        }