Beispiel #1
0
        public Task <UserActivationUiModel> UpdateUserActivationΑsync(Guid userIdToBeActivated, Guid accountIdToActivateThisUser,
                                                                      AccountForActivationModification activationAccount)
        {
            var response =
                new UserActivationUiModel()
            {
                Message = "START_ACTIVATION"
            };

            if (userIdToBeActivated == Guid.Empty || activationAccount?.ActivationKey == Guid.Empty)
            {
                response.Message = "ERROR_INVALID_ACTIVATION_MODEL";
                return(Task.Run(() => response));
            }

            try
            {
                var userToBeActivated = ThrowExceptionIfUserDoesNotExist(userIdToBeActivated, activationAccount.ActivationKey);
                ThrowExcIfUserCanNotBeUpdated(userToBeActivated);

                userToBeActivated.Activate();
                userToBeActivated.InjectWithAudit(accountIdToActivateThisUser);


                Log.Debug(
                    $"Activate User: {userIdToBeActivated}" +
                    "--ActivateUser--  @NotComplete@ [ActivateUserProcessor]. " +
                    "Message: Just Before MakeItPersistence");
                MakeUserPersistent(userToBeActivated);

                Log.Debug(
                    $"Activate User: {userIdToBeActivated}" +
                    "--ActivateUser--  @Complete@ [ActivateUserProcessor]. " +
                    "Message: Just After MakeItPersistence");

                response = ThrowExcIfUserWasNotBeActivateAfterPersistent(userIdToBeActivated);

                response.Message = "SUCCESS_ACTIVATION";
            }
            catch (InvalidUserException e)
            {
                response.Message = "ERROR_INVALID_USER_MODEL";
                Log.Error(
                    $"Activate User: {userIdToBeActivated}" +
                    $"Error Message:{response.Message}" +
                    "--ActivateUser--  @NotComplete@ [ActivateUserProcessor]. " +
                    $"Broken rules: {e.BrokenRules}");
            }
            catch (UserDoesNotExistException ex)
            {
                response.Message = "ERROR_USER_DOES_NOT_EXISTS";
                Log.Error(
                    $"Activate User: {userIdToBeActivated}" +
                    $"Error Message:{response.Message}" +
                    "--ActivateUser--  @fail@ [ActivateUserProcessor]. " +
                    $"@innerfault:{ex?.Message} and {ex?.InnerException}");
            }
            catch (UserDoesNotActivatedAfterMadePersistentException exx)
            {
                response.Message = "ERROR_USER_NOT_ACTIVATE_PERSISTENT";
                Log.Error(
                    $"Activate User: {userIdToBeActivated}" +
                    $"Error Message:{response.Message}" +
                    "--ActivateUser--  @fail@ [ActivateUserProcessor]." +
                    $" @innerfault:{exx?.Message} and {exx?.InnerException}");
            }
            catch (Exception exxx)
            {
                response.Message = "UNKNOWN_ERROR";
                Log.Error(
                    $"Activate User: {userIdToBeActivated}" +
                    $"Error Message:{response.Message}" +
                    $"--ActivateUser--  @fail@ [ActivateUserProcessor]. " +
                    $"@innerfault:{exxx.Message} and {exxx.InnerException}");
            }

            return(Task.Run(() => response));
        }
        public async Task <IActionResult> PutAccountActivateAsync(Guid userIdToBeActivated, [FromBody] AccountForActivationModification accountForActivation)
        {
            if (userIdToBeActivated == Guid.Empty || accountForActivation.ActivationKey == Guid.Empty)
            {
                return(BadRequest());
            }

            var userAudit = await _inquiryUserProcessor.GetUserByLoginAsync(GetEmailFromClaims());

            if (userAudit == null)
            {
                return(BadRequest(new { errorMessage = "USER_ACTION_NOT_EXISTS" }));
            }

            if (!userAudit.IsActivated)
            {
                return(BadRequest(new { errorMessage = "USER_ACTION_NOT_ALLOWED" }));
            }

            await _activateUserProcessor.UpdateUserActivationΑsync(userIdToBeActivated, userAudit.Id, accountForActivation);

            return(Ok(await _inquiryUserProcessor.GetUserByIdAsync(userIdToBeActivated)));
        }