public async Task UpdateAsync(ReferralFriend referral) { using (var context = _msSqlContextFactory.CreateDataContext()) { context.Update(_mapper.Map <FriendReferralEntity>(referral)); await context.SaveChangesAsync(); } }
public async Task <ReferralFriend> CreateAsync(ReferralFriend referral) { using (var context = _msSqlContextFactory.CreateDataContext()) { var entity = _mapper.Map <FriendReferralEntity>(referral); await context.AddAsync(entity); await context.SaveChangesAsync(); return(_mapper.Map <ReferralFriend>(entity)); } }
private CommonReferralModel CovertReferralFriendToCommonReferral(ReferralFriend value) { string[] nameSurname = new string[2]; string[] nameSurnameTemp = value.FullName.Trim(' ').Split(' '); if (nameSurnameTemp.Length == 1) { nameSurname[0] = value.FullName; nameSurname[1] = string.Empty; } else { for (int i = 0; i < nameSurnameTemp.Length; i++) { if (i < nameSurnameTemp.Length - 1) { if (!string.IsNullOrEmpty(nameSurname[0])) { nameSurname[0] += " " + nameSurnameTemp[i]; } else { nameSurname[0] += nameSurnameTemp[i]; } } else { nameSurname[1] = nameSurnameTemp[i]; } } } return(new CommonReferralModel { CampaignId = value.CampaignId, Email = value.Email, FirstName = nameSurname[0], LastName = nameSurname[1], Id = value.Id.ToString("D"), ReferralType = ReferralType.Friend, Status = ConvertFriendStateToCommonReferralStatus(value.State), TimeStamp = value.CreationDateTime }); }
public async Task <ReferralFriend> CreateAsync(Guid referrerId, Guid campaignId, string email, string fullName) { var profile = await _customerProfileClient.CustomerProfiles.GetByCustomerIdAsync(referrerId.ToString("D")); if (profile.ErrorCode == CustomerProfileErrorCodes.CustomerProfileDoesNotExist) { throw new CustomerDoesNotExistException($"Connector with id '{referrerId}' does not exist."); } if (string.Compare(profile.Profile.Email, email, StringComparison.InvariantCultureIgnoreCase) == 0) { throw new ReferYourselfException($"Cannot refer to yourself."); } var campaign = await _campaignClient.Campaigns.GetByIdAsync(campaignId.ToString("D")); if (campaign.ErrorCode == CampaignServiceErrorCodes.EntityNotFound) { throw new CampaignNotFoundException($"Campaign with id '{campaignId}' not found."); } var existingCustomer = await _customerProfileClient.CustomerProfiles.GetByEmailAsync(new GetByEmailRequestModel { Email = email, IncludeNotVerified = true }); if (existingCustomer.ErrorCode == CustomerProfileErrorCodes.None) { throw new ReferralAlreadyConfirmedException($"Customer with such email already exists."); } var existingFriendProfile = await _customerProfileClient.ReferralFriendProfiles.GetByEmailAndReferrerAsync( new ReferralFriendByEmailAndReferrerProfileRequest { Email = email, ReferrerId = referrerId }); if (existingFriendProfile.ErrorCode == ReferralFriendProfileErrorCodes.None) { throw new ReferralAlreadyExistException($"Referral with such email for this referrer '{referrerId}' already exists."); } var referralCode = await _referralService.GetOrCreateReferralForCustomerIdAsync(referrerId); var referralFriend = new ReferralFriend { Email = email, FullName = fullName, ReferrerId = referrerId, CampaignId = campaignId, CreationDateTime = DateTime.UtcNow, State = ReferralFriendState.Pending }; referralFriend = await _friendReferralHistoryRepository.CreateAsync(referralFriend); var response = await _customerProfileClient.ReferralFriendProfiles.AddAsync(new ReferralFriendProfileRequest { Email = email, FullName = fullName, ReferralFriendId = referralFriend.Id, ReferrerId = referrerId }); if (response.ErrorCode != ReferralFriendProfileErrorCodes.None) { _log.Error(message: "An error occurred while creating referral friend profile", context: $"referralFriendId: {referralFriend.Id}"); } await _notificationPublisherService.FriendReferralConfirmRequestAsync( referrerId.ToString("D"), referralCode, profile.Profile.FirstName, profile.Profile.LastName, email); _log.Info("Referral friend created", context: $"referralFriendId: {referralFriend.Id}"); return(referralFriend); }