Files
Backend-Api/ServiceHost/Areas/Client/Pages/Company/RollCall/Grouping.cshtml.cs

296 lines
12 KiB
C#

using _0_Framework.Application;
using CompanyManagment.App.Contracts.Workshop;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using System.Security.Claims;
using Company.Domain.CustomizeWorkshopGroupSettingsAgg;
using CompanyManagment.App.Contracts.CustomizeWorkshopSettings;
using CompanyManagment.App.Contracts.Employee;
using System.Text.RegularExpressions;
using Microsoft.AspNetCore.Mvc.Formatters;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
using _0_Framework.Infrastructure;
using CompanyManagment.App.Contracts.RollCallEmployee;
using Company.Domain.EmployeeAgg;
namespace ServiceHost.Areas.Client.Pages.Company.RollCall
{
[Authorize]
[NeedsPermission(SubAccountPermissionHelper.GroupingOperationsPermissionCode)]
public class GroupingModel : PageModel
{
private readonly IPasswordHasher _passwordHasher;
private readonly IWorkshopApplication _workshopApplication;
private readonly IEmployeeApplication _employeeApplication;
private readonly IRollCallEmployeeApplication _rollCallEmployeeApplication;
private readonly ICustomizeWorkshopSettingsApplication _customizeWorkshopSettingsApplication;
private readonly IHttpContextAccessor _contextAccessor;
private readonly IAuthHelper _authHelper;
public bool GroupedAllEmployees;
private readonly long _workshopId;
public string WorkshopFullName;
public CustomizeWorkshopSettingsViewModel RollCallWorkshopSettings;
public List<RollCallEmployeeViewModel> RollCallEmployeeList;
public GroupingModel(IPasswordHasher passwordHasher, IWorkshopApplication workshopApplication, ICustomizeWorkshopSettingsApplication rollCallWorkshopSettingsApplication, IEmployeeApplication employeeApplication, IHttpContextAccessor contextAccessor, IAuthHelper authHelper, IRollCallEmployeeApplication rollCallEmployeeApplication)
{
_passwordHasher = passwordHasher;
_workshopApplication = workshopApplication;
_customizeWorkshopSettingsApplication = rollCallWorkshopSettingsApplication;
_employeeApplication = employeeApplication;
_contextAccessor = contextAccessor;
_authHelper = authHelper;
_rollCallEmployeeApplication = rollCallEmployeeApplication;
var workshopHash = _contextAccessor.HttpContext?.User.FindFirstValue("WorkshopSlug");
_workshopId = _passwordHasher.SlugDecrypt(workshopHash);
if (_workshopId < 1)
throw new InvalidDataException("اختلال در کارگاه");
}
public bool IrregularWorkshopHaveGroupedAllPersonnelValidation(long workshopId)
{
//var isWorkshopIrregular = _customizeWorkshopSettingsApplication
// .GetWorkshopSettingsDetails(workshopId).WorkshopShiftStatus == WorkshopShiftStatus.Irregular;
//if (isWorkshopIrregular == false)
// return true;
var employeesWithoutGroup = _customizeWorkshopSettingsApplication.HasAnyEmployeeWithoutGroup(workshopId);
if (employeesWithoutGroup)
return false;
return true;
}
public IActionResult OnGet()
{
//if (_workshopId != 11)
// return Redirect("/Client/Company/RollCall");
RollCallEmployeeList = _rollCallEmployeeApplication.GetEmployeeRollCalls(_workshopId);
var account = _authHelper.CurrentAccountInfo();
GroupedAllEmployees = IrregularWorkshopHaveGroupedAllPersonnelValidation(_workshopId);
var workshop = _workshopApplication.GetWorkshopInfo(_workshopId);
WorkshopFullName = workshop.WorkshopFullName;
RollCallWorkshopSettings = _customizeWorkshopSettingsApplication.GetWorkshopSettingsByWorkshopId(_workshopId, account);
if (RollCallWorkshopSettings.Id == 0)
{
return Redirect("/Client/Company/RollCall");
}
return Page();
}
public IActionResult OnGetWorkshopSettingsDataAjax()
{
var account = _authHelper.CurrentAccountInfo();
var result = _customizeWorkshopSettingsApplication.GetWorkshopSettingsByWorkshopId(_workshopId, account);
return new JsonResult(new
{
isSuccedded = true,
data = result
});
}
public IActionResult OnGetEmployeesGroupAjax(long groupId)
{
var result = _customizeWorkshopSettingsApplication.GetEmployeeSettingsByGroupSettingsId(groupId);
return new JsonResult(new
{
success = true,
data = result
});
}
public IActionResult OnGetEmployeesGroupSettingsByEmployeeId(long employeeId)
{
var result = _customizeWorkshopSettingsApplication.GetEmployeesGroupSettingsByEmployeeId(employeeId, _workshopId);
return new JsonResult(new
{
success = true,
data = result
});
}
public IActionResult OnGetCreateGroup(long workshopSettingId)
{
var command = new CreateCustomizeWorkshopGroupSettings
{
CustomizeWorkshopSettingId = workshopSettingId
};
return Partial("ModalCreateGroup", command);
}
public IActionResult OnPostCreateGroup(CreateCustomizeWorkshopGroupSettings command)
{
command.Salary = "0";
OperationResult result = _customizeWorkshopSettingsApplication.CreateGroupSettingsByRollCallWorkshopSettingId(command);
return new JsonResult(new
{
success = result.IsSuccedded,
message = result.Message
});
}
public IActionResult OnGetEditGroup(long groupId)
{
var command = _customizeWorkshopSettingsApplication.GetCustomizeWorkshopGroupSettingsDetails(groupId);
command.IsShiftChanged = _customizeWorkshopSettingsApplication
.GetEmployeeSettingsByGroupSettingsId(groupId)
.Any(x => x.IsSettingChanged == true);
return Partial("ModalEditGroup", command);
}
public IActionResult OnPostEditGroup(EditCustomizeWorkshopGroupSettings command)
{
var result = _customizeWorkshopSettingsApplication.EditSimpleRollCallGroupSetting(command);
return new JsonResult(new
{
success = result.IsSuccedded,
message = result.Message
});
}
public IActionResult OnGetEmployeeIsChangeList(long groupId)
{
var result = _customizeWorkshopSettingsApplication.GetEmployeeSettingsByGroupSettingsId(groupId)
.Where(x => x.IsSettingChanged).ToList();
return new JsonResult(new
{
success = true,
data = result
});
}
public IActionResult OnPostDeleteGroup(long groupId)
{
var result = _customizeWorkshopSettingsApplication.RemoveGroupSettings(groupId);
return new JsonResult(new
{
success = result.IsSuccedded,
message = result.Message
});
}
public IActionResult OnGetEmployeeGroupAjax(long rollCallWorkshopSettingId)
{
var result = _customizeWorkshopSettingsApplication.GetEmployeesWithoutGroup(rollCallWorkshopSettingId);
return new JsonResult(new
{
success = true,
data = result
});
}
public IActionResult OnGetCreateEmployee(long workshopSettingId, long groupId)
{
var command = new CreateCustomizeEmployeeSettings()
{
WorkshopSettingId = workshopSettingId,
GroupId = groupId
};
return Partial("ModalAddEmployeeToGroup", command);
}
public IActionResult OnPostCreateEmployee(CreateCustomizeEmployeeSettings command)
{
command.WorkshopId = _workshopId;
OperationResult result = _customizeWorkshopSettingsApplication.CreateEmployeeSettings(command);
return new JsonResult(new
{
success = result.IsSuccedded,
message = result.Message
});
}
public IActionResult OnPostRemoveEmployee(long employeeId, long groupId)
{
OperationResult result = _customizeWorkshopSettingsApplication.RemoveEmployeeFromRollCallWorkshopGroup(employeeId, groupId, _workshopId);
return new JsonResult(new
{
success = result.IsSuccedded,
message = result.Message
});
}
public IActionResult OnGetEditEmployee(long groupId, List<long> employeeId)
{
var employee = _customizeWorkshopSettingsApplication.GetByEmployeeIdAndWorkshopIdIncludeGroupSettings(_workshopId, employeeId.First());
var command = new EditCustomizeEmployeeSettings()
{
Id = employee.Id,
EmployeeIds = employeeId,
EmployeeFullName = employee.EmployeeFullName,
Salary = employee.Salary.ToMoney(),
NameGroup = employee.Name,
ShiftViewModel = employee.RollCallWorkshopShifts,
BreakTime = employee.BreakTime,
WorkshopShiftStatus = employee.WorkshopShiftStatus,
IrregularShift = employee.IrregularShift,
FridayWork = employee.FridayWork,
HolidayWork = employee.HolidayWork,
CustomizeRotatingShifts = employee.CustomizeRotatingShiftsViewModels
};
return Partial("ModalEditEmployeeFromGroup", command);
}
public IActionResult OnPostChangeEditEmployee(EditCustomizeEmployeeSettings command)
{
command.WorkshopId = _workshopId;
OperationResult result = _customizeWorkshopSettingsApplication.EditSimpleRollCallEmployeeSetting(command);
return new JsonResult(new
{
success = result.IsSuccedded,
message = result.Message
});
}
// public IActionResult OnGetGroupingSetting(long groupId)
// {
// var command = _customizeWorkshopSettingsApplication.GetCustomizeWorkshopGroupSettingsDetails(groupId);
// return Partial("ModalSettingGroup", command);
//}
// public IActionResult OnPostGroupingSetting(EditCustomizeWorkshopGroupSettings command)
// {
// command.EmployeeIds = _customizeWorkshopSettingsApplication.GetEmployeeSettingsByGroupSettingsId(command.Id).Select(x => x.EmployeeId).ToList();
// OperationResult result = _customizeWorkshopSettingsApplication.EditRollCallGroupSetting(command);
// return new JsonResult(new
// {
// isSuccess = result.IsSuccedded,
// message = result.Message
// });
//}
//public IActionResult OnGetGroupingEmployeeSetting(long customizeEmployeeId, List<long> employeeId)
// {
// var command = _customizeWorkshopSettingsApplication.GetCustomizeEmployeeSettingsDetails(customizeEmployeeId);
// command.EmployeeIds = employeeId;
// return Partial("ModalSettingGroupEmployee", command);
// }
// public IActionResult OnPostGroupingEmployeeSetting(EditCustomizeEmployeeSettings command)
// {
// command.WorkshopId = _workshopId;
// OperationResult result = _customizeWorkshopSettingsApplication.EditRollCallEmployeeSettings(command);
// return new JsonResult(new
// {
// isSuccess = result.IsSuccedded,
// message = result.Message
// });
//}
}
}