Esempio n. 1
0
        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);
            }
        }
Esempio n. 5
0
        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);
            }
        }