using System; using System.Collections.Generic; using System.Linq; using System.Security.AccessControl; using _0_Framework.Domain; using AccountManagement.Domain.AssignAgg; using AccountManagement.Domain.TaskMediaAgg; using AccountManagement.Domain.TaskScheduleAgg; using OfficeOpenXml.Style; namespace AccountManagement.Domain.TaskAgg; public class Tasks : EntityBase { public Tasks(string title, string? description, long senderId, string contractingPartyName) { Title = title; Description = description; SenderId = senderId; ContractingPartyName = contractingPartyName; StartTaskDate = DateTime.Now; IsActiveString = "true"; TaskScheduleId = null; } //عنوان وظیفه public string Title { get; private set; } //زمان ارسال وظیفه public DateTime StartTaskDate { get; private set; } //توضیحات وظیفه public string? Description { get; private set; } //آیدی شخص ارسال کننده public long SenderId { get; private set; } //نام طرف حساب public string ContractingPartyName { get; set; } public string IsActiveString { get; private set; } public long? TicketId { get; private set; } public long? TaskScheduleId { get; private set; } public List Assigns { get; set; } public List TaskMedias { get; set; } public TaskSchedule TaskSchedule { get; set; } public Tasks(string title, string? description, long senderId, string contractingPartyName, long ticketId) { Title = title; Description = description; SenderId = senderId; ContractingPartyName = contractingPartyName; StartTaskDate = DateTime.Now; IsActiveString = "true"; TicketId = ticketId; } public void Edit(string title, string? description, long senderId, string contractingPartyName) { Title = title; Description = description; SenderId = senderId; ContractingPartyName = contractingPartyName; } //برای ایجاد یک درخواست مهلت public void DeActive() { IsActiveString = "false"; } public void Activator() { IsActiveString = "true"; } public void SetTaskSchedule(long taskScheduleId) { TaskScheduleId = taskScheduleId; } public void ChangeSender(long senderId) { var prevSender = SenderId; var assigners = Assigns.Where(x => x.AssignerId == prevSender).ToList(); foreach (var assigner in assigners) { assigner.SetAssignerId(senderId); } var senderMessageItem = Assigns .SelectMany(x=>x.TaskMessageList .SelectMany(m=>m.TaskMessageItemsList)).Where(x=>x.SenderAccountId == prevSender).ToList(); var receiverMessageItem = Assigns.SelectMany(x=>x.TaskMessageList .SelectMany(m=>m.TaskMessageItemsList)).Where(x=>x.ReceiverAccountId == prevSender).ToList(); SenderId = senderId; foreach (var taskMessageItems in senderMessageItem) { taskMessageItems.SetSenderId(senderId); } foreach (var taskMessageItems in receiverMessageItem) { taskMessageItems.SetReceiver(senderId); } } public void SetSender(long senderId) { SenderId = senderId; } }