public string ModificarAdministrador(int _idEmpresa, UsuarioAdministrador _usuario) { EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(_idEmpresa); string mensaje = ""; if (empresa != null) { var optionsBuilder = new DbContextOptionsBuilder <MyContextEmpresa>(); optionsBuilder.UseSqlServer(empresa.Conexion); using (var ctx = new MyContextEmpresa(optionsBuilder.Options)) { var admin = ctx.Administradores.Find(_usuario.ID); if (admin != null) { admin.Nombre = _usuario.Nombre; admin.Apellido = _usuario.Apellido; admin.Email = _usuario.Email; ctx.SaveChanges(); mensaje = "OK"; } else { mensaje = "No existe el Administrador"; } } } else { mensaje = "No existe la Empresa"; } return(mensaje); }
public List <DTComision> ComisionesCobradasPorEmpresa() { EmpresaController controladorEmpresa = new EmpresaController(); var empresas = controladorEmpresa.ListarEmpresas(); List <DTComision> listado = new List <DTComision>(); foreach (Empresa _empresa in empresas) { DTComision _dTComision = new DTComision(); double comision = 0; var query = (from pago in _pagoAEmpresas.AsQueryable <PagoEmpresa>() where pago.ViajeFinalizado.Pago == "SI" && pago.ViajeFinalizado.IdEmpresa == _empresa.ID select pago).ToList(); foreach (PagoEmpresa pago in query) { comision += pago.Comision; } _dTComision.NombreEmpresa = _empresa.Nombre; _dTComision.Comision = Math.Round(comision, 2); listado.Add(_dTComision); } return(listado); }
public string SincronizarVehiculoDispositivo(int _idEmpresa, int _idVehiculo, string _imeiDispositivo) { EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(_idEmpresa); string mensaje; if (empresa != null) { var optionsBuilder = new DbContextOptionsBuilder <MyContextEmpresa>(); optionsBuilder.UseSqlServer(empresa.Conexion); using (var ctx = new MyContextEmpresa(optionsBuilder.Options)) { var vehiculo = ctx.Vehiculos.Find(_idVehiculo); if (vehiculo != null) { vehiculo.Estado = "Disponible"; vehiculo.ImeiDispositivo = _imeiDispositivo; mensaje = "OK"; ctx.SaveChanges(); } else { mensaje = "No existe el Vehiculo."; } } } else { mensaje = "No existe la Empresa."; } return(mensaje); }
public bool LoginAdministradorEmpresa(int _idEmpresa, string email, string password) { EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(_idEmpresa); var optionsBuilder = new DbContextOptionsBuilder <MyContextEmpresa>(); optionsBuilder.UseSqlServer(empresa.Conexion); using (var ctx = new MyContextEmpresa(optionsBuilder.Options)) { string hash = String.Empty; using (var sha256 = SHA256.Create()) { var hashedBytes = sha256.ComputeHash(Encoding.UTF8.GetBytes(password)); hash = BitConverter.ToString(hashedBytes).Replace("-", "").ToLower(); } var usuario = (from u in ctx.Administradores where u.Email == email && u.Password == hash select u).FirstOrDefault <UsuarioAdministrador>(); if (usuario != null) { return(true); } else { return(false); } } }
public int CantidadVehiculosPorTipo(int _idEmpresa, int _idTipoVehiculo) { int cantidad; EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(_idEmpresa); if (empresa != null) { var optionsBuilder = new DbContextOptionsBuilder <MyContextEmpresa>(); optionsBuilder.UseSqlServer(empresa.Conexion); using (var ctx = new MyContextEmpresa(optionsBuilder.Options)) { var _vehiculos = (from v in ctx.Vehiculos where v.IdTipoVehiculo == _idTipoVehiculo orderby v.IdTipoVehiculo select v).ToList(); cantidad = _vehiculos.Count(); } } else { cantidad = 0; } return(cantidad); }
public int ObtenerComisionEmpresa(int _idEmpresa) { EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(_idEmpresa); return(empresa.Comision); }
public List <DTCantVehTipo> ListarVehiculosTotalesPorTipo() { List <DTCantVehTipo> listado = new List <DTCantVehTipo>(); TipoVehiculoController controladorTipoVehiculo = new TipoVehiculoController(); var tiposVehiculos = controladorTipoVehiculo.ListarTiposDeVehiculo(); EmpresaController controladorEmpresa = new EmpresaController(); var empresas = controladorEmpresa.ListarEmpresasActivas(); foreach (TipoVehiculo _tipoVeh in tiposVehiculos) { DTCantVehTipo dtCantTipoVehiculo = new DTCantVehTipo(); dtCantTipoVehiculo.NombreTipo = _tipoVeh.Nombre; foreach (Empresa _emp in empresas) { dtCantTipoVehiculo.Cantidad += this.CantidadVehiculosPorTipo(_emp.ID, _tipoVeh.ID); } listado.Add(dtCantTipoVehiculo); } return(listado); }
public AdministradorInicialEmpresa ObtenerAdministradorInicial(int _idEmpresa) { EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(_idEmpresa); return(empresa.AdministradorInicial); }
public List <UbicacionVehiculo> ListaUbicacionVehiculosDisponibles() { EmpresaController controladorEmpresa = new EmpresaController(); VehiculoController controladorVehiculo = new VehiculoController(); List <dal.Empresa> empresas = controladorEmpresa.ListarEmpresas(); List <UbicacionVehiculo> listado = new List <UbicacionVehiculo>(); foreach (Empresa _emp in empresas) { List <Vehiculo> vehiculos = controladorVehiculo.ListarVehiculosDisponibles(_emp.ID); foreach (Vehiculo _veh in vehiculos) { UbicacionVehiculo _ubicacion = this.UltimaUbicacion(_emp.ID, _veh.ID); if (_ubicacion != null) { listado.Add(_ubicacion); } } } return(listado); }
public DTVehiculosListado ListarVehiculosPaginado(int _idEmpresa, int pagina, int cantidad) { EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(_idEmpresa); DTVehiculosListado paginado = new DTVehiculosListado(); int calculo = cantidad * pagina; if (empresa != null) { var optionsBuilder = new DbContextOptionsBuilder <MyContextEmpresa>(); optionsBuilder.UseSqlServer(empresa.Conexion); using (var ctx = new MyContextEmpresa(optionsBuilder.Options)) { var _vehiculos = ctx.Vehiculos.ToList(); paginado.CantidadVehiculos = _vehiculos.Count(); //var totalPaginas = Math.Round(paginado.CantidadVehiculos / Convert.ToDouble(cantidad)); //paginado.TotalPaginas = Convert.ToInt32(totalPaginas); //REDONDEO BIEN HACIA ARRIBA var totalPaginas = paginado.CantidadVehiculos / Convert.ToDouble(cantidad); paginado.TotalPaginas = Convert.ToInt32(Math.Ceiling(totalPaginas)); _vehiculos = _vehiculos.Skip(calculo).Take(cantidad).ToList(); paginado.Vehiculos = _vehiculos; return(paginado); } } else { return(null); } }
public string AltaTipoDeVehiculo(int _idEmpresa, TipoVehiculoEmpresa _tipoDeVehiculo) { string mensaje; TipoVehiculoController controladorTipoVehiculo = new TipoVehiculoController(); var tipoVehiculo = controladorTipoVehiculo.ObtenerTipoVehiculoPorNombre(_tipoDeVehiculo.Nombre); if (tipoVehiculo != null) { _tipoDeVehiculo.Nombre = tipoVehiculo.Nombre; EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(_idEmpresa); var optionsBuilder = new DbContextOptionsBuilder <MyContextEmpresa>(); optionsBuilder.UseSqlServer(empresa.Conexion); using (var ctx = new MyContextEmpresa(optionsBuilder.Options)) { ctx.TiposDeVehiculo.Add(_tipoDeVehiculo); ctx.SaveChanges(); } mensaje = "OK"; } else { mensaje = "No existe tipo de vehiculo"; } return(mensaje); }
public List <DTPuntuacion> PuntuacionesPorEmpresa() { //PRIMERO TRAIGO TODOS LOS ID DE EMPRESAS EmpresaController controladorEmpresa = new EmpresaController(); var empresas = controladorEmpresa.ListarEmpresas(); List <DTPuntuacion> listado = new List <DTPuntuacion>(); foreach (Empresa empresa in empresas) { DTPuntuacion dTPunt = new DTPuntuacion(); int sumaPuntuaciones = 0; int contador = 0; double promedio; var query = (from pago in _pagoAEmpresas.AsQueryable <PagoEmpresa>() where pago.ViajeFinalizado.Puntuacion != 0 && pago.ViajeFinalizado.IdEmpresa == empresa.ID select pago).ToList(); foreach (PagoEmpresa pagoEmpresa in query) { sumaPuntuaciones += pagoEmpresa.ViajeFinalizado.Puntuacion; contador++; } dTPunt.NombreEmpresa = empresa.Nombre; promedio = (double)sumaPuntuaciones / (double)contador; dTPunt.PromedioPuntuacion = Math.Round(promedio, 1); listado.Add(dTPunt); } return(listado); }
public DTCantPuntEmpresa CantPuntuacionPorEmpresa(int idEmpresa) { DTCantPuntEmpresa dTCantPunt = new DTCantPuntEmpresa(); List <DTCantPunt> listado = new List <DTCantPunt>(); EmpresaController controladorEmpresa = new EmpresaController(); dTCantPunt.NombreEmpresa = controladorEmpresa.ObtenerNombreEmpresa(idEmpresa); for (int i = 0; i <= 5; i++) { DTCantPunt dTCant = new DTCantPunt(); var query = (from pago in _pagoAEmpresas.AsQueryable <PagoEmpresa>() where pago.ViajeFinalizado.Pago == "SI" && pago.ViajeFinalizado.IdEmpresa == idEmpresa && pago.ViajeFinalizado.Puntuacion == i select pago).ToList(); dTCant.Cantidad = query.Count(); dTCant.Puntaje = i; listado.Add(dTCant); } dTCantPunt.Puntajes = listado; return(dTCantPunt); }
public List <DTCantViajesEmpresas> ListaViajesEmpresaCantidad() { List <DTCantViajesEmpresas> listado = new List <DTCantViajesEmpresas>(); EmpresaController controladorEmpresa = new EmpresaController(); int contadorViajes = 0; int idEmpresa = 0; int contadorTotal = 0; var query = (from viaje in _viajes.AsQueryable <Viaje>() orderby viaje.IdEmpresa select viaje).ToList <Viaje>(); int totalViajes = query.Count(); if (query != null) { foreach (Viaje _viaje in query) { contadorTotal++; contadorViajes++; if (idEmpresa != _viaje.IdEmpresa || (contadorTotal == totalViajes)) { //CUANDO ES EL PRIMERO Y UNICO O EL ULTIMO DE LA LISTA if ((contadorTotal + 1) > totalViajes) { DTCantViajesEmpresas empresaNueva = new DTCantViajesEmpresas(); empresaNueva.IdEmpresa = _viaje.IdEmpresa; empresaNueva.Nombre = controladorEmpresa.ObtenerNombreEmpresa(_viaje.IdEmpresa); empresaNueva.CantidadViajes = contadorViajes; listado.Add(empresaNueva); contadorViajes = 0; } else if (contadorViajes > 1) { DTCantViajesEmpresas empresaNueva = new DTCantViajesEmpresas(); empresaNueva.IdEmpresa = idEmpresa; empresaNueva.Nombre = controladorEmpresa.ObtenerNombreEmpresa(idEmpresa); empresaNueva.CantidadViajes = contadorViajes; listado.Add(empresaNueva); contadorViajes = 0; } idEmpresa = _viaje.IdEmpresa; } /* else * { * contadorViajes++; * } */ } } else { listado = null; } return(listado); }
public void ModificarVehiculo(int _idEmpresa, Vehiculo _vehiculo) { EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(_idEmpresa); var optionsBuilder = new DbContextOptionsBuilder <MyContextEmpresa>(); optionsBuilder.UseSqlServer(empresa.Conexion); using (var ctx = new MyContextEmpresa(optionsBuilder.Options)) { var _vehiculoAModificar = (ctx.Vehiculos.SingleOrDefault(v => v.ID == _vehiculo.ID)); if (_vehiculoAModificar != null) { _vehiculoAModificar.Codigo = _vehiculo.Codigo; _vehiculoAModificar.Estado = _vehiculo.Estado; //_vehiculoAModificar.TipoVehiculo.HorarioInicio = _vehiculo.TipoVehiculo.HorarioInicio; //_vehiculoAModificar.TipoVehiculo.HorarioFin = _vehiculo.TipoVehiculo.HorarioFin; //_vehiculoAModificar.TipoVehiculo.TarifaFija = _vehiculo.TipoVehiculo.TarifaFija; //_vehiculoAModificar.TipoVehiculo.TarifaPorKm = _vehiculo.TipoVehiculo.TarifaPorKm; //_vehiculoAModificar.TipoVehiculo.TarifaPorMinuto = _vehiculo.TipoVehiculo.TarifaPorMinuto; ctx.SaveChanges(); } } }
public List <DTCantViajesEmpresas> ListaViajesPorEmpresaEstado(int idEmpresa) { List <DTCantViajesEmpresas> listado = new List <DTCantViajesEmpresas>(); EmpresaController controladorEmpresa = new EmpresaController(); string nombreEmpresa = controladorEmpresa.ObtenerNombreEmpresa(idEmpresa); int contadorViajes = 0; int contadorTotal = 0; string estadoViaje = " "; var query = (from viaje in _viajes.AsQueryable <Viaje>() where viaje.IdEmpresa == idEmpresa orderby viaje.Estado select viaje).ToList <Viaje>(); int totalViajes = query.Count(); if (query != null) { foreach (Viaje _viaje in query) { contadorTotal++; contadorViajes++; if (estadoViaje != _viaje.Estado || (contadorTotal == totalViajes)) { //CUANDO ES EL PRIMERO Y UNICO O EL ULTIMO DE LA LISTA if ((contadorTotal + 1) > totalViajes) { DTCantViajesEmpresas empresaNueva = new DTCantViajesEmpresas(); empresaNueva.IdEmpresa = idEmpresa; empresaNueva.Estado = _viaje.Estado; empresaNueva.Nombre = nombreEmpresa; empresaNueva.CantidadViajes = contadorViajes; listado.Add(empresaNueva); contadorViajes = 0; } else if (contadorViajes > 1) { DTCantViajesEmpresas empresaNueva = new DTCantViajesEmpresas(); empresaNueva.IdEmpresa = idEmpresa; empresaNueva.Estado = estadoViaje; empresaNueva.Nombre = nombreEmpresa; empresaNueva.CantidadViajes = contadorViajes; listado.Add(empresaNueva); contadorViajes = 0; } estadoViaje = _viaje.Estado; } } } else { listado = null; } return(listado); }
public void AgregarVehiculo(int _idEmpresa, Vehiculo _vehiculo) { EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(_idEmpresa); var optionsBuilder = new DbContextOptionsBuilder <MyContextEmpresa>(); optionsBuilder.UseSqlServer(empresa.Conexion); using (var ctx = new MyContextEmpresa(optionsBuilder.Options)) { ctx.Vehiculos.Add(_vehiculo); ctx.SaveChanges(); } }
public List <UsuarioAdministrador> ListarAdministradores(int _idEmpresa) { EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(_idEmpresa); var optionsBuilder = new DbContextOptionsBuilder <MyContextEmpresa>(); optionsBuilder.UseSqlServer(empresa.Conexion); using (var ctx = new MyContextEmpresa(optionsBuilder.Options)) { var _administradores = ctx.Administradores.ToList(); return(_administradores); } }
public TipoVehiculoEmpresa ObtenerTipoDeVehiculoPorNombre(int _idEmpresa, string _nombre) { EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(_idEmpresa); var optionsBuilder = new DbContextOptionsBuilder <MyContextEmpresa>(); optionsBuilder.UseSqlServer(empresa.Conexion); using (var ctx = new MyContextEmpresa(optionsBuilder.Options)) { var tipo = (from u in ctx.TiposDeVehiculo where u.Nombre == _nombre select u).FirstOrDefault <TipoVehiculoEmpresa>(); return(tipo); } }
public void EliminarVehiculo(int _idEmpresa, int _idVehiculo) { EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(_idEmpresa); var optionsBuilder = new DbContextOptionsBuilder <MyContextEmpresa>(); optionsBuilder.UseSqlServer(empresa.Conexion); using (var ctx = new MyContextEmpresa(optionsBuilder.Options)) { var _vehiculoABorrar = (ctx.Vehiculos.SingleOrDefault(v => v.ID == _idVehiculo)); if (_vehiculoABorrar != null) { ctx.Remove(_vehiculoABorrar); ctx.SaveChanges(); } } }
public int ObtenerTarifaFijaTipoVehiculo(int idEmpresa, int idTipoVehiculo) { EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(idEmpresa); if (empresa != null) { var optionsBuilder = new DbContextOptionsBuilder <MyContextEmpresa>(); optionsBuilder.UseSqlServer(empresa.Conexion); using (var ctx = new MyContextEmpresa(optionsBuilder.Options)) { var tipoDeVehiculo = ctx.TiposDeVehiculo.Find(idTipoVehiculo); return(tipoDeVehiculo.TarifaFija); } } else { return(0); } }
public List <Vehiculo> ListarVehiculosDisponibles(int _idEmpresa) { EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(_idEmpresa); var optionsBuilder = new DbContextOptionsBuilder <MyContextEmpresa>(); optionsBuilder.UseSqlServer(empresa.Conexion); List <Vehiculo> listado = new List <Vehiculo>(); using (var ctx = new MyContextEmpresa(optionsBuilder.Options)) { listado = (from u in ctx.Vehiculos where u.Estado == "Disponible" select u).ToList(); return(listado); } }
public Vehiculo ObtenerVehiculo(int _idEmpresa, int _idVehiculo) { EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(_idEmpresa); if (empresa != null) { var optionsBuilder = new DbContextOptionsBuilder <MyContextEmpresa>(); optionsBuilder.UseSqlServer(empresa.Conexion); using (var ctx = new MyContextEmpresa(optionsBuilder.Options)) { var vehiculo = ctx.Vehiculos.Find(_idVehiculo); return(vehiculo); } } else { return(null); } }
public void AgregarAdministrador(int _idEmpresa, UsuarioAdministrador _usuario) { EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(_idEmpresa); var optionsBuilder = new DbContextOptionsBuilder <MyContextEmpresa>(); optionsBuilder.UseSqlServer(empresa.Conexion); using (var ctx = new MyContextEmpresa(optionsBuilder.Options)) { using (var sha256 = SHA256.Create()) { var hashedBytes = sha256.ComputeHash(Encoding.UTF8.GetBytes(_usuario.Password)); var hash = BitConverter.ToString(hashedBytes).Replace("-", "").ToLower(); _usuario.Password = hash; } ctx.Administradores.Add(_usuario); ctx.SaveChanges(); } }
public string EliminarAdministrador(int _idEmpresa, int _idUsuario) { EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(_idEmpresa); string mensaje = ""; if (empresa != null) { var optionsBuilder = new DbContextOptionsBuilder <MyContextEmpresa>(); optionsBuilder.UseSqlServer(empresa.Conexion); using (var ctx = new MyContextEmpresa(optionsBuilder.Options)) { var admin = ctx.Administradores.Find(_idUsuario); ctx.Administradores.Remove(admin); ctx.SaveChanges(); mensaje = "OK"; } } return(mensaje); }
public List <Vehiculo> ListarVehiculos(int _idEmpresa) { EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(_idEmpresa); if (empresa != null) { var optionsBuilder = new DbContextOptionsBuilder <MyContextEmpresa>(); optionsBuilder.UseSqlServer(empresa.Conexion); using (var ctx = new MyContextEmpresa(optionsBuilder.Options)) { var _vehiculos = ctx.Vehiculos.ToList(); return(_vehiculos); } } else { return(null); } }
public List <TipoVehiculoEmpresa> ListarTiposDeVehiculo(int _idEmpresa) { EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(_idEmpresa); if (empresa != null) { var optionsBuilder = new DbContextOptionsBuilder <MyContextEmpresa>(); optionsBuilder.UseSqlServer(empresa.Conexion); using (var ctx = new MyContextEmpresa(optionsBuilder.Options)) { var _tiposDeDehiculo = ctx.TiposDeVehiculo.ToList(); return(_tiposDeDehiculo); } } else { return(null); } }
public string ModificarTipoDeVehiculoEmpresa(int idEmpresa, TipoVehiculoEmpresa _tipoVehiculoEmpresa) { string mensaje; EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(idEmpresa); if (empresa != null) { var optionsBuilder = new DbContextOptionsBuilder <MyContextEmpresa>(); optionsBuilder.UseSqlServer(empresa.Conexion); using (var ctx = new MyContextEmpresa(optionsBuilder.Options)) { var tipoDeVehiculo = ctx.TiposDeVehiculo.Find(_tipoVehiculoEmpresa.ID); if (tipoDeVehiculo != null) { tipoDeVehiculo.Nombre = _tipoVehiculoEmpresa.Nombre; tipoDeVehiculo.TarifaFija = _tipoVehiculoEmpresa.TarifaFija; tipoDeVehiculo.TarifaPorKm = _tipoVehiculoEmpresa.TarifaPorKm; tipoDeVehiculo.TarifaPorMinuto = _tipoVehiculoEmpresa.TarifaPorMinuto; tipoDeVehiculo.HorarioInicio = _tipoVehiculoEmpresa.HorarioInicio; tipoDeVehiculo.HorarioFin = _tipoVehiculoEmpresa.HorarioFin; ctx.SaveChanges(); mensaje = "OK"; } else { mensaje = "No existe Tipo Vehiculo"; } } } else { mensaje = "No existe la Empresa"; } return(mensaje); }
public bool LoginAdministradorInicial(int _idEmpresa, string _email, string _password) { EmpresaController controladorEmpresa = new EmpresaController(); var empresa = controladorEmpresa.ObtenerEmpresa(_idEmpresa); var administradorInicial = empresa.AdministradorInicial; string hash = String.Empty; using (var sha256 = SHA256.Create()) { var hashedBytes = sha256.ComputeHash(Encoding.UTF8.GetBytes(_password)); hash = BitConverter.ToString(hashedBytes).Replace("-", "").ToLower(); } if (administradorInicial.Email == _email && administradorInicial.Password == hash) { return(true); } else { return(false); } }
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); } }