コード例 #1
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;
            }));
        }
コード例 #2
0
        public async Task <bool> CambiarPassword(string contrasena)
        {
            return(await Task.Run(() =>
            {
                using (var _dbContext = new MercampoEntities())
                {
                    Startup.OpenDatabaseConnection(_dbContext);
                    if (_dbContext.Database.Connection.State != ConnectionState.Open)
                    {
                        return false;
                    }

                    var idActual = Startup.GetAplicacionUsuariosManager().getUsuarioPortalActual(Request).Id;
                    var usuario = _dbContext.Usuarios.Where(u => u.id == idActual).FirstOrDefault();

                    if (usuario == null)
                    {
                        return false;
                    }
                    else
                    {
                        usuario.password = AplicacionUsuariosManager.Hash(contrasena);
                        _dbContext.SaveChanges();
                    }

                    _dbContext.Database.Connection.Close();
                    return true;
                }
            }));
        }
コード例 #3
0
        public async Task <ActionResult> BannersLateralesPartial()
        {
            return(await Task.Run(() =>
            {
                using (var _dbContext = new MercampoEntities())
                {
                    Startup.OpenDatabaseConnection(_dbContext);
                    if (_dbContext.Database.Connection.State != ConnectionState.Open)
                    {
                        return null;
                    }

                    List <PaginaBannerCentralViewModel> lista = new List <PaginaBannerCentralViewModel>();
                    var banners = _dbContext.Banners.Where(b => b.tipo != (int)BannerTipo.Central && b.ruta != null && b.activo == true);

                    foreach (var banner in banners)
                    {
                        lista.Add(new PaginaBannerCentralViewModel(banner.Id, banner.ruta, banner.link));
                    }

                    _dbContext.Database.Connection.Close();

                    var model = new PaginaBannersLateralesViewModel(lista);
                    return PartialView("BannersLateralesPartial", model);
                }
            }));
        }
コード例 #4
0
        public async Task <ICollection <PaginaSubcategoriaViewModel> > ObtenerSubcategorias(int?idCategoria)
        {
            return(await Task.Run(() =>
            {
                using (var _dbContext = new MercampoEntities())
                {
                    Startup.OpenDatabaseConnection(_dbContext);
                    if (_dbContext.Database.Connection.State != ConnectionState.Open)
                    {
                        return null;
                    }

                    var subcategorias = _dbContext.Subcategorias.Where(s => (s.activo == true) && (s.idCategoria == idCategoria));
                    List <PaginaSubcategoriaViewModel> listaSubcategorias = new List <PaginaSubcategoriaViewModel>();

                    listaSubcategorias.Add(new PaginaSubcategoriaViewModel("Elige una subcategoría"));


                    foreach (var subcategoria in subcategorias)
                    {
                        listaSubcategorias.Add(new PaginaSubcategoriaViewModel(subcategoria.id, subcategoria.nombre));
                    }

                    _dbContext.Database.Connection.Close();
                    return listaSubcategorias;
                }
            }));
        }
コード例 #5
0
        public async Task <ICollection <PaginaBeneficioViewModel> > ObtenerBeneficios()
        {
            return(await Task.Run(() =>
            {
                using (var _dbContext = new MercampoEntities())
                {
                    Startup.OpenDatabaseConnection(_dbContext);
                    if (_dbContext.Database.Connection.State != ConnectionState.Open)
                    {
                        return null;
                    }

                    List <PaginaBeneficioViewModel> lista = new List <PaginaBeneficioViewModel>();
                    var beneficios = _dbContext.Beneficios;

                    foreach (var item in beneficios)
                    {
                        lista.Add(new PaginaBeneficioViewModel(item.id, item.descripcion, item.precio, item.tipo, item.numero));
                    }

                    _dbContext.Database.Connection.Close();
                    return lista;
                }
            }));
        }
