/// <summary> /// This Method Handles Completion Of Vendor / Subscriber's Profile /// </summary> /// <param name="model"></param> /// <returns></returns> public async Task <ResponseViewModel> UpdateAsync(UserInputModel model) { try { var currentUser = await _userManager.FindByIdAsync(_httpContextAccessor.HttpContext.User.GetLoggedInUserId <int>().ToString()); if (currentUser != null) { currentUser.FirstName = model.FirstName; currentUser.LastName = model.LastName; currentUser.MiddleName = model.MiddleName; currentUser.PhoneNumber = model.PhoneNumber; if (!string.IsNullOrEmpty(model.ProfilePhoto) && model.IsProfilePhotoChanged) { currentUser.ProfilePhoto = model.SaveProfilePhoto(_settings); } var gender = _utilityRepository.GetGenderByName(model.Gender); if (gender == null) { return(ResponseViewModel.Failed(ResponseMessageViewModel.INVALID_GENDER, ResponseErrorCodeStatus.INVALID_GENDER)); } currentUser.GenderId = gender.Id; await _userManager.UpdateAsync(currentUser); var mappedResult = _mapper.Map <AppUser, UserViewModel>(currentUser); return(ResponseViewModel.Create(true).AddStatusMessage(ResponseMessageViewModel.SUCCESSFUL).AddData(mappedResult)); } else { return(ResponseViewModel.Failed()); } } catch (Exception e) { return(ResponseViewModel.Create(false, ResponseMessageViewModel.UNSUCCESSFUL).AddStatusCode(ResponseErrorCodeStatus.FAIL).AddData(e)); } }
/// <summary> /// Get Gender By Name /// </summary> /// <param name="name"></param> /// <returns></returns> public Gender GetGender(string name) { return(_utilityRepository.GetGenderByName(name)); }
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)); }