Example #1
0
        /// <summary>
        /// Función: Guarda el cupón en la base
        /// Creado: Cristopher Noh 28/07/2020
        /// Modificado:
        /// </summary>
        /// <param name="entCupon">Datos de cupón</param>
        /// <param name="piUsuario">Usuario que crea ek cupón</param>
        /// <returns></returns>
        public IMDResponse <bool> DSaveCupon(EntCupon entCupon, int?piUsuario = null)
        {
            IMDResponse <bool> response = new IMDResponse <bool>();

            string metodo = nameof(this.DSaveCupon);

            logger.Info(IMDSerialize.Serialize(67823458183516, $"Inicia {metodo}(EntCupon entCupon, int? piUsuario = null)", entCupon, piUsuario));

            try
            {
                using (DbCommand dbCommand = database.GetStoredProcCommand(spSaveCupon))
                {
                    database.AddInParameter(dbCommand, "piIdCupon", DbType.Int32, entCupon.fiIdCupon);
                    database.AddInParameter(dbCommand, "piIdCuponCategoria", DbType.Int32, entCupon.fiIdCuponCategoria);
                    database.AddInParameter(dbCommand, "psDescripcion", DbType.String, entCupon.fsDescripcion?.Trim());
                    database.AddInParameter(dbCommand, "psCodigo", DbType.String, entCupon.fsCodigo?.Trim());
                    database.AddInParameter(dbCommand, "pnMontoDescuento", DbType.Decimal, entCupon.fnMontoDescuento);
                    database.AddInParameter(dbCommand, "pnPorcentajeDescuento", DbType.Decimal, entCupon.fnPorcentajeDescuento);
                    database.AddInParameter(dbCommand, "piMesBono", DbType.Int32, entCupon.fiMesBono);
                    database.AddInParameter(dbCommand, "piTotalLanzamiento", DbType.Int32, entCupon.fiTotalLanzamiento);
                    database.AddInParameter(dbCommand, "pdtFechaVencimiento", DbType.DateTime, entCupon.fdtFechaVencimiento);
                    database.AddInParameter(dbCommand, "piIdUsuario", DbType.Int32, piUsuario);

                    response = imdCommonData.DExecute(database, dbCommand);
                }
            }
            catch (Exception ex)
            {
                response.Code    = 67823458184293;
                response.Message = "Ocurrió un error al intentar guardar el cupon.";

                logger.Error(IMDSerialize.Serialize(67823458184293, $"Error en {metodo}(EntCupon entCupon, int? piUsuario = null): {ex.Message}", entCupon, piUsuario, ex, response));
            }
            return(response);
        }
