employeeDocument Refactor

This commit is contained in:
MahanCh
2025-05-05 18:09:53 +03:30
parent 9cdb922aa1
commit 6eec454685
63 changed files with 16549 additions and 978 deletions

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using _0_Framework.Application;
@@ -56,10 +57,17 @@ public interface IAdminWorkFlowApplication
Task<OperationResult> EditEmployeeInEmployeeDocumentWorkFlow(EditEmployeeInEmployeeDocument command);
/// <summary>
/// لیست کارگاه هایی که از کلاینت، پرسنلی را شروع به کار زدند و مدارک آنها کامل آپلود نشده است
/// </summary>
/// <param name="workshops"></param>
/// <param name="roleId"></param>
/// <returns></returns>
Task<ICollection<WorkshopWithDocumentsViewModelForWorkFlow>> GetWorkshopDocumentCreatedEmployeeForAdmin(List<long> workshops, long roleId);
#endregion
Task<int> GetEmployeeDocumentWorkFlowCountsForAdmin(List<long> workshopIds);
Task<int> GetWorkFlowCountsForAdmin(List<long> workshopIds, long accountId);
Task<int> GetEmployeeDocumentWorkFlowCountsForAdmin(List<long> workshopIds, long roleId);
Task<int> GetWorkFlowCountsForAdmin(List<long> workshopIds, long accountId, long roleId);
Task<int> GetWorkFlowCountForChecker();
@@ -85,6 +93,7 @@ public interface IAdminWorkFlowApplication
#endregion
}
/// <summary>
@@ -112,7 +121,7 @@ public class ClientLeftWorkEmployeesWorkFlowViewModel
/// </summary>
public string LeftWorkDate { get; set; } = string.Empty;
}
/// <summary>

View File

@@ -11,13 +11,17 @@ public interface IWorkFlowApplication
Task<OperationResult> CreateRollCallConfirmedWithoutLunchBreak(CreateRollCallConfirmedWithoutLunchBreak command);
Task<int> GetCountAllWorkFlows(long workshopId);
Task<int> GetCountAllWorkFlows(long workshopId, long accountId);
Task<int> GetRollCallAbsentsWorkFlows(long workshopId);
Task<int> GetCountCutRollCallByBgService(long workshopId);
Task<int> GetAllWorkFlowCount(long workshopId);
Task<int> GetAllWorkFlowCount(long workshopId , long accountId);
Task<int> GetAllWorkFlowCountAsync(long workshopId);
Task<DailyRollCallWorkFlowViewModel> GetAbsentRollCallWorkFlowsByDate(long workshopId, DateTime date);
Task<int> GetAllRollCallCount(long workshopId);
Task<int> GetAllEmployeeDocuments(long workshopId, long accountId);
Task<DailyRollCallWorkFlowViewModel> GetAbsentRollCallWorkFlowsByDate(long workshopId, DateTime date);
Task<DailyRollCallConfirmedWithoutLunchBreakViewModel> GetEmployeesWithoutLunchBreakByDate(long workshopId, DateTime date);
Task<DailyRollCallWorkFlowViewModel> GetRollCallWorkFlowsCutByBgServiceByDate(long workshopId, DateTime date);
Task<DailyRollCallWorkFlowViewModel> GetUndefinedRollCallsByDate(long workshopId, DateTime date);

View File