コード例 #6
0
        public async Task <ICollection <PaginaPaqueteViewModel> > ObtenerPaquetes()
        {
            return(await Task.Run(() =>
            {
                using (var _dbContext = new MercampoEntities())
                {
                    Startup.OpenDatabaseConnection(_dbContext);
                    if (_dbContext.Database.Connection.State != ConnectionState.Open)
                    {
                        return null;
                    }

                    List <PaginaPaqueteViewModel> lista = new List <PaginaPaqueteViewModel>();
                    var paquetes = _dbContext.Paquetes.Where(p => p.activo == true);

                    foreach (var item in paquetes)
                    {
                        lista.Add(new PaginaPaqueteViewModel(item.id, item.nombre, item.meses, item.precio, item.descripcion, item.porcentajeAhorro));
                    }

                    _dbContext.Database.Connection.Close();
                    return lista;
                }
            }));
        }
コード例 #7
0
        public async Task <LoginStatus> LoginPortalAsync(string email, string password)
        {
            HttpResponse response = HttpContext.Current.Response;

            return(await Task.Run(() =>
            {
                using (var _dbContext = new MercampoEntities())
                {
                    var usuario = _dbContext.Usuarios.Where(u => u.email == email).FirstOrDefault();
                    if (usuario == null)
                    {
                        return LoginStatus.Incorrecto;
                    }

                    if (!usuario.confirmaEmail)
                    {
                        string mailMensaje = "<p>Estimado/a {0} gracias por registrarte en mercampo.mx</p>" +
                                             "<p>Para completar tu registro y poder hacer login da click <a href=\'" + Startup.getBaseUrl() + "/Portal/ConfirmarMail?token=" + "{1}\'>AQUÍ</a></p>";
                        var result = Startup.GetServicioEmail().SendAsync(string.Format(mailMensaje, usuario.nombre + " " + usuario.apellidos, usuario.tokenEmail), "Registro Mercampo", usuario.email);
                        return LoginStatus.ConfirmacionMail;
                    }

                    if (usuario.password.CompareTo(password) != 0)
                    {
                        return LoginStatus.Incorrecto;
                    }

                    usuario.tokenSesion = getToken();
                    setCookie("VendeAgroUser", usuario.tokenSesion, response);
                    _dbContext.SaveChanges();
                    return LoginStatus.Exitoso;
                }
            }));
        }
コード例 #8
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;
                }
            }));
        }
コード例 #9
0
        public async Task <ICollection <PagoViewModel> > ObtenerPagos(int id)
        {
            return(await Task.Run(() =>
            {
                using (var _dbContext = new MercampoEntities())
                {
                    Startup.OpenDatabaseConnection(_dbContext);
                    if (_dbContext.Database.Connection.State != ConnectionState.Open)
                    {
                        return null;
                    }

                    List <PagoViewModel> lista = new List <PagoViewModel>();
                    var pagos = _dbContext.Pagoes.Where(p => p.idUsuario == id);

                    foreach (var item in pagos)
                    {
                        lista.Add(new PagoViewModel(item.id, item.total, item.fecha, item.digitosTarjeta, item.Referencia));
                    }

                    _dbContext.Database.Connection.Close();
                    return lista;
                }
            }));
        }
コード例 #10
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);
            }
        }
コード例 #11
0
        public async Task <ActionResult> ObtenerDestacadosFiltradosTexto(string query)
        {
            return(await Task.Run(() =>
            {
                using (var _dbContext = new MercampoEntities())
                {
                    Startup.OpenDatabaseConnection(_dbContext);
                    if (_dbContext.Database.Connection.State != ConnectionState.Open)
                    {
                        return null;
                    }

                    IQueryable <Anuncio> anuncios = null;

                    if (query == null)
                    {
                        return null;
                    }

                    anuncios = _dbContext.Anuncios.Where(a => a.activo == true && a.estado == (int)EstadoAnuncio.Aprobado && (
                                                             a.Subcategoria.nombre.Contains(query) == true || a.Subcategoria.Categoria.nombre.Contains(query) == true || a.Estado1.nombre.Contains(query) == true ||
                                                             a.Estado1.Pai.nombre.Contains(query) == true || a.titulo.Contains(query) == true)).Take(20);

                    _dbContext.Database.Connection.Close();
                    PortalAnunciosBusquedaViewModel model = new PortalAnunciosBusquedaViewModel(CreaAnuncios(anuncios.ToList()), query);
                    return PartialView("_BusquedaPartial", model);
                }
            }));
        }
