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))); }
/// <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)); } }