using _0_Framework.Domain; using AccountManagement.Domain.TaskAgg; using System; using System.Collections.Generic; using System.Linq; using AccountManagement.Domain.TaskMessageAgg; namespace AccountManagement.Domain.AssignAgg; public class Assign : EntityBase { public Assign(long taskId, long assignerId, long assignedId, int assignerPositionValue, string assignedName, int assignedPositionValue, DateTime endTaskDate, bool firstTimeCreation=false) { TaskId = taskId; AssignerId = assignerId; AssignedId = assignedId; AssignerPositionValue = assignerPositionValue; AssignedName = assignedName; AssignedPositionValue = assignedPositionValue; EndTaskDate = endTaskDate; FirstTimeCreation = firstTimeCreation; } //آیدی شخص ارسال کننده public long TaskId { get; private set; } //نام دریافت کننده public long AssignerId { get; private set; } //آیدی شخص دریافت کننده public string AssignedName { get; private set; } //سطح شخص ارسال کننده public long AssignedId { get; private set; } public int AssignerPositionValue { get; private set; } public int AssignedPositionValue { get; private set; } //زمان پایان وظیفه public DateTime EndTaskDate { get; private set; } //آیا درخواست مهلت کرده است؟ public bool TimeRequest { get; private set; } //تعداد تایید درخواست مهلت public int AcceptedTimeRequest { get; private set; } //مهلت زمان درخواست شده public DateTime? RequestDate { get; private set; } //توضیحات درخواست مهلت public string? TimeRequestDescription { get; private set; } //آیا درخواست انصراف داده شده //آیا کنسل شده است public bool IsCancel { get; private set; } //توضیحات درخواست انصراف public string? CancelDescription { get; private set; } public bool IsDone { get; private set; } public bool IsDoneRequest { get; private set; } public string? DoneDescription { get; private set; } public bool IsCanceledRequest { get; private set; } public bool FirstTimeCreation { get; private set; } public Tasks Task { get; set; } public List TaskMessageList { get; set; } public void EditTime(DateTime endTaskDate) { EndTaskDate = endTaskDate; } public void CreateTimeRequest(DateTime requestDate, string timeRequestDescription) { RequestDate = requestDate; TimeRequestDescription = timeRequestDescription; TimeRequest = true; } public void AcceptTimeRequest() { ClearRequests(); TimeRequest = false; AcceptedTimeRequest++; EndTaskDate = RequestDate < DateTime.Today ? DateTime.Today : RequestDate.Value; } public void RejectTimeRequest() { ClearRequests(); TimeRequest = false; TimeRequestDescription = null; RequestDate = null; } public void CreateCancelRequest(string cancelDescription) { CancelDescription = cancelDescription; IsCanceledRequest = true; } public void AcceptCancelRequest() { ClearRequests(); IsCanceledRequest = false; IsCancel = true; } public void RejectCancel() { ClearRequests(); CancelDescription = null; IsCanceledRequest = false; } public void CompleteRequest(string? doneDescription) { ClearRequests(); DoneDescription = doneDescription; IsDoneRequest = true; } public void RejectCompleteRequest() { ClearRequests(); IsDoneRequest = false; DoneDescription = null; } public void Completed() { ClearRequests(); IsDoneRequest = false; IsDone = true; } public void ChangeTimeTask(DateTime time) { EndTaskDate = time; AcceptedTimeRequest++; RequestDate = null; TimeRequest = false; } public void ClearRequests() { IsDoneRequest = false; IsCanceledRequest = false; TimeRequest = false; } public void InsertNewData(DateTime endTaskDate,bool timeRequest,int acceptedTimeRequest,DateTime? requestDate, string timeRequestDescription, bool isCanceledRequest, bool isCancel,string cancelDescription,bool isDone,bool isDoneRequest,string? doneDescription) { EndTaskDate = endTaskDate; TimeRequest=timeRequest; AcceptedTimeRequest = acceptedTimeRequest; RequestDate = requestDate; TimeRequestDescription = timeRequestDescription; IsCanceledRequest = isCanceledRequest; IsCancel=isCancel; IsDone=isDone; CancelDescription=cancelDescription; IsDone=isDone; IsDoneRequest=isDoneRequest; DoneDescription=doneDescription; } public void ChangeAssignedId(long assignedId) { AssignedId = assignedId; } public void SetAssignerId(long assignerId) { AssignerId = assignerId; } public void ChangeSender(long senderId) { Task.SetSender(senderId); var taskMessageItemsEnumerable =TaskMessageList.SelectMany(m => m.TaskMessageItemsList); foreach (var taskMessageItems in taskMessageItemsEnumerable) { taskMessageItems.SetSenderId(senderId); } } }