public void CreateUserTransaction(Transaccion transaction, bool isFromBus = false) { try { var cardManager = new TarjetaManager(); var card = cardManager.GeTarjetaByUniquecode(transaction.CardUniqueCode); if (card == null) { throw new BusinessException(301); } if (transaction.Type == null) { throw new BusinessException(302); } var userManager = new UsuarioManager(); var user = userManager.Retrieve(new Usuario { Email = card.Usuario.Identificacion }); if (transaction.Type.Equals("Recarga", StringComparison.CurrentCultureIgnoreCase)) { card.SaldoDisponible = card.SaldoDisponible + transaction.Charge; cardManager.UpdateSaldoTarjeta(card); } else { if (isFromBus) { transaction.Charge = card.Convenio != null && card.Convenio.CedulaJuridica != -1 ? transaction.Charge - (transaction.Charge * (card.Convenio.DescuentoTarifa / 100)): transaction.Charge - (transaction.Charge * (card.TipoTarjeta.DiscountPercentage / 100)); } card.SaldoDisponible = card.SaldoDisponible - transaction.Charge; if (card.SaldoDisponible < 0) { throw new BusinessException(304); } cardManager.UpdateSaldoTarjeta(card); if (card.SaldoDisponible <= user.SmsNotificationsMin) { var smsNotification = new SendSms(); smsNotification.SendSmsMessage(new SmsMessage { DestinationNumber = user.Telefono.ToString(), Message = "Su cuenta tiene poco saldo disponible, por favor recargue." }); } } var email = new SendEmail(); email.SendEmailInvoice(new EmailMessage { To = user.Email, Url = transaction.Charge.ToString(), Message = $"{transaction.Type} - {transaction.Description} " }); _crudFactory.Create(transaction); } catch (Exception e) { ExceptionManager.GetInstance().Process(e); } }
public async Task <Response> ExecuteCorreoSolicitudAprobada(string correo, Entity entity) { var solicitud = (SolicitudHotel)entity; //correo = "*****@*****.**"; var cedulaJ = solicitud.CedulaJuridica; var link = ""; var datos = ""; var usuario = new Usuario { Identificacion = solicitud.IdUsuario, Correo = correo }; UsuarioManager mngU = new UsuarioManager(); var c = mngU.Validar(usuario); if (c != null) { datos = "" + solicitud.CodigoSolicitud; link = "https://adtripapp.azurewebsites.net/Home/vLogin/"; } else { datos = "" + solicitud.CodigoSolicitud; link = "https://adtripapp.azurewebsites.net/Home/vRegistroUsuarios/"; } var membresia = solicitud.Membrecia; var client = new SendGridClient("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"); var from = new EmailAddress("*****@*****.**", "Adtrip"); //destinatario var subject = "Solicitud aprobada"; //asunto del correo var to = new EmailAddress(correo, "Usuario"); var plainTextContent = "Solicitud de hotel aprobada, por favor continue con el registro"; // texto plano var htmlContent = @"<head> <link href=""https://fonts.googleapis.com/css?family=Montserrat"" rel=""stylesheet""> </head> <div style=""font-family: 'Montserrat', sans-serif; background-image: url('https://res.cloudinary.com/datatek/image/upload/v1563745950/correo_datatek_qpeykq.jpg'); background-size: cover; ""> <div style=""background: rgba(0, 0, 0, 0.8); width:100%; height: 100%;""> <table style=""max-width: 600px; padding: 10px; margin:0 auto; border-collapse: collapse;""> <tr> <td> <div style=""color: #fff; margin: 4% 10% 2%; font-family: sans-serif; text-shadow: 2px 2px 4px #000000""> <div style=""width: 100%;margin:20px 0; display: inline-block;text-align: center""> <img style=""padding: 0; width: 150px; margin: 5px"" src=""https://res.cloudinary.com/datatek/image/upload/v1563746114/ADTRIP_LOGO_sfprzx.png""> </div> <h2 style=""color: #fff; margin: 0 0 7px; font-size: 34px; margin: 0 auto; text-align: center; padding-bottom: 40px"">Solicitud de hotel aprobada</h2> <p style=""margin: 2px; font-size: 22px; padding-left: 20px; color: #fff;""> Por favor acepte la membresía en el registro:</p> <ul style=""font-size: 18px; color: #fff; margin: 10px 0; padding-left: 50px;""> <li style=""padding: 10px;"">Membresía: $" + membresia + @"</li> <li style=""padding: 10px;"">Cédula jurídica del hotel: " + cedulaJ + @"</li> </ul> <div style=""width: 100%; text-align: center; padding-top: 20px; padding-bottom: 42px""> <a style=""text-decoration: none; border-radius: 5px; padding: 11px 23px; color: white; background-color: #00cccc"" href=""" + link + datos + @""">Ir a registro</a> </div> <p style=""color: #fff; font-size: 14px; text-align: center; margin: 30px 0 0; padding-bottom: 30px;"">Ir al registro para continuar</p> </div> </td> </tr> </table> </div> </div>"; //se crea el correo var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent); Console.WriteLine(msg); var response = await client.SendEmailAsync(msg); Console.WriteLine(response); return(response); }
public async Task Create(Hotel hotel) { FacturaCrudFactory crudFactura = new FacturaCrudFactory(); UsuarioManager mngUsuario = new UsuarioManager(); Factura factura = new Factura(); try { var resFactura = new Factura(); do { var guid = Guid.NewGuid(); var justNumbers = new String(guid.ToString().Where(Char.IsDigit).ToArray()); factura.NumFacturacion = int.Parse(justNumbers.Substring(0, 9)); resFactura = crudFactura.Retrieve <Factura>(factura); } while (resFactura != null); if (hotel.Cadena == null) { hotel.Cadena = ""; } hotel.Estado = "Activo"; hotel.EstadoMembrecia = "Pagada";//Pendiente, Pagada hotel.FechaFin = DateTime.Now; hotel.NumFacturacion = factura.NumFacturacion; var c = crudHotel.Retrieve <Hotel>(hotel); if (c != null) { //El hotel ya fue registrado throw new BussinessException(52); } else { crudHotel.Create(hotel); ParametrizablesHotel param = new ParametrizablesHotel { IdHotel = hotel.CedulaJuridica }; mngParametrizablesHotel.Create(param); Usuario usuarioEncontrado = null; var u = new Usuario { Identificacion = hotel.IdGerente }; usuarioEncontrado = mngUsuario.RetrieveById(u); var detalleFactura = new LineaDetalleFactura { Nombre = "Membresía", Precio = (float)hotel.Membrecia, Cantidad = 1, SubTotal = (float)hotel.Membrecia, Impuesto = 0, Total = (float)hotel.Membrecia }; ArrayList detalle = new ArrayList(); detalle.Add(detalleFactura); string numFactura = Convert.ToString(factura.NumFacturacion); await PdfManager.Create(numFactura, "el pago de una membresía en AdTrip", detalle, hotel, (Usuario)usuarioEncontrado); } } catch (Exception ex) { ExceptionManager.GetInstance().Process(ex); } }
public async Task CreateYEnviar(LlaveQR llave, Usuario usuario) { try { UsuarioManager mngU = new UsuarioManager(); Usuario u = null; try { u = mngU.RetrieveAll().FindAll(FindCorreo).First <Usuario>(); } catch (Exception ex) { throw new BussinessException(12); } //validar si existe if (u != null) { //validar estado del usuario switch (u.ValorEstado) { case "3": //El usuario existe pero aún no ha verificado su cuenta throw new BussinessException(8); case "2": //El usuario existe pero su contraseña ha expirado throw new BussinessException(9); case "0": //El usuario existe pero se encuentra inactivo throw new BussinessException(9); } var mngRoles = new Rol_UsuarioManager(); var rolUsuario = new Rol_Usuario { IdUsuario = u.Identificacion, IdRol = "CLT" }; var roles = mngRoles.RetrieveAllById(rolUsuario); //validar que el usuario sea un cliente foreach (Rol_Usuario rol in roles) { if (rol.IdRol.Equals("CLT") == false) { throw new Exception("El usuario no es válido"); } } var QR = new LlaveQR(); do { llave.CodigoQR = RandomString(8); QR = crudLlaveQR.Retrieve <LlaveQR>(llave); } while (QR != null); llave.ImagenQR = getImagenQR(llave.CodigoQR); crudLlaveQR.Create(llave); await EnviarCorreoManager.GetInstance().ExecuteCorreoCodigoQR(u.Correo, llave); } else { //no existe ese usuario throw new BussinessException(12); } bool FindCorreo(Usuario usu) { if (usu.Correo == usuario.Correo) { return(true); } else { return(false); } } } catch (Exception ex) { ExceptionManager.GetInstance().Process(ex); } }
public async Task Create(Reserva reserva) { try { FacturaCrudFactory crudFactura = new FacturaCrudFactory(); LlaveQRManager mngLlave = new LlaveQRManager(); UsuarioManager mngUsuario = new UsuarioManager(); HotelCrudFactory crudHotel = new HotelCrudFactory(); var resReserva = crudReserva.Retrieve <Reserva>(reserva); Factura factura = new Factura(); while (resReserva != null) { var guid = Guid.NewGuid(); var justNumbers = new String(guid.ToString().Where(Char.IsDigit).ToArray()); reserva.Codigo = int.Parse(justNumbers.Substring(0, 9)); resReserva = crudReserva.Retrieve <Reserva>(reserva); } ; var resFactura = new Factura(); do { var guid = Guid.NewGuid(); var justNumbers = new String(guid.ToString().Where(Char.IsDigit).ToArray()); factura.NumFacturacion = int.Parse(justNumbers.Substring(0, 9)); resFactura = crudFactura.Retrieve <Factura>(factura); } while (resFactura != null); int[] cH = reserva.CantHabitaciones; int cont = 0; var r = new Reserva { Codigo = reserva.Codigo, FechaInicio = reserva.FechaInicio, FechaFin = reserva.FechaFin, Precio = reserva.Precio, Promocion = reserva.Promocion, IdUsuario = reserva.IdUsuario, IdHotel = reserva.IdHotel, CantPersonas = reserva.CantPersonas, NumFacturacion = factura.NumFacturacion }; crudReserva.Create(r); cont = 0; foreach (string tipoHab in reserva.TipoHabitaciones) { var r3 = new Reserva { TipoHab = tipoHab, CantHab = cH[cont], Codigo = reserva.Codigo, IdHotel = reserva.IdHotel, FechaInicio = reserva.FechaInicio, FechaFin = reserva.FechaFin }; crudReserva.AsignarHabitacionReserva(r3); cont++; } Usuario usuarioEncontrado = null; var u = new Usuario { Identificacion = reserva.IdUsuario }; usuarioEncontrado = mngUsuario.RetrieveById(u); LlaveQR llave = new LlaveQR(); llave.EstadoQR = "1"; llave.IdReserva = reserva.Codigo; llave.IdUsuario = usuarioEncontrado.Correo; await mngLlave.CreateYEnviar(llave, usuarioEncontrado); var rQR = new LlaveQR { IdReserva = reserva.Codigo }; var respuesta = mngLlave.RetrieveAllByReserva(rQR); var llaveReserva = new Reserva { Codigo = reserva.Codigo, LlaveQR = respuesta[0].ImagenQR }; crudReserva.AsignarQRReservaReserva(llaveReserva); //string numeroFactura, string descripcion, ArrayList detalles, Hotel hotel, Usuario cliente var detalleFactura = new LineaDetalleFactura { Nombre = "Reservación", Precio = (float)reserva.Precio, Cantidad = 1, SubTotal = (float)reserva.Precio, Impuesto = 0, Total = (float)reserva.Precio }; ArrayList detalle = new ArrayList(); detalle.Add(detalleFactura); var h = new Hotel { CedulaJuridica = reserva.IdHotel }; Hotel hotel = crudHotel.Retrieve <Hotel>(h); string numFactura = Convert.ToString(factura.NumFacturacion); await PdfManager.Create(numFactura, "el pago de una reservación en AdTrip", detalle, hotel, (Usuario)usuarioEncontrado); } catch (Exception ex) { ExceptionManager.GetInstance().Process(ex); } }