public async Task <ActionResult> PostUsersMenusList([FromBody] IEnumerable <RoleUsersMenusDtoCreate> li)
        {
            List <AffRolesUsersMenus> obj = new List <AffRolesUsersMenus>();

            if (!li.Any())
            {
                return(new JsonResult(new ErrorDetails
                {
                    StatusCode = 404,
                    Message = $"Veuillez ajouter une liste des utilisateurs et de permission a affecter au différents role  ."
                }));
            }

            foreach (var item in li)
            {
                var role = await Work.Role.Get(x => x.RoleId == item.RoleId);

                var menu = await Work.Menu.Get(x => x.MenuId == item.MenuId);

                var user = await Work.Users.Get(x => x.UsersId == item.UserId);

                if (role != null && menu != null && user != null)
                {
                    try
                    {
                        AffRolesUsersMenus aff = new AffRolesUsersMenus
                        {
                            UsersId = user.UsersId,
                            MenuId  = menu.MenuId,
                            RoleId  = role.RoleId
                        };
                        await Work.AffRoleUsersMenus.Add(aff);

                        await Work.Complete();

                        obj.Add(aff);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                    }
                }
            }


            var res = _mapper.Map <IEnumerable <RoleUsersMenusDto> >(obj);

            return(new JsonResult(res));
        }
        public async Task <ActionResult> PutRolesUsersMenus([FromBody] RoleUsersMenusDtoUpdate liEntity, Guid Id)
        {
            RoleUsersMenusDtoGetDelete aff = new RoleUsersMenusDtoGetDelete
            {
                UserId = liEntity.UserId,
                MenuId = liEntity.MenuId,
                RoleId = Id
            };

            await DeleteUsersMenusList(aff);



            var role = await Work.Role.Get(x => x.RoleId == liEntity.RoleId);

            var menu = await Work.Menu.Get(x => x.MenuId == liEntity.MenuId);

            var user = await Work.Users.Get(x => x.UsersId == liEntity.UserId);

            if (role != null && menu != null && user != null)
            {
                AffRolesUsersMenus aff1 = new AffRolesUsersMenus
                {
                    UsersId = user.UsersId,
                    MenuId  = menu.MenuId,
                    RoleId  = role.RoleId
                };


                await Work.AffRoleUsersMenus.Add(aff1);
            }


            await Work.Complete();

            return(Ok());
        }
        private AuthModelDto CreateToken(List <Groupes> groupes, List <Menus> menus, Users user, Applications application)
        {
            AffRolesUsersMenus role11 = Work.AffRoleUsersMenus.Get(x => x.UsersId == user.UsersId).Result;

            var token = new JwtTokenBuilder()
                        .AddSecurityKey(JwtSecurityKey.Create("Poulina-Auth-Service"))
                        .AddSubject(user.UsersName + " " + user.UsersLastName)
                        .AddIssuer("Poulina.Security.Bearer")
                        .AddAudience("Poulina.Security.Bearer")
                        .AddClaim("MembershipId", user.UsersCode)
                        .AddClaim(ClaimTypes.Role, Work.Role.Get(x => x.RoleId == role11.RoleId).Result.RoleName)
                        //.AddExpiry(1)
                        .AddExpiry(1200000)
                        .Build();

            AuthModelDto model = new AuthModelDto
            {
                Token         = token,
                Application   = application.AppDisplayName,
                AppCode       = application.AppCode,
                UserName      = user.UsersLastName + " " + user.UsersName,
                UserFiliale   = user.FilialeID.ToString(),
                UserMail      = user.UsersMailIntern,
                PhoneInterne  = user.UsersPhoneNumber,
                PhoneExterne  = user.UsersPersonalNumber,
                ApplicationId = application.AppId,
                RoleUser      = Work.Role.Get(x => x.RoleId == role11.RoleId).Result.RoleDisplayName,
                UserLogin     = user.UsersCode
            };

            List <MenuPermission> menuList = new List <MenuPermission>();

            foreach (var entity in groupes)
            {
                var roleGroupMenus = entity.AffRoleGroupMenus.Where(x => x.GrpId == entity.GrpId).ToList();

                foreach (var item in roleGroupMenus)
                {
                    MenuPermission menu = new MenuPermission
                    {
                        MenuId            = item.MenuId,
                        MenuName          = item.Menu.MenuName,
                        MenuUrl           = item.Menu.MenuUrl,
                        MenuParentId      = item.Menu.FkMenuId,
                        PermissionDetails = new List <PermissionDetail>()
                    };

                    List <Permissions> lipermissionList = item.Role.AffRolePermissions
                                                          .Select(a => a.Permission).ToList();

                    foreach (var perm in lipermissionList)
                    {
                        PermissionDetail permission = new PermissionDetail
                        {
                            PermissionId   = perm.PermId,
                            PermissionName = perm.PermName,
                            GroupeId       = entity.GrpId,
                            GroupeName     = entity.GrpName,
                        };

                        if (menuList.Any(z => z.MenuId == menu.MenuId))
                        {
                            var x = menuList.FindIndex(a => a.MenuId == item.MenuId);
                            menuList[x].PermissionDetails.Add(permission);
                        }
                        else
                        {
                            menu.PermissionDetails.Add(permission);
                        }
                    }

                    if (menu.PermissionDetails.Any())
                    {
                        menuList.Add(menu);
                    }
                }
            }

            try
            {
                foreach (var item in menus)
                {
                    MenuPermission menu = new MenuPermission
                    {
                        MenuId       = item.MenuId,
                        MenuName     = item.MenuName,
                        MenuUrl      = item.MenuUrl,
                        MenuParentId = item.FkMenuId,

                        PermissionDetails = new List <PermissionDetail>()
                    };

                    List <AffRolesUsersMenus> rolenames = item.AffRolesUsersMenus.ToList();

                    foreach (var rolesUsersMenu in rolenames)
                    {
                        List <Permissions> lipermissionList = rolesUsersMenu.Role.AffRolePermissions.Select(a => a.Permission).ToList();

                        foreach (var perm in lipermissionList)
                        {
                            PermissionDetail permission = new PermissionDetail
                            {
                                PermissionId   = perm.PermId,
                                PermissionName = perm.PermName,
                                GroupeName     = "Permission Unique"
                            };

                            if (menuList.Any(a => a.MenuId == item.MenuId))
                            {
                                var x = menuList.FindIndex(a => a.MenuId == item.MenuId);
                                menuList[x].PermissionDetails.Add(permission);
                            }
                            else
                            {
                                menu.PermissionDetails.Add(permission);
                            }
                        }
                    }

                    if (menu.PermissionDetails.Any())
                    {
                        menuList.Add(menu);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }


            model.MenuPermissions = menuList.Distinct().ToList();
            return(model);
        }