public IActionResult Update([FromBody] UserAccount user) { using (var transaction = dbContext.Database.BeginTransaction()) { try { UserAccount userForUpdate = dbContext.UserAccounts.Find(user.UserID); if (userForUpdate != null) { userForUpdate.UserName = user.UserName; userForUpdate.Password = user.Password; userForUpdate.IsActive = user.IsActive; userForUpdate.UpdatedBy = user.UpdatedBy; userForUpdate.UpdatedOn = DateTime.Now; dbContext.SaveChanges(); List <UserAccountGroup> uagToDelete = dbContext.UserAccountGroups .Where(uag => uag.UserAccountID == user.UserID && !user.UserGroups.Any(ug => ug.ID == uag.UserGroupID)) .ToList(); if (uagToDelete != null && uagToDelete.Count > 0) { dbContext.UserAccountGroups.RemoveRange(uagToDelete); dbContext.SaveChanges(); } foreach (UserGroup ug in user.UserGroups) { int count = dbContext.UserAccountGroups.Where(x => x.UserAccountID == user.UserID && x.UserGroupID == ug.ID).Count(); if (count == 0) { UserAccountGroup uag = new UserAccountGroup(); uag.UserAccountID = user.UserID; uag.UserGroupID = ug.ID; dbContext.UserAccountGroups.Add(uag); dbContext.SaveChanges(); } } transaction.Commit(); return(Ok(user)); } else { throw new Exception($"User Not found with a user ID of '{user.UserID}'."); } } catch (Exception ex) { transaction.Rollback(); return(BadRequest(GetErrorMessage(ex))); } } }
public IActionResult Add([FromBody] UserAccount user) { using (var transaction = dbContext.Database.BeginTransaction()) { try { UserAccount userToAdd = new UserAccount() { UserID = user.UserID, UserName = user.UserName, Password = user.Password, IsActive = user.IsActive, CreatedOn = DateTime.Now, CreatedBy = user.CreatedBy, UpdatedOn = DateTime.Now, UpdatedBy = user.UpdatedBy }; dbContext.UserAccounts.Add(userToAdd); dbContext.SaveChanges(); foreach (UserGroup ug in user.UserGroups) { int count = dbContext.UserAccountGroups.Where(x => x.UserAccountID == user.UserID && x.UserGroupID == ug.ID).Count(); if (count == 0) { UserAccountGroup uag = new UserAccountGroup(); uag.UserAccountID = user.UserID; uag.UserGroupID = ug.ID; dbContext.UserAccountGroups.Add(uag); dbContext.SaveChanges(); } } transaction.Commit(); return(Ok(user)); } catch (Exception ex) { transaction.Rollback(); return(BadRequest(GetErrorMessage(ex))); } } }