diff --git a/src/main/java/com/cardiff/client_project/controller/admin/CommonAdminHospitalController.java b/src/main/java/com/cardiff/client_project/controller/admin/CommonAdminHospitalController.java new file mode 100644 index 0000000000000000000000000000000000000000..52b239dd38ba94d406ddf430497d898b06c22b6a --- /dev/null +++ b/src/main/java/com/cardiff/client_project/controller/admin/CommonAdminHospitalController.java @@ -0,0 +1,40 @@ +package com.cardiff.client_project.controller.admin; + +import com.cardiff.client_project.pojo.dto.HospitalDTO; +import com.cardiff.client_project.service.CommonAdminHospitalService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/commonAdmin/hospital") +public class CommonAdminHospitalController { + + @Autowired + private CommonAdminHospitalService commonAdminHospitalService; + + @GetMapping("/all") + public List<HospitalDTO> getAllHospitals() { + return commonAdminHospitalService.getAllHospitals(); + } + + @PostMapping("/add") + public ResponseEntity<String> addHospital(@RequestBody HospitalDTO hospital) { + commonAdminHospitalService.addHospital(hospital); + return ResponseEntity.ok("Hospital added successfully!"); + } + + @PutMapping("/update") + public ResponseEntity<String> updateHospital(@RequestBody HospitalDTO hospital) { + commonAdminHospitalService.updateHospital(hospital); + return ResponseEntity.ok("Hospital updated successfully!"); + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity<String> deleteHospital(@PathVariable int id) { + commonAdminHospitalService.deleteHospital(id); + return ResponseEntity.ok("Hospital deleted successfully!"); + } +} diff --git a/src/main/resources/static/html/admin.html b/src/main/resources/static/html/admin.html new file mode 100644 index 0000000000000000000000000000000000000000..8c8d95b2f9e79d190bdc99225cb580a811f6d9d5 --- /dev/null +++ b/src/main/resources/static/html/admin.html @@ -0,0 +1,182 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>Hospital Management</title> + <link rel="stylesheet" type="text/css" href="../css/admin.css"> +</head> +<body> +<!-- Left Sidebar Navigation --> +<nav class="sidebar"> + <div class="text-lg font-semibold">System</div> + <a href="#" data-content="hospital">Hospital</a> + <a href="#" data-content="patient">Nursing staff</a> + <a href="#" data-content="logout">LogOut</a> +</nav> + +<!-- Main Content Area --> +<div class="content"> + <div id="dynamic-content"> + <h1>Welcome to the Management System</h1> + <p>Select an option from the sidebar to get started.</p> + </div> +</div> + +<!-- Modal for Adding Hospital --> +<div id="modal"> + <div class="modal-content"> + <h2>Add New Hospital</h2> + <div> + <label for="modal-name">Name</label> + <input type="text" id="modal-name" /> + </div> + <div> + <label for="modal-location">Location</label> + <input type="text" id="modal-location" /> + </div> + <div> + <label for="modal-phone">Phone</label> + <input type="text" id="modal-phone" /> + </div> + <div> + <label for="modal-totalBeds">Total Beds</label> + <input type="number" id="modal-totalBeds" /> + </div> + <div> + <label for="modal-availableBeds">Available Beds</label> + <input type="number" id="modal-availableBeds" /> + </div> + <div class="modal-footer"> + <button id="modal-save">Save</button> + <button id="modal-close">Close</button> + </div> + </div> +</div> + +<script> + document.addEventListener("DOMContentLoaded", function () { + const dynamicContent = document.getElementById("dynamic-content"); + const modal = document.getElementById("modal"); + const modalClose = document.getElementById("modal-close"); + const modalSave = document.getElementById("modal-save"); + + // Fetch hospital data + function loadHospitals(filters = {}) { + const query = new URLSearchParams(filters).toString(); + fetch(`/commonAdmin/hospital/all?${query}`) + .then(response => response.json()) + .then(data => { + const tableBody = document.getElementById("table-body"); + tableBody.innerHTML = ""; + data.forEach(hospital => { + const row = document.createElement("tr"); + row.innerHTML = ` + <td>${hospital.id}</td> + <td>${hospital.name}</td> + <td>${hospital.location}</td> + <td>${hospital.phone}</td> + <td>${hospital.totalBeds}</td> + <td>${hospital.availableBeds}</td> + `; + tableBody.appendChild(row); + }); + }) + .catch(error => console.error('Error loading hospitals:', error)); + } + + // Open modal + function openModal() { + modal.style.display = "block"; + } + + // Close modal + modalClose.addEventListener("click", () => { + modal.style.display = "none"; + }); + + // Save new hospital + modalSave.addEventListener("click", () => { + const name = document.getElementById("modal-name").value; + const location = document.getElementById("modal-location").value; + const phone = document.getElementById("modal-phone").value; + const totalBeds = document.getElementById("modal-totalBeds").value; + const availableBeds = document.getElementById("modal-availableBeds").value; + + const newHospital = { name, location, phone, totalBeds, availableBeds }; + + fetch('/commonAdmin/hospital/add', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(newHospital) + }) + .then(response => response.json()) + .then(() => { + loadHospitals(); // Reload hospital list + modal.style.display = "none"; // Close modal + }) + .catch(error => console.error('Error saving hospital:', error)); + }); + + // Load hospital interface + function loadHospitalInterface() { + dynamicContent.innerHTML = ` + <div id="toolbar"> + <label for="searchName">Name</label> + <input type="text" class="searchBox" id="searchName" placeholder="type name..." /> + <label for="searchLocation">Location</label> + <input type="text" class="searchBox" id="searchLocation" placeholder="type location..." /> + <button id="searchButton">Search</button> + </div> + <div class="table-container"> + <button id="add-btn" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">Add</button> + <table> + <thead> + <tr> + <th>ID</th> + <th>Name</th> + <th>Location</th> + <th>Phone</th> + <th>Total Beds</th> + <th>Available Beds</th> + </tr> + </thead> + <tbody id="table-body"> + <!-- Table content will be dynamically inserted --> + </tbody> + </table> + </div> + `; + + // Add hospital button event + document.getElementById("add-btn").addEventListener("click", openModal); + + // Search button event + document.getElementById("searchButton").addEventListener("click", () => { + const filters = { + name: document.getElementById("searchName").value, + location: document.getElementById("searchLocation").value + }; + loadHospitals(filters); + }); + + // Load hospital data initially + loadHospitals(); + } + + // Sidebar navigation + document.querySelectorAll(".sidebar a").forEach(link => { + link.addEventListener("click", function (event) { + event.preventDefault(); + const contentKey = this.getAttribute("data-content"); + if (contentKey === "hospital") { + loadHospitalInterface(); + } + }); + }); + }); +</script> +</body> +</html>