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());
        }
        public async Task <ActionResult> DeleteUsersMenusList([FromQuery] RoleUsersMenusDtoGetDelete query)
        {
            var result = typeof(RoleUsersMenusDtoGetDelete).GetProperties()
                         .Select(x => new { property = x.Name, value = x.GetValue(query) })
                         .Where(x => x.value != null)
                         .ToList();

            var predicate = PredicateBuilder.True <AffRolesUsersMenus>();

            if (result.Count == 1)
            {
                string temp = result[0].property;
                Guid   guid = new Guid(result[0].value.ToString());
                if (temp == "UserId" && guid != Guid.Empty)
                {
                    predicate = predicate.And(p => p.UsersId == guid);
                }
                else if (temp == "MenuId" && guid != Guid.Empty)
                {
                    predicate = predicate.And(p => p.MenuId == guid);
                }
                else if (temp == "RoleId" && guid != Guid.Empty)
                {
                    predicate = predicate.And(p => p.RoleId == guid);
                }
            }
            else if (result.Count > 1)
            {
                foreach (var keyword in result)
                {
                    string temp = keyword.property;

                    Guid guid = new Guid(keyword.value.ToString());
                    if (temp == "UserId" && guid != Guid.Empty)
                    {
                        predicate = predicate.And(p => p.UsersId == guid);
                    }
                    else if (temp == "MenuId" && guid != Guid.Empty)
                    {
                        predicate = predicate.And(p => p.MenuId == guid);
                    }
                    else if (temp == "RoleId" && guid != Guid.Empty)
                    {
                        predicate = predicate.And(p => p.RoleId == guid);
                    }
                }
            }
            else
            {
                return(new JsonResult(new ErrorDetails
                {
                    StatusCode = 404,
                    Message = $"Veuillez entrez un paramétre aux choix pour votre requête."
                }));
            }

            var entitiesToDelete = await Work.AffRoleUsersMenus.GetList(predicate,
                                                                        includes : source => source.Include(x => x.Role)
                                                                        .Include(a => a.Menu).ThenInclude(q => q.FkMenu)
                                                                        .Include(a => a.Users).ThenInclude(z => z.FkUsers));


            if (entitiesToDelete == null)
            {
                return(Ok());
            }

            Work.AffRoleUsersMenus.RemoveRange(entitiesToDelete);
            await Work.Complete();

            return(Ok());
        }