コード例 #1
0
        public async Task <ServiceResponse <object> > GetGroupChatMessages(List <string> userIds, int groupId, bool forSignal = false)
        {
            string UserIdds = string.Join(',', userIds);
            List <GroupMessageForListByTimeDto> Messages = new List <GroupMessageForListByTimeDto>();

            if (!forSignal)
            {
                List <UserForDetailedDto> UserToDetails = new List <UserForDetailedDto>();
                var Users = await _context.Users.Where(m => userIds.Contains(m.Id.ToString())).ToListAsync();

                UserToDetails = Users.Count > 0 ? _mapper.Map <List <UserForDetailedDto> >(Users) : new List <UserForDetailedDto>();
                var SentMessages = _context.GroupMessages.Where(m => m.GroupId == groupId && m.CreatedDateTime.Date >= DateTime.UtcNow.AddDays(-7).Date&& ((m.MessageFromUserId == _LoggedIn_UserID && UserIdds.Contains(m.MessageToUserIds)) ||
                                                                                                                                                           (UserIdds.Contains(m.MessageFromUserId.ToString()) && m.MessageToUserIds.Contains(_LoggedIn_UserID.ToString()))))
                                   .Select(o => new GroupMessageForListDto
                {
                    Id                  = o.Id,
                    Time                = DateFormat.FromUTCToPKFormat(o.CreatedDateTime),
                    TimeToDisplay       = DateFormat.ToTime(o.CreatedDateTime.TimeOfDay),
                    MessageFromUserId   = o.MessageFromUserId,
                    MessageFromUser     = o.MessageFromUser != null ? o.MessageFromUser.FullName : "",
                    Comment             = o.Comment,
                    Attachment          = _context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id) != null ? _fileRepo.AppendDocPath(_context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id).AttachmentPath) : "",
                    FileName            = _context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id) != null ? _context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id).FileName : "",
                    FileType            = _context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id) != null ? _context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id).FileType : "",
                    MessageToUserIdsStr = o.MessageToUserIds,
                    Type                = o.MessageFromUserId == _LoggedIn_UserID ? "1" : "2", // 1=Message, 2=Reply
                    GroupId             = o.GroupId,
                }).ToList();

                var DateTimes = _context.GroupMessages.Where(m => m.GroupId == groupId && m.CreatedDateTime.Date >= DateTime.UtcNow.AddDays(-7).Date&& ((m.MessageFromUserId == _LoggedIn_UserID && UserIdds.Contains(m.MessageToUserIds)) ||
                                                                                                                                                        (UserIdds.Contains(m.MessageFromUserId.ToString()) && m.MessageToUserIds.Contains(_LoggedIn_UserID.ToString()))))
                                .OrderBy(m => m.CreatedDateTime)
                                .Select(m => DateFormat.ToDateTime(m.CreatedDateTime)).ToList();
                DateTimes = DateTimes.Distinct().ToList();
                for (var i = 0; i < DateTimes.Count(); i++)
                {
                    var      item  = DateTimes[i];
                    var      ToAdd = new GroupMessageForListByTimeDto();
                    DateTime dt    = Convert.ToDateTime(item, CultureInfo.GetCultureInfo("ur-PK").DateTimeFormat);
                    if (dt.Date == DateTime.UtcNow.Date)
                    {
                        ToAdd.TimeToDisplay = Messages.Any(m => m.TimeToDisplay == "Today") ? dt.ToString("hh:mm tt") : "Today";
                    }
                    else if (dt.Date == DateTime.UtcNow.AddDays(-1).Date)
                    {
                        ToAdd.TimeToDisplay = Messages.Any(m => m.TimeToDisplay == "Yesterday") ? dt.ToString("hh:mm tt") : "Yesterday";
                    }
                    else
                    {
                        ToAdd.TimeToDisplay = Messages.Any(m => m.TimeToDisplay == item) ? "" : item;
                    }
                    ToAdd.Messages = SentMessages.Where(m => m.Time.Date == dt.Date && m.Time.Hour == dt.Hour && m.Time.Minute == dt.Minute).OrderBy(m => m.Time).ToList();
                    Messages.Add(ToAdd);
                }

                _serviceResponse.Data = new { UserToDetails, Messages };
            }
            else
            {
                var SingleSentMessage = _context.GroupMessages.Where(m => m.GroupId == groupId && m.CreatedDateTime.Date >= DateTime.UtcNow.AddDays(-7).Date&& ((m.MessageFromUserId == _LoggedIn_UserID && UserIdds.Contains(m.MessageToUserIds)) ||
                                                                                                                                                                (UserIdds.Contains(m.MessageFromUserId.ToString()) && m.MessageToUserIds.Contains(_LoggedIn_UserID.ToString()))))
                                        .Select(o => new GroupMessageForListDto
                {
                    Id                  = o.Id,
                    Time                = DateFormat.FromUTCToPKFormat(o.CreatedDateTime),
                    TimeToDisplay       = DateFormat.ToTime(o.CreatedDateTime.TimeOfDay),
                    MessageFromUserId   = o.MessageFromUserId,
                    MessageFromUser     = o.MessageFromUser != null ? o.MessageFromUser.FullName : "",
                    Comment             = o.Comment,
                    Attachment          = _context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id) != null ? _fileRepo.AppendDocPath(_context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id).AttachmentPath) : "",
                    FileName            = _context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id) != null ? _context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id).FileName : "",
                    FileType            = _context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id) != null ? _context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id).FileType : "",
                    MessageToUserIdsStr = o.MessageToUserIds,
                    Type                = o.MessageFromUserId == _LoggedIn_UserID ? "1" : "2", // 1=Message, 2=Reply
                    GroupId             = o.GroupId,
                }).OrderByDescending(m => m.Id).FirstOrDefault();

                //var SingleDateTime = _context.GroupMessages.Where(m => m.GroupId == groupId && m.CreatedDateTime.Date >= DateTime.UtcNow.AddDays(-7).Date && ((m.MessageFromUserId == _LoggedIn_UserID && UserIdds.Contains(m.MessageToUserIds))
                //|| (UserIdds.Contains(m.MessageFromUserId.ToString()) && m.MessageToUserIds.Contains(_LoggedIn_UserID.ToString()))))
                //    .OrderByDescending(m => m.CreatedDateTime)
                //    .Select(m => DateFormat.ToDateTime(m.CreatedDateTime)).FirstOrDefault();
                //DateTimes = DateTimes.Distinct().ToList();

                //var item = SingalDateTime;
                var ToAdd = new GroupMessageForListByTimeDto();
                //DateTime dt = Convert.ToDateTime(item, CultureInfo.GetCultureInfo("ur-PK").DateTimeFormat);
                //if (dt.Date == DateTime.UtcNow.Date)
                //    ToAdd.TimeToDisplay = Messages.Any(m => m.TimeToDisplay == "Today") ? "" : "Today";
                //else if (dt.Date == DateTime.UtcNow.AddDays(-1).Date)
                //    ToAdd.TimeToDisplay = Messages.Any(m => m.TimeToDisplay == "Yesterday") ? "" : "Yesterday";
                //else
                //    ToAdd.TimeToDisplay = Messages.Any(m => m.TimeToDisplay == item) ? "" : item;
                ToAdd.Messages.Add(SingleSentMessage);
                Messages.Add(ToAdd);

                _serviceResponse.Data = Messages.FirstOrDefault();
            }
            _serviceResponse.Success = true;
            return(_serviceResponse);
        }
