Skip to content
Snippets Groups Projects
Commit e6d5c914 authored by dre0059's avatar dre0059
Browse files

Reservations are ready for use

parent e52e0144
No related merge requests found
......@@ -62,10 +62,15 @@ public class ReservationController {
}
SportsField sportsField = sportsFieldRepository.findById(reservation.getSportsField().getId()).orElse(null);
Coach coach = coachRepository.findById(reservation.getCoach().getId()).orElse(null);
List<SportsEquipment> equipmentList = reservation.getSportsEquipmentList();
//Coach coach = coachRepository.findById(reservation.getCoach().getId()).orElse(null);
Coach coach = reservation.getCoach();
if(coach != null) {
coach = coachRepository.findById(reservation.getCoach().getId()).orElse(null);
}
List<SportsEquipment> equipmentList = reservation.getSportsEquipmentList();
reservation.setCustomer(customer);
reservation.setSportsField(sportsField);
......@@ -75,14 +80,13 @@ public class ReservationController {
StringBuilder errors = new StringBuilder();
boolean isEquipmentAvailable = true; // defaultná hodnota kvoli errorom
boolean isCoachAvailable;
boolean isAvailable = reservationService.isAvailable(
reservation.getSportsField(),
reservation.getFromDateTime(),
reservation.getToDateTime()
);
boolean isCoachAvailable;
if(reservation.getCoach() == null){
isCoachAvailable = true;
} else {
......@@ -93,6 +97,7 @@ public class ReservationController {
);
}
boolean isEquipmentAvailable = true; // defaultná hodnota kvoli errorom
if(reservation.getSportsEquipmentList() == null){
isEquipmentAvailable = true;
......@@ -113,15 +118,15 @@ public class ReservationController {
if (!isAvailable) {
errors.append("Sportsfield is not available in required time.");
//return ResponseEntity.status(HttpStatus.CONFLICT).body("The date is already taken.");
return ResponseEntity.status(HttpStatus.CONFLICT).body("The date is already taken.");
}
if(!isCoachAvailable) {
errors.append("Coach is not available in required time.");
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Coach is not available");
return ResponseEntity.status(HttpStatus.CONFLICT).body("Coach is not available");
}
if(!isEquipmentAvailable) {
errors.append("Equipment is not available in required time.");
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Equipment is not available");
return ResponseEntity.status(HttpStatus.CONFLICT).body("Equipment is not available");
}
if(!errors.isEmpty()){
return ResponseEntity.status(HttpStatus.CONFLICT).body(errors.toString().trim());
......
......@@ -35,13 +35,14 @@ public interface ReservationRepository extends JpaRepository<Reservation, Intege
@Query("SELECT r FROM Reservation r " +
"JOIN r.sportsEquipmentList e " +
"WHERE e.id = :equipmentId " +
"AND ((:fromDateTime BETWEEN r.fromDateTime AND r.toDateTime) OR " +
"(:toDateTime BETWEEN r.fromDateTime AND r.toDateTime) OR " +
"(r.fromDateTime BETWEEN :fromDateTime AND :toDateTime))")
"AND ((:fromTime BETWEEN r.fromDateTime AND r.toDateTime) OR " +
"(:toTime BETWEEN r.fromDateTime AND r.toDateTime) OR " +
"(r.fromDateTime BETWEEN :fromTime AND :toTime))")
List<Reservation> findConflictingReservationForEquipment(
@Param("equipmentId") Long equipmentId,
@Param("fromTime") LocalDateTime fromTime,
@Param("toTime") LocalDateTime toTime
);
}
......@@ -63,7 +63,7 @@ public class ReservationService {
} else
sportsFieldRate = reservation.getSportsField().getHourlyRate();
if(reservation.getCoach().getHourlyRate() == null){
if(reservation.getCoach() == null){
coachRate = 1.0;
} else
coachRate = reservation.getCoach().getHourlyRate();
......
......@@ -60,7 +60,6 @@
<label for="notes">Notes:</label>
<input type="text" class="form-control" id="notes">
</div>
<h5 class="mt-3">Estimated Price: <span id="estimated-price">0.00 €</span></h5>
<button class="btn btn-info" type="submit">Submit Reservation</button>
</form>
......@@ -76,7 +75,8 @@
<th>Sports Field</th>
<th>Client Email</th>
<th>Date & Time</th>
<th>Notes</th>
<th>Coach</th>
<th>Total price (€)</th>
</tr>
</thead>
<tbody id="reservation-list"></tbody>
......@@ -121,13 +121,15 @@
id: input.value
}));
console.log(selectedEquipment);
const data = {
sportsField: { id: fieldId },
customer: { email: email },
fromDateTime,
toDateTime,
notes,
equipment: selectedEquipment.length ? selectedEquipment : undefined,
sportsEquipmentList: selectedEquipment.length ? selectedEquipment : undefined,
coach: trainerId ? { id: trainerId } : undefined
};
......@@ -249,13 +251,15 @@
const response = await fetch('/reservations');
const reservations = await response.json();
const reservationList = document.getElementById('reservation-list');
reservationList.innerHTML = reservations.map(reservation => `
<tr>
<td>${reservation.id}</td>
<td>${reservation.sportsField?.name || 'Unknown'}</td>
<td>${reservation.customer?.email || 'Unknown'}</td>
<td>${new Date(reservation.fromDateTime).toLocaleString()} - ${new Date(reservation.toDateTime).toLocaleString()}</td>
<td>${reservation.notes || 'N/A'}</td>
<td>${reservation.coach.lastName || '--'}</td>
<td>${reservation.totalPrice?.toFixed(2)} €</td>
</tr>
`).join('');
} catch (error) {
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment