using _0_Framework.Application; using CompanyManagment.App.Contracts.Employee; using WorkFlow.Application.Contracts.AdminWorkFlow; using WorkFlow.Infrastructure.ACL.Employee; using WorkFlow.Infrastructure.ACL.EmployeeDocuments; using WorkFlow.Infrastructure.ACL.InstitutionContract; using WorkFlow.Infrastructure.ACL.Workshop; namespace WorkFlow.Application { public class AdminWorkFlowApplication : IAdminWorkFlowApplication { private readonly IWorkFlowEmployeeDocumentsACL _workFlowEmployeeDocumentsACL; private readonly IWorkFlowWorkshopACL _workFlowWorkshopACL; private readonly IWorkFlowEmployeeACL _workFlowEmployeeACL; private readonly IWorkFlowInstitutionContractACL _workFlowInstitutionContractACL; public AdminWorkFlowApplication(IWorkFlowEmployeeDocumentsACL workFlowEmployeeDocumentsACL, IWorkFlowWorkshopACL workFlowWorkshopACL, IWorkFlowEmployeeACL workFlowEmployeeACL, IWorkFlowInstitutionContractACL workFlowInstitutionContractACL) { _workFlowEmployeeDocumentsACL = workFlowEmployeeDocumentsACL; _workFlowWorkshopACL = workFlowWorkshopACL; _workFlowEmployeeACL = workFlowEmployeeACL; _workFlowInstitutionContractACL = workFlowInstitutionContractACL; } #region Pooya public List GetWorkshopDocumentsAwaitingReviewForChecker( List workshops) { return _workFlowEmployeeDocumentsACL.GetWorkshopDocumentsAwaitingReviewForChecker(workshops); } public async Task GetEmployeeDocumentWorkFlowCountsForAdmin(List workshopIds, long roleId) { var count = 0; count += await _workFlowEmployeeDocumentsACL.GetWorkshopDocumentRejectedForAdmin(workshopIds, roleId); count += await _workFlowEmployeeDocumentsACL.GetCreatedEmployeesWorkshopDocumentForAdmin(workshopIds, roleId); //count+= await _workFlowEmployeeDocumentsACL.GetClientRejectedDocumentWorkshopsForAdmin(workshopIds, roleId); return count; } public async Task GetWorkFlowCountsForAdmin(List workshopIds, long accountId, long roleId, List permissions) { var employeeDocumentWorkFlowCounts = await GetEmployeeDocumentWorkFlowCountsForAdmin(workshopIds, roleId); var startWork = await GetWorkshopsForEmployeeStartWorkCount(accountId); var leftWork = await GetWorkshopsForLeftWorkTempCount(accountId); int institutionContract = 0; if (permissions.Any(x => x == 1004)) { institutionContract = await GetInstitutionContractWorkflowCount(); } return employeeDocumentWorkFlowCounts + startWork + leftWork +institutionContract; } public async Task GetWorkFlowCountForChecker() { return await _workFlowEmployeeDocumentsACL.GetCheckerWorkFlowCount(); } public List GetWorkshopsWithDocumentsAwaitingUploadForAdmin( List workshops) { return _workFlowEmployeeDocumentsACL.GetWorkshopsWithDocumentsAwaitingUploadForAdmin(workshops); } #endregion #region Mahan #region شروع به کار پرسنل افزوده شده public async Task> GetWorkshopsForEmployeeStartWork( long accountId) { return await _workFlowWorkshopACL.GetWorkshopsForEmployeeStartWork(accountId); } public async Task GetWorkshopsForEmployeeStartWorkCount(long accountId) { return await _workFlowWorkshopACL.GetWorkshopsForEmployeeStartWorkCount(accountId); } public async Task> GetClientEmployeesStartWork( long workshopId) { return await _workFlowEmployeeACL.GetClientEmployeesStartWork(workshopId); } public async Task GetEmployeeEditInEmployeeDocumentWorkFlow( long employeeId, long workshopId) { return await _workFlowEmployeeACL.GetEmployeeEditInEmployeeDocumentWorkFlow(employeeId, workshopId); } public async Task EditEmployeeInEmployeeDocumentWorkFlow( EditEmployeeInEmployeeDocument command) { return await _workFlowEmployeeACL.EditEmployeeInEmployeeDocumentWorkFlow(command); } #endregion #region ترک کار موقت public async Task> GetWorkshopsForLeftWorkTemp( long accountId) { return await _workFlowWorkshopACL.GetWorkshopsForLeftWorkTemp(accountId); } public async Task GetWorkshopsForLeftWorkTempCount(long accountId) { return await _workFlowWorkshopACL.GetWorkshopsForLeftWorkTempCount(accountId); } public async Task GetInstitutionContractWorkflowCount() { return await _workFlowInstitutionContractACL.GetInstitutionContractWorkflowCount(); } public async Task> GetEmployeesForLeftWorkTemp( long workshopId) { return await _workFlowEmployeeACL.GetEmployeesForLeftWorkTemp(workshopId); } #endregion #region آپلود مدارک پرسنل public async Task> GetWorkshopDocumentCreatedEmployeeForAdmin(List workshops, long roleId) { return await _workFlowEmployeeDocumentsACL.GetWorkshopDocumentCreatedEmployeeForAdmin(workshops, roleId); } #endregion #endregion } }