@@ -5,21 +5,20 @@ using WorkFlow.Infrastructure.ACL.Employee;
using WorkFlow.Infrastructure.ACL.EmployeeDocuments;
using WorkFlow.Infrastructure.ACL.Workshop;
namespace WorkFlow.Application
{
public class AdminWorkFlowApplication : IAdminWorkFlowApplication
{
private readonly IWorkFlowEmployeeDocumentsACL _workFlowEmployeeDocumentsACL;
public class AdminWorkFlowApplication : IAdminWorkFlowApplication
{
private readonly IWorkFlowEmployeeDocumentsACL _workFlowEmployeeDocumentsACL;
private readonly IWorkFlowWorkshopACL _workFlowWorkshopACL;
private readonly IWorkFlowEmployeeACL _workFlowEmployeeACL;
public AdminWorkFlowApplication(IWorkFlowEmployeeDocumentsACL workFlowEmployeeDocumentsACL, IWorkFlowWorkshopACL workFlowWorkshopAcl, IWorkFlowEmployeeACL workFlowEmployeeAcl)
public AdminWorkFlowApplication(IWorkFlowEmployeeDocumentsACL workFlowEmployeeDocumentsACL, IWorkFlowWorkshopACL workFlowWorkshopACL, IWorkFlowEmployeeACL workFlowEmployeeACL)
{
_workFlowEmployeeDocumentsACL = workFlowEmployeeDocumentsACL;
_workFlowWorkshopACL = workFlowWorkshopAcl;
_workFlowEmployeeACL = workFlowEmployeeAcl;
_workFlowWorkshopACL = workFlowWorkshopACL;
_workFlowEmployeeACL = workFlowEmployeeACL;
}
#region Pooya
@@ -29,28 +28,29 @@ namespace WorkFlow.Application
return _workFlowEmployeeDocumentsACL.GetWorkshopDocumentsAwaitingReviewForChecker(workshops);
}
public async Task<int> GetEmployeeDocumentWorkFlowCountsForAdmin(List<long> workshopIds)
public async Task<int> GetEmployeeDocumentWorkFlowCountsForAdmin(List<long> workshopIds,long roleId)
{
var submittedDocumentsByClient = await _workFlowEmployeeDocumentsACL.GetAdminWorkFlowCountForSubmittedDocuments(workshopIds);
var count = 0;
count += await _workFlowEmployeeDocumentsACL.GetWorkshopDocumentRejectedForAdmin(workshopIds,roleId);
var newEmployees = await _workFlowEmployeeDocumentsACL.GetAdminWorkFlowCountForNewEmployees(workshopIds);
count+= await _workFlowEmployeeDocumentsACL.GetCreatedEmployeesWorkshopDocumentForAdmin(workshopIds,roleId);
//count+= await _workFlowEmployeeDocumentsACL.GetClientRejectedDocumentWorkshopsForAdmin(workshopIds, roleId);
return submittedDocumentsByClient + newEmployees;
return count;
}
public async Task<int> GetWorkFlowCountsForAdmin(List<long> workshopIds, long accountId)
public async Task<int> GetWorkFlowCountsForAdmin(List<long> workshopIds, long accountId,long roleId)
{
var employeeDocumentWorkFlowCounts = await GetEmployeeDocumentWorkFlowCountsForAdmin(workshopIds);
var employeeDocumentWorkFlowCounts = await GetEmployeeDocumentWorkFlowCountsForAdmin(workshopIds, roleId);
var startWork = await GetWorkshopsForEmployeeStartWorkCount(accountId);
var leftWork = await GetWorkshopsForLeftWorkTempCount(accountId);
return employeeDocumentWorkFlowCounts + startWork + leftWork;
}
public async Task<int> GetWorkFlowCountForChecker()
{
return await _workFlowEmployeeDocumentsACL.GetCheckerWorkFlowCount();
@@ -64,6 +64,7 @@ namespace WorkFlow.Application
return _workFlowEmployeeDocumentsACL.GetWorkshopsWithDocumentsAwaitingUploadForAdmin(workshops);
}
#endregion
#region Mahan
@@ -118,6 +119,15 @@ namespace WorkFlow.Application
#endregion
#region آپلود مدارک پرسنل
public async Task<ICollection<WorkshopWithDocumentsViewModelForWorkFlow>> GetWorkshopDocumentCreatedEmployeeForAdmin(List<long> workshops, long roleId)
{
return await _workFlowEmployeeDocumentsACL.GetWorkshopDocumentCreatedEmployeeForAdmin(workshops, roleId);
}
#endregion
#endregion
}

View File

@@ -1,6 +1,7 @@
using _0_Framework.Application;
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
using Company.Domain.RollCallAgg.DomainService;
using CompanyManagment.App.Contracts.EmployeeDocuments;
using WorkFlow.Application.Contracts.RollCallConfirmedAbsence;
using WorkFlow.Application.Contracts.RollCallConfirmedWithoutLunchBreak;
using WorkFlow.Application.Contracts.Shared;
@@ -21,8 +22,8 @@ public class WorkFlowApplication : IWorkFlowApplication
private readonly IWorkFlowCustomizedWorkshopSettingsACL _customizedWorkshopSettingsACL;
private readonly IRollCallDomainService _rollCallDomainService;
private readonly IRollCallConfirmedWithoutLunchBreakRepository _rollCallConfirmedWithoutLunchBreakRepository;
public WorkFlowApplication(IRollCallConfirmedAbsenceRepository absenceRepository, IWorkFlowRollCallACL rollCallACL, IWorkFlowCheckoutACL checkoutACL, IWorkFlowCustomizedWorkshopSettingsACL customizedWorkshopSettingsACL, IRollCallConfirmedWithoutLunchBreakRepository rollCallConfirmedWithoutLunchBreakRepository, IRollCallDomainService rollCallDomainService)
private readonly IEmployeeDocumentsApplication _employeeDocumentsApplication;
public WorkFlowApplication(IRollCallConfirmedAbsenceRepository absenceRepository, IWorkFlowRollCallACL rollCallACL, IWorkFlowCheckoutACL checkoutACL, IWorkFlowCustomizedWorkshopSettingsACL customizedWorkshopSettingsACL, IRollCallConfirmedWithoutLunchBreakRepository rollCallConfirmedWithoutLunchBreakRepository, IRollCallDomainService rollCallDomainService, IEmployeeDocumentsApplication employeeDocumentsApplication)
{
_absenceRepository = absenceRepository;
_rollCallACL = rollCallACL;
@@ -30,6 +31,7 @@ public class WorkFlowApplication : IWorkFlowApplication
_customizedWorkshopSettingsACL = customizedWorkshopSettingsACL;
_rollCallConfirmedWithoutLunchBreakRepository = rollCallConfirmedWithoutLunchBreakRepository;
_rollCallDomainService = rollCallDomainService;
_employeeDocumentsApplication = employeeDocumentsApplication;
}
public async Task<OperationResult> CreateRollCallConfirmedAbsence(CreateRollCallConfirmedAbsence command)
@@ -57,16 +59,16 @@ public class WorkFlowApplication : IWorkFlowApplication
var newEntity = new RollCallConfirmedWithoutLunchBreak(command.RollCallId, entity.EmployeeId, entity.WorkshopId, entity.RollCallDate);
_rollCallConfirmedWithoutLunchBreakRepository.Create(newEntity);
await _rollCallConfirmedWithoutLunchBreakRepository.CreateAsync(newEntity);
await _rollCallConfirmedWithoutLunchBreakRepository.SaveChangesAsync();
return op.Succcedded();
}
public async Task<int> GetCountAllWorkFlows(long workshopId)
public async Task<int> GetCountAllWorkFlows(long workshopId,long accountId)
{
int count = 0;
count += await GetAllWorkFlowCount(workshopId);
count += await GetAllWorkFlowCount(workshopId,accountId);
return count;
}
public Task<int> GetRollCallAbsentsWorkFlows(long workshopId)
@@ -81,29 +83,53 @@ public class WorkFlowApplication : IWorkFlowApplication
{
return (await GetRollCallWorkFlowsCutByBgService(workshopId)).Count;
}
public async Task<int> GetAllWorkFlowCount(long workshopId)
{
var count = 0;
var activeServiceByWorkshopId = _rollCallACL.GetActiveServiceByWorkshopId(workshopId);
if (activeServiceByWorkshopId == null)
{
return count;
}
//count += _rollCallACL.GetRollCallAbsentsWorkFlows(accId, workshopId);
count += (await GetAbsentRollCallWorkFlows(workshopId))?.Count ?? 0;
count += (await GetRollCallWorkFlowsCutByBgService(workshopId))?.Count ?? 0;
count += (await GetEmployeesWithoutLunchBreak(workshopId))?.Count ?? 0;
//count += (await GetRollCallsOverlappingLeaves(workshopId))?.Count ?? 0;
count += (await GetUndefinedRollCalls(workshopId))?.Count ?? 0;
public async Task<int> GetAllWorkFlowCount(long workshopId,long accountId)
{
var count = 0;
// RollCall
count += await GetAllRollCallCount(workshopId);
count += await GetAllEmployeeDocuments(workshopId,accountId );
// Employee Documents
return count;
}
public async Task<int> GetAllEmployeeDocuments(long workshopId, long accountId)
{
int count = 0;
count += (await _employeeDocumentsApplication.GetClientRejectedDocumentForClient(workshopId, accountId)).Count;
return count;
}
public Task<int> GetAllWorkFlowCountAsync(long workshopId)
{
return Task.FromResult(20);
}
public async Task<int> GetAllRollCallCount(long workshopId)
{
int count = 0;
var activeServiceByWorkshopId = _rollCallACL.GetActiveServiceByWorkshopId(workshopId);
if (activeServiceByWorkshopId == null)
{
return count;
}
//count += _rollCallACL.GetRollCallAbsentsWorkFlows(accId, workshopId);
count += (await GetAbsentRollCallWorkFlows(workshopId))?.Count ?? 0;
count += (await GetRollCallWorkFlowsCutByBgService(workshopId))?.Count ?? 0;
count += (await GetEmployeesWithoutLunchBreak(workshopId))?.Count ?? 0;
//count += (await GetRollCallsOverlappingLeaves(workshopId))?.Count ?? 0;
count += (await GetUndefinedRollCalls(workshopId))?.Count ?? 0;
return count;
}
#region Methods For Ajax
/// <summary>
@@ -342,8 +368,6 @@ public class WorkFlowApplication : IWorkFlowApplication
}
#region Methods For OnGet

