예제 #1
0
        public async Task <OlvidoContrasenaStatus> OlvidoContrasenaPortalAsync(string email)
        {
            return(await Task.Run(async() =>
            {
                using (var _dbContext = new MercampoEntities())
                {
                    Startup.OpenDatabaseConnection(_dbContext);

                    if (_dbContext.Database.Connection.State != System.Data.ConnectionState.Open)
                    {
                        return OlvidoContrasenaStatus.Error;
                    }

                    var usuario = _dbContext.Usuarios.Where(u => u.email == email).FirstOrDefault();
                    if (usuario == null)
                    {
                        _dbContext.Database.Connection.Close();
                        return OlvidoContrasenaStatus.MailInexistente;
                    }

                    string mailMensaje = "<p>Estimado {0},</p>" +
                                         "<p>Para cambiar tu contraseña da click <a href=\'" + Startup.getBaseUrl() + "/Portal/CambiarContrasena?token=" + "{1}\'>AQUÍ</a></p>";

                    var result = await Startup.GetServicioEmail().SendAsync(string.Format(mailMensaje, usuario.nombre, usuario.password), "Recuperar Contraseña Mercampo", usuario.email);

                    _dbContext.Database.Connection.Close();
                    return OlvidoContrasenaStatus.MailEnviado;
                }
            }));
        }
예제 #2
0
        private bool AgregarAnuncios(CarritoDeCompra carrito, int idUsuario)
        {
            using (var _dbContext = new MercampoEntities())
            {
                Startup.OpenDatabaseConnection(_dbContext);
                if (_dbContext.Database.Connection.State != ConnectionState.Open)
                {
                    return(false);
                }

                var paquetes = carrito.Paquetes;
                foreach (var paquete in paquetes)
                {
                    if (paquete.EsRenovacion())
                    {
                        Anuncio anuncio = _dbContext.Anuncios.Where(a => a.id == paquete.IdAnuncio).FirstOrDefault();
                        anuncio.fecha_fin = anuncio.fecha_fin.Value.AddMonths(paquete.Meses);
                        anuncio.idPaquete = paquete.Id;
                        anuncio.estado    = (int)EstadoAnuncio.Aprobado;
                        anuncio.activo    = true;
                        _dbContext.Anuncio_Beneficio.RemoveRange(_dbContext.Anuncio_Beneficio.Where(b => b.idAnuncio == anuncio.id));
                        _dbContext.SaveChanges();

                        var beneficios = paquete.Beneficios;
                        foreach (var beneficio in beneficios)
                        {
                            _dbContext.Anuncio_Beneficio.Add(new Anuncio_Beneficio
                            {
                                idAnuncio   = anuncio.id,
                                idBeneficio = beneficio.Id
                            });
                            _dbContext.SaveChanges();
                        }
                    }
                    else
                    {
                        var nuevoAnuncio = _dbContext.Anuncios.Add(new Anuncio
                        {
                            activo    = false,
                            idUsuario = idUsuario,
                            estado    = (int)EstadoAnuncio.Vacio,
                            idPaquete = paquete.Id
                        });
                        _dbContext.SaveChanges();
                        var beneficios = paquete.Beneficios;
                        foreach (var beneficio in beneficios)
                        {
                            _dbContext.Anuncio_Beneficio.Add(new Anuncio_Beneficio
                            {
                                idAnuncio   = nuevoAnuncio.id,
                                idBeneficio = beneficio.Id
                            });
                            _dbContext.SaveChanges();
                        }
                    }
                }
                _dbContext.Database.Connection.Close();
                return(true);
            }
        }
예제 #3
0
        private PortalUsuario getUsuarioPortalActual(HttpCookieCollection Cookies)
        {
            if (Cookies["VendeAgroUser"] != null)
            {
                var token = Cookies["VendeAgroUser"]["token"];
                if (token != null)
                {
                    using (var _dbContext = new MercampoEntities())
                    {
                        Startup.OpenDatabaseConnection(_dbContext);
                        if (_dbContext.Database.Connection.State != System.Data.ConnectionState.Open)
                        {
                            return(null);
                        }

                        var usuario = _dbContext.Usuarios.Where(u => u.tokenSesion == token).FirstOrDefault();

                        if (usuario == null)
                        {
                            _dbContext.Database.Connection.Close();
                            return(null);
                        }

                        var resultado = new PortalUsuario(usuario.id, usuario.email, usuario.nombre, usuario.apellidos, usuario.telefono, usuario.idConekta);
                        _dbContext.Database.Connection.Close();
                        return(resultado);
                    }
                }
            }
            return(null);
        }
