From b2d508a0dcd49ec7d099fd7ffdad004165562896 Mon Sep 17 00:00:00 2001 From: esoe Date: Wed, 24 Apr 2024 16:11:14 +0300 Subject: [PATCH] program-cretareas done! --- .../ProgramCretareaController.java | 145 ++++++++++++++++++ .../entities/ProgramCretarea.java | 28 ++++ .../services/TeacherService.java | 22 --- .../templates/program-cretarea-add.html | 37 +++++ .../templates/program-cretarea-edit.html | 37 +++++ .../templates/program-cretareas.html | 59 +++++++ .../main/resources/templates/teachers.html | 4 +- .../ProgramCretareaController.java | 2 +- .../main/resources/static/content/md/hello.md | 32 +++- 9 files changed, 339 insertions(+), 27 deletions(-) create mode 100644 client-service-teachers/src/main/java/ru/molokoin/clientserviceteachers/controllers/ProgramCretareaController.java create mode 100644 client-service-teachers/src/main/java/ru/molokoin/clientserviceteachers/entities/ProgramCretarea.java delete mode 100644 client-service-teachers/src/main/java/ru/molokoin/clientserviceteachers/services/TeacherService.java create mode 100644 client-service-teachers/src/main/resources/templates/program-cretarea-add.html create mode 100644 client-service-teachers/src/main/resources/templates/program-cretarea-edit.html create mode 100644 client-service-teachers/src/main/resources/templates/program-cretareas.html diff --git a/client-service-teachers/src/main/java/ru/molokoin/clientserviceteachers/controllers/ProgramCretareaController.java b/client-service-teachers/src/main/java/ru/molokoin/clientserviceteachers/controllers/ProgramCretareaController.java new file mode 100644 index 0000000..47d8a4c --- /dev/null +++ b/client-service-teachers/src/main/java/ru/molokoin/clientserviceteachers/controllers/ProgramCretareaController.java @@ -0,0 +1,145 @@ +package ru.molokoin.clientserviceteachers.controllers; + +import java.time.Duration; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.reactive.function.client.WebClient; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; + +import reactor.core.publisher.Mono; +import ru.molokoin.clientserviceteachers.entities.ProgramCretarea; + +@Controller +@RequestMapping(path = "/") +public class ProgramCretareaController { + @Autowired + private WebClient client; + + @GetMapping("/program-cretareas") + public String programCretareaList(Model model) throws JsonMappingException, JsonProcessingException{ + List cretareas = client + .method(HttpMethod.GET) + .uri("/cretarea/list") + .retrieve() + .bodyToMono(new ParameterizedTypeReference >(){}) + .block(); + + model.addAttribute("program_cretarea_list", cretareas); + model.addAttribute("pc", new ProgramCretarea()); + System.out.println("PROGRAM-CRETAREAS:" + cretareas.toString()); + return "program-cretareas"; + } + + @GetMapping("/program-cretarea-edit/{id}") + public String teacherById(Model model, @PathVariable Long id) { + ProgramCretarea pc = client.get() + .uri("/cretarea/" + id) + .retrieve() + .bodyToMono(ProgramCretarea.class) + .timeout(Duration.ofSeconds(1)) + .block(); + model.addAttribute("program-cretarea", pc); + return "program-cretarea-edit"; + } + + /** + * Добавление нового критерия + * и переход на страницу списка критериев + * + * @param pc + * @return + * @throws JsonMappingException + * @throws JsonProcessingException + */ + @PostMapping( + path = "/program-cretarea/add", + consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, + produces = { + MediaType.APPLICATION_JSON_VALUE + }) + public String addTeacher(@ModelAttribute("program-cretarea") @Validated ProgramCretarea pc) throws JsonMappingException, JsonProcessingException{ + client.post() + .uri("/cretarea/create") + .body(Mono.just(pc), ProgramCretarea.class) + .retrieve() + .toBodilessEntity() + .timeout(Duration.ofSeconds(1)) + .block(); + return "redirect:/program-cretareas"; + } + + /** + * Переход на страницу добавления нового критерия + * @param model + * @return + */ + @GetMapping(path = "/program-cretarea/add") + public String addTeacherFrame(Model model){ + ProgramCretarea cretarea = new ProgramCretarea(); + model.addAttribute("newCretarea", cretarea); + return "program-cretarea-add"; + } + + /** + * Удаление критерия по id + * @param id + * @return + * @throws JsonProcessingException + * @throws JsonMappingException + */ + @GetMapping(path = "/program-cretarea/delete/{id}") + public String deleteTeacher(@PathVariable Long id) throws JsonMappingException, JsonProcessingException{ + String message = client.delete() + .uri("/cretarea/delete/" + id) + .retrieve() + .bodyToMono(String.class) + .timeout(Duration.ofSeconds(1)) + .block(); + System.out.println("##########################################"); + System.out.println("##########################################"); + System.out.println("DELETE-MESAGE# " + message); + return "redirect:/program-cretarias"; + } + + /** + * Обновление сведений о критерии + * - переделать post на put запрос + * + * @param id + * @param cretarea + * @return + * @throws JsonProcessingException + * @throws JsonMappingException + */ + @PostMapping( + path = "/cretarea/update/{id}", + consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, + produces = { + MediaType.APPLICATION_JSON_VALUE + }) + public String updateTeacher(@PathVariable Long id + , @ModelAttribute("pc") @Validated ProgramCretarea cretarea) throws JsonMappingException, JsonProcessingException{ + client.post() + .uri("/teacher/update/" + cretarea.getId()) + .body(Mono.just(cretarea), ProgramCretarea.class) + .retrieve() + .toBodilessEntity() + .timeout(Duration.ofSeconds(1)) + .block(); + return "redirect:/program-cretareas"; + } +} diff --git a/client-service-teachers/src/main/java/ru/molokoin/clientserviceteachers/entities/ProgramCretarea.java b/client-service-teachers/src/main/java/ru/molokoin/clientserviceteachers/entities/ProgramCretarea.java new file mode 100644 index 0000000..6e8b953 --- /dev/null +++ b/client-service-teachers/src/main/java/ru/molokoin/clientserviceteachers/entities/ProgramCretarea.java @@ -0,0 +1,28 @@ +package ru.molokoin.clientserviceteachers.entities; + +import java.io.Serializable; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@NoArgsConstructor +@AllArgsConstructor +@Data +public class ProgramCretarea implements Serializable{ + private long id; + private String name;//Наименование + private String name_short;//Наименование : сокращенно + + /** + * подготовить конструкторы на все варианты внесения информации о преподавателях + * + * @param name + * @param name_short + */ + public ProgramCretarea(String name, String name_short) { + this.name = name; + this.name_short = name_short; + } + +} diff --git a/client-service-teachers/src/main/java/ru/molokoin/clientserviceteachers/services/TeacherService.java b/client-service-teachers/src/main/java/ru/molokoin/clientserviceteachers/services/TeacherService.java deleted file mode 100644 index c28c15b..0000000 --- a/client-service-teachers/src/main/java/ru/molokoin/clientserviceteachers/services/TeacherService.java +++ /dev/null @@ -1,22 +0,0 @@ -package ru.molokoin.clientserviceteachers.services; - -import org.springframework.stereotype.Service; -import org.springframework.web.reactive.function.client.WebClient; - -import lombok.AllArgsConstructor; -import reactor.core.publisher.Mono; -import ru.molokoin.clientserviceteachers.entities.Teacher; - -@Service -@AllArgsConstructor -public class TeacherService { - private final WebClient webClient; - - public Mono getTeacherByIdAsync(final String id){ - return webClient - .get() - .uri(String.join("", "/teacher/", id)) - .retrieve() - .bodyToMono(Teacher.class); - } -} diff --git a/client-service-teachers/src/main/resources/templates/program-cretarea-add.html b/client-service-teachers/src/main/resources/templates/program-cretarea-add.html new file mode 100644 index 0000000..e00f5e4 --- /dev/null +++ b/client-service-teachers/src/main/resources/templates/program-cretarea-add.html @@ -0,0 +1,37 @@ + + + + + Cretarea + + + + +
+ edit : cretarea +
+
+

Добавление нового критерия:

+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+ +
+
+ \ No newline at end of file diff --git a/client-service-teachers/src/main/resources/templates/program-cretarea-edit.html b/client-service-teachers/src/main/resources/templates/program-cretarea-edit.html new file mode 100644 index 0000000..e53d4d2 --- /dev/null +++ b/client-service-teachers/src/main/resources/templates/program-cretarea-edit.html @@ -0,0 +1,37 @@ + + + + + Teacher + + + + +
+ edit : program-cretarea +
+
+

Добавление критерия:

+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+ +
+
+ \ No newline at end of file diff --git a/client-service-teachers/src/main/resources/templates/program-cretareas.html b/client-service-teachers/src/main/resources/templates/program-cretareas.html new file mode 100644 index 0000000..f3e66b1 --- /dev/null +++ b/client-service-teachers/src/main/resources/templates/program-cretareas.html @@ -0,0 +1,59 @@ + + + + + Cretareas + + + + +
+

PROGRAM-CRETAREAS

+ menu : auth : title +
+
+
+
+

Перечень критериев:

+
+ + + + + + + + + + + + + + + + + +
idНАИМЕНОВАНИЕКРАТКО +
+ +
+
+ + + + + + +
+ +
+
+ +
+
+ +
+
+ + diff --git a/client-service-teachers/src/main/resources/templates/teachers.html b/client-service-teachers/src/main/resources/templates/teachers.html index 11b573b..ef1eceb 100644 --- a/client-service-teachers/src/main/resources/templates/teachers.html +++ b/client-service-teachers/src/main/resources/templates/teachers.html @@ -9,7 +9,9 @@ xmlns:th="http://www.thymeleaf.org">
+

TEACHERS

menu : auth +
@@ -18,7 +20,7 @@ xmlns:th="http://www.thymeleaf.org">
-->

Перечень преподавателей:

-
+
diff --git a/resource-service-api/src/main/java/ru/molokoin/resourceserviceapi/controllers/ProgramCretareaController.java b/resource-service-api/src/main/java/ru/molokoin/resourceserviceapi/controllers/ProgramCretareaController.java index 1384336..af371cd 100644 --- a/resource-service-api/src/main/java/ru/molokoin/resourceserviceapi/controllers/ProgramCretareaController.java +++ b/resource-service-api/src/main/java/ru/molokoin/resourceserviceapi/controllers/ProgramCretareaController.java @@ -58,7 +58,7 @@ public class ProgramCretareaController { ProgramCretarea pc = repo.findCretareaById(id); System.out.println(pc.toString()); repo.delete(pc); - return new ResponseEntity<>("Запись id#" + id + " удалена ... ", HttpStatus.NOT_FOUND); + return new ResponseEntity<>("Запись id#" + id + " удалена ... ", HttpStatus.OK); } diff --git a/resource-service-api/src/main/resources/static/content/md/hello.md b/resource-service-api/src/main/resources/static/content/md/hello.md index eb9c7a7..bb4bf59 100644 --- a/resource-service-api/src/main/resources/static/content/md/hello.md +++ b/resource-service-api/src/main/resources/static/content/md/hello.md @@ -7,9 +7,10 @@ ## domain:port/content/* статический контент сервиса, вспомогательные файлы для оформления или наполнения страниц - -## domain:port/api/content - Возвращает данные таблиц в *.xml формате + например: + - /images/* + - /md/* + - /прочие папки и файлы ... ## Управление данными преподавателей ### domain:port/teacher/list @@ -30,6 +31,31 @@ Удаляет запись о преподавателе по id Возвращает текстовое сообщение с результатами выполнения операции +## Управление Критериями программ обучения + Таблица: program_cretareas + Поля таблицы: + - id (идентификатор); + - name (наименование категории программы обучения); + - name_short (сокращенное наименование категории программы обучения). + +### domain:port/program-cretareas + Возвращает json файл с данными о критериях + +### domain:port/program-cretarea/{id} + Возвращает json файл с данными одного критерия + +### domain:port/program-cretarea/save + Добавляет запись о новом критерии программы обучения + Возвращает json файл с данными добавленного критерия + +### domain:port/program-cretarea/update/{id} + Обновляет запись о критерии программы обучения по id + Возвращает json файл с обновленными данными о критерии прогрммы обучения + +### domain:port/program-cretarea/delete/{id} + Удаляет запись о критерии программы обучения по id + Возвращает текстовое сообщение с результатами выполнения операции + # Структура базы данных сервиса : SCHEME ![image entity relationship diagram](content/images/ERD.svg "entity relationship diagram")