293 lines
		
	
	
	
		
			8.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			293 lines
		
	
	
	
		
			8.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
function openManagementOptions() {
 | 
						|
	$(".main-container").empty();
 | 
						|
 | 
						|
	const actions = [
 | 
						|
		{ label: getLocalizedText("hire_new_employee"), id: "hire" },
 | 
						|
		{ label: getLocalizedText("manage_employees"), id: "manage_employees" },
 | 
						|
	]
 | 
						|
	
 | 
						|
	const managementPage = $(`
 | 
						|
		<div class="management-page">
 | 
						|
			<button type="button" class="btn btn-close position-absolute top-0 end-0 mt-4 me-4"></button>
 | 
						|
 | 
						|
			<div class="management-title">
 | 
						|
				<div class="hrec hrec"></div>
 | 
						|
				<p>Dealership</p>
 | 
						|
				<div class="hrec hrec"></div>
 | 
						|
			</div>
 | 
						|
			<div class="inner-container">
 | 
						|
				<ul class="employee-management-list">
 | 
						|
				
 | 
						|
				</ul>
 | 
						|
			</div>
 | 
						|
		</div>
 | 
						|
	`);
 | 
						|
 | 
						|
	managementPage.find(".btn-close").click(function () {
 | 
						|
		display(false);
 | 
						|
	});
 | 
						|
 | 
						|
	$(".main-container").append(managementPage)
 | 
						|
 | 
						|
	actions.forEach(action => {
 | 
						|
		const div = $(`
 | 
						|
			<li class="employee-element">
 | 
						|
				<p id="employee-name">${action.label}</p>
 | 
						|
			</li>
 | 
						|
		`);
 | 
						|
 | 
						|
		div.click(function () {
 | 
						|
			$.post(`https://${resName}/employeeMenuAction`, JSON.stringify({ id: action.id, dealershipId: CURRENT_DEALERSHIP_ID }));
 | 
						|
		});
 | 
						|
 | 
						|
		$(".employee-management-list").append(div);
 | 
						|
	});
 | 
						|
 | 
						|
	display(true);
 | 
						|
}
 | 
						|
 | 
						|
// MANAGEMENT PAGE
 | 
						|
function showManagementPage(employeesData) {
 | 
						|
	let selectedEmployee = undefined;
 | 
						|
 | 
						|
	$(".main-container").empty();
 | 
						|
 | 
						|
	const managementPage = $(`
 | 
						|
	  <div class="management-page">
 | 
						|
	  	<button type="button" class="btn btn-close position-absolute top-0 end-0 mt-4 me-4"></button>
 | 
						|
		<div class="management-title">
 | 
						|
		  <div class="hrec hrec"></div>
 | 
						|
			<p>${getLocalizedText("menu:employees_management")}</p>
 | 
						|
		  <div class="hrec hrec"></div>
 | 
						|
		</div>
 | 
						|
		<div class="inner-container">
 | 
						|
		  <ul class="employee-management-list">
 | 
						|
		  </ul>
 | 
						|
		  <div class="employee-management-actions">
 | 
						|
			<div class="employee-amount-box">
 | 
						|
			  <div class="title-box">
 | 
						|
				<p>${getLocalizedText("menu:employees")}</p>
 | 
						|
				<div class="hrec"></div>
 | 
						|
			  </div>
 | 
						|
			  <div class="employee-count-box">
 | 
						|
				<p class="employee-count">${employeesData.length} ${getLocalizedText("menu:members")}</p>
 | 
						|
				<img src="./assets/svg/employees.svg" class="employee-count-icon">
 | 
						|
			  </div>
 | 
						|
			</div>
 | 
						|
			<div class="employee-action employee-selected" id="employee-selected"><p>N/A</p></div>
 | 
						|
			<div class="employee-action manage-permissions-btn" id="employee-manage"><p>${getLocalizedText("menu:manage_permissions")}</p></div>
 | 
						|
			<div class="employee-action fire-btn" id="employee-fire"><p>${getLocalizedText("menu:fire")}</p></div>
 | 
						|
			<div class="employee-action submit-btn" id="employee-submit"><p>${getLocalizedText("menu:submit")}</p></div>
 | 
						|
		  </div>
 | 
						|
		</div>
 | 
						|
	  </div>
 | 
						|
	`);
 | 
						|
 | 
						|
	managementPage.find(".btn-close").click(function () {
 | 
						|
		display(false);
 | 
						|
	});
 | 
						|
 | 
						|
	$(".main-container").append(managementPage)
 | 
						|
 | 
						|
	employeesData.forEach(employeeData => {
 | 
						|
		const { label } = employeeData;
 | 
						|
		
 | 
						|
		const div = $(`
 | 
						|
			<li id="${employeeData.identifier}" class="employee-element">
 | 
						|
				<p id="employee-name">${label}</p>
 | 
						|
				<p class="employee-details">Details</p>
 | 
						|
			</li>
 | 
						|
		`);
 | 
						|
 | 
						|
		div.click(function () {
 | 
						|
			selectedEmployee = employeeData;
 | 
						|
			$(".employee-element").removeClass("selected");
 | 
						|
			$(this).addClass("selected");
 | 
						|
			$("#employee-selected p").html(label)
 | 
						|
		});
 | 
						|
 | 
						|
		$(".employee-management-list").append(div);
 | 
						|
	});
 | 
						|
 | 
						|
	$(".employee-element").first().click();
 | 
						|
 | 
						|
	$(".employee-action").click(async function () {
 | 
						|
		const action = $(this).attr("id");
 | 
						|
		switch (action) {
 | 
						|
			case "employee-manage": {
 | 
						|
				showPermissionsPage(selectedEmployee);
 | 
						|
				break;
 | 
						|
			}
 | 
						|
			case "employee-fire": {
 | 
						|
				await $.post(`https://${resName}/fireEmployee`, JSON.stringify({ dealershipId: CURRENT_DEALERSHIP_ID, employeeIdentifier: selectedEmployee.identifier }))
 | 
						|
				display(false);
 | 
						|
				break;
 | 
						|
			}
 | 
						|
			case "employee-submit": {
 | 
						|
				display(false);
 | 
						|
				break;
 | 
						|
			}
 | 
						|
		}
 | 
						|
	});
 | 
						|
 | 
						|
	display(true);
 | 
						|
 | 
						|
}
 | 
						|
