コード例 #1
0
        public List <ZonaVehiculo> ZonasPorEmpresa(int idEmpresa)
        {
            List <ZonaVehiculo>        listadoFinal     = new List <ZonaVehiculo>();
            List <TipoVehiculoEmpresa> tipoVehiculosEmp = new List <TipoVehiculoEmpresa>();

            try
            {
                TipoVehiculoEmpresaController controladorTipoVehiculo = new TipoVehiculoEmpresaController();
                tipoVehiculosEmp = controladorTipoVehiculo.ListarTiposDeVehiculo(idEmpresa);

                foreach (TipoVehiculoEmpresa tipoVeh in tipoVehiculosEmp)
                {
                    var zonaVehiculo = this.ZonaVehiculoEmpresa(idEmpresa, tipoVeh.ID);
                    if (zonaVehiculo != null)
                    {
                        listadoFinal.Add(zonaVehiculo);
                    }
                }
            }
            catch (Exception)
            {
                return(null);
            }

            return(listadoFinal);
        }
コード例 #2
0
        public List <UbicacionVehiculo> ListaUbicacionVehiculosEmpresaTipoPrecioDisponibles(int idEmpresa, int idTipoVehiculo, int precioMin, int precioMax)
        {
            VehiculoController            controladorVehiculo            = new VehiculoController();
            TipoVehiculoEmpresaController controladorTipoVehiculoEmpresa = new TipoVehiculoEmpresaController();

            List <UbicacionVehiculo> listado = new List <UbicacionVehiculo>();

            var tarifa = controladorTipoVehiculoEmpresa.ObtenerTarifaFijaTipoVehiculo(idEmpresa, idTipoVehiculo);

            if ((precioMin <= tarifa) && (tarifa <= precioMax))
            {
                List <Vehiculo> vehiculos = controladorVehiculo.ListarVehiculosDisponiblesPorTipo(idEmpresa, idTipoVehiculo);

                foreach (Vehiculo _veh in vehiculos)
                {
                    if (_veh.IdTipoVehiculo == idTipoVehiculo)
                    {
                        UbicacionVehiculo _ubicacion = this.UltimaUbicacion(idEmpresa, _veh.ID);
                        if (_ubicacion != null)
                        {
                            listado.Add(_ubicacion);
                        }
                    }
                }
            }

            return(listado);
        }
コード例 #3
0
        public Viaje CancelarViaje(int idUsuario)
        {
            //OBTENGO EL ULTIMO VIAJE DEL USUARIO
            var query = (from viaje in _viajes.AsQueryable <Viaje>()
                         where viaje.IdUsuario == idUsuario
                         orderby viaje.FechaInicio descending
                         select viaje).FirstOrDefault();

            //VERIFICO QUE EL ULTIMO VIAJE DEL USUARIO ESTE FINALIZADO
            if (query.Estado == "Pendiente")
            {
                //OBTENGO EL VEHICULO
                bl.VehiculoController controladorVehiculo = new bl.VehiculoController();
                var vehiculo = controladorVehiculo.ObtenerVehiculo(query.IdEmpresa, query.IdVehiculo);

                //MODIFICO ESTADO DEL VEHICULO
                vehiculo.Estado = "Disponible";
                controladorVehiculo.ModificarVehiculo(query.IdEmpresa, vehiculo);

                query.Estado = "Cancelado";

                //ZONA HORARIA MONTEVIDEO
                TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById("Montevideo Standard Time");
                DateTime     cstTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, cstZone);

                DateTime fechaReserva = query.FechaInicio;

                TimeSpan diferencia = cstTime.Subtract(fechaReserva);
                //DOY 3 MINUTOS PARA CANCELAR EL VIAJE SIN COBRAR
                if (diferencia.TotalMinutes >= 3)
                {
                    //SE LE COBRA LA TARIFA FIJA DEL VEHICULO
                    TipoVehiculoEmpresaController controladorTipoVehiculoEmpresa = new TipoVehiculoEmpresaController();
                    query.Precio = controladorTipoVehiculoEmpresa.ObtenerTarifaFijaTipoVehiculo(query.IdEmpresa, vehiculo.IdTipoVehiculo);

                    //OBTENGO COMISION A COBRARLE A LA EMPRESA
                    bl.EmpresaController controladorEmpresa = new EmpresaController();
                    var comisionEmpresa = controladorEmpresa.ObtenerComisionEmpresa(query.IdEmpresa);

                    var montoFinalEmpresa = Math.Round(query.Precio - (query.Precio * comisionEmpresa / 100), 2);

                    PagoEmpresa _pagoEmpresa = new PagoEmpresa
                    {
                        ViajeFinalizado = query,
                        Comision        = Math.Round((query.Precio - montoFinalEmpresa), 2),
                        Acreditado      = "NO",
                        CobroEmpresa    = montoFinalEmpresa
                    };

                    _pagoAEmpresas.InsertOne(_pagoEmpresa);


                    //ENVIO DE MAIL AL USUARIO

                    UsuarioController controladorUsuario = new UsuarioController();
                    var usuario = controladorUsuario.ObtenerUsuario(query.IdUsuario);

                    var apiKey = System.Environment.GetEnvironmentVariable("SENDGRID_APIKEY");
                    var client = new SendGridClient(apiKey);

                    var msg = new SendGridMessage();

                    msg.SetFrom(new EmailAddress("*****@*****.**", "Urban_Move"));

                    var recipients = new List <EmailAddress>
                    {
                        new EmailAddress(usuario.Email, usuario.Nombre),
                    };
                    msg.AddTos(recipients);

                    msg.SetSubject("Viaje Cancelado");

                    var body = "Estimado/a " + usuario.Nombre + " " + usuario.Apellido + "\n\nLe agradecemos su preferencia!! \n\n" +
                               "Al pasarse del tiempo permitido para Cancelar, se genero un costo de $ " + query.Precio.ToString() + ".\n" +
                               "Correspondiente a la tarifa fija del vehiculo reservado.\n\n" +
                               "Puede ingresar en el enlace a continuacion para abonar y poder seguir utilizando nuestros servicios.\n\n" +
                               "Gestion de Pago: http://urbanmove.azurewebsites.net/pagar \n\n" +
                               "Utilizar PayPal: http://urbanmove.azurewebsites.net/pay \n\n" +
                               "Lo saluda atentamente el equipo de Urban Move.";

                    msg.AddContent(MimeType.Text, body);

                    var response = client.SendEmailAsync(msg);
                }

                //GRABO LOS CAMBIOS EN EL VIAJE
                this.Update(query.InternalId, query);

                return(query);
            }
            else
            {
                return(null);
            }
        }
