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("GetHourlyLeaveDuration")] public async Task> GetHourlyLeaveDuration(string startHours, string endHours) { var result =await _leaveApplication.GetHourlyLeaveDuration(startHours, endHours); return Ok(new { LeaveDuration = result }); } /// /// محاسبه مدت مرخصی روزانه /// در مودال ایجاد /// /// /// /// [HttpGet("GetDailyLeaveDuration")] public async Task> GetDailyLeaveDuration(string startDate, string endDate) { var result = await _leaveApplication.GetDailyLeaveDuration(startDate, endDate); return Ok(new { LeaveDuration = result }); } /// /// پرینت تکی /// /// /// [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); } /// /// حذف مرخصی /// /// /// [HttpDelete("RemoveLeave/{id}")] public async Task> RemoveLeaveAsync(long id) { var op =await _leaveApplication.RemoveLeaveAsync(id); return Ok(new { isSuccedded = op.IsSuccedded, message = op.Message, }); } }