Files
Backend-Api/CompanyManagment.App.Contracts/RollCall/IRollCallApplication.cs
2025-04-30 14:55:38 +03:30

135 lines
5.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using _0_Framework.Application;
namespace CompanyManagment.App.Contracts.RollCall
{
public interface IRollCallApplication
{
OperationResult Create(CreateRollCall command);
OperationResult Edit(long id);
EditRollCall GetByEmployeeIdAndWorkshopId(long employeeId, long workshopId);
EditRollCall GetById(long id);
/// <summary>
/// برای دریافت سوابق حضور و غیاب پرسنل در بازه خاص (کمتر از یک ماه) برای پرینت
/// </summary>
/// <param name="firstRollCallDateFa">تاریخ اولین رکورد</param>
/// <param name="lastRollCallDateFa">تاریخ آخرین رکرود</param>
/// <returns></returns>
EmployeeRollCallsByMonthViewModel GetEmployeeRollCallsHistoryForPrint(long employeeId, long workshopId, string firstRollCallDateFa, string lastRollCallDateFa);
long Flag(long employeeId, long workshopId);
/// <summary>
/// چک می کند که اگر کارگر به تازگی خروج یا ورود زده است اجازه ثبت مجدد ندهد
/// </summary>
/// <param name="employeeId"></param>
/// <param name="workshopId"></param>
/// <returns></returns>
string CheckRepeat(long employeeId, long workshopId);
#region Pooya
List<OverlappedRollCallWithLeave> GetOverlappedRollCallsWithLeaveInDates(long workshopId, DateTime start,
DateTime end);
List<RollCallsByDateViewModel> GetUndefinedRollCallWorkFlowsService(long workshopId, DateTime durationStart, DateTime durationEnd);
OperationResult RemoveEmployeeRollCallsInDate(long workshopId, long employeeId, string dateFa);
/// <summary>
/// برای محسابه ساعت کارکرد هنگام جستجوی پرسنل در بازه زمانی در صفحه سوابق
/// </summary>
TimeSpan GetEmployeeRollCallTimeSpanForDuration(long employeeId, long workshopId, string startFa, string endFa);
/// <summary>
/// برای صدور فیش حقوقی
/// </summary>
List<CheckoutDailyRollCallViewModel> GetActiveEmployeeRollCallsForDuration(long employeeId, long workshopId,
string startDate, string endDate);
/// <summary>
/// برای دریافت سوابق حضور غیاب پرسنل انتخاب شده بر اساس ماه
/// </summary>
/// <param name="employeeId">پرسنل مورد نظر</param>
/// <param name="workshopId">کارگاه مورد نظر</param>
/// <param name="startDateTime">شروع بازه جستجو، می تواند خالی باشد</param>
/// <param name="endDateTime">پایان بازه جستجو، می تواند خالی باشد</param>
/// <param name="exactDateTime">جستجو بر اساس مقطع زمانی، میتواند خالی باشد</param>
/// <param name="dateIndex">با اسکرول کاربر این مقدار افزایش پیدا می کند</param>
EmployeeRollCallsByMonthViewModel GetEmployeeRollCallsHistory(long employeeId, long workshopId,
string startDateTime, string endDateTime, string exactDateTime, string dateIndex);
/// <summary>
/// گزارش آنلاین حضور غیاب
/// </summary>
CurrentDayRollCall GetWorkshopCurrentDayRollCalls(long workshopId);
/// <summary>
/// گزارش آفلاین حضور غیاب کارگاه
/// </summary>
RollCallsByDateViewModel GetWorkshopRollCallHistory(RollCallSearchModel searchModel);
/// <summary>
/// دریافت لیست حضور غیاب کارمند در تاریخ مشخص
/// </summary>
List<RollCallViewModel> GetWorkshopEmployeeRollCallsForDate(long workshopId, long employeeId, string date);
/// <summary>
/// اضافه کردن یا ویرایش دستی حضور غیاب
/// </summary>
OperationResult ManualEdit(CreateOrEditEmployeeRollCall command);
OperationResult ManualEditForUndefined(CreateOrEditEmployeeRollCall command);
/// <summary>
/// این متد تمام حضور غیاب های کات شده توسط بک گراند سرویس را به صورت تعداد روزانه برمیگرداند
/// </summary>
/// <param name="workshopId"></param>
/// <returns> لیستی از تعداد و روز آن</returns>
List<RollCallsByDateViewModel> GetRollCallWorkFlowsCutByBgService(long workshopId, DateTime start, DateTime end);
IEnumerable<RollCallViewModel> GetNotSlicedRollCallsByWorkshopId(long workshopId, DateTime durationStart, DateTime durationEnd);
RollCallViewModel GetDetails(long rollCallId);
#endregion
List<RollCallsByDateViewModel> GetWorkshopAbsentHistory(long workshopId, DateTime startSearch,
DateTime endSearch);
OperationResult SetModifyTypeToNone(long rollCallId);
OperationResult SetModifyTypeToEditByEmployerForRollCallsInDate(long workshopId, long employeeId, string absenceDate);
List<RollCallViewModel> GetWorkshopEmployeeRollCallsWithUndefinedForDate(long workshopId, long employeeId, string date);
/// <summary>
/// محاسبه مجدد مقادیر حضور غیاب
/// </summary>
/// <param name="workshopId"></param>
/// <param name="command"></param>
/// <returns></returns>
OperationResult RecalculateValues(long workshopId, List<ReCalculateRollCallValues> command);
}
public class ReCalculateRollCallValues
{
public long EmployeeId { get; set; }
public string FromDate { get; set; }
}
}