Files
Backend-Api/AccountManagement.Domain/TaskAgg/Tasks.cs

121 lines
3.3 KiB
C#

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<Assign> Assigns { get; set; }
public List<TaskMedia> 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;
}
}