diff --git a/pom.xml b/pom.xml
index 378c16c..23b7b0b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -88,6 +88,11 @@
lombok
provided
+
+ jakarta.validation
+ jakarta.validation-api
+ 3.1.0
+
diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/controller/ClientController.java b/src/main/java/_11/asktpk/artisanconnectbackend/controller/ClientController.java
new file mode 100644
index 0000000..4751d7a
--- /dev/null
+++ b/src/main/java/_11/asktpk/artisanconnectbackend/controller/ClientController.java
@@ -0,0 +1,46 @@
+package _11.asktpk.artisanconnectbackend.controller;
+
+
+import _11.asktpk.artisanconnectbackend.dto.ClientDTO;
+import _11.asktpk.artisanconnectbackend.repository.ClientRepository;
+import _11.asktpk.artisanconnectbackend.service.ClientService;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/v1/clients")
+public class ClientController {
+ private final ClientService clientService;
+
+ public ClientController(ClientService clientService, ClientRepository clientRepository) {
+ this.clientService = clientService;
+ }
+
+ @GetMapping("/all")
+ public List getAllClients() {
+ return clientService.getAllClients();
+ }
+
+ // TODO: do zrobienia walidacja danych
+ @PutMapping("/edit/{id}")
+ public ResponseEntity updateClient(@PathVariable("id") long id, @RequestBody ClientDTO clientDTO) {
+ if(clientService.clientExists(id)) {
+ return new ResponseEntity<>(clientService.updateClient(clientDTO),HttpStatus.OK);
+ } else {
+ return new ResponseEntity<>(HttpStatus.NOT_FOUND);
+ }
+ }
+
+ @DeleteMapping("/delete/{id}")
+ public ResponseEntity deleteClient(@PathVariable("id") long id) {
+ if(clientService.clientExists(id)) {
+ clientService.deleteClient(id);
+ return new ResponseEntity<>(HttpStatus.OK);
+ } else {
+ return new ResponseEntity<>(HttpStatus.NOT_FOUND);
+ }
+ }
+}
diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/controller/ArtisanConnectController.java b/src/main/java/_11/asktpk/artisanconnectbackend/controller/NoticeController.java
similarity index 66%
rename from src/main/java/_11/asktpk/artisanconnectbackend/controller/ArtisanConnectController.java
rename to src/main/java/_11/asktpk/artisanconnectbackend/controller/NoticeController.java
index c4e31d2..674cbae 100644
--- a/src/main/java/_11/asktpk/artisanconnectbackend/controller/ArtisanConnectController.java
+++ b/src/main/java/_11/asktpk/artisanconnectbackend/controller/NoticeController.java
@@ -1,6 +1,5 @@
package _11.asktpk.artisanconnectbackend.controller;
-import _11.asktpk.artisanconnectbackend.dto.ClientDTO;
import _11.asktpk.artisanconnectbackend.service.ClientService;
import _11.asktpk.artisanconnectbackend.service.NoticeService;
import _11.asktpk.artisanconnectbackend.dto.NoticeDTO;
@@ -12,25 +11,23 @@ import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
-import static org.springframework.web.servlet.function.ServerResponse.status;
-
-@RequestMapping("/api/v1")
+@RequestMapping("/api/v1/notices")
@RestController
-public class ArtisanConnectController {
+public class NoticeController {
@Autowired
private NoticeService noticeService;
@Autowired
private ClientService clientService;
- @GetMapping("/notices/all")
+ @GetMapping("/all")
public List getAllNotices() {
return noticeService.getAllNotices();
}
- @PostMapping("/notices/add")
+ @PostMapping("/add")
public ResponseEntity addNotice(@RequestBody NoticeDTO dto) {
- if (!clientService.getByID(dto.getClientId())) {
+ if (!clientService.clientExists(dto.getClientId())) {
return ResponseEntity
.status(HttpStatus.BAD_REQUEST)
.body("Nie znaleziono klienta o ID: " + dto.getClientId());
@@ -43,7 +40,7 @@ public class ArtisanConnectController {
// TODO: zamiast dodawać tutaj pętlą, musi to robić NoticeService, trzeba zaimplementować odpowienią metodę
- @PostMapping("/notices/bulk_add")
+ @PostMapping("/bulk_add")
public ResponseEntity addNotices(@RequestBody List notices_list) {
ResponseEntity response = new ResponseEntity<>(HttpStatus.CREATED);
List errors = new ArrayList<>();
@@ -54,7 +51,7 @@ public class ArtisanConnectController {
}
for (NoticeDTO dto : notices_list) {
- if (!clientService.getByID(dto.getClientId())) {
+ if (!clientService.clientExists(dto.getClientId())) {
isError = true;
errors.add(dto.getClientId().toString());
} else {
@@ -71,8 +68,21 @@ public class ArtisanConnectController {
return response;
}
- @GetMapping("/clients/all")
- public List getAllClients() {
- return clientService.getAllClients();
+ @PutMapping("/edit/{id}")
+ public ResponseEntity editNotice(@PathVariable("id") long id, @RequestBody NoticeDTO dto) {
+ if (noticeService.noticeExists(id)) {
+ return new ResponseEntity<>(noticeService.updateNotice(dto), HttpStatus.OK);
+ } else {
+ return ResponseEntity.status(HttpStatus.NOT_FOUND).body("Nie znaleziono ogłoszenia o ID: " + id);
+ }
}
+
+// @GetMapping("/check/{id}")
+// public ResponseEntity checkNotice(@PathVariable("id") long id) {
+// if (noticeService.noticeExists(id)) {
+// return ResponseEntity.ok("Ogłoszenie o ID " + id + " istnieje.");
+// } else {
+// return ResponseEntity.status(HttpStatus.NOT_FOUND).body("Nie znaleziono ogłoszenia o ID: " + id);
+// }
+// }
}
diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/dto/ClientDTO.java b/src/main/java/_11/asktpk/artisanconnectbackend/dto/ClientDTO.java
index 62eadb9..09fde80 100644
--- a/src/main/java/_11/asktpk/artisanconnectbackend/dto/ClientDTO.java
+++ b/src/main/java/_11/asktpk/artisanconnectbackend/dto/ClientDTO.java
@@ -1,13 +1,19 @@
package _11.asktpk.artisanconnectbackend.dto;
+import jakarta.validation.constraints.NotBlank;
import lombok.Getter;
import lombok.Setter;
+import jakarta.validation.constraints.Email;
+
import _11.asktpk.artisanconnectbackend.utils.Enums.Role;
@Getter @Setter
public class ClientDTO {
private Long id;
+
+ @Email
+ @NotBlank
private String email;
private String firstName;
private String lastName;
diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/service/ClientService.java b/src/main/java/_11/asktpk/artisanconnectbackend/service/ClientService.java
index 65aa593..59bef40 100644
--- a/src/main/java/_11/asktpk/artisanconnectbackend/service/ClientService.java
+++ b/src/main/java/_11/asktpk/artisanconnectbackend/service/ClientService.java
@@ -46,8 +46,20 @@ public class ClientService {
return clients.stream().map(this::toDto).toList();
}
- public boolean getByID(Long id) {
+ public Client getClientById(Long id) {
+ return clientRepository.findById(id).orElse(null);
+ }
+
+ public boolean clientExists(Long id) {
return clientRepository.existsById(id);
}
+ public ClientDTO updateClient(ClientDTO clientDTO) {
+ Client client = fromDto(clientDTO);
+ return toDto(clientRepository.save(client));
+ }
+
+ public void deleteClient(Long id) {
+ clientRepository.deleteById(id);
+ }
}
diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/service/IDatabase.java b/src/main/java/_11/asktpk/artisanconnectbackend/service/IDatabase.java
deleted file mode 100644
index 444fc1b..0000000
--- a/src/main/java/_11/asktpk/artisanconnectbackend/service/IDatabase.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package _11.asktpk.artisanconnectbackend.service;
-
-import _11.asktpk.artisanconnectbackend.entities.Notice;
-
-import java.util.List;
-
-public interface IDatabase {
- void add(Notice newNotice);
- List get();
-}
diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/service/NoticeService.java b/src/main/java/_11/asktpk/artisanconnectbackend/service/NoticeService.java
index 06409c7..794e64a 100644
--- a/src/main/java/_11/asktpk/artisanconnectbackend/service/NoticeService.java
+++ b/src/main/java/_11/asktpk/artisanconnectbackend/service/NoticeService.java
@@ -70,4 +70,13 @@ public class NoticeService {
public void addNotice(Notice notice) {
noticeRepository.save(notice);
}
+
+ public boolean noticeExists(Long id) {
+ return noticeRepository.existsById(id);
+ }
+
+ public NoticeDTO updateNotice(NoticeDTO dto) {
+ Notice notice = createFromDTO(dto);
+ return toDTO(noticeRepository.save(notice));
+ }
}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 3e18cc0..5e9151c 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,7 +1,7 @@
spring.application.name=ArtisanConnectBackend
## PostgreSQL
-spring.datasource.url=jdbc:postgresql://localhost:5432/default_db
+spring.datasource.url=jdbc:postgresql://192.168.56.103:5432/default_db
spring.datasource.username=postgres
spring.datasource.password=postgres
diff --git a/src/main/resources/sql/data.sql b/src/main/resources/sql/data.sql
index eaed99a..2ab1ead 100644
--- a/src/main/resources/sql/data.sql
+++ b/src/main/resources/sql/data.sql
@@ -1,2 +1,7 @@
INSERT INTO clients (email, first_name, image, last_name, password, role)
-VALUES ('dignissim.tempor.arcu@aol.ca', 'Diana', 'null', 'Harrison', 'password', 'USER');
\ No newline at end of file
+VALUES
+ ('dignissim.tempor.arcu@aol.ca', 'Diana', 'null', 'Harrison', 'password', 'USER'),
+ ('john.doe@example.com', 'John', 'null', 'Doe', 'password123', 'ADMIN'),
+ ('jane.smith@example.com', 'Jane', 'null', 'Smith', 'securepass', 'USER'),
+ ('michael.brown@example.com', 'Michael', 'null', 'Brown', 'mypassword', 'USER'),
+ ('emily.jones@example.com', 'Emily', 'null', 'Jones', 'passw0rd', 'USER');