protected override Task <AuthenticateResult> HandleAuthenticateAsync() { // Guarda el request en el Startup Startup.Request = Request; // Get Authorization header value if (!Request.Headers.TryGetValue(HeaderNames.Authorization, out var authorization)) { return(Task.FromResult(AuthenticateResult.Fail("No ha iniciado sesión."))); } string token = authorization.FirstOrDefault(); RespuestaSimple respuesta; using (var db = new Volquex.Models.VolquexDB()) respuesta = new Services.Sesiones(db).Autorizar(token); // Verifica que este token esté presente en la tabla SESIONES if (respuesta.Codigo != 200) { return(Task.FromResult(AuthenticateResult.Fail(respuesta.Texto))); } // Si todo está ok, asigna el usuario y retorna Startup.Usuario = respuesta.Contenido.Usuario; var identities = new List <ClaimsIdentity> { new ClaimsIdentity("custom auth type") }; var ticket = new AuthenticationTicket(new ClaimsPrincipal(identities), Options.Scheme); // Grabo el token globalmente Startup.TokenSesion = token; return(Task.FromResult(AuthenticateResult.Success(ticket))); }
public RespuestaSimple CambiarEstado(decimal viajeId, string estado) { var q = db.Viajes .Where(p => p.ViajeId == viajeId) .Set(p => p.ViaEst, estado); // Si es FINALIZADO, actualizo la hora de llegada también if (estado == "FIN") { q = q.Set(p => p.ViaFchHrLlegada, DateTime.Now); } q.Update(); // Cambia el estado a las ofertas var r = db.Viajes_Volq .Where(p => p.ViajeId == viajeId) .Set(p => p.ViaVolqEstViaje, estado); r.Update(); string obs = ""; // Si el estado es FINALIZADO if (estado == "FIN" || estado == "CAN") { // Cambia el estado a la volqueta también CambiarEstadoVolqueta(viajeId, "LIB"); // Obtengo los datos del viaje var viaje = Mostrar(viajeId); // Si es FINALIZADO notifico al cliente if (estado == "FIN") { var mensaje = new Services.Parametros(db).ObtenerValor("MSG-VIAJE-FINALIZADO"); var titulo = new Services.Parametros(db).ObtenerValor("MSG-VIAJE-FINALIZADO-TITULO"); new Services.Notificaciones(db).EnviarNotificacion(viaje.ClienteId, viajeId, titulo, mensaje, Accion.ViajeFinalizado); } // Si es CANCELADO if (estado == "CAN") { // Obtengo el tipo de usuario que cancela var usuarioCancela = new Services.Sesiones(db).Mostrar().fkusuarios1; // Si es CLIENTE, notifico al conductor if (usuarioCancela.UsuTipo == "CLI") { var mensaje = new Services.Parametros(db).ObtenerValor("MSG-CLIENTE-CANCELA"); var titulo = new Services.Parametros(db).ObtenerValor("MSG-CLIENTE-CANCELA-TITULO"); new Services.Notificaciones(db).EnviarNotificacion(viaje.ConductorId.GetValueOrDefault(), viajeId, titulo, mensaje, Accion.ViajeCancelado); obs = "Cancelado por el cliente"; } else { var mensaje = new Services.Parametros(db).ObtenerValor("MSG-CONDUCTOR-CANCELA"); var titulo = new Services.Parametros(db).ObtenerValor("MSG-CONDUCTOR-CANCELA-TITULO"); new Services.Notificaciones(db).EnviarNotificacion(viaje.ClienteId, viajeId, titulo, mensaje, Accion.ViajeCancelado); obs = "Cancelado por el conductor"; } } } // Genera la bitácora new Services.Viajes_Bit(db).Insertar(viajeId, estado, obs); return(new RespuestaSimple()); }