Example #1
0
        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));
        }
Example #2
0
 /// <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));
 }
Example #3
0
 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);
        }