Files

182 lines
5.0 KiB
C#

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<TaskMessage> 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);
}
}
}