From e02fd21d700a8e9fa8f840e36c6b7cc4634eb691 Mon Sep 17 00:00:00 2001 From: Viltskaa Date: Tue, 16 May 2023 13:53:19 +0400 Subject: [PATCH] complete lab --- pom.xml | 11 +- .../java/com/example/sybd/Dto/ClientDto.java | 24 +++- .../java/com/example/sybd/Dto/IdNameDto.java | 6 + .../java/com/example/sybd/Dto/PostDto.java | 18 ++- .../java/com/example/sybd/Dto/ServiceDto.java | 20 ++- .../com/example/sybd/Dto/ServiceGroupDto.java | 8 ++ .../java/com/example/sybd/Dto/VisitDto.java | 40 ++++++ .../java/com/example/sybd/Dto/WorkerDto.java | 41 ++++++- .../java/com/example/sybd/Random/random.java | 82 ++++++------- .../sybd/controllers/WorkerController.java | 37 ++++-- .../sybd/controllers/genController.java | 69 ----------- .../java/com/example/sybd/models/Client.java | 16 +-- .../java/com/example/sybd/models/Post.java | 15 +-- .../java/com/example/sybd/models/Service.java | 23 +--- .../com/example/sybd/models/ServiceGroup.java | 13 +- .../java/com/example/sybd/models/Visit.java | 26 ++-- .../java/com/example/sybd/models/Worker.java | 24 +--- .../sybd/repository/ClientRepository.java | 4 +- .../sybd/repository/PostRepository.java | 3 +- .../repository/ServiceGroupRepository.java | 3 +- .../sybd/repository/ServiceRepository.java | 5 +- .../sybd/repository/VisitRepository.java | 3 +- .../sybd/repository/WorkerRepository.java | 3 +- .../example/sybd/services/ClientService.java | 2 +- .../sybd/services/GroupServiceService.java | 2 +- .../example/sybd/services/PostService.java | 17 +-- .../sybd/services/ServicesService.java | 15 +-- .../example/sybd/services/VisitService.java | 17 +-- .../example/sybd/services/WorkerService.java | 6 +- .../com/example/sybd/utils/mappingUtils.java | 116 ------------------ src/main/resources/application.properties | 17 +-- .../resources/templates/workerCreate.html | 2 +- src/main/resources/templates/workerMain.html | 6 +- 33 files changed, 296 insertions(+), 398 deletions(-) delete mode 100644 src/main/java/com/example/sybd/controllers/genController.java diff --git a/pom.xml b/pom.xml index 3f576fd..7193aed 100644 --- a/pom.xml +++ b/pom.xml @@ -11,6 +11,7 @@ com.example sybd 0.0.1-SNAPSHOT + pom sybd sybd @@ -21,11 +22,10 @@ org.springframework.boot spring-boot-starter-web - - org.postgresql - postgresql - runtime + org.springframework + spring-context + 4.2.5.RELEASE org.springframework.boot @@ -34,7 +34,7 @@ org.springframework.boot - spring-boot-starter-data-jpa + spring-boot-starter-data-mongodb org.projectlombok @@ -57,7 +57,6 @@ bootstrap 5.2.3 - net.datafaker datafaker diff --git a/src/main/java/com/example/sybd/Dto/ClientDto.java b/src/main/java/com/example/sybd/Dto/ClientDto.java index a550611..df3bac6 100644 --- a/src/main/java/com/example/sybd/Dto/ClientDto.java +++ b/src/main/java/com/example/sybd/Dto/ClientDto.java @@ -1,8 +1,13 @@ package com.example.sybd.Dto; +import com.example.sybd.models.Client; +import com.example.sybd.models.Visit; +import com.example.sybd.services.VisitService; import lombok.Data; +import java.text.MessageFormat; import java.util.List; +import java.util.Objects; @Data public class ClientDto { @@ -12,5 +17,22 @@ public class ClientDto { private String secondName; private String telephone; private String address; - private List visits; + private List visits; + + public static ClientDto create(Client client, VisitService visitService) { + ClientDto clientDto = new ClientDto(); + clientDto.setId(client.getClient_id()); + clientDto.setName(client.getName()); + clientDto.setSecondName(client.getSecondName()); + clientDto.setLastName(client.getLastName()); + clientDto.setAddress(client.getAddress()); + clientDto.setTelephone(client.getTelephone()); + clientDto.visits = visitService.all() + .stream().filter(e -> Objects.equals(e.getClient_id(), clientDto.id)).toList(); + return clientDto; + } + + public String getFio() { + return MessageFormat.format("{0} {1} {2}", secondName, name, lastName); + } } diff --git a/src/main/java/com/example/sybd/Dto/IdNameDto.java b/src/main/java/com/example/sybd/Dto/IdNameDto.java index 61857d2..6f7f902 100644 --- a/src/main/java/com/example/sybd/Dto/IdNameDto.java +++ b/src/main/java/com/example/sybd/Dto/IdNameDto.java @@ -1,9 +1,15 @@ package com.example.sybd.Dto; +import lombok.AllArgsConstructor; import lombok.Data; +@AllArgsConstructor @Data public class IdNameDto { private Long id; private String name; + + public static IdNameDto of(Long id, String name) { + return new IdNameDto(id, name); + } } diff --git a/src/main/java/com/example/sybd/Dto/PostDto.java b/src/main/java/com/example/sybd/Dto/PostDto.java index 85fb236..9d3705b 100644 --- a/src/main/java/com/example/sybd/Dto/PostDto.java +++ b/src/main/java/com/example/sybd/Dto/PostDto.java @@ -1,10 +1,26 @@ package com.example.sybd.Dto; +import com.example.sybd.models.Post; +import com.example.sybd.services.GroupServiceService; import lombok.Data; +import java.util.Objects; + @Data public class PostDto { private Long id; private String name; - private IdNameDto group; + private ServiceGroupDto group; + + public static PostDto create(Post post, GroupServiceService groupServiceService) { + PostDto postDto = new PostDto(); + postDto.setId(post.getPost_id()); + postDto.setName(post.getName()); + postDto.setGroup( + ServiceGroupDto.create( + Objects.requireNonNull(groupServiceService.get(post.getGroup_id())) + ) + ); + return postDto; + } } diff --git a/src/main/java/com/example/sybd/Dto/ServiceDto.java b/src/main/java/com/example/sybd/Dto/ServiceDto.java index da11294..75a4788 100644 --- a/src/main/java/com/example/sybd/Dto/ServiceDto.java +++ b/src/main/java/com/example/sybd/Dto/ServiceDto.java @@ -1,11 +1,29 @@ package com.example.sybd.Dto; +import com.example.sybd.models.Post; +import com.example.sybd.models.Service; +import com.example.sybd.services.GroupServiceService; import lombok.Data; +import java.util.Objects; + @Data public class ServiceDto { private Long id; private String name; - private IdNameDto group; + private ServiceGroupDto group; private Integer cost; + + public static ServiceDto create(Service service, GroupServiceService groupServiceService) { + ServiceDto serviceDto = new ServiceDto(); + serviceDto.setId(service.getServices_id()); + serviceDto.setName(service.getName()); + serviceDto.setCost(service.getCost()); + serviceDto.setGroup( + ServiceGroupDto.create( + Objects.requireNonNull(groupServiceService.get(service.getGroup_id())) + ) + ); + return serviceDto; + } } diff --git a/src/main/java/com/example/sybd/Dto/ServiceGroupDto.java b/src/main/java/com/example/sybd/Dto/ServiceGroupDto.java index a200dee..637041a 100644 --- a/src/main/java/com/example/sybd/Dto/ServiceGroupDto.java +++ b/src/main/java/com/example/sybd/Dto/ServiceGroupDto.java @@ -1,9 +1,17 @@ package com.example.sybd.Dto; +import com.example.sybd.models.ServiceGroup; import lombok.Data; @Data public class ServiceGroupDto { private Long id; private String name; + + public static ServiceGroupDto create(ServiceGroup serviceGroup) { + ServiceGroupDto serviceGroupDto = new ServiceGroupDto(); + serviceGroupDto.setId(serviceGroup.getServicesGroup_id()); + serviceGroupDto.setName(serviceGroup.getName()); + return serviceGroupDto; + } } diff --git a/src/main/java/com/example/sybd/Dto/VisitDto.java b/src/main/java/com/example/sybd/Dto/VisitDto.java index 29777b9..9493bde 100644 --- a/src/main/java/com/example/sybd/Dto/VisitDto.java +++ b/src/main/java/com/example/sybd/Dto/VisitDto.java @@ -1,5 +1,13 @@ package com.example.sybd.Dto; +import com.example.sybd.models.Client; +import com.example.sybd.models.Service; +import com.example.sybd.models.Visit; +import com.example.sybd.models.Worker; +import com.example.sybd.services.ClientService; +import com.example.sybd.services.GroupServiceService; +import com.example.sybd.services.ServicesService; +import com.example.sybd.services.WorkerService; import lombok.Data; import java.sql.Date; @@ -14,4 +22,36 @@ public class VisitDto { private Date date; private Time time; private boolean isEnded; + private Integer cost; + + public static VisitDto create(Visit visit, + ClientService clientService, + WorkerService workerService, + ServicesService servicesService, + GroupServiceService groupServiceService) { + VisitDto visitDto = new VisitDto(); + visitDto.setId(visit.getVisit_id()); + Client client = clientService.get(visit.getClient_id()); + if (client == null) return null; + visitDto.setClient( + IdNameDto.of(client.getClient_id(), client.getFio()) + ); + Worker worker = workerService.get(visit.getWorker_id()); + if (worker == null) return null; + visitDto.setWorker( + IdNameDto.of(worker.getWorker_id(), worker.getFio()) + ); + Service service = servicesService.get(visit.getService_id()); + if (service == null) return null; + visitDto.setService( + ServiceDto.create(service, groupServiceService) + ); + visitDto.setEnded(visit.isEnded()); + visitDto.setDate(visit.getDateVisit()); + visitDto.setTime(visit.getTime()); + visitDto.setCost( + service.getCost() + ); + return visitDto; + } } diff --git a/src/main/java/com/example/sybd/Dto/WorkerDto.java b/src/main/java/com/example/sybd/Dto/WorkerDto.java index c765ed4..81c5d99 100644 --- a/src/main/java/com/example/sybd/Dto/WorkerDto.java +++ b/src/main/java/com/example/sybd/Dto/WorkerDto.java @@ -1,8 +1,16 @@ package com.example.sybd.Dto; +import com.example.sybd.models.Visit; +import com.example.sybd.models.Worker; +import com.example.sybd.services.GroupServiceService; +import com.example.sybd.services.PostService; +import com.example.sybd.services.ServicesService; +import com.example.sybd.services.VisitService; import lombok.Data; +import java.text.MessageFormat; import java.util.List; +import java.util.Objects; @Data public class WorkerDto { @@ -13,5 +21,36 @@ public class WorkerDto { private String telephone; private String address; private PostDto post; - private List visits; + private List visits; + private Integer money; + + public static WorkerDto create(Worker worker, + VisitService visitService, + PostService postService, + ServicesService servicesService, + GroupServiceService groupServiceService) { + WorkerDto workerDto = new WorkerDto(); + workerDto.setId(worker.getWorker_id()); + workerDto.setName(worker.getName()); + workerDto.setSecondName(worker.getSecondName()); + workerDto.setLastName(worker.getLastName()); + workerDto.setAddress(worker.getAddress()); + workerDto.setTelephone(worker.getTelephone()); + workerDto.visits = visitService.all() + .stream().filter(e -> Objects.equals(e.getWorker_id(), workerDto.id)).toList(); + workerDto.money = servicesService.all() + .stream().filter(e -> workerDto.visits.stream().map(Visit::getService_id).toList().contains(e.getServices_id())) + .reduce(0, (cost, e) -> cost + e.getCost(), Integer::sum); + workerDto.setPost( + PostDto.create( + Objects.requireNonNull(postService.get(worker.getPost_id())), + groupServiceService + ) + ); + return workerDto; + } + + public String getFio() { + return MessageFormat.format("{0} {1} {2}", secondName, name, lastName); + } } diff --git a/src/main/java/com/example/sybd/Random/random.java b/src/main/java/com/example/sybd/Random/random.java index 659ffb9..5f7d8a2 100644 --- a/src/main/java/com/example/sybd/Random/random.java +++ b/src/main/java/com/example/sybd/Random/random.java @@ -10,45 +10,45 @@ import java.time.LocalTime; import java.util.List; public class random { - private static final Faker faker = new Faker(); - - public static Client getPerson() { - String tel = faker.phoneNumber() - .phoneNumberInternational() - .replace("-", "") - .replace(" ", "") - .substring(0, 11); - String address = faker.address().streetAddress(); - Client client = new Client(); - client.setName(faker.name().firstName()); - client.setSecondName(faker.name().lastName()); - client.setLastName("-"); - client.setTelephone(tel); - client.setAddress(address); - return client; - } - - public static Integer getNumber(Integer min, Integer max) { - return faker.number().numberBetween(min, max); - } - - public static Visit getVisit(List clientList, - List workerList, - List serviceList) { - Service service = serviceList.get(faker.number().numberBetween(0, serviceList.size())); - var workers = workerList.stream() - .filter((elem) -> elem.getPost().getGroup() == service.getGroup()).toList(); - Worker worker = workers.get(faker.number().numberBetween(0, workers.size() - 1)); - Client client = clientList.get(faker.number().numberBetween(0, clientList.size())); - Visit visit = new Visit(); - visit.setClient(client); - visit.setService(service); - visit.setWorker(worker); - visit.setDateVisit(Date.valueOf(LocalDate.now().minusDays(faker.number().numberBetween(0, 30)))); - visit.setTime(Time.valueOf(LocalTime.now() - .minusHours(faker.number().numberBetween(0, 6)) - .minusMinutes(faker.number().numberBetween(0, 5) * 10L) - )); - return visit; - } +// private static final Faker faker = new Faker(); +// +// public static Client getPerson() { +// String tel = faker.phoneNumber() +// .phoneNumberInternational() +// .replace("-", "") +// .replace(" ", "") +// .substring(0, 11); +// String address = faker.address().streetAddress(); +// Client client = new Client(); +// client.setName(faker.name().firstName()); +// client.setSecondName(faker.name().lastName()); +// client.setLastName("-"); +// client.setTelephone(tel); +// client.setAddress(address); +// return client; +// } +// +// public static Integer getNumber(Integer min, Integer max) { +// return faker.number().numberBetween(min, max); +// } +// +// public static Visit getVisit(List clientList, +// List workerList, +// List serviceList) { +// Service service = serviceList.get(faker.number().numberBetween(0, serviceList.size())); +// var workers = workerList.stream() +// .filter((elem) -> elem.getPost().getGroup() == service.getGroup()).toList(); +// Worker worker = workers.get(faker.number().numberBetween(0, workers.size() - 1)); +// Client client = clientList.get(faker.number().numberBetween(0, clientList.size())); +// Visit visit = new Visit(); +// visit.setClient(client); +// visit.setService(service); +// visit.setWorker(worker); +// visit.setDateVisit(Date.valueOf(LocalDate.now().minusDays(faker.number().numberBetween(0, 30)))); +// visit.setTime(Time.valueOf(LocalTime.now() +// .minusHours(faker.number().numberBetween(0, 6)) +// .minusMinutes(faker.number().numberBetween(0, 5) * 10L) +// )); +// return visit; +// } } diff --git a/src/main/java/com/example/sybd/controllers/WorkerController.java b/src/main/java/com/example/sybd/controllers/WorkerController.java index f5566f2..edc2a4e 100644 --- a/src/main/java/com/example/sybd/controllers/WorkerController.java +++ b/src/main/java/com/example/sybd/controllers/WorkerController.java @@ -1,5 +1,6 @@ package com.example.sybd.controllers; +import com.example.sybd.Dto.*; import com.example.sybd.services.*; import com.example.sybd.utils.mappingUtils; import org.springframework.stereotype.Controller; @@ -34,15 +35,19 @@ public class WorkerController { @GetMapping("/") public String main(Model model) { - model.addAttribute("visits", visitService.all()); + model.addAttribute("visits", visitService.all() + .stream().map(e -> VisitDto.create(e, clientService, workerService, servicesService, groupServiceService)).toList()); return "workerMain"; } @GetMapping("/create") public String create(Model model) { - model.addAttribute("clients", clientService.all()); - model.addAttribute("workers", workerService.all()); - model.addAttribute("services", servicesService.all()); + model.addAttribute("clients", clientService.all() + .stream().map(e -> ClientDto.create(e, visitService)).toList()); + model.addAttribute("workers", workerService.all() + .stream().map(e -> WorkerDto.create(e, visitService, postService, servicesService, groupServiceService)).toList()); + model.addAttribute("services", servicesService.all() + .stream().map(e -> ServiceDto.create(e, groupServiceService)).toList()); return "workerCreate"; } @@ -53,9 +58,12 @@ public class WorkerController { String date, String time, Model model) { - model.addAttribute("visits", visitService.all()); - model.addAttribute("workers", workerService.all()); - model.addAttribute("services", servicesService.all()); + model.addAttribute("visits", visitService.all() + .stream().map(e -> VisitDto.create(e, clientService, workerService, servicesService, groupServiceService)).toList()); + model.addAttribute("workers", workerService.all() + .stream().map(e -> WorkerDto.create(e, visitService, postService, servicesService, groupServiceService)).toList()); + model.addAttribute("services", servicesService.all() + .stream().map(e -> ServiceDto.create(e, groupServiceService)).toList()); visitService.create( client, service, @@ -69,7 +77,8 @@ public class WorkerController { @GetMapping("/service") public String services(Model model) { - model.addAttribute("services", servicesService.all()); + model.addAttribute("services", servicesService.all() + .stream().map(e -> ServiceDto.create(e, groupServiceService)).toList()); return "workerServices"; } @@ -80,25 +89,29 @@ public class WorkerController { @GetMapping("/serviceGroup") public String serviceGroups(Model model) { - model.addAttribute("serviceGroups", groupServiceService.all()); + model.addAttribute("serviceGroups", groupServiceService.all() + .stream().map(ServiceGroupDto::create).toList()); return "workerServiceGroup"; } @GetMapping("/users") public String users(Model model) { - model.addAttribute("users", clientService.all()); + model.addAttribute("users", clientService.all() + .stream().map(e -> ClientDto.create(e, visitService)).toList()); return "workerUsers"; } @GetMapping("/workers") public String workers(Model model) { - model.addAttribute("workers", workerService.all()); + model.addAttribute("workers", workerService.all() + .stream().map(e -> WorkerDto.create(e, visitService, postService, servicesService, groupServiceService)).toList()); return "workers"; } @GetMapping("/posts") public String posts(Model model) { - model.addAttribute("posts", postService.all()); + model.addAttribute("posts", postService.all() + .stream().map(e -> PostDto.create(e, groupServiceService)).toList()); return "workerPost"; } } diff --git a/src/main/java/com/example/sybd/controllers/genController.java b/src/main/java/com/example/sybd/controllers/genController.java deleted file mode 100644 index 5ca6d5d..0000000 --- a/src/main/java/com/example/sybd/controllers/genController.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.example.sybd.controllers; - -import com.example.sybd.Random.random; -import com.example.sybd.models.Client; -import com.example.sybd.models.Visit; -import com.example.sybd.services.ClientService; -import com.example.sybd.services.ServicesService; -import com.example.sybd.services.VisitService; -import com.example.sybd.services.WorkerService; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -@RequestMapping("/g") -@RestController -public class genController { - private final ClientService clientService; - private final WorkerService workerService; - private final ServicesService servicesService; - private final VisitService visitService; - - public genController(ClientService clientService, - WorkerService workerService, - ServicesService servicesService, - VisitService visitService) { - this.clientService = clientService; - this.workerService = workerService; - this.servicesService = servicesService; - this.visitService = visitService; - } - - @GetMapping("/") - public void generateBd() { - for (int i = 0; i < 10; i++) { - Client client = random.getPerson(); - clientService.create( - client.getName(), - client.getSecondName(), - client.getLastName(), - client.getTelephone(), - client.getAddress() - ); - Client worker = random.getPerson(); - workerService.create( - worker.getName(), - worker.getSecondName(), - worker.getLastName(), - worker.getTelephone(), - worker.getAddress(), - Long.valueOf(random.getNumber(1, 8)) - ); - } - for (int i = 0; i < 100; i++) { - Visit visit = random.getVisit( - clientService.all(), - workerService.all(), - servicesService.all() - ); - visitService.create( - visit.getClient().getId(), - visit.getService().getId(), - visit.getWorker().getId(), - visit.getDateVisit(), - visit.getTime(), - random.getNumber(0, 3) == 2 - ); - } - } -} diff --git a/src/main/java/com/example/sybd/models/Client.java b/src/main/java/com/example/sybd/models/Client.java index 066d0e6..cbf0c5f 100644 --- a/src/main/java/com/example/sybd/models/Client.java +++ b/src/main/java/com/example/sybd/models/Client.java @@ -1,32 +1,24 @@ package com.example.sybd.models; -import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; -import org.hibernate.mapping.Set; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; import java.text.MessageFormat; -import java.util.Collection; @Getter @Setter -@Entity -@Table( name = "client" ) +@Document(collation = "client") public class Client { @Id - @GeneratedValue( strategy = GenerationType.AUTO ) - @Column( name = "id", nullable = false ) - private Long id; - + private Long client_id; private String name; private String lastName; private String secondName; private String telephone; private String address; - @OneToMany( mappedBy = "client" ) - private Collection visits; - public String getFio() { return MessageFormat.format("{0} {1} {2}", secondName, name, lastName); } diff --git a/src/main/java/com/example/sybd/models/Post.java b/src/main/java/com/example/sybd/models/Post.java index 9a0dae0..3115f56 100644 --- a/src/main/java/com/example/sybd/models/Post.java +++ b/src/main/java/com/example/sybd/models/Post.java @@ -1,21 +1,16 @@ package com.example.sybd.models; -import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; @Getter @Setter -@Entity -@Table( name = "post" ) +@Document(collation = "post") public class Post { @Id - @GeneratedValue( strategy = GenerationType.AUTO ) - @Column( name = "id", nullable = false ) - private Long id; - + private Long post_id; private String name; - @ManyToOne - @JoinColumn( name = "group_id" ) - private ServiceGroup group; + private Long group_id; } \ No newline at end of file diff --git a/src/main/java/com/example/sybd/models/Service.java b/src/main/java/com/example/sybd/models/Service.java index a769d57..2434a65 100644 --- a/src/main/java/com/example/sybd/models/Service.java +++ b/src/main/java/com/example/sybd/models/Service.java @@ -1,32 +1,17 @@ package com.example.sybd.models; -import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; - -import java.util.Collection; +import org.springframework.data.mongodb.core.mapping.Document; @Getter @Setter -@Entity -@Table( name = "services" ) +@Document( collation = "services" ) public class Service { - @Id - @GeneratedValue( strategy = GenerationType.AUTO ) - @Column( name = "id", nullable = false ) - private Long id; - + private Long services_id; private String name; - @ManyToOne - @JoinColumn( name = "group_id" ) - private ServiceGroup group; + private Long group_id; private Integer cost; - @OneToMany( mappedBy = "service" ) - private Collection visit; - - public void setVisit(Collection visit) { - this.visit = visit; - } public String getInfo() { return String.format("%s %d$", name, cost); diff --git a/src/main/java/com/example/sybd/models/ServiceGroup.java b/src/main/java/com/example/sybd/models/ServiceGroup.java index 774ec4e..3ec15e6 100644 --- a/src/main/java/com/example/sybd/models/ServiceGroup.java +++ b/src/main/java/com/example/sybd/models/ServiceGroup.java @@ -1,22 +1,17 @@ package com.example.sybd.models; -import jakarta.persistence.*; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; @NoArgsConstructor @Getter @Setter -@Entity -@Table( name = "services_group" ) -@Inheritance( strategy = InheritanceType.SINGLE_TABLE ) +@Document(collation = "services_group") public class ServiceGroup { @Id - @GeneratedValue( strategy = GenerationType.AUTO ) - @Column( name = "id", nullable = false ) - private Long id; - - @Column( name = "name" ) + private Long servicesGroup_id; private String name; } \ No newline at end of file diff --git a/src/main/java/com/example/sybd/models/Visit.java b/src/main/java/com/example/sybd/models/Visit.java index 4776a9a..e3ea846 100644 --- a/src/main/java/com/example/sybd/models/Visit.java +++ b/src/main/java/com/example/sybd/models/Visit.java @@ -1,34 +1,22 @@ package com.example.sybd.models; -import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; import java.sql.Date; import java.sql.Time; @Getter @Setter -@Entity -@Table( name = "visit" ) +@Document(collation = "visit") public class Visit { @Id - @GeneratedValue( strategy = GenerationType.AUTO ) - @Column( name = "id", nullable = false ) - private Long id; - - @ManyToOne - @JoinColumn( name = "client_id" ) - private Client client; - - @ManyToOne - @JoinColumn( name = "service_id" ) - private Service service; - - @ManyToOne - @JoinColumn( name = "worker_id" ) - private Worker worker; - + private Long visit_id; + private Long client_id; + private Long service_id; + private Long worker_id; private Date dateVisit; private Time time; private boolean isEnded; diff --git a/src/main/java/com/example/sybd/models/Worker.java b/src/main/java/com/example/sybd/models/Worker.java index 7dab48c..7ae776e 100644 --- a/src/main/java/com/example/sybd/models/Worker.java +++ b/src/main/java/com/example/sybd/models/Worker.java @@ -1,42 +1,28 @@ package com.example.sybd.models; -import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; import java.text.MessageFormat; import java.util.Collection; @Getter @Setter -@Entity -@Table( name = "worker" ) +@Document(collation = "worker") public class Worker { @Id - @GeneratedValue( strategy = GenerationType.AUTO ) - @Column( name = "id", nullable = false ) - private Long id; - + private Long worker_id; private String name; private String lastName; private String secondName; private String telephone; private String address; - - @ManyToOne - @JoinColumn( name = "post_id" ) - private Post post; - - @OneToMany( mappedBy = "worker" ) + private Long post_id; private Collection visits; public String getFio() { return MessageFormat.format("{0} {1} {2}", secondName, name, lastName); } - public Integer getMoney() { - return visits - .stream() - .filter(Visit::isEnded) - .reduce(0, (cost, element) -> cost + element.getService().getCost(), Integer::sum); - } } \ No newline at end of file diff --git a/src/main/java/com/example/sybd/repository/ClientRepository.java b/src/main/java/com/example/sybd/repository/ClientRepository.java index a2357c2..746f40e 100644 --- a/src/main/java/com/example/sybd/repository/ClientRepository.java +++ b/src/main/java/com/example/sybd/repository/ClientRepository.java @@ -1,7 +1,7 @@ package com.example.sybd.repository; import com.example.sybd.models.Client; -import org.springframework.data.repository.CrudRepository; +import org.springframework.data.mongodb.repository.MongoRepository; -public interface ClientRepository extends CrudRepository { +public interface ClientRepository extends MongoRepository { } \ No newline at end of file diff --git a/src/main/java/com/example/sybd/repository/PostRepository.java b/src/main/java/com/example/sybd/repository/PostRepository.java index edd4e47..b56372e 100644 --- a/src/main/java/com/example/sybd/repository/PostRepository.java +++ b/src/main/java/com/example/sybd/repository/PostRepository.java @@ -1,7 +1,8 @@ package com.example.sybd.repository; import com.example.sybd.models.Post; +import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.repository.CrudRepository; -public interface PostRepository extends CrudRepository { +public interface PostRepository extends MongoRepository { } \ No newline at end of file diff --git a/src/main/java/com/example/sybd/repository/ServiceGroupRepository.java b/src/main/java/com/example/sybd/repository/ServiceGroupRepository.java index 02b455f..2ffd058 100644 --- a/src/main/java/com/example/sybd/repository/ServiceGroupRepository.java +++ b/src/main/java/com/example/sybd/repository/ServiceGroupRepository.java @@ -1,9 +1,10 @@ package com.example.sybd.repository; import com.example.sybd.models.ServiceGroup; +import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; @Repository -public interface ServiceGroupRepository extends CrudRepository { +public interface ServiceGroupRepository extends MongoRepository { } diff --git a/src/main/java/com/example/sybd/repository/ServiceRepository.java b/src/main/java/com/example/sybd/repository/ServiceRepository.java index f789403..1695f46 100644 --- a/src/main/java/com/example/sybd/repository/ServiceRepository.java +++ b/src/main/java/com/example/sybd/repository/ServiceRepository.java @@ -1,10 +1,9 @@ package com.example.sybd.repository; import com.example.sybd.models.Service; -import org.springframework.data.jpa.repository.JpaSpecificationExecutor; -import org.springframework.data.repository.CrudRepository; +import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.stereotype.Repository; @Repository -public interface ServiceRepository extends CrudRepository { +public interface ServiceRepository extends MongoRepository { } \ No newline at end of file diff --git a/src/main/java/com/example/sybd/repository/VisitRepository.java b/src/main/java/com/example/sybd/repository/VisitRepository.java index 8c1732d..69115c8 100644 --- a/src/main/java/com/example/sybd/repository/VisitRepository.java +++ b/src/main/java/com/example/sybd/repository/VisitRepository.java @@ -1,7 +1,8 @@ package com.example.sybd.repository; import com.example.sybd.models.Visit; +import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.repository.CrudRepository; -public interface VisitRepository extends CrudRepository { +public interface VisitRepository extends MongoRepository { } \ No newline at end of file diff --git a/src/main/java/com/example/sybd/repository/WorkerRepository.java b/src/main/java/com/example/sybd/repository/WorkerRepository.java index 33b9acd..fffdeb8 100644 --- a/src/main/java/com/example/sybd/repository/WorkerRepository.java +++ b/src/main/java/com/example/sybd/repository/WorkerRepository.java @@ -1,11 +1,12 @@ package com.example.sybd.repository; import com.example.sybd.models.Worker; +import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.repository.CrudRepository; import java.util.List; import java.util.Optional; -public interface WorkerRepository extends CrudRepository { +public interface WorkerRepository extends MongoRepository { List findAllByPostId(Long id); } \ No newline at end of file diff --git a/src/main/java/com/example/sybd/services/ClientService.java b/src/main/java/com/example/sybd/services/ClientService.java index f607e28..12f0dce 100644 --- a/src/main/java/com/example/sybd/services/ClientService.java +++ b/src/main/java/com/example/sybd/services/ClientService.java @@ -52,7 +52,7 @@ public class ClientService implements IService { @Override public @Nullable Client update(Client other) { - Client client = clientRepository.findById(other.getId()).orElse(null); + Client client = clientRepository.findById(other.getClient_id()).orElse(null); if (client == null) return null; client.setName(other.getName()); diff --git a/src/main/java/com/example/sybd/services/GroupServiceService.java b/src/main/java/com/example/sybd/services/GroupServiceService.java index 0dc9864..f905c8a 100644 --- a/src/main/java/com/example/sybd/services/GroupServiceService.java +++ b/src/main/java/com/example/sybd/services/GroupServiceService.java @@ -44,7 +44,7 @@ public class GroupServiceService implements IService { @Override public @Nullable ServiceGroup update(ServiceGroup other) { - ServiceGroup serviceGroup = serviceGroupRepository.findById(other.getId()).orElse(null); + ServiceGroup serviceGroup = serviceGroupRepository.findById(other.getServicesGroup_id()).orElse(null); if (serviceGroup == null) return null; diff --git a/src/main/java/com/example/sybd/services/PostService.java b/src/main/java/com/example/sybd/services/PostService.java index ef6a707..b34333d 100644 --- a/src/main/java/com/example/sybd/services/PostService.java +++ b/src/main/java/com/example/sybd/services/PostService.java @@ -13,22 +13,15 @@ import java.util.List; @Service public class PostService implements IService { private final PostRepository postRepository; - private final GroupServiceService groupServiceService; - public PostService(PostRepository postRepository, GroupServiceService groupServiceService) { + public PostService(PostRepository postRepository) { this.postRepository = postRepository; - this.groupServiceService = groupServiceService; } public Post create(@NotNull String name, @NotNull Long group_id) { - ServiceGroup serviceGroup = groupServiceService.get(group_id); - if (serviceGroup == null) - return null; - Post out = new Post(); out.setName(name); - out.setGroup(serviceGroup); - + out.setGroup_id(group_id); return postRepository.save(out); } @@ -52,13 +45,13 @@ public class PostService implements IService { @Override public @Nullable Post update(Post other) { - Post post = postRepository.findById(other.getId()).orElse(null); + Post post = postRepository.findById(other.getPost_id()).orElse(null); if (post == null) return null; if (other.getName() != null) post.setName(other.getName()); - if (other.getGroup() != null) - post.setGroup(other.getGroup()); + if (other.getGroup_id() != null) + post.setGroup_id(other.getGroup_id()); return postRepository.save(post); } diff --git a/src/main/java/com/example/sybd/services/ServicesService.java b/src/main/java/com/example/sybd/services/ServicesService.java index 00cb317..cc0a4e9 100644 --- a/src/main/java/com/example/sybd/services/ServicesService.java +++ b/src/main/java/com/example/sybd/services/ServicesService.java @@ -12,23 +12,16 @@ import java.util.List; @org.springframework.stereotype.Service public class ServicesService implements IService { private final ServiceRepository serviceRepository; - private final GroupServiceService groupServiceService; - public ServicesService(ServiceRepository serviceRepository, GroupServiceService groupServiceService) { + public ServicesService(ServiceRepository serviceRepository) { this.serviceRepository = serviceRepository; - this.groupServiceService = groupServiceService; } public Service create(@NotNull String name, @NotNull Integer cost, @NotNull Long group_id) { - ServiceGroup serviceGroup = groupServiceService.get(group_id); - if (serviceGroup == null) - return null; - Service service = new Service(); service.setName(name); service.setCost(cost); - service.setGroup(serviceGroup); - + service.setGroup_id(group_id); return serviceRepository.save(service); } @@ -53,13 +46,13 @@ public class ServicesService implements IService { @Override public @Nullable Service update(Service other) { - Service service = serviceRepository.findById(other.getId()).orElse(null); + Service service = serviceRepository.findById(other.getServices_id()).orElse(null); if (service == null) return null; service.setName(other.getName()); service.setCost(other.getCost()); - service.setGroup(other.getGroup()); + service.setGroup_id(other.getGroup_id()); return serviceRepository.save(service); } diff --git a/src/main/java/com/example/sybd/services/VisitService.java b/src/main/java/com/example/sybd/services/VisitService.java index caf3c2f..06d27f1 100644 --- a/src/main/java/com/example/sybd/services/VisitService.java +++ b/src/main/java/com/example/sybd/services/VisitService.java @@ -37,19 +37,10 @@ public class VisitService implements IService { @NotNull Date date, @NotNull Time time, @NotNull Boolean isEnd) { - Client client = clientService.get(client_id); - if (client == null) - return null; - Service service = servicesService.get(service_id); - if (service == null) - return null; - Worker worker = workerService.get(worker_id); - if (worker == null) - return null; Visit visit = new Visit(); - visit.setClient(client); - visit.setService(service); - visit.setWorker(worker); + visit.setClient_id(client_id); + visit.setService_id(service_id); + visit.setWorker_id(worker_id); visit.setDateVisit(date); visit.setTime(time); visit.setEnded(isEnd); @@ -79,7 +70,7 @@ public class VisitService implements IService { @Override public @Nullable Visit update(Visit other) { - Visit visit = visitRepository.findById(other.getId()).orElse(null); + Visit visit = visitRepository.findById(other.getVisit_id()).orElse(null); if (visit == null) return null; diff --git a/src/main/java/com/example/sybd/services/WorkerService.java b/src/main/java/com/example/sybd/services/WorkerService.java index 9c8189b..ca8c6e5 100644 --- a/src/main/java/com/example/sybd/services/WorkerService.java +++ b/src/main/java/com/example/sybd/services/WorkerService.java @@ -27,21 +27,19 @@ public class WorkerService implements IService { @NotNull String telephone, @NotNull String address, @NotNull Long post_id) { - Post post = postService.get(post_id); - if (post == null) return null; Worker out = new Worker(); out.setName(name); out.setSecondName(secondName); out.setLastName(lastName); out.setTelephone(telephone); out.setAddress(address); - out.setPost(post); + out.setPost_id(post_id); return workerRepository.save(out); } @Override public @NotNull List all() { - return StreamSupport.stream(workerRepository.findAll().spliterator(), false).toList(); + return workerRepository.findAll().stream().toList(); } @Override diff --git a/src/main/java/com/example/sybd/utils/mappingUtils.java b/src/main/java/com/example/sybd/utils/mappingUtils.java index 2a3cbe8..2d9a945 100644 --- a/src/main/java/com/example/sybd/utils/mappingUtils.java +++ b/src/main/java/com/example/sybd/utils/mappingUtils.java @@ -16,122 +16,6 @@ public class mappingUtils { public static List iterableToList(Iterable iterable) { return StreamSupport.stream(iterable.spliterator(), false).toList(); } - public static ClientDto clientDto(Client client) { - ClientDto clientDto = new ClientDto(); - clientDto.setName(client.getName()); - clientDto.setId(client.getId()); - clientDto.setAddress(client.getAddress()); - clientDto.setSecondName(client.getSecondName()); - clientDto.setLastName(client.getLastName()); - clientDto.setTelephone(client.getTelephone()); - clientDto.setVisits(client.getVisits().stream().map(Visit::getId).toList()); - return clientDto; - } - public static IdNameDto idNameDto(Long id, String name) { - IdNameDto idNameDto = new IdNameDto(); - idNameDto.setId(id); - idNameDto.setName(name); - return idNameDto; - } - public static PostDto postDto(Post post) { - PostDto postDto = new PostDto(); - postDto.setId(post.getId()); - postDto.setName(post.getName()); - postDto.setGroup( - idNameDto(post.getGroup().getId(), post.getGroup().getName()) - ); - return postDto; - } - public static ServiceDto serviceDto(Service service) { - ServiceDto serviceDto = new ServiceDto(); - serviceDto.setCost(service.getCost()); - serviceDto.setId(service.getId()); - serviceDto.setName(service.getName()); - serviceDto.setGroup( - idNameDto(service.getGroup().getId(), service.getGroup().getName()) - ); - return serviceDto; - } - public static ServiceGroupDto serviceGroupDto(ServiceGroup serviceGroup) { - ServiceGroupDto serviceGroupDto = new ServiceGroupDto(); - serviceGroupDto.setId(serviceGroup.getId()); - serviceGroupDto.setName(serviceGroup.getName()); - return serviceGroupDto; - } - public static VisitDto visitDto(Visit visit) { - VisitDto visitDto = new VisitDto(); - visitDto.setId(visit.getId()); - visitDto.setDate(visit.getDateVisit()); - visitDto.setTime(visit.getTime()); - visitDto.setService(serviceDto(visit.getService())); - visitDto.setEnded(visit.isEnded()); - visitDto.setClient( - idNameDto(visit.getClient().getId(), visit.getClient().getFio()) - ); - visitDto.setWorker( - idNameDto(visit.getWorker().getId(), visit.getWorker().getFio()) - ); - return visitDto; - } - public static WorkerDto workerDto(Worker worker) { - WorkerDto workerDto = new WorkerDto(); - workerDto.setName(worker.getName()); - workerDto.setPost(postDto(worker.getPost())); - workerDto.setId(worker.getId()); - workerDto.setAddress(worker.getAddress()); - workerDto.setSecondName(worker.getSecondName()); - workerDto.setLastName(worker.getLastName()); - workerDto.setTelephone(worker.getTelephone()); - workerDto.setVisits(worker.getVisits().stream().map(Visit::getId).toList()); - return workerDto; - } - public static Client client(ClientDto clientDto) { - Client client = new Client(); - client.setName(clientDto.getName()); - client.setId(clientDto.getId()); - client.setAddress(clientDto.getAddress()); - client.setSecondName(clientDto.getSecondName()); - client.setLastName(clientDto.getLastName()); - client.setTelephone(clientDto.getTelephone()); - return client; - } - public static Post post(PostDto postDto) { - Post post = new Post(); - post.setId(postDto.getId()); - post.setName(postDto.getName()); - return post; - } - public static Service service(ServiceDto serviceDto) { - Service service = new Service(); - service.setCost(serviceDto.getCost()); - service.setId(serviceDto.getId()); - service.setName(serviceDto.getName()); - return service; - } - public static ServiceGroup serviceGroup(ServiceGroupDto serviceGroupDto) { - ServiceGroup serviceGroup = new ServiceGroup(); - serviceGroup.setId(serviceGroupDto.getId()); - serviceGroup.setName(serviceGroupDto.getName()); - return serviceGroup; - } - public static Visit visit(VisitDto visitDto) { - Visit visit = new Visit(); - visit.setId(visitDto.getId()); - visit.setDateVisit(visitDto.getDate()); - visit.setTime(visitDto.getTime()); - visit.setEnded(visit.isEnded()); - return visit; - } - public static Worker worker(WorkerDto workerDto) { - Worker worker = new Worker(); - worker.setName(workerDto.getName()); - worker.setId(workerDto.getId()); - worker.setAddress(workerDto.getAddress()); - worker.setSecondName(workerDto.getSecondName()); - worker.setLastName(workerDto.getLastName()); - worker.setTelephone(workerDto.getTelephone()); - return worker; - } public static Date strToDate(@NotNull String date) { return Date.valueOf(LocalDate.parse(date, DateTimeFormatter.ofPattern("dd-MM-yyyy"))); } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 9e281c2..bb953c6 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -8,11 +8,14 @@ spring.thymeleaf.cache=false -spring.datasource.url=jdbc:postgresql://localhost:6666/beautySaloon -spring.datasource.username=postgres -spring.datasource.password=w12344321 +#spring.datasource.url=jdbc:postgresql://localhost:6666/beautySaloon +#spring.datasource.username=postgres +#spring.datasource.password=w12344321 +# +#spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect +#spring.datasource.driver-class-name=org.postgresql.Driver +#spring.jpa.hibernate.ddl-auto=update +#spring.jpa.properties.hibernate.globally_quoted_identifiers=true -spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect -spring.datasource.driver-class-name=org.postgresql.Driver -spring.jpa.hibernate.ddl-auto=update -spring.jpa.properties.hibernate.globally_quoted_identifiers=true \ No newline at end of file +spring.datasource.url="mongodb://localhost:27017/lab7" +spring.jpa.hibernate.ddl-auto=validate diff --git a/src/main/resources/templates/workerCreate.html b/src/main/resources/templates/workerCreate.html index 4f8fb9b..b71e765 100644 --- a/src/main/resources/templates/workerCreate.html +++ b/src/main/resources/templates/workerCreate.html @@ -20,7 +20,7 @@