コード例 #12
0
        public async Task <LoginStatus> LoginPortalAsync(string email, string password)
        {
            HttpResponse response = HttpContext.Current.Response;

            return(await Task.Run(() =>
            {
                using (var _dbContext = new MercampoEntities())
                {
                    var usuario = _dbContext.Usuarios.Where(u => u.email == email).FirstOrDefault();
                    if (usuario == null)
                    {
                        return LoginStatus.Incorrecto;
                    }

                    if (!usuario.confirmaEmail)
                    {
                        //TO DO: Reenviar token
                        return LoginStatus.ConfirmacionMail;
                    }

                    if (usuario.password.CompareTo(password) != 0)
                    {
                        return LoginStatus.Incorrecto;
                    }

                    usuario.tokenSesion = getToken();
                    setCookie("VendeAgroUser", usuario.tokenSesion, response);
                    _dbContext.SaveChanges();
                    return LoginStatus.Exitoso;
                }
            }));
        }
コード例 #13
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();
                    }
                }
            }
        }
コード例 #14
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;
                }
            }));
        }
コード例 #15
0
        public async Task <ActionResult> BannerCentralPartial()
        {
            return(await Task.Run(() =>
            {
                using (var _dbContext = new MercampoEntities())
                {
                    Startup.OpenDatabaseConnection(_dbContext);
                    if (_dbContext.Database.Connection.State != ConnectionState.Open)
                    {
                        return null;
                    }

                    var banner = _dbContext.Banners.Where(b => b.tipo == (int)BannerTipo.Central).FirstOrDefault();

                    if (banner.activo == false)
                    {
                        return PartialView("BannerCentralPartial", null);
                    }

                    var model = new PaginaBannerCentralViewModel(banner.Id, banner.ruta, banner.link);

                    _dbContext.Database.Connection.Close();
                    return PartialView("BannerCentralPartial", model);
                }
            }));
        }
コード例 #16
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;
                }
            }));
        }
コード例 #17
0
        public async Task <ICollection <PaginaEstadoViewModel> > ObtenerEstados(int?idPais)
        {
            return(await Task.Run(() =>
            {
                using (var _dbContext = new MercampoEntities())
                {
                    Startup.OpenDatabaseConnection(_dbContext);
                    if (_dbContext.Database.Connection.State != ConnectionState.Open)
                    {
                        return null;
                    }
                    List <PaginaEstadoViewModel> lista = new List <PaginaEstadoViewModel>();
                    lista.Add(new PaginaEstadoViewModel("Elige un estado"));

                    var estados = _dbContext.Estadoes.Where(e => e.idPais == idPais);
                    foreach (var item in estados)
                    {
                        lista.Add(new PaginaEstadoViewModel(item.id, item.nombre));
                    }

                    _dbContext.Database.Connection.Close();
                    return lista;
                }
            }));
        }
コード例 #18
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);
        }
コード例 #19
0
        public async Task <ICollection <PaginaPaisViewModel> > ObtenerPaises()
        {
            return(await Task.Run(() =>
            {
                using (var _dbContext = new MercampoEntities())
                {
                    Startup.OpenDatabaseConnection(_dbContext);
                    if (_dbContext.Database.Connection.State != ConnectionState.Open)
                    {
                        return null;
                    }
                    List <PaginaPaisViewModel> lista = new List <PaginaPaisViewModel>();
                    lista.Add(new PaginaPaisViewModel("Elige un país"));

                    var paises = _dbContext.Pais;
                    foreach (var item in paises)
                    {
                        lista.Add(new PaginaPaisViewModel(item.id, item.nombre));
                    }

                    _dbContext.Database.Connection.Close();
                    return lista;
                }
            }));
        }
