using _0_Framework.Application; using CompanyManagement.Infrastructure.Excel.RollCall; using CompanyManagment.App.Contracts.RollCall; using Microsoft.AspNetCore.Mvc; using ServiceHost.BaseControllers; namespace ServiceHost.Areas.Client.Controllers.RollCall; public class RollCallCaseHistoryController : ClientBaseController { private readonly IRollCallApplication _rollCallApplication; private readonly long _workshopId; public RollCallCaseHistoryController(IRollCallApplication rollCallApplication, IAuthHelper authHelper) { _rollCallApplication = rollCallApplication; _workshopId = authHelper.GetWorkshopId(); } [HttpGet] public async Task>> GetTitles( RollCallCaseHistorySearchModel searchModel) { return await _rollCallApplication.GetCaseHistoryTitles(_workshopId, searchModel); } [HttpGet("details")] public async Task>> GetDetails(string titleId, RollCallCaseHistorySearchModel searchModel) { return await _rollCallApplication.GetCaseHistoryDetails(_workshopId, titleId, searchModel); } /// /// ایجاد و ویرایش /// /// /// [HttpPost] public ActionResult Upsert(CreateOrEditEmployeeRollCall command) { command.WorkshopId = _workshopId; return _rollCallApplication.ManualEdit(command); } [HttpGet("print")] public async Task>> GetPrintDetails(string titleId, RollCallCaseHistorySearchModel searchModel) { return await _rollCallApplication.GetCaseHistoryDetails(_workshopId, titleId, searchModel); } [HttpGet("total-working")] public ActionResult> OnGetTotalWorking( string startDate, string startTime, string endDate, string endTime) { var op = new OperationResult(); const string emptyValue = "-"; if (!TryParseDateTime(startDate, startTime, out var start) || !TryParseDateTime(endDate, endTime, out var end)) { return op.Succcedded(emptyValue); } if (start >= end) { return op.Succcedded(emptyValue); } var duration = (end - start).ToFarsiHoursAndMinutes(emptyValue); return op.Succcedded(duration); } private static bool TryParseDateTime(string date, string time, out DateTime result) { result = default; try { var dateTime = date.ToGeorgianDateTime(); var timeOnly = TimeOnly.Parse(time); result = dateTime.AddTicks(timeOnly.Ticks); return true; } catch { return false; } } // [HttpGet("excel")] // public async Task GetDownload(string titleId,RollCallCaseHistorySearchModel searchModel) // { // var data = await _rollCallApplication.GetCaseHistoryDetails(_workshopId, titleId, searchModel); // byte[] excelBytes = RollCallExcelGenerator.CaseHistoryExcelForOneDay(data); // return File(excelBytes, // "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", // $"{workshopFullName} - {caseHistoryRollCallExcelForOneDay.DayOfWeekFa}،{caseHistoryRollCallExcelForOneDay.DateFa}.xlsx"); // // } // [HttpGet("edit")] // public ActionResult<> GetEditDetails(string date,long employeeId) // { // var result = _rollCallApplication.GetWorkshopEmployeeRollCallsForDate(_workshopId, employeeId, date); // //var dates = _rollCallApplication.GetEditableDatesForManualEdit(date.ToGeorgianDateTime()); // var name = _rollCallEmployeeApplication.GetByEmployeeIdAndWorkshopId(employeeId, _workshopId); // // var total = new TimeSpan(result.Sum(x => // (x.EndDate!.Value.Ticks - x.StartDate!.Value.Ticks))); // // var command = new EmployeeRollCallsViewModel() // { // EmployeeFullName = name.EmployeeFullName, // EmployeeId = employeeId, // DateFa = date, // //EditableDates = dates, // RollCalls = result, // TotalRollCallsDuration = total.ToFarsiHoursAndMinutes("-") // }; // } }