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); } }