Exemplo n.º 1
0
        public async Task <RoleCreateOrEditOutput> CreateRole(RoleCreateOrEditInput input)
        {
            var output          = new RoleCreateOrEditOutput();
            var isRoleNameExist = await _roleRepository
                                  .GetAll()
                                  .Where(x => x.Name == input.Name.Trim() && !x.IsDeleted)
                                  .AnyAsync();

            if (isRoleNameExist)
            {
                output.Result = RoleCreateOrEditMessage.RoleNameExist;
                return(output);
            }
            var id = Guid.NewGuid();

            using (var tran = _context.Database.BeginTransaction())
            {
                await _roleRepository.CreateRole(new Role
                {
                    Id   = id,
                    Name = input.Name
                });

                var list = new List <Permission>();
                foreach (var claim in input.Claims)
                {
                    list.Add(new Permission
                    {
                        Id       = Guid.NewGuid(),
                        Category = RoleCategory.GetCategory(claim),
                        Claim    = claim,
                        RoleId   = id
                    });
                }
                await _permissionRepository.CreatePermissionByRoleId(list);

                tran.Commit();
            }
            output.Id     = id;
            output.Result = RoleCreateOrEditMessage.RoleCreateSuccess;
            return(output);
        }
Exemplo n.º 2
0
        public async Task <IActionResult> CreateOrEditRole(RoleCreateOrEditRequest request)
        {
            var validationResult = await _roleCreateOrEditValidator.ValidateAsync(request);

            if (!validationResult.IsValid)
            {
                return(BadRequest(validationResult.Errors));
            }
            if (request.Id != null)
            {
                return(BadRequest());
            }
            var input = new RoleCreateOrEditInput
            {
                Id     = request.Id,
                Claims = request.Claims,
                Name   = request.Name
            };
            var res = await _roleService.CreateRole(input);

            return(Ok(res));
        }