public async Task <ActionResult <EfManager> > PostManager([FromBody] Manager managerDto) { if (managerDto == null) { return(BadRequest("Data is missing")); } var manager = new EfManager(); manager.Email = managerDto.Email.ToLowerInvariant(); var emailExist = await _context.Accounts.Where(u => u.Email == manager.Email) .FirstOrDefaultAsync().ConfigureAwait(false); if (emailExist != null) { ModelState.AddModelError("Email", "Email already in use"); return(BadRequest(ModelState)); } manager.FirstName = managerDto.FirstName; manager.LastName = managerDto.LastName; var account = new EfAccount() { Email = manager.Email, IsManager = true }; account.PwHash = HashPassword(managerDto.Password, _appSettings.BcryptWorkfactor); manager.Account = account; _context.Accounts.Add(account); _context.Managers.Add(manager); await _context.SaveChangesAsync(); return(Created(manager.EfManagerId.ToString(), manager)); }
public IActionResult PutManager(long id, EfManager manager) { if (manager == null) { return(BadRequest($"Input parameter {typeof(EfManager)} {nameof(manager)} was null.")); } if (id != manager.EfManagerId) { return(BadRequest("Id Mismatch")); } // Check if new email var old = _managerRepository.GetBy(selector: source => source, predicate: m => m.EfManagerId == id).FirstOrDefault(); if (old == null) { return(BadRequest($"Manager not found with id {id}")); } // Update account var account = _accountRepository.GetBy( selector: source => source, predicate: a => a.EfAccountId == manager.EfAccountId, disableTracking: false).FirstOrDefault(); if (account == null) { return(BadRequest("Account of manager not found.")); } account.Email = manager.Email; old.Email = manager.Email; old.FirstName = manager.FirstName; old.LastName = manager.LastName; _accountRepository.Update(account); _managerRepository.Update(old); return(Ok()); }
public async Task <IActionResult> PutManager(long id, EfManager manager) { if (id != manager.EfManagerId) { return(BadRequest()); } // Check if new email var old = await _context.Managers.FindAsync(manager.EfManagerId); if (old.Email != manager.Email) { // Update account var account = await _context.Accounts.FindAsync(manager.EfAccountId); account.Email = manager.Email; } _context.Entry(manager).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ManagerExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }