using System.Threading.Tasks; using GxPress.Entity.WorkFlowDto; using System.Linq; using Datory; using System.Collections.Generic; namespace GxPress.Service.Implement { public partial class FlowService { public async Task AddInboxAsyc(FlowDto flow) { var user = await _userRepository.GetAsync(flow.UserId); var process = await _processRepository.GetAsync(flow.ProcessId); //获取收件人 //获取抄送人 var flowDtos = await _flowTodoRepository.GetListByFlowIdAsync(flow.Id); var addressUserIds = flowDtos.Where(n => n.Type == nameof(GxPress.EnumConst.TodoTypeConst.ApproverCheck)).Select(n => n.UserId).ToList(); var ccUserIds = flowDtos.Where(n => n.Type == nameof(GxPress.EnumConst.TodoTypeConst.CarbonCopy)).Select(n => n.UserId).ToList(); //收件人 var addressUsers = await _userRepository.GetAllAsync(Q.WhereIn(nameof(Entity.User.Id), addressUserIds)); //抄送人 var ccUsers = await _userRepository.GetAllAsync(Q.WhereIn(nameof(Entity.User.Id), ccUserIds)); //中间件 var middles = new List(); var middle = new Entity.Middle.Middle { MiddleId = flow.Id, FolderType = GxPress.EnumConst.AllTypeConst.Inbox.GetHashCode(), IsTop = false, AttributeValue = 1, ParentId = 0, UserId = flow.UserId, MiddleSonId = 0, IsAdmin = false, NoticeAddresseeType = 0, IsRead = false }; middles.Add(middle); var users = addressUsers.ToList(); users.AddRange(ccUsers); foreach (var item in users.Distinct()) { middle = new Entity.Middle.Middle { MiddleId = flow.Id, FolderType = GxPress.EnumConst.AllTypeConst.Inbox.GetHashCode(), IsTop = false, AttributeValue = 1, ParentId = 0, UserId = flow.UserId, MiddleSonId = 0, IsAdmin = false, NoticeAddresseeType = 0, IsRead = false }; middles.Add(middle); } await middleRepository.InsertAsync(middles); return true; } } }