Example #2
0
        /// <summary>
        /// Función: Obtiene la lista de cupones
        /// Creado: Cristopher Noh 28/07/2020
        /// Modificado:
        /// </summary>
        /// <param name="piIdCupon">Id de cupón</param>
        /// <param name="piIdCuponCategoria">Categoría del cupón</param>
        /// <param name="psDescripcion">Descripción del cupón</param>
        /// <param name="psCodigo">Código de cupón</param>
        /// <param name="pdtFechaVencimientoInicio">Fecha de vencimiento desde...</param>
        /// <param name="pdtFechaVencimientoFin">..a la Fecha de vencimiento</param>
        /// <param name="pdtFechaCreacionInicio">Fecha de creación desde...</param>
        /// <param name="pdtFechaCreacionFin">...a la fecha de creación</param>
        /// <param name="pbActivo">Cupón activo</param>
        /// <param name="pbBaja">Cupón inactivo</param>
        /// <returns></returns>
        public IMDResponse <List <EntCupon> > BObtenerCupones(int?piIdCupon = null, int?piIdCuponCategoria = null, string psDescripcion = null, string psCodigo = null, DateTime?pdtFechaVencimientoInicio = null, DateTime?pdtFechaVencimientoFin = null, DateTime?pdtFechaCreacionInicio = null, DateTime?pdtFechaCreacionFin = null, bool?pbActivo = true, bool?pbBaja = false, bool?pbVigente = null)
        {
            IMDResponse <List <EntCupon> > response = new IMDResponse <List <EntCupon> >();

            string metodo = nameof(this.BObtenerCupones);

            logger.Info(IMDSerialize.Serialize(67823458191286, $"Inicia {metodo}(int? piIdCupon = null, int? piIdCuponCategoria = null, string psDescripcion = null, string psCodigo = null, DateTime? pdtFechaVencimientoInicio = null, DateTime? pdtFechaVencimientoFin = null, DateTime? pdtFechaCreacionInicio = null, DateTime? pdtFechaCreacionFin = null, bool pbActivo = true, bool pbBaja = false)", piIdCupon, piIdCuponCategoria, psDescripcion, psCodigo, pdtFechaVencimientoInicio, pdtFechaVencimientoFin, pdtFechaCreacionInicio, pdtFechaCreacionFin, pbActivo, pbBaja));

            try
            {
                IMDResponse <DataTable> respuestaObtenerCupones = datPromociones.DGetCupones(piIdCupon, piIdCuponCategoria, pbVigente, psDescripcion, psCodigo, pdtFechaVencimientoInicio, pdtFechaVencimientoFin, pdtFechaCreacionInicio, pdtFechaCreacionFin, pbActivo, pbBaja);
                if (respuestaObtenerCupones.Code != 0)
                {
                    return(respuestaObtenerCupones.GetResponse <List <EntCupon> >());
                }

                List <EntCupon> listaCupones = new List <EntCupon>();
                foreach (DataRow filaCupon in respuestaObtenerCupones.Result.Rows)
                {
                    IMDDataRow dr    = new IMDDataRow(filaCupon);
                    EntCupon   cupon = new EntCupon();

                    cupon.fbActivo               = Convert.ToBoolean(dr.ConvertTo <int>("bActivo"));
                    cupon.fbBaja                 = Convert.ToBoolean(dr.ConvertTo <int>("bBaja"));
                    cupon.fbVigente              = Convert.ToBoolean(dr.ConvertTo <int>("bVigente"));
                    cupon.fdtFechaVencimiento    = dr.ConvertTo <DateTime?>("dtFechaVencimiento");
                    cupon.sFechaVencimiento      = cupon.fdtFechaVencimiento == null ? "Hasta agotar" : ((DateTime)cupon.fdtFechaVencimiento).ToString("dd/MM/yy HH:mm");
                    cupon.dtFechaCreacion        = dr.ConvertTo <DateTime?>("dtFechaCreacion");
                    cupon.sFechaCreacion         = cupon.dtFechaCreacion == null ? null : ((DateTime)cupon.dtFechaCreacion).ToString("dd/MM/yy HH:mm");
                    cupon.fiIdCupon              = dr.ConvertTo <int>("iIdCupon");
                    cupon.fiIdCuponCategoria     = dr.ConvertTo <int>("iIdCuponCategoria");
                    cupon.fiMesBono              = dr.ConvertTo <int?>("iMesBono");
                    cupon.fiTotalLanzamiento     = dr.ConvertTo <int>("iTotalLanzamiento");
                    cupon.fiTotalCanjeado        = dr.ConvertTo <int>("iTotalCanjeado");
                    cupon.fnMontoDescuento       = dr.ConvertTo <double?>("nMontoDescuento");
                    cupon.sMontoDescuento        = cupon.fnMontoDescuento == null ? null : ((double)cupon.fnMontoDescuento / 100d).ToString("C");
                    cupon.fnPorcentajeDescuento  = dr.ConvertTo <double?>("nPorcentajeDescuento");
                    cupon.sPorcentajeDescuento   = cupon.fnPorcentajeDescuento == null ? null : ((double)cupon.fnPorcentajeDescuento).ToString("#%");
                    cupon.fsCodigo               = dr.ConvertTo <string>("sCodigo");
                    cupon.fsDescripcion          = dr.ConvertTo <string>("sDescripcion");
                    cupon.fsDescripcionCategoria = dr.ConvertTo <string>("sDescripcionCategoria");

                    listaCupones.Add(cupon);
                }

                response.Code    = 0;
                response.Message = "Lista de cupones obtenida.";
                response.Result  = listaCupones;
            }
            catch (Exception ex)
            {
                response.Code    = 67823458192063;
                response.Message = "Ocurrió un error al intentar consultar los cupones";

                logger.Error(IMDSerialize.Serialize(67823458192063, $"Error en {metodo}(int? piIdCupon = null, int? piIdCuponCategoria = null, string psDescripcion = null, string psCodigo = null, DateTime? pdtFechaVencimientoInicio = null, DateTime? pdtFechaVencimientoFin = null, DateTime? pdtFechaCreacionInicio = null, DateTime? pdtFechaCreacionFin = null, bool pbActivo = true, bool pbBaja = false): {ex.Message}", piIdCupon, piIdCuponCategoria, psDescripcion, psCodigo, pdtFechaVencimientoInicio, pdtFechaVencimientoFin, pdtFechaCreacionInicio, pdtFechaCreacionFin, pbActivo, pbBaja, ex, response));
            }
            return(response);
        }