コード例 #4
0
        public Viaje Create(Viaje viaje)
        {
            UsuarioController controladorUsuario = new UsuarioController();
            var usuario = controladorUsuario.ObtenerUsuario(viaje.IdUsuario);

            if (usuario != null)
            {
                String _puedeReservar = this.PuedeReservar(viaje.IdUsuario);

                if (_puedeReservar == "OK")
                {
                    VehiculoController controladorVehiculo = new VehiculoController();
                    dal.Vehiculo       _vehiculo           = controladorVehiculo.ObtenerVehiculo(viaje.IdEmpresa, viaje.IdVehiculo);

                    if (_vehiculo.Estado == "Disponible")
                    {
                        //OBTENGO EL HORARIO DESDE TIPOVEHICULO EMPRESA
                        TipoVehiculoEmpresaController controladorTipoVehiculo = new TipoVehiculoEmpresaController();
                        dal.TipoVehiculoEmpresa       _tipoVehiculoEmp        = controladorTipoVehiculo.ObtenerTipoDeVehiculo(viaje.IdEmpresa, _vehiculo.IdTipoVehiculo);

                        TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById("Montevideo Standard Time");
                        DateTime     cstTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, cstZone);

                        //COMPRUEBO QUE LA HORA ESTE COMPRENDIDA EN LA DEL VEHICULO
                        if ((_tipoVehiculoEmp.HorarioInicio <= cstTime.Hour) && (cstTime.Hour <= _tipoVehiculoEmp.HorarioFin))
                        {
                            _vehiculo.Estado  = "Ocupado";
                            viaje.FechaInicio = cstTime;
                            Random rnd = new Random();
                            viaje.CodigoReserva = rnd.Next(1000, 9999).ToString();
                            viaje.Estado        = "Pendiente";
                            viaje.Precio        = 0;
                            viaje.Pago          = "NO";
                            viaje.Puntuacion    = 0;
                            viaje.Comentario    = "";

                            _viajes.InsertOne(viaje);
                            controladorVehiculo.ModificarVehiculo(viaje.IdEmpresa, _vehiculo);

                            return(viaje);
                        }
                        else
                        {
                            viaje.Estado = "2";
                            return(viaje);
                        }
                    }
                    else
                    {
                        viaje.Estado = "1";
                        return(viaje);
                    }
                }
                else if (_puedeReservar == "Pago Pendiente")
                {
                    viaje.Estado = "3";
                    return(viaje);
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                viaje.Estado = "4";
                return(viaje);
            }
        }