Exemplo n.º 1
0
        public async Task <IActionResult> RegisterAsync([FromBody] RegisterInputModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ResponseViewModel.Error("Validation error, please enter the require fields")));
            }

            return(Ok(await _userService.RegisterAsync(model)));
        }
Exemplo n.º 2
0
        /// <summary>
        /// This Method Handles User Registration
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <ResponseViewModel> RegisterAsync(RegisterInputModel model)
        {
            try
            {
                var user = new AppUser
                {
                    UserName = model.Email,
                    Email    = model.Email,
                    GUID     = new Guid().ToString()
                };

                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    var emailHtmlTemplate = _emailService.GetEmailTemplate(_env, EmailTemplate.Welcome(model.Platform ?? Res.WEB_PLATFORM));

                    var code = _otpService.GenerateCode(user.Id, _settings.OtpExpirationInMinutes, model.Platform ?? Res.WEB_PLATFORM);

                    Dictionary <string, string> contentReplacements = new Dictionary <string, string>()
                    {
                        { Placeholder.EMAIL, user.Email },
                        { Placeholder.OTP, (model.Platform ?? Res.WEB_PLATFORM).ToLower() == Res.WEB_PLATFORM ? $"{_settings.WebApp.BaseUrl}{_settings.WebApp.Register}{code}" : code },
                    };

                    if (contentReplacements != null)
                    {
                        foreach (KeyValuePair <string, string> pair in contentReplacements)
                        {
                            emailHtmlTemplate = emailHtmlTemplate.Replace(pair.Key, pair.Value);
                        }
                    }

                    _ = _emailService.SendEmail(model.Email, Res.ACCOUNT_SETUP, emailHtmlTemplate);

                    if (!model.IsAdmin)
                    {
                        _ = await _userManager.AddToRoleAsync(user, model.UserType == UserTypeEnum.VENDOR?UserType.VENDOR : UserType.SUBSCRIBER);
                    }
                    else
                    {
                        _ = await _userManager.AddToRoleAsync(user, UserType.ADMIN);

                        user.DepartmentId = model.DepartmentId;
                        _ = await _userManager.UpdateAsync(user);
                    }


                    var mappedUser = _mapper.Map <AppUser, RegisterViewModel>(user);

                    return(ResponseViewModel.Create(true).AddStatusMessage(ResponseMessageViewModel.SUCCESSFUL).AddData(mappedUser).AddStatusCode(ResponseErrorCodeStatus.OK));
                }
                else
                {
                    return(ResponseViewModel.Error($"{ResponseMessageViewModel.UNABLE_TO_CREATE} {result.Errors.First().Description} ", ResponseErrorCodeStatus.ACCOUNT_ALREADY_EXIST));
                }
            }
            catch (Exception e)
            {
                return(ResponseViewModel.Create(false, ResponseMessageViewModel.UNSUCCESSFUL).AddStatusCode(ResponseErrorCodeStatus.FAIL).AddData(e));
            }
        }