Files
Backend-Api/ServiceHost/Areas/AdminNew/Pages/Company/RollCall/Options.cshtml.cs

276 lines
9.2 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.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using System.Security.Claims;
using System.Transactions;
using AccountManagement.Application.Contracts.Account;
namespace ServiceHost.Areas.AdminNew.Pages.Company.RollCall
{
public class OptionsModel : 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 long WorkshopId;
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 OptionsModel(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(long workshopId)
{
WorkshopId = workshopId;
var rollCallWorkshopSetting = _customizeWorkshopSettingsApplication.GetWorkshopSettingsByWorkshopIdForAdmin(workshopId);
HasRollCallWorkshopSetting = rollCallWorkshopSetting.ArePropertiesEqual(new CustomizeWorkshopSettingsViewModel()) ? "false" : "true";
var workshopInfo = _workshopApplication.GetWorkshopInfo(workshopId);
WorkshopFullName = workshopInfo.WorkshopFullName;
HasRollCallCustomizeWorkshopSetting = _customizeWorkshopSettingsApplication.GetWorkshopSettingsDetails(workshopId).Id == 0 ? "false" : "true";
var hasBeforeService = _rollCallServiceApplication.GetAllServiceByWorkshopId(workshopId).Any();
var rollCall = _rollCallServiceApplication.GetActiveServiceByWorkshopId(workshopId);
if (rollCall != null)
{
AccountViewModel clientAccount = _workshopApplication.GetClientAccountByWorkshopId(workshopId);
var cameraAccount = _cameraAccountApplication.HasCameraAccount(workshopId, clientAccount.Id);
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 OnGetSaveCameraAccountAndWorkshopSetting(long workshopId)
{
//var account = _authHelper.CurrentAccountInfo();
//var accountId = _authHelper.CurrentAccountId();
var workshop = _workshopApplication.GetWorkshopInfo(workshopId);
var accountInfo = _workshopApplication.GetClientAccountByWorkshopId(workshopId);
var account = new AuthViewModel()
{
WorkshopList =
[
new WorkshopClaim
{
Id = workshop.Id,
Name = workshop.WorkshopFullName,
PersonnelCount = workshop.PersonnelCount,
Slug = workshop.Slug }
]
};
var cameraAccount = _cameraAccountApplication.HasCameraAccount(workshopId, accountInfo.Id);
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 OnGetEditSettingWorkTime(long workshopId)
{
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, long workshopId)
{
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);
return new JsonResult(new
{
success = result.IsSuccedded,
message = result.Message,
});
}
public IActionResult OnGetIrregularWorkshopHaveGroupedAllPersonnelValidation(long customizeWorkshopSettingsId, long workshopId)
{
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,
});
}
}
}