public IHttpActionResult GetUsuarioCapturador()
        {
            List <AspNetUserModel> listCapturador = new List <AspNetUserModel>();
            string rolCapturador           = WebConfigurationManager.AppSettings["capturador_parametros"];
            var    rolCapturadorParametros = rolService.GetSingle(x => x.Name == rolCapturador);

            if (rolCapturadorParametros == null)
            {
                return(BadRequest("No se encuentra el rol CAPTURADOR PARAMETRO"));
            }
            var objUsrRole = AspNetUserRolesService.GetAll(r => r.RoleId == rolCapturadorParametros.Id, null, includes: c => c.AspNetUsers).Select(s => s.UserId).ToList();

            if (objUsrRole != null)
            {
                listCapturador = userService.GetAll(x => objUsrRole.Contains(x.Id)).ToList();
            }
            var lisUsr = userService.GetAll(c => c.Estatus == 1);

            if (listCapturador != null)
            {
                return(Ok(listCapturador.Select(c => new
                {
                    Id = c.Id,
                    FirstName = c.FirstName,
                    LastName = c.LastName,
                    UserName = c.UserName,
                    Email = c.Email
                })));
            }
            return(BadRequest("No se encontró ningún usuario con el rol de Capturador."));
        }
        public IHttpActionResult Get()
        {
            var ue = objInj.GetAll(null, null, includes:  c => c.AspNetRoles);

            if (ue == null)
            {
                return(NotFound());
            }
            return(Ok(ue));
        }
        public IHttpActionResult CreateRolesForUser([FromBody] RolesToUser model)
        {
            objInj = objInj ?? new AspNetUserRolesService();
            var currentAreas = objInj.GetAll(c => c.UserId == model.id, null, includes: c => c.AspNetRoles);
            var denoms       = new List <int>(currentAreas.Select(c => c.IDAspNetUserRol));

            objInj.CreateAndRemove(model.EnrolledRoles, denoms);
            return(Ok());
        }
        public async Task <IHttpActionResult> SoftDeleteRole(string Id)
        {
            var role = await RoleManager.FindByIdAsync(Id);

            if (role != null)
            {
                ApplicationRole rol = ((ApplicationRole)role);
                rol.Estatus = 0;
                IdentityResult result = await RoleManager.UpdateAsync(rol);

                if (result.Succeeded)
                {
                    var currentRoles = objInj.GetAll(c => c.RoleId == Id, null, includes: c => c.AspNetRoles);
                    var denoms       = new List <int>(currentRoles.Select(c => c.IDAspNetUserRol));
                    objInj.CreateAndRemove(null, denoms);
                }
                else
                {
                    return(InternalServerError());
                }
                return(Ok());
            }
            return(NotFound());
        }
        public async Task <IHttpActionResult> GetSupervisorList(int IdEmpresa, int IdArea)
        {
            IdentityUser user = await UserManager.FindByIdAsync(User.Identity.GetUserId());

            //Se obtiene el ID del ROL del tipo de ROL Aprobador
            List <ExistingRole> existingRoles = new List <ExistingRole>();
            var    roles           = RoleManager.Roles;
            string roleAprobadorID = string.Empty;

            foreach (var role in roles)
            {
                var casting = role as ApplicationRole;
                if (casting.Name.Equals("APROBADOR"))
                {
                    roleAprobadorID = casting.Id;
                }
            }

            // Se obtiene la lista de todos los usuarios que tengan el ROL APROBADOR
            var objUsrRole = objInj.GetAll(c => c.AspNetRoles.Id == roleAprobadorID, null, includes: c => c.AspNetUsers);
            var lisUsr     = userService.GetAll(c => c.Estatus == 1);
            List <AspNetUserModel> listAprobador = new List <AspNetUserModel>();

            foreach (var usrRole in objUsrRole)
            {
                foreach (AspNetUserModel usr in lisUsr)
                {
                    if (usrRole.UserId == usr.Id)
                    {
                        listAprobador.Add(usr);
                    }
                }
            }
            string[] listIdAprobador = new string[listAprobador.Count()];
            for (int i = 0; i < listAprobador.Count(); i++)
            {
                listIdAprobador[i] = listAprobador[i].Id;
            }

            //Se obtienen todas las empresas del usuario capturador
            var objUsuarioEmpresa = usuarioEmpresaService.GetAll(c => c.US_ID_USUARIO == user.Id, null, includes: c => c.SAX_EMPRESA);

            string[] listEmpresa = new string[objUsuarioEmpresa.Count()];
            for (int i = 0; i < objUsuarioEmpresa.Count(); i++)
            {
                listEmpresa[i] = objUsuarioEmpresa[i].CE_ID_EMPRESA.ToString();
            }

            //Se obtienen todas las areas del usuario capturador
            var objUsuarioArea = usuarioAreaService.GetAll(c => c.US_ID_USUARIO == user.Id, null, includes: c => c.SAX_AREA_OPERATIVA);

            string[] listArea = new string[objUsuarioArea.Count()];
            for (int i = 0; i < objUsuarioEmpresa.Count(); i++)
            {
                listEmpresa[i] = objUsuarioEmpresa[i].CE_ID_EMPRESA.ToString();
            }

            //Se obtiene todas las empresas por los APROBADORES
            var objUsuarioEmpresaAprobador = usuarioEmpresaService.GetAll(c => listIdAprobador.Contains(c.US_ID_USUARIO) && c.CE_ID_EMPRESA == IdEmpresa, null, includes: c => c.SAX_EMPRESA);
            //Se obtiene todas las areas por los APROBADORES
            var objUsuarioAreaAprobador = usuarioAreaService.GetAll(c => listIdAprobador.Contains(c.US_ID_USUARIO) && c.CA_ID_AREA == IdArea, null, includes: c => c.SAX_AREA_OPERATIVA);

            //Se crea la lista de definitiva de usuarios supervisores
            List <AspNetUserModel> listSupervisor = new List <AspNetUserModel>();

            // Se recorren las empresas y areas de los usuarios aprobadores y se comparan con las areas y empresas del usuario capturador
            for (int e = 0; e < objUsuarioEmpresaAprobador.Count; e++)
            {
                for (int a = 0; a < objUsuarioAreaAprobador.Count; a++)
                {
                    if (objUsuarioEmpresaAprobador[e].US_ID_USUARIO == objUsuarioAreaAprobador[a].US_ID_USUARIO)
                    {
                        for (int ec = 0; ec < objUsuarioEmpresa.Count; ec++)
                        {
                            for (int ac = 0; ac < objUsuarioArea.Count; ac++)
                            {
                                if (objUsuarioEmpresa[ec].US_ID_USUARIO == objUsuarioArea[ac].US_ID_USUARIO)
                                {
                                    if (objUsuarioEmpresa[ec].CE_ID_EMPRESA == objUsuarioEmpresaAprobador[e].CE_ID_EMPRESA && objUsuarioArea[ac].CA_ID_AREA == objUsuarioAreaAprobador[a].CA_ID_AREA)
                                    {
                                        listSupervisor.Add(objUsuarioEmpresaAprobador[e].AspNetUsers);
                                    }
                                }
                            }
                        }
                    }
                }
            }


            if (listSupervisor != null && listSupervisor.Count() > 0)
            {
                return(Ok(listSupervisor.Select(c => new
                {
                    //SV_COD_SUPERVISOR = c.Id,
                    //SV_COD_SUPERVISOR_DESC = c.FirstName
                    Id = c.Id,
                    FirstName = c.FirstName
                }).Distinct()));
            }
            //SV_COD_SUPERVISOR
            //SV_COD_SUPERVISOR_DESC
            return(BadRequest("No se encontraron supervisores que coincidan con su empresa y área"));
        }