Better implementation of updates for notice and client
This commit is contained in:
@@ -15,7 +15,7 @@ import java.util.List;
|
|||||||
public class ClientController {
|
public class ClientController {
|
||||||
private final ClientService clientService;
|
private final ClientService clientService;
|
||||||
|
|
||||||
public ClientController(ClientService clientService, ClientRepository clientRepository) {
|
public ClientController(ClientService clientService) {
|
||||||
this.clientService = clientService;
|
this.clientService = clientService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ public class ClientController {
|
|||||||
@PutMapping("/edit/{id}")
|
@PutMapping("/edit/{id}")
|
||||||
public ResponseEntity updateClient(@PathVariable("id") long id, @RequestBody ClientDTO clientDTO) {
|
public ResponseEntity updateClient(@PathVariable("id") long id, @RequestBody ClientDTO clientDTO) {
|
||||||
if(clientService.clientExists(id)) {
|
if(clientService.clientExists(id)) {
|
||||||
return new ResponseEntity<>(clientService.updateClient(clientDTO),HttpStatus.OK);
|
return new ResponseEntity<>(clientService.updateClient(id, clientDTO),HttpStatus.OK);
|
||||||
} else {
|
} else {
|
||||||
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
|
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package _11.asktpk.artisanconnectbackend.controller;
|
|||||||
import _11.asktpk.artisanconnectbackend.service.ClientService;
|
import _11.asktpk.artisanconnectbackend.service.ClientService;
|
||||||
import _11.asktpk.artisanconnectbackend.service.NoticeService;
|
import _11.asktpk.artisanconnectbackend.service.NoticeService;
|
||||||
import _11.asktpk.artisanconnectbackend.dto.NoticeDTO;
|
import _11.asktpk.artisanconnectbackend.dto.NoticeDTO;
|
||||||
|
import jakarta.persistence.EntityNotFoundException;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
@@ -33,7 +34,7 @@ public class NoticeController {
|
|||||||
.body("Nie znaleziono klienta o ID: " + dto.getClientId());
|
.body("Nie znaleziono klienta o ID: " + dto.getClientId());
|
||||||
}
|
}
|
||||||
|
|
||||||
noticeService.addNotice(noticeService.createFromDTO(dto));
|
noticeService.addNotice(noticeService.fromDTO(dto));
|
||||||
|
|
||||||
return ResponseEntity.status(HttpStatus.CREATED).body("Dodano ogłoszenie.");
|
return ResponseEntity.status(HttpStatus.CREATED).body("Dodano ogłoszenie.");
|
||||||
}
|
}
|
||||||
@@ -56,7 +57,7 @@ public class NoticeController {
|
|||||||
errors.add(dto.getClientId().toString());
|
errors.add(dto.getClientId().toString());
|
||||||
} else {
|
} else {
|
||||||
if(!isError){
|
if(!isError){
|
||||||
noticeService.addNotice(noticeService.createFromDTO(dto));
|
noticeService.addNotice(noticeService.fromDTO(dto));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -68,14 +69,18 @@ public class NoticeController {
|
|||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PutMapping("/edit/{id}")
|
@PutMapping("/edit/{id}")
|
||||||
public ResponseEntity editNotice(@PathVariable("id") long id, @RequestBody NoticeDTO dto) {
|
public ResponseEntity<Object> editNotice(@PathVariable("id") long id, @RequestBody NoticeDTO dto) {
|
||||||
if (noticeService.noticeExists(id)) {
|
if (noticeService.noticeExists(id)) {
|
||||||
return new ResponseEntity<>(noticeService.updateNotice(dto), HttpStatus.OK);
|
try {
|
||||||
} else {
|
return new ResponseEntity<>(noticeService.updateNotice(id, dto), HttpStatus.OK);
|
||||||
return ResponseEntity.status(HttpStatus.NOT_FOUND).body("Nie znaleziono ogłoszenia o ID: " + id);
|
} catch (EntityNotFoundException e) {
|
||||||
|
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getMessage());
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
return ResponseEntity.status(HttpStatus.NOT_FOUND).body("Nie znaleziono ogłoszenia o ID: " + id);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// @GetMapping("/check/{id}")
|
// @GetMapping("/check/{id}")
|
||||||
// public ResponseEntity<String> checkNotice(@PathVariable("id") long id) {
|
// public ResponseEntity<String> checkNotice(@PathVariable("id") long id) {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package _11.asktpk.artisanconnectbackend.service;
|
|||||||
import _11.asktpk.artisanconnectbackend.dto.ClientDTO;
|
import _11.asktpk.artisanconnectbackend.dto.ClientDTO;
|
||||||
import _11.asktpk.artisanconnectbackend.entities.Client;
|
import _11.asktpk.artisanconnectbackend.entities.Client;
|
||||||
import _11.asktpk.artisanconnectbackend.repository.ClientRepository;
|
import _11.asktpk.artisanconnectbackend.repository.ClientRepository;
|
||||||
|
import jakarta.persistence.EntityNotFoundException;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -54,9 +55,17 @@ public class ClientService {
|
|||||||
return clientRepository.existsById(id);
|
return clientRepository.existsById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ClientDTO updateClient(ClientDTO clientDTO) {
|
public ClientDTO updateClient(long id, ClientDTO clientDTO) {
|
||||||
Client client = fromDto(clientDTO);
|
Client existingClient = clientRepository.findById(id)
|
||||||
return toDto(clientRepository.save(client));
|
.orElseThrow(() -> new EntityNotFoundException("Nie znaleziono ogłoszenia o ID: " + id));
|
||||||
|
|
||||||
|
existingClient.setEmail(clientDTO.getEmail());
|
||||||
|
existingClient.setFirstName(clientDTO.getFirstName());
|
||||||
|
existingClient.setLastName(clientDTO.getLastName());
|
||||||
|
existingClient.setImage(clientDTO.getImage());
|
||||||
|
existingClient.setRole(clientDTO.getRole());
|
||||||
|
|
||||||
|
return toDto(clientRepository.save(existingClient));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteClient(Long id) {
|
public void deleteClient(Long id) {
|
||||||
|
|||||||
@@ -6,8 +6,6 @@ import _11.asktpk.artisanconnectbackend.repository.ClientRepository;
|
|||||||
import _11.asktpk.artisanconnectbackend.repository.NoticeRepository;
|
import _11.asktpk.artisanconnectbackend.repository.NoticeRepository;
|
||||||
import _11.asktpk.artisanconnectbackend.dto.NoticeDTO;
|
import _11.asktpk.artisanconnectbackend.dto.NoticeDTO;
|
||||||
import jakarta.persistence.EntityNotFoundException;
|
import jakarta.persistence.EntityNotFoundException;
|
||||||
import lombok.Builder;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -24,7 +22,7 @@ public class NoticeService {
|
|||||||
this.clientRepository = clientRepository;
|
this.clientRepository = clientRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Notice createFromDTO(NoticeDTO dto) {
|
public Notice fromDTO(NoticeDTO dto) {
|
||||||
Notice notice = new Notice();
|
Notice notice = new Notice();
|
||||||
notice.setTitle(dto.getTitle());
|
notice.setTitle(dto.getTitle());
|
||||||
notice.setDescription(dto.getDescription());
|
notice.setDescription(dto.getDescription());
|
||||||
@@ -75,8 +73,24 @@ public class NoticeService {
|
|||||||
return noticeRepository.existsById(id);
|
return noticeRepository.existsById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public NoticeDTO updateNotice(NoticeDTO dto) {
|
public NoticeDTO updateNotice(Long id, NoticeDTO dto) {
|
||||||
Notice notice = createFromDTO(dto);
|
Notice existingNotice = noticeRepository.findById(id)
|
||||||
return toDTO(noticeRepository.save(notice));
|
.orElseThrow(() -> new EntityNotFoundException("Nie znaleziono ogłoszenia o ID: " + id));
|
||||||
|
|
||||||
|
existingNotice.setTitle(dto.getTitle());
|
||||||
|
existingNotice.setDescription(dto.getDescription());
|
||||||
|
existingNotice.setPrice(dto.getPrice());
|
||||||
|
existingNotice.setCategory(dto.getCategory());
|
||||||
|
existingNotice.setImages(dto.getImages());
|
||||||
|
existingNotice.setStatus(dto.getStatus());
|
||||||
|
existingNotice.setAttributesNotices(dto.getAttributesNotices());
|
||||||
|
|
||||||
|
if (dto.getClientId() != null && !dto.getClientId().equals(existingNotice.getClient().getId())) {
|
||||||
|
Client client = clientRepository.findById(dto.getClientId())
|
||||||
|
.orElseThrow(() -> new EntityNotFoundException("Nie znaleziono klienta o ID: " + dto.getClientId()));
|
||||||
|
existingNotice.setClient(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return toDTO(noticeRepository.save(existingNotice));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user