277 lines
10 KiB
C#
277 lines
10 KiB
C#
using _0_Framework.Application;
|
|
using CompanyManagment.App.Contracts.Leave;
|
|
using CompanyManagment.App.Contracts.RollCall;
|
|
using CompanyManagment.App.Contracts.RollCallService;
|
|
using CompanyManagment.App.Contracts.Workshop;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.Mvc.RazorPages;
|
|
using System.Security.Claims;
|
|
using WorkFlow.Application.Contracts.RollCallConfirmedAbsence;
|
|
using WorkFlow.Application.Contracts.RollCallConfirmedWithoutLunchBreak;
|
|
using WorkFlow.Application.Contracts.Shared;
|
|
using WorkFlow.Application.Contracts.WorkFlow;
|
|
|
|
namespace ServiceHost.Areas.Client.Pages.Company.WorkFlow
|
|
{
|
|
public class RollCallModel : PageModel
|
|
{
|
|
private readonly IPasswordHasher _passwordHasher;
|
|
private readonly IWorkshopApplication _workshopApplication;
|
|
private readonly ILeaveApplication _leaveApplication;
|
|
private readonly IWorkFlowApplication _workflowApplication;
|
|
private readonly IAuthHelper _authHelper;
|
|
private readonly IRollCallApplication _rollCallApplication;
|
|
private readonly IRollCallServiceApplication _rollCallServiceApplication;
|
|
private readonly IHttpContextAccessor _contextAccessor;
|
|
|
|
private readonly long _workshopId;
|
|
public string WorkshopFullName;
|
|
public int CountWorkFlowCut;
|
|
public int CountWorkFlowAbsent;
|
|
public int CountWorkFlowLunchBreak;
|
|
public int CountUndefinedRollCalls;
|
|
public int CountRollCallsOverlappingLeave;
|
|
public int Count;
|
|
|
|
public RollCallModel(IPasswordHasher passwordHasher, IWorkshopApplication workshopApplication, IAuthHelper authHelper, IWorkFlowApplication workflowApplication, IRollCallApplication rollCallApplication, IRollCallServiceApplication rollCallServiceApplication, IHttpContextAccessor contextAccessor, ILeaveApplication leaveApplication)
|
|
{
|
|
_passwordHasher = passwordHasher;
|
|
_workshopApplication = workshopApplication;
|
|
_authHelper = authHelper;
|
|
_workflowApplication = workflowApplication;
|
|
_rollCallApplication = rollCallApplication;
|
|
_rollCallServiceApplication = rollCallServiceApplication;
|
|
_contextAccessor = contextAccessor;
|
|
_leaveApplication = leaveApplication;
|
|
|
|
var workshopHash = _contextAccessor.HttpContext?.User.FindFirstValue("WorkshopSlug");
|
|
_workshopId = _passwordHasher.SlugDecrypt(workshopHash);
|
|
|
|
if (_workshopId < 1)
|
|
throw new InvalidDataException("اختلال در کارگاه");
|
|
}
|
|
|
|
public IActionResult OnGet()
|
|
{
|
|
var hasRollCallService = _rollCallServiceApplication.GetActiveServiceByWorkshopId(_workshopId) != null;
|
|
if (!hasRollCallService)
|
|
return Redirect("/Client/Company/WorkFlow");
|
|
|
|
|
|
var workshopInfo = _workshopApplication.GetWorkshopInfo(_workshopId);
|
|
WorkshopFullName = workshopInfo.WorkshopFullName;
|
|
|
|
CountWorkFlowCut = _workflowApplication.GetCountCutRollCallByBgService(_workshopId);
|
|
//CountWorkFlowAbsent = _workflowApplication.GetRollCallAbsentsWorkFlows(accountId, workshopId);
|
|
CountWorkFlowAbsent = _workflowApplication.GetAbsentRollCallWorkFlows(_workshopId).Count();
|
|
CountWorkFlowLunchBreak = _workflowApplication.GetEmployeesWithoutLunchBreak(_workshopId).Count();
|
|
CountUndefinedRollCalls = _workflowApplication.GetUndefinedRollCalls(_workshopId).Count();
|
|
CountRollCallsOverlappingLeave = _workflowApplication.GetRollCallsOverlappingLeaves(_workshopId).Count();
|
|
|
|
return Page();
|
|
}
|
|
|
|
public IActionResult OnGetCountWorkFlowOfAbsentAndCut()
|
|
{
|
|
var countWorkFlowCut = _workflowApplication.GetCountCutRollCallByBgService(_workshopId);
|
|
//CountWorkFlowAbsent = _workflowApplication.GetRollCallAbsentsWorkFlows(accountId, workshopId);
|
|
var countWorkFlowAbsent = _workflowApplication.GetAbsentRollCallWorkFlows(_workshopId).Count();
|
|
var countWorkFlowLunchBreak = _workflowApplication.GetEmployeesWithoutLunchBreak(_workshopId).Count();
|
|
var countUndefinedRollCalls = _workflowApplication.GetUndefinedRollCalls(_workshopId).Count();
|
|
var countRollCallsOverlappingLeave = _workflowApplication.GetRollCallsOverlappingLeaves(_workshopId).Count();
|
|
|
|
return new JsonResult(new
|
|
{
|
|
success = true,
|
|
dataCut = countWorkFlowCut,
|
|
dataAbsent = countWorkFlowAbsent,
|
|
dataLunchBreak = countWorkFlowLunchBreak,
|
|
dataUndefined = countUndefinedRollCalls,
|
|
dataOverlappingLeave = countRollCallsOverlappingLeave,
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetRollCallWorkFlowsCut()
|
|
{
|
|
|
|
var resultData = _workflowApplication.GetRollCallWorkFlowsCutByBgService(_workshopId);
|
|
foreach (var item in resultData)
|
|
{
|
|
item.RollCallWorkFlowPerDayCount = item.RollCallWorkFlowPerDayViewModels.Count;
|
|
item.RollCallWorkFlowPerDayViewModels = new List<RollCallWorkFlowViewModel>();
|
|
}
|
|
return new JsonResult(new
|
|
{
|
|
success = true,
|
|
data = resultData
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetEmployeeListByWorkFlowsCut(DateTime date)
|
|
{
|
|
var resultData = _workflowApplication.GetRollCallWorkFlowsCutByBgServiceByDate(_workshopId, date);
|
|
|
|
return new JsonResult(new
|
|
{
|
|
success = true,
|
|
data = resultData
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetRollCallWorkFlowsAbsents()
|
|
{
|
|
var resultData = _workflowApplication.GetAbsentRollCallWorkFlows(_workshopId);
|
|
foreach (var item in resultData)
|
|
{
|
|
item.RollCallWorkFlowPerDayCount = item.RollCallWorkFlowPerDayViewModels.Count;
|
|
item.RollCallWorkFlowPerDayViewModels = new List<RollCallWorkFlowViewModel>();
|
|
}
|
|
return new JsonResult(new
|
|
{
|
|
success = true,
|
|
data = resultData
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetEmployeeListByWorkFlowsAbsents(DateTime date)
|
|
{
|
|
var resultData = _workflowApplication.GetAbsentRollCallWorkFlowsByDate(_workshopId, date);
|
|
|
|
return new JsonResult(new
|
|
{
|
|
success = true,
|
|
data = resultData
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetRollCallWorkFlowEmployeesWithoutLunchBreak()
|
|
{
|
|
var resultData = _workflowApplication.GetEmployeesWithoutLunchBreak(_workshopId);
|
|
foreach (var item in resultData)
|
|
{
|
|
item.Count = item.RollCallConfirmedWithoutLunchList.Count;
|
|
item.RollCallConfirmedWithoutLunchList = new List<RollCallConfirmedWithoutLunchBreakViewModel>();
|
|
}
|
|
return new JsonResult(new
|
|
{
|
|
success = true,
|
|
data = resultData
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetEmployeeListByWorkFlowsEmployeesWithoutLunchBreak(DateTime date)
|
|
{
|
|
var resultData = _workflowApplication.GetEmployeesWithoutLunchBreakByDate(_workshopId, date);
|
|
|
|
return new JsonResult(new
|
|
{
|
|
success = true,
|
|
data = resultData
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetUndefinedRollCalls()
|
|
{
|
|
var resultData = _workflowApplication.GetUndefinedRollCalls(_workshopId);
|
|
foreach (var item in resultData)
|
|
{
|
|
item.RollCallWorkFlowPerDayCount = item.RollCallWorkFlowPerDayViewModels.Count;
|
|
item.RollCallWorkFlowPerDayViewModels = new List<RollCallWorkFlowViewModel>();
|
|
}
|
|
return new JsonResult(new
|
|
{
|
|
success = true,
|
|
data = resultData
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetEmployeeListByUndefinedRollCalls(DateTime date)
|
|
{
|
|
var resultData = _workflowApplication.GetUndefinedRollCallsByDate(_workshopId, date);
|
|
|
|
return new JsonResult(new
|
|
{
|
|
success = true,
|
|
data = resultData
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetOverlappingLeaves()
|
|
{
|
|
var resultData = _workflowApplication.GetRollCallsOverlappingLeaves(_workshopId);
|
|
foreach (var item in resultData)
|
|
{
|
|
item.EmployeesListCount = item.EmployeesList.Count;
|
|
item.EmployeesList = new List<WorkFlowEmployeeWithRollCallOnLeaveViewModel>();
|
|
}
|
|
return new JsonResult(new
|
|
{
|
|
success = true,
|
|
data = resultData
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetEmployeeListByOverlappingLeaveByDate(DateTime date)
|
|
{
|
|
var resultData = _workflowApplication.GetRollCallsOverlappingLeaveByDate(_workshopId, date);
|
|
|
|
return new JsonResult(new
|
|
{
|
|
success = true,
|
|
data = resultData
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetLeaveCreate(CreateLeave command)
|
|
{
|
|
return Partial("LeaveCreate", command);
|
|
}
|
|
|
|
public IActionResult OnPostConfirmedAbsence(long employeeId, string absenceDate)
|
|
{
|
|
long accountId = _authHelper.CurrentAccountId();
|
|
|
|
var command = new CreateRollCallConfirmedAbsence
|
|
{
|
|
WorkshopId = _workshopId,
|
|
ConfirmedByAccountId = accountId,
|
|
EmployeeId = employeeId,
|
|
AbsenceDate = absenceDate
|
|
};
|
|
|
|
var result = _workflowApplication.CreateRollCallConfirmedAbsence(command);
|
|
return new JsonResult(new
|
|
{
|
|
success = result.IsSuccedded,
|
|
message = result.Message
|
|
});
|
|
}
|
|
|
|
public IActionResult OnPostConfirmCutByBgService(long rollCallId)
|
|
{
|
|
var result = _rollCallApplication.SetModifyTypeToEditByEmployer(rollCallId);
|
|
|
|
return new JsonResult(new
|
|
{
|
|
success = result.IsSuccedded,
|
|
message = result.Message
|
|
});
|
|
}
|
|
|
|
public IActionResult OnPostConfirmedWithoutLunchBreak(long rollCallId)
|
|
{
|
|
var command = new CreateRollCallConfirmedWithoutLunchBreak()
|
|
{
|
|
RollCallId = rollCallId
|
|
};
|
|
var result = _workflowApplication.CreateRollCallConfirmedWithoutLunchBreak(command);
|
|
|
|
return new JsonResult(new
|
|
{
|
|
success = result.IsSuccedded,
|
|
message = result.Message
|
|
});
|
|
}
|
|
}
|
|
}
|