예제 #1
0
        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");
            }
        }