Exemplo n.º 1
0
        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)));
        }
Exemplo n.º 2
0
        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());
        }