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); } }
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); } }
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()); } }
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; } })); }
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; } })); }
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(); } } } }
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; } })); }
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; } })); }
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; })); }
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)); }
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)); }
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; } })); }
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()); } }
public async Task <ActionResult> BorrarTarjeta(int?id) { return(await Task.Run(() => { using (var _dbContext = new MercampoEntities()) { Startup.OpenDatabaseConnection(_dbContext); if (_dbContext.Database.Connection.State != ConnectionState.Open) { return null; } var usuarioActual = Startup.GetAplicacionUsuariosManager().getUsuarioPortalActual(Request); var tarjetaActual = usuarioActual.Tarjetas.Where(t => t.Id == id).FirstOrDefault(); try { Startup.OpenPayLib.CardService.Delete(usuarioActual.IdConekta, tarjetaActual.IdConekta); } catch (OpenpayException e) { return null; } var tarjetaBD = _dbContext.Usuario_Tarjeta.Where(t => t.id == id).FirstOrDefault(); if (tarjetaBD == null) { return null; } else { tarjetaBD.activo = false; _dbContext.SaveChanges(); } _dbContext.Database.Connection.Close(); return RedirectToAction("Perfil", "Portal"); } })); }
public async Task <RegistroStatus> CambiarEmail(string email) { return(await Task.Run(() => { using (var _dbContext = new MercampoEntities()) { Startup.OpenDatabaseConnection(_dbContext); if (_dbContext.Database.Connection.State != ConnectionState.Open) { return RegistroStatus.Incorrecto; } var usuario = _dbContext.Usuarios.Where(u => u.email == email).FirstOrDefault(); if (usuario != null) { return RegistroStatus.MailOcupado; } var idActual = Startup.GetAplicacionUsuariosManager().getUsuarioPortalActual(Request).Id; usuario = _dbContext.Usuarios.Where(u => u.id == idActual).FirstOrDefault(); if (usuario == null) { return RegistroStatus.Incorrecto; } else { usuario.email = email; _dbContext.SaveChanges(); } _dbContext.Database.Connection.Close(); return RegistroStatus.Exitoso; } })); }
public async Task <bool> CrearAnuncio(string json) { var anuncio = JObject.Parse(json); var titulo = (string)anuncio["jtitulo"]; var descripcion = (string)anuncio["jdescripcion"]; var precio = (double)anuncio["jprecio"]; var idUsuario = (int)anuncio["jidUsuario"]; var idSubcategoria = (int)anuncio["jidSubcategoria"]; var idEstado = (int)anuncio["jestado"]; var fotoDisplay = (string)anuncio["jfotoDisplay"]; var fotos = (JArray)anuncio["jfotos"]; var video = (string)anuncio["jvideo"]; var idAnuncio = (int)anuncio["idAnuncio"]; return(await Task.Run(() => { using (var _dbContext = new MercampoEntities()) { Startup.OpenDatabaseConnection(_dbContext); if (_dbContext.Database.Connection.State != ConnectionState.Open) { ModelState.AddModelError("", "Error en la base de datos, vuelva a intentarlo"); return false; } else { Anuncio anuncioACrear = _dbContext.Anuncios.Where(a => a.id == idAnuncio).FirstOrDefault(); if (anuncioACrear == null || anuncioACrear.estado != (int)EstadoAnuncio.Vacio) { ModelState.AddModelError("", "Error el id del anuncio a crear es incorrecto, vuelva a intentarlo"); return false; } anuncioACrear.titulo = titulo; anuncioACrear.descripcion = descripcion; anuncioACrear.precio = precio; anuncioACrear.activo = false; anuncioACrear.idUsuario = idUsuario; anuncioACrear.idSubcategoria = idSubcategoria; anuncioACrear.idEstado = idEstado; anuncioACrear.estado = (int)EstadoAnuncio.PendientePorAprobar; anuncioACrear.clicks = 0; anuncioACrear.vistas = 0; anuncioACrear.fecha_inicio = DateTime.Now; anuncioACrear.fecha_fin = DateTime.Now.AddMonths(anuncioACrear.Paquete.meses); _dbContext.Fotos_Anuncio.Add(new Fotos_Anuncio { ruta = fotoDisplay, idAnuncio = anuncioACrear.id, principal = true }); foreach (var item in fotos) { var url = (string)item; _dbContext.Fotos_Anuncio.Add(new Fotos_Anuncio { ruta = url, idAnuncio = anuncioACrear.id, principal = false }); } if (!string.IsNullOrEmpty(video)) { _dbContext.Videos_Anuncio.Add(new Videos_Anuncio { ruta = video, idAnuncio = anuncioACrear.id }); } _dbContext.SaveChanges(); } _dbContext.Database.Connection.Close(); return true; } })); }
public async Task <bool> ModificarAnuncio(string json) { var anuncio = JObject.Parse(json); var id = (int)anuncio["jid"]; var titulo = (string)anuncio["jtitulo"]; var descripcion = (string)anuncio["jdescripcion"]; var precio = (double)anuncio["jprecio"]; var idSubcategoria = (int)anuncio["jidSubcategoria"]; var idEstado = (int)anuncio["jestado"]; var fotoDisplayId = (int)anuncio["jfotoDisplayId"]; var fotoDisplay = (string)anuncio["jfotoDisplay"]; var fotos = (JArray)anuncio["jfotos"]; var fotosEliminadas = (JArray)anuncio["jfotosEliminadas"]; var fotosEliminadasRutas = (JArray)anuncio["jfotosEliminadasRutas"]; var video = (string)anuncio["jvideo"]; bool estado = true; return(await Task.Run(() => { using (var _dbContext = new MercampoEntities()) { Startup.OpenDatabaseConnection(_dbContext); if (_dbContext.Database.Connection.State != ConnectionState.Open) { ModelState.AddModelError("", "Error en la base de datos, vuelva a intentarlo"); return false; } else { var anuncioDb = _dbContext.Anuncios.FirstOrDefault(a => a.id == id); if (anuncioDb == null) { ModelState.AddModelError("", "Error anuncio no encontrado, vuelva a intentarlo"); estado = false; } else { anuncioDb.titulo = titulo; anuncioDb.descripcion = descripcion; anuncioDb.precio = precio; anuncioDb.idSubcategoria = idSubcategoria; anuncioDb.idEstado = idEstado; anuncioDb.estado = (int)EstadoAnuncio.PendientePorAprobar; foreach (var foto in fotosEliminadas) { var idFoto = (int)foto; var fotoActual = _dbContext.Fotos_Anuncio.FirstOrDefault(f => f.id == idFoto); _dbContext.Fotos_Anuncio.Remove(fotoActual); } foreach (var foto in fotosEliminadasRutas) { borrarFoto((string)foto); } var fotoDb = _dbContext.Fotos_Anuncio.FirstOrDefault(f => f.id == fotoDisplayId); if (fotoDb == null) { ModelState.AddModelError("", "Error anuncio no encontrado, vuelva a intentarlo"); estado = false; } if (fotoDb.ruta != fotoDisplay) { borrarFoto(fotoDb.ruta); fotoDb.ruta = fotoDisplay; } foreach (var item in fotos) { var url = (string)item; _dbContext.Fotos_Anuncio.Add(new Fotos_Anuncio { ruta = url, idAnuncio = anuncioDb.id, principal = false }); } if (!string.IsNullOrEmpty(video)) { _dbContext.Videos_Anuncio.Add(new Videos_Anuncio { ruta = video, idAnuncio = anuncioDb.id }); } _dbContext.SaveChanges(); } _dbContext.SaveChanges(); } _dbContext.Database.Connection.Close(); return true; } })); }