function openHireEmployee(closePlayers) {
 | 
						|
	let selectedEmployee = undefined;
 | 
						|
 | 
						|
	$(".main-container").empty();
 | 
						|
 | 
						|
	const managementPage = $(`
 | 
						|
	  <div class="management-page">
 | 
						|
	  	<button type="button" class="btn btn-close position-absolute top-0 end-0 mt-4 me-4"></button>
 | 
						|
		<div class="management-title">
 | 
						|
		  <div class="hrec hrec"></div>
 | 
						|
			<p>${getLocalizedText("menu:employees_management")}</p>
 | 
						|
		  <div class="hrec hrec"></div>
 | 
						|
		</div>
 | 
						|
		<div class="inner-container">
 | 
						|
		  <ul class="employee-management-list">
 | 
						|
		  </ul>
 | 
						|
		  <div class="employee-management-actions">
 | 
						|
			<div class="employee-amount-box">
 | 
						|
			  <div class="title-box">
 | 
						|
				<p>${getLocalizedText("menu:employees")}</p>
 | 
						|
				<div class="hrec"></div>
 | 
						|
			  </div>
 | 
						|
			  <div class="employee-count-box">
 | 
						|
				<p class="employee-count">${closePlayers.length} ${getLocalizedText("menu:nearby")}</p>
 | 
						|
				<img src="./assets/svg/stats_icon.svg" class="employee-count-icon">
 | 
						|
			  </div>
 | 
						|
			</div>
 | 
						|
			<div class="employee-action employee-selected" id="employee-selected"><p>N/A</p></div>
 | 
						|
			<div class="employee-action submit-btn" id="hire"><p>${getLocalizedText("menu:hire")}</p></div>
 | 
						|
		  </div>
 | 
						|
		</div>
 | 
						|
	  </div>
 | 
						|
	`);
 | 
						|
 | 
						|
	managementPage.find(".btn-close").click(function () {
 | 
						|
		display(false);
 | 
						|
	});
 | 
						|
 | 
						|
	$(".main-container").append(managementPage)
 | 
						|
 | 
						|
	closePlayers.forEach(employeeData => {
 | 
						|
		const { label } = employeeData;
 | 
						|
		
 | 
						|
		const div = $(`
 | 
						|
			<li id="${employeeData.identifier}" class="employee-element">
 | 
						|
				<p id="employee-name">${label}</p>
 | 
						|
				<p class="employee-details">Details</p>
 | 
						|
			</li>
 | 
						|
		`);
 | 
						|
 | 
						|
		div.click(function () {
 | 
						|
			selectedEmployee = employeeData;
 | 
						|
			$(".employee-element").removeClass("selected");
 | 
						|
			$(this).addClass("selected");
 | 
						|
			$("#employee-selected p").html(label)
 | 
						|
		});
 | 
						|
 | 
						|
		$(".employee-management-list").append(div);
 | 
						|
	});
 | 
						|
 | 
						|
	$(".employee-element").first().click();
 | 
						|
 | 
						|
	$(".employee-action").click(async function () {
 | 
						|
		const action = $(this).attr("id");
 | 
						|
		switch (action) {
 | 
						|
			case "hire": {
 | 
						|
				await $.post(`https://${resName}/hireEmployee`, JSON.stringify({ dealershipId: CURRENT_DEALERSHIP_ID, identifier: selectedEmployee.identifier }))
 | 
						|
				break;
 | 
						|
			}
 | 
						|
		}
 | 
						|
	});
 | 
						|
 | 
						|
	display(true);
 | 
						|
}
 | 
						|
 | 
						|
