Exemple #1
0
 /// <summary>
 /// Gets the member messages by page.
 /// </summary>
 /// <param name="memberMessageDetailBO">The member message detail bo.</param>
 /// <param name="auditLogBO">The audit log bo.</param>
 /// <returns></returns>
 /// <exception cref="CustomException">MessageServiceGetMemberMessagesByPageInputEmptyErrorCode</exception>
 public async Task <MessageDetailBO> GetMemberMessagesByPage(MessageDetailBO memberMessageDetailBO, AuditLogBO auditLogBO)
 {
     if (memberMessageDetailBO == null)
     {
         throw new CustomException(nameof(MemberConstants.MessageServiceGetMemberMessagesByPageInputEmptyErrorCode));
     }
     return(await _messageDataAccess.GetMemberMessagesByPage(memberMessageDetailBO, auditLogBO));
 }
Exemple #2
0
        public async Task <JsonResult> GetMemberMessagesByPage([FromBody] MessageDetailBO memberMessageDetailBO)
        {
            var jwt = await HttpContext.GetTokenAsync(BrokerConstants.TokenScheme, BrokerConstants.AccessToken);

            var             auditLogBO = new AuditLogBO(_appSettings.Value.ApplicationName, jwt, _httpContextAccessor);
            MessageDetailBO messages   = null;

            messages = await _messageService.GetMemberMessagesByPage(memberMessageDetailBO, auditLogBO);

            return(new JsonResult(messages));
        }
        /// <summary>
        /// Gets the member messages by page.
        /// </summary>
        /// <param name="memberMessageDetailBO">The member message detail bo.</param>
        /// <param name="auditLogBO">The audit log bo.</param>
        /// <returns></returns>
        public async Task <MessageDetailBO> GetMemberMessagesByPage(MessageDetailBO memberMessageDetailBO, AuditLogBO auditLogBO)
        {
            var memberMessageBO = await GetMemberAllMessages(memberMessageDetailBO.UserId);

            //fetch message according to page number and page size
            if (memberMessageDetailBO.SortColumn == "unread")
            {
                var unreadMessages = memberMessageBO.Messages.Where(m => !m.IsRead).ToList();
                var readMsgs       = memberMessageBO.Messages.Where(m => m.IsRead).ToList();
                memberMessageBO.Messages = unreadMessages.Concat(readMsgs).ToList();
            }
            memberMessageBO.Messages = memberMessageBO.Messages.Where(msg => msg.IsArchived == memberMessageDetailBO.IsArchivedMessageRequest)
                                       .Skip((memberMessageDetailBO.PageNumber - 1) * memberMessageDetailBO.MessagesPerPage).Take(memberMessageDetailBO.MessagesPerPage).ToList();

            //Log audit for select action on MemberDemographicsBO
            //await AuditMapper.AuditLogging(auditLogBO, memberMessageDetailBO.UserId, AuditAction.Select, null);

            return(memberMessageBO);
        }
        /// <summary>
        /// Gets the member all messages.
        /// </summary>
        /// <param name="userId">The user identifier.</param>
        /// <returns></returns>
        public async Task <MessageDetailBO> GetMemberAllMessages(long userId)
        {
            var memberMessageDetailBO = new MessageDetailBO
            {
                Messages = new List <MessageBO>()
            };

            var member = await _unitOfWork.GetRepository <Member>()
                         .GetFirstOrDefaultAsync(predicate: m => m.UserId == userId, include: i => i
                                                 .Include(a => a.MemberDetail));


            if (member == null)
            {
                return(memberMessageDetailBO);
            }

            var memberMessages = await _unitOfWork.GetRepository <Messages>().GetPagedListAsync(predicate:
                                                                                                msg => msg.PortalId == (int)Portals.MemberPortal &&
                                                                                                msg.RecipientId == member.MemberId,
                                                                                                pageIndex: 0, pageSize: int.MaxValue);

            var messageBOs = memberMessages.Items.Select(message => new MessageBO()
            {
                MessageId       = message.MessageId,
                IsRead          = message.IsRead,
                IsArchived      = message.IsArchived ?? false,
                Message         = message.Message,
                MessageSentTime = message.MessageSentTime,
                SenderEmailId   = member.MemberDetail.EmailId
            }).ToList();

            memberMessageDetailBO.Messages           = messageBOs.OrderByDescending(m => m.MessageSentTime).ToList();
            memberMessageDetailBO.InboxCount         = memberMessages.Items.Count(msg => msg.IsArchived.HasValue && msg.IsArchived.Value == false || !msg.IsArchived.HasValue);
            memberMessageDetailBO.ArchiveCount       = memberMessages.Items.Count(msg => msg.IsArchived.HasValue && msg.IsArchived.Value);
            memberMessageDetailBO.InboxUnreadCount   = memberMessages.Items.Count(msg => !msg.IsRead && (msg.IsArchived.HasValue && msg.IsArchived.Value == false || !msg.IsArchived.HasValue));
            memberMessageDetailBO.ArchiveUnreadCount = memberMessages.Items.Count(msg => !msg.IsRead && msg.IsArchived.HasValue && msg.IsArchived.Value);

            return(memberMessageDetailBO);
        }