예제 #4
0
        public void LogoutPortal()
        {
            HttpRequest request = HttpContext.Current.Request;

            if (request.Cookies["VendeAgroUser"] != null)
            {
                var token = request.Cookies["VendeAgroUser"]["token"];
                if (token != null)
                {
                    borrarCookie(HttpContext.Current.Response, "VendeAgroUser");
                    using (var _dbContext = new MercampoEntities())
                    {
                        Startup.OpenDatabaseConnection(_dbContext);
                        if (_dbContext.Database.Connection.State != System.Data.ConnectionState.Open)
                        {
                            return;
                        }
                        var usuario = _dbContext.Usuarios.Where(u => u.tokenSesion == token).FirstOrDefault();
                        if (usuario == null)
                        {
                            _dbContext.Database.Connection.Close();
                            return;
                        }

                        usuario.tokenSesion = "";
                        _dbContext.SaveChanges();
                        _dbContext.Database.Connection.Close();
                    }
                }
            }
        }
예제 #5
0
        public async Task <AproboAnuncioStatus> AproboAnuncioAdminAsync(string email, int idAnuncio, string tituloAnuncio)
        {
            return(await Task.Run(async() =>
            {
                using (var _dbContext = new MercampoEntities())
                {
                    Startup.OpenDatabaseConnection(_dbContext);

                    if (_dbContext.Database.Connection.State != System.Data.ConnectionState.Open)
                    {
                        return AproboAnuncioStatus.Error;
                    }

                    var usuario = _dbContext.Usuarios.Where(u => u.email == email).FirstOrDefault();
                    if (usuario == null)
                    {
                        _dbContext.Database.Connection.Close();
                        return AproboAnuncioStatus.MailInexistente;
                    }

                    string mailMensaje = "<p>Estimado {0},</p>" +
                                         "<p>Tu anuncio " + tituloAnuncio + " ha sido aprobado y publicado. Para consultarlo, da click <a href=\'" + Startup.getBaseUrl() + "/Home/AnuncioDetalles?id=" + idAnuncio + "{1}\'>AQUÍ</a></p>";

                    var result = await Startup.GetServicioEmail().SendAsync(string.Format(mailMensaje, usuario.nombre, usuario.password), "Tu Anuncio ha sido Aprobado en Mercampo", usuario.email);

                    _dbContext.Database.Connection.Close();
                    return AproboAnuncioStatus.MailEnviado;
                }
            }));
        }
예제 #6
0
        public async Task <CambiarContrasenaStatus> CambiarContrasenaAdminAsync(string password, string token)
        {
            return(await Task.Run(() =>
            {
                if (token == null)
                {
                    return CambiarContrasenaStatus.TokenInvalido;
                }

                using (var _dbContext = new MercampoEntities())
                {
                    Startup.OpenDatabaseConnection(_dbContext);
                    if (_dbContext.Database.Connection.State != System.Data.ConnectionState.Open)
                    {
                        return CambiarContrasenaStatus.Error;
                    }

                    var usuario = _dbContext.Usuario_Administrador.Where(u => u.password == token).FirstOrDefault();

                    if (usuario == null)
                    {
                        _dbContext.Database.Connection.Close();
                        return CambiarContrasenaStatus.TokenInvalido;
                    }

                    usuario.password = password;
                    _dbContext.SaveChanges();

                    _dbContext.Database.Connection.Close();
                    return CambiarContrasenaStatus.ContrasenaActualizada;
                }
            }));
        }
예제 #7
0
        internal async Task <ConfirmacionMailStatus> ConfirmarMailPortalAsync(string token)
        {
            return(await Task <ConfirmacionMailStatus> .Run(() =>
            {
                using (MercampoEntities _dbContext = new MercampoEntities())
                {
                    Startup.OpenDatabaseConnection(_dbContext);
                    if (_dbContext.Database.Connection.State != ConnectionState.Open)
                    {
                        return ConfirmacionMailStatus.Error;
                    }

                    var usuario = _dbContext.Usuarios.Where(u => u.tokenEmail == token).FirstOrDefault();
                    if (usuario == null)
                    {
                        return ConfirmacionMailStatus.TokenInvalido;
                    }

                    usuario.confirmaEmail = true;
                    usuario.tokenEmail = getToken();
                    _dbContext.SaveChanges();
                }
                return ConfirmacionMailStatus.MailConfirmado;
            }));
        }
