예제 #1
0
        public void Execute(ChangeUserGroupDto request)
        {
            _validator.ValidateAndThrow(request);
            var user = _context.Users.Include(x => x.UserUserCases).Where(x => x.Id == request.Id).FirstOrDefault();

            if (user == null)
            {
                throw new EntityNotFoundException(request.Id, typeof(WatchShop.Domain.User));
            }
            user.GroupId = request.GroupId;
            var useCases      = new List <WatchShop.Domain.UserUserCase>();
            var useCasesList  = _context.UseCases.ToList();
            var adminUseCases = useCasesList.Where(x => x.Id != 8).Select(x => x.Id);
            var userUseCases  = useCasesList.Where(x => !x.AdminCase).Select(x => x.Id);

            if (user.GroupId == 1)
            {
                foreach (var useCase in adminUseCases)
                {
                    useCases.Add(new WatchShop.Domain.UserUserCase
                    {
                        UseCaseId = useCase,
                        UserId    = user.Id
                    });
                }
            }
            else
            {
                foreach (var useCase in userUseCases)
                {
                    useCases.Add(new WatchShop.Domain.UserUserCase
                    {
                        UseCaseId = useCase,
                        UserId    = user.Id
                    });
                }
            }
            user.UserUserCases = useCases;
            _context.SaveChanges();
        }
예제 #2
0
 public IActionResult ChangeGroup(int id, [FromBody] ChangeUserGroupDto dto, [FromServices] IAdminChangeUser command)
 {
     dto.Id = id;
     _executor.ExecuteCommand(command, dto);
     return(StatusCode(StatusCodes.Status204NoContent));
 }