Files
Backend-Api/CompanyManagment.App.Contracts/EmployeeDocuments/IEmployeeDocumentsApplication.cs
2025-05-05 18:09:53 +03:30

136 lines
7.3 KiB
C#

using _0_Framework.Application;
using CompanyManagment.App.Contracts.Workshop;
using System.Collections.Generic;
using System.Threading.Tasks;
using CompanyManagment.Application;
namespace CompanyManagment.App.Contracts.EmployeeDocuments
{
public interface IEmployeeDocumentsApplication
{
OperationResult AddEmployeeDocumentItemForClient(AddEmployeeDocumentItem command);
OperationResult AddEmployeeDocumentItemForAdmin(AddEmployeeDocumentItem command);
OperationResult AddRangeEmployeeDocumentItemsByClient(long workshopId, long employeeId,
List<AddEmployeeDocumentItem> command);
/// <summary>
/// unsubmitted دریافت جزییات مدارک پرسنل به همراه مدارک
/// </summary>
EmployeeDocumentsViewModel GetDetailsForClient(long employeeId, long workshopId);
/// <summary>
/// unsubmitted دریافت جزییات مدارک پرسنل بدون مدارک
/// </summary>
EmployeeDocumentsViewModel GetDetailsForAdmin(long employeeId, long workshopId);
List<EmployeeDocumentsViewModel> SearchForClient(SearchEmployeeDocuments cmd, EmployeeDocumentSearchMode mode);
OperationResult RemoveClientDocumentItemsByAdmin(long workshopId, long employeeId, List<DocumentItemLabel> label);
OperationResult SubmitDocumentItemsByClient(SubmitEmployeeDocuments cmd);
OperationResult SubmitDocumentItemsByEmployeeIdWorkshopId(long employeeId, long workshopId);
List<EmployeeDocumentsViewModel> SearchForAdmin(SearchEmployeeDocuments cmd, EmployeeDocumentSearchMode mode);
EmployeeDocumentsViewModel GetDetailsForChecker(long employeeId, long workshopId);
OperationResult DeleteUnsubmittedDocument(long documentItemId);
OperationResult SubmitCheckerOperation(CheckerDocumentsOperation cmd);
OperationResult DeleteEmployeeMultipleUnsubmittedDocumentsByLabel(long workshopId, long employeeId, DocumentItemLabel label);
OperationResult DeleteUnsubmittedItems(long workshopId,long employeeId);
OperationResult RemoveClientDocumentItemsByAdminTemp(long workshopId, long employeeId, DocumentItemLabel labels);
List<WorkshopWithEmployeeDocumentsViewModel> GetWorkshopsWithUploadedDocumentsForChecker();
List<WorkshopWithEmployeeDocumentsViewModel> GetWorkshopsWithDocumentsAwaitingReviewForCheckerWorkFlow();
List<EmployeeDocumentsViewModel> GetByWorkshopIdWithItemsForChecker(long workshopId, bool confirmedOnly);
OperationResult SubmitDocumentItemsByAdmin(SubmitEmployeeDocuments cmd);
OperationResult SubmitDocumentItemsByAdminInWorkFlow(SubmitEmployeeDocuments cmd);
List<WorkshopWithEmployeeDocumentsViewModel> GetWorkshopDocumentsAwaitingUploadForAdminWorkFlow(List<long> workshops);
List<EmployeeDocumentsViewModel> GetByWorkshopIdWithItemsForAdminWorkFlow(long workshopId);
List<EmployeeDocumentsViewModel> GetDocumentsAwaitingReviewByWorkshopIdForCheckerWorkFlow(long workshopId);
Task<int> GetAdminWorkFlowCountForSubmittedAndRejectedDocuments(List<long> workshopIds);
Task<int> GetAdminWorkFlowCountForNewEmployees(List<long> workshopIds);
OperationResult RemoveByAdmin(long documentItemId);
Task<int> GetCheckerWorkFlowCount();
/// <summary>
/// برای افزودن یکباره مدارک در افزودن پرسنل توسط ادمین
/// </summary>
OperationResult AddRangeEmployeeDocumentItemsByAdmin(long workshopId, long employeeId,
List<AddEmployeeDocumentItem> command);
#region Mahan
/// <summary>
/// کارگاهی که افزودن پرسنل کرده اند. بر اساس نقش فیلتر میشوند
/// </summary>
/// <param name="workshops"></param>
/// <param name="roleId"></param>
/// <returns></returns>
Task<ICollection<WorkshopWithEmployeeDocumentsViewModel>> GetWorkshopDocumentCreatedEmployeeForAdmin(
List<long> workshops, long roleId);
/// <summary>
/// مدارک های برگشت خورده براساس دسترسی افراد و نقششان. یک مدرک برگشت خورده به تمامی کسانی که به آن کارگاه دسترسی دارند و تمامی کسانی که هم نقش آپلود کننده بوده اند نمایش داده میشود
/// </summary>
/// <param name="workshops"></param>
/// <param name="roleId"></param>
/// <returns></returns>
Task<ICollection<WorkshopWithEmployeeDocumentsViewModel>> GetWorkshopDocumentRejectedForAdmin(
List<long> workshops, long roleId);
/// <summary>
/// مدارک های برگشت خورده براساس دسترسی افراد و نقششان. یک مدرک برگشت خورده به تمامی کسانی که به آن کارگاه دسترسی دارند و تمامی کسانی که هم نقش آپلود کننده بوده اند نمایش داده میشود
/// </summary>
/// <param name="workshopId"></param>
/// <param name="roleId"></param>
/// <returns></returns>
Task<List<EmployeeDocumentsViewModel>> GetRejectedItemsByWorkshopIdAndRoleForAdminWorkFlow(long workshopId,
long roleId);
/// <summary>
/// کارگاه هایی که افزودن پرسنل کرده اند و مدارک آنها ناقص است
/// </summary>
/// <param name="workshops"></param>
/// <param name="roleId"></param>
/// <returns></returns>
Task<List<WorkshopWithEmployeeDocumentsViewModel>> GetCreatedEmployeesWorkshopDocumentForAdmin(
List<long> workshops, long roleId);
/// <summary>
/// پرسنلی که افزوده شده اند در کارگاه و آپلود مدارک آنها ناقص است
/// </summary>
/// <param name="workshopId"></param>
/// <returns></returns>
Task<List<EmployeeDocumentsViewModel>> GetCreatedEmployeesDocumentByWorkshopIdForAdmin(long workshopId);
/// <summary>
/// لیست کارگاه هایی که مدارک آپلود شده توسط کلاینت برگشت خورده است در کارپوشه ادمین
/// </summary>
/// <param name="workshops"></param>
/// <param name="roleId"></param>
/// <returns></returns>
Task<List<WorkshopWithEmployeeDocumentsViewModel>> GetClientRejectedDocumentWorkshopsForAdmin(
List<long> workshops, long roleId);
/// <summary>
/// مدارک های آپلود شده توسط کلاینت در کارگاه که برگشت خورده اند در کارپوشه ادمین
/// </summary>
/// <param name="workshopId"></param>
/// <returns></returns>
Task<List<EmployeeDocumentsViewModel>> GetClientRejectedDocumentByWorkshopIdForAdmin(long workshopId);
/// <summary>
/// مدارک های برگشت خورده برای کلاینت
/// </summary>
/// <param name="workshopId"></param>
/// <param name="accountId"></param>
/// <returns></returns>
Task<List<EmployeeDocumentsViewModel>> GetClientRejectedDocumentForClient(long workshopId, long accountId);
#endregion
EmployeeDocumentItemViewModel GetOneDocumentItemDetailsForAdmin(long employeeId, long workshopId,long documentItemId);
}
}