using _0_Framework.Application; using CompanyManagment.App.Contracts.Error; using CompanyManagment.App.Contracts.Leave; using CompanyManagment.App.Contracts.RollCall; using CompanyManagment.App.Contracts.RollCallEmployee; using CompanyManagment.App.Contracts.Workshop; using CompanyManagment.App.Contracts.YearlySalary; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using System.Security.Claims; namespace ServiceHost.Areas.AdminNew.Pages.Company.RollCall { public class CaseHistoryModel : PageModel { private readonly IAuthHelper _authHelper; private readonly IPasswordHasher _passwordHasher; private readonly IWorkshopApplication _workshopApplication; private readonly IRollCallEmployeeApplication _rollCallEmployeeApplication; private readonly IRollCallApplication _rollCallApplication; private readonly IYearlySalaryApplication _yearlySalaryApplication; private readonly ILeaveApplication _leaveApplication; public long WorkshopId; public RollCallsByDateViewModel RollCallViewModels { get; set; } public EmployeeRollCallsByMonthViewModel RollCallEmployeeViewModels { get; set; } public string WorkshopFullName { get; set; } public List RollCallEmployeeList; public RollCallSearchModel SearchModel { get; set; } = new(); public List YearlyList { get; set; } public CaseHistoryModel(IAuthHelper authHelper, IPasswordHasher passwordHasher, IRollCallEmployeeApplication rollCallEmployeeApplication, IWorkshopApplication workshopApplication, IRollCallApplication rollCallApplication, IYearlySalaryApplication yearlySalaryApplication, ILeaveApplication leaveApplication) { _authHelper = authHelper; _passwordHasher = passwordHasher; _rollCallEmployeeApplication = rollCallEmployeeApplication; _workshopApplication = workshopApplication; _rollCallApplication = rollCallApplication; _yearlySalaryApplication = yearlySalaryApplication; _leaveApplication = leaveApplication; } public IActionResult OnGet(long workshopId) { WorkshopId = workshopId; if (_rollCallEmployeeApplication.GetByWorkshopId(workshopId).Any()) { RollCallEmployeeList = _rollCallEmployeeApplication.GetEmployeeRollCalls(workshopId); WorkshopFullName = _workshopApplication.GetDetails(workshopId).WorkshopFullName; var searchModel = new RollCallSearchModel() { WorkshopId = workshopId }; RollCallViewModels = _rollCallApplication.GetWorkshopRollCallHistory(searchModel); YearlyList = _yearlySalaryApplication.GetYears(); return Page(); } else { return Redirect("/AdminNew/Company/RollCall"); } } public IActionResult OnGetCaseHistoryRollCallAjax(int dateIndex, string exactDateFa, string startDate, string endDate, long employeeId, string dateEmployeeIndex, long workshopId) { if (employeeId > 0) { RollCallEmployeeViewModels = _rollCallApplication.GetEmployeeRollCallsHistory(employeeId, workshopId, startDate, endDate, exactDateFa, dateEmployeeIndex); if (RollCallEmployeeViewModels == null) return new JsonResult(new { IsSuccedded = false, message = "داده ای یافت نشد!", }); } else { var searchModel = new RollCallSearchModel() { WorkshopId = workshopId, DateIndex = dateIndex, ExactDateFa = exactDateFa, StarDateFa = startDate, EndDateFa = endDate, EmployeeId = employeeId }; RollCallViewModels = _rollCallApplication.GetWorkshopRollCallHistory(searchModel); } return new JsonResult(new { IsSuccedded = true, data = RollCallViewModels, dataEmployee = RollCallEmployeeViewModels, }); } public IActionResult OnGetEmployeeList(long workshopId) { var resultData = _rollCallEmployeeApplication.GetRollCallEmployeesByWorkshopId(workshopId); return new JsonResult(new { success = true, data = resultData }); } public IActionResult OnGetCreate(long workshopId) { var command = new CreateOrEditEmployeeRollCall(); command.WorkshopId = workshopId; return Partial("ModalAddRollCall", command); } public IActionResult OnGetCheckEmployeeData(long employeeId, string date, long workshopId) { bool isSuccess = false; List resultData = new List(); if (!string.IsNullOrWhiteSpace(date)) { resultData = _rollCallApplication.GetWorkshopEmployeeRollCallsForDate(workshopId, employeeId, date); isSuccess = resultData.Any(); } var result = _leaveApplication.HasLeave(workshopId, employeeId, date); var isLeave = result.IsSuccedded ? result.Data : false; var isNullEndDate = resultData.Any(x => x.EndDate == null); return new JsonResult(new { success = isSuccess, data = resultData, hasLeave = isLeave, hasNullEndDate = isNullEndDate }); } public IActionResult OnGetEdit(long employeeId, string date, long workshopId) { if (workshopId < 1) { var resultError = new ErrorViewModel() { Message = "کارگاه شما یافت نشده است." }; return Partial("../Error/_ErrorModal", resultError); } var result = _rollCallApplication.GetWorkshopEmployeeRollCallsForDate(workshopId, employeeId, date); var name = _rollCallEmployeeApplication.GetByEmployeeIdAndWorkshopId(employeeId, workshopId); var command = new EmployeeRollCallsViewModel() { EmployeeFullName = name.EmployeeFullName, EmployeeId = employeeId, DateFa = date, RollCalls = result }; return Partial("ModalEditRollCall", command); } public IActionResult OnPostManualCreateOrEdit(CreateOrEditEmployeeRollCall command, long workshopId) { command.WorkshopId = workshopId; var result = _rollCallApplication.ManualEdit(command); return new JsonResult(new { success = result.IsSuccedded, message = result.Message, }); } public IActionResult OnPostRemoveEmployeeRollCallsInDate(long employeeId, string date, long workshopId) { if (workshopId < 1) return new JsonResult(new { success = false, message = "هیچ کارگاهی یافت نشده است!", }); var result = _rollCallApplication.RemoveEmployeeRollCallsInDate(workshopId, employeeId, date); return new JsonResult(new { success = result.IsSuccedded, message = result.Message, }); } } }