diff --git a/CompanyManagment.App.Contracts/RollCall/IRollCallApplication.cs b/CompanyManagment.App.Contracts/RollCall/IRollCallApplication.cs
index 6ada660b..6ce7bbfd 100644
--- a/CompanyManagment.App.Contracts/RollCall/IRollCallApplication.cs
+++ b/CompanyManagment.App.Contracts/RollCall/IRollCallApplication.cs
@@ -124,7 +124,7 @@ namespace CompanyManagment.App.Contracts.RollCall
///
///
///
- OperationResult RecalculateValues(long workshopId, List command);
+ Task RecalculateValues(long workshopId, List command);
}
public class ReCalculateRollCallValues
{
diff --git a/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs b/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs
index b4f19256..5c3f7e2f 100644
--- a/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs
+++ b/CompanyManagment.Application/CustomizeWorkshopSettingsApplication.cs
@@ -25,6 +25,7 @@ using Microsoft.EntityFrameworkCore.Query;
using Company.Domain.CheckoutAgg;
using Company.Domain.CustomizeCheckoutAgg;
using Company.Domain.CustomizeCheckoutTempAgg;
+using Company.Domain.RollCallAgg;
using CompanyManagment.EFCore.Repository;
@@ -38,7 +39,8 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo
IRollCallApplication rollCallAppllication,
ICheckoutRepository checkoutRepository,
ICustomizeCheckoutRepository customizeCheckoutRepository,
- ICustomizeCheckoutTempRepository customizeCheckoutTempRepository)
+ ICustomizeCheckoutTempRepository customizeCheckoutTempRepository,
+ IRollCallRepository rollCallRepository)
: ICustomizeWorkshopSettingsApplication
{
private readonly ICustomizeWorkshopSettingsRepository _customizeWorkshopSettingsRepository = customizeWorkshopSettingsRepository;
@@ -53,6 +55,7 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo
private readonly ICheckoutRepository _checkoutRepository = checkoutRepository;
private readonly ICustomizeCheckoutRepository _customizeCheckoutRepository = customizeCheckoutRepository;
private readonly ICustomizeCheckoutTempRepository _customizeCheckoutTempRepository = customizeCheckoutTempRepository;
+ private readonly IRollCallRepository _rollCallRepository = rollCallRepository;
#region RollCallShifts
@@ -822,14 +825,19 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo
var notSelectedEmployeeSettings = employeeSettings.Where(x => !selectedEmployeesIds.Contains(x.EmployeeId));
- var weeklyOffDays = command.OffDayOfWeeks?.Select(x => new WeeklyOffDay(x)).ToList() ?? [];
- using var transaction = new TransactionScope();
+ var weeklyOffDays = command.OffDayOfWeeks?
+ .Select(x => new WeeklyOffDay(x)).ToList() ?? [];
+
+ using var rollCallTransaction = _rollCallRepository.BeginTransactionAsync()
+ .GetAwaiter().GetResult();
entity.EditSimpleAndOverwriteOnEmployee(command.Name, selectedEmployeesIds, groupSettingsShifts, command.WorkshopShiftStatus,
command.IrregularShift, breakTime, isChanged, command.HolidayWork, rotatingShift, weeklyOffDays);
if (reCalculateCommand.Count > 0)
{
- var result = _rollCallApplication.RecalculateValues(workshopSettings.WorkshopId, reCalculateCommand);
+ var result = _rollCallApplication
+ .RecalculateValues(workshopSettings.WorkshopId, reCalculateCommand)
+ .GetAwaiter().GetResult();
if (result.IsSuccedded == false)
{
@@ -844,7 +852,7 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo
_customizeWorkshopGroupSettingsRepository.SaveChanges();
- transaction.Complete();
+ rollCallTransaction.Commit();
return op.Succcedded();
}
public OperationResult EditSimpleRollCallEmployeeSetting(EditCustomizeEmployeeSettings command,
@@ -1043,7 +1051,9 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo
_customizeWorkshopGroupSettingsRepository.SaveChanges();
if (reCalculateCommand.Count > 0)
{
- var result = _rollCallApplication.RecalculateValues(command.WorkshopId, reCalculateCommand);
+ var result = _rollCallApplication
+ .RecalculateValues(command.WorkshopId, reCalculateCommand)
+ .GetAwaiter().GetResult();
if (result.IsSuccedded == false)
{
diff --git a/CompanyManagment.Application/RollCallApplication.cs b/CompanyManagment.Application/RollCallApplication.cs
index 1730c70d..e73e4c3e 100644
--- a/CompanyManagment.Application/RollCallApplication.cs
+++ b/CompanyManagment.Application/RollCallApplication.cs
@@ -788,7 +788,7 @@ public class RollCallApplication : IRollCallApplication
return _rollCallRepository.CheckRepeat(employeeId, workshopId);
}
- public OperationResult RecalculateValues(long workshopId, List commands)
+ public async Task RecalculateValues(long workshopId, List commands)
{
var operationResult = new OperationResult();
try
@@ -812,24 +812,43 @@ public class RollCallApplication : IRollCallApplication
var oldestDate = commands.MinBy(x => x.FromDate).FromDate.ToGeorgianDateTime();
- var allRollCalls = _rollCallRepository
+ var allRollCalls = await _rollCallRepository
.GetRollCallsUntilNowWithWorkshopIdEmployeeIds(workshopId, commands.Select(x => x.EmployeeId).ToList(),
- oldestDate).GetAwaiter().GetResult();
+ oldestDate);
+
+ var rollCalls =
+ commands.SelectMany(command =>
+ allRollCalls.Where(x =>
+ x.EmployeeId == command.EmployeeId &&
+ x.ShiftDate >= command.FromDate.ToGeorgianDateTime()
+ )
+ );
-
- foreach (var command in commands)
+ foreach (var rollCall in rollCalls)
{
- var rollCalls = allRollCalls
- .Where(x => x.EmployeeId == command.EmployeeId && x.ShiftDate >= command.FromDate.ToGeorgianDateTime()).ToList();
+ rollCall.ClearTimeDiff();
- foreach (var rollCall in rollCalls)
- {
- rollCall.ClearTimeDiff();
- _rollCallRepository.SaveChanges();
- rollCall.SetEndDateTime(rollCall.EndDate!.Value, _rollCallDomainService);
- }
+ await _rollCallRepository.SaveChangesAsync();
+
+ rollCall.SetEndDateTime(
+ rollCall.EndDate!.Value,
+ _rollCallDomainService
+ );
}
- _rollCallRepository.SaveChanges();
+
+ // foreach (var command in commands)
+ // {
+ // var rollCalls = allRollCalls
+ // .Where(x => x.EmployeeId == command.EmployeeId && x.ShiftDate >= command.FromDate.ToGeorgianDateTime()).ToList();
+ //
+ // foreach (var rollCall in rollCalls)
+ // {
+ // rollCall.ClearTimeDiff();
+ // await _rollCallRepository.SaveChangesAsync();
+ // rollCall.SetEndDateTime(rollCall.EndDate!.Value, _rollCallDomainService);
+ // }
+ // }
+ await _rollCallRepository.SaveChangesAsync();
return operationResult.Succcedded();
}
diff --git a/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml.cs b/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml.cs
index 781d76b8..7d41262c 100644
--- a/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml.cs
+++ b/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml.cs
@@ -293,9 +293,9 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall
});
}
- public IActionResult OnPostReCalculateValues(List command)
+ public async Task OnPostReCalculateValues(List command)
{
- var result = _rollCallApplication.RecalculateValues(_workshopId, command);
+ var result =await _rollCallApplication.RecalculateValues(_workshopId, command);
return new JsonResult(new
{