diff --git a/pom.xml b/pom.xml index 77a3efc..378c16c 100644 --- a/pom.xml +++ b/pom.xml @@ -83,6 +83,11 @@ okhttp 4.9.3 + + org.projectlombok + lombok + provided + diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/DTO/NoticeDTO.java b/src/main/java/_11/asktpk/artisanconnectbackend/DTO/NoticeDTO.java deleted file mode 100644 index 0dd7e1a..0000000 --- a/src/main/java/_11/asktpk/artisanconnectbackend/DTO/NoticeDTO.java +++ /dev/null @@ -1,128 +0,0 @@ -package _11.asktpk.artisanconnectbackend.DTO; - -import _11.asktpk.artisanconnectbackend.Entities.AttributesNotice; -import _11.asktpk.artisanconnectbackend.Entities.Orders; -import _11.asktpk.artisanconnectbackend.Entities.Payments; -import _11.asktpk.artisanconnectbackend.Utils.Enums; - -import java.time.LocalDate; -import java.util.List; - -public class NoticeDTO { - private String title; - private Long clientId; - private String description; - private Double price; - private Enums.Category category; - private List images; - private Enums.Status status; - private LocalDate publishDate; - private List attributesNotices; - private List orders; - private List payments; - - public NoticeDTO(String title, Long clientId, String description, Double price, - Enums.Category category, List images, Enums.Status status, - LocalDate publishDate, List attributesNotices, - List orders, List payments) { - this.title = title; - this.clientId = clientId; - this.description = description; - this.price = price; - this.category = category; - this.images = images; - this.status = status; - this.publishDate = publishDate; - this.attributesNotices = attributesNotices; - this.orders = orders; - this.payments = payments; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public Double getPrice() { - return price; - } - - public void setPrice(Double price) { - this.price = price; - } - - public Enums.Category getCategory() { - return category; - } - - public void setCategory(Enums.Category category) { - this.category = category; - } - - public List getImages() { - return images; - } - - public void setImages(List images) { - this.images = images; - } - - public Enums.Status getStatus() { - return status; - } - - public void setStatus(Enums.Status status) { - this.status = status; - } - - public LocalDate getPublishDate() { - return publishDate; - } - - public void setPublishDate(LocalDate publishDate) { - this.publishDate = publishDate; - } - - public List getAttributesNotices() { - return attributesNotices; - } - - public void setAttributesNotices(List attributesNotices) { - this.attributesNotices = attributesNotices; - } - - public List getOrders() { - return orders; - } - - public void setOrders(List orders) { - this.orders = orders; - } - - public List getPayments() { - return payments; - } - - public void setPayments(List payments) { - this.payments = payments; - } - - public Long getClientId() { - return clientId; - } - - public void setClientId(Long clientId) { - this.clientId = clientId; - } -} diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/Entities/Client.java b/src/main/java/_11/asktpk/artisanconnectbackend/Entities/Client.java deleted file mode 100644 index a174da5..0000000 --- a/src/main/java/_11/asktpk/artisanconnectbackend/Entities/Client.java +++ /dev/null @@ -1,102 +0,0 @@ -package _11.asktpk.artisanconnectbackend.Entities; - -import _11.asktpk.artisanconnectbackend.Utils.Enums.Role; - -import jakarta.persistence.*; -import java.util.List; - -@Entity -@Table(name = "clients") -public class Client { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - private String email; - private String password; - private String firstName; - private String lastName; - private String image; // Optional field - @Enumerated(EnumType.STRING) - private Role role; - -// @OneToMany(mappedBy = "client", cascade = CascadeType.ALL) -// private List notices; - - @OneToMany(mappedBy = "client", cascade = CascadeType.ALL) - private List orders; - - public Long getId() { - return id; - } - - public void setId(Long idUser) { - this.id = idUser; - } - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } - - public String getFirstName() { - return firstName; - } - - public void setFirstName(String firstName) { - this.firstName = firstName; - } - - public String getLastName() { - return lastName; - } - - public void setLastName(String lastName) { - this.lastName = lastName; - } - - public String getImage() { - return image; - } - - public void setImage(String image) { - this.image = image; - } - - public Role getRole() { - return role; - } - - public void setRole(Role role) { - this.role = role; - } - -// public List getNotices() { -// return notices; -// } -// -// public void setNotices(List notices) { -// this.notices = notices; -// } - - public List getOrders() { - return orders; - } - - public void setOrders(List orders) { - this.orders = orders; - } - - // Getters, setters, and constructors -} diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/Entities/Notice.java b/src/main/java/_11/asktpk/artisanconnectbackend/Entities/Notice.java deleted file mode 100644 index d0180bd..0000000 --- a/src/main/java/_11/asktpk/artisanconnectbackend/Entities/Notice.java +++ /dev/null @@ -1,143 +0,0 @@ -package _11.asktpk.artisanconnectbackend.Entities; - -import jakarta.persistence.*; - -import java.time.LocalDate; -import java.util.List; - -import _11.asktpk.artisanconnectbackend.Utils.Enums.*; - -@Entity -@Table(name = "notice") -public class Notice { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long idNotice; - - private String title; - - @ManyToOne - @JoinColumn(name = "client_id") - private Client client; - - private String description; - private Double price; - - @Enumerated(EnumType.STRING) - private Category category; - - @ElementCollection - private List images; - - @Enumerated(EnumType.STRING) - private Status status; - - private LocalDate publishDate; - - @OneToMany(mappedBy = "notice", cascade = CascadeType.ALL) - private List attributesNotices; - - @OneToMany(mappedBy = "notice", cascade = CascadeType.ALL) - private List orders; - - @OneToMany(mappedBy = "notice", cascade = CascadeType.ALL) - private List payments; - - public Long getIdNotice() { - return idNotice; - } - - public void setIdNotice(Long idNotice) { - this.idNotice = idNotice; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public Client getClient() { - return client; - } - - public void setClient(Client client) { - this.client = client; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public Double getPrice() { - return price; - } - - public void setPrice(Double price) { - this.price = price; - } - - public Category getCategory() { - return category; - } - - public void setCategory(Category category) { - this.category = category; - } - - public List getImages() { - return images; - } - - public void setImages(List images) { - this.images = images; - } - - public Status getStatus() { - return status; - } - - public void setStatus(Status status) { - this.status = status; - } - - public LocalDate getPublishDate() { - return publishDate; - } - - public void setPublishDate(LocalDate publishDate) { - this.publishDate = publishDate; - } - - public List getAttributesNotices() { - return attributesNotices; - } - - public void setAttributesNotices(List attributesNotices) { - this.attributesNotices = attributesNotices; - } - - public List getOrders() { - return orders; - } - - public void setOrders(List orders) { - this.orders = orders; - } - - public List getPayments() { - return payments; - } - - public void setPayments(List payments) { - this.payments = payments; - } - - // Getters, setters, and constructors -} diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/Service/NoticeService.java b/src/main/java/_11/asktpk/artisanconnectbackend/Service/NoticeService.java deleted file mode 100644 index 768ce8f..0000000 --- a/src/main/java/_11/asktpk/artisanconnectbackend/Service/NoticeService.java +++ /dev/null @@ -1,67 +0,0 @@ -package _11.asktpk.artisanconnectbackend.Service; - -import _11.asktpk.artisanconnectbackend.Entities.Client; -import _11.asktpk.artisanconnectbackend.Entities.Notice; -import _11.asktpk.artisanconnectbackend.Repository.ClientRepository; -import _11.asktpk.artisanconnectbackend.Repository.NoticeRepository; -import _11.asktpk.artisanconnectbackend.DTO.NoticeDTO; -import jakarta.persistence.EntityNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Service -public class NoticeService { - - @Autowired - private NoticeRepository noticeRepository; - - @Autowired - private ClientRepository clientRepository; - - public Notice createFromDTO(NoticeDTO dto) { - Notice notice = new Notice(); - notice.setTitle(dto.getTitle()); - notice.setDescription(dto.getDescription()); - notice.setPrice(dto.getPrice()); - notice.setCategory(dto.getCategory()); - notice.setImages(dto.getImages()); - notice.setStatus(dto.getStatus()); - notice.setPublishDate(dto.getPublishDate()); - notice.setAttributesNotices(dto.getAttributesNotices()); - notice.setOrders(dto.getOrders()); - notice.setPayments(dto.getPayments()); - - Client client = clientRepository.findById(dto.getClientId()) - .orElseThrow(() -> new EntityNotFoundException("Nie znaleziono klienta o ID: " + dto.getClientId())); - notice.setClient(client); - - return notice; - } - - // Metoda do konwersji Notice na DTO - public NoticeDTO toDTO(Notice notice) { - return new NoticeDTO( - notice.getTitle(), - notice.getClient().getId(), - notice.getDescription(), - notice.getPrice(), - notice.getCategory(), - notice.getImages(), - notice.getStatus(), - notice.getPublishDate(), - notice.getAttributesNotices(), - notice.getOrders(), - notice.getPayments() - ); - } - - public List getAllNotices() { - return noticeRepository.findAll(); - } - - public void addNotice(Notice notice) { - noticeRepository.save(notice); - } -} diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/Controller/ArtisanConnectController.java b/src/main/java/_11/asktpk/artisanconnectbackend/controller/ArtisanConnectController.java similarity index 83% rename from src/main/java/_11/asktpk/artisanconnectbackend/Controller/ArtisanConnectController.java rename to src/main/java/_11/asktpk/artisanconnectbackend/controller/ArtisanConnectController.java index 49b4aa5..1b92030 100644 --- a/src/main/java/_11/asktpk/artisanconnectbackend/Controller/ArtisanConnectController.java +++ b/src/main/java/_11/asktpk/artisanconnectbackend/controller/ArtisanConnectController.java @@ -1,10 +1,9 @@ -package _11.asktpk.artisanconnectbackend.Controller; +package _11.asktpk.artisanconnectbackend.controller; -import _11.asktpk.artisanconnectbackend.Entities.Notice; -import _11.asktpk.artisanconnectbackend.Repository.ClientRepository; -import _11.asktpk.artisanconnectbackend.Service.NoticeService; -import _11.asktpk.artisanconnectbackend.DTO.NoticeDTO; -import okhttp3.Response; +import _11.asktpk.artisanconnectbackend.entities.Notice; +import _11.asktpk.artisanconnectbackend.repository.ClientRepository; +import _11.asktpk.artisanconnectbackend.service.NoticeService; +import _11.asktpk.artisanconnectbackend.dto.NoticeDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -24,7 +23,7 @@ public class ArtisanConnectController { private ClientRepository clientRepository; @GetMapping("/notices/all") - public List getAllNotices() { + public List getAllNotices() { return noticeService.getAllNotices(); } @@ -35,14 +34,16 @@ public class ArtisanConnectController { .status(HttpStatus.BAD_REQUEST) .body("Nie znaleziono klienta o ID: " + dto.getClientId()); } + noticeService.addNotice(noticeService.createFromDTO(dto)); + return ResponseEntity.status(HttpStatus.CREATED).body("Dodano ogłoszenie."); } // TODO: zamiast dodawać tutaj pętlą, musi to robić NoticeService, trzeba zaimplementować odpowienią metodę @PostMapping("/notices/bulk_add") - public ResponseEntity addNotice(@RequestBody List notices_list) { + public ResponseEntity addNotices(@RequestBody List notices_list) { List errors = new ArrayList<>(); boolean isError = false; if (notices_list.isEmpty()) { diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/dto/ClientDTO.java b/src/main/java/_11/asktpk/artisanconnectbackend/dto/ClientDTO.java new file mode 100644 index 0000000..5b3863f --- /dev/null +++ b/src/main/java/_11/asktpk/artisanconnectbackend/dto/ClientDTO.java @@ -0,0 +1,4 @@ +package _11.asktpk.artisanconnectbackend.dto; + +public class ClientDTO { +} diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/dto/NoticeDTO.java b/src/main/java/_11/asktpk/artisanconnectbackend/dto/NoticeDTO.java new file mode 100644 index 0000000..e64eec9 --- /dev/null +++ b/src/main/java/_11/asktpk/artisanconnectbackend/dto/NoticeDTO.java @@ -0,0 +1,51 @@ +package _11.asktpk.artisanconnectbackend.dto; + +import _11.asktpk.artisanconnectbackend.entities.AttributesNotice; +import _11.asktpk.artisanconnectbackend.utils.Enums; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDate; +import java.util.List; + +@Getter @Setter +public class NoticeDTO { + private long noticeId; + + private String title; + + private Long clientId; + + private String description; + + private Double price; + + private Enums.Category category; + + private List images; + + private Enums.Status status; + + private LocalDate publishDate; + + private List attributesNotices; + + public NoticeDTO() { + + } + + public NoticeDTO(Long noticeId, String title, Long clientId, String description, Double price, + Enums.Category category, List images, Enums.Status status, + LocalDate publishDate, List attributesNotices) { + this.noticeId = noticeId; + this.title = title; + this.clientId = clientId; + this.description = description; + this.price = price; + this.category = category; + this.images = images; + this.status = status; + this.publishDate = publishDate; + this.attributesNotices = attributesNotices; + } +} diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/Entities/AttributeValues.java b/src/main/java/_11/asktpk/artisanconnectbackend/entities/AttributeValues.java similarity index 87% rename from src/main/java/_11/asktpk/artisanconnectbackend/Entities/AttributeValues.java rename to src/main/java/_11/asktpk/artisanconnectbackend/entities/AttributeValues.java index 609aff2..0625d3b 100644 --- a/src/main/java/_11/asktpk/artisanconnectbackend/Entities/AttributeValues.java +++ b/src/main/java/_11/asktpk/artisanconnectbackend/entities/AttributeValues.java @@ -1,4 +1,4 @@ -package _11.asktpk.artisanconnectbackend.Entities; +package _11.asktpk.artisanconnectbackend.entities; import jakarta.persistence.*; diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/Entities/Attributes.java b/src/main/java/_11/asktpk/artisanconnectbackend/entities/Attributes.java similarity index 88% rename from src/main/java/_11/asktpk/artisanconnectbackend/Entities/Attributes.java rename to src/main/java/_11/asktpk/artisanconnectbackend/entities/Attributes.java index d521c2c..ae405fa 100644 --- a/src/main/java/_11/asktpk/artisanconnectbackend/Entities/Attributes.java +++ b/src/main/java/_11/asktpk/artisanconnectbackend/entities/Attributes.java @@ -1,4 +1,4 @@ -package _11.asktpk.artisanconnectbackend.Entities; +package _11.asktpk.artisanconnectbackend.entities; import jakarta.persistence.*; import java.util.List; diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/Entities/AttributesNotice.java b/src/main/java/_11/asktpk/artisanconnectbackend/entities/AttributesNotice.java similarity index 88% rename from src/main/java/_11/asktpk/artisanconnectbackend/Entities/AttributesNotice.java rename to src/main/java/_11/asktpk/artisanconnectbackend/entities/AttributesNotice.java index 290645d..66ef0d0 100644 --- a/src/main/java/_11/asktpk/artisanconnectbackend/Entities/AttributesNotice.java +++ b/src/main/java/_11/asktpk/artisanconnectbackend/entities/AttributesNotice.java @@ -1,4 +1,4 @@ -package _11.asktpk.artisanconnectbackend.Entities; +package _11.asktpk.artisanconnectbackend.entities; import jakarta.persistence.*; diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/entities/Client.java b/src/main/java/_11/asktpk/artisanconnectbackend/entities/Client.java new file mode 100644 index 0000000..a8f935e --- /dev/null +++ b/src/main/java/_11/asktpk/artisanconnectbackend/entities/Client.java @@ -0,0 +1,37 @@ +package _11.asktpk.artisanconnectbackend.entities; + +import _11.asktpk.artisanconnectbackend.utils.Enums.Role; + +import jakarta.persistence.*; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Entity +@Table(name = "clients") +@Getter @Setter +public class Client { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String email; + + private String password; + + private String firstName; + + private String lastName; + + private String image; // Optional field + + @Enumerated(EnumType.STRING) + private Role role; + +// @OneToMany(mappedBy = "client", cascade = CascadeType.ALL) +// private List notices; + + @OneToMany(mappedBy = "client", cascade = CascadeType.ALL) + private List orders; +} diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/Entities/GlobalVariables.java b/src/main/java/_11/asktpk/artisanconnectbackend/entities/GlobalVariables.java similarity index 84% rename from src/main/java/_11/asktpk/artisanconnectbackend/Entities/GlobalVariables.java rename to src/main/java/_11/asktpk/artisanconnectbackend/entities/GlobalVariables.java index b1d8676..cb50f6f 100644 --- a/src/main/java/_11/asktpk/artisanconnectbackend/Entities/GlobalVariables.java +++ b/src/main/java/_11/asktpk/artisanconnectbackend/entities/GlobalVariables.java @@ -1,4 +1,4 @@ -package _11.asktpk.artisanconnectbackend.Entities; +package _11.asktpk.artisanconnectbackend.entities; import jakarta.persistence.*; diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/entities/Notice.java b/src/main/java/_11/asktpk/artisanconnectbackend/entities/Notice.java new file mode 100644 index 0000000..6919f6e --- /dev/null +++ b/src/main/java/_11/asktpk/artisanconnectbackend/entities/Notice.java @@ -0,0 +1,49 @@ +package _11.asktpk.artisanconnectbackend.entities; + +import jakarta.persistence.*; + +import java.time.LocalDate; +import java.util.List; + +import _11.asktpk.artisanconnectbackend.utils.Enums.*; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Table(name = "notice") +@Getter @Setter +public class Notice { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long idNotice; + + private String title; + + @ManyToOne + @JoinColumn(name = "client_id") + private Client client; + + private String description; + + private Double price; + + @Enumerated(EnumType.STRING) + private Category category; + + @ElementCollection + private List images; + + @Enumerated(EnumType.STRING) + private Status status; + + private LocalDate publishDate; + + @OneToMany(mappedBy = "notice", cascade = CascadeType.ALL) + private List attributesNotices; + + @OneToMany(mappedBy = "notice", cascade = CascadeType.ALL) + private List orders; + + @OneToMany(mappedBy = "notice", cascade = CascadeType.ALL) + private List payments; +} diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/Entities/Orders.java b/src/main/java/_11/asktpk/artisanconnectbackend/entities/Orders.java similarity index 79% rename from src/main/java/_11/asktpk/artisanconnectbackend/Entities/Orders.java rename to src/main/java/_11/asktpk/artisanconnectbackend/entities/Orders.java index 9d01112..0657ad8 100644 --- a/src/main/java/_11/asktpk/artisanconnectbackend/Entities/Orders.java +++ b/src/main/java/_11/asktpk/artisanconnectbackend/entities/Orders.java @@ -1,6 +1,6 @@ -package _11.asktpk.artisanconnectbackend.Entities; +package _11.asktpk.artisanconnectbackend.entities; -import _11.asktpk.artisanconnectbackend.Utils.Enums.Status; +import _11.asktpk.artisanconnectbackend.utils.Enums.Status; import jakarta.persistence.*; diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/Entities/Payments.java b/src/main/java/_11/asktpk/artisanconnectbackend/entities/Payments.java similarity index 82% rename from src/main/java/_11/asktpk/artisanconnectbackend/Entities/Payments.java rename to src/main/java/_11/asktpk/artisanconnectbackend/entities/Payments.java index 9f4cd2e..a15dde9 100644 --- a/src/main/java/_11/asktpk/artisanconnectbackend/Entities/Payments.java +++ b/src/main/java/_11/asktpk/artisanconnectbackend/entities/Payments.java @@ -1,6 +1,6 @@ -package _11.asktpk.artisanconnectbackend.Entities; +package _11.asktpk.artisanconnectbackend.entities; -import _11.asktpk.artisanconnectbackend.Utils.Enums.Status; +import _11.asktpk.artisanconnectbackend.utils.Enums.Status; import jakarta.persistence.*; diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/Repository/ClientRepository.java b/src/main/java/_11/asktpk/artisanconnectbackend/repository/ClientRepository.java similarity index 55% rename from src/main/java/_11/asktpk/artisanconnectbackend/Repository/ClientRepository.java rename to src/main/java/_11/asktpk/artisanconnectbackend/repository/ClientRepository.java index 5c7bd16..253aad0 100644 --- a/src/main/java/_11/asktpk/artisanconnectbackend/Repository/ClientRepository.java +++ b/src/main/java/_11/asktpk/artisanconnectbackend/repository/ClientRepository.java @@ -1,6 +1,6 @@ -package _11.asktpk.artisanconnectbackend.Repository; +package _11.asktpk.artisanconnectbackend.repository; -import _11.asktpk.artisanconnectbackend.Entities.Client; +import _11.asktpk.artisanconnectbackend.entities.Client; import org.springframework.data.jpa.repository.JpaRepository; public interface ClientRepository extends JpaRepository { diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/Repository/NoticeRepository.java b/src/main/java/_11/asktpk/artisanconnectbackend/repository/NoticeRepository.java similarity index 55% rename from src/main/java/_11/asktpk/artisanconnectbackend/Repository/NoticeRepository.java rename to src/main/java/_11/asktpk/artisanconnectbackend/repository/NoticeRepository.java index a2d8626..6490053 100644 --- a/src/main/java/_11/asktpk/artisanconnectbackend/Repository/NoticeRepository.java +++ b/src/main/java/_11/asktpk/artisanconnectbackend/repository/NoticeRepository.java @@ -1,6 +1,6 @@ -package _11.asktpk.artisanconnectbackend.Repository; +package _11.asktpk.artisanconnectbackend.repository; -import _11.asktpk.artisanconnectbackend.Entities.Notice; +import _11.asktpk.artisanconnectbackend.entities.Notice; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/Service/IDatabase.java b/src/main/java/_11/asktpk/artisanconnectbackend/service/IDatabase.java similarity index 51% rename from src/main/java/_11/asktpk/artisanconnectbackend/Service/IDatabase.java rename to src/main/java/_11/asktpk/artisanconnectbackend/service/IDatabase.java index 962c55c..444fc1b 100644 --- a/src/main/java/_11/asktpk/artisanconnectbackend/Service/IDatabase.java +++ b/src/main/java/_11/asktpk/artisanconnectbackend/service/IDatabase.java @@ -1,6 +1,6 @@ -package _11.asktpk.artisanconnectbackend.Service; +package _11.asktpk.artisanconnectbackend.service; -import _11.asktpk.artisanconnectbackend.Entities.Notice; +import _11.asktpk.artisanconnectbackend.entities.Notice; import java.util.List; diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/service/NoticeService.java b/src/main/java/_11/asktpk/artisanconnectbackend/service/NoticeService.java new file mode 100644 index 0000000..06409c7 --- /dev/null +++ b/src/main/java/_11/asktpk/artisanconnectbackend/service/NoticeService.java @@ -0,0 +1,73 @@ +package _11.asktpk.artisanconnectbackend.service; + +import _11.asktpk.artisanconnectbackend.entities.Client; +import _11.asktpk.artisanconnectbackend.entities.Notice; +import _11.asktpk.artisanconnectbackend.repository.ClientRepository; +import _11.asktpk.artisanconnectbackend.repository.NoticeRepository; +import _11.asktpk.artisanconnectbackend.dto.NoticeDTO; +import jakarta.persistence.EntityNotFoundException; +import lombok.Builder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class NoticeService { + + private final NoticeRepository noticeRepository; + private final ClientRepository clientRepository; + + public NoticeService(NoticeRepository noticeRepository, ClientRepository clientRepository) { + this.noticeRepository = noticeRepository; + this.clientRepository = clientRepository; + } + + public Notice createFromDTO(NoticeDTO dto) { + Notice notice = new Notice(); + notice.setTitle(dto.getTitle()); + notice.setDescription(dto.getDescription()); + notice.setPrice(dto.getPrice()); + notice.setCategory(dto.getCategory()); + notice.setImages(dto.getImages()); + notice.setStatus(dto.getStatus()); + notice.setPublishDate(dto.getPublishDate()); + notice.setAttributesNotices(dto.getAttributesNotices()); + + Client client = clientRepository.findById(dto.getClientId()) + .orElseThrow(() -> new EntityNotFoundException("Nie znaleziono klienta o ID: " + dto.getClientId())); + notice.setClient(client); + + return notice; + } + + // Metoda do konwersji Notice na DTO + public NoticeDTO toDTO(Notice notice) { + NoticeDTO dto = new NoticeDTO(); + dto.setNoticeId(notice.getIdNotice()); + dto.setTitle(notice.getTitle()); + dto.setClientId(notice.getClient().getId()); + dto.setDescription(notice.getDescription()); + dto.setPrice(notice.getPrice()); + dto.setCategory(notice.getCategory()); + dto.setImages(notice.getImages()); + dto.setStatus(notice.getStatus()); + dto.setPublishDate(notice.getPublishDate()); + dto.setAttributesNotices(notice.getAttributesNotices()); + + return dto; + } + + public List getAllNotices() { + List result = new ArrayList<>(); + for (Notice notice : noticeRepository.findAll()) { + result.add(toDTO(notice)); + } + return result; + } + + public void addNotice(Notice notice) { + noticeRepository.save(notice); + } +} diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/Utils/Enums.java b/src/main/java/_11/asktpk/artisanconnectbackend/utils/Enums.java similarity index 85% rename from src/main/java/_11/asktpk/artisanconnectbackend/Utils/Enums.java rename to src/main/java/_11/asktpk/artisanconnectbackend/utils/Enums.java index 997686b..78da471 100644 --- a/src/main/java/_11/asktpk/artisanconnectbackend/Utils/Enums.java +++ b/src/main/java/_11/asktpk/artisanconnectbackend/utils/Enums.java @@ -1,4 +1,4 @@ -package _11.asktpk.artisanconnectbackend.Utils; +package _11.asktpk.artisanconnectbackend.utils; public class Enums { public enum Role { diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index cc92d47..3e18cc0 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -5,5 +5,9 @@ spring.datasource.url=jdbc:postgresql://localhost:5432/default_db spring.datasource.username=postgres spring.datasource.password=postgres +spring.sql.init.data-locations=classpath:sql/data.sql +spring.sql.init.mode=always +spring.jpa.defer-datasource-initialization=true + # create and drop table, good for testing, production set to none or comment it -spring.jpa.hibernate.ddl-auto=create-drop +spring.jpa.hibernate.ddl-auto=create-drop \ No newline at end of file