Esempio n. 1
0
        public string comprobarRoles(UsuariosSectores user, UsuarioRolHorario userHorario)
        {
            List <string> listaRoles           = user.roles.Split(',').ToList();
            List <string> listaRolesTemporales = userHorario.rolesTemporales.Split(',').ToList();
            List <Roles>  rolesTotales         = (new Conexion()).ListarTodosRoles();
            List <Roles>  auxiliar             = new List <Roles>();

            //No puede darse este caso
            if (listaRoles == null && listaRolesTemporales == null)
            {
                return(null);
            }

            //Al encontrarse con roles distintos de nulo en User.
            if (listaRoles != null && (user.fechaModi < userHorario.fechaModificacion))
            {
                foreach (var rolUSRH in listaRolesTemporales)
                {
                    bool encontrado = listaRoles.Contains(rolUSRH);
                    if (encontrado == false)
                    {
                        listaRoles.Add(rolUSRH);
                    }
                    else
                    {
                        listaRoles.Remove(rolUSRH);
                    }
                }
            }
            else
            {
                if (user.fechaModi > userHorario.fechaModificacion)
                {
                    (new UtilsEmail()).EnviarCorreo(userHorario.email, userHorario.nombreUsuario, userHorario.rolesTemporales, false);//en realidad deberia ser un email explicando que los roles se han modificado internamente y no como se tenia programado.
                }
                return(userHorario.rolesTemporales);
            }

            string rolesComprobados = OrdenarRolesPorID(rolesTotales, listaRoles);

            return(rolesComprobados);
        }
        public UsuariosSectores BuscarUsuarioSector(int i)
        {
            connection("getconn");
            SqlCommand com = new SqlCommand("BuscarUsuarioSector", con);

            UsuariosSectores usec = new UsuariosSectores();

            com.CommandType = CommandType.StoredProcedure;
            SqlDataAdapter da = new SqlDataAdapter(com);
            DataTable      dt = new DataTable();

            com.Parameters.AddWithValue("@id", i);

            try
            {
                con.Open();
                da.Fill(dt);
                con.Close();
                usec = (from DataRow dr in dt.Rows
                        select new UsuariosSectores()
                {
                    id = Convert.ToInt32(dr["id"]),
                    idSector = Convert.ToInt32(dr["idSector"]),
                    nombreSector = Convert.ToString(dr["nombreSector"]),
                    idUsuario = Convert.ToInt32(dr["idUsuario"]),
                    nombreUsuario = Convert.ToString(dr["nombreUsuario"]),
                    dni = Convert.ToString(dr["dni"]),
                    email = Convert.ToString(dr["email"]),
                    fechaModi = Convert.ToDateTime(dr["fechaModi"]),
                    roles = Convert.ToString(dr["roles"]),
                }).FirstOrDefault();

                return(usec);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
        static void Main(string[] args)
        {
            Conexion insConexion = new Conexion();
            List <UsuarioRolHorario> listaUsuarioRolHorario = new List <UsuarioRolHorario>();

            Console.WriteLine("Bienvenido al programa Ejecutable.");

            insConexion.ActualizarVigente();
            listaUsuarioRolHorario = insConexion.ObtenerDatosUsuarioRolHorario();
            //Logica para identificar aquellos que cumplen para ser modificados en la tabla UsuariosSectores de Klinicos. Importancia Alta.
            foreach (var userHorario in listaUsuarioRolHorario)
            {
                if (DateTime.Now < userHorario.fechaFin && DateTime.Now > userHorario.fechaInicio && userHorario.vigente)
                {
                    UsuariosSectores usuario = insConexion.BuscarUsuarioSector(userHorario.idUsuarioSector);
                    //Parte del funcionamiento principal del programa.
                    string rolesComprobados = (new UtilsRoles()).comprobarRoles(usuario, userHorario);
                    insConexion.ModificarRolesUsuarioSector(userHorario.idUsuarioSector, rolesComprobados);//Guarda en Klinicos los roles comprobados
                    if (userHorario.emailChked == true)
                    {
                        (new UtilsEmail()).EnviarCorreo(userHorario.email, userHorario.nombreUsuario, rolesComprobados, true);
                    }
                    Console.Write("Finalización correcta.");
                    Console.ReadKey();
                }
                else
                {
                    Console.Write("No hubo Cambios.");
                    Console.ReadKey();
                }
            }
            if (listaUsuarioRolHorario.Count == 0)
            {
                Console.Write("Nothing To Do Here"); Console.ReadKey();
            }
        }