コード例 #20
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;
                }
            }));
        }
コード例 #21
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);
            }
        }
コード例 #22
0
        public async Task <ActionResult> AnuncioDetalles(int?id, ConsultarDetalles consulta, string query)
        {
            if (id == null)
            {
                return(HttpNotFound("Parámetro inválido se espera un id de un anuncio"));
            }

            HttpNotFoundResult             result = null;
            PortalDetallesAnuncioViewModel model  = null;

            await Task.Run(() =>
            {
                using (var _dbContext = new MercampoEntities())
                {
                    Startup.OpenDatabaseConnection(_dbContext);
                    if (_dbContext.Database.Connection.State != ConnectionState.Open)
                    {
                        result = HttpNotFound("Error en la base de datos");
                    }
                    else
                    {
                        var anuncio = _dbContext.Anuncios.Where(a => a.id == id).FirstOrDefault();
                        if (anuncio == null)
                        {
                            result = HttpNotFound("No se encontro el anuncio con el id solicitado");
                        }
                        else
                        {
                            anuncio.clicks += 1;
                            _dbContext.SaveChanges();
                            var anuncioViewModel = new PortalAnuncioViewModel(anuncio.id, anuncio.titulo, anuncio.precio, anuncio.Subcategoria.Categoria.nombre, anuncio.Subcategoria.nombre,
                                                                              anuncio.Estado1.nombre, anuncio.Fotos_Anuncio.Where(f => f.principal == true).FirstOrDefault()?.ruta);

                            List <PaginaFotoViewModel> fotos = new List <PaginaFotoViewModel>();

                            var rutaVideo = anuncio.Videos_Anuncio.Where(v => v.idAnuncio == id).FirstOrDefault()?.ruta;

                            string nombre = anuncio.Usuario.nombre + " " + anuncio.Usuario.apellidos;
                            var owner     = new PaginaOwnerAnuncioViewModel(anuncio.Usuario.id, nombre, anuncio.Usuario.telefono, anuncio.Usuario.email);

                            foreach (var foto in anuncio.Fotos_Anuncio)
                            {
                                fotos.Add(new PaginaFotoViewModel(foto.principal, foto.ruta));
                            }

                            model = new PortalDetallesAnuncioViewModel(anuncioViewModel, anuncio.descripcion, fotos, rutaVideo, owner, anuncio.clicks, consulta, query);
                        }
                    }
                }
            });

            if (result != null)
            {
                return(result);
            }

            return(View(model));
        }
コード例 #23
0
        public async Task <ActionResult> DetallesPago(int?id, double total)
        {
            if (Startup.GetAplicacionUsuariosManager().VerificarPortalSesion() == LoginStatus.Incorrecto)
            {
                return(RedirectToAction("Index", "Home"));
            }

            if (id == null)
            {
                return(HttpNotFound("Parámetro inválido se espera un id de un pago"));
            }

            HttpNotFoundResult    result = null;
            DetallesPagoViewModel model  = null;
            await Task.Run(() =>
            {
                using (var _dbContext = new MercampoEntities())
                {
                    Startup.OpenDatabaseConnection(_dbContext);
                    if (_dbContext.Database.Connection.State != ConnectionState.Open)
                    {
                        result = HttpNotFound("Error en la base de datos");
                    }
                    else
                    {
                        var conceptos = _dbContext.Pago_Concepto.Where(p => p.idPago == id);
                        if (conceptos == null)
                        {
                            result = HttpNotFound("No se encontro el pago con el id solicitado");
                        }
                        else
                        {
                            List <PagoConceptoViewModel> listaConceptos = new List <PagoConceptoViewModel>();
                            foreach (var concepto in conceptos)
                            {
                                if (concepto.descripcionBeneficio == null)
                                {
                                    listaConceptos.Add(new PagoConceptoViewModel(concepto.tipo, concepto.nombrePaquete, concepto.mesesPaquete, concepto.precioPaquete));
                                    continue;
                                }
                                listaConceptos.Add(new PagoConceptoViewModel(concepto.tipo, concepto.nombrePaquete, concepto.mesesPaquete, concepto.precioPaquete, concepto.descripcionBeneficio, concepto.precioBeneficio));
                            }

                            model = new DetallesPagoViewModel(total, listaConceptos);
                        }
                    }
                }
            });

            if (result != null)
            {
                return(result);
            }

            return(View(model));
        }
