public IActionResult CreateIndividual([FromBody] SubcriberIndividualInputModel request) { if (!ModelState.IsValid) { return(BadRequest()); } return(Ok(_subscriberAppService.AddNewSubscriberIndividual(request).Result)); }
public async Task <ResponseViewModel> AddNewSubscriberIndividual(SubcriberIndividualInputModel model) { var existingUserResult = _userManager.FindByEmailAsync(model.Email).Result; if (existingUserResult != null) { return(Failed(ResponseMessageViewModel.ACCOUNT_ALREADY_EXITS, ResponseErrorCodeStatus.ACCOUNT_ALREADY_EXIST)); } var newUser = new AppUser { UserName = model.Email, FirstName = model.FirstName, LastName = model.LastName, Email = model.Email, PhoneNumber = model.PhoneNumber, MailingAddress = model.MailingAddress, ResidentialAddress = model.ResidentialAddress }; if (!string.IsNullOrEmpty(model.Gender)) { var gender = _utilityRepository.GetGenderByName(model.Gender); if (gender != null) { newUser.GenderId = gender.Id; } } var result = _subscriberService.CreateSubcribers(newUser); if (model.NextOfKin != null) { var nextOfKin = _mapper.Map <VendorNextOfKinInputModel, NextOfKin>(model.NextOfKin); nextOfKin.AppUserId = result.AppUser.Id; //var nextOfKinGender = _utilityRepository.GetGenderByName(model.NextOfKin.Gender); //if (string.IsNullOrEmpty(nextOfKinGender)) //{ // return Failed(ResponseMessageViewModel.INVALID_NEXT_OF_KIN_GENDER, ResponseErrorCodeStatus.INVALID_NEXT_OF_KIN_GENDER); //} //nextOfKin.GenderId = nextOfKinGender.Id; _utilityRepository.AddNextOfKin(nextOfKin); } model.SaveIdentityDocument(_settings); model.SaveProfilePhoto(_settings); var emailHtmlTemplate = _emailService.GetEmailTemplate(_env, EmailTemplate.Welcome(model.Platform ?? Res.WEB_PLATFORM)); var code = _otpService.GenerateCode(result.AppUser.Id, _settings.OtpExpirationInMinutes, model.Platform ?? Res.WEB_PLATFORM); Dictionary <string, string> contentReplacements = new Dictionary <string, string>() { { Placeholder.EMAIL, result.AppUser.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); _ = await _userManager.AddToRoleAsync(result.AppUser, UserType.SUBSCRIBER); var mappedResult = _mapper.Map <AppUser, VendorViewModel>(result.AppUser); return(Ok(mappedResult)); }