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); }
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); }
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); } }
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); } }