コード例 #24
0
ファイル: Startup.cs プロジェクト: safern/VendeAgroWeb
 public static void OpenDatabaseConnection(MercampoEntities _dbContext)
 {
     try
     {
         _dbContext.Database.Connection.Open();
     }
     catch (Exception e)
     {
         return;
     }
 }
コード例 #25
0
        public ActionResult Index(int?abrirLogin)
        {
            using (MercampoEntities _dbContext = new MercampoEntities())
            {
                Startup.OpenDatabaseConnection(_dbContext);
                if (_dbContext.Database.Connection.State != ConnectionState.Open)
                {
                    return(View());
                }

                var ultimo = _dbContext.Accesos.Where(a => a.activo == true).FirstOrDefault();
                var necesitaActualizarAnuncios = false;
                if (ultimo == null)
                {
                    necesitaActualizarAnuncios = true;
                }
                else
                {
                    var result = ultimo.Fecha.Subtract(DateTime.UtcNow);

                    if (result.Days != 0)
                    {
                        necesitaActualizarAnuncios = true;
                        ultimo.activo = false;
                        _dbContext.SaveChanges();
                    }
                }

                if (necesitaActualizarAnuncios)
                {
                    _dbContext.Accesos.Add(new Acceso
                    {
                        Fecha  = DateTime.UtcNow,
                        activo = true
                    });
                    _dbContext.SaveChanges();

                    var anunciosQueDebeDesactivar = _dbContext.Anuncios.Where(a => a.fecha_fin != null && a.activo == true && (int)EstadoAnuncio.Aprobado == a.estado);
                    foreach (var anuncio in anunciosQueDebeDesactivar)
                    {
                        if (anuncio.fecha_fin.Value.Subtract(DateTime.UtcNow).Days < 0)
                        {
                            var a = _dbContext.Anuncios.Where(an => an.id == anuncio.id).FirstOrDefault();
                            a.activo = false;
                            a.estado = (int)EstadoAnuncio.Vencido;
                        }
                    }
                    _dbContext.SaveChanges();
                }
                return(View());
            }
        }
コード例 #26
0
        public async Task <List <Anuncio> > ObtenerAnunciosDestacados(MercampoEntities _dbContext)
        {
            return(await Task.Run(() =>
            {
                Startup.OpenDatabaseConnection(_dbContext);
                if (_dbContext.Database.Connection.State != ConnectionState.Open)
                {
                    return null;
                }

                return _dbContext.Anuncios.Where(a => a.activo == true && a.estado == (int)EstadoAnuncio.Aprobado).OrderByDescending(a => a.clicks).ToList();
            }));
        }
コード例 #27
0
        public async Task <ActionResult> GaleriaAnuncio(int?id)
        {
            if (id == null)
            {
                return(HttpNotFound("Parámetro inválido se espera un id de un anuncio"));
            }

            HttpNotFoundResult      result = null;
            GaleriaAnuncioViewModel model  = null;

            await Task.Run(() =>
            {
                using (var _dbContext = new MercampoEntities())
                {
                    Startup.OpenDatabaseConnection(_dbContext);
                    if (_dbContext.Database.Connection.State != ConnectionState.Open)
                    {
                        result = HttpNotFound("Error en la base de datos");
                    }
                    else
                    {
                        var anuncio = _dbContext.Anuncios.Where(a => a.id == id).FirstOrDefault();
                        if (anuncio == null)
                        {
                            result = HttpNotFound("No se encontro el anuncio con el id solicitado");
                        }
                        else
                        {
                            anuncio.clicks += 1;
                            _dbContext.SaveChanges();

                            List <PaginaFotoViewModel> fotos = new List <PaginaFotoViewModel>();

                            foreach (var foto in anuncio.Fotos_Anuncio)
                            {
                                fotos.Add(new PaginaFotoViewModel(foto.principal, foto.ruta));
                            }

                            model = new GaleriaAnuncioViewModel(fotos);
                        }
                    }
                }
            });

            if (result != null)
            {
                return(result);
            }

            return(PartialView("GaleriaAnuncio", model));
        }