Example #3
0
        /// <summary>
        /// Función: Aplica el cupón guardando en el campo de cupones canjeado
        /// Creado: Cristopher Noh 28/07/2020
        /// Modificado:
        /// </summary>
        /// <param name="piIdCupon">Cupón a aplicar</param>
        /// <param name="piIdUsuario">Usuario que aplica</param>
        /// <returns></returns>
        public IMDResponse <bool> BAplicarCupon(int piIdCupon, int?piIdUsuario = null)
        {
            IMDResponse <bool> response = new IMDResponse <bool>();

            string metodo = nameof(this.BAplicarCupon);

            logger.Info(IMDSerialize.Serialize(67823458195948, $"Inicia {metodo}(int piIdCupon, int? piIdUsuario = null)", piIdCupon, piIdUsuario));

            try
            {
                IMDResponse <EntCupon> respuestaValidarCupon = BValidarCupon(piIdCupon: piIdCupon);
                if (respuestaValidarCupon.Code != 0)
                {
                    return(respuestaValidarCupon.GetResponse <bool>());
                }

                EntCupon entCupon = new EntCupon();
                entCupon.fiIdCupon = piIdCupon;

                IMDResponse <bool> respuestaAplicarCupon = datPromociones.DSaveCupon(entCupon, piIdUsuario);
                if (respuestaAplicarCupon.Code != 0)
                {
                    return(respuestaAplicarCupon);
                }

                response.Code    = 0;
                response.Message = "Código aplicado.";
                response.Result  = true;
            }
            catch (Exception ex)
            {
                response.Code    = 67823458196725;
                response.Message = "Ocurrió un error al intentar aplicar el código.";

                logger.Error(IMDSerialize.Serialize(67823458196725, $"Error en {metodo}(int piIdCupon, int? piIdUsuario = null): {ex.Message}", piIdCupon, piIdUsuario, ex, response));
            }
            return(response);
        }
