public IActionResult Delete([FromQuery] int idEmpresa, int idTipoDeVehiculo) { bl.TipoVehiculoEmpresaController controlador = new bl.TipoVehiculoEmpresaController(); try { controlador.EliminarTipoDeVehiculo(idEmpresa, idTipoDeVehiculo); return(Ok()); } catch (Exception) { return(NotFound("No existe el tipo de vehiculo.")); } }
public IActionResult List([FromQuery] int idEmpresa) { bl.TipoVehiculoEmpresaController controlador = new bl.TipoVehiculoEmpresaController(); var _tiposDeVehiculo = controlador.ListarTiposDeVehiculo(idEmpresa); if (_tiposDeVehiculo != null) { return(Ok(_tiposDeVehiculo)); } else { return(NotFound("No existe la Empresa.")); } }
public IActionResult Get([FromQuery] int idEmpresa, int idTipoDeVehiculo) { bl.TipoVehiculoEmpresaController controlador = new bl.TipoVehiculoEmpresaController(); var tipoDeVehiculo = controlador.ObtenerTipoDeVehiculo(idEmpresa, idTipoDeVehiculo); if (tipoDeVehiculo == null) { return(NotFound("No existe el tipo de vehiculo.")); } else { return(Ok(new { tipoDeVehiculo.ID, tipoDeVehiculo.Nombre, tipoDeVehiculo.TarifaFija, tipoDeVehiculo.TarifaPorKm, tipoDeVehiculo.TarifaPorMinuto, tipoDeVehiculo.HorarioInicio, tipoDeVehiculo.HorarioFin })); } }
public IActionResult Post([FromQuery] int idEmpresa, [FromBody] TipoVehiculoEmpresa tipoDeVehiculo) { string mensaje; try { bl.TipoVehiculoEmpresaController controlador = new bl.TipoVehiculoEmpresaController(); mensaje = controlador.AltaTipoDeVehiculo(idEmpresa, tipoDeVehiculo); if (mensaje == "OK") { return(Ok(new { result = true, message = "Tipo de vehiculo creado correctamente" })); } else { return(Ok(new { result = false, message = mensaje })); } } catch (Exception e) { return(Ok(new { result = false, message = e.StackTrace })); } }
public IActionResult Update([FromQuery] int idEmpresa, [FromBody] TipoVehiculoEmpresa tipoVehiculoEmpresa) { string mensaje; bl.TipoVehiculoEmpresaController controladorTipoDeVehiculoEmpresa = new bl.TipoVehiculoEmpresaController(); try { mensaje = controladorTipoDeVehiculoEmpresa.ModificarTipoDeVehiculoEmpresa(idEmpresa, tipoVehiculoEmpresa); if (mensaje == "OK") { return(Ok(new { result = true, message = "Tipo de vehiculo modificado correctamente" })); } else { return(Ok(new { result = false, message = mensaje })); } } catch (Exception ex) { return(NotFound(ex.Message)); } }
public string FinalizarViaje(int idEmpresa, int idVehiculo, string codigo) { string mensaje; //OBTENGO EL VIAJE var query = (from viaje in _viajes.AsQueryable <Viaje>() where viaje.IdVehiculo == idVehiculo && viaje.IdEmpresa == idEmpresa && viaje.CodigoReserva == codigo select viaje).First(); if ((query != null) && (query.Estado == "En Curso")) { //ULTIMA UBICACION DEL VEHICULO //UbicacionController controladorUbicacion = new UbicacionController(); //var ultUbicacionVehiculo = controladorUbicacion.UltimaUbicacion(idVehiculo, idEmpresa); var ultUbicacionVehiculo = (from ubicacion in _ubicacionesVehiculos.AsQueryable <UbicacionVehiculo>() where ubicacion.IdVehiculo == idVehiculo && ubicacion.IdEmpresa == idEmpresa orderby ubicacion.Fecha descending select ubicacion).FirstOrDefault(); //OBTENGO EL VEHICULO bl.VehiculoController controladorVehiculo = new bl.VehiculoController(); var vehiculo = controladorVehiculo.ObtenerVehiculo(idEmpresa, idVehiculo); //OBTENGO DATOS DEL TIPO DE VEHICULO PARA OBTENER ZONA bl.TipoVehiculoEmpresaController controladorTipoVehiculoEmpresa = new bl.TipoVehiculoEmpresaController(); var tipoVehiculoEmp = controladorTipoVehiculoEmpresa.ObtenerTipoDeVehiculo(idEmpresa, vehiculo.IdTipoVehiculo); //OBTENGO LA ZONA DEL VEHICULO //ZonaVehiculoController controladorZona = new ZonaVehiculoController(); //var zonaTipoVehiculo = controladorZona.ZonaVehiculoEmpresa(idEmpresa, tipoVehiculoEmp.ID); var zonaTipoVehiculo = (from zona in _zonas.AsQueryable <ZonaVehiculo>() where zona.IdEmpresa == idEmpresa && zona.IdTipoVehiculo == tipoVehiculoEmp.ID orderby zona.Fecha descending select zona).FirstOrDefault(); //VERIFICO QUE ESTE DENTRO DE LA ZONA if (this.EstaEnLaZona(zonaTipoVehiculo, ultUbicacionVehiculo)) { //ZONA HORARIA MONTEVIDEO TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById("Montevideo Standard Time"); DateTime cstTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, cstZone); query.FechaFin = cstTime; query.Estado = "Finalizado"; //MODIFICO ESTADO DEL VEHICULO vehiculo.Estado = "Disponible"; controladorVehiculo.ModificarVehiculo(idEmpresa, vehiculo); //CALCULAR PRECIO FINAL DEL VIAJE /* bl.TipoVehiculoEmpresaController controladorTipoVehiculoEmpresa = new bl.TipoVehiculoEmpresaController(); * var tipoVehiculoEmp = controladorTipoVehiculoEmpresa.ObtenerTipoDeVehiculo(idEmpresa, vehiculo.IdTipoVehiculo);*/ //EMPIEZO SUMANDO LA TARIFA FIJA DEL TIPOVEHICULOEMPRESA //var precioFinalViaje = tipoVehiculoEmp.TarifaFija; query.Precio = tipoVehiculoEmp.TarifaFija; //CALCULO TIEMPO DE VIAJE EN MINUTOS var difMinutos = query.FechaFin - query.FechaInicio; query.Precio += Math.Round(Convert.ToDouble(difMinutos.TotalMinutes * tipoVehiculoEmp.TarifaPorMinuto), 2); //CALCULO RECORRIDO DEL VIAJE var trayectoria = (from ubicacion in _ubicacionesVehiculos.AsQueryable <UbicacionVehiculo>() where ubicacion.IdVehiculo == idVehiculo && ubicacion.IdEmpresa == idEmpresa && ubicacion.Fecha >= query.FechaInicio && ubicacion.Fecha <= query.FechaFin orderby ubicacion.Fecha select ubicacion).ToList(); int numerador = 0; double diferenciaLat = 0; double diferenciaLng = 0; double distancia = 0; foreach (UbicacionVehiculo ubicacion in trayectoria) { //(Fórmula de Haversine) PARA EL CALCULO DE DISTANCIAS ENTRE COORDENADAS if (numerador < (trayectoria.Count() - 1)) { diferenciaLat = Convert.ToSingle(Math.PI / 180) * (Convert.ToDouble(ubicacion.Coordenadas.Lat - trayectoria[numerador + 1].Coordenadas.Lat)); diferenciaLng = Convert.ToSingle(Math.PI / 180) * (Convert.ToDouble(ubicacion.Coordenadas.Lng - trayectoria[numerador + 1].Coordenadas.Lng)); var a = Math.Pow(Math.Sin(diferenciaLat / 2), 2) + Math.Cos(Convert.ToDouble(Math.PI / 180) * ubicacion.Coordenadas.Lat) * Math.Cos(Convert.ToDouble(Math.PI / 180) * trayectoria[numerador + 1].Coordenadas.Lat) * Math.Pow(Math.Sin(diferenciaLng / 2), 2); var d = 1 - a; var c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(d)); distancia = 6378.0F * Convert.ToSingle(c); numerador++; } } query.Precio += Math.Round(distancia * tipoVehiculoEmp.TarifaPorKm, 2); query.Precio = Math.Round(query.Precio, 2); //GRABO EL PRECIO DEL VIAJE this.Update(query.InternalId, query); //OBTENGO COMISION A COBRARLE A LA EMPRESA bl.EmpresaController controladorEmpresa = new EmpresaController(); var comisionEmpresa = controladorEmpresa.ObtenerComisionEmpresa(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); //DEVUELVO EN EL MENSAJE EL PRECIO DEL VIAJE mensaje = query.Precio.ToString(); try { //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), //new EmailAddress("*****@*****.**", "Urban_Move"), }; msg.AddTos(recipients); msg.SetSubject("Viaje Finalizado"); var body = "Estimado/a " + usuario.Nombre + " " + usuario.Apellido + "\n\nLe agradecemos su preferencia!! \n\n" + "El costo de su viaje asciende a $ " + query.Precio.ToString() + ".\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); } catch (Exception e) { mensaje = e.Message; } } else { mensaje = "Z"; } } else if (query == null) { mensaje = "V"; } else { mensaje = "C"; } return(mensaje); }