using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using GxPress.Request.App.IM;

namespace GxPress.Service.Implement.GroupChatUser
{
    public partial class GroupChatUserService
    {
        /// <summary>
        /// 添加群用户
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task<bool> InsertAsync(InsertGroupChatUsersRequest request)
        {
            return await AddUsers(request);
        }

        /// <summary>
        /// 添加群用户
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task<bool> AddUsers(InsertGroupChatUsersRequest request)
        {
            var groupChat = await _groupChatRepository.GetGroupChatByImIdAsync(request.GroupChatImId);
            var users = await _groupChatUserRepository.FindGroupChatUserByImId(groupChat.GroupChatImId);
            var userInts = new List<int>();
            if (request.UserIds.Count == 0)
                return true;
            foreach (var item in request.UserIds.Distinct())
            {
                if (!users.Any(n => n.UserId == item))
                {
                    userInts.Add(item);
                }
            }
            request.UserIds = userInts;
            return await _imService.InsertGroupChatUsersAsync(request);
        }
    }
}