Example #4
0
        /// <summary>
        /// Función: Guarda un nuevo cupón en la base
        /// Creado: Cristopher Noh 28/07/2020
        /// Modificado:
        /// </summary>
        /// <param name="entCreateCupon">Entidad de cupón nuevo</param>
        /// <param name="piIdUsuario">Usuario que registra</param>
        /// <returns></returns>
        public IMDResponse <bool> BActivarCupon(EntCreateCupon entCreateCupon, int?piIdUsuario = null)
        {
            IMDResponse <bool> response = new IMDResponse <bool>();

            string metodo = nameof(this.BActivarCupon);

            logger.Info(IMDSerialize.Serialize(67823458189732, $"Inicia {metodo}(EntCreateCupon entCreateCupon, int? piIdUsuario = null)", entCreateCupon, piIdUsuario));

            try
            {
                if (entCreateCupon == null)
                {
                    response.Code    = 67823458220812;
                    response.Message = "No se ingresó información de cupón.";
                    return(response);
                }


                if (string.IsNullOrWhiteSpace(entCreateCupon.fsCodigo))
                {
                    if (entCreateCupon.fiLongitudCodigo <= 0)
                    {
                        response.Code    = 67823458221589;
                        response.Message = "No se especificó la longitud del código de cupón nuevo.";
                        return(response);
                    }

                    IMDResponse <string> respuestaGenerarCodigoCupon = this.BGenerarCodigoCupon((int)entCreateCupon.fiLongitudCodigo);
                    if (respuestaGenerarCodigoCupon.Code != 0)
                    {
                        return(respuestaGenerarCodigoCupon.GetResponse <bool>());
                    }

                    entCreateCupon.fsCodigo = respuestaGenerarCodigoCupon.Result;
                }
                else
                {
                    entCreateCupon.fsCodigo = entCreateCupon.fsCodigo.Replace(" ", "").ToUpper();

                    IMDResponse <List <EntCupon> > respuestaVerificarCodigo = BObtenerCupones(psCodigo: entCreateCupon.fsCodigo);
                    if (respuestaVerificarCodigo.Code != 0)
                    {
                        return(respuestaVerificarCodigo.GetResponse <bool>());
                    }
                    if (respuestaVerificarCodigo.Result.Count > 0)
                    {
                        response.Code    = 67823458222366;
                        response.Message = "Ya hay un cupón activo con el código proporcionado.";
                        return(response);
                    }
                }

                EntCupon entCupon = new EntCupon();

                if (entCreateCupon.fiDiasActivo != 0 && entCreateCupon.fiDiasActivo != null)
                {
                    if (entCreateCupon.fiDiasActivo > 0)
                    {
                        entCupon.fdtFechaVencimiento = DateTime.Now.AddDays((int)entCreateCupon.fiDiasActivo);
                    }
                    else
                    {
                        response.Code    = 67823458223143;
                        response.Message = "Los días activos del cupón deben ser mayores o iguales a 1 día. Si no requiere días de vencimiento, deje el campo vacío.";
                        return(response);
                    }
                }


                if (entCreateCupon.fiTotalLanzamiento < 1)
                {
                    response.Code    = 67823458223920;
                    response.Message = "No se especificó el total de cupones a activar. El total de lanzamiento debe ser mínimo 1 cupón.";
                    return(response);
                }


                entCupon.fiTotalLanzamiento = entCreateCupon.fiTotalLanzamiento;
                entCupon.fsCodigo           = entCreateCupon.fsCodigo;
                entCupon.fsDescripcion      = entCreateCupon.fsDescripcion;

                switch (entCreateCupon.fiIdCuponCategoria)
                {
                case (int)EnumCategoriaCupon.DescuentoMonto:
                    if (entCreateCupon.fnMontoDescuento <= 0d || entCreateCupon.fnMontoDescuento == null)
                    {
                        response.Code    = 67823458224697;
                        response.Message = "El descuento no puede ser de monto igual o menor a $0.00 pesos.";
                        return(response);
                    }

                    entCupon.fiIdCuponCategoria = (int)EnumCategoriaCupon.DescuentoMonto;
                    entCupon.fnMontoDescuento   = entCreateCupon.fnMontoDescuento;

                    break;

                case (int)EnumCategoriaCupon.DescuentoPorcentaje:
                    if (entCreateCupon.fnPorcentajeDescuento >= 1)
                    {
                        entCreateCupon.fnPorcentajeDescuento /= 100;
                    }
                    if (entCreateCupon.fnPorcentajeDescuento <= 0d || entCreateCupon.fnPorcentajeDescuento > 1 || entCreateCupon.fnPorcentajeDescuento == null)
                    {
                        response.Code    = 67823458225474;
                        response.Message = "El porcentaje de descuento no puede ser 0% o más de 100%.";
                        return(response);
                    }

                    entCupon.fiIdCuponCategoria    = (int)EnumCategoriaCupon.DescuentoPorcentaje;
                    entCupon.fnPorcentajeDescuento = entCreateCupon.fnPorcentajeDescuento;

                    break;

                default:
                    response.Code    = 67823458226251;
                    response.Message = "No se ingresó el tipo de promoción de cupón.";
                    break;
                }

                IMDResponse <bool> respuestaGuardarCupon = datPromociones.DSaveCupon(entCupon, piIdUsuario);
                if (respuestaGuardarCupon.Code != 0)
                {
                    return(respuestaGuardarCupon);
                }

                response.Code    = 0;
                response.Message = "El cupón ha sido activado correctamente.";
                response.Result  = true;
            }
            catch (Exception ex)
            {
                response.Code    = 67823458190509;
                response.Message = "Ocurrió un error al intentar activar el cupón.";

                logger.Error(IMDSerialize.Serialize(67823458190509, $"Error en {metodo}(EntCreateCupon entCreateCupon, int? piIdUsuario = null): {ex.Message}", entCreateCupon, piIdUsuario, ex, response));
            }
            return(response);
        }
