/// <summary> /// This Method Update Vendor's Information /// </summary> /// <param name="model"></param> /// <returns></returns> public async Task <ResponseViewModel> UpdateVendorAsync(VendorInputModel model) { try { AppUser currentUser = await _userManager.FindByIdAsync(_httpContextAccessor.HttpContext.User.GetLoggedInUserId <int>().ToString()); if (!currentUser.EmailConfirmed) { return(Failed(ResponseMessageViewModel.EMAIL_NOT_CONFIRMED, ResponseErrorCodeStatus.EMAIL_NOT_CONFIRMED)); } if (currentUser != null) { currentUser.FirstName = model.FirstName; currentUser.LastName = model.LastName; currentUser.MiddleName = model.MiddleName; currentUser.PhoneNumber = model.PhoneNumber; currentUser.ResidentialAddress = model.ResidentialAddress; currentUser.MailingAddress = model.MailingAddress; if (!string.IsNullOrEmpty(model.ProfilePhoto) && model.IsProfilePhotoChanged) { FileDocument uploadResult = FileDocument.Create(); try { uploadResult = await BaseContentServer .Build(ContentServerTypeEnum.FIREBASE, _settings) .UploadDocumentAsync(FileDocument.Create(model.ProfilePhoto, $"photo-{currentUser.Id}", currentUser.GUID, FileDocumentType.GetDocumentType(MIMETYPE.IMAGE))); } catch (Exception e) { return(Failed(ResponseMessageViewModel.ERROR_UPLOADING_FILE, ResponseErrorCodeStatus.ERROR_UPLOADING_FILE)); } currentUser.ProfilePhoto = uploadResult.Path; currentUser.HasUploadedProfilePhoto = !string.IsNullOrEmpty(currentUser.ProfilePhoto); } if (!string.IsNullOrEmpty(model.IdentityDocument) && model.IsIdentityDocumentChanged) { FileDocument uploadResult = FileDocument.Create(); try { uploadResult = await BaseContentServer .Build(ContentServerTypeEnum.FIREBASE, _settings) .UploadDocumentAsync(FileDocument.Create(model.IdentityDocument, $"document-{currentUser.Id}", currentUser.GUID, FileDocumentType.GetDocumentType(MIMETYPE.IMAGE))); } catch (Exception e) { return(Failed(ResponseMessageViewModel.ERROR_UPLOADING_FILE, ResponseErrorCodeStatus.ERROR_UPLOADING_FILE)); } currentUser.IdentityDocument = uploadResult.Path; currentUser.HasUploadedDocument = !string.IsNullOrEmpty(currentUser.IdentityDocument); } var gender = _utilityRepository.GetGenderByName(model.Gender); if (gender == null) { return(Failed(ResponseMessageViewModel.INVALID_GENDER, ResponseErrorCodeStatus.INVALID_GENDER)); } currentUser.GenderId = gender.Id; var state = _stateService.GetState(model.StateOfOriginId); if (state == null) { return(Failed(ResponseMessageViewModel.INVALID_STATE, ResponseErrorCodeStatus.INVALID_STATE)); } currentUser.StateOfOriginId = state.Id; if (model.NextOfKin != null) { var nextOfKin = _mapper.Map <VendorNextOfKinInputModel, NextOfKin>(model.NextOfKin); nextOfKin.AppUserId = currentUser.Id; var nextOfKinGender = _utilityRepository.GetGenderByName(model.NextOfKin.Gender); if (nextOfKinGender == null) { return(Failed(ResponseMessageViewModel.INVALID_NEXT_OF_KIN_GENDER, ResponseErrorCodeStatus.INVALID_NEXT_OF_KIN_GENDER)); } nextOfKin.GenderId = nextOfKinGender.Id; _utilityRepository.AddNextOfKin(nextOfKin); } var userType = _utilityRepository.GetOrganizationType(model.UserTypeId); if (userType == null) { return(Failed(ResponseMessageViewModel.INVALID_ORGANIZATION_TYPE, ResponseErrorCodeStatus.INVALID_ORGANIZATION_TYPE)); } currentUser.OrganizationTypeId = model.UserTypeId; if (model.UserTypeId == (int)OrganizationEnumType.CORPORATE) { if (string.IsNullOrEmpty(model.RCNumber)) { return(Failed(ResponseMessageViewModel.INVALID_RC_NUMBER, ResponseErrorCodeStatus.INVALID_RC_NUMBER)); } currentUser.RCNumber = model.RCNumber; if (string.IsNullOrEmpty(model.OfficeAddress)) { return(Failed(ResponseMessageViewModel.INVALID_OFFICE_ADDRESS, ResponseErrorCodeStatus.INVALID_OFFICE_ADDRESS)); } currentUser.OfficeAddress = model.OfficeAddress; if (string.IsNullOrEmpty(model.NameOfEntry)) { return(Failed(ResponseMessageViewModel.INVALID_NAME_NAME_OF_ENTRY, ResponseErrorCodeStatus.INVALID_NAME_NAME_OF_ENTRY)); } currentUser.EntryName = model.NameOfEntry; currentUser.WebsiteUrl = model.WebSiteUrl; } await _userManager.UpdateAsync(currentUser); var mappedResult = _mapper.Map <AppUser, VendorViewModel>(currentUser); return(Ok().AddStatusMessage(ResponseMessageViewModel.SUCCESSFUL).AddData(mappedResult)); } else { return(Failed()); } } catch (Exception e) { return(Create(false, e.Message).AddStatusCode(ResponseErrorCodeStatus.FAIL)); } }
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)); }