public async Task <bool> SaveMemberFeedback(MemberFeedbackBO memberFeedbackBO) { var jwt = await HttpContext.GetTokenAsync(BrokerConstants.TokenScheme, BrokerConstants.AccessToken); var auditLogBO = new AuditLogBO(_appSettings.Value.ApplicationName, jwt, _httpContextAccessor); return(await _memberFeedbackService.SaveMemberFeedback(memberFeedbackBO, auditLogBO)); }
/// <summary> /// Saves the member feedback. /// </summary> /// <param name="memberFeedbackBO">The member feedback bo.</param> /// <param name="auditLogBO">The audit log bo.</param> /// <returns></returns> /// <exception cref="CustomException">MemberFeedbackForSaveEmptyErrorCode</exception> public async Task <bool> SaveMemberFeedback(MemberFeedbackBO memberFeedbackBO, AuditLogBO auditLogBO) { if (memberFeedbackBO == null) { throw new CustomException(nameof(MemberConstants.MemberFeedbackForSaveEmptyErrorCode)); } return(await _memberFeedbackDataAccess.SaveMemberFeedback(memberFeedbackBO, auditLogBO)); }
public static MemberFeedback Map(MemberFeedbackBO memberFeedbackBO) { return(new MemberFeedback { MemberId = memberFeedbackBO.MemberExternalId, Email = memberFeedbackBO.Email, Message = memberFeedbackBO.Message, SourceId = memberFeedbackBO.SourceId == 1 ? Convert.ToInt32(MemberFeedbackType.ShareStory) : Convert.ToInt32(MemberFeedbackType.ShareContactInfo), CreatedBy = memberFeedbackBO.UserId, PhoneNumber = memberFeedbackBO.PhoneNumber, InquiryType = memberFeedbackBO.InquiryType, InquiryTypeEmail = memberFeedbackBO.InquiryTypeEmail, CreatedOn = DateTime.UtcNow }); }
/// <summary> /// To save member feedback to db /// </summary> /// <param name="memberFeedbackBO"></param> /// <param name="auditLogBO"></param> /// <returns></returns> public async Task <bool> SaveMemberFeedback(MemberFeedbackBO memberFeedbackBO, AuditLogBO auditLogBO) { var returnValue = false; if (memberFeedbackBO != null) { var member = await _unitOfWork.GetRepository <Member>().GetFirstOrDefaultAsync(i => i, u => u.UserId == memberFeedbackBO.UserId); if (member != null) { var memberDetails = await _unitOfWork.GetRepository <MemberDetail>().GetFirstOrDefaultAsync(i => i, m => m.MemberDetailId == member.MemberDetailId); memberFeedbackBO.MemberExternalId = member.ExternalId; var memberFeedbackInfo = MemberMapper.Map(memberFeedbackBO); _unitOfWork.GetRepository <MemberFeedback>().Insert(memberFeedbackInfo); var recordsInserted = await _unitOfWork.SaveChangesAsync(); if (recordsInserted > 0) { returnValue = true; var mailIdFrom = ""; var mailTo = ""; var body = ""; var subject = ""; if (memberFeedbackBO.SourceId == (int)MemberFeedbackType.ShareStory) { mailTo = memberFeedbackBO.Email; var notificaton = await _unitOfWork.GetRepository <Notification>().GetFirstOrDefaultAsync(predicate: n => n.Type == (int)EmailType.MemberStory); if (notificaton != null) { subject = notificaton.Subject; body = notificaton.Content.Replace("{firstname}", memberDetails.FirstName).Replace("{lastname}", memberDetails.LastName); mailIdFrom = notificaton.From; } notificaton = await _unitOfWork.GetRepository <Notification>().GetFirstOrDefaultAsync(predicate: n => n.Type == (int)EmailType.MemberStoryTestimonial); if (notificaton != null) { var marketingMailSubject = notificaton.Subject; var marketingMailBody = notificaton.Content.Replace("{firstname}", memberDetails.FirstName). Replace("{lastname}", memberDetails.LastName).Replace("{email}", memberFeedbackBO.Email). Replace("{message}", memberFeedbackBO.Message); mailIdFrom = notificaton.From; var email = MemberMapper.Map(_appSettings.Value.AlieraMarketingEmail, marketingMailBody, marketingMailSubject, _appSettings, mailIdFrom); await _emailService.SendEmailAsync(email); } } else if (memberFeedbackBO.SourceId == (int)MemberFeedbackType.ShareContactInfo) { mailTo = memberFeedbackBO.InquiryTypeEmail; var notificaton = await _unitOfWork.GetRepository <Notification>().GetFirstOrDefaultAsync(predicate: n => n.Type == (int)EmailType.MemberContactSubmission); if (notificaton != null) { subject = notificaton.Subject; body = notificaton.Content.Replace("{firstname}", memberDetails.FirstName). Replace("{lastname}", memberDetails.LastName).Replace("{email}", memberFeedbackBO.Email). Replace("{message}", memberFeedbackBO.Message).Replace("{phonenumber}", memberFeedbackBO.PhoneNumber) .Replace("{Inquirytype}", memberFeedbackBO.InquiryType); mailIdFrom = notificaton.From; } } var emailDetails = MemberMapper.Map(mailTo, body, subject, _appSettings, mailIdFrom); await _emailService.SendEmailAsync(emailDetails); } } } await AuditMapper.AuditLogging(auditLogBO, memberFeedbackBO.UserId, AuditAction.Insert, memberFeedbackBO); return(returnValue); }