using _0_Framework.Application;
using Company.Domain.EmployeeAgg;
using CompanyManagment.App.Contracts.InstitutionPlan;
using CompanyManagment.App.Contracts.InsuranceList;
using CompanyManagment.App.Contracts.Leave;
using Microsoft.AspNetCore.Mvc;
using ServiceHost.BaseControllers;
using System.Security.Cryptography;
namespace ServiceHost.Areas.Client.Controllers;
public class LeaveController : ClientBaseController
{
private readonly ILeaveApplication _leaveApplication;
private long _workshopId;
public LeaveController(ILeaveApplication leaveApplication, IAuthHelper authHelper)
{
_leaveApplication = leaveApplication;
_workshopId = authHelper.GetWorkshopId();
}
///
/// دریافت لیست مرخصی ها
///
///
///
[HttpGet("GetLeaveList")]
public async Task> GetLeaveList(LeaveListSearchModel searchModel)
{
var result = new LeaveListMultipleDto();
searchModel.WorkshopId = _workshopId;
if (searchModel.EmployeeId > 0)
{
//لیست گروه بندی شده
result.GroupLeaveListDto = await _leaveApplication.GetGroupList(searchModel);
if (!string.IsNullOrWhiteSpace(searchModel.YearStr) && !string.IsNullOrWhiteSpace(searchModel.MonthStr))
{
TimeSpan timeSpan = _leaveApplication.SumOfEmployeeLeaveTimeSpanInDates(_workshopId, searchModel.EmployeeId, searchModel.YearStr, searchModel.MonthStr, searchModel.LeaveType);
//مجموع مرخصی پرسنل
result.SumOfEmployeeleaves = timeSpan.ToFarsiDaysAndHoursAndMinutes();
}
return Ok(result);
}
//لیست نرمال PageResult
result.leaveListDto = await _leaveApplication.GetList(searchModel);
return Ok(result);
}
///
/// چک کردن تاریخ شروع مرخصی
///
///
///
[HttpGet("CheckIsInvalidLeave")]
public async Task> CheckIsInvalidLeave(string startLeaveDate)
{
return await _leaveApplication.CheckIsInvalidLeave(startLeaveDate, _workshopId);
}
///
/// ایجاد مرخصی
///
///
///
[HttpPost("CreateLeave")]
public async Task> CreateLeave([FromBody] CreateLeaveDto command)
{
command.WorkshopId = _workshopId;
var result = await _leaveApplication.CreateLeave(command);
return result;
}
///
/// دریافت شیفت گردشی اگر داشت
///
///
///
[HttpGet("GetRotatingShift")]
public async Task> GetRotatingShift(long employeeId, string startLeaveDate)
{
return await _leaveApplication.HasRotatingShift(_workshopId, employeeId, startLeaveDate);
}
///
/// پرینت تکی
///
///
///
[HttpGet("print/{id}")]
public async Task> PrintOneAsync(long id)
{
var leavePrint = await _leaveApplication.PrintOneAsync(id, _workshopId);
return leavePrint;
}
///
/// پرینت گروهی
///
///
///
[HttpGet("print")]
public async Task>> PrintAllAsync([FromQuery] List ids, LeaveListSearchModel searchModel)
{
var leavePrints = await _leaveApplication.PrintAllAsync(ids, _workshopId);
return Ok(leavePrints);
}
///
/// پرینت لیستی
///
///
///
[HttpGet("ListPrint")]
public async Task> ListPrint([FromQuery] List ids)
{
var leavePrints = await _leaveApplication.ListPrint(ids);
return Ok(leavePrints);
}
}