using _0_Framework.Application;
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
using CompanyManagment.App.Contracts.YearlySalary;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace CompanyManagment.App.Contracts.ClassificationScheme;
///
/// اپلیکیش طرح طبقه بندی مشاغل
///
public interface IClassificationSchemeApplication
{
///
/// پارشیال صفحه ایجاد طرح
///
///
///
Task GetClassificationSchemeList(long workshopId);
///
/// ایجاد طرح
///
///
///
Task CreateClassificationScheme(CreateClassificationSchemeDto command);
///
/// دریافت اطلاعات طرح برای مودال ویرایش
///
///
///
Task GetClassificationScheme(long id);
///
/// دریافت اطلاعات طر برای محاسبات
///
///
///
Task GetClassificationSchemeToCompute(long id);
///
/// ویرایش طرح
///
///
///
Task EditClassificationScheme(EditClassificationSchemeDto command);
///
/// دریافت گروه ها و مشاغلشان برای تب تعیین مشاغل
///
///
///
Task> GetGroupAndJobs(long schemeId);
///
/// دریافت مشاغل گروه توسط آی دی گروه
///
///
///
Task> GetGroupJobs(long groupId);
///
/// چک میکند که آی پرسنلی وجود دارد که این شغل به او نسبت داده شده
///
///
///
///
Task CheckEmployeeHasThisJob(long id, long groupId);
///
/// ایجاد مشاغل گروه
///
///
///
///
Task CreateGroupJobs(List createClassificationGroupJob, List deleteJobList);
///
/// چک میکند که آیا برای این طرح تابحال دستمزدی ایجاد شده یا نه
///
///
///
Task GetSalariesTabData(long schemeId);
///
/// در یافت اطلاعات گروه برای لود مودال ایجاد دستمزد های
///
///
Task GetGroupToCreateSalariesModal(long schemeId);
///
/// ایجاد دستمزدها و ضرایب ریالی هر گروه در هر سال
///
///
///
Task CreateGroupSalaryAndCoefficient(SalaryAndRialCoefficientModel command);
///
/// دریافت دستمزدها و ضریب ریالی برای مودال ویرایش
///
///
///
///
///
Task GetEditSalariesData(long schemeId, string startDate, string endDate);
///
/// ثبت ویرایش دستمزدها و ضریب
///
///
///
Task EditGroupSalaryAndCoefficient(SalaryAndRialCoefficientModel command);
///
/// دریافت لیست پرسنل برای تب افزودن پرسنل
///
///
///
Task GetEmployeeDataTab(EmployeeInfoTab command);
///
/// دریافت گروه های طرح
///
///
///
Task> GetGroups(long schemeId);
///
/// ذخیره پرسنل افزوده شده در گروه
///
///
///
Task AddEmployeeToGroup(AddEmployeeToGroup command);
///
/// انتقال پرسنل به گروه جدید
///
///
///
Task TransferEmployeeToNewGroup(List command);
///
/// ذخیره ویرایش گروه پرسنل
///
///
///
Task EditGroupMember(AddEmployeeToGroup command);
///
/// ذخیره ویرایش گروه چندگانه پرسنل
///
///
///
Task EditMultipleGroupMember(List command);
///
/// دریافت اطلاعات عضویتی پرسنل در گروه
///
///
///
Task GetEmployeeMemberizeData(long employeeId);
///
/// متد محاسبه پایه سنوات برا افراد تک گروه
///
/// تاریخ شروع طرح
/// تاریخ پاین طرح، اجباری نیست
/// تاریخ شروع قراداد
/// تاریخ پایان قراداد
/// شماره گروه
/// آی دی پرسنل
/// آی دی کارگاه
///
Task BaseYearComputeOneGroup(DateTime schemeStart, DateTime? schemeEnd,
DateTime contractStart, DateTime contractEnd, string groupNo, long employeeId, long workshopId);
#region ForApi
///
/// چک کردن امکان حذف طرح
///
///
///
Task> CheckToDeleteScheme(long id);
///
/// حذف طرح
///
///
///
Task DeleteScheme(long id);
///
/// تب گروه ها و مشاغل
/// لیست گروه ها
///
///
///
Task> GetGroupList(long schemeId);
///
/// دریافت لیست مشاغل برای مودال ایجاد و ویرایش
///
///
///
Task GetCreateOrEditJobsData(long groupId);
///
/// چک میکند که آی پرسنلی وجود دارد که این شغل به او نسبت داده شده
///
///
///
///
Task CheckIfEmployeeHasThisJob(long jobId, long groupId);
///
/// ذخیر ایجاد یا ویرایش مشاغل در گروه
///
///
///
Task SaveJobsToGroup(AddOrEditJobInGroupDto command);
///
/// لیست دستمزدها بر اساس تاریخ و سال برای تب دستمزدها
///
///
///
Task> GetSalaryList(long schemeId);
#endregion
}