Ejemplo n.º 1
0
        private async Task AssertNewUserIsPersisted(UserRegistrationResponse response)
        {
            var repository = _fixture.GetService <IAggregateStore <User> >();
            var user       = await repository.Load(response.Id);

            Assert.NotNull(user);
        }
        public UserRegistrationPage()
        {
            InitializeComponent();
            NavigationPage.SetHasNavigationBar(this, false);
            // ImageCtryFlage.Source = "https://restcountries.eu/data/aut.svg";
            _objCountryListResponse      = new CountryListResponse();
            _objUserRegistrationResponse = new UserRegistrationResponse();
            _objUserRegistrationRequest  = new UserRegistrationRequest();
            BindingContext       = _objUserRegistrationRequest;
            _apiServices         = new RestApi();
            _baseUrl             = Domain.GetCountryApiConstant;
            _baseUrlSubmitRecord = Settings.Url + Domain.UserSignUpApiConstant;

            LoadCountryData();

            Device.BeginInvokeOnMainThread(() => {
                Device.StartTimer(TimeSpan.FromSeconds(1), () =>
                {
                    if (Settings.CountryCode > 0)
                    {
                        ImageCtryFlage.Source = Settings.CountryFlag;
                    }
                    return(true);
                });
                //if (Settings.CountryCode > 0)
                //{
                //    ImageCtryFlage.Source = Settings.CountryFlag;
                //}
            });
        }
        public RegisterStepThreePage(UserRegistrationRequest objUserRegistrationRequest, RetailerList objRetailerList)
        {
            InitializeComponent();
            NavigationPage.SetBackButtonTitle(this, "");
            XFLblTAC.Text    = $"T&C";
            _objRetailerList = new RetailerList();
            if (objRetailerList != null)
            {
                _objRetailerList = objRetailerList;

                imgCompanyLogo.Source   = objRetailerList.imagePath;
                XFLBLCompanyRate.Text   = $"{objRetailerList.rate:0.00}" + "c";
                XFBTN_Duration.Text     = objRetailerList.duration + " Months";
                xflblnoAccounttext.Text = "Haven't started electric service at this address yet? Call " + objRetailerList.retailerName + "at " + objRetailerList.phoneNumber + " and set up an account for this address. Then enter the 20-digit number to complete your order.";
            }

            _objUserRegistrationRequest = new UserRegistrationRequest();
            _objUserRegistrationRequest = objUserRegistrationRequest;

            this.BindingContext = _objUserRegistrationRequest;

            _objUserRegistrationResponse = new UserRegistrationResponse();

            _apiService     = new RestApi();
            _baseUrl        = Domain.Url + Domain.UserSignUpApiConstant;
            _objHeaderModel = new HeaderModel();
        }
Ejemplo n.º 4
0
        public UserRegistrationResponse UserRegistration(UserRegistrationRequest request)
        {
            UserDAL userDAL = new UserDAL();
            UserRegistrationResponse response = new UserRegistrationResponse();

            User user = userDAL.GetUserByUsername(request.Username);

            if (user != null)
            {
                response.StatusCode    = StatusCodes.Status_User_Exists;
                response.StatusMessage = "User already exists. Please login.";
            }
            else
            {
                user          = new User();
                user.Username = request.Username;
                user.Password = request.Password;
                user.Name     = request.Name;
                int insertResult = userDAL.Insert(user);
                if (insertResult == 0)
                {
                    response.StatusCode    = StatusCodes.Status_Register_Failed;
                    response.StatusMessage = "Unable to register. Please try again";
                }
            }

            return(response);
        }
        public async Task <IActionResult> RegisterUser(User newUser)
        {
            UserRegistrationResponse result = await _userService.RegisterUser(newUser);

            if (result?.Success ?? false)
            {
                return(NoContent());
            }
            return(Conflict(result?.ErrorMessage));
        }
