Files
Backend-Api/WorkFlow/Infrastructure/WorkFlow.Infrastructure.ACL/EmployeeDocuments/IWorkFlowEmployeeDocumentsACL.cs
2025-05-05 18:09:53 +03:30

104 lines
4.8 KiB
C#

using CompanyManagment.App.Contracts.EmployeeDocuments;
using WorkFlow.Application.Contracts.AdminWorkFlow;
namespace WorkFlow.Infrastructure.ACL.EmployeeDocuments
{
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 WorkFlowEmployeeDocumentsACL(IEmployeeDocumentsApplication employeeDocumentsApplication)
{
_employeeDocumentsApplication = employeeDocumentsApplication;
}
public List<WorkshopWithDocumentsViewModelForWorkFlow> GetWorkshopsWithDocumentsAwaitingUploadForAdmin(List<long> workshops)
{
return _employeeDocumentsApplication.GetWorkshopDocumentsAwaitingUploadForAdminWorkFlow(workshops).Select(x => new WorkshopWithDocumentsViewModelForWorkFlow()
{
WorkshopId = x.WorkshopId,
UploadItemsCount = x.EmployeesWithoutDocumentCount,
WorkshopName = x.WorkshopFullName,
EmployerName = x.EmployerName,
}).ToList();
}
public async Task<int> GetAdminWorkFlowCountForSubmittedDocuments(List<long> workshopIds)
{
return await _employeeDocumentsApplication.GetAdminWorkFlowCountForSubmittedAndRejectedDocuments(workshopIds);
}
public async Task<int> GetAdminWorkFlowCountForNewEmployees(List<long> workshopIds)
{
return await _employeeDocumentsApplication.GetAdminWorkFlowCountForNewEmployees(workshopIds);
}
public async Task<int> GetCheckerWorkFlowCount()
{
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();
}
}
}