From 9560588d414ff677446baadcb9b1b496e9aa80e3 Mon Sep 17 00:00:00 2001
From: Programmist73 <egor.eliseev.1986@mail.ru>
Date: Sat, 22 Apr 2023 10:50:45 +0400
Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?=
 =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=B5=D1=80=D0=B2=D1=8B=D1=85=20HTM?=
 =?UTF-8?q?L=20=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../java/premium_store/WebConfiguration.java  |  4 +-
 .../controller/GameClientController.java      |  3 +-
 .../controller/NationController.java          |  3 +-
 .../controller/controller/TankController.java |  3 +-
 .../controller/TankLevelController.java       |  3 +-
 .../util/error/AdviceController.java          |  3 +-
 .../src/main/resources/templates/clients.html | 10 ++++
 .../src/main/resources/templates/default.html | 51 +++++++++++++++++++
 .../src/main/resources/templates/levels.html  | 10 ++++
 .../src/main/resources/templates/nations.html | 10 ++++
 .../src/main/resources/templates/tanks.html   | 10 ++++
 11 files changed, 104 insertions(+), 6 deletions(-)
 create mode 100644 spring_online_calculator/src/main/resources/templates/clients.html
 create mode 100644 spring_online_calculator/src/main/resources/templates/default.html
 create mode 100644 spring_online_calculator/src/main/resources/templates/levels.html
 create mode 100644 spring_online_calculator/src/main/resources/templates/nations.html
 create mode 100644 spring_online_calculator/src/main/resources/templates/tanks.html

diff --git a/spring_online_calculator/src/main/java/premium_store/WebConfiguration.java b/spring_online_calculator/src/main/java/premium_store/WebConfiguration.java
index 6c4b7c4..fb88ede 100644
--- a/spring_online_calculator/src/main/java/premium_store/WebConfiguration.java
+++ b/spring_online_calculator/src/main/java/premium_store/WebConfiguration.java
@@ -6,7 +6,9 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
 //отключение Cors фильтра - не позволяет организовавыть взаимодействие с разных доменов
 @Configuration
