public String IniciarViaje(int idEmpresa, int idVehiculo, string codigo) { String mensaje = " "; var query = (from viaje in _viajes.AsQueryable <Viaje>() where viaje.IdVehiculo == idVehiculo && viaje.IdEmpresa == idEmpresa && viaje.CodigoReserva == codigo select viaje).First(); if (query != null) { TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById("Montevideo Standard Time"); DateTime cstTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, cstZone); DateTime fechaReserva = query.FechaInicio; TimeSpan diferencia = cstTime.Subtract(fechaReserva); if (diferencia.TotalMinutes <= 5) { if (query.Estado == "Pendiente") { query.FechaInicio = cstTime; query.Estado = "En Curso"; this.Update(query.InternalId, query); mensaje = "OK"; } else if (query.Estado == "Finalizado") { mensaje = "El viaje ya fue Finalizado."; } else if (query.Estado == "En Curso") { mensaje = "El viaje ya esta en Curso."; } else { mensaje = "El viaje fue Cancelado."; } } else { mensaje = "Su tiempo de reserva expiro por " + diferencia.Minutes + " minutos."; VehiculoController controladorVehiculo = new VehiculoController(); dal.Vehiculo _vehiculo = controladorVehiculo.ObtenerVehiculo(idEmpresa, idVehiculo); _vehiculo.Estado = "Disponible"; controladorVehiculo.ModificarVehiculo(idEmpresa, _vehiculo); query.Estado = "Cancelado"; this.Update(query.InternalId, query); } } return(mensaje); }
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); } }