using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Datory;
using GxPress.Common.Tools;
using GxPress.Request.App.OftenContact;
using GxPress.Request.GroupChatUser;
using GxPress.Result.App.OftenContact;
using System;
namespace GxPress.Service.Implement.OftenContact
{
public partial class OftenContactService
{
///
/// 获取用户
///
///
///
public async Task> GetOftenContacts(OftenContactSearchRequest request)
{
//获取文件夹数据
var result = new List();
var data = await _repository.GetContactInfosAsync(request);
foreach (var item in data)
{
if (item.ChatType == 1)
{
var user = await _userRepository.GetAsync(int.Parse(item.ContactUserId));
if (user == null)
continue;
item.Name = user.Name;
item.AvatarUrl = StringUtils.AddDomainMin(user.AvatarUrl);
item.ImId = user.ImId;
item.ToUserId = user.Id;
}
else if (item.ChatType == 2)
{
var groupChat = await _groupChatRepository.GetAsync(Q.Where(nameof(Entity.GroupChat.GroupChatImId),
item.ContactUserId));
if (groupChat == null)
continue;
item.Name = groupChat.Name;
item.AvatarUrl = StringUtils.AddDomainMin(groupChat.AvatarUrl);
item.ImId = groupChat.GroupChatImId;
var groupChatUserIsDisturbRequest = new GroupChatUserIsDisturbRequest();
groupChatUserIsDisturbRequest.GroupChatId = groupChat.Id;
groupChatUserIsDisturbRequest.UserId = item.UserId;
item.IsDisturb = await groupChatUserRepository.IsDisturbAsync(groupChatUserIsDisturbRequest);
}
else
if (item.AttributeValue != GxPress.EnumConst.AttributeValueConst.Folder.GetHashCode())
continue;
result.Add(item);
}
return result;
}
///
/// 获取聊天界面和验证最新时间
///
///
///
public async Task GetOftenContactInfoGenericResult(OftenContactSearchRequest request)
{
var result = new OftenContactInfoGenericResult();
result.OftenContactInfos = await GetOftenContacts(request);
result.ConfirmationDate = await adminVerifyRepository.GetConfirmationDate(request.UserId);
return result;
}
///
/// 获取用户
///
///
///
public async Task> GetOftenContactsAll(OftenContactSearchRequest request)
{
//获取文件夹数据
var result = new List();
var data = await _repository.GetContactInfoAllAsync(request);
foreach (var oftenContact in data)
{
if (oftenContact.ChatType == 1)
{
var user = await _userRepository.GetAsync(int.Parse(oftenContact.ContactUserId));
if (user == null)
continue;
oftenContact.Name = user.Name;
oftenContact.AvatarUrl = StringUtils.AddDomainMin(user.AvatarUrl);
oftenContact.ImId = user.ImId;
oftenContact.ToUserId = user.Id;
}
if (oftenContact.ChatType == 2)
{
var groupChat = await _groupChatRepository.GetAsync(Q.Where(nameof(Entity.GroupChat.GroupChatImId),
oftenContact.ContactUserId));
if (groupChat == null)
continue;
oftenContact.Name = groupChat.Name;
oftenContact.AvatarUrl = StringUtils.AddDomainMin(groupChat.AvatarUrl);
oftenContact.ImId = groupChat.GroupChatImId;
var groupChatUserIsDisturbRequest = new GroupChatUserIsDisturbRequest();
groupChatUserIsDisturbRequest.GroupChatId = groupChat.Id;
groupChatUserIsDisturbRequest.UserId = oftenContact.UserId;
oftenContact.IsDisturb = await groupChatUserRepository.IsDisturbAsync(groupChatUserIsDisturbRequest);
}
}
result = data.ToList();
return result;
}
}
}