예제 #1
0
        public IActionResult CreateAccount(
            [FromBody] AccountForCreateDto account, bool includeForms = false)
        {
            if (account == null)
            {
                return(BadRequest());
            }

            if (account.Title == "")
            {
                ModelState.AddModelError("Title", "Title cannot be empty.");
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var finalAccount = Mapper.Map <Entities.Account>(account);

            _accountRepository.AddAccount(finalAccount);

            if (!_accountRepository.Save())
            {
                return(StatusCode(500, "A problem happened while handling your request."));
            }

            return(Ok(finalAccount));
        }
예제 #2
0
        public async Task <IActionResult> CreateUser(AccountForCreateDto userForCreate)
        {
            var userToCreate = new Account
            {
                Name = userForCreate.Name,
                //Fullname = userForCreate.Fullname,
                //Email = userForCreate.Email,
                DepartmentId = userForCreate.Department.Id
            };

            foreach (var role in userForCreate.AccountRoles)
            {
                userToCreate.AccountRoles.Add(new AccountRole
                {
                    Account = userToCreate,
                    RoleId  = role.Id
                });
            }
            _context.Add(userToCreate);
            if (await _context.SaveChangesAsync() > 0)
            {
                var createdUser = _mapper.Map <AccountForListDto>(userToCreate);
                return(Ok(createdUser));
            }
            return(BadRequest("Creating user failed on save"));
        }
예제 #3
0
        public async Task <IActionResult> UpdateUser(int userId, AccountForCreateDto userForUpdate)
        {
            var userToUpdate = await _context.Accounts
                               .Include(u => u.AccountRoles)
                               .FirstOrDefaultAsync(d => d.Id == userId);

            if (userToUpdate == null)
            {
                return(NotFound());
            }
            userToUpdate.Name         = userForUpdate.Name;
            userToUpdate.DepartmentId = userForUpdate.Department.Id;
            // MUST HAVE UPDATE METHOD!
            List <AccountRole> userRolesToBeDeleted = userToUpdate.AccountRoles
                                                      .Where(c1 => userForUpdate.AccountRoles.All(c2 => c2.Id != c1.RoleId)).ToList();

            foreach (AccountRole role in userRolesToBeDeleted)
            {
                userToUpdate.AccountRoles.Remove(role);
            }
            List <RoleForListDto> userRolesToBeAdded = userForUpdate.AccountRoles
                                                       .Where(c1 => userToUpdate.AccountRoles.All(c2 => c2.RoleId != c1.Id)).ToList();

            foreach (RoleForListDto role in userRolesToBeAdded)
            {
                userToUpdate.AccountRoles.Add(new AccountRole
                {
                    RoleId    = role.Id,
                    AccountId = userToUpdate.Id
                });
            }
            _context.Update(userToUpdate);
            if (await _context.SaveChangesAsync() > 0)
            {
                var updatedUserFromDb = await _context.Accounts
                                        .Include(u => u.AccountRoles).ThenInclude(r => r.Role)
                                        .Include(u => u.Department)
                                        .FirstOrDefaultAsync(u => u.Id == userToUpdate.Id);

                var updatedUser = _mapper.Map <AccountForListDto>(updatedUserFromDb);
                return(Ok(updatedUser));
            }
            return(BadRequest("Failed to update user"));
        }