public async Task <ActionResult> Index() { databaseAYT03 dbayt03 = new databaseAYT03(); databaseRH dbRH = new databaseRH(); var month = 2; var year = 2020; //obtiene tareas String query_usuarios = "SELECT" + " ISNULL(o.Name, 'No Asignado') AS Tecnico, " + " COUNT(*) AS Total, " + " COUNT(CASE WHEN StatusType = 'open' THEN 1 END) AS Abiertas, " + " COUNT(CASE WHEN StatusType = 'closed' THEN 1 END) AS Cerradas " + " INTO ##T1 " + " FROM Tasks t " + " FULL JOIN Owners o on t.IdTask = o.IdTask " + " WHERE " + " MONTH(EndDate) = " + month + " and " + " YEAR(EndDate) = " + year + " GROUP BY o.Name " + " SELECT " + " ISNULL(o.Name, 'No Asignado') AS Tecnico, " + " COUNT(*) AS Vencidas " + " INTO ##T2 " + " FROM Tasks t " + " FULL JOIN Owners o on t.IdTask = o.IdTask " + " WHERE " + " StatusType = 'closed' and " + " StartDate != '1900-01-01' and " + " EndDate != '1900-01-01' and " + " CompletedDate > EndDate and " + " MONTH(EndDate) = " + month + " and " + " YEAR(EndDate) = " + year + " GROUP BY o.Name " + " SELECT " + " ISNULL(o.Name, 'No Asignado') AS Tecnico, " + " COUNT(*) AS ATiempo " + " INTO ##T3 " + " FROM Tasks t " + " FULL JOIN Owners o on t.IdTask = o.IdTask " + " WHERE " + " StatusType = 'closed' and " + " StartDate != '1900-01-01' and " + " EndDate != '1900-01-01' and " + " CompletedDate <= EndDate and " + " MONTH(EndDate) = " + month + " and " + " YEAR(EndDate) = " + year + " GROUP BY o.Name " + " SELECT " + " T1.*, " + " ISNULL(T2.Vencidas, 0) AS Vencidas, " + " ISNULL(T3.ATiempo, 0) AS ATiempo, " + " P.Profile AS Perfil, " + " 0 As Compartidas " + " FROM ##T1 T1 " + " LEFT JOIN ##T2 T2 ON T1.Tecnico = T2.Tecnico " + " LEFT JOIN ##T3 T3 ON T1.Tecnico = T3.Tecnico " + " LEFT JOIN ProjectsUsers P ON T1.Tecnico = P.Name " + " WHERE P.Profile IS NOT NULL and P.Profile <> 0 " + " GROUP BY T1.Tecnico,T1.Total,T1.Abiertas, T1.Cerradas,T2.Vencidas,T3.Atiempo,P.Profile " + " ORDER BY P.Profile, T1.Tecnico " + " DROP TABLE ##T1, ##T2, ##T3 "; //Activo SqlDataReader reader = (SqlDataReader)await dbayt03.query(query_usuarios); List <GeneralViewModel> info = new List <GeneralViewModel>(); List <ResuladoViewModel> resultado = new List <ResuladoViewModel>(); int porcentaje_total = 100; if (reader.HasRows) { while (reader.Read()) { string tecnico = reader["Tecnico"].ToString(); String query_projects = "SELECT " + " ISNULL(o.Name, 'No Asignado') AS Tecnico," + " COUNT(*) AS TareaPorProyecto" + " FROM Tasks t" + " JOIN Projects p ON t.IdProject = p.IdProjects" + " JOIN Owners o ON t.IdTask = o.IdTask" + " WHERE" + " t.EndDate != '1900-01-01' and" + " MONTH(t.EndDate) = '" + month + "' and" + " YEAR(t.EndDate) = '" + year + "' and" + " o.Name = '" + tecnico + "'" + "GROUP BY p.IdProjects,o.Name"; SqlDataReader reader_projects = (SqlDataReader)await dbayt03.query(query_projects); var count_proyectos = 0; if (reader_projects.HasRows == true) { while (reader_projects.Read()) { count_proyectos++; } reader_projects.Close(); } String query_actividades_asignadas = "SELECT " + " COUNT(*) AS Asignadas_Total," + " COUNT(CASE WHEN status = 'Abierto' THEN 1 END) AS Asignadas_Abiertas," + " COUNT(CASE WHEN status = 'Cerrado' OR status = 'Resuelto' THEN 1 END) AS Asignadas_Cerradas," + " COUNT(CASE WHEN is_overdue = '1' THEN 1 END) AS Asignadas_Vencidas," + " COUNT(CASE WHEN is_overdue = '0' THEN 1 END) AS Asignadas_ATiempo " + " FROM TablaTickets " + " WHERE grupo = 'Actividades Asignadas' and " + " MONTH(created_time) = '" + month + "' and" + " YEAR(created_time) = '" + year + "' and" + " technician_name = '" + tecnico + "'" + " GROUP BY technician_name"; SqlDataReader reader_actividades_asignadas = (SqlDataReader)await dbayt03.query(query_actividades_asignadas); var asignadas_total = 0; var asignadas_abiertas = 0; var asignadas_cerradas = 0; var asignadas_vencidas = 0; var asignadas_a_tiempo = 0; if (reader_actividades_asignadas.HasRows == true) { while (reader_actividades_asignadas.Read()) { asignadas_total = Convert.ToInt32(reader_actividades_asignadas["Asignadas_Total"]); asignadas_abiertas = Convert.ToInt32(reader_actividades_asignadas["Asignadas_Abiertas"]); asignadas_cerradas = Convert.ToInt32(reader_actividades_asignadas["Asignadas_Cerradas"]); asignadas_vencidas = Convert.ToInt32(reader_actividades_asignadas["Asignadas_Vencidas"]); asignadas_a_tiempo = Convert.ToInt32(reader_actividades_asignadas["Asignadas_ATiempo"]); } reader_actividades_asignadas.Close(); } var total = reader["Total"].ToString(); var abiertas = reader["Abiertas"].ToString(); var cerradas = reader["Cerradas"].ToString(); var vencidas = reader["Vencidas"].ToString(); var a_tiempo = reader["ATiempo"].ToString(); var perfil = reader["Perfil"].ToString(); var compartidas = reader["Compartidas"].ToString(); var programadas = Int32.Parse(total) - Int32.Parse(compartidas); var porcentaje_cerradas = Math.Round((decimal)(Int32.Parse(cerradas) * porcentaje_total) / Int32.Parse(total)); var porcentaje_a_tiempo = "0"; var porcenjate_vencidas = "0"; if (Int32.Parse(cerradas) > 0) { porcentaje_a_tiempo = Math.Round((decimal)(Int32.Parse(a_tiempo) * porcentaje_total) / Int32.Parse(cerradas)).ToString(); porcenjate_vencidas = Math.Round((decimal)(Int32.Parse(vencidas) * porcentaje_total) / Int32.Parse(cerradas)).ToString(); } info.Add(new GeneralViewModel { Tecnico = tecnico, Total = programadas.ToString(), Abiertas = abiertas, Cerradas = cerradas, Porcentaje_Cerradas = porcentaje_cerradas.ToString(), Vencidas = vencidas, Porcentaje_Vencidas = porcenjate_vencidas.ToString(), Tiempo = a_tiempo, Porcentaje_Tiempo = porcentaje_a_tiempo.ToString(), Perfil = perfil, Proyectos = count_proyectos.ToString(), Compartidas = compartidas, Asignadas_Totales = asignadas_total, Asignadas_Abiertas = asignadas_abiertas, Asignadas_Cerradas = asignadas_cerradas, Asignadas_Vencidas = asignadas_vencidas, Asignadas_Tiempo = asignadas_a_tiempo });; } reader.Close(); } info.Add(new GeneralViewModel { Tecnico = "Ricardo Acevedo", Total = "0", Abiertas = "0", Cerradas = "0", Porcentaje_Cerradas = "0", Vencidas = "0", Porcentaje_Vencidas = "0", Tiempo = "0", Porcentaje_Tiempo = "0", Perfil = "7", Proyectos = "0", Compartidas = "0", Asignadas_Totales = 16, Asignadas_Abiertas = 0, Asignadas_Cerradas = 16, Asignadas_Vencidas = 1, Asignadas_Tiempo = 15 }); info.Add(new GeneralViewModel { Tecnico = "Lizeth Gardea", Total = "0", Abiertas = "0", Cerradas = "0", Porcentaje_Cerradas = "0", Vencidas = "0", Porcentaje_Vencidas = "0", Tiempo = "0", Porcentaje_Tiempo = "0", Perfil = "3", Proyectos = "0", Compartidas = "0", Asignadas_Totales = 2, Asignadas_Abiertas = 1, Asignadas_Cerradas = 1, Asignadas_Vencidas = 1, Asignadas_Tiempo = 1 }); //suma todos los resultados de todos los técnicos excepto el de Alejandro var abiertas_gerente = 0; var cerradas_gerente = 0; var vencidas_gerente = 0; var tiempo_gerente = 0; var total_gerente = 0; var proyectos_gerente = 0; var compartidas_gerente = 0; var asignadas_total_gerente = 0; var asignadas_abiertas_gerente = 0; var asignadas_cerradas_gerente = 0; var asignadas_vencidas_gerente = 0; var asignadas_a_tiempo_gerente = 0; //suma todos los resultados de los Desarrolladores var abiertas_coord_dev = 0; var cerradas_coord_dev = 0; var vencidas_coord_dev = 0; var tiempo_coord_dev = 0; var total_coord_dev = 0; var proyectos_coord_dev = 0; var compartidas_coord_dev = 0; var asignadas_total_coord_dev = 0; var asignadas_abiertas_coord_dev = 0; var asignadas_cerradas_coord_dev = 0; var asignadas_vencidas_coord_dev = 0; var asignadas_a_tiempo_coord_dev = 0; //asigna el color del semaforo var color_vencidas = ""; var color_a_tiempo = ""; var color_total = ""; foreach (var val in info) { if (val.Perfil == "1" || val.Perfil != "2") { abiertas_gerente += Int32.Parse(val.Abiertas); cerradas_gerente += Int32.Parse(val.Cerradas); vencidas_gerente += Int32.Parse(val.Vencidas); tiempo_gerente += Int32.Parse(val.Tiempo); total_gerente += Int32.Parse(val.Total); proyectos_gerente += Int32.Parse(val.Proyectos); compartidas_gerente += Int32.Parse(val.Compartidas); asignadas_total_gerente += +val.Asignadas_Totales; asignadas_abiertas_gerente += val.Asignadas_Abiertas; asignadas_cerradas_gerente += val.Asignadas_Cerradas; asignadas_vencidas_gerente += val.Asignadas_Vencidas; asignadas_a_tiempo_gerente += val.Asignadas_Tiempo; if (Int32.Parse(val.Porcentaje_Vencidas) <= 10) { color_vencidas = "#98ee99"; } if (Int32.Parse(val.Porcentaje_Vencidas) > 10) { color_vencidas = "#fff59d"; } if (Int32.Parse(val.Porcentaje_Vencidas) > 50) { color_vencidas = "#ffa4a2"; } if (Int32.Parse(val.Porcentaje_Tiempo) >= 90) { color_a_tiempo = "#98ee99"; } if (Int32.Parse(val.Porcentaje_Tiempo) >= 80 && Int32.Parse(val.Porcentaje_Tiempo) < 90) { color_a_tiempo = "#fff59d"; } if (Int32.Parse(val.Porcentaje_Tiempo) < 80) { color_a_tiempo = "#ffa4a2"; } if (Int32.Parse(val.Porcentaje_Cerradas) >= 90) { color_total = "#98ee99"; } if (Int32.Parse(val.Porcentaje_Cerradas) >= 80 && Int32.Parse(val.Porcentaje_Cerradas) < 90) { color_total = "#fff59d"; } if (Int32.Parse(val.Porcentaje_Cerradas) < 80) { color_total = "#ffa4a2"; } resultado.Add(new ResuladoViewModel { Tecnico = val.Tecnico, Proyectos = Int32.Parse(val.Proyectos), Compartidas = Int32.Parse(val.Compartidas), Total = Int32.Parse(val.Total), Abiertas = Int32.Parse(val.Abiertas), Cerradas = Int32.Parse(val.Cerradas), Porcentaje_Cerradas = Int32.Parse(val.Porcentaje_Cerradas), Cerradas_class = color_total, Vencidas = Int32.Parse(val.Vencidas), Porcentaje_Vencidas = Int32.Parse(val.Porcentaje_Vencidas), Vencidas_class = color_vencidas, Tiempo = Int32.Parse(val.Tiempo), Porcentaje_Tiempo = Int32.Parse(val.Porcentaje_Tiempo), Tiempo_class = color_a_tiempo, Asignadas_Totales = val.Asignadas_Totales, Asignadas_Abiertas = val.Asignadas_Abiertas, Asignadas_Cerradas = val.Asignadas_Cerradas, Asignadas_Vencidas = val.Asignadas_Vencidas, Asignadas_Tiempo = val.Asignadas_Tiempo }); } if (val.Perfil == "2" || val.Perfil == "3") { //console.log("proyectos: " , data[i].proyectos) abiertas_coord_dev += Int32.Parse(val.Abiertas); cerradas_coord_dev += Int32.Parse(val.Cerradas); vencidas_coord_dev += Int32.Parse(val.Vencidas); tiempo_coord_dev += Int32.Parse(val.Tiempo); total_coord_dev += Int32.Parse(val.Total); proyectos_coord_dev += Int32.Parse(val.Proyectos); compartidas_coord_dev += Int32.Parse(val.Compartidas); asignadas_total_coord_dev += +val.Asignadas_Totales; asignadas_abiertas_coord_dev += val.Asignadas_Abiertas; asignadas_cerradas_coord_dev += val.Asignadas_Cerradas; asignadas_vencidas_coord_dev += val.Asignadas_Vencidas; asignadas_a_tiempo_coord_dev += val.Asignadas_Tiempo; if (Int32.Parse(val.Porcentaje_Vencidas) <= 10) { color_vencidas = "#98ee99"; } if (Int32.Parse(val.Porcentaje_Vencidas) > 10) { color_vencidas = "#fff59d"; } if (Int32.Parse(val.Porcentaje_Vencidas) > 50) { color_vencidas = "#ffa4a2"; } if (Int32.Parse(val.Porcentaje_Tiempo) >= 90) { color_a_tiempo = "#98ee99"; } if (Int32.Parse(val.Porcentaje_Tiempo) >= 80 && Int32.Parse(val.Porcentaje_Tiempo) < 90) { color_a_tiempo = "#fff59d"; } if (Int32.Parse(val.Porcentaje_Tiempo) < 80) { color_a_tiempo = "#ffa4a2"; } if (Int32.Parse(val.Porcentaje_Cerradas) >= 90) { color_total = "#98ee99"; } if (Int32.Parse(val.Porcentaje_Cerradas) >= 80 && Int32.Parse(val.Porcentaje_Cerradas) < 90) { color_total = "#fff59d"; } if (Int32.Parse(val.Porcentaje_Cerradas) < 80) { color_total = "#ffa4a2"; } resultado.Add(new ResuladoViewModel { Tecnico = val.Tecnico, Proyectos = Int32.Parse(val.Proyectos), Compartidas = Int32.Parse(val.Compartidas), Total = Int32.Parse(val.Total), Abiertas = Int32.Parse(val.Abiertas), Cerradas = Int32.Parse(val.Cerradas), Porcentaje_Cerradas = Int32.Parse(val.Porcentaje_Cerradas), Cerradas_class = color_total, Vencidas = Int32.Parse(val.Vencidas), Porcentaje_Vencidas = Int32.Parse(val.Porcentaje_Vencidas), Vencidas_class = color_vencidas, Tiempo = Int32.Parse(val.Tiempo), Porcentaje_Tiempo = Int32.Parse(val.Porcentaje_Tiempo), Tiempo_class = color_a_tiempo, Asignadas_Totales = val.Asignadas_Totales, Asignadas_Abiertas = val.Asignadas_Abiertas, Asignadas_Cerradas = val.Asignadas_Cerradas, Asignadas_Vencidas = val.Asignadas_Vencidas, Asignadas_Tiempo = val.Asignadas_Tiempo }); } } //calcula los datos para Oscar //var porcentaje_total = 100; var porcentaje_cerradas_gerente = Math.Round(Convert.ToDecimal((+cerradas_gerente * porcentaje_total) / +total_gerente), 2); var porcentaje_a_tiempo_gerente = Math.Round(Convert.ToDecimal((+tiempo_gerente * porcentaje_total) / +cerradas_gerente), 2); var porcentaje_vencidas_gerente = Math.Round(Convert.ToDecimal((+vencidas_gerente * porcentaje_total) / +cerradas_gerente), 2); if (porcentaje_vencidas_gerente <= 10) { color_vencidas = "#98ee99"; } if (porcentaje_vencidas_gerente > 10) { color_vencidas = "#fff59d"; } if (porcentaje_vencidas_gerente > 50) { color_vencidas = "#ffa4a2"; } if (porcentaje_a_tiempo_gerente >= 90) { color_a_tiempo = "#98ee99"; } if (porcentaje_a_tiempo_gerente >= 80 && porcentaje_a_tiempo_gerente < 90) { color_a_tiempo = "#fff59d"; } if (porcentaje_a_tiempo_gerente < 80) { color_a_tiempo = "#ffa4a2"; } if (porcentaje_cerradas_gerente >= 90) { color_total = "#98ee99"; } if (porcentaje_cerradas_gerente >= 80 && porcentaje_cerradas_gerente < 90) { color_total = "#fff59d"; } if (porcentaje_cerradas_gerente < 80) { color_total = "#ffa4a2"; } resultado.Add(new ResuladoViewModel { Tecnico = "Oscar Loya", Proyectos = proyectos_gerente, Compartidas = compartidas_gerente, Total = total_gerente, Abiertas = abiertas_gerente, Cerradas = cerradas_gerente, Porcentaje_Cerradas = (int)porcentaje_cerradas_gerente, Cerradas_class = color_total, Vencidas = vencidas_gerente, Porcentaje_Vencidas = (int)porcentaje_vencidas_gerente, Vencidas_class = color_vencidas, Tiempo = tiempo_gerente, Porcentaje_Tiempo = (int)porcentaje_a_tiempo_gerente, Tiempo_class = color_a_tiempo, Asignadas_Totales = asignadas_total_gerente, Asignadas_Abiertas = asignadas_abiertas_gerente, Asignadas_Cerradas = asignadas_cerradas_gerente, Asignadas_Vencidas = asignadas_vencidas_gerente, Asignadas_Tiempo = asignadas_a_tiempo_gerente }); var porcentaje_cerradas_coord_dev = Math.Round(Convert.ToDecimal((+cerradas_coord_dev * porcentaje_total) / +total_coord_dev), 2); var porcentaje_a_tiempo_coord_dev = Math.Round(Convert.ToDecimal((+tiempo_coord_dev * porcentaje_total) / +cerradas_coord_dev), 2); var porcentaje_vencidas_coord_dev = Math.Round(Convert.ToDecimal((+vencidas_coord_dev * porcentaje_total) / +cerradas_coord_dev), 2); if (porcentaje_vencidas_coord_dev <= 10) { color_vencidas = "#98ee99"; } if (porcentaje_vencidas_coord_dev > 10) { color_vencidas = "#fff59d"; } if (porcentaje_vencidas_coord_dev > 50) { color_vencidas = "#ffa4a2"; } if (porcentaje_a_tiempo_coord_dev >= 90) { color_a_tiempo = "#98ee99"; } if (porcentaje_a_tiempo_coord_dev >= 80 && porcentaje_a_tiempo_coord_dev < 90) { color_a_tiempo = "#fff59d"; } if (porcentaje_a_tiempo_coord_dev < 80) { color_a_tiempo = "#ffa4a2"; } if (porcentaje_cerradas_coord_dev >= 90) { color_total = "#98ee99"; } if (porcentaje_cerradas_coord_dev >= 80 && porcentaje_cerradas_coord_dev < 90) { color_total = "#fff59d"; } if (porcentaje_cerradas_coord_dev < 80) { color_total = "#ffa4a2"; } resultado.Add(new ResuladoViewModel { Tecnico = "Alejandro Gamboa", Proyectos = proyectos_coord_dev, Compartidas = compartidas_coord_dev, Total = total_coord_dev, Abiertas = abiertas_coord_dev, Cerradas = cerradas_coord_dev, Porcentaje_Cerradas = (int)porcentaje_cerradas_coord_dev, Cerradas_class = color_total, Vencidas = vencidas_coord_dev, Porcentaje_Vencidas = (int)porcentaje_vencidas_coord_dev, Vencidas_class = color_vencidas, Tiempo = tiempo_coord_dev, Porcentaje_Tiempo = (int)porcentaje_a_tiempo_coord_dev, Tiempo_class = color_a_tiempo, Asignadas_Totales = asignadas_total_coord_dev, Asignadas_Abiertas = asignadas_abiertas_coord_dev, Asignadas_Cerradas = asignadas_cerradas_coord_dev, Asignadas_Vencidas = asignadas_vencidas_coord_dev, Asignadas_Tiempo = asignadas_a_tiempo_coord_dev }); return(View(resultado)); }
// GET: User/Details/5 public async Task <ActionResult> Details(int id) { databaseAYT03 dbayt03 = new databaseAYT03(); databaseRH dbRH = new databaseRH(); //obtiene información general del usuario String query_usuarios = "SELECT " + "u.Id, " + "u.Nombre, " + "u.Departamento, " + "u.Email, " + "u.Extension, " + "CASE WHEN u.EsGerente = 1 THEN 'True' ELSE 'False' END AS Gerente, " + "r.Nombre AS Rol " + "FROM ITNT_Usuarios u " + "LEFT JOIN ITNT_Roles r on u.IdRol = r.Id " + "WHERE u.Id = " + id; //Activo SqlDataReader reader = (SqlDataReader)await dbayt03.query(query_usuarios); List <InfoGeneralViewModel> usuarios = new List <InfoGeneralViewModel>(); if (reader.HasRows) { while (reader.Read()) { usuarios.Add(new InfoGeneralViewModel { Id = Int32.Parse(reader["Id"].ToString()), Nombre = reader["Nombre"].ToString(), Departamento = reader["Departamento"].ToString(), Email = reader["Email"].ToString(), Extension = reader["Extension"].ToString(), Gerente = reader["Gerente"].ToString(), Rol = reader["Rol"].ToString() });; } reader.Close(); } //obtiene información general de Roles String query_roles = "SELECT * FROM ITNT_Roles WHERE Status = 1"; SqlDataReader reader_roles = (SqlDataReader)await dbayt03.query(query_roles); List <RolViewModel> roles = new List <RolViewModel>(); if (reader_roles.HasRows) { while (reader_roles.Read()) { roles.Add(new RolViewModel { Id = Int32.Parse(reader_roles["Id"].ToString()), Nombre = reader_roles["Nombre"].ToString(), Status = Int32.Parse(reader_roles["Status"].ToString()) }); } reader_roles.Close(); } ////obtiene información general de la lista de sucursales //String query_sucursales = "SELECT " + // "TB_CODIGO AS Codigo," + // "TB_ELEMENT AS Sucursal " + // "FROM NIVEL1 " + // "WHERE TB_ACTIVO = 'S' AND " + // "TB_CODIGO NOT IN('14','23','96','97', '98','99') " + // "ORDER BY TB_ELEMENT ASC"; //SqlDataReader reader_sucursales = (SqlDataReader)await dbRH.query(query_sucursales); //List<SucursalesViewModel> sucursales = new List<SucursalesViewModel>(); //if (reader_sucursales.HasRows) //{ // while (reader_sucursales.Read()) // { // sucursales.Add(new SucursalesViewModel // { // Codigo = reader_sucursales["Codigo"].ToString().Replace(" ",""), // Sucursal = reader_sucursales["Sucursal"].ToString() // }); // } // reader_sucursales.Close(); //} ////obtiene relacion usuarios - sucursal //String query_usuario_sucursal = "SELECT * FROM ITNT_Usuario_Sucursal WHERE IdUsuario = " + id; //SqlDataReader reader_usuario_sucursal = (SqlDataReader)await dbayt03.query(query_usuario_sucursal); ////List<UsuarioSucursalViewModel> usuario_sucursales = new List<UsuarioSucursalViewModel>(); //if (reader_usuario_sucursal.HasRows) //{ // while (reader_usuario_sucursal.Read()) // { // var suc = sucursales.FirstOrDefault(d => d.Codigo == reader_usuario_sucursal["IdSucursal"].ToString()); // if ( suc != null) // { // suc.IsSelected = true; // } // } // reader_usuario_sucursal.Close(); //} //obtiene todos los usuarios String query_usu = "SELECT Id, Nombre FROM ITNT_Usuarios"; //Activo SqlDataReader reader_todos_usuarios = (SqlDataReader)await dbayt03.query(query_usu); List <UsuariosViewModel> _usuarios = new List <UsuariosViewModel>(); if (reader_todos_usuarios.HasRows) { while (reader_todos_usuarios.Read()) { _usuarios.Add(new UsuariosViewModel { Id = Int32.Parse(reader_todos_usuarios["Id"].ToString()), Nombre = reader_todos_usuarios["Nombre"].ToString() }); } reader_todos_usuarios.Close(); } //obtiene relacion personal cargo String query_personal_cargo = "SELECT " + "U.Id AS Usuario, " + "U.Nombre " + "FROM ITNT_Personal_Cargos PC " + "LeFT JOIN ITNT_Usuarios U ON PC.IdUsuarioCargo = U.Id " + "WHERE PC.IdUsuarioPrimario = " + id; SqlDataReader reader_personal_cargo = (SqlDataReader)await dbayt03.query(query_personal_cargo); //List<UsuarioSucursalViewModel> personal_cargo = new List<UsuarioSucursalViewModel>(); if (reader_personal_cargo.HasRows) { while (reader_personal_cargo.Read()) { var personal_cargo = _usuarios.FirstOrDefault(d => d.Id == Int32.Parse(reader_personal_cargo["Usuario"].ToString())); if (personal_cargo != null) { personal_cargo.IsSelected = true; } } reader_personal_cargo.Close(); } PermisosViewModel permisos = new PermisosViewModel { Informacion = usuarios, Roles = roles, //Sucursales = sucursales, PersonalCargo = _usuarios }; return(Json(new { data = permisos })); //return View(permisos); }