Files
Backend-Api/Company.Domain/EmployeeDocumentsAgg/IEmployeeDocumentsRepository.cs
2025-05-05 18:09:53 +03:30

106 lines
5.6 KiB
C#

using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using _0_Framework.Domain;
using Company.Domain.EmployeeDocumentItemAgg;
using CompanyManagment.App.Contracts.EmployeeDocuments;
using CompanyManagment.App.Contracts.Workshop;
namespace Company.Domain.EmployeeDocumentsAgg
{
public interface IEmployeeDocumentsRepository : IRepository<long, EmployeeDocuments>
{
EmployeeDocuments GetByEmployeeIdWorkshopId(long employeeId, long workshopId);
EmployeeDocumentsViewModel GetViewModelByEmployeeIdWorkshopId(long employeeId, long workshopId);
List<EmployeeDocumentsViewModel> SearchForClient(SearchEmployeeDocuments cmd);
void AddRange(IEnumerable<EmployeeDocuments> entities);
EmployeeDocuments GetByIdWithItems(long employeeDocumentsId);
EmployeeDocuments GetByEmployeeIdWorkshopIdWithItems(long employeeId, long workshopId);
List<long> GetEmployeeIds(long workshopId);
List<WorkshopWithEmployeeDocumentsViewModel> GetWorkshopsWithUploadedDocuments();
List<EmployeeDocumentsViewModel> GetByWorkshopIdWithItemsForChecker(long workshopId, bool onlyConfirmed);
List<WorkshopWithEmployeeDocumentsViewModel> GetWorkshopsWithDocumentsAwaitingReviewForCheckerWorkFlow();
List<EmployeeDocumentsViewModel> SearchForAdmin(SearchEmployeeDocuments cmd);
List<WorkshopWithEmployeeDocumentsViewModel> GetWorkshopsWithDocumentsAwaitingReviewForAdminWorkFlow(List<long> workshops);
List<EmployeeDocumentsViewModel> GetByWorkshopIdWithItemsForAdminWorkFlow(long workshopId);
Task<int> GetCheckerWorkFlowCount();
Task<int> GetAdminWorkFlowCountForNewEmployees(List<long> workshopIds);
Task<int> GetAdminWorkFlowCountForSubmittedAndRejectedDocuments(List<long> workshopIds);
List<EmployeeDocumentsViewModel> GetDocumentsAwaitingReviewByWorkshopIdForCheckerWorkFlow(long workshopId);
#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
}
}