/// <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)); }
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); }