コード例 #2
0
        public async Task <ServiceResponse <object> > GetChatMessages(List <string> userIds, bool forSignal = false)
        {
            int UserId = Convert.ToInt32(userIds.First());
            List <GroupMessageForListByTimeDto> Messages = new List <GroupMessageForListByTimeDto>();

            if (!forSignal)
            {
                var Users = await _context.Users.Where(m => userIds.Contains(m.Id.ToString())).ToListAsync();

                var UserToDetails = Users.Count > 0 ? _mapper.Map <List <UserForDetailedDto> >(Users) : new List <UserForDetailedDto>();
                var SentMessages  = _context.Messages.Where(m => m.CreatedDateTime.Date >= DateTime.UtcNow.AddDays(-7).Date&& ((m.MessageFromUserId == _LoggedIn_UserID && UserId.Equals(m.MessageToUserId)) ||
                                                                                                                               (UserId.Equals(m.MessageFromUserId) && m.MessageToUserId.Equals(_LoggedIn_UserID))))
                                    .Select(o => new GroupMessageForListDto
                {
                    Id                  = o.Id,
                    Time                = DateFormat.FromUTCToPKFormat(o.CreatedDateTime),
                    TimeToDisplay       = DateFormat.ToTime(o.CreatedDateTime.TimeOfDay),
                    MessageFromUserId   = o.MessageFromUserId,
                    MessageFromUser     = o.MessageFromUser != null ? o.MessageFromUser.FullName : "",
                    Comment             = o.Comment,
                    Attachment          = _context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id) != null ? _fileRepo.AppendDocPath(_context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id).AttachmentPath) : "",
                    FileName            = _context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id) != null ? _context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id).FileName : "",
                    FileType            = _context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id) != null ? _context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id).FileType : "",
                    MessageToUserIdsStr = o.MessageToUserId.ToString(),
                    Type                = o.MessageFromUserId == _LoggedIn_UserID ? "1" : "2" // 1=Message, 2=Reply
                }).ToList();

                var DateTimes = _context.Messages.Where(m => m.CreatedDateTime.Date >= DateTime.UtcNow.AddDays(-7).Date&& ((m.MessageFromUserId == _LoggedIn_UserID && UserId.Equals(m.MessageToUserId)) ||
                                                                                                                           (UserId.Equals(m.MessageFromUserId) && m.MessageToUserId.Equals(_LoggedIn_UserID))))
                                .OrderBy(m => m.CreatedDateTime)
                                .Select(m => DateFormat.ToDateTime(m.CreatedDateTime)).ToList();
                DateTimes = DateTimes.Distinct().ToList();
                for (var i = 0; i < DateTimes.Count(); i++)
                {
                    var      item   = DateTimes[i];
                    var      ToAdd  = new GroupMessageForListByTimeDto();
                    DateTime dt     = Convert.ToDateTime(item, CultureInfo.GetCultureInfo("ur-PK").DateTimeFormat);
                    var      PKZone = TimeZoneInfo.FindSystemTimeZoneById("Pakistan Standard Time");
                    var      Today  = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, PKZone);
                    if (dt.Date == Today.Date)
                    {
                        ToAdd.TimeToDisplay = Messages.Any(m => m.TimeToDisplay == "Today") ? dt.ToString("hh:mm tt") : "Today";
                    }
                    else if (dt.Date == Today.AddDays(-1).Date)
                    {
                        ToAdd.TimeToDisplay = Messages.Any(m => m.TimeToDisplay == "Yesterday") ? dt.ToString("hh:mm tt") : "Yesterday";
                    }
                    else
                    {
                        ToAdd.TimeToDisplay = Messages.Any(m => m.TimeToDisplay == item) ? "" : item;
                    }
                    ToAdd.Messages = SentMessages.Where(m => m.Time.Date == dt.Date && m.Time.Hour == dt.Hour && m.Time.Minute == dt.Minute).OrderBy(m => m.Time).ToList();
                    Messages.Add(ToAdd);
                }

                _serviceResponse.Data = new { UserToDetails, Messages };
            }
            else
            {
                var SingleSentMessage = _context.Messages.Where(m => m.CreatedDateTime.Date >= DateTime.UtcNow.AddDays(-7).Date&& ((m.MessageFromUserId == _LoggedIn_UserID && UserId.Equals(m.MessageToUserId)) ||
                                                                                                                                   (UserId.Equals(m.MessageFromUserId) && m.MessageToUserId.Equals(_LoggedIn_UserID))))
                                        .Select(o => new GroupMessageForListDto
                {
                    Id                  = o.Id,
                    Time                = DateFormat.FromUTCToPKFormat(o.CreatedDateTime),
                    TimeToDisplay       = DateFormat.ToTime(o.CreatedDateTime.TimeOfDay),
                    MessageFromUserId   = o.MessageFromUserId,
                    MessageFromUser     = o.MessageFromUser != null ? o.MessageFromUser.FullName : "",
                    Comment             = o.Comment,
                    Attachment          = _context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id) != null ? _fileRepo.AppendDocPath(_context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id).AttachmentPath) : "",
                    FileName            = _context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id) != null ? _context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id).FileName : "",
                    FileType            = _context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id) != null ? _context.ChatMessageAttachments.FirstOrDefault(m => m.MessageId == o.Id).FileType : "",
                    MessageToUserIdsStr = o.MessageToUserId.ToString(),
                    Type                = o.MessageFromUserId == _LoggedIn_UserID ? "1" : "2" // 1=Message, 2=Reply
                }).OrderByDescending(m => m.Id).FirstOrDefault();

                var ToAdd = new GroupMessageForListByTimeDto();

                ToAdd.Messages.Add(SingleSentMessage);
                Messages.Add(ToAdd);

                _serviceResponse.Data = Messages.FirstOrDefault();
            }
            return(_serviceResponse);
        }