From dba28b4d893be6d4621af0ed2965fbf9aa2eac88 Mon Sep 17 00:00:00 2001 From: Mahan Ch Date: Mon, 16 Jun 2025 21:47:28 +0330 Subject: [PATCH] add move task changer in tester --- AccountManagement.Domain/AssignAgg/Assign.cs | 21 ++++++++++ AccountManagement.Domain/TaskAgg/Tasks.cs | 38 +++++++++++++++++++ .../TaskMessageItemsAgg/TaskMessageItems.cs | 9 +++++ ServiceHost/Test/Tester.cs | 31 ++++++++++++++- 4 files changed, 97 insertions(+), 2 deletions(-) diff --git a/AccountManagement.Domain/AssignAgg/Assign.cs b/AccountManagement.Domain/AssignAgg/Assign.cs index 6f1a5810..4b098569 100644 --- a/AccountManagement.Domain/AssignAgg/Assign.cs +++ b/AccountManagement.Domain/AssignAgg/Assign.cs @@ -2,6 +2,7 @@ using AccountManagement.Domain.TaskAgg; using System; using System.Collections.Generic; +using System.Linq; using AccountManagement.Domain.TaskMessageAgg; namespace AccountManagement.Domain.AssignAgg; @@ -158,4 +159,24 @@ public class Assign : EntityBase 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); + } + } } \ No newline at end of file diff --git a/AccountManagement.Domain/TaskAgg/Tasks.cs b/AccountManagement.Domain/TaskAgg/Tasks.cs index 39d94082..44878729 100644 --- a/AccountManagement.Domain/TaskAgg/Tasks.cs +++ b/AccountManagement.Domain/TaskAgg/Tasks.cs @@ -1,10 +1,12 @@ 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; @@ -80,4 +82,40 @@ public class Tasks : EntityBase 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; + } } \ No newline at end of file diff --git a/AccountManagement.Domain/TaskMessageItemsAgg/TaskMessageItems.cs b/AccountManagement.Domain/TaskMessageItemsAgg/TaskMessageItems.cs index 155017f2..a63f881e 100644 --- a/AccountManagement.Domain/TaskMessageItemsAgg/TaskMessageItems.cs +++ b/AccountManagement.Domain/TaskMessageItemsAgg/TaskMessageItems.cs @@ -19,4 +19,13 @@ public class TaskMessageItems:EntityBase public TaskMessage TaskMessage { get; set; } + public void SetSenderId(long senderId) + { + SenderAccountId = senderId; + } + + public void SetReceiver(long receiverId) + { + ReceiverAccountId = receiverId; + } } \ No newline at end of file diff --git a/ServiceHost/Test/Tester.cs b/ServiceHost/Test/Tester.cs index 95dcab26..2ffff168 100644 --- a/ServiceHost/Test/Tester.cs +++ b/ServiceHost/Test/Tester.cs @@ -1,6 +1,8 @@ using System.Diagnostics; +using AccountMangement.Infrastructure.EFCore; using CompanyManagment.App.Contracts.AdminMonthlyOverview; using CompanyManagment.EFCore; +using Microsoft.EntityFrameworkCore; using ServiceHost.Areas.AdminNew.Pages.Company.RollCall; namespace ServiceHost.Test; @@ -9,18 +11,43 @@ public class Tester { private readonly IAdminMonthlyOverviewApplication _adminMonthlyOverviewApplication; private readonly CompanyContext _companyContext; - public Tester(IAdminMonthlyOverviewApplication adminMonthlyOverviewApplication, CompanyContext companyContext) + private readonly AccountContext _accountContext; + public Tester(IAdminMonthlyOverviewApplication adminMonthlyOverviewApplication, CompanyContext companyContext, AccountContext accountContext) { _adminMonthlyOverviewApplication = adminMonthlyOverviewApplication; _companyContext = companyContext; + _accountContext = accountContext; } public async Task Test() { // await AdminMonthlyOverviewTest(); + //await MoveTasksToAnotherPerson(423, 434); - } + } + + public async Task MoveTasksToAnotherPerson(long oldAccount, long newAccount) + { + var receivedTasks = await _accountContext.Assigns.Include(x => x.Task) + .Include(x => x.TaskMessageList) + .ThenInclude(x => x.TaskMessageItemsList).Where(x => x.AssignedId == oldAccount && !x.IsDone && !x.IsCancel).ToListAsync(); + foreach (var receivedTaskAssign in receivedTasks) + { + receivedTaskAssign.ChangeAssignedId(newAccount); + } + + await _accountContext.SaveChangesAsync(); + + var senderTasks = await _accountContext.Tasks.Include(x=>x.Assigns) + .ThenInclude(x => x.TaskMessageList) + .ThenInclude(x => x.TaskMessageItemsList).Where(x => x.SenderId == oldAccount && x.Assigns.Any(a=>!a.IsDone && !a.IsCancel) ).ToListAsync(); + foreach (var task in senderTasks) + { + task.ChangeSender(newAccount); + } + await _accountContext.SaveChangesAsync(); + } private async Task AdminMonthlyOverviewTest() { var acc = _companyContext.WorkshopAccounts.FirstOrDefault(x => x.AccountId == 322);