コード例 #28
0
        public async Task <ActionResult> OfertasDelDiaPartial(int?index)
        {
            if (!index.HasValue)
            {
                index = 0;
            }
            using (var _dbContext = new MercampoEntities())
            {
                var anuncios = await ObtenerOfertasDelDia(_dbContext);

                PortalAnunciosViewModel model = new PortalAnunciosViewModel(ObtenerSiguientesAnuncios(index.Value, anuncios), "", "", "", anuncios.Count, index.Value);
                return(PartialView("_OfertasPartial", model));
            }
        }
コード例 #29
0
        public async Task <RegistroStatus> RegistroUsuarioAsync(Models.Portal.RegistroViewModel model)
        {
            HttpResponse response = HttpContext.Current.Response;

            return(await Task.Run(async() =>
            {
                using (var _dbContext = new MercampoEntities())
                {
                    var usuario = _dbContext.Usuarios.Where(u => u.email.Equals(model.Email, StringComparison.InvariantCulture)).FirstOrDefault();
                    if (usuario != null)
                    {
                        return RegistroStatus.MailOcupado;
                    }

                    usuario = _dbContext.Usuarios.Where(u => u.telefono.Equals(model.Celular, StringComparison.InvariantCulture)).FirstOrDefault();

                    if (usuario != null)
                    {
                        return RegistroStatus.TelefonoOcupado;
                    }

                    var tokenId = CrearClienteConektaId(model.Nombre, model.Apellidos, model.Email, model.Celular);
                    string tokenSesion = getToken();
                    string tokenEmail = getToken();
                    _dbContext.Usuarios.Add(new Usuario
                    {
                        nombre = model.Nombre,
                        apellidos = model.Apellidos,
                        telefono = model.Celular,
                        password = Hash(model.Password),
                        email = model.Email,
                        confirmaEmail = true,
                        tokenSesion = tokenSesion,
                        tokenEmail = tokenEmail,
                        idConekta = tokenId
                    });

                    _dbContext.SaveChanges();
                    setCookie("VendeAgroUser", tokenSesion, response);

                    var usuarioRegistrado = _dbContext.Usuarios.Where(u => u.email == model.Email).FirstOrDefault();
                    string mailMensaje = "<p>Estimado {0} gracias por registrarte en mercampo.mx</p>" +
                                         "<p>Para completar tu registro y poder hacer login da click <a href=\'" + Startup.getBaseUrl() + "/Portal/ConfirmarMail?token=" + "{1}\'>AQUÍ</a></p>";

                    var result = await Startup.GetServicioEmail().SendAsync(string.Format(mailMensaje, model.Nombre + " " + model.Apellidos, tokenEmail), "Registro Mercampo", model.Email);
                    return RegistroStatus.Exitoso;
                }
            }));
        }
コード例 #30
0
 public async Task <List <Anuncio> > ObtenerOfertasDelDia(MercampoEntities _dbContext)
 {
     return(await Task.Run(() =>
     {
         Startup.OpenDatabaseConnection(_dbContext);
         if (_dbContext.Database.Connection.State != ConnectionState.Open)
         {
             return null;
         }
         var anuncios = _dbContext.Anuncios.Where(a => a.activo == true &&
                                                  a.estado == (int)EstadoAnuncio.Aprobado && a.Anuncio_Beneficio.Where(ab => ab.idAnuncio == a.id &&
                                                                                                                       ab.Beneficio.tipo == (int)BeneficiosExtraTipo.OfertaDelDia).FirstOrDefault() != null);
         return Shuffle(anuncios.ToList());
     }));
 }