AdminAppointmentController.java
package com.hospital.portal.controller;
import com.hospital.portal.model.Appointment;
import com.hospital.portal.model.Doctor;
import com.hospital.portal.model.Patient;
import com.hospital.portal.service.AdminAppointmentService;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/admin")
public class AdminAppointmentController {
private static final Logger logger = LogManager.getLogger(AdminAppointmentController.class);
private final AdminAppointmentService adminAppointmentService;
/**
* @brief Constructor of the appointment
*
*
*/
public AdminAppointmentController(AdminAppointmentService adminAppointmentService) {
this.adminAppointmentService = adminAppointmentService;
}
/**
* @brief Creates a new appointment by the admin
*
* @param appointment of the medical citation is going to be created
* @return the created appointment
*/
@PostMapping("/appointments")
public Appointment createAppointment(@RequestBody Appointment appointment) {
logger.info("Admin is creating a new appointment");
return adminAppointmentService.createAppointment(appointment);
}
/**
* @brief Updates an already existing appointment by the admin
*
* @param id of the appointment to be edited
* @param new appointment with the information to be updated
* @return the updated appointment
*/
@PutMapping("/appointments/{appointmentId}")
public Appointment updateAppointment(@PathVariable String appointmentId, @RequestBody Appointment updatedAppointment) {
logger.info("Admin is updating appointment with ID {}", appointmentId);
return adminAppointmentService.updateAppointment(appointmentId, updatedAppointment);
}
/**
* @brief Deletes an appointment by the admin
*
* @param id of the appointment to delete
*/
@DeleteMapping("/appointments/{appointmentId}")
public void deleteAppointment(@PathVariable String appointmentId) {
logger.info("Admin is deleting appointment with ID {}", appointmentId);
adminAppointmentService.deleteAppointment(appointmentId);
}
/**
* @brief Retrieves all the doctors for dropdown
*
*/
@GetMapping("/doctors")
public List<Doctor> getAllDoctors() {
logger.info("Admin requested all doctors for dropdown");
return adminAppointmentService.getAllDoctors();
}
/**
* @brief Retrieves all the patients for dropdown
*
*/
@GetMapping("/patients")
public List<Patient> getAllPatients() {
logger.info("Admin requested all patients for dropdown");
return adminAppointmentService.getAllPatients();
}
/**
* @brief Retrieves all the appointments for dropdown
*
*/
@GetMapping("/appointments")
public List<Appointment> getAllAppointments() {
logger.info("Admin requested all appointments in the system");
return adminAppointmentService.getAllAppointments();
}
}