Ejemplo n.º 6
0
        public void TestUserRegistration()
        {
            UserRegistrationRequest request = new UserRegistrationRequest();

            request.Username = "******";
            request.Password = new UserDAL().GetStringSha256Hash("12345");
            request.Name     = "Test 300";
            UserRegistrationResponse actual = bal.UserRegistration(request);

            Assert.AreEqual(StatusCodes.Status_Success, actual.StatusCode);
        }
Ejemplo n.º 7
0
 public AddUser()
 {
     InitializeComponent();
     NavigationPage.SetBackButtonTitle(this, "");
     _objUserRegistrationResponse = new UserRegistrationResponse();
     _objUserRegistrationRequest  = new UserRegistrationRequest();
     _objHeaderModel     = new HeaderModel();
     _apiService         = new RestApi();
     _baseUrl            = Domain.Url + Domain.UserSignUpApiConstant;
     this.BindingContext = _objUserRegistrationRequest;
 }
        public static UserRegistrationWebResponse AsWebResponse(this UserRegistrationResponse response)
        {
            var result = new UserRegistrationWebResponse
            {
                Errors       = response.Errors,
                Message      = response.Message,
                StatusCode   = response.StatusCode,
                IsSuccessful = response.IsSuccessful
            };

            return(result);
        }
Ejemplo n.º 9
0
        public ActionResult UserRegistration(string Username, string Password, string Name)
        {
            UserRegistrationRequest request = new UserRegistrationRequest();

            request.Username = Username;
            request.Password = new UserDAL().GetStringSha256Hash(Password);
            request.Name     = Name;
            IUserBAL userBAL = new UserBAL();
            UserRegistrationResponse response = userBAL.UserRegistration(request);

            return(Json(response));
        }
Ejemplo n.º 10
0
        public void User_Registration(UserRegistrationRequest request, UserRegistrationResponse response)
        {
            "Given a user registraion request"
            .x(() => request = GivenUserRequest());

            "When i make a user registration request"
            .x(async() => response = await MakeUserRegistrationRequest(request));

            "Then ensure the response is not null"
            .x(() => AssertResponseIsNotNull(response));

            "Then ensure that the user is persisted"
            .x(() => AssertNewUserIsPersisted(response));

            "And userRegistered Event is published"
            .x(() => AssertUserRegisteredEventWasPublished());
        }