예제 #8
0
        public async Task <CambiarContrasenaStatus> VerificarTokenCambiarContrasenaPortalAsync(string token)
        {
            return(await Task.Run(() =>
            {
                if (token == null)
                {
                    return CambiarContrasenaStatus.TokenInvalido;
                }

                using (var _dbContext = new MercampoEntities())
                {
                    Startup.OpenDatabaseConnection(_dbContext);
                    if (_dbContext.Database.Connection.State != System.Data.ConnectionState.Open)
                    {
                        return CambiarContrasenaStatus.Error;
                    }

                    var usuario = _dbContext.Usuarios.Where(u => u.password == token).FirstOrDefault();

                    if (usuario == null)
                    {
                        _dbContext.Database.Connection.Close();
                        return CambiarContrasenaStatus.TokenInvalido;
                    }

                    _dbContext.Database.Connection.Close();
                    return CambiarContrasenaStatus.UrlValido;
                }
            }));
        }
예제 #9
0
        private bool AgregarPago(int idUsuario, Usuario_Tarjeta tarjeta, double total, string referencia, CarritoDeCompra carrito)
        {
            using (var _dbContext = new MercampoEntities())
            {
                Startup.OpenDatabaseConnection(_dbContext);
                if (_dbContext.Database.Connection.State != ConnectionState.Open)
                {
                    return(false);
                }

                Pago newPago = _dbContext.Pagoes.Add(new Pago
                {
                    idUsuario      = idUsuario,
                    tipoTarjeta    = tarjeta.tipoTarjeta,
                    digitosTarjeta = tarjeta.digitosTarjeta,
                    total          = total,
                    fecha          = DateTime.Now,
                    Referencia     = referencia
                });
                _dbContext.SaveChanges();

                foreach (var paquete in carrito.Paquetes)
                {
                    if (paquete.Beneficios.Count() < 1)
                    {
                        Pago_Concepto pagoConcepto = _dbContext.Pago_Concepto.Add(new Pago_Concepto
                        {
                            idPago             = newPago.id,
                            tipo               = paquete.EsRenovacion(),
                            nombrePaquete      = paquete.Nombre,
                            mesesPaquete       = paquete.Meses,
                            precioPaquete      = paquete.Precio,
                            descripcionPaquete = string.Empty
                        });
                        continue;
                    }

                    foreach (var beneficio in paquete.Beneficios)
                    {
                        Pago_Concepto pagoConcepto = _dbContext.Pago_Concepto.Add(new Pago_Concepto
                        {
                            idPago               = newPago.id,
                            tipo                 = paquete.EsRenovacion(),
                            nombrePaquete        = paquete.Nombre,
                            mesesPaquete         = paquete.Meses,
                            precioPaquete        = paquete.Precio,
                            descripcionPaquete   = string.Empty,
                            descripcionBeneficio = beneficio.Descripcion,
                            precioBeneficio      = beneficio.Precio,
                            tipoBeneficio        = beneficio.Tipo
                        });
                    }
                }

                _dbContext.SaveChanges();
                _dbContext.Database.Connection.Close();
                return(true);
            }
        }
예제 #10
0
        public string AgregarTarjetaAsync(int id, string tokenTarjeta, string sessionId)
        {
            using (var _dbContext = new MercampoEntities())
            {
                Startup.OpenDatabaseConnection(_dbContext);
                if (_dbContext.Database.Connection.State != ConnectionState.Open)
                {
                    return(new ResultadoAgregarTarjeta(false, "Error en el servidor, vuelva a intentarlo de nuevo en unos minutos").AsJson());
                }


                var usuario = _dbContext.Usuarios.Where(u => u.id == id).FirstOrDefault();

                if (usuario == null)
                {
                    _dbContext.Database.Connection.Close();
                    return(new ResultadoAgregarTarjeta(false, "Error, el id del usuario al que se le quiere agregar la tarjeta, no existe").AsJson());
                }

                Card request = new Card();
                request.TokenId         = tokenTarjeta;
                request.DeviceSessionId = sessionId;

                try
                {
                    request = Startup.OpenPayLib.CardService.Create(usuario.idConekta, request);
                }
                catch (OpenpayException e)
                {
                    _dbContext.Database.Connection.Close();
                    return(new ResultadoAgregarTarjeta(false, TarjetaResultadoHelpers.ObtenerMensajeError((OpenPayErrorCodes)e.ErrorCode)).AsJson());
                }

                string last4 = request.CardNumber.Substring(request.CardNumber.Length - 4, 4);

                _dbContext.Usuario_Tarjeta.Add(new Usuario_Tarjeta
                {
                    tipoTarjeta    = TarjetaResultadoHelpers.GetTipoTarjeta(request.Brand),
                    digitosTarjeta = last4,
                    tokenTarjeta   = request.Id,
                    idUsuario      = id,
                    activo         = true
                });
                _dbContext.SaveChanges();
                return(new ResultadoAgregarTarjeta(true, "La tarjeta se agregó correctamente.").AsJson());
            }
        }