View File

@@ -3,25 +3,37 @@ using WorkFlow.Application.Contracts.AdminWorkFlow;
namespace WorkFlow.Infrastructure.ACL.EmployeeDocuments
{
public interface IWorkFlowEmployeeDocumentsACL
{
List<WorkshopWithDocumentsViewModelForWorkFlow> GetWorkshopDocumentsAwaitingReviewForChecker(List<long> workshops);
public interface IWorkFlowEmployeeDocumentsACL
{
List<WorkshopWithDocumentsViewModelForWorkFlow> GetWorkshopDocumentsAwaitingReviewForChecker(List<long> workshops);
List<WorkshopWithDocumentsViewModelForWorkFlow> GetWorkshopsWithDocumentsAwaitingUploadForAdmin(List<long> workshops);
Task<int> GetAdminWorkFlowCountForSubmittedDocuments(List<long> workshopIds);
Task<int> GetAdminWorkFlowCountForNewEmployees(List<long> workshopIds);
Task<int> GetCheckerWorkFlowCount();
Task<int> GetWorkshopDocumentRejectedForAdmin(List<long> workshops, long roleId);
Task<int> GetCreatedEmployeesWorkshopDocumentForAdmin(List<long> workshops, long roleId);
Task<int> GetClientRejectedDocumentWorkshopsForAdmin(List<long> workshops, long roleId);
/// <summary>
/// لیست کارگاه هایی که از کلاینت، پرسنلی را شروع به کار زدند و مدارک آنها کامل آپلود نشده است
/// </summary>
/// <param name="workshops"></param>
/// <param name="roleId"></param>
/// <returns></returns>
Task<ICollection<WorkshopWithDocumentsViewModelForWorkFlow>> GetWorkshopDocumentCreatedEmployeeForAdmin(
List<long> workshops, long roleId);
}
public class WorkFlowEmployeeDocumentsACL : IWorkFlowEmployeeDocumentsACL
{
private readonly IEmployeeDocumentsApplication _employeeDocumentsApplication;
public class WorkFlowEmployeeDocumentsACL : IWorkFlowEmployeeDocumentsACL
{
private readonly IEmployeeDocumentsApplication _employeeDocumentsApplication;
public WorkFlowEmployeeDocumentsACL(IEmployeeDocumentsApplication employeeDocumentsApplication)
{
_employeeDocumentsApplication = employeeDocumentsApplication;
}
public WorkFlowEmployeeDocumentsACL(IEmployeeDocumentsApplication employeeDocumentsApplication)
{
_employeeDocumentsApplication = employeeDocumentsApplication;
}
public List<WorkshopWithDocumentsViewModelForWorkFlow> GetWorkshopsWithDocumentsAwaitingUploadForAdmin(List<long> workshops)
@@ -30,8 +42,8 @@ namespace WorkFlow.Infrastructure.ACL.EmployeeDocuments
{
WorkshopId = x.WorkshopId,
UploadItemsCount = x.EmployeesWithoutDocumentCount,
WorkshopName = x.WorkshopFullName,
EmployerName = x.EmployerName,
WorkshopName = x.WorkshopFullName,
EmployerName = x.EmployerName,
}).ToList();
}
@@ -48,15 +60,44 @@ namespace WorkFlow.Infrastructure.ACL.EmployeeDocuments
return await _employeeDocumentsApplication.GetCheckerWorkFlowCount();
}
public async Task<int> GetWorkshopDocumentRejectedForAdmin(List<long> workshops, long roleId)
{
return (await _employeeDocumentsApplication.GetWorkshopDocumentRejectedForAdmin(workshops, roleId)).Count;
}
public async Task<int> GetCreatedEmployeesWorkshopDocumentForAdmin(List<long> workshops, long roleId)
{
return (await _employeeDocumentsApplication.GetCreatedEmployeesWorkshopDocumentForAdmin(workshops, roleId))
.Count;
}
public async Task<int> GetClientRejectedDocumentWorkshopsForAdmin(List<long> workshops, long roleId)
{
return (await _employeeDocumentsApplication.GetClientRejectedDocumentWorkshopsForAdmin(workshops, roleId))
.Count;
}
public async Task<ICollection<WorkshopWithDocumentsViewModelForWorkFlow>> GetWorkshopDocumentCreatedEmployeeForAdmin(List<long> workshops, long roleId)
{
return (await _employeeDocumentsApplication.GetWorkshopDocumentCreatedEmployeeForAdmin(workshops, roleId)).Select(x => new WorkshopWithDocumentsViewModelForWorkFlow()
{
WorkshopId = x.WorkshopId,
UploadItemsCount = x.EmployeesWithoutDocumentCount,
WorkshopName = x.WorkshopFullName,
EmployerName = x.EmployerName,
}).ToList();
}
public List<WorkshopWithDocumentsViewModelForWorkFlow> GetWorkshopDocumentsAwaitingReviewForChecker(List<long> workshops)
{
return _employeeDocumentsApplication.GetWorkshopsWithDocumentsAwaitingReviewForCheckerWorkFlow().Select(x=> new WorkshopWithDocumentsViewModelForWorkFlow()
{
WorkshopId = x.WorkshopId,
UploadItemsCount = x.SubmittedItemsCount
}).ToList();
}
{
return _employeeDocumentsApplication.GetWorkshopsWithDocumentsAwaitingReviewForCheckerWorkFlow().Select(x => new WorkshopWithDocumentsViewModelForWorkFlow()
{
WorkshopId = x.WorkshopId,
UploadItemsCount = x.SubmittedItemsCount
}).ToList();
}
}
}
}