// Permissions Page
 | 
						|
function showPermissionsPage(employeeData) {
 | 
						|
	const { identifier, permissions, label } = employeeData;
 | 
						|
 | 
						|
	$(".management-page").hide();
 | 
						|
 | 
						|
	const div = $(`
 | 
						|
		<div class="permissions-page">
 | 
						|
		<div class="permissions-title">
 | 
						|
			<div class="hrec hrec"></div>
 | 
						|
			<p>${label}</p>
 | 
						|
			<div class="hrec hrec"></div>
 | 
						|
		</div>
 | 
						|
		<ul class="permissions-list">
 | 
						|
 | 
						|
		</ul>
 | 
						|
		<div class="submit-btn" id="save-permissions"><p>Submit</p></div>
 | 
						|
		</div>
 | 
						|
	`);
 | 
						|
	
 | 
						|
	$(".main-container").append(div);
 | 
						|
 | 
						|
	const ALL_PERMISSIONS = [
 | 
						|
		{ permissionId: "purchaseVehicleForStock", label: getLocalizedText("menu:purchaseVehicleForStock") },
 | 
						|
		{ permissionId: "displayVehicleFromStock", label: getLocalizedText("menu:displayVehicleFromStock") },
 | 
						|
		{ permissionId: "addMoneyToDealership", label: getLocalizedText("menu:addMoneyToDealership") },
 | 
						|
		{ permissionId: "removeMoneyFromDealership", label: getLocalizedText("menu:removeMoneyFromDealership") },
 | 
						|
		{ permissionId: "sellVehicleFromStock", label: getLocalizedText("menu:sellVehicleFromStock") },
 | 
						|
		{ permissionId: "updatePriceForModel", label: getLocalizedText("menu:updatePriceForModel") },
 | 
						|
		{ permissionId: "manager", label: getLocalizedText("menu:manager") },
 | 
						|
	];
 | 
						|
 | 
						|
	ALL_PERMISSIONS.forEach(permissionData => {
 | 
						|
		// Imposta su false se non definito
 | 
						|
		const { permissionId, label } = permissionData;
 | 
						|
		permissions[permissionId] = permissions[permissionId] || false;
 | 
						|
	
 | 
						|
		// Carica e aggiungi l'elemento dell'autorizzazione alla lista
 | 
						|
		$(".permissions-list").append(`
 | 
						|
			<li class="permissions-element" data-permission="${permissionId}" data-state="${permissions[permissionId]}">
 | 
						|
				<p class="permission-desc">${label}</p>
 | 
						|
				<div class="permission-switches">
 | 
						|
					<div class="permission-switch switch-off" id="off"></div>
 | 
						|
					<div class="permission-seperator"></div>
 | 
						|
					<div class="permission-switch switch-on" id="on"></div>
 | 
						|
				</div>
 | 
						|
			</li>
 | 
						|
		`);
 | 
						|
	});
 | 
						|
	
 | 
						|
	updateStates();
 | 
						|
 | 
						|
	$(".permissions-list").on("click", ".permission-switches", function () {
 | 
						|
		let state = !$(this).closest("li").data("state");
 | 
						|
 | 
						|
		$(this).closest("li").data("state", state);
 | 
						|
 | 
						|
		updateStates();
 | 
						|
	});
 | 
						|
 | 
						|
	div.find("#save-permissions").click(async function () {
 | 
						|
		const newPermissions = {};
 | 
						|
 | 
						|
		$(".permissions-element").each(function () {
 | 
						|
			const permissionId = $(this).data("permission");
 | 
						|
			const state = $(this).data("state");
 | 
						|
 | 
						|
			newPermissions[permissionId] = state;
 | 
						|
		});
 | 
						|
 | 
						|
		await $.post(`https://${resName}/updateEmployeePermissions`, JSON.stringify({ employeeIdentifier: identifier, permissions: newPermissions,dealershipId: CURRENT_DEALERSHIP_ID }));
 | 
						|
		$(".management-page").show();
 | 
						|
		$(".permissions-page").remove();
 | 
						|
	});
 | 
						|
 | 
						|
	function updateStates() {
 | 
						|
		$(".permissions-element").each(function () {
 | 
						|
			const state = $(this).data("state");
 | 
						|
			$(this).find(".permission-switch.switch-on").toggleClass("active", state);
 | 
						|
			$(this).find(".permission-switch.switch-off").toggleClass("active", !state);
 | 
						|
		});
 | 
						|
	}	
 | 
						|
}
 |