Merge branch 'master' into Main
This commit is contained in:
@@ -124,7 +124,7 @@ namespace CompanyManagment.App.Contracts.RollCall
|
||||
/// <param name="workshopId"></param>
|
||||
/// <param name="command"></param>
|
||||
/// <returns></returns>
|
||||
OperationResult RecalculateValues(long workshopId, List<ReCalculateRollCallValues> command);
|
||||
Task<OperationResult> RecalculateValues(long workshopId, List<ReCalculateRollCallValues> command);
|
||||
}
|
||||
|
||||
public class WorkshopCurrentDayRollCallSearchModel
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -788,7 +788,7 @@ public class RollCallApplication : IRollCallApplication
|
||||
return _rollCallRepository.CheckRepeat(employeeId, workshopId);
|
||||
}
|
||||
|
||||
public OperationResult RecalculateValues(long workshopId, List<ReCalculateRollCallValues> commands)
|
||||
public async Task<OperationResult> RecalculateValues(long workshopId, List<ReCalculateRollCallValues> 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();
|
||||
}
|
||||
|
||||
@@ -1757,6 +1757,7 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
|
||||
.ThenInclude(x => x.InitialWorkshops)
|
||||
.Include(x => x.WorkshopGroup)
|
||||
.ThenInclude(x => x.CurrentWorkshops)
|
||||
.Include(x=>x.Installments)
|
||||
.FirstOrDefaultAsync(x => x.id == institutionContractId);
|
||||
}
|
||||
|
||||
@@ -2157,6 +2158,10 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
|
||||
.Include(x => x.WorkshopGroup)
|
||||
.ThenInclude(institutionContractWorkshopGroup => institutionContractWorkshopGroup.CurrentWorkshops)
|
||||
.FirstOrDefaultAsync(x => x.id == extenstionTemp.PreviousId);
|
||||
|
||||
var employerWorkshopIds = _context.Employers.Where(x=>x.ContractingPartyId == prevInstitutionContracts.ContractingPartyId).Include(x=>x.WorkshopEmployers)
|
||||
.SelectMany(x=>x.WorkshopEmployers).Select(x=>x.WorkshopId).Distinct().ToList();
|
||||
|
||||
if (prevInstitutionContracts == null)
|
||||
{
|
||||
throw new BadRequestException("قرارداد مالی قبلی یافت نشد");
|
||||
@@ -2169,7 +2174,12 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
|
||||
);
|
||||
|
||||
var workshopIds = prevInstitutionContracts.WorkshopGroup.CurrentWorkshops.Select(x => x.WorkshopId.Value);
|
||||
var workshops = await _context.Workshops.Where(x => workshopIds.Contains(x.id)).ToListAsync();
|
||||
|
||||
var workshopsNotInInstitution = employerWorkshopIds.Where(x=> !workshopIds.Contains(x)).ToList();
|
||||
|
||||
var workshops = await _context.Workshops.Where(x => workshopIds.Contains(x.id) || employerWorkshopIds.Contains(x.id))
|
||||
.ToListAsync();
|
||||
|
||||
var workshopDetails = prevInstitutionContracts.WorkshopGroup.CurrentWorkshops
|
||||
.Select(x =>
|
||||
{
|
||||
@@ -2211,6 +2221,32 @@ public class InstitutionContractRepository : RepositoryBase<long, InstitutionCon
|
||||
RollCallInPerson = service.RollCallInPerson
|
||||
};
|
||||
}).ToList();
|
||||
var notIncludeWorskhopsLeftWork =await _context.LeftWorkList
|
||||
.Where(x => workshopsNotInInstitution.Contains(x.WorkshopId) && x.StartWorkDate <= DateTime.Now &&
|
||||
x.LeftWorkDate >= DateTime.Now)
|
||||
.GroupBy(x => x.WorkshopId).ToListAsync();
|
||||
var notIncludeWorskhopsInContract = workshopsNotInInstitution.Select(x =>
|
||||
{
|
||||
var workshop = workshops.FirstOrDefault(w => w.id == x);
|
||||
var leftWorks = notIncludeWorskhopsLeftWork.FirstOrDefault(l=>l.Key ==x);
|
||||
return new WorkshopTempViewModel()
|
||||
{
|
||||
WorkshopName = workshop?.WorkshopName ?? "فاقد کارگاه",
|
||||
WorkshopServicesAmount = 0,
|
||||
WorkshopServicesAmountStr = "0",
|
||||
WorkshopId = x,
|
||||
Id = 0,
|
||||
ContractAndCheckout = false,
|
||||
ContractAndCheckoutInPerson = false,
|
||||
CustomizeCheckout = false,
|
||||
CountPerson = leftWorks?.Count()??0,
|
||||
Insurance = false,
|
||||
InsuranceInPerson = false,
|
||||
RollCall = false,
|
||||
RollCallInPerson = false,
|
||||
};
|
||||
}).ToList();
|
||||
workshopDetails = workshopDetails.Concat(notIncludeWorskhopsInContract).ToList();
|
||||
var res = new InstitutionContractExtensionWorkshopsResponse()
|
||||
{
|
||||
TotalAmount = workshopDetails.Sum(x => x.WorkshopServicesAmount).ToMoney(),
|
||||
|
||||
@@ -8,14 +8,13 @@ namespace GozareshgirProgramManager.Application.Modules.Projects.Queries.Project
|
||||
|
||||
public record ProjectBoardDetailQuery(Guid SectionId) : IBaseQuery<ProjectBoardDetailResponse>;
|
||||
|
||||
public record ProjectBoardDetailResponse(List<ProjectBoardDetailUserResponse> Users, string TotalTime,string RemainingTime );
|
||||
public record ProjectBoardDetailResponse(List<ProjectBoardDetailUserResponse> Users, string TotalTimeMinute,string RemainingTimeMinute );
|
||||
|
||||
public record ProjectBoardDetailUserResponse
|
||||
{
|
||||
public List<ProjectBoardDetailUserHistoryResponse> Histories { get; init; }
|
||||
public string UserFullName { get; init; }
|
||||
public string TotalTime { get; init; }
|
||||
public string SpentTime { get; init; }
|
||||
public string SpentTimeMinute { get; init; }
|
||||
public long UserId { get; init; }
|
||||
}
|
||||
|
||||
@@ -24,7 +23,7 @@ public record ProjectBoardDetailUserHistoryResponse
|
||||
public string Date { get; init; }
|
||||
public string startTime { get; init; }
|
||||
public string EndTime { get; init; }
|
||||
public string TotalTime { get; init; }
|
||||
public string TotalTimeMinute { get; init; }
|
||||
}
|
||||
|
||||
public class ProjectBoardDetailQueryHandler : IBaseQueryHandler<ProjectBoardDetailQuery, ProjectBoardDetailResponse>
|
||||
@@ -68,18 +67,18 @@ public class ProjectBoardDetailQueryHandler : IBaseQueryHandler<ProjectBoardDeta
|
||||
{
|
||||
UserId = x.Key,
|
||||
UserFullName = usersDict[x.Key],
|
||||
TotalTime = TimeSpan.FromTicks(x.Sum(h=>h.GetTimeSpent().Ticks)).TotalHours.ToString(CultureInfo.InvariantCulture),
|
||||
SpentTimeMinute = ((int)TimeSpan.FromTicks(x.Sum(h=>h.GetTimeSpent().Ticks)).TotalMinutes).ToString(CultureInfo.InvariantCulture),
|
||||
Histories = x.Select(h => new ProjectBoardDetailUserHistoryResponse()
|
||||
{
|
||||
Date = h.StartDate.ToFarsi(),
|
||||
startTime = h.StartDate.ToString("HH:mm"),
|
||||
EndTime = h.EndDate?.ToString("HH:mm") ?? "-",
|
||||
TotalTime = h.GetTimeSpent().ToString(@"hh\:mm")
|
||||
TotalTimeMinute = h.GetTimeSpent().TotalMinutes.ToString("F0",CultureInfo.InvariantCulture)
|
||||
}).ToList()
|
||||
};
|
||||
}).ToList();
|
||||
var response = new ProjectBoardDetailResponse(users, $"{(int)totalActivityTimeSpan.TotalHours}:{totalActivityTimeSpan.Minutes:D2}",
|
||||
$"{(int)remainingTimeSpan.TotalHours}:{remainingTimeSpan.Minutes:D2}");
|
||||
var response = new ProjectBoardDetailResponse(users, $"{(int)finalTime.TotalMinutes}",
|
||||
$"{(int)remainingTimeSpan.TotalMinutes:D2}");
|
||||
return OperationResult<ProjectBoardDetailResponse>.Success(response);
|
||||
}
|
||||
}
|
||||
@@ -293,9 +293,9 @@ namespace ServiceHost.Areas.Client.Pages.Company.RollCall
|
||||
});
|
||||
}
|
||||
|
||||
public IActionResult OnPostReCalculateValues(List<ReCalculateRollCallValues> command)
|
||||
public async Task<IActionResult> OnPostReCalculateValues(List<ReCalculateRollCallValues> command)
|
||||
{
|
||||
var result = _rollCallApplication.RecalculateValues(_workshopId, command);
|
||||
var result =await _rollCallApplication.RecalculateValues(_workshopId, command);
|
||||
|
||||
return new JsonResult(new
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user