diff --git a/ServiceCenter/src/main/java/org/example/domain/entity/Car.java b/ServiceCenter/src/main/java/org/example/domain/entity/Car.java index 7fef2d5..4d0d1c5 100644 --- a/ServiceCenter/src/main/java/org/example/domain/entity/Car.java +++ b/ServiceCenter/src/main/java/org/example/domain/entity/Car.java @@ -10,6 +10,7 @@ import java.util.UUID; @Entity public class Car { @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) @@ -21,6 +22,9 @@ public class Car { @Column(nullable = false) private Integer year; + @OneToOne(fetch = FetchType.EAGER) + private User user; + @ManyToMany(fetch = FetchType.EAGER) private List configurations; diff --git a/ServiceCenter/src/main/java/org/example/domain/entity/Configuration.java b/ServiceCenter/src/main/java/org/example/domain/entity/Configuration.java index 39bc959..df675f6 100644 --- a/ServiceCenter/src/main/java/org/example/domain/entity/Configuration.java +++ b/ServiceCenter/src/main/java/org/example/domain/entity/Configuration.java @@ -1,8 +1,10 @@ package org.example.domain.entity; import jakarta.persistence.*; +import jdk.jfr.Timestamp; import lombok.Data; +import java.time.LocalDateTime; import java.util.List; import java.util.UUID; @@ -10,6 +12,7 @@ import java.util.UUID; @Entity public class Configuration { @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) @@ -18,9 +21,16 @@ public class Configuration { @Column(nullable = false) private String description; + @Timestamp + @Column(nullable = false) + private LocalDateTime createdAt; + @OneToOne(fetch = FetchType.EAGER) private User user; @ManyToMany(fetch = FetchType.LAZY, mappedBy = "configurations") private List cars; + + @ManyToMany(fetch = FetchType.LAZY, mappedBy = "configurations") + private List preparationWorks; } diff --git a/ServiceCenter/src/main/java/org/example/domain/entity/Feature.java b/ServiceCenter/src/main/java/org/example/domain/entity/Feature.java index 35e4b8d..27a34fd 100644 --- a/ServiceCenter/src/main/java/org/example/domain/entity/Feature.java +++ b/ServiceCenter/src/main/java/org/example/domain/entity/Feature.java @@ -9,6 +9,7 @@ import java.util.UUID; @Data public class Feature { @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) diff --git a/ServiceCenter/src/main/java/org/example/domain/entity/PreparationWork.java b/ServiceCenter/src/main/java/org/example/domain/entity/PreparationWork.java index 433087e..53a6260 100644 --- a/ServiceCenter/src/main/java/org/example/domain/entity/PreparationWork.java +++ b/ServiceCenter/src/main/java/org/example/domain/entity/PreparationWork.java @@ -10,6 +10,7 @@ import java.util.UUID; @Data public class PreparationWork { @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) diff --git a/ServiceCenter/src/main/java/org/example/domain/entity/Request.java b/ServiceCenter/src/main/java/org/example/domain/entity/Request.java index c12d705..9a63cdb 100644 --- a/ServiceCenter/src/main/java/org/example/domain/entity/Request.java +++ b/ServiceCenter/src/main/java/org/example/domain/entity/Request.java @@ -13,6 +13,7 @@ import java.util.UUID; @Data public class Request { @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Timestamp diff --git a/ServiceCenter/src/main/java/org/example/domain/entity/User.java b/ServiceCenter/src/main/java/org/example/domain/entity/User.java index adac011..d05f20d 100644 --- a/ServiceCenter/src/main/java/org/example/domain/entity/User.java +++ b/ServiceCenter/src/main/java/org/example/domain/entity/User.java @@ -12,6 +12,7 @@ import java.util.UUID; @Table(name = "users") public class User { @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) diff --git a/ServiceCenter/src/main/java/org/example/domain/entity/Wish.java b/ServiceCenter/src/main/java/org/example/domain/entity/Wish.java index 05559af..b5c1d29 100644 --- a/ServiceCenter/src/main/java/org/example/domain/entity/Wish.java +++ b/ServiceCenter/src/main/java/org/example/domain/entity/Wish.java @@ -11,6 +11,7 @@ import java.util.UUID; @Data public class Wish { @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) diff --git a/ServiceCenter/src/main/java/org/example/domain/repositories/ConfigurationRepository.java b/ServiceCenter/src/main/java/org/example/domain/repositories/ConfigurationRepository.java index eab47ae..3f495c4 100644 --- a/ServiceCenter/src/main/java/org/example/domain/repositories/ConfigurationRepository.java +++ b/ServiceCenter/src/main/java/org/example/domain/repositories/ConfigurationRepository.java @@ -1,7 +1,20 @@ package org.example.domain.repositories; import org.example.domain.entity.Configuration; +import org.example.domain.entity.Request; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.time.LocalDate; +import java.util.List; public interface ConfigurationRepository extends JpaRepository { + + @Query("select c from Configuration c " + + "join c.cars car " + + "where (:userId is null or c.user.id = :userid)" + + "and c.user.id = car.user.id " + + "and c.createdAt > :dateFrom " + + "and c.createdAt < :dateFrom") + List findByCreatedAtBetween(LocalDate dateFrom, LocalDate dateTo, Long userId); } diff --git a/ServiceCenter/src/main/java/org/example/domain/repositories/RequestRepository.java b/ServiceCenter/src/main/java/org/example/domain/repositories/RequestRepository.java index 288e3d1..53f887f 100644 --- a/ServiceCenter/src/main/java/org/example/domain/repositories/RequestRepository.java +++ b/ServiceCenter/src/main/java/org/example/domain/repositories/RequestRepository.java @@ -2,10 +2,17 @@ package org.example.domain.repositories; import org.example.domain.entity.Request; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import java.time.LocalDate; import java.util.List; public interface RequestRepository extends JpaRepository { - List findByCreatedAtBetween(LocalDate dateFrom, LocalDate dateTo); + @Query("select r from Request r " + + "join r.preparationWorks p " + + "where (:userId is null or r.user.id = :userid)" + + "and r.user.id = p.user.id " + + "and r.createdAt > :dateFrom " + + "and r.createdAt < :dateFrom") + List findByCreatedAtBetween(LocalDate dateFrom, LocalDate dateTo, Long userId); } diff --git a/ServiceCenter/src/main/java/org/example/managers/ConfigurationManager.java b/ServiceCenter/src/main/java/org/example/managers/ConfigurationManager.java index 5b6f904..f5e0c6d 100644 --- a/ServiceCenter/src/main/java/org/example/managers/ConfigurationManager.java +++ b/ServiceCenter/src/main/java/org/example/managers/ConfigurationManager.java @@ -6,6 +6,8 @@ import org.example.domain.repositories.ConfigurationRepository; import org.example.exceptions.ObjectNotExistsException; import org.springframework.stereotype.Component; +import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.List; @Component @@ -29,4 +31,8 @@ public class ConfigurationManager { public List getAll(){ return configurationRepository.findAll(); } + + public List getAll(LocalDate dateFrom, LocalDate dateTo, Long userId){ + return configurationRepository.findByCreatedAtBetween(dateFrom, dateTo, userId); + } } diff --git a/ServiceCenter/src/main/java/org/example/managers/RequestManager.java b/ServiceCenter/src/main/java/org/example/managers/RequestManager.java index 6382b2a..983cf3e 100644 --- a/ServiceCenter/src/main/java/org/example/managers/RequestManager.java +++ b/ServiceCenter/src/main/java/org/example/managers/RequestManager.java @@ -31,7 +31,7 @@ public class RequestManager { return requestRepository.findAll(); } - public List getAll(LocalDate dateFrom, LocalDate dateTo){ - return requestRepository.findByCreatedAtBetween(dateFrom, dateTo); + public List getAll(LocalDate dateFrom, LocalDate dateTo, Long userId){ + return requestRepository.findByCreatedAtBetween(dateFrom, dateTo, userId); } }