Example #5
0
        /// <summary>
        /// Función: Validar el cupón a canjear
        /// Creado: Cristopher Noh 28/07/2020
        /// Modificado:
        /// </summary>
        /// <param name="psCodigo">Código de cupón</param>
        /// <param name="piIdCupon">Id de cupón</param>
        /// <returns>Datos del cupón</returns>
        public IMDResponse <EntCupon> BValidarCupon(string psCodigo = null, int?piIdCupon = null)
        {
            IMDResponse <EntCupon> response = new IMDResponse <EntCupon>();

            string metodo = nameof(this.BValidarCupon);

            logger.Info(IMDSerialize.Serialize(67823458197502, $"Inicia {metodo}(string psCodigo = null, int? piIdCupon = null)", psCodigo, piIdCupon));

            try
            {
                IMDResponse <List <EntCupon> > respuestaCupon;

                if (!string.IsNullOrWhiteSpace(psCodigo) && psCodigo?.Length > 0)
                {
                    respuestaCupon = BObtenerCupones(psCodigo: psCodigo);
                }
                else
                {
                    if (piIdCupon != null && piIdCupon >= 10000)
                    {
                        respuestaCupon = BObtenerCupones(piIdCupon: piIdCupon);
                    }
                    else
                    {
                        response.Code    = 67823458227028;
                        response.Message = "No se ingresó un código válido.";
                        return(response);
                    }
                }

                if (respuestaCupon.Code != 0)
                {
                    return(respuestaCupon.GetResponse <EntCupon>());
                }

                if (respuestaCupon.Result.Count == 0)
                {
                    response.Code    = 67823458227805;
                    response.Message = "Código no válido.";
                    return(response);
                }

                EntCupon cupon = respuestaCupon.Result.First();
                string   mensajeCodigoExpirado = "El código ha expirado.";

                if (!cupon.fbActivo || cupon.fbBaja)
                {
                    response.Code    = 67823458228582;
                    response.Message = mensajeCodigoExpirado;
                    return(response);
                }


                if (cupon.fdtFechaVencimiento != null)
                {
                    if (DateTime.Now > cupon.fdtFechaVencimiento)
                    {
                        response.Code    = 67823458229359;
                        response.Message = mensajeCodigoExpirado;
                        return(response);
                    }
                }

                if (cupon.fiTotalCanjeado >= cupon.fiTotalLanzamiento)
                {
                    response.Code    = 67823458230136;
                    response.Message = mensajeCodigoExpirado;
                    return(response);
                }

                response.Code    = 0;
                response.Message = "Código validado.";
                response.Result  = cupon;
            }
            catch (Exception ex)
            {
                response.Code    = 67823458198279;
                response.Message = "Ocurrió un error al intentar validar el código.";

                logger.Error(IMDSerialize.Serialize(67823458198279, $"Error en {metodo}(string psCodigo = null, int? piIdCupon = null): {ex.Message}", psCodigo, piIdCupon, ex, response));
            }
            return(response);
        }