-class WebConfiguration implements WebMvcConfigurer {
+public class WebConfiguration implements WebMvcConfigurer {
+    public static final String REST_API = "/api";
+
     @Override
     public void addCorsMappings(CorsRegistry registry) {
         registry.addMapping("/**").allowedMethods("*");
diff --git a/spring_online_calculator/src/main/java/premium_store/controller/controller/GameClientController.java b/spring_online_calculator/src/main/java/premium_store/controller/controller/GameClientController.java
index 678ec7f..b9069ca 100644
--- a/spring_online_calculator/src/main/java/premium_store/controller/controller/GameClientController.java
+++ b/spring_online_calculator/src/main/java/premium_store/controller/controller/GameClientController.java
@@ -1,6 +1,7 @@
 package premium_store.controller.controller;
 
 import org.springframework.web.bind.annotation.*;
+import premium_store.WebConfiguration;
 import premium_store.controller.DTO.ClientDTO;
 import premium_store.service.GameClientService;
 import premium_store.service.TankService;
@@ -8,7 +9,7 @@ import premium_store.service.TankService;
 import java.util.List;
 
 @RestController
-@RequestMapping("/client")
+@RequestMapping(WebConfiguration.REST_API + "/client")
 public class GameClientController {
     private final GameClientService gameClientService;
     private final TankService tankService;
diff --git a/spring_online_calculator/src/main/java/premium_store/controller/controller/NationController.java b/spring_online_calculator/src/main/java/premium_store/controller/controller/NationController.java
index b63204a..3f79a22 100644
--- a/spring_online_calculator/src/main/java/premium_store/controller/controller/NationController.java
+++ b/spring_online_calculator/src/main/java/premium_store/controller/controller/NationController.java
@@ -1,6 +1,7 @@
 package premium_store.controller.controller;
 
 import org.springframework.web.bind.annotation.*;
+import premium_store.WebConfiguration;
 import premium_store.controller.DTO.FullNationDTO;
 import premium_store.service.NationService;
 import premium_store.service.TankService;
@@ -12,7 +13,7 @@ import java.util.List;
 //так же здесь прописываем вызовы методов CRUD в привязке к URL
 @RestController
 @CrossOrigin
-@RequestMapping("/nation")
+@RequestMapping(WebConfiguration.REST_API + "/nation")
 public class NationController {
     private final NationService nationService;
     private final TankService tankService;
diff --git a/spring_online_calculator/src/main/java/premium_store/controller/controller/TankController.java b/spring_online_calculator/src/main/java/premium_store/controller/controller/TankController.java
index cb14abe..00029fe 100644
--- a/spring_online_calculator/src/main/java/premium_store/controller/controller/TankController.java
+++ b/spring_online_calculator/src/main/java/premium_store/controller/controller/TankController.java
@@ -1,6 +1,7 @@
 package premium_store.controller.controller;
 
 import org.springframework.web.bind.annotation.*;
+import premium_store.WebConfiguration;
 import premium_store.controller.DTO.TankDTO;
 import premium_store.service.NationService;
 import premium_store.service.TankLevelService;
@@ -10,7 +11,7 @@ import java.util.List;
 
 @RestController
 @CrossOrigin
-@RequestMapping("/tank")
+@RequestMapping(WebConfiguration.REST_API + "/tank")
 public class TankController {
     private final TankService tankService;
     private final TankLevelService tankLevelService;
diff --git a/spring_online_calculator/src/main/java/premium_store/controller/controller/TankLevelController.java b/spring_online_calculator/src/main/java/premium_store/controller/controller/TankLevelController.java
index 5e7987a..ec56ae8 100644
--- a/spring_online_calculator/src/main/java/premium_store/controller/controller/TankLevelController.java
+++ b/spring_online_calculator/src/main/java/premium_store/controller/controller/TankLevelController.java
@@ -1,6 +1,7 @@
 package premium_store.controller.controller;
 
 import org.springframework.web.bind.annotation.*;
+import premium_store.WebConfiguration;
 import premium_store.controller.DTO.LevelDTO;
 import premium_store.service.TankLevelService;
 
@@ -10,7 +11,7 @@ import java.util.List;
 //здесь происходит внедрение зависимости нашего сервиса
 //так же здесь прописываем вызовы методов CRUD в привязке к URL
 @RestController
-@RequestMapping("/level")
+@RequestMapping(WebConfiguration.REST_API + "/level")
 public class TankLevelController {
     private final TankLevelService tankLevelService;
 
diff --git a/spring_online_calculator/src/main/java/premium_store/util/error/AdviceController.java b/spring_online_calculator/src/main/java/premium_store/util/error/AdviceController.java
index 18577c3..df96bfc 100644
--- a/spring_online_calculator/src/main/java/premium_store/util/error/AdviceController.java
+++ b/spring_online_calculator/src/main/java/premium_store/util/error/AdviceController.java
@@ -6,6 +6,7 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.MethodArgumentNotValidException;
 import org.springframework.web.bind.annotation.ControllerAdvice;
 import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestController;
 import premium_store.service.exception.ClientNotFoundException;
 import premium_store.service.exception.LevelNotFoundException;
 import premium_store.service.exception.NationNotFoundException;
@@ -15,7 +16,7 @@ import premium_store.util.validation.ValidationException;
 import java.util.stream.Collectors;
 
 //контроллер для обработки разнообразных ошибок при работе с запросами к БД
-@ControllerAdvice
+@ControllerAdvice(annotations = RestController.class)
 public class AdviceController {
     //метод handleException будет вызываться при возникновении исключений типа LevelNotFoundException и т. д.
     @ExceptionHandler({
diff --git a/spring_online_calculator/src/main/resources/templates/clients.html b/spring_online_calculator/src/main/resources/templates/clients.html
new file mode 100644
index 0000000..566549b
--- /dev/null
+++ b/spring_online_calculator/src/main/resources/templates/clients.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/spring_online_calculator/src/main/resources/templates/default.html b/spring_online_calculator/src/main/resources/templates/default.html
new file mode 100644
index 0000000..941bbb8
--- /dev/null
+++ b/spring_online_calculator/src/main/resources/templates/default.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html lang="ru"
+      xmlns:th="http://www.thymeleaf.org"
+      xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
+<head>
+    <meta charset="UTF-8"/>
+    <title>Премиум магазин</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+    <link rel="icon" href="/favicon.svg">
+    <script type="text/javascript" src="/webjars/bootstrap/5.1.3/js/bootstrap.bundle.min.js"></script>
+    <link rel="stylesheet" href="/webjars/bootstrap/5.1.3/css/bootstrap.min.css"/>
+    <link rel="stylesheet" href="/webjars/font-awesome/6.1.0/css/all.min.css"/>
+    <link rel="stylesheet" href="/css/style.css"/>
+</head>
+<body>
+    <nav class="navbar navbar-expand-lg navbar-light bg-light">
+        <div class="container-fluid">
+            <a class="navbar-brand" href="/">
+                <i class="fa-solid fa-font-awesome"></i>
+                Премиум магазин
+            </a>
+            <button class="navbar-toggler" type="button"
+                    data-bs-toggle="collapse" data-bs-target="#navbarNav"
+                    aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
+                <span class="navbar-toggler-icon"></span>
+            </button>
+            <div class="collapse navbar-collapse" id="navbarNav">
+                <ul class="navbar-nav" th:with="activeLink=${#request.requestURI}">
+                    <a class="nav-link" href="/levels"
+                       th:classappend="${#strings.equals(activeLink, '/levels')} ? 'active' : ''">Обзор уровней
+                    </a>
+                    <a class="nav-link" href="/tanks"
+                       th:classappend="${#strings.equals(activeLink, '/tanks')} ? 'active' : ''">Обзор танков
+                    </a>
+                    <a class="nav-link" href="/nations"
+                       th:classappend="${#strings.equals(activeLink, '/nations')} ? 'active' : ''">Обзор наций
+                    </a>
+                    <a class="nav-link" href="/clients"
+                       th:classappend="${#strings.equals(activeLink, '/clients')} ? 'active' : ''">Обзор клиентов
+                    </a>
+                </ul>
+            </div>
+        </div>
+    </nav>
+<div class="container-fluid">
+    <div class="container container-padding" layout:fragment="content"></div>
+</div>
+</body>
+<th:block layout:fragment="scripts">
+</th:block>
+</html>
\ No newline at end of file
diff --git a/spring_online_calculator/src/main/resources/templates/levels.html b/spring_online_calculator/src/main/resources/templates/levels.html
new file mode 100644
index 0000000..566549b
--- /dev/null
+++ b/spring_online_calculator/src/main/resources/templates/levels.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/spring_online_calculator/src/main/resources/templates/nations.html b/spring_online_calculator/src/main/resources/templates/nations.html
new file mode 100644
index 0000000..566549b
--- /dev/null
+++ b/spring_online_calculator/src/main/resources/templates/nations.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/spring_online_calculator/src/main/resources/templates/tanks.html b/spring_online_calculator/src/main/resources/templates/tanks.html
new file mode 100644
index 0000000..566549b
--- /dev/null
+++ b/spring_online_calculator/src/main/resources/templates/tanks.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+
+</body>
+</html>
\ No newline at end of file