예제 #11
0
        private AdministradorUsuario getUsuarioAdministradorActual(HttpCookieCollection Cookies)
        {
            if (Cookies["AdminVendeAgro"] != null)
            {
                var token = Cookies["AdminVendeAgro"]["token"];
                if (token != null)
                {
                    using (var _dbContext = new MercampoEntities())
                    {
                        Startup.OpenDatabaseConnection(_dbContext);
                        if (_dbContext.Database.Connection.State != System.Data.ConnectionState.Open)
                        {
                            return(null);
                        }

                        var usuario = _dbContext.Usuario_Administrador.Where(u => u.tokenSesion == token).FirstOrDefault();
                        if (usuario == null)
                        {
                            _dbContext.Database.Connection.Close();
                            return(null);
                        }

                        if (!usuario.activo)
                        {
                            _dbContext.Database.Connection.Close();
                            return(null);
                        }

                        var resultado = new AdministradorUsuario(usuario.id, usuario.email, usuario.nombre);
                        _dbContext.Database.Connection.Close();
                        return(resultado);
                    }
                }
            }
            return(null);
        }
예제 #12
0
        public bool RealizarCargoTarjeta(int id, string tarjetaToken, string sessionId, CarritoDeCompra carrito, out string resultadoJson)
        {
            if (carrito == null || carrito.TotalCarrito <= 0.0)
            {
                resultadoJson = new ResultadoCargo(false, ResultadoCargoTarjeta.ErrorInterno, mensaje: "El carrito de compras esta vacio").AsJson();
                return(false);
            }

            HttpRequest request = HttpContext.Current.Request;
            var         usuario = getUsuarioPortalActual(request);

            if (usuario.Id != id)
            {
                resultadoJson = new ResultadoCargo(false, ResultadoCargoTarjeta.ErrorInterno, mensaje: "Error favor de hacer login").AsJson();
                return(false);
            }
            using (var _dbContext = new MercampoEntities())
            {
                Startup.OpenDatabaseConnection(_dbContext);
                if (_dbContext.Database.Connection.State != ConnectionState.Open)
                {
                    resultadoJson = new ResultadoCargo(false, ResultadoCargoTarjeta.ErrorInterno, mensaje: "Error en el servidor, vuelva a intentarlo de nuevo en unos minutos").AsJson();
                    return(false);
                }

                try
                {
                    Customer cliente = Startup.OpenPayLib.CustomerService.Get(usuario.IdConekta);
                    if (cliente == null)
                    {
                        resultadoJson = new ResultadoCargo(false, ResultadoCargoTarjeta.ErrorInterno, mensaje: "Error en el servidor, vuelva a intentarlo de nuevo en unos minutos").AsJson();
                        return(false);
                    }

                    ChargeRequest chargeRequest = new ChargeRequest();
                    chargeRequest.Method          = "card";
                    chargeRequest.SourceId        = tarjetaToken;
                    chargeRequest.Amount          = new decimal(carrito.TotalCarrito);
                    chargeRequest.Currency        = "MXN";
                    chargeRequest.Description     = "Servicio de anuncios Mercampo.mx";
                    chargeRequest.OrderId         = getToken();
                    chargeRequest.DeviceSessionId = sessionId;
                    chargeRequest.SendEmail       = true;

                    Charge         cargo     = Startup.OpenPayLib.ChargeService.Create(usuario.IdConekta, chargeRequest);
                    ResultadoCargo resultado = new ResultadoCargo(true, ResultadoCargoTarjeta.Aprobado, cargo.OrderId, cargo.Authorization, "El cargo ha sido exitoso", (double)cargo.Amount);
                    AgregarAnuncios(carrito, usuario.Id);
                    resultadoJson = resultado.AsJson();
                    return(true);
                }
                catch (OpenpayException e)
                {
                    ResultadoCargoTarjeta res = ResultadoCargoTarjeta.ErrorInterno;
                    if ((int)ResultadoCargoTarjeta.Rechazado == e.ErrorCode)
                    {
                        res = ResultadoCargoTarjeta.Rechazado;
                    }

                    resultadoJson = new ResultadoCargo(false, res, mensaje: TarjetaResultadoHelpers.ObtenerMensajeError((OpenPayErrorCodes)e.ErrorCode)).AsJson();
                    return(false);
                }
            }
        }