365 lines
15 KiB
C#
365 lines
15 KiB
C#
using _0_Framework.Application;
|
|
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
|
using AccountManagement.Application.Contracts.CameraAccount;
|
|
using CompanyManagment.App.Contracts.CustomizeWorkshopSettings;
|
|
using CompanyManagment.App.Contracts.Error;
|
|
using CompanyManagment.App.Contracts.RollCall;
|
|
using CompanyManagment.App.Contracts.RollCallEmployee;
|
|
using CompanyManagment.App.Contracts.RollCallService;
|
|
using CompanyManagment.App.Contracts.Workshop;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.Mvc.RazorPages;
|
|
using System.Security.Claims;
|
|
using System.Transactions;
|
|
using _0_Framework.Infrastructure;
|
|
|
|
namespace ServiceHost.Areas.Client.Pages.Company.RollCall
|
|
{
|
|
[Authorize]
|
|
[NeedsPermission(SubAccountPermissionHelper.RollCallOperationsPermissionCode)]
|
|
public class IndexModel : PageModel
|
|
{
|
|
private readonly IWorkshopApplication _workshopApplication;
|
|
private readonly IRollCallServiceApplication _rollCallServiceApplication;
|
|
private readonly IRollCallEmployeeApplication _rollCallEmployeeApplication;
|
|
private readonly ICustomizeWorkshopSettingsApplication _customizeWorkshopSettingsApplication;
|
|
private readonly ICameraAccountApplication _cameraAccountApplication;
|
|
private readonly IPasswordHasher _passwordHasher;
|
|
private readonly IAuthHelper _authHelper;
|
|
|
|
public string WorkshopFullName;
|
|
public bool CheckRollCallService;
|
|
public string RollCallServicePersonnelActive;
|
|
public string RollCallServiceDeadline;
|
|
public string HasCameraAccount = "false";
|
|
public string HasRollCallWorkshopSetting = "false";
|
|
public string HasRollCallCustomizeWorkshopSetting = "false";
|
|
|
|
public IndexModel(IWorkshopApplication workshopApplication, IRollCallServiceApplication rollCallServiceApplication, IRollCallEmployeeApplication rollCallEmployeeApplication, IPasswordHasher passwordHasher, ICameraAccountApplication cameraAccountApplication, IAuthHelper authHelper, ICustomizeWorkshopSettingsApplication customizeWorkshopSettingsApplication)
|
|
{
|
|
_workshopApplication = workshopApplication;
|
|
_rollCallServiceApplication = rollCallServiceApplication;
|
|
_rollCallEmployeeApplication = rollCallEmployeeApplication;
|
|
_passwordHasher = passwordHasher;
|
|
_cameraAccountApplication = cameraAccountApplication;
|
|
_authHelper = authHelper;
|
|
_customizeWorkshopSettingsApplication = customizeWorkshopSettingsApplication;
|
|
}
|
|
|
|
|
|
public IActionResult OnGet()
|
|
{
|
|
var account = _authHelper.CurrentAccountInfo();
|
|
var workshopHash = User.FindFirstValue("WorkshopSlug");
|
|
var workshopId = _passwordHasher.SlugDecrypt(workshopHash);
|
|
if (workshopId < 0)
|
|
return BadRequest();
|
|
|
|
|
|
var rollCallWorkshopSetting = _customizeWorkshopSettingsApplication.GetWorkshopSettingsByWorkshopId(workshopId, account);
|
|
HasRollCallWorkshopSetting = rollCallWorkshopSetting.ArePropertiesEqual(new CustomizeWorkshopSettingsViewModel()) ? "false" : "true";
|
|
|
|
WorkshopFullName =_authHelper.GetWorkshopName();
|
|
|
|
HasRollCallCustomizeWorkshopSetting = _customizeWorkshopSettingsApplication.GetWorkshopSettingsDetails(workshopId).Id == 0 ? "false" : "true";
|
|
|
|
var hasBeforeService = _rollCallServiceApplication.GetAllServiceByWorkshopId(workshopId).Any();
|
|
var rollCall = _rollCallServiceApplication.GetActiveServiceByWorkshopId(workshopId);
|
|
|
|
if (rollCall != null)
|
|
{
|
|
var accountId = _authHelper.CurrentAccountId();
|
|
var cameraAccount = _cameraAccountApplication.HasCameraAccount(workshopId, accountId);
|
|
|
|
if (cameraAccount && hasBeforeService)
|
|
HasCameraAccount = "true";
|
|
|
|
CheckRollCallService = true;
|
|
RollCallServicePersonnelActive = _rollCallEmployeeApplication.activedPerson(workshopId) > 0 ? "true" : "false";
|
|
RollCallServiceDeadline = rollCall.EndService.ToFarsi().ToFarsiDuration2();
|
|
}
|
|
else
|
|
{
|
|
HasCameraAccount = !hasBeforeService ? "true" : HasCameraAccount;
|
|
CheckRollCallService = false;
|
|
RollCallServiceDeadline = "سرویس خریداری نشده است";
|
|
}
|
|
|
|
return Page();
|
|
}
|
|
|
|
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;
|
|
bool hasCustomizeCheckout = false;
|
|
if (hasRollCallService)
|
|
{
|
|
var accountId = _authHelper.CurrentAccountId();
|
|
var cameraAccountExists = _cameraAccountApplication.HasCameraAccount(workshopId, accountId);
|
|
|
|
hasCameraAccount = cameraAccountExists && hasPreviousService;
|
|
hasCustomizeCheckout = activeService.HasCustomizeCheckoutService=="true";
|
|
}
|
|
else
|
|
{
|
|
hasCameraAccount = !hasPreviousService;
|
|
}
|
|
|
|
return new JsonResult(new
|
|
{
|
|
hasRollCallWorkshopSetting,
|
|
hasCameraAccount,
|
|
hasRollCallService,
|
|
hasCustomizeCheckout,
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetSaveCameraAccountAndWorkshopSetting()
|
|
{
|
|
var account = _authHelper.CurrentAccountInfo();
|
|
|
|
var accountId = _authHelper.CurrentAccountId();
|
|
var workshopHash = User.FindFirstValue("WorkshopSlug");
|
|
var workshopId = _passwordHasher.SlugDecrypt(workshopHash);
|
|
if (workshopId < 1)
|
|
return BadRequest();
|
|
|
|
var cameraAccount = _cameraAccountApplication.HasCameraAccount(workshopId, accountId);
|
|
var rollCallWorkshopSetting = _customizeWorkshopSettingsApplication.GetWorkshopSettingsByWorkshopId(workshopId, account);
|
|
|
|
var result = new AccountAndSettingViewModel()
|
|
{
|
|
HasCamera = cameraAccount,
|
|
HasGroupWorkshop = !rollCallWorkshopSetting.ArePropertiesEqual(new CustomizeWorkshopSettingsViewModel()),
|
|
CreateCameraAccount = _cameraAccountApplication.GetDetailsByWorkshop(workshopId),
|
|
CreateWorkshopSettings = _customizeWorkshopSettingsApplication.GetWorkshopSettingsDetails(workshopId),
|
|
};
|
|
|
|
return Partial("ModalCreateAccountSetting", result);
|
|
}
|
|
|
|
public IActionResult OnPostSaveCameraAccountAndWorkshopSetting(AccountAndSettingViewModel command)
|
|
{
|
|
var workshopHash = User.FindFirstValue("WorkshopSlug");
|
|
var workshopId = _passwordHasher.SlugDecrypt(workshopHash);
|
|
if (workshopId < 1)
|
|
return new JsonResult(new
|
|
{
|
|
Success = false,
|
|
message = "هیچ کارگاهی یافت نشد",
|
|
});
|
|
|
|
|
|
|
|
string finalMessage = "";
|
|
using (var transaction = new TransactionScope())
|
|
{
|
|
|
|
if (!command.HasCamera)
|
|
{
|
|
var createAccountCommand = new CreateCameraAccount()
|
|
{
|
|
WorkshopId = workshopId,
|
|
AccountId = _authHelper.CurrentAccountId(),
|
|
Username = command.CreateCameraAccount.Username,
|
|
Password = command.CreateCameraAccount.Password,
|
|
RePassword = command.CreateCameraAccount.RePassword,
|
|
WorkshopName = _workshopApplication.GetDetails(workshopId).WorkshopFullName,
|
|
IsActiveString = "true",
|
|
};
|
|
var result = _cameraAccountApplication.Create(createAccountCommand);
|
|
finalMessage = result.Message;
|
|
if (!result.IsSuccedded)
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
Success = false,
|
|
message = finalMessage,
|
|
});
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!command.HasGroupWorkshop)
|
|
{
|
|
var result = _customizeWorkshopSettingsApplication.CreateWorkshopSettings(command.CreateWorkshopSettings);
|
|
finalMessage = result.Message;
|
|
if (!result.IsSuccedded)
|
|
{
|
|
return new JsonResult(new
|
|
{
|
|
Success = false,
|
|
message = finalMessage,
|
|
});
|
|
}
|
|
}
|
|
|
|
transaction.Complete();
|
|
|
|
}
|
|
|
|
|
|
|
|
return new JsonResult(new
|
|
{
|
|
Success = true,
|
|
message = finalMessage,
|
|
});
|
|
|
|
}
|
|
|
|
public IActionResult OnGetCheckAccount(string username)
|
|
{
|
|
var result = _cameraAccountApplication.CheckUsername(username);
|
|
return new JsonResult(new
|
|
{
|
|
Success = result.IsSuccedded,
|
|
message = result.IsSuccedded ? "نام کاربری با مورد تاییداست" : result.Message,
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetModalSettingRollCall()
|
|
{
|
|
var workshopHash = User.FindFirstValue("WorkshopSlug");
|
|
var workshopId = _passwordHasher.SlugDecrypt(workshopHash);
|
|
if (workshopId < 1)
|
|
return BadRequest();
|
|
|
|
if (workshopId != 11)
|
|
{
|
|
var resultError = new ErrorViewModel()
|
|
{
|
|
Message = "شما مجاز به این بخش نیستید."
|
|
};
|
|
return Partial("../Error/_ErrorModal", resultError);
|
|
}
|
|
|
|
var command = _customizeWorkshopSettingsApplication.GetWorkshopSettingsDetails(workshopId);
|
|
|
|
if (command.Id == 0)
|
|
{
|
|
var resultError = new ErrorViewModel()
|
|
{
|
|
Message = "شما تنظیماتی مربوط به کارگاه را تنظیم نکرده اید."
|
|
};
|
|
return Partial("../Error/_ErrorModal", resultError);
|
|
}
|
|
|
|
return Partial("ModalSettingRollCall", command);
|
|
}
|
|
|
|
public IActionResult OnPostSaveCustomWorkshopSettings(EditCustomizeWorkshopSettings command, bool isAllGroupChanged)
|
|
{
|
|
//Todo:Vafa!!!
|
|
var result = _customizeWorkshopSettingsApplication.EditWorkshopSetting(command, isAllGroupChanged);
|
|
|
|
return new JsonResult(new
|
|
{
|
|
isSuccess = result.IsSuccedded,
|
|
message = result.Message,
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetEditSettingWorkTime()
|
|
{
|
|
var workshopHash = User.FindFirstValue("WorkshopSlug");
|
|
var workshopId = _passwordHasher.SlugDecrypt(workshopHash);
|
|
if (workshopId < 1)
|
|
return BadRequest();
|
|
|
|
var command = _customizeWorkshopSettingsApplication.GetSimpleWorkshopSettings(workshopId);
|
|
|
|
if (command.Id == 0)
|
|
{
|
|
var resultError = new ErrorViewModel()
|
|
{
|
|
Message = "شما تنظیماتی مربوط به کارگاه را تنظیم نکرده اید."
|
|
};
|
|
return Partial("../Error/_ErrorModal", resultError);
|
|
}
|
|
|
|
return Partial("ModalSettingWorkTime", command);
|
|
}
|
|
|
|
public IActionResult OnGetGroupListAndEmployeeList(long customizeWorkshopSettingsId)
|
|
{
|
|
var resultData = _customizeWorkshopSettingsApplication.GetShiftChangesGroupAndEmployees(customizeWorkshopSettingsId);
|
|
var success = resultData.Any();
|
|
|
|
return new JsonResult(new
|
|
{
|
|
success = success,
|
|
data = resultData,
|
|
});
|
|
}
|
|
|
|
public IActionResult OnPostEditSettingWorkTime(List<CustomizeWorkshopShiftViewModel> shiftViewModels,
|
|
long customizeWorkshopSettingsId, WorkshopShiftStatus workshopShiftStatus,FridayWork fridayWork,HolidayWork holidayWork,List<DayOfWeek> offDayOfWeeks)
|
|
{
|
|
var workshopHash = User.FindFirstValue("WorkshopSlug");
|
|
var workshopId = _passwordHasher.SlugDecrypt(workshopHash);
|
|
if (workshopId < 1)
|
|
return new JsonResult(new
|
|
{
|
|
success = false,
|
|
message = "هیچ کارگاهی یافت نشد!",
|
|
});
|
|
|
|
//Todo:Vafa!!
|
|
//Todo: Vafa : to in ja bool replaceChange group ro ezafe kon. hatman ham workshopShiftStatus az front pas bede be in.
|
|
var result = _customizeWorkshopSettingsApplication
|
|
.EditWorkshopSettingShifts(shiftViewModels, customizeWorkshopSettingsId, workshopShiftStatus, holidayWork, offDayOfWeeks);
|
|
|
|
return new JsonResult(new
|
|
{
|
|
success = result.IsSuccedded,
|
|
message = result.Message,
|
|
});
|
|
}
|
|
|
|
public IActionResult OnGetIrregularWorkshopHaveGroupedAllPersonnelValidation(long customizeWorkshopSettingsId)
|
|
{
|
|
var isWorkshopIrregular = _customizeWorkshopSettingsApplication
|
|
.GetWorkshopSettingsDetails(customizeWorkshopSettingsId).WorkshopShiftStatus == WorkshopShiftStatus.Irregular;
|
|
|
|
if (isWorkshopIrregular == false)
|
|
return new JsonResult(new
|
|
{
|
|
success = true,
|
|
|
|
});
|
|
|
|
if (_customizeWorkshopSettingsApplication.GetEmployeesWithoutGroup(customizeWorkshopSettingsId).Any())
|
|
return new JsonResult(new
|
|
{
|
|
success = true,
|
|
});
|
|
|
|
return new JsonResult(new
|
|
{
|
|
success = true,
|
|
});
|
|
}
|
|
|
|
}
|
|
}
|