source: src/main/java/edu/gjoko/schedlr/repositories/AppointmentRepository.java

Last change on this file was 77205be, checked in by gjoko kostadinov <gjokokostadinov@…>, 6 months ago

Add entire code

  • Property mode set to 100755
File size: 2.4 KB
Line 
1package edu.gjoko.schedlr.repositories;
2
3import edu.gjoko.schedlr.entity.Appointment;
4import edu.gjoko.schedlr.entity.Stakeholder;
5import org.springframework.data.jpa.repository.JpaRepository;
6import org.springframework.data.jpa.repository.Query;
7import org.springframework.stereotype.Repository;
8
9import java.time.LocalDateTime;
10import java.util.List;
11import java.util.Optional;
12
13@Repository
14public 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}
Note: See TracBrowser for help on using the repository browser.