private bool ExecuteAccountEdit(string email, SingleAccountEdit editOperation) { switch (editOperation.Flag) { case EditType.New: _logger.LogInformation("Creating user for email {} with permission {}", email, editOperation.Permission.ToString()); var emailCreated = _accountManager.CreateUser(email); var user = _accountManager.GetAccountInfoByEmail(email); editOperation.VersionStamp = user.LastUpdate; var emailSending = _emailService.SendMessage(email, _configuration.GetValue <string>("WelcomeEmail:Subject", ""), _configuration.GetValue <string>("WelcomeEmail:Text", "")); if (!emailSending.IsSuccessful) { _logger.LogError($"Tried to send an email to {email}, but it failed with {emailSending.ErrorMessage}"); } return(emailCreated && _accountManager.SetUserRole(email, editOperation)); case EditType.Update: _logger.LogInformation("Setting role of user {} to {}", email, editOperation.Permission.ToString()); return(_accountManager.SetUserRole(email, editOperation)); case EditType.Delete: _logger.LogInformation("Removing user with email {}", email); return(_accountManager.RemoveUserByEmail(email)); default: throw new Exception("Unsupported operation"); } }