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(); } }