Ejemplo n.º 11
0
        private async void XFBtnRegisterUser_Clicked(object sender, EventArgs e)
        {
            if (IsBusy)
            {
                return;
            }
            IsBusy = true;
            try
            {
                if (string.IsNullOrEmpty(_objUserRegistrationRequest.email) || string.IsNullOrEmpty(_objUserRegistrationRequest.password) || string.IsNullOrEmpty(_objUserRegistrationRequest.firstName) || string.IsNullOrEmpty(_objUserRegistrationRequest.lastName))
                {
                    await DisplayAlert("", "Please provide Account details!", "(X)");
                }
                else
                {
                    _objHeaderModel.TokenCode    = Settings.TokenCode;
                    _objUserRegistrationResponse = await _apiService.UserRegistrationAsync(new Get_API_Url().CommonBaseApi(_baseUrl), false, _objHeaderModel, _objUserRegistrationRequest);

                    var Response = _objUserRegistrationResponse.response;
                    if (Response.statusCode == 200)
                    {
                        Device.BeginInvokeOnMainThread(() => {
                            DisplayAlert("Info!", Response.message, "(X)");
                        });

                        await App.NavigationPage.Navigation.PushAsync(new LoginPage());
                    }
                    else
                    {
                        Device.BeginInvokeOnMainThread(() => {
                            DisplayAlert("Error!", Response.message, "(X)");
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                var msg = ex.Message;
            }
            finally
            {
                IsBusy = false;
            }
            //  Navigation.PushAsync(new ElectricityAndGasListing());
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Use registration data and
        /// save new user to db.
        /// </summary>
        /// <param name="registrationData"></param>
        /// <returns></returns>
        public async Task <UserRegistrationResponse> RegisterUser(RegistrationDto registrationData)
        {
            var user = _mapper.Map <ApplicationUser>(registrationData);

            try
            {
                var creationResult = await _userManager.CreateAsync(user, registrationData.Password);

                if (!creationResult.Succeeded)
                {
                    return(UserRegistrationResponse.Unsuccessful(creationResult));
                }

                await _userManager.AddToRoleAsync(user, Roles.User);
            }
            catch (Exception ex)
            {
                _logsManager.SaveLog(registrationData, ex.Message);
            }

            var token = await _authManager.GenerateJwtToken(user);

            return(UserRegistrationResponse.Successfull(token));
        }
        private async void BtnSignup_Clicked(object sender, EventArgs e)
        {
            try
            {
                if (!CrossConnectivity.Current.IsConnected)
                {
                    DependencyService.Get <IToast>().Show("No Network Connection!!");
                }
                else
                {
                    _objUserRegistrationRequest.CountryId = Settings.CountryCode;
                    if (string.IsNullOrEmpty(_objUserRegistrationRequest.FirstName) ||
                        string.IsNullOrEmpty(_objUserRegistrationRequest.LastName) ||
                        string.IsNullOrEmpty(_objUserRegistrationRequest.Email) ||
                        string.IsNullOrEmpty(_objUserRegistrationRequest.Password) ||
                        string.IsNullOrEmpty(_objUserRegistrationRequest.MobileNumber) ||
                        _objUserRegistrationRequest.CountryId < 0)
                    {
                        DependencyService.Get <IToast>().Show("All fields are Required!!");
                    }
                    else
                    {
                        if (!IsValid)
                        {
                            DependencyService.Get <IToast>().Show("Not a valid Email");
                        }
                        else
                        {
                            if (_objUserRegistrationRequest.Password.Length < 6 || _objUserRegistrationRequest.Password.Length > 20)
                            {
                                DependencyService.Get <IToast>().Show("password Should be in between 6 to 20 character long!");
                            }
                            else
                            {
                                if (_objUserRegistrationRequest.MobileNumber.Length < 10 || _objUserRegistrationRequest.MobileNumber.Length > 11)
                                {
                                    DependencyService.Get <IToast>().Show("Mobile Number Should be 10 character long!");
                                }
                                else
                                {
                                    await Navigation.PushPopupAsync(new LoadingPopPage());

                                    _objUserRegistrationResponse = await _apiServices.UserRegistrationAsync(new Get_API_Url().CommonBaseApi(_baseUrlSubmitRecord), false, new HeaderModel(), _objUserRegistrationRequest);

                                    var Response = _objUserRegistrationResponse.Response;
                                    if (Response.StatusCode == 200)
                                    {
                                        DependencyService.Get <IToast>().Show(Response.Message);

                                        await App.NavigationPage.Navigation.PushAsync(new LoginPage());

                                        await Navigation.PopAllPopupAsync();
                                    }
                                    else
                                    {
                                        await Navigation.PopAllPopupAsync();

                                        DependencyService.Get <IToast>().Show(Response.Message);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                var msg = ex.Message;
            }
        }
Ejemplo n.º 14
0
        private static void Main(string[] args)
        {
            Task.Run(() =>
            {
                try
                {
                    // initialize settings
                    Init();

                    Console.WriteLine($"Take it easy, the console will display important messages, actually, it's running!! :)");

                    ConnectionFactory factory = new ConnectionFactory();
                    factory.UserName          = ApplicationSettings.RabbitMQUsername;
                    factory.Password          = ApplicationSettings.RabbitMQPassword;
                    factory.HostName          = ApplicationSettings.RabbitMQHostname;
                    factory.Port = ApplicationSettings.RabbitMQPort;
                    factory.RequestedHeartbeat     = 60;
                    factory.DispatchConsumersAsync = true;

                    var connection = factory.CreateConnection();
                    var channel    = connection.CreateModel();

                    channel.QueueDeclare(queue: ApplicationSettings.UserRegistrationQueueName,
                                         durable: true,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);

                    channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false);

                    var consumer       = new AsyncEventingBasicConsumer(channel);
                    consumer.Received += async(model, ea) =>
                    {
                        UserRegistrationResponse response = new UserRegistrationResponse
                        {
                            IsSucceded = true,
                            ResultId   = (int)UserRegistrationResponseEnum.Success
                        };

                        // forced-to-disposal
                        WalletRegistrationInfo walletInfo       = null;
                        NBitcoin.Wordlist nwordlist             = null;
                        Nethereum.HdWallet.Wallet wallet        = null;
                        Nethereum.Web3.Accounts.Account account = null;
                        string jsonDecrypted = string.Empty;
                        string jsonEncrypted = string.Empty;
                        User user            = null;
                        UserActivationDataHelper userActivationDataHelper = null;
                        MailHelper mailHelper = null;

                        try
                        {
                            byte[] body = ea.Body;
                            var message = Encoding.UTF8.GetString(body);

                            var decrypted = string.Empty;
                            decrypted     = NETCore.Encrypt.EncryptProvider.AESDecrypt(message, secret);

                            var obj_decrypted = JsonConvert.DeserializeObject <UserRegistrationMessage>(decrypted);

                            var aeskey_wallet = NETCore.Encrypt.EncryptProvider.CreateAesKey();
                            var key_wallet    = aeskey_wallet.Key;

                            nwordlist = new NBitcoin.Wordlist(wordlist.ToArray(), ' ', "english");
                            wallet    = new Nethereum.HdWallet.Wallet(nwordlist, NBitcoin.WordCount.Eighteen, key_wallet);
                            account   = wallet.GetAccount(0);

                            walletInfo = new WalletRegistrationInfo();

                            walletInfo.address    = account.Address;
                            walletInfo.privateKey = account.PrivateKey;
                            walletInfo.password   = key_wallet;
                            walletInfo.mnemonic   = string.Join(" ", wallet.Words);

                            jsonDecrypted = JsonConvert.SerializeObject(walletInfo);

                            var aeskey_data = NETCore.Encrypt.EncryptProvider.CreateAesKey();
                            var key_data    = aeskey_data.Key;
                            jsonEncrypted   = NETCore.Encrypt.EncryptProvider.AESEncrypt(jsonDecrypted, key_data);

                            string identicon = string.Empty;
                            try
                            {
                                Identicon.FromValue($"{account.Address}", size: 160).SaveAsPng($"{account.Address}.png");
                                byte[] binary = System.IO.File.ReadAllBytes($"{account.Address}.png");
                                identicon     = Convert.ToBase64String(binary);
                                System.IO.File.Delete($"{account.Address}.png");
                                Console.WriteLine($">> Identicon deleted from local storage");
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine($">> Exception: {ex.Message}, StackTrace: {ex.StackTrace}");

                                if (ex.InnerException != null)
                                {
                                    Console.WriteLine($">> Inner Exception Message: {ex.InnerException.Message}, Inner Exception StackTrace: {ex.InnerException.StackTrace}");
                                }

                                try
                                {
                                    System.IO.File.Delete($"{account.Address}.png");
                                    Console.WriteLine($">> Identicon deleted from local storage");
                                }
                                catch { }
                            }

                            userActivationDataHelper = new UserActivationDataHelper(mongoDBConnectionInfo);

                            // get user by email
                            user = userActivationDataHelper.GetUser(obj_decrypted.email);

                            if (user != null)
                            {
                                throw new BusinessException((int)UserRegistrationResponseEnum.FailedEmailAlreadyExists);
                            }

                            user           = new User();
                            user.fullname  = obj_decrypted.fullname;
                            user.email     = obj_decrypted.email;
                            user.address   = account.Address;
                            user.dataenc   = jsonEncrypted;
                            user.datakey   = key_data;
                            user.identicon = identicon;

                            // register user
                            await userActivationDataHelper.RegisterUserAsync(user);

                            mailHelper = new MailHelper();

                            // send email
                            await mailHelper.SendRegistrationEmailAsync(user.email, user.fullname);
                            Console.WriteLine($">> Email: {user.email} activated successfully");

                            channel.BasicAck(ea.DeliveryTag, false);
                            Console.WriteLine($">> Acknowledgement completed, delivery tag: {ea.DeliveryTag}");
                        }
                        catch (Exception ex)
                        {
                            if (ex is BusinessException)
                            {
                                response.IsSucceded = false;
                                response.ResultId   = ((BusinessException)ex).ResultId;

                                string message = EnumDescription.GetEnumDescription((UserRegistrationResponseEnum)response.ResultId);
                                Console.WriteLine($">> Message information: {message}");
                            }
                            else
                            {
                                Console.WriteLine($">> Exception: {ex.Message}, StackTrace: {ex.StackTrace}");

                                if (ex.InnerException != null)
                                {
                                    Console.WriteLine($">> Inner Exception Message: {ex.InnerException.Message}, Inner Exception StackTrace: {ex.InnerException.StackTrace}");
                                }
                            }
                        }
                        finally
                        {
                            nwordlist     = null;
                            wallet        = null;
                            account       = null;
                            walletInfo    = null;
                            jsonDecrypted = null;
                            jsonEncrypted = null;
                            user          = null;
                            userActivationDataHelper.Dispose();
                            mailHelper.Dispose();
                        }
                    };

                    String consumerTag = channel.BasicConsume(ApplicationSettings.UserRegistrationQueueName, false, consumer);
                }
                catch (Exception ex)
                {
                    Console.WriteLine($">> Exception: {ex.Message}, StackTrace: {ex.StackTrace}");

                    if (ex.InnerException != null)
                    {
                        Console.WriteLine($">> Inner Exception Message: {ex.InnerException.Message}, Inner Exception StackTrace: {ex.InnerException.StackTrace}");
                    }
                }
            });

            // handle Control+C or Control+Break
            Console.CancelKeyPress += (o, e) =>
            {
                Console.WriteLine("Exit");

                // allow the manin thread to continue and exit...
                waitHandle.Set();
            };

            // wait
            waitHandle.WaitOne();
        }
Ejemplo n.º 15
0
        /// <summary>
        ///     Create new Registration
        /// </summary>
        public object Post(UserRegistrationRequest request)
        {
            if (HostContext.GlobalRequestFilters == null ||
                !HostContext.GlobalRequestFilters.Contains(ValidationFilters.RequestFilter))    //Already gets run
            {
                if (UserRegistrationRequestValidator != null)
                {
                    UserRegistrationRequestValidator.ValidateAndThrow(request, ApplyTo.Post);
                }
            }

            var userAuthRepo = AuthRepo.AsUserAuthRepository(GetResolver());

            if (ValidateFn != null)
            {
                var validateResponse = ValidateFn(this, HttpMethods.Post, request);
                if (validateResponse != null)
                {
                    return(validateResponse);
                }
            }

            if (string.IsNullOrEmpty(request.DisplayName))
            {
                request.DisplayName = request.Email;
            }

            UserRegistrationResponse response = null;
            var session      = this.GetSession();
            var newUserAuth  = ToUserAuth(request);
            var existingUser = userAuthRepo.GetUserAuth(session, null);

            var registerNewUser = existingUser == null;
            var user            = registerNewUser
                ? userAuthRepo.CreateUserAuth(newUserAuth, request.Password)
                : userAuthRepo.UpdateUserAuth(existingUser, newUserAuth, request.Password);

            if (request.AutoLogin.GetValueOrDefault())
            {
                using (var authService = base.ResolveService <AuthenticateService>())
                {
                    var authResponse = authService.Post(
                        new Authenticate
                    {
                        provider = "credentials",
                        UserName = request.UserName ?? request.Email,
                        Password = request.Password,
                        Continue = request.Continue
                    });

                    if (authResponse is IHttpError)
                    {
                        throw (Exception)authResponse;
                    }

                    var typedResponse = authResponse as AuthenticateResponse;
                    if (typedResponse != null)
                    {
                        response = new UserRegistrationResponse
                        {
                            SessionId   = typedResponse.SessionId,
                            DisplayName = typedResponse.DisplayName,
                            ReferrerUrl = typedResponse.ReferrerUrl,
                            UserId      = user.Id.ToString(CultureInfo.InvariantCulture),
                        };
                    }
                }
            }

            if (registerNewUser)
            {
                session = this.GetSession();
                session.OnRegistered(this);
            }

            if (response == null)
            {
                response = new UserRegistrationResponse
                {
                    UserId      = user.Id.ToString(CultureInfo.InvariantCulture),
                    ReferrerUrl = request.Continue
                };
            }

            var isHtml = Request.ResponseContentType.MatchesContentType(MimeTypes.Html);

            if (isHtml)
            {
                if (string.IsNullOrEmpty(request.Continue))
                {
                    return(response);
                }

                return(new HttpResult(response)
                {
                    Location = request.Continue
                });
            }

            return(response);
        }
        private async void XFBtnRegisterUser_Clicked(object sender, EventArgs e)
        {
            if (IsBusy)
            {
                return;
            }
            IsBusy = true;
            try
            {
                if (_objUserRegistrationRequest.isMedEdAccountat)
                {
                    if (string.IsNullOrEmpty(_objUserRegistrationRequest.medEdAccountatthisAddress))
                    {
                        await DisplayAlert("", "Please provide Account Number!", "(X)");
                    }
                    else
                    {
                        _objHeaderModel.TokenCode    = Settings.TokenCode;
                        _objUserRegistrationResponse = await _apiService.UserRegistrationAsync(new Get_API_Url().CommonBaseApi(_baseUrl), true, _objHeaderModel, _objUserRegistrationRequest);

                        var Response = _objUserRegistrationResponse.response;
                        if (Response.statusCode == 200)
                        {
                            Device.BeginInvokeOnMainThread(() => {
                                DisplayAlert("", Response.message, "(X)");
                            });

                            await App.NavigationPage.Navigation.PushAsync(new CongratulationPage());
                        }
                        else
                        {
                            Device.BeginInvokeOnMainThread(() => {
                                DisplayAlert("", Response.message, "(X)");
                            });
                        }
                    }
                }
                else
                {
                    _objHeaderModel.TokenCode    = Settings.TokenCode;
                    _objUserRegistrationResponse = await _apiService.UserRegistrationAsync(new Get_API_Url().CommonBaseApi(_baseUrl), true, _objHeaderModel, _objUserRegistrationRequest);

                    var Response = _objUserRegistrationResponse.response;
                    if (Response.statusCode == 200)
                    {
                        await DisplayAlert("", "Registeration Successful without MedEdAccount!", "(X)");

                        await App.NavigationPage.Navigation.PushAsync(new LoginPage());
                    }
                    else
                    {
                        Device.BeginInvokeOnMainThread(() => {
                            DisplayAlert("", Response.message, "(X)");
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                var msg = ex.Message;
            }
            finally
            {
                IsBusy = false;
            }
            //  Navigation.PushAsync(new ElectricityAndGasListing());
        }
Ejemplo n.º 17
0
 public UserResponse(UserRegistrationResponse userRegistrationResponse)
 {
     UserRegistrationResponse = userRegistrationResponse;
 }
Ejemplo n.º 18
0
 private void AssertResponseIsNotNull(UserRegistrationResponse response)
 {
     Assert.NotNull(response);
 }
        public async Task <IActionResult> Post()
        {
            // non-forced-to-disposal
            UserRegistrationResponse response = new UserRegistrationResponse
            {
                IsSucceded = true,
                ResultId   = (int)UserRegistrationResponseEnum.Success
            };

            // forced-to-disposal
            UserRegistrationRequest userRegistrationRequest = null;
            MongoDBConnectionInfo   mongoDBConnectionInfo   = null;
            KeyVaultConnectionInfo  keyVaultConnectionInfo  = null;
            User user = null;

            try
            {
                userRegistrationRequest          = new UserRegistrationRequest();
                userRegistrationRequest.Email    = HttpContext.User.FindFirst("preferred_username").Value;
                userRegistrationRequest.Fullname = ((HttpContext.User.FindFirst("name") != null) ? HttpContext.User.FindFirst("name").Value : string.Empty);

                if (string.IsNullOrEmpty(userRegistrationRequest.Fullname))
                {
                    throw new BusinessException((int)UserRegistrationResponseEnum.FailedEmptyFullname);
                }

                mongoDBConnectionInfo = new MongoDBConnectionInfo()
                {
                    ConnectionString = ApplicationSettings.ConnectionString,
                    DatabaseId       = ApplicationSettings.DatabaseId,
                    UserCollection   = ApplicationSettings.UserCollection
                };

                using (UserRegistrationDataHelper userRegistrationDataHelper = new UserRegistrationDataHelper(mongoDBConnectionInfo))
                {
                    user = userRegistrationDataHelper.GetUser(userRegistrationRequest.Email);
                }

                if (user == null)
                {
                    keyVaultConnectionInfo = new KeyVaultConnectionInfo()
                    {
                        CertificateName    = ApplicationSettings.KeyVaultCertificateName,
                        ClientId           = ApplicationSettings.KeyVaultClientId,
                        ClientSecret       = ApplicationSettings.KeyVaultClientSecret,
                        KeyVaultIdentifier = ApplicationSettings.KeyVaultIdentifier
                    };

                    using (MessageQueueHelper messageQueueHelper = new MessageQueueHelper())
                    {
                        UserRegistrationMessage userRegistrationMessage = new UserRegistrationMessage()
                        {
                            fullname = userRegistrationRequest.Fullname,
                            email    = userRegistrationRequest.Email
                        };

                        await messageQueueHelper.QueueMessageAsync(userRegistrationMessage, ApplicationSettings.UserRegistrationQueueName, keyVaultConnectionInfo);
                    }
                }
                else
                {
                    response.ResultId = (int)UserRegistrationResponseEnum.SuccessAlreadyExists;
                }
            }
            catch (Exception ex)
            {
                response.IsSucceded = false;

                if (ex is BusinessException)
                {
                    response.ResultId = ((BusinessException)ex).ResultId;
                }
                else
                {
                    response.ResultId = (int)UserRegistrationResponseEnum.Failed;

                    this.logger.LogError($">> Exception: {ex.Message}, StackTrace: {ex.StackTrace}");

                    if (ex.InnerException != null)
                    {
                        this.logger.LogError($">> Inner Exception Message: {ex.InnerException.Message}, Inner Exception StackTrace: {ex.InnerException.StackTrace}");
                    }
                }
            }
            finally
            {
                userRegistrationRequest = null;
                mongoDBConnectionInfo   = null;
                keyVaultConnectionInfo  = null;
                user = null;

                GC.Collect();
            }

            string message = EnumDescription.GetEnumDescription((UserRegistrationResponseEnum)response.ResultId);

            this.logger.LogInformation($">> Message information: {message}");

            return((response.IsSucceded) ? (ActionResult) new OkObjectResult(new { message = message }) : (ActionResult) new BadRequestObjectResult(new { message = message }));
        }