1 | package edu.gjoko.schedlr.repositories;
|
---|
2 |
|
---|
3 | import edu.gjoko.schedlr.entity.Appointment;
|
---|
4 | import edu.gjoko.schedlr.entity.Stakeholder;
|
---|
5 | import org.springframework.data.jpa.repository.JpaRepository;
|
---|
6 | import org.springframework.data.jpa.repository.Query;
|
---|
7 | import org.springframework.stereotype.Repository;
|
---|
8 |
|
---|
9 | import java.time.LocalDateTime;
|
---|
10 | import java.util.List;
|
---|
11 | import java.util.Optional;
|
---|
12 |
|
---|
13 | @Repository
|
---|
14 | public interface AppointmentRepository extends JpaRepository<Appointment, Long> {
|
---|
15 |
|
---|
16 | @Query(value = "select ap from Appointment as ap " +
|
---|
17 | "where ap.service.business.id = :businessId " +
|
---|
18 | "and ap.appointmentStatus = 'NEW'")
|
---|
19 | List<Appointment> getActiveAppointmentsByBusiness(Long businessId);
|
---|
20 |
|
---|
21 | @Query( value = "select ap from Appointment as ap " +
|
---|
22 | "where ap.service.business.id = :businessId " +
|
---|
23 | "and (" +
|
---|
24 | "(ap.startTime between :startDate and :endDate) " +
|
---|
25 | "or (ap.endTime between :startDate and :endDate) " +
|
---|
26 | "or (:startDate = ap.startTime and ap.startTime = :endDate)" +
|
---|
27 | "or (:startDate > ap.startTime and ap.endTime > :endDate)" +
|
---|
28 | ")")
|
---|
29 | List<Appointment> findBlockingAppointments(Long businessId, LocalDateTime startDate, LocalDateTime endDate);
|
---|
30 |
|
---|
31 | @Query(value = "select ap from Appointment as ap " +
|
---|
32 | "where ap.service.business.owner.id = :businessOwnerId " +
|
---|
33 | "and ap.startTime > :now ")
|
---|
34 | List<Appointment> findFutureAppointmentsByBusinessOwnerId(Long businessOwnerId, LocalDateTime now);
|
---|
35 |
|
---|
36 | @Query(value = "select ap from Appointment as ap " +
|
---|
37 | "where ap.customer.id = :customerId " +
|
---|
38 | "and ap.startTime < :now")
|
---|
39 | List<Appointment> findPastAppointmentsByCustomerId(Long customerId, LocalDateTime now);
|
---|
40 |
|
---|
41 | @Query(value = "select ap from Appointment as ap " +
|
---|
42 | "where ap.service.business.owner.id = :businessOwnerId " +
|
---|
43 | "and ap.startTime < :now ")
|
---|
44 | List<Appointment> findPastAppointmentsByBusinessOwnerId(Long businessOwnerId, LocalDateTime now);
|
---|
45 |
|
---|
46 | @Query(value = "select ap from Appointment as ap " +
|
---|
47 | "where ap.customer.id = :customerId " +
|
---|
48 | "and ap.startTime > :now ")
|
---|
49 | List<Appointment> findFutureAppointmentsByCustomerId(Long customerId, LocalDateTime now);
|
---|
50 |
|
---|
51 | Optional<Appointment> findAppointmentByIdAndCustomer_Id(Long id, Long customerId);
|
---|
52 |
|
---|
53 | Optional<Appointment> findAppointmentByIdAndService_Business_Owner_Id(Long id, Long ownerId);
|
---|
54 | }
|
---|