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); } }
public static string SerializeCarrito(CarritoDeCompra carrito) { //Create User object. //Create a stream to serialize the object to. MemoryStream ms = new MemoryStream(); // Serializer the User object to the stream. DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(CarritoDeCompra)); ser.WriteObject(ms, carrito); byte[] json = ms.ToArray(); ms.Close(); return(Encoding.UTF8.GetString(json, 0, json.Length)); }
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); } } }
public static void UpdateCarritoCookie(CarritoDeCompra carrito, HttpResponseBase response) { var serializedCarrito = Startup.SerializeCarrito(carrito); AplicacionUsuariosManager.setCookie("carritoVendeAgro", serializedCarrito, response); }
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); } }