Beispiel #1
0
        private IEnumerable <SolicitudVacaciones> ObtenerSolicitudesPorFiltro(string filtrarPor, UserViewModel user, string fechaInicio, string fechaFinal)
        {
            if (filtrarPor == null)
            {
                return(solicitudService.ObtenerMisSolicitudes(user, fechaInicio, fechaFinal).ToList());
            }
            if (filtrarPor.Equals("funcionarios", StringComparison.OrdinalIgnoreCase))
            {
                if (!(user.Role.Name.Equals("director", StringComparison.OrdinalIgnoreCase) ||
                      user.Role.Name.Equals("recursos humanos", StringComparison.OrdinalIgnoreCase) ||
                      user.Role.Name.Equals("manager", StringComparison.OrdinalIgnoreCase)))
                {
                    throw new Exception("Rol inválido");
                }

                return(solicitudService.ObtenerSolicitudesFuncionarios(fechaInicio, fechaFinal).ToList());
            }

            if (filtrarPor.Equals("funcionariosporunidadtecnica", StringComparison.OrdinalIgnoreCase))
            {
                // El rol de funcionario es el unico que no puede ver
                // solicitudes de funcionarios dentro de una unidad tecnica especifica

                if (user.Role.Name.Equals("funcionario", StringComparison.OrdinalIgnoreCase))
                {
                    throw new Exception("Rol inválido");
                }

                return(solicitudService.ObtenerSolicitudesFuncionariosPorUnidad(fechaInicio, fechaFinal, user).ToList());
            }

            if (filtrarPor.Equals("jefaturas", StringComparison.OrdinalIgnoreCase))
            {
                if (!(user.Role.Name.Equals("director", StringComparison.OrdinalIgnoreCase) ||
                      user.Role.Name.Equals("recursos humanos", StringComparison.OrdinalIgnoreCase) ||
                      user.Role.Name.Equals("manager", StringComparison.OrdinalIgnoreCase)))
                {
                    throw new Exception("Rol inválido");
                }

                return(solicitudService.ObtenerSolicitudesJefaturas(fechaInicio, fechaFinal).ToList());
            }

            if (filtrarPor.Equals("recursoshumanos", StringComparison.OrdinalIgnoreCase))
            {
                if (!(user.Role.Name.Equals("director", StringComparison.OrdinalIgnoreCase) ||
                      user.Role.Name.Equals("recursos humanos", StringComparison.OrdinalIgnoreCase) ||
                      user.Role.Name.Equals("manager", StringComparison.OrdinalIgnoreCase)))
                {
                    throw new Exception("Rol inválido");
                }

                return(solicitudService.ObtenerSolicitudesRH(fechaInicio, fechaFinal).ToList());
            }

            if (filtrarPor.Equals("directorgeneral", StringComparison.OrdinalIgnoreCase))
            {
                if (!(user.Role.Name.Equals("director", StringComparison.OrdinalIgnoreCase) ||
                      user.Role.Name.Equals("recursos humanos", StringComparison.OrdinalIgnoreCase) ||
                      user.Role.Name.Equals("manager", StringComparison.OrdinalIgnoreCase)))
                {
                    throw new Exception("Rol inválido");
                }

                return(solicitudService.ObtenerSolicitudesDirectorGeneral(fechaInicio, fechaFinal).ToList());
            }

            if (filtrarPor.Equals("directoradministrativo", StringComparison.OrdinalIgnoreCase))
            {
                if (!(user.Role.Name.Equals("director", StringComparison.OrdinalIgnoreCase) ||
                      user.Role.Name.Equals("recursos humanos", StringComparison.OrdinalIgnoreCase) ||
                      user.Role.Name.Equals("manager", StringComparison.OrdinalIgnoreCase)))
                {
                    throw new Exception("Rol inválido");
                }

                return(solicitudService.ObtenerSolicitudesDirectorAdministrativo(fechaInicio, fechaFinal).ToList());
            }

            if (filtrarPor.Equals("todos", StringComparison.OrdinalIgnoreCase))
            {
                return(solicitudService.ObtenerTodasSolicitudesPorRol(fechaInicio, fechaFinal, user).ToList());
            }

            return(solicitudService.ObtenerMisSolicitudes(user, fechaInicio, fechaFinal));
        }