720 lines
27 KiB
C#
720 lines
27 KiB
C#
using _0_Framework.Application;
|
|
using CompanyManagment.App.Contracts.AndroidApkVersion;
|
|
using CompanyManagment.App.Contracts.ClientDashboard;
|
|
using CompanyManagment.App.Contracts.Employee;
|
|
using CompanyManagment.App.Contracts.HolidayItem;
|
|
using CompanyManagment.App.Contracts.InsuranceList;
|
|
using CompanyManagment.App.Contracts.Leave;
|
|
using CompanyManagment.App.Contracts.PaymentToEmployee;
|
|
using CompanyManagment.App.Contracts.RollCallService;
|
|
using CompanyManagment.App.Contracts.Workshop;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.Mvc.RazorPages;
|
|
using PersianTools.Core;
|
|
using System.Security.Claims;
|
|
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
|
using _0_Framework.Infrastructure;
|
|
using AccountManagement.Application.Contracts.CameraAccount;
|
|
using CompanyManagment.App.Contracts.Bank;
|
|
using CompanyManagment.App.Contracts.CustomizeWorkshopSettings;
|
|
using CompanyManagment.App.Contracts.Job;
|
|
using CompanyManagment.App.Contracts.PersonnleCode;
|
|
using CompanyManagment.App.Contracts.LeftWorkTemp;
|
|
using CompanyManagment.App.Contracts.RollCallEmployeeStatus;
|
|
|
|
namespace ServiceHost.Areas.Client.Pages
|
|
{
|
|
[Authorize]
|
|
public class IndexModel : PageModel
|
|
{
|
|
private readonly IWorkshopApplication _workshopApplication;
|
|
private readonly ILeaveApplication _leaveApplication;
|
|
private readonly IEmployeeApplication _employeeApplication;
|
|
private readonly IPaymentToEmployeeApplication _paymentToEmployeeApplication;
|
|
private readonly IPaymentToEmployeeItemApplication _paymentToEmployeeItemApplication;
|
|
private readonly IHolidayItemApplication _holidayItemApplication;
|
|
private readonly IPasswordHasher _passwordHasher;
|
|
private readonly IAuthHelper _authHelper;
|
|
private readonly IInsuranceListApplication _insuranceListApplication;
|
|
private readonly IAndroidApkVersionApplication _androidApkVersionApplication;
|
|
private readonly IRollCallServiceApplication _rollCallServiceApplication;
|
|
private readonly IPersonnelCodeApplication _personnelCodeApplication;
|
|
private readonly ICustomizeWorkshopSettingsApplication _customizeWorkshopSettingsApplication;
|
|
private readonly IBankApplication _bankApplication;
|
|
private readonly ILeftWorkTempApplication _leftWorkTempApplication;
|
|
private readonly IJobApplication _jobApplication;
|
|
private readonly ICustomizeWorkshopSettingsApplication _customizeWorkshopEmployee;
|
|
private readonly IRollCallEmployeeStatusApplication _rollCallEmployeeStatusApplication;
|
|
private readonly ICameraAccountApplication _cameraAccountApplication;
|
|
|
|
public string profilePicture { get; set; }
|
|
public string AccountFullName { get; set; }
|
|
public List<CalenderViewModel> CalenderViewModels;
|
|
public string Today { get; set; }
|
|
public string TodayDate { get; set; }
|
|
public List<WorkshopViewModel> Workshops;
|
|
public string SelectedWorkshop;
|
|
public ConnectedPersonnelViewModel Employees;
|
|
public List<LeaveMainViewModel> LeaveSearch;
|
|
public string workshopId { get; set; }
|
|
public int PageIndex;
|
|
public string HasCustomizeCheckoutService;
|
|
|
|
|
|
#region Mahan
|
|
public bool HasInsuranceToConfirm { get; set; }
|
|
public bool HasApkToDownload { get; set; }
|
|
|
|
#endregion
|
|
public IndexModel(IAuthHelper authHelper, IPasswordHasher passwordHasher, IWorkshopApplication workshopApplication, ILeaveApplication leaveApplication, IEmployeeApplication employeeApplication, IPaymentToEmployeeItemApplication paymentToEmployeeItemApplication, IPaymentToEmployeeApplication paymentToEmployeeApplication, IHolidayItemApplication holidayItemApplication, IInsuranceListApplication insuranceListApplication, IAndroidApkVersionApplication androidApkVersionApplication, IRollCallServiceApplication rollCallServiceApplication, IPersonnelCodeApplication personnelCodeApplication, ICustomizeWorkshopSettingsApplication customizeWorkshopSettingsApplication, IBankApplication bankApplication, ILeftWorkTempApplication leftWorkTempApplication, IJobApplication jobApplication, ICustomizeWorkshopSettingsApplication customizeWorkshopEmployee, IRollCallEmployeeStatusApplication rollCallEmployeeStatusApplication, ICameraAccountApplication cameraAccountApplication)
|
|
{
|
|
_workshopApplication = workshopApplication;
|
|
_employeeApplication = employeeApplication;
|
|
_paymentToEmployeeItemApplication = paymentToEmployeeItemApplication;
|
|
_paymentToEmployeeApplication = paymentToEmployeeApplication;
|
|
_holidayItemApplication = holidayItemApplication;
|
|
_insuranceListApplication = insuranceListApplication;
|
|
_androidApkVersionApplication = androidApkVersionApplication;
|
|
_rollCallServiceApplication = rollCallServiceApplication;
|
|
_personnelCodeApplication = personnelCodeApplication;
|
|
_customizeWorkshopSettingsApplication = customizeWorkshopSettingsApplication;
|
|
_bankApplication = bankApplication;
|
|
_leftWorkTempApplication = leftWorkTempApplication;
|
|
_jobApplication = jobApplication;
|
|
_customizeWorkshopEmployee = customizeWorkshopEmployee;
|
|
_rollCallEmployeeStatusApplication = rollCallEmployeeStatusApplication;
|
|
_cameraAccountApplication = cameraAccountApplication;
|
|
_leaveApplication = leaveApplication;
|
|
_authHelper = authHelper;
|
|
_passwordHasher = passwordHasher;
|
|
}
|
|
|
|
public int AllPercent = 80;
|
|
public string RollCallServiceDeadline;
|
|
public bool CheckRollCallService;
|
|
|
|
public void OnGet()
|
|
{
|
|
var account = _authHelper.CurrentAccountInfo();
|
|
profilePicture = account.ProfilePhoto;
|
|
AccountFullName = account.Fullname;
|
|
var todayGr = DateTime.Now;
|
|
HasApkToDownload = _androidApkVersionApplication.HasAndroidApkToDownload();
|
|
|
|
|
|
#region Mahan
|
|
var workshopSlug = User.FindFirst("WorkshopSlug")?.Value;
|
|
long workshopIDecrypt = _passwordHasher.SlugDecrypt(workshopSlug);
|
|
//if (workshopIDecrypt > 0)
|
|
//{
|
|
// HasInsuranceToConfirm = _insuranceListApplication.HasInsuranceToConfirm(account.Id, workshopIDecrypt);
|
|
//}
|
|
#endregion
|
|
HasCustomizeCheckoutService = _rollCallServiceApplication.GetActiveServiceByWorkshopId(workshopIDecrypt)?.HasCustomizeCheckoutService;
|
|
|
|
#region TodayDate
|
|
|
|
var todayFa = todayGr.ToFarsi();
|
|
var syear = Convert.ToInt32(todayFa.Substring(0, 4));
|
|
var smonth = Convert.ToInt32(todayFa.Substring(5, 2));
|
|
var sday = Convert.ToInt32(todayFa.Substring(8, 2));
|
|
var todayPersian = new PersianDateTime(syear, smonth, sday);
|
|
var threeDaysBeforeGr = new PersianDateTime(syear, smonth, sday);
|
|
var threeDaysAfterGr = new PersianDateTime(syear, smonth, sday);
|
|
|
|
var dayOfWeek = todayPersian.DayOfWeek;
|
|
var month = todayPersian.MonthOfYear;
|
|
var day = todayFa.Substring(8, 2);
|
|
var year = todayFa.Substring(0, 4);
|
|
TodayDate = $"{dayOfWeek} - {day} {month} {year}";
|
|
#endregion
|
|
|
|
#region Calender
|
|
|
|
var todayFor = todayPersian;
|
|
|
|
threeDaysBeforeGr = threeDaysBeforeGr.AddDays(-3);
|
|
|
|
threeDaysAfterGr = threeDaysAfterGr.AddDays(3);
|
|
|
|
|
|
var d1 = threeDaysBeforeGr;
|
|
var d2 = threeDaysAfterGr;
|
|
|
|
var calenderList = new List<CalenderViewModel>();
|
|
for (var da = d1; da <= d2; da = da.AddDays(1))
|
|
{
|
|
var currentDay = $"{da}".Substring(8, 2);
|
|
var dayOfWeekCurrent = "";
|
|
|
|
switch ($"{da.DayOfWeek}")
|
|
{
|
|
case "شنبه":
|
|
dayOfWeekCurrent = "شنبه";
|
|
break;
|
|
case "یکشنبه":
|
|
dayOfWeekCurrent = "1 شنبه";
|
|
break;
|
|
case "دوشنبه":
|
|
dayOfWeekCurrent = "2 شنبه";
|
|
break;
|
|
case "سه شنبه":
|
|
dayOfWeekCurrent = "3 شنبه";
|
|
break;
|
|
case "چهارشنبه":
|
|
dayOfWeekCurrent = "4 شنبه";
|
|
break;
|
|
case "پنج شنبه":
|
|
dayOfWeekCurrent = "5 شنبه";
|
|
break;
|
|
case "جمعه":
|
|
dayOfWeekCurrent = "آدینه";
|
|
break;
|
|
}
|
|
|
|
var BoolDateHoliday = da.ToGregorianDateTime();
|
|
if (da == todayFor)
|
|
{
|
|
var calenderNewList = new CalenderViewModel()
|
|
{
|
|
DayNumber = currentDay,
|
|
IsToday = true,
|
|
DayOfWeek = dayOfWeekCurrent,
|
|
Holiday = _holidayItemApplication.IsHoliday(BoolDateHoliday),
|
|
};
|
|
calenderList.Add(calenderNewList);
|
|
}
|
|
else
|
|
{
|
|
var calenderNewList = new CalenderViewModel()
|
|
{
|
|
DayNumber = currentDay,
|
|
IsToday = false,
|
|
DayOfWeek = dayOfWeekCurrent,
|
|
Holiday = _holidayItemApplication.IsHoliday(BoolDateHoliday)
|
|
};
|
|
calenderList.Add(calenderNewList);
|
|
|
|
}
|
|
}
|
|
|
|
CalenderViewModels = calenderList;
|
|
|
|
#endregion
|
|
|
|
#region RollCall Service
|
|
|
|
var rollCall = _rollCallServiceApplication.GetActiveServiceByWorkshopId(workshopIDecrypt);
|
|
if (rollCall == null)
|
|
{
|
|
RollCallServiceDeadline = "-";
|
|
CheckRollCallService = false;
|
|
}
|
|
else
|
|
{
|
|
RollCallServiceDeadline = rollCall.EndService.ToFarsi().ToFarsiDuration2();
|
|
CheckRollCallService = true;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
|
|
#region Get Employee & Workshop List by JSON
|
|
public IActionResult OnGetWorkshopList(WorkshopSearchModel searchModel)
|
|
{
|
|
Workshops = _workshopApplication.SearchForClient(searchModel).ToList();
|
|
var selectedWorkshop = _workshopApplication.SearchForClient(searchModel).OrderByDescending(x => x.PersonnelCount).FirstOrDefault();
|
|
SelectedWorkshop = selectedWorkshop.WorkshopFullName;
|
|
|
|
if (selectedWorkshop != null)
|
|
{
|
|
_authHelper.UpdateWorkshopSlugClaim(selectedWorkshop.Slug,selectedWorkshop.WorkshopFullName);
|
|
}
|
|
|
|
return new JsonResult(new
|
|
{
|
|
Workshops,
|
|
workshopName = SelectedWorkshop
|
|
});
|
|
}
|
|
|
|
public IActionResult OnPostSelectWorkshop(string slug, WorkshopSearchModel searchModel)
|
|
{
|
|
var workshopId = _passwordHasher.SlugDecrypt(slug);
|
|
if (workshopId != 0)
|
|
{
|
|
var workshop = _workshopApplication.SearchForClient(searchModel).FirstOrDefault(x => x.Id == workshopId);
|
|
if (workshop != null)
|
|
{
|
|
_authHelper.UpdateWorkshopSlugClaim(workshop.Slug,workshop.WorkshopFullName);
|
|
}
|
|
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = true,
|
|
message = "کارگاه مورد نظر شما انتخاب شد"
|
|
});
|
|
}
|
|
else
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
isSuccedded = false,
|
|
message = "کارگاه مورد نظر شما یافت نشد"
|
|
});
|
|
}
|
|
}
|
|
|
|
public async Task<IActionResult> OnGetEmployeeList()
|
|
{
|
|
var workshopSlug = User.FindFirst("WorkshopSlug").Value;
|
|
var workshopId = _passwordHasher.SlugDecrypt(workshopSlug);
|
|
if (workshopId > 0)
|
|
{
|
|
//var result = _workshopApplication.GetConnectedPersonnels(workshopId);
|
|
//var r = result.GroupBy(x => x.PersonName).Select(x => x.First()).ToList();
|
|
|
|
//Employees = new ConnectedPersonnelViewModel()
|
|
//{
|
|
// ConnectedPersonnelViewModels = r.OrderBy(x => x.Black ? 1 : 0).ThenBy(x => x.PersonelCode).ToList(),
|
|
//};
|
|
|
|
// لیست پرسنلی که قرارداد ندارند
|
|
//var filteredBlackResult = _workshopApplication.GetConnectedPersonnels(workshopId)
|
|
// .Where(x => !x.Black && x.ContractPerson)
|
|
// .GroupBy(x => x.EmployeeId)
|
|
// .Select(x => x.First())
|
|
// .OrderBy(x => x.PersonelCode)
|
|
// .ToList();
|
|
|
|
//Employees = new ConnectedPersonnelViewModel()
|
|
//{
|
|
// ConnectedPersonnelViewModels = filteredBlackResult,
|
|
//};
|
|
|
|
var employees = await _employeeApplication.WorkedEmployeesInWorkshopSelectList(workshopId);
|
|
return new JsonResult(new
|
|
{
|
|
success = true,
|
|
data = employees
|
|
});
|
|
}
|
|
else
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
success = false,
|
|
message = "داده ای یافت نشد!"
|
|
});
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
[NeedsPermission(SubAccountPermissionHelper.LeaveCreatePermissionCode)]
|
|
public IActionResult OnGetLeaveCreate()
|
|
{
|
|
var command = new CreateLeave();
|
|
|
|
return Partial("LeaveCreate", command);
|
|
}
|
|
|
|
[NeedsPermission(SubAccountPermissionHelper.LeaveCreatePermissionCode)]
|
|
public IActionResult OnPostLeaveSave(CreateLeave command)
|
|
{
|
|
if (User.Identity.IsAuthenticated)
|
|
{
|
|
var workshopSlugCliam = User.FindFirstValue("WorkshopSlug");
|
|
long workshopId = _passwordHasher.SlugDecrypt(workshopSlugCliam);
|
|
if (workshopId > 0)
|
|
{
|
|
command.WorkshopId = workshopId;
|
|
|
|
var result = _leaveApplication.Create(command);
|
|
|
|
return new JsonResult(new
|
|
{
|
|
IsSuccedded = result.IsSuccedded,
|
|
message = result.Message,
|
|
PrintID = result.SendId
|
|
});
|
|
}
|
|
else
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
IsSuccedded = false,
|
|
message = "کارگاه ای یافت نشده است",
|
|
});
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
IsSuccedded = false,
|
|
message = "داده ای یافت نشد!",
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
#region Compute Leave Hourly and Daily
|
|
public IActionResult OnGetComputeLeaveHourly(string startHours, string endHours)
|
|
{
|
|
var start = Convert.ToDateTime(startHours);
|
|
var end = Convert.ToDateTime(endHours);
|
|
if (start > end || start == end)
|
|
{
|
|
end = end.AddDays(1);
|
|
}
|
|
|
|
var HourlyDate = (end - start);
|
|
var hours = (int)HourlyDate.TotalHours;
|
|
var minutes = HourlyDate.TotalMinutes % 60;
|
|
|
|
if (hours > 0 && minutes > 0)
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
res = hours + " " + "ساعت و" + " " + minutes + " " + "دقیقه",
|
|
});
|
|
}
|
|
else if (hours > 0 && minutes == 0)
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
res = hours + " " + "ساعت ",
|
|
});
|
|
}
|
|
else if (hours == 0 && minutes > 0)
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
res = minutes + " " + "دقیقه",
|
|
});
|
|
}
|
|
|
|
return new JsonResult(new
|
|
{
|
|
totalHours = $"{hours}",
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetComputeLeaveDaily(string startDay, string endDay)
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(startDay) && !string.IsNullOrWhiteSpace(endDay))
|
|
{
|
|
var start = startDay.ToGeorgianDateTime();
|
|
var end = endDay.ToGeorgianDateTime();
|
|
if (end >= start)
|
|
{
|
|
var daysSpan = (end - start).TotalDays + 1;
|
|
return new JsonResult(new
|
|
{
|
|
res = $"{(int)daysSpan} روز",
|
|
});
|
|
}
|
|
else
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
status = false,
|
|
res = "تاریخ پایان از تاریخ شروع کوچکتر است.",
|
|
});
|
|
}
|
|
}
|
|
|
|
return new JsonResult(new
|
|
{
|
|
res = "",
|
|
});
|
|
}
|
|
#endregion
|
|
|
|
[NeedsPermission(SubAccountPermissionHelper.LeaveListPermissionCode)]
|
|
public IActionResult OnGetLeaveList()
|
|
{
|
|
return Partial("LeaveList");
|
|
}
|
|
|
|
[NeedsPermission(SubAccountPermissionHelper.LeaveListPermissionCode)]
|
|
public IActionResult OnGetLeaveListData(long workshopId, long employeeId)
|
|
{
|
|
var workshop = _workshopApplication.GetDetails(workshopId);
|
|
var employee = _employeeApplication.GetDetails(employeeId);
|
|
var search = new LeaveSearchModel()
|
|
{
|
|
WorkshopId = workshop.Id,
|
|
EmployeeId = employee.Id,
|
|
};
|
|
LeaveSearch = _leaveApplication.searchClient(search);
|
|
return new JsonResult(new { LeaveSearch });
|
|
}
|
|
|
|
[NeedsPermission(SubAccountPermissionHelper.PaymentToEmployeePermissionCode)]
|
|
public IActionResult OnGetPaymentToPersonnelCreate()
|
|
{
|
|
return Partial("PaymentToPersonnelCreate");
|
|
}
|
|
[NeedsPermission(SubAccountPermissionHelper.PaymentToEmployeePermissionCode)]
|
|
public IActionResult OnPostPaymentToPersonnelSave(CreatePaymentToEmployee command)
|
|
{
|
|
var payDateFa = command.CreatePaymentToEmployeeItem.PayDateFa;
|
|
command.Year = payDateFa.Substring(0, 4);
|
|
command.Month = payDateFa.Substring(5, 2);
|
|
|
|
var result = _paymentToEmployeeApplication.Create(command);
|
|
|
|
return new JsonResult(new
|
|
{
|
|
IsSuccedded = result.IsSuccedded,
|
|
message = result.Message
|
|
});
|
|
}
|
|
|
|
[NeedsPermission(SubAccountPermissionHelper.LeaveListPermissionCode)]
|
|
public IActionResult OnGetLastLeave(int pageIndex)
|
|
{
|
|
if (User.Identity.IsAuthenticated)
|
|
{
|
|
var workshopSlugCliam = User.FindFirstValue("WorkshopSlug");
|
|
long workshopId = _passwordHasher.SlugDecrypt(workshopSlugCliam);
|
|
if (workshopId > 0)
|
|
{
|
|
var command = new LeaveSearchModel()
|
|
{
|
|
WorkshopId = workshopId,
|
|
PageIndex = pageIndex
|
|
};
|
|
|
|
var result = _leaveApplication.LastLeaveMain(command);
|
|
int pageIndexCount = result.Count();
|
|
return new JsonResult(new
|
|
{
|
|
data = result,
|
|
pageIndex = pageIndexCount
|
|
});
|
|
}
|
|
else
|
|
{
|
|
return NotFound();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return BadRequest();
|
|
}
|
|
}
|
|
|
|
#region Add new employee modal
|
|
|
|
public IActionResult OnGetWorkshopSettingList()
|
|
{
|
|
var workshopSlug = User.FindFirst("WorkshopSlug")?.Value;
|
|
long workshopIDecrypt = _passwordHasher.SlugDecrypt(workshopSlug);
|
|
var resultData = _customizeWorkshopSettingsApplication.GetWorkshopIncludeGroupsByWorkshopId(workshopIDecrypt);
|
|
if (resultData != null)
|
|
{
|
|
resultData.GroupSettings = resultData?.GroupSettings.Where(x => !x.MainGroup).ToList();
|
|
}
|
|
|
|
return new JsonResult(new
|
|
{
|
|
success = true,
|
|
data = resultData,
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetBankListAjax()
|
|
{
|
|
var resultData = _bankApplication.Search("");
|
|
return new JsonResult(new
|
|
{
|
|
success = true,
|
|
data = resultData,
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetJobSearch(string jobName)
|
|
{
|
|
var jobViewModels = _jobApplication.GetJobListByText(jobName);
|
|
|
|
return new JsonResult(jobViewModels);
|
|
}
|
|
|
|
public async Task<IActionResult> OnGetEmployeeDetailsWithNationalCode(string nationalCode, string birthDate)
|
|
{
|
|
var workshopSlug = User.FindFirst("WorkshopSlug")?.Value;
|
|
long workshopIDecrypt = _passwordHasher.SlugDecrypt(workshopSlug);
|
|
var result = await _employeeApplication.ValidateCreateEmployeeClientByNationalCodeAndWorkshopId(nationalCode, birthDate, workshopIDecrypt);
|
|
return new JsonResult(result);
|
|
}
|
|
|
|
public IActionResult OnGetCreateEmployee()
|
|
{
|
|
var workshopSlug = User.FindFirst("WorkshopSlug")?.Value;
|
|
long workshopIDecrypt = _passwordHasher.SlugDecrypt(workshopSlug);
|
|
var command = new CreateEmployeeByClient();
|
|
command.PersonnelCode = (_personnelCodeApplication.GetLastPersonnelCodeByWorkshop(workshopIDecrypt) + 1).ToString();
|
|
var activeServiceByWorkshopId = _rollCallServiceApplication.GetActiveServiceByWorkshopId(workshopIDecrypt);
|
|
command.HasRollCallService = activeServiceByWorkshopId is { Id: > 0 };
|
|
if (command.HasRollCallService)
|
|
command.HasCustomizeCheckoutService = activeServiceByWorkshopId.HasCustomizeCheckoutService == "true";
|
|
return Partial("./Company/Employees/CreateEmployeeModal", command);
|
|
}
|
|
|
|
public IActionResult OnPostCreateEmployee(CreateEmployeeByClient command)
|
|
{
|
|
var workshopSlug = User.FindFirst("WorkshopSlug")?.Value;
|
|
long workshopIDecrypt = _passwordHasher.SlugDecrypt(workshopSlug);
|
|
command.WorkshopId = workshopIDecrypt;
|
|
var result = _employeeApplication.CreateEmployeeByClient(command);
|
|
return new JsonResult(new
|
|
{
|
|
success = result.IsSuccedded,
|
|
message = result.Message,
|
|
});
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Add Left Work
|
|
|
|
public async Task<IActionResult> OnGetLeftWorkEmployeeList()
|
|
{
|
|
var workshopSlug = User.FindFirst("WorkshopSlug")?.Value;
|
|
long workshopIDecrypt = _passwordHasher.SlugDecrypt(workshopSlug);
|
|
var exists = _leftWorkTempApplication.GetLeftWorksByWorkshopId(workshopIDecrypt);
|
|
|
|
var employees = (await _employeeApplication.WorkedEmployeesInWorkshopSelectList(workshopIDecrypt))
|
|
.Where(x => exists.All(a => a.EmployeeId != x.Id)).ToList();
|
|
|
|
return new JsonResult(new
|
|
{
|
|
success = true,
|
|
data = employees
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetDayOfWeek(string dateFa)
|
|
{
|
|
if (dateFa.TryToGeorgianDateTime(out DateTime date) == false)
|
|
return new JsonResult(new
|
|
{
|
|
success = true,
|
|
message = "",
|
|
});
|
|
return new JsonResult(new
|
|
{
|
|
success = true,
|
|
message = date.DayOfWeek.DayOfWeeKToPersian(),
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetCreateLeftWorkEmployee()
|
|
{
|
|
var command = new CreateLeftWorkTemp();
|
|
return Partial("./Company/Employees/ModalCreateLeftWorkEmployee", command);
|
|
}
|
|
|
|
public async Task<IActionResult> OnPostCreateEmployeeLeftWork(CreateLeftWorkTemp command)
|
|
{
|
|
var workshopSlug = User.FindFirst("WorkshopSlug")?.Value;
|
|
long workshopIDecrypt = _passwordHasher.SlugDecrypt(workshopSlug);
|
|
command.WorkshopId = workshopIDecrypt;
|
|
var result = await _leftWorkTempApplication.Create(command);
|
|
return new JsonResult(new
|
|
{
|
|
success = result.IsSuccedded,
|
|
message = result.Message
|
|
});
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region RotatingShift
|
|
|
|
public IActionResult OnGetHasRotatingShift(long employeeId , string startDateTime)
|
|
{
|
|
if (startDateTime.TryToGeorgianDateTime(out var startDateTimeGr)==false)
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
HasRollCall = false,
|
|
Message = "تاریخ وارد شده نامعتبر میباشد",
|
|
Shifts = (List<object>)[]
|
|
});
|
|
}
|
|
|
|
|
|
var workshopSlug = User.FindFirst("WorkshopSlug")?.Value;
|
|
long workshopId = _passwordHasher.SlugDecrypt(workshopSlug);
|
|
|
|
var employeeSettings = _customizeWorkshopSettingsApplication.GetByEmployeeIdAndWorkshopIdIncludeGroupSettings(workshopId, employeeId);
|
|
if (employeeSettings == null)
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
HasRollCall = false,
|
|
Shifts = (List<object>)[],
|
|
});
|
|
}
|
|
|
|
var isActive =_rollCallEmployeeStatusApplication.IsActiveInPeriod(employeeId, workshopId, startDateTimeGr, startDateTimeGr);
|
|
|
|
return new JsonResult(new
|
|
{
|
|
HasRollCall = isActive && employeeSettings.WorkshopShiftStatus == WorkshopShiftStatus.Rotating,
|
|
Shifts = employeeSettings.CustomizeRotatingShiftsViewModels
|
|
});
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CameraAccountAndWorkshopSetting
|
|
|
|
public IActionResult OnGetStatusCameraAccountAndWorkshopSetting()
|
|
{
|
|
var account = _authHelper.CurrentAccountInfo();
|
|
var workshopSlug = User.FindFirstValue("WorkshopSlug");
|
|
var workshopId = _passwordHasher.SlugDecrypt(workshopSlug);
|
|
|
|
if (workshopId < 0)
|
|
return BadRequest();
|
|
|
|
var workshopSettings = _customizeWorkshopSettingsApplication.GetWorkshopSettingsByWorkshopId(workshopId, account);
|
|
var hasRollCallWorkshopSetting = !workshopSettings.ArePropertiesEqual(new CustomizeWorkshopSettingsViewModel());
|
|
|
|
var allServices = _rollCallServiceApplication.GetAllServiceByWorkshopId(workshopId);
|
|
var hasPreviousService = allServices.Any();
|
|
|
|
var activeService = _rollCallServiceApplication.GetActiveServiceByWorkshopId(workshopId);
|
|
var hasRollCallService = activeService != null;
|
|
|
|
bool hasCameraAccount;
|
|
if (hasRollCallService)
|
|
{
|
|
var accountId = _authHelper.CurrentAccountId();
|
|
var cameraAccountExists = _cameraAccountApplication.HasCameraAccount(workshopId, accountId);
|
|
|
|
hasCameraAccount = cameraAccountExists && hasPreviousService;
|
|
}
|
|
else
|
|
{
|
|
hasCameraAccount = !hasPreviousService;
|
|
}
|
|
|
|
return new JsonResult(new
|
|
{
|
|
hasRollCallWorkshopSetting,
|
|
hasCameraAccount,
|
|
hasRollCallService
|
|
});
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|