From 86b38e2d037fbb5b1da9ed4e9e05f0c6762f771c Mon Sep 17 00:00:00 2001 From: davisilva <84607533+Megueutu@users.noreply.github.com> Date: Sat, 29 Aug 2026 19:15:00 -0300 Subject: [PATCH 1/8] Feat/cloudnary n i18n (#32) * feat: add photo management with Cloudinary integration - Created UserPhoto entity and corresponding repository. - Introduced PhotoType enum for categorizing photo types. - Developed services for managing company, local unit, model, and user photos, including upload and delete functionalities. - Implemented CloudinaryService for handling file uploads and deletions. - Added response DTOs for various photo types. - Enhanced EnergyBillService to support photo attachment and removal. - Updated CompanyService and LocalUnitService to include photo repository checks during deletions. - Configured application properties for Cloudinary settings and increased file upload limits. * Merge branch 'feat/cloudnaryPhotos' of https://github.com/Solierrr/api-core * chore: updating gitignore for sonarqube cloud * feat: add panel type and translation status enums * refactor: replace model dimension field with width, length and panel type * feat: add slug field to company and technician * feat: add automatic multi-language translation for offers via google translate * chore: add google translate api key env var * fix: add missing openapi interfaces for photo controllers * fix: harden google translate response parsing against null and malformed responses * fix: corrige build e quality gate do CI (SonarCloud) - adiciona metodos attachPhoto/removePhoto faltantes na interface EnergyBillOpenApi, corrigindo erro de compilacao - restaura dependencia h2 (removida por engano ao mesclar cloudinary-http5), corrigindo falha nos testes - agrupa alternancia no regex de EDGE_HYPHENS em SlugUtil para eliminar ambiguidade de precedencia (S5850) - reduz limite de upload multipart de 10MB para 8MB para atender ao rating de seguranca do SonarCloud (S5693) --------- Co-authored-by: ArthurMachado2501 --- .env.example | 3 +- .gitignore | 217 +++++++++--------- pom.xml | 10 + .../persistence/config/AsyncConfig.java | 9 + .../persistence/config/CloudinaryConfig.java | 22 ++ .../config/CloudinaryProperties.java | 52 +++++ .../config/GoogleTranslateConfig.java | 18 ++ .../config/GoogleTranslateProperties.java | 22 ++ .../controller/CompanyPhotoController.java | 51 ++++ .../controller/EnergyBillController.java | 18 ++ .../controller/LocalUnitPhotoController.java | 51 ++++ .../controller/ModelPhotoController.java | 51 ++++ .../controller/UserPhotoController.java | 51 ++++ .../persistence/domain/entity/Company.java | 3 + .../domain/entity/CompanyPhoto.java | 38 +++ .../persistence/domain/entity/EnergyBill.java | 6 + .../domain/entity/LocalUnitPhoto.java | 33 +++ .../persistence/domain/entity/Model.java | 12 +- .../persistence/domain/entity/ModelPhoto.java | 33 +++ .../persistence/domain/entity/Offer.java | 22 ++ .../domain/entity/OfferTranslation.java | 35 +++ .../persistence/domain/entity/Technician.java | 3 + .../persistence/domain/entity/UserPhoto.java | 38 +++ .../persistence/domain/enums/PanelType.java | 7 + .../persistence/domain/enums/PhotoType.java | 6 + .../domain/enums/TranslationStatus.java | 7 + .../dto/request/ModelRequestDTO.java | 12 +- .../dto/request/OfferRequestDTO.java | 18 ++ .../dto/response/CompanyPhotoResponseDTO.java | 20 ++ .../dto/response/CompanyResponseDTO.java | 1 + .../dto/response/EnergyBillResponseDTO.java | 1 + .../response/LocalUnitPhotoResponseDTO.java | 18 ++ .../dto/response/ModelPhotoResponseDTO.java | 18 ++ .../dto/response/ModelResponseDTO.java | 5 +- .../dto/response/OfferResponseDTO.java | 8 + .../response/OfferTranslationResponseDTO.java | 15 ++ .../dto/response/TechnicianResponseDTO.java | 1 + .../dto/response/UserPhotoResponseDTO.java | 20 ++ .../exception/StorageException.java | 16 ++ .../openapi/CompanyPhotoOpenApi.java | 42 ++++ .../openapi/EnergyBillOpenApi.java | 18 ++ .../openapi/LocalUnitPhotoOpenApi.java | 41 ++++ .../openapi/ModelPhotoOpenApi.java | 41 ++++ .../persistence/openapi/UserPhotoOpenApi.java | 42 ++++ .../repository/CompanyPhotoRepository.java | 19 ++ .../repository/CompanyRepository.java | 4 + .../repository/LocalUnitPhotoRepository.java | 18 ++ .../repository/ModelPhotoRepository.java | 18 ++ .../repository/OfferRepository.java | 2 + .../OfferTranslationRepository.java | 17 ++ .../repository/TechnicianRepository.java | 5 + .../repository/UserPhotoRepository.java | 19 ++ .../rbac/RbacAuthorizationService.java | 15 ++ .../service/CloudinaryService.java | 108 +++++++++ .../service/CompanyPhotoService.java | 113 +++++++++ .../persistence/service/CompanyService.java | 23 +- .../service/EnergyBillService.java | 75 +++++- .../service/GoogleTranslateService.java | 100 ++++++++ .../persistence/service/InventoryService.java | 4 +- .../service/LocalUnitPhotoService.java | 104 +++++++++ .../persistence/service/LocalUnitService.java | 9 +- .../service/ModelPhotoService.java | 96 ++++++++ .../persistence/service/ModelService.java | 31 ++- .../persistence/service/OfferService.java | 85 ++++++- .../service/OfferTranslationService.java | 106 +++++++++ .../service/ProposalItemService.java | 4 +- .../service/TechnicianService.java | 14 ++ .../persistence/service/UserPhotoService.java | 111 +++++++++ .../persistence/service/UserService.java | 7 + .../solaria/persistence/util/SlugUtil.java | 29 +++ .../persistence/util/SupportedLocales.java | 43 ++++ ...itional-spring-configuration-metadata.json | 5 + src/main/resources/application.properties | 10 + 73 files changed, 2214 insertions(+), 135 deletions(-) create mode 100644 src/main/java/com/solaria/persistence/config/AsyncConfig.java create mode 100644 src/main/java/com/solaria/persistence/config/CloudinaryConfig.java create mode 100644 src/main/java/com/solaria/persistence/config/CloudinaryProperties.java create mode 100644 src/main/java/com/solaria/persistence/config/GoogleTranslateConfig.java create mode 100644 src/main/java/com/solaria/persistence/config/GoogleTranslateProperties.java create mode 100644 src/main/java/com/solaria/persistence/controller/CompanyPhotoController.java create mode 100644 src/main/java/com/solaria/persistence/controller/LocalUnitPhotoController.java create mode 100644 src/main/java/com/solaria/persistence/controller/ModelPhotoController.java create mode 100644 src/main/java/com/solaria/persistence/controller/UserPhotoController.java create mode 100644 src/main/java/com/solaria/persistence/domain/entity/CompanyPhoto.java create mode 100644 src/main/java/com/solaria/persistence/domain/entity/LocalUnitPhoto.java create mode 100644 src/main/java/com/solaria/persistence/domain/entity/ModelPhoto.java create mode 100644 src/main/java/com/solaria/persistence/domain/entity/OfferTranslation.java create mode 100644 src/main/java/com/solaria/persistence/domain/entity/UserPhoto.java create mode 100644 src/main/java/com/solaria/persistence/domain/enums/PanelType.java create mode 100644 src/main/java/com/solaria/persistence/domain/enums/PhotoType.java create mode 100644 src/main/java/com/solaria/persistence/domain/enums/TranslationStatus.java create mode 100644 src/main/java/com/solaria/persistence/dto/response/CompanyPhotoResponseDTO.java create mode 100644 src/main/java/com/solaria/persistence/dto/response/LocalUnitPhotoResponseDTO.java create mode 100644 src/main/java/com/solaria/persistence/dto/response/ModelPhotoResponseDTO.java create mode 100644 src/main/java/com/solaria/persistence/dto/response/OfferTranslationResponseDTO.java create mode 100644 src/main/java/com/solaria/persistence/dto/response/UserPhotoResponseDTO.java create mode 100644 src/main/java/com/solaria/persistence/exception/StorageException.java create mode 100644 src/main/java/com/solaria/persistence/openapi/CompanyPhotoOpenApi.java create mode 100644 src/main/java/com/solaria/persistence/openapi/LocalUnitPhotoOpenApi.java create mode 100644 src/main/java/com/solaria/persistence/openapi/ModelPhotoOpenApi.java create mode 100644 src/main/java/com/solaria/persistence/openapi/UserPhotoOpenApi.java create mode 100644 src/main/java/com/solaria/persistence/repository/CompanyPhotoRepository.java create mode 100644 src/main/java/com/solaria/persistence/repository/LocalUnitPhotoRepository.java create mode 100644 src/main/java/com/solaria/persistence/repository/ModelPhotoRepository.java create mode 100644 src/main/java/com/solaria/persistence/repository/OfferTranslationRepository.java create mode 100644 src/main/java/com/solaria/persistence/repository/UserPhotoRepository.java create mode 100644 src/main/java/com/solaria/persistence/service/CloudinaryService.java create mode 100644 src/main/java/com/solaria/persistence/service/CompanyPhotoService.java create mode 100644 src/main/java/com/solaria/persistence/service/GoogleTranslateService.java create mode 100644 src/main/java/com/solaria/persistence/service/LocalUnitPhotoService.java create mode 100644 src/main/java/com/solaria/persistence/service/ModelPhotoService.java create mode 100644 src/main/java/com/solaria/persistence/service/OfferTranslationService.java create mode 100644 src/main/java/com/solaria/persistence/service/UserPhotoService.java create mode 100644 src/main/java/com/solaria/persistence/util/SlugUtil.java create mode 100644 src/main/java/com/solaria/persistence/util/SupportedLocales.java diff --git a/.env.example b/.env.example index 660ed5e..cdd548d 100644 --- a/.env.example +++ b/.env.example @@ -1 +1,2 @@ -REDIS_URL=rediss://default:SENHA@SEU-HOST-UPSTASH:6379 \ No newline at end of file +REDIS_URL=rediss://default:SENHA@SEU-HOST-UPSTASH:6379 +GOOGLE_TRANSLATE_API_KEY=SUA-CHAVE-DA-GOOGLE-TRANSLATE-API diff --git a/.gitignore b/.gitignore index e80ad9a..3f32aa9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,107 +1,110 @@ -# Environment variables / secrets -.env -.env.* -!.env.example - -# VS Code -.vscode/ -!.vscode/settings.json -!.vscode/extensions.json - -# JetBrains -.idea/ -*.iml -*.iws -*.ipr - -# Eclipse -.classpath -.project -.settings/ -.factorypath - -# NetBeans -/nbproject/private/ -/nbbuild/ -/dist/ -/.nb-gradle/ - -# Visual Studio -.vs/ -*.user -*.userosscache -*.suo -*.userprefs - -# Visual Studio Code / Cursor -.cursor/ - -# Claude Code -.claude/ - -# Fleet -.fleet/ - -# Sublime Text -*.sublime-workspace -*.sublime-project - -# Vim -*.swp -*.swo -*~ - -# Emacs -*~ -\#*\# - -# macOS -.DS_Store - -# Windows -Thumbs.db -Desktop.ini - -# Linux -.directory - -# Compiled class files / packages -*.class -*.jar -*.war -*.nar -*.ear - -# Maven -target/ -pom.xml.tag -pom.xml.releaseBackup -pom.xml.versionsBackup -pom.xml.next -release.properties -dependency-reduced-pom.xml -buildNumber.properties -.mvn/wrapper/maven-wrapper.jar -.mvn/timing.properties - -# Gradle -.gradle/ -!gradle/wrapper/gradle-wrapper.jar -!gradle/wrapper/gradle-wrapper.properties - -# Kotlin -.kotlin/ - -# Logs / crash dumps -*.log -hs_err_pid* -replay_pid* - -# HELP.md (gerado pelo Spring Initializr) -HELP.md - -# Project-specific: keep generated sources tracked under src/main and src/test -!**/src/main/**/target/ -!**/src/test/**/target/ -!**/src/main/**/build/ -!**/src/test/**/build/ +# Environment variables / secrets +.env +.env.* +!.env.example + +# VS Code +.vscode/ +!.vscode/settings.json +!.vscode/extensions.json + +# JetBrains +.idea/ +*.iml +*.iws +*.ipr + +# Eclipse +.classpath +.project +.settings/ +.factorypath + +# NetBeans +/nbproject/private/ +/nbbuild/ +/dist/ +/.nb-gradle/ + +# Visual Studio +.vs/ +*.user +*.userosscache +*.suo +*.userprefs + +# Visual Studio Code / Cursor +.cursor/ + +# SonarQube +.sonar/ + +# Claude Code +.claude/ + +# Fleet +.fleet/ + +# Sublime Text +*.sublime-workspace +*.sublime-project + +# Vim +*.swp +*.swo +*~ + +# Emacs +*~ +\#*\# + +# macOS +.DS_Store + +# Windows +Thumbs.db +Desktop.ini + +# Linux +.directory + +# Compiled class files / packages +*.class +*.jar +*.war +*.nar +*.ear + +# Maven +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/wrapper/maven-wrapper.jar +.mvn/timing.properties + +# Gradle +.gradle/ +!gradle/wrapper/gradle-wrapper.jar +!gradle/wrapper/gradle-wrapper.properties + +# Kotlin +.kotlin/ + +# Logs / crash dumps +*.log +hs_err_pid* +replay_pid* + +# HELP.md (gerado pelo Spring Initializr) +HELP.md + +# Project-specific: keep generated sources tracked under src/main and src/test +!**/src/main/**/target/ +!**/src/test/**/target/ +!**/src/main/**/build/ +!**/src/test/**/build/ diff --git a/pom.xml b/pom.xml index e4de2a1..43ef4c0 100644 --- a/pom.xml +++ b/pom.xml @@ -34,6 +34,11 @@ org.springframework.boot spring-boot-starter-data-jpa + + org.postgresql + postgresql + runtime + org.springframework.boot spring-boot-starter-web @@ -90,6 +95,11 @@ org.springframework.boot spring-boot-starter-data-redis + + com.cloudinary + cloudinary-http5 + 2.3.0 + com.h2database h2 diff --git a/src/main/java/com/solaria/persistence/config/AsyncConfig.java b/src/main/java/com/solaria/persistence/config/AsyncConfig.java new file mode 100644 index 0000000..bb99e72 --- /dev/null +++ b/src/main/java/com/solaria/persistence/config/AsyncConfig.java @@ -0,0 +1,9 @@ +package com.solaria.persistence.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableAsync; + +@Configuration +@EnableAsync +public class AsyncConfig { +} diff --git a/src/main/java/com/solaria/persistence/config/CloudinaryConfig.java b/src/main/java/com/solaria/persistence/config/CloudinaryConfig.java new file mode 100644 index 0000000..d25dd93 --- /dev/null +++ b/src/main/java/com/solaria/persistence/config/CloudinaryConfig.java @@ -0,0 +1,22 @@ +package com.solaria.persistence.config; + +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.cloudinary.Cloudinary; +import com.cloudinary.utils.ObjectUtils; + +@Configuration +@EnableConfigurationProperties(CloudinaryProperties.class) +public class CloudinaryConfig { + + @Bean + public Cloudinary cloudinary(CloudinaryProperties properties) { + return new Cloudinary(ObjectUtils.asMap( + "cloud_name", properties.getCloudName(), + "api_key", properties.getApiKey(), + "api_secret", properties.getApiSecret(), + "secure", true)); + } +} diff --git a/src/main/java/com/solaria/persistence/config/CloudinaryProperties.java b/src/main/java/com/solaria/persistence/config/CloudinaryProperties.java new file mode 100644 index 0000000..ff5cb44 --- /dev/null +++ b/src/main/java/com/solaria/persistence/config/CloudinaryProperties.java @@ -0,0 +1,52 @@ +package com.solaria.persistence.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * Credenciais e configuração de organização de pastas do Cloudinary. + */ + +// Habilita essa classe com as variaveis em application.properties com prefixo cloudinary +@ConfigurationProperties(prefix = "cloudinary") +public class CloudinaryProperties { + + private String cloudName; + + private String apiKey; + + private String apiSecret; + + private String folderPrefix = "solier"; + + public String getCloudName() { + return cloudName; + } + + public void setCloudName(String cloudName) { + this.cloudName = cloudName; + } + + public String getApiKey() { + return apiKey; + } + + public void setApiKey(String apiKey) { + this.apiKey = apiKey; + } + + public String getApiSecret() { + return apiSecret; + } + + public void setApiSecret(String apiSecret) { + this.apiSecret = apiSecret; + } + + public String getFolderPrefix() { + return folderPrefix; + } + + public void setFolderPrefix(String folderPrefix) { + this.folderPrefix = folderPrefix; + } +} diff --git a/src/main/java/com/solaria/persistence/config/GoogleTranslateConfig.java b/src/main/java/com/solaria/persistence/config/GoogleTranslateConfig.java new file mode 100644 index 0000000..268b9f9 --- /dev/null +++ b/src/main/java/com/solaria/persistence/config/GoogleTranslateConfig.java @@ -0,0 +1,18 @@ +package com.solaria.persistence.config; + +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestClient; + +@Configuration +@EnableConfigurationProperties(GoogleTranslateProperties.class) +public class GoogleTranslateConfig { + + @Bean + public RestClient googleTranslateRestClient() { + return RestClient.builder() + .baseUrl("https://translation.googleapis.com/language/translate/v2") + .build(); + } +} diff --git a/src/main/java/com/solaria/persistence/config/GoogleTranslateProperties.java b/src/main/java/com/solaria/persistence/config/GoogleTranslateProperties.java new file mode 100644 index 0000000..ae3e279 --- /dev/null +++ b/src/main/java/com/solaria/persistence/config/GoogleTranslateProperties.java @@ -0,0 +1,22 @@ +package com.solaria.persistence.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * Credenciais da Google Cloud Translation API (v2). + */ + +// Habilita essa classe com as variaveis em application.properties com prefixo google-translate +@ConfigurationProperties(prefix = "google-translate") +public class GoogleTranslateProperties { + + private String apiKey; + + public String getApiKey() { + return apiKey; + } + + public void setApiKey(String apiKey) { + this.apiKey = apiKey; + } +} diff --git a/src/main/java/com/solaria/persistence/controller/CompanyPhotoController.java b/src/main/java/com/solaria/persistence/controller/CompanyPhotoController.java new file mode 100644 index 0000000..44800f2 --- /dev/null +++ b/src/main/java/com/solaria/persistence/controller/CompanyPhotoController.java @@ -0,0 +1,51 @@ +package com.solaria.persistence.controller; + +import java.util.List; +import java.util.UUID; + +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.solaria.persistence.domain.enums.PhotoType; +import com.solaria.persistence.dto.response.CompanyPhotoResponseDTO; +import com.solaria.persistence.openapi.CompanyPhotoOpenApi; +import com.solaria.persistence.service.CompanyPhotoService; + +import lombok.RequiredArgsConstructor; + +@RestController +@RequestMapping("/api/company-photos") +@RequiredArgsConstructor +public class CompanyPhotoController implements CompanyPhotoOpenApi { + + private final CompanyPhotoService companyPhotoService; + + @Override + @PutMapping(value = "/company/{companyId}/type/{type}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public ResponseEntity upload(@PathVariable UUID companyId, + @PathVariable PhotoType type, + @RequestParam("file") MultipartFile file) { + return ResponseEntity.ok(companyPhotoService.upload(companyId, type, file)); + } + + @Override + @DeleteMapping("/company/{companyId}/type/{type}") + public ResponseEntity delete(@PathVariable UUID companyId, @PathVariable PhotoType type) { + companyPhotoService.delete(companyId, type); + return ResponseEntity.noContent().build(); + } + + @Override + @GetMapping("/company/{companyId}") + public ResponseEntity> findByCompany(@PathVariable UUID companyId) { + return ResponseEntity.ok(companyPhotoService.findByCompany(companyId)); + } +} diff --git a/src/main/java/com/solaria/persistence/controller/EnergyBillController.java b/src/main/java/com/solaria/persistence/controller/EnergyBillController.java index f6fe35a..3415e7e 100644 --- a/src/main/java/com/solaria/persistence/controller/EnergyBillController.java +++ b/src/main/java/com/solaria/persistence/controller/EnergyBillController.java @@ -4,14 +4,18 @@ import java.util.List; import java.util.UUID; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; import com.solaria.persistence.dto.request.EnergyBillRequestDTO; import com.solaria.persistence.dto.response.EnergyBillResponseDTO; @@ -53,4 +57,18 @@ public ResponseEntity findById(@PathVariable UUID id, @Pa public ResponseEntity> findByLocalUnit(@PathVariable UUID localUnitId) { return ResponseEntity.ok(energyBillService.findByLocalUnit(localUnitId)); } + + @Override + @PutMapping(value = "/{id}/photo", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public ResponseEntity attachPhoto(@PathVariable UUID id, + @RequestParam("file") MultipartFile file) { + return ResponseEntity.ok(energyBillService.attachPhoto(id, file)); + } + + @Override + @DeleteMapping("/{id}/photo") + public ResponseEntity removePhoto(@PathVariable UUID id) { + energyBillService.removePhoto(id); + return ResponseEntity.noContent().build(); + } } diff --git a/src/main/java/com/solaria/persistence/controller/LocalUnitPhotoController.java b/src/main/java/com/solaria/persistence/controller/LocalUnitPhotoController.java new file mode 100644 index 0000000..89e85e8 --- /dev/null +++ b/src/main/java/com/solaria/persistence/controller/LocalUnitPhotoController.java @@ -0,0 +1,51 @@ +package com.solaria.persistence.controller; + +import java.net.URI; +import java.util.List; +import java.util.UUID; + +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +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.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.solaria.persistence.dto.response.LocalUnitPhotoResponseDTO; +import com.solaria.persistence.openapi.LocalUnitPhotoOpenApi; +import com.solaria.persistence.service.LocalUnitPhotoService; + +import lombok.RequiredArgsConstructor; + +@RestController +@RequestMapping("/api/local-unit-photos") +@RequiredArgsConstructor +public class LocalUnitPhotoController implements LocalUnitPhotoOpenApi { + + private final LocalUnitPhotoService localUnitPhotoService; + + @Override + @PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public ResponseEntity upload(@RequestParam("localUnitId") UUID localUnitId, + @RequestParam("file") MultipartFile file) { + LocalUnitPhotoResponseDTO response = localUnitPhotoService.upload(localUnitId, file); + return ResponseEntity.created(URI.create("/api/local-unit-photos/" + response.getId())).body(response); + } + + @Override + @DeleteMapping("/{id}") + public ResponseEntity delete(@PathVariable UUID id) { + localUnitPhotoService.delete(id); + return ResponseEntity.noContent().build(); + } + + @Override + @GetMapping("/local-unit/{localUnitId}") + public ResponseEntity> findByLocalUnit(@PathVariable UUID localUnitId) { + return ResponseEntity.ok(localUnitPhotoService.findByLocalUnit(localUnitId)); + } +} diff --git a/src/main/java/com/solaria/persistence/controller/ModelPhotoController.java b/src/main/java/com/solaria/persistence/controller/ModelPhotoController.java new file mode 100644 index 0000000..c2a3bc2 --- /dev/null +++ b/src/main/java/com/solaria/persistence/controller/ModelPhotoController.java @@ -0,0 +1,51 @@ +package com.solaria.persistence.controller; + +import java.net.URI; +import java.util.List; +import java.util.UUID; + +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +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.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.solaria.persistence.dto.response.ModelPhotoResponseDTO; +import com.solaria.persistence.openapi.ModelPhotoOpenApi; +import com.solaria.persistence.service.ModelPhotoService; + +import lombok.RequiredArgsConstructor; + +@RestController +@RequestMapping("/api/model-photos") +@RequiredArgsConstructor +public class ModelPhotoController implements ModelPhotoOpenApi { + + private final ModelPhotoService modelPhotoService; + + @Override + @PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public ResponseEntity upload(@RequestParam("modelId") UUID modelId, + @RequestParam("file") MultipartFile file) { + ModelPhotoResponseDTO response = modelPhotoService.upload(modelId, file); + return ResponseEntity.created(URI.create("/api/model-photos/" + response.getId())).body(response); + } + + @Override + @DeleteMapping("/{id}") + public ResponseEntity delete(@PathVariable UUID id) { + modelPhotoService.delete(id); + return ResponseEntity.noContent().build(); + } + + @Override + @GetMapping("/model/{modelId}") + public ResponseEntity> findByModel(@PathVariable UUID modelId) { + return ResponseEntity.ok(modelPhotoService.findByModel(modelId)); + } +} diff --git a/src/main/java/com/solaria/persistence/controller/UserPhotoController.java b/src/main/java/com/solaria/persistence/controller/UserPhotoController.java new file mode 100644 index 0000000..ddbc14a --- /dev/null +++ b/src/main/java/com/solaria/persistence/controller/UserPhotoController.java @@ -0,0 +1,51 @@ +package com.solaria.persistence.controller; + +import java.util.List; +import java.util.UUID; + +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.solaria.persistence.domain.enums.PhotoType; +import com.solaria.persistence.dto.response.UserPhotoResponseDTO; +import com.solaria.persistence.openapi.UserPhotoOpenApi; +import com.solaria.persistence.service.UserPhotoService; + +import lombok.RequiredArgsConstructor; + +@RestController +@RequestMapping("/api/user-photos") +@RequiredArgsConstructor +public class UserPhotoController implements UserPhotoOpenApi { + + private final UserPhotoService userPhotoService; + + @Override + @PutMapping(value = "/user/{userId}/type/{type}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public ResponseEntity upload(@PathVariable UUID userId, + @PathVariable PhotoType type, + @RequestParam("file") MultipartFile file) { + return ResponseEntity.ok(userPhotoService.upload(userId, type, file)); + } + + @Override + @DeleteMapping("/user/{userId}/type/{type}") + public ResponseEntity delete(@PathVariable UUID userId, @PathVariable PhotoType type) { + userPhotoService.delete(userId, type); + return ResponseEntity.noContent().build(); + } + + @Override + @GetMapping("/user/{userId}") + public ResponseEntity> findByUser(@PathVariable UUID userId) { + return ResponseEntity.ok(userPhotoService.findByUser(userId)); + } +} diff --git a/src/main/java/com/solaria/persistence/domain/entity/Company.java b/src/main/java/com/solaria/persistence/domain/entity/Company.java index 5f600a5..f7477d7 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Company.java +++ b/src/main/java/com/solaria/persistence/domain/entity/Company.java @@ -42,4 +42,7 @@ public class Company { @Column(name = "corporate_name", length = 120, nullable = false) private String corporateName; + + @Column(name = "slug", length = 160, nullable = false, unique = true) + private String slug; } diff --git a/src/main/java/com/solaria/persistence/domain/entity/CompanyPhoto.java b/src/main/java/com/solaria/persistence/domain/entity/CompanyPhoto.java new file mode 100644 index 0000000..25e4a56 --- /dev/null +++ b/src/main/java/com/solaria/persistence/domain/entity/CompanyPhoto.java @@ -0,0 +1,38 @@ +package com.solaria.persistence.domain.entity; + +import com.solaria.persistence.domain.enums.PhotoType; +import jakarta.persistence.*; +import lombok.*; + +import java.time.OffsetDateTime; +import java.util.UUID; + +@Entity +@Table(name = "company_photo") +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class CompanyPhoto { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + private UUID id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "fk_company", nullable = false) + private Company company; + + @Enumerated(EnumType.STRING) + @Column(name = "type", nullable = false) + private PhotoType type; + + @Column(name = "url", nullable = false) + private String url; + + @Column(name = "public_id", nullable = false) + private String publicId; + + @Column(name = "created_at", nullable = false) + private OffsetDateTime createdAt; +} diff --git a/src/main/java/com/solaria/persistence/domain/entity/EnergyBill.java b/src/main/java/com/solaria/persistence/domain/entity/EnergyBill.java index 9390074..7a135eb 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/EnergyBill.java +++ b/src/main/java/com/solaria/persistence/domain/entity/EnergyBill.java @@ -27,4 +27,10 @@ public class EnergyBill { @Column(name = "price", nullable = false) private BigDecimal price; + + @Column(name = "photo_url") + private String photoUrl; + + @Column(name = "photo_public_id") + private String photoPublicId; } diff --git a/src/main/java/com/solaria/persistence/domain/entity/LocalUnitPhoto.java b/src/main/java/com/solaria/persistence/domain/entity/LocalUnitPhoto.java new file mode 100644 index 0000000..6c5f446 --- /dev/null +++ b/src/main/java/com/solaria/persistence/domain/entity/LocalUnitPhoto.java @@ -0,0 +1,33 @@ +package com.solaria.persistence.domain.entity; + +import jakarta.persistence.*; +import lombok.*; + +import java.time.OffsetDateTime; +import java.util.UUID; + +@Entity +@Table(name = "local_unit_photo") +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class LocalUnitPhoto { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + private UUID id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "fk_local_unit", nullable = false) + private LocalUnit localUnit; + + @Column(name = "url", nullable = false) + private String url; + + @Column(name = "public_id", nullable = false) + private String publicId; + + @Column(name = "created_at", nullable = false) + private OffsetDateTime createdAt; +} diff --git a/src/main/java/com/solaria/persistence/domain/entity/Model.java b/src/main/java/com/solaria/persistence/domain/entity/Model.java index 4916345..020a6fc 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Model.java +++ b/src/main/java/com/solaria/persistence/domain/entity/Model.java @@ -1,6 +1,7 @@ package com.solaria.persistence.domain.entity; import com.solaria.persistence.domain.enums.ModelStatus; +import com.solaria.persistence.domain.enums.PanelType; import jakarta.persistence.*; import lombok.*; @@ -25,14 +26,21 @@ public class Model { @Column(name = "model", nullable = false) private String model; + @Enumerated(EnumType.STRING) + @Column(name = "type", nullable = false) + private PanelType type; + @Column(name = "power_wp", nullable = false) private BigDecimal powerWp; @Column(name = "efficiency", nullable = false) private BigDecimal efficiency; - @Column(name = "dimension", nullable = false) - private BigDecimal dimension; + @Column(name = "width", nullable = false) + private BigDecimal width; + + @Column(name = "length", nullable = false) + private BigDecimal length; @Column(name = "weight", nullable = false) private BigDecimal weight; diff --git a/src/main/java/com/solaria/persistence/domain/entity/ModelPhoto.java b/src/main/java/com/solaria/persistence/domain/entity/ModelPhoto.java new file mode 100644 index 0000000..d65ae07 --- /dev/null +++ b/src/main/java/com/solaria/persistence/domain/entity/ModelPhoto.java @@ -0,0 +1,33 @@ +package com.solaria.persistence.domain.entity; + +import jakarta.persistence.*; +import lombok.*; + +import java.time.OffsetDateTime; +import java.util.UUID; + +@Entity +@Table(name = "model_photo") +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class ModelPhoto { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + private UUID id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "fk_model", nullable = false) + private Model model; + + @Column(name = "url", nullable = false) + private String url; + + @Column(name = "public_id", nullable = false) + private String publicId; + + @Column(name = "created_at", nullable = false) + private OffsetDateTime createdAt; +} diff --git a/src/main/java/com/solaria/persistence/domain/entity/Offer.java b/src/main/java/com/solaria/persistence/domain/entity/Offer.java index d0a8dbb..ca8fcdf 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Offer.java +++ b/src/main/java/com/solaria/persistence/domain/entity/Offer.java @@ -1,10 +1,13 @@ package com.solaria.persistence.domain.entity; +import com.solaria.persistence.domain.enums.TranslationStatus; import jakarta.persistence.*; import lombok.*; +import org.hibernate.annotations.ColumnDefault; import java.math.BigDecimal; import java.time.OffsetDateTime; +import java.util.List; import java.util.UUID; @Entity @@ -35,4 +38,23 @@ public class Offer { @Column(name = "expiration_date") private OffsetDateTime expirationDate; + + @Column(name = "slug", length = 160, nullable = false, unique = true) + private String slug; + + @Column(name = "discount_percentage") + private BigDecimal discountPercentage; + + @ElementCollection + @CollectionTable(name = "offer_service_region", joinColumns = @JoinColumn(name = "fk_offer")) + @Column(name = "region", length = 120) + private List serviceRegions; + + @Column(name = "source_locale", length = 10) + private String sourceLocale; + + @Enumerated(EnumType.STRING) + @Column(name = "translation_status", nullable = false) + @ColumnDefault("'PENDING'") + private TranslationStatus translationStatus = TranslationStatus.PENDING; } diff --git a/src/main/java/com/solaria/persistence/domain/entity/OfferTranslation.java b/src/main/java/com/solaria/persistence/domain/entity/OfferTranslation.java new file mode 100644 index 0000000..0ddcf2e --- /dev/null +++ b/src/main/java/com/solaria/persistence/domain/entity/OfferTranslation.java @@ -0,0 +1,35 @@ +package com.solaria.persistence.domain.entity; + +import jakarta.persistence.*; +import lombok.*; + +import java.util.UUID; + +@Entity +@Table(name = "offer_translation", uniqueConstraints = @UniqueConstraint(columnNames = {"fk_offer", "locale"})) +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class OfferTranslation { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + private UUID id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "fk_offer", nullable = false) + private Offer offer; + + @Column(name = "locale", length = 10, nullable = false) + private String locale; + + @Column(name = "title", length = 160, nullable = false) + private String title; + + @Column(name = "description", columnDefinition = "text", nullable = false) + private String description; + + @Column(name = "details", columnDefinition = "text") + private String details; +} diff --git a/src/main/java/com/solaria/persistence/domain/entity/Technician.java b/src/main/java/com/solaria/persistence/domain/entity/Technician.java index 04a44bc..954c837 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Technician.java +++ b/src/main/java/com/solaria/persistence/domain/entity/Technician.java @@ -23,4 +23,7 @@ public class Technician { @Column(name = "crea", nullable = false) private String crea; + + @Column(name = "slug", length = 160, nullable = false, unique = true) + private String slug; } diff --git a/src/main/java/com/solaria/persistence/domain/entity/UserPhoto.java b/src/main/java/com/solaria/persistence/domain/entity/UserPhoto.java new file mode 100644 index 0000000..4e775e5 --- /dev/null +++ b/src/main/java/com/solaria/persistence/domain/entity/UserPhoto.java @@ -0,0 +1,38 @@ +package com.solaria.persistence.domain.entity; + +import com.solaria.persistence.domain.enums.PhotoType; +import jakarta.persistence.*; +import lombok.*; + +import java.time.OffsetDateTime; +import java.util.UUID; + +@Entity +@Table(name = "user_photo") +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class UserPhoto { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + private UUID id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "fk_user", nullable = false) + private User user; + + @Enumerated(EnumType.STRING) + @Column(name = "type", nullable = false) + private PhotoType type; + + @Column(name = "url", nullable = false) + private String url; + + @Column(name = "public_id", nullable = false) + private String publicId; + + @Column(name = "created_at", nullable = false) + private OffsetDateTime createdAt; +} diff --git a/src/main/java/com/solaria/persistence/domain/enums/PanelType.java b/src/main/java/com/solaria/persistence/domain/enums/PanelType.java new file mode 100644 index 0000000..1c456f7 --- /dev/null +++ b/src/main/java/com/solaria/persistence/domain/enums/PanelType.java @@ -0,0 +1,7 @@ +package com.solaria.persistence.domain.enums; + +public enum PanelType { + MONOCRYSTALLINE, + POLYCRYSTALLINE, + THIN_FILM +} diff --git a/src/main/java/com/solaria/persistence/domain/enums/PhotoType.java b/src/main/java/com/solaria/persistence/domain/enums/PhotoType.java new file mode 100644 index 0000000..3452b92 --- /dev/null +++ b/src/main/java/com/solaria/persistence/domain/enums/PhotoType.java @@ -0,0 +1,6 @@ +package com.solaria.persistence.domain.enums; + +public enum PhotoType { + PROFILE, + BANNER +} diff --git a/src/main/java/com/solaria/persistence/domain/enums/TranslationStatus.java b/src/main/java/com/solaria/persistence/domain/enums/TranslationStatus.java new file mode 100644 index 0000000..260d940 --- /dev/null +++ b/src/main/java/com/solaria/persistence/domain/enums/TranslationStatus.java @@ -0,0 +1,7 @@ +package com.solaria.persistence.domain.enums; + +public enum TranslationStatus { + PENDING, + COMPLETED, + FAILED +} diff --git a/src/main/java/com/solaria/persistence/dto/request/ModelRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/ModelRequestDTO.java index 4d0df40..a70bae7 100644 --- a/src/main/java/com/solaria/persistence/dto/request/ModelRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/ModelRequestDTO.java @@ -1,5 +1,7 @@ package com.solaria.persistence.dto.request; +import com.solaria.persistence.domain.enums.PanelType; + import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Getter; @@ -17,14 +19,20 @@ public class ModelRequestDTO { @NotBlank(message = "Modelo é obrigatório") private String model; + @NotNull(message = "Tipo da placa é obrigatório") + private PanelType type; + @NotNull(message = "Potência (Wp) é obrigatória") private BigDecimal powerWp; @NotNull(message = "Eficiência é obrigatória") private BigDecimal efficiency; - @NotNull(message = "Dimensão é obrigatória") - private BigDecimal dimension; + @NotNull(message = "Largura é obrigatória") + private BigDecimal width; + + @NotNull(message = "Comprimento é obrigatório") + private BigDecimal length; @NotNull(message = "Peso é obrigatório") private BigDecimal weight; diff --git a/src/main/java/com/solaria/persistence/dto/request/OfferRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/OfferRequestDTO.java index 41f0f88..ae7d487 100644 --- a/src/main/java/com/solaria/persistence/dto/request/OfferRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/OfferRequestDTO.java @@ -1,5 +1,8 @@ package com.solaria.persistence.dto.request; +import jakarta.validation.constraints.DecimalMax; +import jakarta.validation.constraints.DecimalMin; +import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Positive; import jakarta.validation.constraints.PositiveOrZero; @@ -8,6 +11,7 @@ import java.math.BigDecimal; import java.time.OffsetDateTime; +import java.util.List; import java.util.UUID; @Setter @@ -20,6 +24,14 @@ public class OfferRequestDTO { @NotNull(message = "ID do Modelo é obrigatório") private UUID modelId; + @NotBlank(message = "Título é obrigatório") + private String title; + + @NotBlank(message = "Descrição é obrigatória") + private String description; + + private String details; + @NotNull(message = "Preço unitário é obrigatório") @Positive(message = "Preço unitário deve ser maior que zero") private BigDecimal unitPrice; @@ -30,4 +42,10 @@ public class OfferRequestDTO { private OffsetDateTime expirationDate; + @DecimalMin(value = "0", message = "Percentual de desconto não pode ser negativo") + @DecimalMax(value = "100", message = "Percentual de desconto não pode ser maior que 100") + private BigDecimal discountPercentage; + + private List serviceRegions; + } diff --git a/src/main/java/com/solaria/persistence/dto/response/CompanyPhotoResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/CompanyPhotoResponseDTO.java new file mode 100644 index 0000000..cd18491 --- /dev/null +++ b/src/main/java/com/solaria/persistence/dto/response/CompanyPhotoResponseDTO.java @@ -0,0 +1,20 @@ +package com.solaria.persistence.dto.response; + +import com.solaria.persistence.domain.enums.PhotoType; +import lombok.Getter; +import lombok.Setter; + +import java.time.OffsetDateTime; +import java.util.UUID; + +@Getter +@Setter +public class CompanyPhotoResponseDTO { + + private UUID id; + private UUID companyId; + private PhotoType type; + private String url; + private OffsetDateTime createdAt; + +} diff --git a/src/main/java/com/solaria/persistence/dto/response/CompanyResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/CompanyResponseDTO.java index caee705..24e2edd 100644 --- a/src/main/java/com/solaria/persistence/dto/response/CompanyResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/CompanyResponseDTO.java @@ -15,6 +15,7 @@ public class CompanyResponseDTO { private String cnpj; private String tradeName; private String corporateName; + private String slug; private AddressResponseDTO address; private BusinessContactResponseDTO businessContact; diff --git a/src/main/java/com/solaria/persistence/dto/response/EnergyBillResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/EnergyBillResponseDTO.java index e953c71..f1ca229 100644 --- a/src/main/java/com/solaria/persistence/dto/response/EnergyBillResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/EnergyBillResponseDTO.java @@ -14,5 +14,6 @@ public class EnergyBillResponseDTO { private UUID localUnitId; private BigDecimal consumption; private BigDecimal price; + private String photoUrl; } diff --git a/src/main/java/com/solaria/persistence/dto/response/LocalUnitPhotoResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/LocalUnitPhotoResponseDTO.java new file mode 100644 index 0000000..fbe7eca --- /dev/null +++ b/src/main/java/com/solaria/persistence/dto/response/LocalUnitPhotoResponseDTO.java @@ -0,0 +1,18 @@ +package com.solaria.persistence.dto.response; + +import lombok.Getter; +import lombok.Setter; + +import java.time.OffsetDateTime; +import java.util.UUID; + +@Getter +@Setter +public class LocalUnitPhotoResponseDTO { + + private UUID id; + private UUID localUnitId; + private String url; + private OffsetDateTime createdAt; + +} diff --git a/src/main/java/com/solaria/persistence/dto/response/ModelPhotoResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/ModelPhotoResponseDTO.java new file mode 100644 index 0000000..aa04df6 --- /dev/null +++ b/src/main/java/com/solaria/persistence/dto/response/ModelPhotoResponseDTO.java @@ -0,0 +1,18 @@ +package com.solaria.persistence.dto.response; + +import lombok.Getter; +import lombok.Setter; + +import java.time.OffsetDateTime; +import java.util.UUID; + +@Getter +@Setter +public class ModelPhotoResponseDTO { + + private UUID id; + private UUID modelId; + private String url; + private OffsetDateTime createdAt; + +} diff --git a/src/main/java/com/solaria/persistence/dto/response/ModelResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/ModelResponseDTO.java index 8f892f2..86f5e67 100644 --- a/src/main/java/com/solaria/persistence/dto/response/ModelResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/ModelResponseDTO.java @@ -1,6 +1,7 @@ package com.solaria.persistence.dto.response; import com.solaria.persistence.domain.enums.ModelStatus; +import com.solaria.persistence.domain.enums.PanelType; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; @@ -20,9 +21,11 @@ public class ModelResponseDTO { private UUID id; private String brand; private String model; + private PanelType type; private BigDecimal powerWp; private BigDecimal efficiency; - private BigDecimal dimension; + private BigDecimal width; + private BigDecimal length; private BigDecimal weight; private ModelStatus status; diff --git a/src/main/java/com/solaria/persistence/dto/response/OfferResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/OfferResponseDTO.java index 6078358..61d57c3 100644 --- a/src/main/java/com/solaria/persistence/dto/response/OfferResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/OfferResponseDTO.java @@ -1,10 +1,12 @@ package com.solaria.persistence.dto.response; +import com.solaria.persistence.domain.enums.TranslationStatus; import lombok.Getter; import lombok.Setter; import java.math.BigDecimal; import java.time.OffsetDateTime; +import java.util.List; import java.util.UUID; @Getter @@ -14,8 +16,14 @@ public class OfferResponseDTO { private UUID id; private UUID supplierId; private ModelResponseDTO model; + private String slug; private BigDecimal unitPrice; private Integer availability; private OffsetDateTime expirationDate; + private BigDecimal discountPercentage; + private List serviceRegions; + private String sourceLocale; + private TranslationStatus translationStatus; + private List translations; } diff --git a/src/main/java/com/solaria/persistence/dto/response/OfferTranslationResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/OfferTranslationResponseDTO.java new file mode 100644 index 0000000..7dce953 --- /dev/null +++ b/src/main/java/com/solaria/persistence/dto/response/OfferTranslationResponseDTO.java @@ -0,0 +1,15 @@ +package com.solaria.persistence.dto.response; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class OfferTranslationResponseDTO { + + private String locale; + private String title; + private String description; + private String details; + +} diff --git a/src/main/java/com/solaria/persistence/dto/response/TechnicianResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/TechnicianResponseDTO.java index 097391c..89e108c 100644 --- a/src/main/java/com/solaria/persistence/dto/response/TechnicianResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/TechnicianResponseDTO.java @@ -11,6 +11,7 @@ public class TechnicianResponseDTO { private UUID id; private String crea; + private String slug; private PersonResponseDTO person; } diff --git a/src/main/java/com/solaria/persistence/dto/response/UserPhotoResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/UserPhotoResponseDTO.java new file mode 100644 index 0000000..1f1eb16 --- /dev/null +++ b/src/main/java/com/solaria/persistence/dto/response/UserPhotoResponseDTO.java @@ -0,0 +1,20 @@ +package com.solaria.persistence.dto.response; + +import com.solaria.persistence.domain.enums.PhotoType; +import lombok.Getter; +import lombok.Setter; + +import java.time.OffsetDateTime; +import java.util.UUID; + +@Getter +@Setter +public class UserPhotoResponseDTO { + + private UUID id; + private UUID userId; + private PhotoType type; + private String url; + private OffsetDateTime createdAt; + +} diff --git a/src/main/java/com/solaria/persistence/exception/StorageException.java b/src/main/java/com/solaria/persistence/exception/StorageException.java new file mode 100644 index 0000000..59540fe --- /dev/null +++ b/src/main/java/com/solaria/persistence/exception/StorageException.java @@ -0,0 +1,16 @@ +package com.solaria.persistence.exception; + +import java.util.Map; + +import org.springframework.http.HttpStatus; + +public class StorageException extends BusinessException { + + public StorageException(String message) { + super(message, HttpStatus.BAD_GATEWAY, "STORAGE_ERROR"); + } + + public StorageException(String message, Map properties) { + super(message, HttpStatus.BAD_GATEWAY, "STORAGE_ERROR", properties); + } +} diff --git a/src/main/java/com/solaria/persistence/openapi/CompanyPhotoOpenApi.java b/src/main/java/com/solaria/persistence/openapi/CompanyPhotoOpenApi.java new file mode 100644 index 0000000..c9d1b9a --- /dev/null +++ b/src/main/java/com/solaria/persistence/openapi/CompanyPhotoOpenApi.java @@ -0,0 +1,42 @@ +package com.solaria.persistence.openapi; + +import java.util.List; +import java.util.UUID; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.multipart.MultipartFile; + +import com.solaria.persistence.domain.enums.PhotoType; +import com.solaria.persistence.dto.response.CompanyPhotoResponseDTO; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; + +@Tag(name = "Company Photos", description = "Gerenciamento das fotos (perfil/banner) de uma empresa, armazenadas no Cloudinary.") +public interface CompanyPhotoOpenApi { + + @Operation( + summary = "Envia (ou substitui) a foto de um tipo para a empresa", + description = "Faz upload da imagem para o Cloudinary e associa à empresa e ao tipo informado (PROFILE/BANNER)." + ) + @ApiResponses({ + @ApiResponse(responseCode = "200", description = "Foto enviada com sucesso"), + @ApiResponse(responseCode = "404", description = "Empresa não encontrada") + }) + ResponseEntity upload(UUID companyId, PhotoType type, MultipartFile file); + + @Operation(summary = "Remove a foto de um tipo da empresa") + @ApiResponses({ + @ApiResponse(responseCode = "204", description = "Foto removida com sucesso"), + @ApiResponse(responseCode = "404", description = "Foto não encontrada") + }) + ResponseEntity delete(UUID companyId, PhotoType type); + + @Operation(summary = "Lista as fotos cadastradas para a empresa") + @ApiResponses({ + @ApiResponse(responseCode = "200", description = "Lista de fotos retornada com sucesso") + }) + ResponseEntity> findByCompany(UUID companyId); +} diff --git a/src/main/java/com/solaria/persistence/openapi/EnergyBillOpenApi.java b/src/main/java/com/solaria/persistence/openapi/EnergyBillOpenApi.java index 722e583..e5f74af 100644 --- a/src/main/java/com/solaria/persistence/openapi/EnergyBillOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/EnergyBillOpenApi.java @@ -4,6 +4,7 @@ import java.util.UUID; import org.springframework.http.ResponseEntity; +import org.springframework.web.multipart.MultipartFile; import com.solaria.persistence.dto.request.EnergyBillRequestDTO; import com.solaria.persistence.dto.response.EnergyBillResponseDTO; @@ -49,4 +50,21 @@ public interface EnergyBillOpenApi { @ApiResponse(responseCode = "200", description = "Listagem retornada com sucesso") }) ResponseEntity> findByLocalUnit(UUID localUnitId); + + @Operation( + summary = "Anexa (ou substitui) a foto da conta de energia", + description = "Faz upload da imagem para o Cloudinary e associa à conta de energia informada." + ) + @ApiResponses({ + @ApiResponse(responseCode = "200", description = "Foto anexada com sucesso"), + @ApiResponse(responseCode = "404", description = "Conta de energia não encontrada") + }) + ResponseEntity attachPhoto(UUID id, MultipartFile file); + + @Operation(summary = "Remove a foto da conta de energia") + @ApiResponses({ + @ApiResponse(responseCode = "204", description = "Foto removida com sucesso"), + @ApiResponse(responseCode = "404", description = "Conta de energia não encontrada") + }) + ResponseEntity removePhoto(UUID id); } diff --git a/src/main/java/com/solaria/persistence/openapi/LocalUnitPhotoOpenApi.java b/src/main/java/com/solaria/persistence/openapi/LocalUnitPhotoOpenApi.java new file mode 100644 index 0000000..e706772 --- /dev/null +++ b/src/main/java/com/solaria/persistence/openapi/LocalUnitPhotoOpenApi.java @@ -0,0 +1,41 @@ +package com.solaria.persistence.openapi; + +import java.util.List; +import java.util.UUID; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.multipart.MultipartFile; + +import com.solaria.persistence.dto.response.LocalUnitPhotoResponseDTO; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; + +@Tag(name = "Local Unit Photos", description = "Gerenciamento das fotos de uma unidade local, armazenadas no Cloudinary.") +public interface LocalUnitPhotoOpenApi { + + @Operation( + summary = "Envia uma nova foto para a unidade local", + description = "Faz upload da imagem para o Cloudinary e associa à unidade local informada." + ) + @ApiResponses({ + @ApiResponse(responseCode = "201", description = "Foto criada com sucesso"), + @ApiResponse(responseCode = "404", description = "Unidade local não encontrada") + }) + ResponseEntity upload(UUID localUnitId, MultipartFile file); + + @Operation(summary = "Remove uma foto da unidade local") + @ApiResponses({ + @ApiResponse(responseCode = "204", description = "Foto removida com sucesso"), + @ApiResponse(responseCode = "404", description = "Foto não encontrada") + }) + ResponseEntity delete(UUID id); + + @Operation(summary = "Lista as fotos cadastradas para a unidade local") + @ApiResponses({ + @ApiResponse(responseCode = "200", description = "Lista de fotos retornada com sucesso") + }) + ResponseEntity> findByLocalUnit(UUID localUnitId); +} diff --git a/src/main/java/com/solaria/persistence/openapi/ModelPhotoOpenApi.java b/src/main/java/com/solaria/persistence/openapi/ModelPhotoOpenApi.java new file mode 100644 index 0000000..f121fde --- /dev/null +++ b/src/main/java/com/solaria/persistence/openapi/ModelPhotoOpenApi.java @@ -0,0 +1,41 @@ +package com.solaria.persistence.openapi; + +import java.util.List; +import java.util.UUID; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.multipart.MultipartFile; + +import com.solaria.persistence.dto.response.ModelPhotoResponseDTO; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; + +@Tag(name = "Model Photos", description = "Gerenciamento das fotos de um modelo de placa solar, armazenadas no Cloudinary.") +public interface ModelPhotoOpenApi { + + @Operation( + summary = "Envia uma nova foto para o modelo", + description = "Faz upload da imagem para o Cloudinary e associa ao modelo informado." + ) + @ApiResponses({ + @ApiResponse(responseCode = "201", description = "Foto criada com sucesso"), + @ApiResponse(responseCode = "404", description = "Modelo não encontrado") + }) + ResponseEntity upload(UUID modelId, MultipartFile file); + + @Operation(summary = "Remove uma foto do modelo") + @ApiResponses({ + @ApiResponse(responseCode = "204", description = "Foto removida com sucesso"), + @ApiResponse(responseCode = "404", description = "Foto não encontrada") + }) + ResponseEntity delete(UUID id); + + @Operation(summary = "Lista as fotos cadastradas para o modelo") + @ApiResponses({ + @ApiResponse(responseCode = "200", description = "Lista de fotos retornada com sucesso") + }) + ResponseEntity> findByModel(UUID modelId); +} diff --git a/src/main/java/com/solaria/persistence/openapi/UserPhotoOpenApi.java b/src/main/java/com/solaria/persistence/openapi/UserPhotoOpenApi.java new file mode 100644 index 0000000..65d958c --- /dev/null +++ b/src/main/java/com/solaria/persistence/openapi/UserPhotoOpenApi.java @@ -0,0 +1,42 @@ +package com.solaria.persistence.openapi; + +import java.util.List; +import java.util.UUID; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.multipart.MultipartFile; + +import com.solaria.persistence.domain.enums.PhotoType; +import com.solaria.persistence.dto.response.UserPhotoResponseDTO; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; + +@Tag(name = "User Photos", description = "Gerenciamento das fotos (perfil/banner) de um usuário, armazenadas no Cloudinary.") +public interface UserPhotoOpenApi { + + @Operation( + summary = "Envia (ou substitui) a foto de um tipo para o usuário", + description = "Faz upload da imagem para o Cloudinary e associa ao usuário e ao tipo informado (PROFILE/BANNER)." + ) + @ApiResponses({ + @ApiResponse(responseCode = "200", description = "Foto enviada com sucesso"), + @ApiResponse(responseCode = "404", description = "Usuário não encontrado") + }) + ResponseEntity upload(UUID userId, PhotoType type, MultipartFile file); + + @Operation(summary = "Remove a foto de um tipo do usuário") + @ApiResponses({ + @ApiResponse(responseCode = "204", description = "Foto removida com sucesso"), + @ApiResponse(responseCode = "404", description = "Foto não encontrada") + }) + ResponseEntity delete(UUID userId, PhotoType type); + + @Operation(summary = "Lista as fotos cadastradas para o usuário") + @ApiResponses({ + @ApiResponse(responseCode = "200", description = "Lista de fotos retornada com sucesso") + }) + ResponseEntity> findByUser(UUID userId); +} diff --git a/src/main/java/com/solaria/persistence/repository/CompanyPhotoRepository.java b/src/main/java/com/solaria/persistence/repository/CompanyPhotoRepository.java new file mode 100644 index 0000000..7fdf0cb --- /dev/null +++ b/src/main/java/com/solaria/persistence/repository/CompanyPhotoRepository.java @@ -0,0 +1,19 @@ +package com.solaria.persistence.repository; + +import com.solaria.persistence.domain.entity.CompanyPhoto; +import com.solaria.persistence.domain.enums.PhotoType; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; +import java.util.Optional; +import java.util.UUID; + + +public interface CompanyPhotoRepository extends JpaRepository { + + List findByCompanyIdOrderByTypeAsc(UUID companyId); + + Optional findByCompanyIdAndType(UUID companyId, PhotoType type); + + boolean existsByCompanyId(UUID companyId); +} diff --git a/src/main/java/com/solaria/persistence/repository/CompanyRepository.java b/src/main/java/com/solaria/persistence/repository/CompanyRepository.java index ac43c45..70a19ac 100644 --- a/src/main/java/com/solaria/persistence/repository/CompanyRepository.java +++ b/src/main/java/com/solaria/persistence/repository/CompanyRepository.java @@ -19,6 +19,10 @@ public interface CompanyRepository extends JpaRepository { boolean existsByBusinessContactId(UUID businessContactId); + boolean existsBySlug(String slug); + + Optional findBySlug(String slug); + @Override @EntityGraph(attributePaths = {"address", "businessContact"}) List findAll(); diff --git a/src/main/java/com/solaria/persistence/repository/LocalUnitPhotoRepository.java b/src/main/java/com/solaria/persistence/repository/LocalUnitPhotoRepository.java new file mode 100644 index 0000000..3232f91 --- /dev/null +++ b/src/main/java/com/solaria/persistence/repository/LocalUnitPhotoRepository.java @@ -0,0 +1,18 @@ +package com.solaria.persistence.repository; + +import com.solaria.persistence.domain.entity.LocalUnitPhoto; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; +import java.util.Optional; +import java.util.UUID; + + +public interface LocalUnitPhotoRepository extends JpaRepository { + + List findByLocalUnitIdOrderByCreatedAtDesc(UUID localUnitId); + + Optional findByIdAndLocalUnitId(UUID id, UUID localUnitId); + + boolean existsByLocalUnitId(UUID localUnitId); +} diff --git a/src/main/java/com/solaria/persistence/repository/ModelPhotoRepository.java b/src/main/java/com/solaria/persistence/repository/ModelPhotoRepository.java new file mode 100644 index 0000000..842bfea --- /dev/null +++ b/src/main/java/com/solaria/persistence/repository/ModelPhotoRepository.java @@ -0,0 +1,18 @@ +package com.solaria.persistence.repository; + +import com.solaria.persistence.domain.entity.ModelPhoto; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; +import java.util.Optional; +import java.util.UUID; + + +public interface ModelPhotoRepository extends JpaRepository { + + List findByModelIdOrderByCreatedAtDesc(UUID modelId); + + Optional findByIdAndModelId(UUID id, UUID modelId); + + boolean existsByModelId(UUID modelId); +} diff --git a/src/main/java/com/solaria/persistence/repository/OfferRepository.java b/src/main/java/com/solaria/persistence/repository/OfferRepository.java index 844353a..ca7db10 100644 --- a/src/main/java/com/solaria/persistence/repository/OfferRepository.java +++ b/src/main/java/com/solaria/persistence/repository/OfferRepository.java @@ -19,5 +19,7 @@ public interface OfferRepository extends JpaRepository { boolean existsByModelId(UUID modelId); + boolean existsBySlug(String slug); + List findByExpirationDateIsNullOrExpirationDateAfter(OffsetDateTime now); } diff --git a/src/main/java/com/solaria/persistence/repository/OfferTranslationRepository.java b/src/main/java/com/solaria/persistence/repository/OfferTranslationRepository.java new file mode 100644 index 0000000..3270c10 --- /dev/null +++ b/src/main/java/com/solaria/persistence/repository/OfferTranslationRepository.java @@ -0,0 +1,17 @@ +package com.solaria.persistence.repository; + +import com.solaria.persistence.domain.entity.OfferTranslation; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +public interface OfferTranslationRepository extends JpaRepository { + + List findByOfferId(UUID offerId); + + Optional findByOfferIdAndLocale(UUID offerId, String locale); + + boolean existsByOfferIdAndLocale(UUID offerId, String locale); +} diff --git a/src/main/java/com/solaria/persistence/repository/TechnicianRepository.java b/src/main/java/com/solaria/persistence/repository/TechnicianRepository.java index 09dbd93..84b54fb 100644 --- a/src/main/java/com/solaria/persistence/repository/TechnicianRepository.java +++ b/src/main/java/com/solaria/persistence/repository/TechnicianRepository.java @@ -3,9 +3,14 @@ import com.solaria.persistence.domain.entity.Technician; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; import java.util.UUID; public interface TechnicianRepository extends JpaRepository { boolean existsByPersonId(UUID personId); + + boolean existsBySlug(String slug); + + Optional findBySlug(String slug); } diff --git a/src/main/java/com/solaria/persistence/repository/UserPhotoRepository.java b/src/main/java/com/solaria/persistence/repository/UserPhotoRepository.java new file mode 100644 index 0000000..ac22237 --- /dev/null +++ b/src/main/java/com/solaria/persistence/repository/UserPhotoRepository.java @@ -0,0 +1,19 @@ +package com.solaria.persistence.repository; + +import com.solaria.persistence.domain.entity.UserPhoto; +import com.solaria.persistence.domain.enums.PhotoType; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; +import java.util.Optional; +import java.util.UUID; + + +public interface UserPhotoRepository extends JpaRepository { + + List findByUserIdOrderByTypeAsc(UUID userId); + + Optional findByUserIdAndType(UUID userId, PhotoType type); + + boolean existsByUserId(UUID userId); +} diff --git a/src/main/java/com/solaria/persistence/security/rbac/RbacAuthorizationService.java b/src/main/java/com/solaria/persistence/security/rbac/RbacAuthorizationService.java index 25abce6..64c79ad 100644 --- a/src/main/java/com/solaria/persistence/security/rbac/RbacAuthorizationService.java +++ b/src/main/java/com/solaria/persistence/security/rbac/RbacAuthorizationService.java @@ -8,6 +8,7 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; import com.solaria.persistence.domain.entity.Position; import com.solaria.persistence.domain.entity.User; @@ -51,6 +52,7 @@ public RbacAuthorizationService(UserRepository userRepository, } // Lógica de RBAC + @Transactional(readOnly = true) public void requireEndpointAccess(String endpointIdentifier) { if (BOOTSTRAP_ALWAYS_OPEN.contains(endpointIdentifier)) { return; @@ -64,6 +66,7 @@ public void requireEndpointAccess(String endpointIdentifier) { } // Checagem de permissão do usuário / ADMIN ignora isso por ter acesso a todos os Endpoints + @Transactional(readOnly = true) public boolean hasEndpointAccess(String endpointIdentifier) { return resolveUserCompany() .map(uc -> isAdmin(uc.getPosition()) @@ -72,6 +75,7 @@ public boolean hasEndpointAccess(String endpointIdentifier) { } // checagem de empresa pertencente ao usuário + @Transactional(readOnly = true) public void requireOwnCompany(UUID companyId) { boolean sameCompany = resolveUserCompany() .map(uc -> uc.getCompany().getId().equals(companyId)) @@ -81,10 +85,21 @@ public void requireOwnCompany(UUID companyId) { } } + @Transactional(readOnly = true) public boolean currentUserHasNoCompanyLink() { return resolveUserCompany().isEmpty(); } + + // checagem de usuário dono da entity -> apenas o próprio usuario pode alterar seus dados(admin não faz bypass) + @Transactional(readOnly = true) + public void requireOwnUser(UUID userId) { + boolean isSelf = currentUser().map(user -> user.getId().equals(userId)).orElse(false); + if (!isSelf) { + throw new UnauthorizedAccessException("O objeto da operação não foi encontrado."); + } + } + private Optional resolveUserCompany() { return currentUser().flatMap(user -> userCompanyRepository.findByUserId(user.getId())); } diff --git a/src/main/java/com/solaria/persistence/service/CloudinaryService.java b/src/main/java/com/solaria/persistence/service/CloudinaryService.java new file mode 100644 index 0000000..1b38515 --- /dev/null +++ b/src/main/java/com/solaria/persistence/service/CloudinaryService.java @@ -0,0 +1,108 @@ +package com.solaria.persistence.service; + +import java.io.IOException; +import java.util.Map; +import java.util.Set; + +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import com.cloudinary.Cloudinary; +import com.cloudinary.utils.ObjectUtils; +import com.solaria.persistence.exception.InvalidFieldException; +import com.solaria.persistence.exception.StorageException; + +/** + * Classe centralizadora que fala diretamente com o SDK do Cloudinary. + */ +@Service +public class CloudinaryService { + + private final Cloudinary cloudinary; + + public CloudinaryService(Cloudinary cloudinary) { + this.cloudinary = cloudinary; + } + + // dto simples -> representa o resultado do upload + public record UploadResult(String url, String publicId) { + } + + /** + * publicId != null + overwrite=true: upsert determinístico (usado por foto de + * perfil/banner + * de usuário/empresa e pela foto única de conta de energia -- o próprio + * Cloudinary substitui + * o asset atomicamente, sem precisar de um destroy() separado do asset antigo). + * publicId == null: Cloudinary gera um id novo (usado por unidade local/model, + * fotos avulsas). + */ + public UploadResult upload( + MultipartFile file, // arquivo enviado via http + String folder, // pasta do cloudnary + String publicId, // identificador do asset no cloudnary + boolean overwrite, // decide se o arquivo pode ter sobrescrita + Set allowedContentTypes, // conjunto de arquivos permitidos(.jpg / .png) + long maxBytes) // tamanho maxímo de arquivo permitido + { + + + // validação (vazio/tipo/tamanho) antes de chamar o SDK do cloudnary + validate(file, allowedContentTypes, maxBytes); + + // map das configs do cloudnary + Map options = ObjectUtils.asMap( + "folder", folder, + "resource_type", "auto", + "overwrite", overwrite, + "invalidate", overwrite); + + // adiciona publicId para fotos novas / fotos alteradas permanecem com publicId antigo + if (publicId != null) { + options.put("public_id", publicId); + } + + try { + // comunicação com cloudnary-> retorna um map com o resultado do upload / upload síncrono + Map result = cloudinary // sdk que conversa com o cloudnary + .uploader() + .upload( + file.getBytes(), // converte o arquivo para byte -> sdk recebe dados nesse formato + options // configs do cloudnary + ); + + // secure_url -> url pública do asset | public_id -> id interno -> usado em delete/sobrescrita + return new UploadResult((String) result.get("secure_url"), (String) result.get("public_id")); + + } catch (IOException e) { + // qualquer exception vira storageException e retornado como 502 + throw new StorageException("Falha ao enviar arquivo para o Cloudinary"); + } + } + + public void delete(String publicId) { + if (publicId == null || publicId.isBlank()) { + return; + } + try { + cloudinary.uploader().destroy(publicId, ObjectUtils.asMap("invalidate", true)); + } catch (IOException e) { + throw new StorageException("Falha ao remover arquivo do Cloudinary"); + } + } + + // método auxiliar de validação + private void validate(MultipartFile file, Set allowedContentTypes, long maxBytes) { + if (file == null || file.isEmpty()) { + throw new InvalidFieldException("Arquivo enviado está vazio"); + } + if (file.getSize() > maxBytes) { + throw new InvalidFieldException("Arquivo excede o tamanho máximo permitido: " + maxBytes + " bytes"); + } + + // cada classe service decide os tipos de arquivo permitidos + if (!allowedContentTypes.contains(file.getContentType())) { + throw new InvalidFieldException("Tipo de arquivo não permitido: " + file.getContentType()); + } + } +} diff --git a/src/main/java/com/solaria/persistence/service/CompanyPhotoService.java b/src/main/java/com/solaria/persistence/service/CompanyPhotoService.java new file mode 100644 index 0000000..17e31b1 --- /dev/null +++ b/src/main/java/com/solaria/persistence/service/CompanyPhotoService.java @@ -0,0 +1,113 @@ +package com.solaria.persistence.service; + +import java.time.OffsetDateTime; +import java.util.List; +import java.util.Set; +import java.util.UUID; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import com.solaria.persistence.config.CloudinaryProperties; +import com.solaria.persistence.domain.entity.Company; +import com.solaria.persistence.domain.entity.CompanyPhoto; +import com.solaria.persistence.domain.enums.PhotoType; +import com.solaria.persistence.dto.response.CompanyPhotoResponseDTO; +import com.solaria.persistence.exception.ResourceNotFoundException; +import com.solaria.persistence.repository.CompanyPhotoRepository; +import com.solaria.persistence.repository.CompanyRepository; +import com.solaria.persistence.security.rbac.RbacAuthorizationService; +import com.solaria.persistence.service.CloudinaryService.UploadResult; + +@Service +public class CompanyPhotoService { + + private static final Set ALLOWED_CONTENT_TYPES = Set.of("image/jpeg", "image/png", "image/webp"); + private static final long MAX_BYTES = 5L * 1024 * 1024; + + private final CompanyPhotoRepository companyPhotoRepository; + private final CompanyRepository companyRepository; + private final CloudinaryService cloudinaryService; + private final CloudinaryProperties cloudinaryProperties; + private final RbacAuthorizationService rbac; + + public CompanyPhotoService(CompanyPhotoRepository companyPhotoRepository, + CompanyRepository companyRepository, + CloudinaryService cloudinaryService, + CloudinaryProperties cloudinaryProperties, + RbacAuthorizationService rbac) { + this.companyPhotoRepository = companyPhotoRepository; + this.companyRepository = companyRepository; + this.cloudinaryService = cloudinaryService; + this.cloudinaryProperties = cloudinaryProperties; + this.rbac = rbac; + } + + @Transactional + public CompanyPhotoResponseDTO upload(UUID companyId, PhotoType type, MultipartFile file) { + rbac.requireOwnCompany(companyId); + + Company company = companyRepository.findById(companyId) + .orElseThrow(() -> new ResourceNotFoundException("Empresa não encontrada com ID: " + companyId)); + + + UploadResult result = cloudinaryService.upload(file, folder(companyId), publicId(companyId, type), true, + ALLOWED_CONTENT_TYPES, MAX_BYTES); + + CompanyPhoto photo = companyPhotoRepository.findByCompanyIdAndType(companyId, type) + .orElseGet(CompanyPhoto::new); + photo.setCompany(company); + photo.setType(type); + photo.setUrl(result.url()); + photo.setPublicId(result.publicId()); + if (photo.getCreatedAt() == null) { + photo.setCreatedAt(OffsetDateTime.now()); + } + + // se a foto por algum motivo não salva no BD, deleta ela no cloudnary + try { + return toResponse(companyPhotoRepository.save(photo)); + } catch (RuntimeException e) { + cloudinaryService.delete(result.publicId()); + throw e; + } + } + + @Transactional + public void delete(UUID companyId, PhotoType type) { + rbac.requireOwnCompany(companyId); + + CompanyPhoto photo = companyPhotoRepository.findByCompanyIdAndType(companyId, type) + .orElseThrow(() -> new ResourceNotFoundException( + "Foto não encontrada para a empresa " + companyId + " e tipo " + type)); + + cloudinaryService.delete(photo.getPublicId()); + companyPhotoRepository.delete(photo); + } + + @Transactional(readOnly = true) + public List findByCompany(UUID companyId) { + return companyPhotoRepository.findByCompanyIdOrderByTypeAsc(companyId).stream() + .map(this::toResponse) + .toList(); + } + + private String folder(UUID companyId) { + return cloudinaryProperties.getFolderPrefix() + "/empresas/" + companyId; + } + + private String publicId(UUID companyId, PhotoType type) { + return folder(companyId) + "/" + type.name().toLowerCase(); + } + + private CompanyPhotoResponseDTO toResponse(CompanyPhoto photo) { + CompanyPhotoResponseDTO response = new CompanyPhotoResponseDTO(); + response.setId(photo.getId()); + response.setCompanyId(photo.getCompany().getId()); + response.setType(photo.getType()); + response.setUrl(photo.getUrl()); + response.setCreatedAt(photo.getCreatedAt()); + return response; + } +} diff --git a/src/main/java/com/solaria/persistence/service/CompanyService.java b/src/main/java/com/solaria/persistence/service/CompanyService.java index de7ef93..06b0450 100644 --- a/src/main/java/com/solaria/persistence/service/CompanyService.java +++ b/src/main/java/com/solaria/persistence/service/CompanyService.java @@ -21,12 +21,14 @@ import com.solaria.persistence.exception.ResourceNotFoundException; import com.solaria.persistence.repository.AddressRepository; import com.solaria.persistence.repository.BusinessContactRepository; +import com.solaria.persistence.repository.CompanyPhotoRepository; import com.solaria.persistence.repository.CompanyPositionsRepository; import com.solaria.persistence.repository.CompanyRepository; import com.solaria.persistence.repository.RequesterRepository; import com.solaria.persistence.repository.SupplierRepository; import com.solaria.persistence.repository.TechnicianAffiliationRepository; import com.solaria.persistence.repository.UserCompanyRepository; +import com.solaria.persistence.util.SlugUtil; @Service public class CompanyService { @@ -39,6 +41,7 @@ public class CompanyService { private final RequesterRepository requesterRepository; private final TechnicianAffiliationRepository technicianAffiliationRepository; private final CompanyPositionsRepository companyPositionsRepository; + private final CompanyPhotoRepository companyPhotoRepository; public CompanyService(CompanyRepository companyRepository, AddressRepository addressRepository, @@ -47,7 +50,8 @@ public CompanyService(CompanyRepository companyRepository, SupplierRepository supplierRepository, RequesterRepository requesterRepository, TechnicianAffiliationRepository technicianAffiliationRepository, - CompanyPositionsRepository companyPositionsRepository) { + CompanyPositionsRepository companyPositionsRepository, + CompanyPhotoRepository companyPhotoRepository) { this.companyRepository = companyRepository; this.addressRepository = addressRepository; this.businessContactRepository = businessContactRepository; @@ -56,6 +60,7 @@ public CompanyService(CompanyRepository companyRepository, this.requesterRepository = requesterRepository; this.technicianAffiliationRepository = technicianAffiliationRepository; this.companyPositionsRepository = companyPositionsRepository; + this.companyPhotoRepository = companyPhotoRepository; } @Transactional @@ -76,6 +81,7 @@ public CompanyResponseDTO save(CompanyRequestDTO dto) { company.setCnpj(cnpj); company.setTradeName(dto.getTradeName()); company.setCorporateName(dto.getCorporateName()); + company.setSlug(generateUniqueSlug(dto.getTradeName())); return toResponse(companyRepository.save(company)); } @@ -159,7 +165,8 @@ public void deleteById(UUID id) { || supplierRepository.existsByCompanyId(id) || requesterRepository.existsByCompanyId(id) || technicianAffiliationRepository.existsByCompanyId(id) - || companyPositionsRepository.existsByCompanyId(id)) { + || companyPositionsRepository.existsByCompanyId(id) + || companyPhotoRepository.existsByCompanyId(id)) { throw new ResourceInUseException( "Empresa não pode ser excluída: possui vínculo(s) associado(s)"); } @@ -212,6 +219,17 @@ private BusinessContact resolveBusinessContact(UUID businessContactId) { "Contato Empresarial não encontrado com ID: " + businessContactId)); } + private String generateUniqueSlug(String tradeName) { + String base = SlugUtil.slugify(tradeName); + String candidate = base; + int suffix = 2; + while (companyRepository.existsBySlug(candidate)) { + candidate = base + "-" + suffix; + suffix++; + } + return candidate; + } + private CompanyResponseDTO toResponse(Company company) { CompanyResponseDTO dto = new CompanyResponseDTO(); dto.setId(company.getId()); @@ -219,6 +237,7 @@ private CompanyResponseDTO toResponse(Company company) { dto.setCnpj(company.getCnpj()); dto.setTradeName(company.getTradeName()); dto.setCorporateName(company.getCorporateName()); + dto.setSlug(company.getSlug()); dto.setAddress(toAddressResponse(company.getAddress())); dto.setBusinessContact(toBusinessContactResponse(company.getBusinessContact())); return dto; diff --git a/src/main/java/com/solaria/persistence/service/EnergyBillService.java b/src/main/java/com/solaria/persistence/service/EnergyBillService.java index 42bcd41..76b949a 100644 --- a/src/main/java/com/solaria/persistence/service/EnergyBillService.java +++ b/src/main/java/com/solaria/persistence/service/EnergyBillService.java @@ -2,13 +2,14 @@ import java.math.BigDecimal; import java.util.List; +import java.util.Set; import java.util.UUID; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; -import tools.jackson.databind.ObjectMapper; - +import com.solaria.persistence.config.CloudinaryProperties; import com.solaria.persistence.domain.entity.EnergyBill; import com.solaria.persistence.domain.entity.LocalUnit; import com.solaria.persistence.dto.request.EnergyBillRequestDTO; @@ -17,23 +18,38 @@ import com.solaria.persistence.exception.ResourceNotFoundException; import com.solaria.persistence.repository.EnergyBillRepository; import com.solaria.persistence.repository.LocalUnitRepository; +import com.solaria.persistence.security.rbac.RbacAuthorizationService; +import com.solaria.persistence.service.CloudinaryService.UploadResult; +import tools.jackson.databind.ObjectMapper; @Service public class EnergyBillService { private static final BigDecimal ZERO = BigDecimal.ZERO; + private static final Set ALLOWED_PHOTO_CONTENT_TYPES = Set.of("image/jpeg", "image/png", "application/pdf"); + private static final long MAX_PHOTO_BYTES = 10L * 1024 * 1024; + private final EnergyBillRepository energyBillRepository; private final LocalUnitRepository localUnitRepository; private final ObjectMapper objectMapper; + private final CloudinaryService cloudinaryService; + private final CloudinaryProperties cloudinaryProperties; + private final RbacAuthorizationService rbac; public EnergyBillService(EnergyBillRepository energyBillRepository, - LocalUnitRepository localUnitRepository, - ObjectMapper objectMapper) { + LocalUnitRepository localUnitRepository, + ObjectMapper objectMapper, + CloudinaryService cloudinaryService, + CloudinaryProperties cloudinaryProperties, + RbacAuthorizationService rbac) { this.energyBillRepository = energyBillRepository; this.localUnitRepository = localUnitRepository; this.objectMapper = objectMapper; + this.cloudinaryService = cloudinaryService; + this.cloudinaryProperties = cloudinaryProperties; + this.rbac = rbac; } @Transactional @@ -105,6 +121,57 @@ public List findByLocalUnit(UUID localUnitId) { .toList(); } + @Transactional + public EnergyBillResponseDTO attachPhoto(UUID id, MultipartFile file) { + EnergyBill energyBill = energyBillRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException( + "Conta de Energia não encontrada com ID: " + id)); + + requireOwnCompany(energyBill); + + String folder = folder(id); + String publicId = folder + "/photo"; + UploadResult result = cloudinaryService.upload(file, folder, publicId, true, + ALLOWED_PHOTO_CONTENT_TYPES, MAX_PHOTO_BYTES); + + energyBill.setPhotoUrl(result.url()); + energyBill.setPhotoPublicId(result.publicId()); + + // se por algum motivo, não conseguir salvar no BD, remove o asset do cloudnary + try { + return toResponse(energyBillRepository.save(energyBill)); + } catch (RuntimeException e) { + cloudinaryService.delete(result.publicId()); + throw e; + } + } + + @Transactional + public void removePhoto(UUID id) { + EnergyBill energyBill = energyBillRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException( + "Conta de Energia não encontrada com ID: " + id)); + + requireOwnCompany(energyBill); + + if (energyBill.getPhotoPublicId() == null) { + throw new ResourceNotFoundException("Conta de Energia não possui foto: " + id); + } + + cloudinaryService.delete(energyBill.getPhotoPublicId()); + energyBill.setPhotoUrl(null); + energyBill.setPhotoPublicId(null); + energyBillRepository.save(energyBill); + } + + private String folder(UUID companyId) { + return cloudinaryProperties.getFolderPrefix() + "/empresas/" + companyId; + } + + private void requireOwnCompany(EnergyBill energyBill) { + rbac.requireOwnCompany(energyBill.getLocalUnit().getRequester().getCompany().getId()); + } + private EnergyBillResponseDTO toResponse(EnergyBill energyBill) { EnergyBillResponseDTO response = objectMapper.convertValue(energyBill, EnergyBillResponseDTO.class); response.setLocalUnitId(energyBill.getLocalUnit().getId()); diff --git a/src/main/java/com/solaria/persistence/service/GoogleTranslateService.java b/src/main/java/com/solaria/persistence/service/GoogleTranslateService.java new file mode 100644 index 0000000..541c262 --- /dev/null +++ b/src/main/java/com/solaria/persistence/service/GoogleTranslateService.java @@ -0,0 +1,100 @@ +package com.solaria.persistence.service; + +import java.util.List; +import java.util.Map; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestClient; + +import com.solaria.persistence.config.GoogleTranslateProperties; +import com.solaria.persistence.exception.BusinessRuleException; + +/** + * Cliente fino da Google Cloud Translation API (v2): detecção de idioma e tradução de texto. + * Usado pelo OfferTranslationService para preencher as traduções de uma oferta em background. + */ +@Service +public class GoogleTranslateService { + + private static final Logger LOGGER = LoggerFactory.getLogger(GoogleTranslateService.class); + + private final RestClient googleTranslateRestClient; + private final GoogleTranslateProperties properties; + + public GoogleTranslateService(RestClient googleTranslateRestClient, GoogleTranslateProperties properties) { + this.googleTranslateRestClient = googleTranslateRestClient; + this.properties = properties; + } + + /** + * Detecta o idioma de um texto. Retorna o código curto ISO-639-1 (ex.: "pt", "en", "es"). + */ + @SuppressWarnings("unchecked") + public String detectLanguage(String text) { + try { + Map response = googleTranslateRestClient.post() + .uri(uriBuilder -> uriBuilder.path("/detect").queryParam("key", properties.getApiKey()).build()) + .body(Map.of("q", text)) + .retrieve() + .body(Map.class); + + Map data = response == null ? null : (Map) response.get("data"); + List>> detections = data == null + ? null : (List>>) data.get("detections"); + + if (detections == null || detections.isEmpty() || detections.get(0).isEmpty()) { + throw new BusinessRuleException("Google Translate não retornou uma detecção de idioma válida"); + } + + String language = (String) detections.get(0).get(0).get("language"); + if (language == null || language.isBlank()) { + throw new BusinessRuleException("Google Translate não retornou uma detecção de idioma válida"); + } + return language; + } catch (BusinessRuleException ex) { + throw ex; + } catch (RuntimeException ex) { + LOGGER.error("Falha ao detectar idioma via Google Translate", ex); + throw new BusinessRuleException("Não foi possível detectar o idioma do texto informado"); + } + } + + /** + * Traduz uma lista de textos (mantendo a ordem) de sourceShortCode para targetShortCode. + * Os códigos são curtos (ISO-639-1), ex.: "pt", "en", "es". + */ + @SuppressWarnings("unchecked") + public List translate(List texts, String sourceShortCode, String targetShortCode) { + try { + Map body = Map.of( + "q", texts, + "source", sourceShortCode, + "target", targetShortCode, + "format", "text"); + + Map response = googleTranslateRestClient.post() + .uri(uriBuilder -> uriBuilder.queryParam("key", properties.getApiKey()).build()) + .body(body) + .retrieve() + .body(Map.class); + + Map data = response == null ? null : (Map) response.get("data"); + List> translations = data == null + ? null : (List>) data.get("translations"); + + if (translations == null || translations.size() != texts.size()) { + throw new BusinessRuleException( + "Google Translate não retornou o número esperado de traduções"); + } + + return translations.stream().map(t -> (String) t.get("translatedText")).toList(); + } catch (BusinessRuleException ex) { + throw ex; + } catch (RuntimeException ex) { + LOGGER.error("Falha ao traduzir texto via Google Translate ({} -> {})", sourceShortCode, targetShortCode, ex); + throw new BusinessRuleException("Não foi possível traduzir o conteúdo informado"); + } + } +} diff --git a/src/main/java/com/solaria/persistence/service/InventoryService.java b/src/main/java/com/solaria/persistence/service/InventoryService.java index 08f4cd3..5ab63ff 100644 --- a/src/main/java/com/solaria/persistence/service/InventoryService.java +++ b/src/main/java/com/solaria/persistence/service/InventoryService.java @@ -151,9 +151,11 @@ private ModelResponseDTO toModelResponse(Model model) { .id(model.getId()) .brand(model.getBrand()) .model(model.getModel()) + .type(model.getType()) .powerWp(model.getPowerWp()) .efficiency(model.getEfficiency()) - .dimension(model.getDimension()) + .width(model.getWidth()) + .length(model.getLength()) .weight(model.getWeight()) .status(model.getStatus()) .build(); diff --git a/src/main/java/com/solaria/persistence/service/LocalUnitPhotoService.java b/src/main/java/com/solaria/persistence/service/LocalUnitPhotoService.java new file mode 100644 index 0000000..9c791e7 --- /dev/null +++ b/src/main/java/com/solaria/persistence/service/LocalUnitPhotoService.java @@ -0,0 +1,104 @@ +package com.solaria.persistence.service; + +import java.time.OffsetDateTime; +import java.util.List; +import java.util.Set; +import java.util.UUID; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import com.solaria.persistence.config.CloudinaryProperties; +import com.solaria.persistence.domain.entity.LocalUnit; +import com.solaria.persistence.domain.entity.LocalUnitPhoto; +import com.solaria.persistence.dto.response.LocalUnitPhotoResponseDTO; +import com.solaria.persistence.exception.ResourceNotFoundException; +import com.solaria.persistence.repository.LocalUnitPhotoRepository; +import com.solaria.persistence.repository.LocalUnitRepository; +import com.solaria.persistence.security.rbac.RbacAuthorizationService; +import com.solaria.persistence.service.CloudinaryService.UploadResult; + +@Service +public class LocalUnitPhotoService { + + private static final Set ALLOWED_CONTENT_TYPES = Set.of("image/jpeg", "image/png", "image/webp"); + private static final long MAX_BYTES = 8L * 1024 * 1024; + + private final LocalUnitPhotoRepository localUnitPhotoRepository; + private final LocalUnitRepository localUnitRepository; + private final CloudinaryService cloudinaryService; + private final CloudinaryProperties cloudinaryProperties; + private final RbacAuthorizationService rbac; + + public LocalUnitPhotoService(LocalUnitPhotoRepository localUnitPhotoRepository, + LocalUnitRepository localUnitRepository, + CloudinaryService cloudinaryService, + CloudinaryProperties cloudinaryProperties, + RbacAuthorizationService rbac) { + this.localUnitPhotoRepository = localUnitPhotoRepository; + this.localUnitRepository = localUnitRepository; + this.cloudinaryService = cloudinaryService; + this.cloudinaryProperties = cloudinaryProperties; + this.rbac = rbac; + } + + @Transactional + public LocalUnitPhotoResponseDTO upload(UUID localUnitId, MultipartFile file) { + LocalUnit localUnit = localUnitRepository.findById(localUnitId) + .orElseThrow(() -> new ResourceNotFoundException( + "Unidade Local não encontrada com ID: " + localUnitId)); + + rbac.requireOwnCompany(localUnit.getRequester().getCompany().getId()); + + + UploadResult result = cloudinaryService.upload(file, folder(localUnitId), null, false, + ALLOWED_CONTENT_TYPES, MAX_BYTES); + + LocalUnitPhoto photo = new LocalUnitPhoto(); + photo.setLocalUnit(localUnit); + photo.setUrl(result.url()); + photo.setPublicId(result.publicId()); + photo.setCreatedAt(OffsetDateTime.now()); + + // em caso de falha do BD, remove o asset do cloudnary + try { + return toResponse(localUnitPhotoRepository.save(photo)); + } catch (RuntimeException e) { + cloudinaryService.delete(result.publicId()); + throw e; + } + } + + @Transactional + public void delete(UUID id) { + LocalUnitPhoto photo = localUnitPhotoRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Foto não encontrada com ID: " + id)); + + rbac.requireOwnCompany(photo.getLocalUnit().getRequester().getCompany().getId()); + + + cloudinaryService.delete(photo.getPublicId()); + localUnitPhotoRepository.delete(photo); + } + + @Transactional(readOnly = true) + public List findByLocalUnit(UUID localUnitId) { + return localUnitPhotoRepository.findByLocalUnitIdOrderByCreatedAtDesc(localUnitId).stream() + .map(this::toResponse) + .toList(); + } + + private String folder(UUID localUnitId) { + return cloudinaryProperties.getFolderPrefix() + "/unidades-locais/" + localUnitId; + } + + private LocalUnitPhotoResponseDTO toResponse(LocalUnitPhoto photo) { + LocalUnitPhotoResponseDTO response = new LocalUnitPhotoResponseDTO(); + response.setId(photo.getId()); + response.setLocalUnitId(photo.getLocalUnit().getId()); + response.setUrl(photo.getUrl()); + response.setCreatedAt(photo.getCreatedAt()); + return response; + } +} diff --git a/src/main/java/com/solaria/persistence/service/LocalUnitService.java b/src/main/java/com/solaria/persistence/service/LocalUnitService.java index 1ab32bd..c5d7a6e 100644 --- a/src/main/java/com/solaria/persistence/service/LocalUnitService.java +++ b/src/main/java/com/solaria/persistence/service/LocalUnitService.java @@ -17,6 +17,7 @@ import com.solaria.persistence.exception.ResourceNotFoundException; import com.solaria.persistence.repository.AddressRepository; import com.solaria.persistence.repository.EnergyBillRepository; +import com.solaria.persistence.repository.LocalUnitPhotoRepository; import com.solaria.persistence.repository.LocalUnitRepository; import com.solaria.persistence.repository.ProposalUnitRepository; import com.solaria.persistence.repository.RequesterRepository; @@ -32,19 +33,22 @@ public class LocalUnitService { private final UnitSpecificationsRepository unitSpecificationsRepository; private final EnergyBillRepository energyBillRepository; private final ProposalUnitRepository proposalUnitRepository; + private final LocalUnitPhotoRepository localUnitPhotoRepository; public LocalUnitService(LocalUnitRepository localUnitRepository, RequesterRepository requesterRepository, AddressRepository addressRepository, UnitSpecificationsRepository unitSpecificationsRepository, EnergyBillRepository energyBillRepository, - ProposalUnitRepository proposalUnitRepository) { + ProposalUnitRepository proposalUnitRepository, + LocalUnitPhotoRepository localUnitPhotoRepository) { this.localUnitRepository = localUnitRepository; this.requesterRepository = requesterRepository; this.addressRepository = addressRepository; this.unitSpecificationsRepository = unitSpecificationsRepository; this.energyBillRepository = energyBillRepository; this.proposalUnitRepository = proposalUnitRepository; + this.localUnitPhotoRepository = localUnitPhotoRepository; } @Transactional @@ -100,7 +104,8 @@ public void deleteById(UUID id) { } if (unitSpecificationsRepository.existsByLocalUnitId(id) || energyBillRepository.existsByLocalUnitId(id) - || proposalUnitRepository.existsByLocalUnitId(id)) { + || proposalUnitRepository.existsByLocalUnitId(id) + || localUnitPhotoRepository.existsByLocalUnitId(id)) { throw new ResourceInUseException( "Unidade Local não pode ser excluída: possui histórico/dependente(s) vinculado(s)"); } diff --git a/src/main/java/com/solaria/persistence/service/ModelPhotoService.java b/src/main/java/com/solaria/persistence/service/ModelPhotoService.java new file mode 100644 index 0000000..b4bfa27 --- /dev/null +++ b/src/main/java/com/solaria/persistence/service/ModelPhotoService.java @@ -0,0 +1,96 @@ +package com.solaria.persistence.service; + +import java.time.OffsetDateTime; +import java.util.List; +import java.util.Set; +import java.util.UUID; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import com.solaria.persistence.config.CloudinaryProperties; +import com.solaria.persistence.domain.entity.Model; +import com.solaria.persistence.domain.entity.ModelPhoto; +import com.solaria.persistence.dto.response.ModelPhotoResponseDTO; +import com.solaria.persistence.exception.ResourceNotFoundException; +import com.solaria.persistence.repository.ModelPhotoRepository; +import com.solaria.persistence.repository.ModelRepository; +import com.solaria.persistence.service.CloudinaryService.UploadResult; + +@Service +public class ModelPhotoService { + + private static final Set ALLOWED_CONTENT_TYPES = Set.of("image/jpeg", "image/png", "image/webp"); + private static final long MAX_BYTES = 8L * 1024 * 1024; + + private final ModelPhotoRepository modelPhotoRepository; + private final ModelRepository modelRepository; + private final CloudinaryService cloudinaryService; + private final CloudinaryProperties cloudinaryProperties; + + public ModelPhotoService(ModelPhotoRepository modelPhotoRepository, + ModelRepository modelRepository, + CloudinaryService cloudinaryService, + CloudinaryProperties cloudinaryProperties) { + this.modelPhotoRepository = modelPhotoRepository; + this.modelRepository = modelRepository; + this.cloudinaryService = cloudinaryService; + this.cloudinaryProperties = cloudinaryProperties; + } + + + @Transactional + public ModelPhotoResponseDTO upload(UUID modelId, MultipartFile file) { + Model model = modelRepository.findById(modelId) + .orElseThrow(() -> new ResourceNotFoundException("Modelo não encontrado(a) com ID: " + modelId)); + + + UploadResult result = cloudinaryService.upload(file, folder(modelId), null, false, + ALLOWED_CONTENT_TYPES, MAX_BYTES); + + ModelPhoto photo = new ModelPhoto(); + photo.setModel(model); + photo.setUrl(result.url()); + photo.setPublicId(result.publicId()); + photo.setCreatedAt(OffsetDateTime.now()); + + // em caso de falha do BD, remove o asset do cloudnary + try { + return toResponse(modelPhotoRepository.save(photo)); + } catch (RuntimeException e) { + + cloudinaryService.delete(result.publicId()); + throw e; + } + } + + @Transactional + public void delete(UUID id) { + ModelPhoto photo = modelPhotoRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Foto não encontrada com ID: " + id)); + + cloudinaryService.delete(photo.getPublicId()); + modelPhotoRepository.delete(photo); + } + + @Transactional(readOnly = true) + public List findByModel(UUID modelId) { + return modelPhotoRepository.findByModelIdOrderByCreatedAtDesc(modelId).stream() + .map(this::toResponse) + .toList(); + } + + private String folder(UUID modelId) { + return cloudinaryProperties.getFolderPrefix() + "/placas-solares/" + modelId; + } + + private ModelPhotoResponseDTO toResponse(ModelPhoto photo) { + ModelPhotoResponseDTO response = new ModelPhotoResponseDTO(); + response.setId(photo.getId()); + response.setModelId(photo.getModel().getId()); + response.setUrl(photo.getUrl()); + response.setCreatedAt(photo.getCreatedAt()); + return response; + } +} diff --git a/src/main/java/com/solaria/persistence/service/ModelService.java b/src/main/java/com/solaria/persistence/service/ModelService.java index dfa3e7f..285776f 100644 --- a/src/main/java/com/solaria/persistence/service/ModelService.java +++ b/src/main/java/com/solaria/persistence/service/ModelService.java @@ -18,6 +18,7 @@ import com.solaria.persistence.exception.ResourceInUseException; import com.solaria.persistence.exception.ResourceNotFoundException; import com.solaria.persistence.repository.InventoryRepository; +import com.solaria.persistence.repository.ModelPhotoRepository; import com.solaria.persistence.repository.ModelRepository; import com.solaria.persistence.repository.OfferRepository; @@ -27,28 +28,33 @@ public class ModelService { private final ModelRepository modelRepository; private final InventoryRepository inventoryRepository; private final OfferRepository offerRepository; + private final ModelPhotoRepository modelPhotoRepository; private final ObjectMapper objectMapper; public ModelService(ModelRepository modelRepository, InventoryRepository inventoryRepository, OfferRepository offerRepository, + ModelPhotoRepository modelPhotoRepository, ObjectMapper objectMapper) { this.modelRepository = modelRepository; this.inventoryRepository = inventoryRepository; this.offerRepository = offerRepository; + this.modelPhotoRepository = modelPhotoRepository; this.objectMapper = objectMapper; } @Transactional public ModelResponseDTO save(ModelRequestDTO dto) { - validateNumericFields(dto.getPowerWp(), dto.getEfficiency(), dto.getDimension(), dto.getWeight()); + validateNumericFields(dto.getPowerWp(), dto.getEfficiency(), dto.getWidth(), dto.getLength(), dto.getWeight()); Model model = new Model(); model.setBrand(dto.getBrand()); model.setModel(dto.getModel()); + model.setType(dto.getType()); model.setPowerWp(dto.getPowerWp()); model.setEfficiency(dto.getEfficiency()); - model.setDimension(dto.getDimension()); + model.setWidth(dto.getWidth()); + model.setLength(dto.getLength()); model.setWeight(dto.getWeight()); return toResponse(modelRepository.save(model)); @@ -64,13 +70,15 @@ public ModelResponseDTO update(UUID id, ModelRequestDTO dto) { + " não permite edição (somente UNDER_ANALYSIS)"); } - validateNumericFields(dto.getPowerWp(), dto.getEfficiency(), dto.getDimension(), dto.getWeight()); + validateNumericFields(dto.getPowerWp(), dto.getEfficiency(), dto.getWidth(), dto.getLength(), dto.getWeight()); model.setBrand(dto.getBrand()); model.setModel(dto.getModel()); + model.setType(dto.getType()); model.setPowerWp(dto.getPowerWp()); model.setEfficiency(dto.getEfficiency()); - model.setDimension(dto.getDimension()); + model.setWidth(dto.getWidth()); + model.setLength(dto.getLength()); model.setWeight(dto.getWeight()); return toResponse(modelRepository.save(model)); @@ -112,8 +120,10 @@ public void deleteById(UUID id) { throw new ResourceNotFoundException("Modelo com id:" + id + " não encontrado(a) para exclusão"); } - if (inventoryRepository.existsByModelId(id) || offerRepository.existsByModelId(id)) { - throw new ResourceInUseException("Modelo não pode ser excluído(a): possui estoque/oferta vinculado(s)"); + if (inventoryRepository.existsByModelId(id) || offerRepository.existsByModelId(id) + || modelPhotoRepository.existsByModelId(id)) { + throw new ResourceInUseException( + "Modelo não pode ser excluído(a): possui estoque/oferta/foto vinculado(s)"); } modelRepository.deleteById(id); @@ -136,15 +146,18 @@ public List findByStatus(ModelStatus status) { return modelRepository.findByStatus(status).stream().map(this::toResponse).toList(); } - private void validateNumericFields(BigDecimal powerWp, BigDecimal efficiency, BigDecimal dimension, BigDecimal weight) { + private void validateNumericFields(BigDecimal powerWp, BigDecimal efficiency, BigDecimal width, BigDecimal length, BigDecimal weight) { if (powerWp.compareTo(BigDecimal.ZERO) <= 0) { throw new InvalidFieldException("Potência (Wp) inválida: " + powerWp); } if (efficiency.compareTo(BigDecimal.ZERO) <= 0) { throw new InvalidFieldException("Eficiência inválida: " + efficiency); } - if (dimension.compareTo(BigDecimal.ZERO) <= 0) { - throw new InvalidFieldException("Dimensão inválida: " + dimension); + if (width.compareTo(BigDecimal.ZERO) <= 0) { + throw new InvalidFieldException("Largura inválida: " + width); + } + if (length.compareTo(BigDecimal.ZERO) <= 0) { + throw new InvalidFieldException("Comprimento inválido: " + length); } if (weight.compareTo(BigDecimal.ZERO) <= 0) { throw new InvalidFieldException("Peso inválido: " + weight); diff --git a/src/main/java/com/solaria/persistence/service/OfferService.java b/src/main/java/com/solaria/persistence/service/OfferService.java index 6ed600d..0ed40e7 100644 --- a/src/main/java/com/solaria/persistence/service/OfferService.java +++ b/src/main/java/com/solaria/persistence/service/OfferService.java @@ -7,23 +7,30 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.TransactionSynchronization; +import org.springframework.transaction.support.TransactionSynchronizationManager; import com.solaria.persistence.domain.entity.Model; import com.solaria.persistence.domain.entity.Offer; +import com.solaria.persistence.domain.entity.OfferTranslation; import com.solaria.persistence.domain.entity.Supplier; import com.solaria.persistence.domain.enums.ModelStatus; import com.solaria.persistence.domain.enums.SupplierStatus; +import com.solaria.persistence.domain.enums.TranslationStatus; import com.solaria.persistence.dto.request.OfferRequestDTO; import com.solaria.persistence.dto.response.ModelResponseDTO; import com.solaria.persistence.dto.response.OfferResponseDTO; +import com.solaria.persistence.dto.response.OfferTranslationResponseDTO; import com.solaria.persistence.exception.BusinessRuleException; import com.solaria.persistence.exception.InvalidFieldException; import com.solaria.persistence.exception.ResourceInUseException; import com.solaria.persistence.exception.ResourceNotFoundException; import com.solaria.persistence.repository.ModelRepository; import com.solaria.persistence.repository.OfferRepository; +import com.solaria.persistence.repository.OfferTranslationRepository; import com.solaria.persistence.repository.ProposalItemRepository; import com.solaria.persistence.repository.SupplierRepository; +import com.solaria.persistence.util.SlugUtil; @Service public class OfferService { @@ -33,17 +40,23 @@ public class OfferService { private final ModelRepository modelRepository; private final ProposalItemRepository proposalItemRepository; private final SubscriptionService subscriptionService; + private final OfferTranslationRepository offerTranslationRepository; + private final OfferTranslationService offerTranslationService; public OfferService(OfferRepository offerRepository, SupplierRepository supplierRepository, ModelRepository modelRepository, ProposalItemRepository proposalItemRepository, - SubscriptionService subscriptionService) { + SubscriptionService subscriptionService, + OfferTranslationRepository offerTranslationRepository, + OfferTranslationService offerTranslationService) { this.offerRepository = offerRepository; this.supplierRepository = supplierRepository; this.modelRepository = modelRepository; this.proposalItemRepository = proposalItemRepository; this.subscriptionService = subscriptionService; + this.offerTranslationRepository = offerTranslationRepository; + this.offerTranslationService = offerTranslationService; } @Transactional @@ -74,8 +87,24 @@ public OfferResponseDTO save(OfferRequestDTO dto) { offer.setUnitPrice(dto.getUnitPrice()); offer.setAvailability(dto.getAvailability()); offer.setExpirationDate(dto.getExpirationDate()); + offer.setDiscountPercentage(dto.getDiscountPercentage()); + offer.setServiceRegions(dto.getServiceRegions()); + offer.setSlug(generateUniqueSlug(model)); + offer.setTranslationStatus(TranslationStatus.PENDING); - return toResponse(offerRepository.save(offer)); + Offer savedOffer = offerRepository.save(offer); + + OfferTranslation pendingTranslation = new OfferTranslation(); + pendingTranslation.setOffer(savedOffer); + pendingTranslation.setLocale(OfferTranslationService.PENDING_LOCALE); + pendingTranslation.setTitle(dto.getTitle()); + pendingTranslation.setDescription(dto.getDescription()); + pendingTranslation.setDetails(dto.getDetails()); + offerTranslationRepository.save(pendingTranslation); + + triggerAsyncTranslationAfterCommit(savedOffer.getId()); + + return toResponse(savedOffer); } @Transactional @@ -102,6 +131,8 @@ public OfferResponseDTO update(UUID id, OfferRequestDTO dto) { offer.setUnitPrice(dto.getUnitPrice()); offer.setAvailability(dto.getAvailability()); offer.setExpirationDate(dto.getExpirationDate()); + offer.setDiscountPercentage(dto.getDiscountPercentage()); + offer.setServiceRegions(dto.getServiceRegions()); return toResponse(offerRepository.save(offer)); } @@ -177,17 +208,63 @@ private void validateSupplierAndSubscriptionGates(Supplier supplier) { } } + private String generateUniqueSlug(Model model) { + String base = SlugUtil.slugify(model.getBrand() + " " + model.getModel()); + String candidate = base; + int suffix = 2; + while (offerRepository.existsBySlug(candidate)) { + candidate = base + "-" + suffix; + suffix++; + } + return candidate; + } + + /** + * Dispara a tradução em background somente após o commit da transação atual, garantindo + * que a oferta e a tradução "pendente" já estejam visíveis para a thread assíncrona. + */ + private void triggerAsyncTranslationAfterCommit(UUID offerId) { + if (!TransactionSynchronizationManager.isSynchronizationActive()) { + offerTranslationService.translateOffer(offerId); + return; + } + TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { + @Override + public void afterCommit() { + offerTranslationService.translateOffer(offerId); + } + }); + } + private OfferResponseDTO toResponse(Offer offer) { OfferResponseDTO response = new OfferResponseDTO(); response.setId(offer.getId()); response.setSupplierId(offer.getSupplier().getId()); response.setModel(toModelResponse(offer.getModel())); + response.setSlug(offer.getSlug()); response.setUnitPrice(offer.getUnitPrice()); response.setAvailability(offer.getAvailability()); response.setExpirationDate(offer.getExpirationDate()); + response.setDiscountPercentage(offer.getDiscountPercentage()); + response.setServiceRegions(offer.getServiceRegions()); + response.setSourceLocale(offer.getSourceLocale()); + response.setTranslationStatus(offer.getTranslationStatus()); + response.setTranslations(offerTranslationRepository.findByOfferId(offer.getId()).stream() + .filter(translation -> !OfferTranslationService.PENDING_LOCALE.equals(translation.getLocale())) + .map(this::toTranslationResponse) + .toList()); return response; } + private OfferTranslationResponseDTO toTranslationResponse(OfferTranslation translation) { + OfferTranslationResponseDTO dto = new OfferTranslationResponseDTO(); + dto.setLocale(translation.getLocale()); + dto.setTitle(translation.getTitle()); + dto.setDescription(translation.getDescription()); + dto.setDetails(translation.getDetails()); + return dto; + } + private ModelResponseDTO toModelResponse(Model model) { if (model == null) { return null; @@ -196,9 +273,11 @@ private ModelResponseDTO toModelResponse(Model model) { .id(model.getId()) .brand(model.getBrand()) .model(model.getModel()) + .type(model.getType()) .powerWp(model.getPowerWp()) .efficiency(model.getEfficiency()) - .dimension(model.getDimension()) + .width(model.getWidth()) + .length(model.getLength()) .weight(model.getWeight()) .status(model.getStatus()) .build(); diff --git a/src/main/java/com/solaria/persistence/service/OfferTranslationService.java b/src/main/java/com/solaria/persistence/service/OfferTranslationService.java new file mode 100644 index 0000000..c70d68b --- /dev/null +++ b/src/main/java/com/solaria/persistence/service/OfferTranslationService.java @@ -0,0 +1,106 @@ +package com.solaria.persistence.service; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.solaria.persistence.domain.entity.Offer; +import com.solaria.persistence.domain.entity.OfferTranslation; +import com.solaria.persistence.domain.enums.TranslationStatus; +import com.solaria.persistence.repository.OfferRepository; +import com.solaria.persistence.repository.OfferTranslationRepository; +import com.solaria.persistence.util.SupportedLocales; + +/** + * Preenche as traduções de uma oferta (placa solar) em background: detecta o idioma de origem + * via Google Translate e traduz o conteúdo para os demais idiomas suportados. + * + * Disparado pelo OfferService após o commit da transação que cria a oferta (via + * TransactionSynchronizationManager#registerSynchronization), para não bloquear a resposta + * de criação nem competir com a transação de escrita original. + */ +@Service +public class OfferTranslationService { + + private static final Logger LOGGER = LoggerFactory.getLogger(OfferTranslationService.class); + + /** Locale temporário gravado na criação da oferta, até a detecção do idioma real concluir. */ + public static final String PENDING_LOCALE = "und"; + + private final OfferRepository offerRepository; + private final OfferTranslationRepository offerTranslationRepository; + private final GoogleTranslateService googleTranslateService; + + public OfferTranslationService(OfferRepository offerRepository, + OfferTranslationRepository offerTranslationRepository, + GoogleTranslateService googleTranslateService) { + this.offerRepository = offerRepository; + this.offerTranslationRepository = offerTranslationRepository; + this.googleTranslateService = googleTranslateService; + } + + @Async + @Transactional + public void translateOffer(UUID offerId) { + try { + Offer offer = offerRepository.findById(offerId).orElse(null); + if (offer == null) { + return; + } + + OfferTranslation sourceTranslation = offerTranslationRepository + .findByOfferIdAndLocale(offerId, PENDING_LOCALE) + .orElse(null); + if (sourceTranslation == null) { + return; + } + + String detectedShortCode = googleTranslateService.detectLanguage( + sourceTranslation.getTitle() + ". " + sourceTranslation.getDescription()); + String sourceLocale = SupportedLocales.resolveFromShortCode(detectedShortCode); + + sourceTranslation.setLocale(sourceLocale); + offerTranslationRepository.save(sourceTranslation); + offer.setSourceLocale(sourceLocale); + + List sourceTexts = new ArrayList<>(); + sourceTexts.add(sourceTranslation.getTitle()); + sourceTexts.add(sourceTranslation.getDescription()); + sourceTexts.add(sourceTranslation.getDetails() == null ? "" : sourceTranslation.getDetails()); + + String sourceShortCode = shortCode(sourceLocale); + + for (String targetLocale : SupportedLocales.targetsExcluding(sourceLocale)) { + List translated = googleTranslateService.translate( + sourceTexts, sourceShortCode, shortCode(targetLocale)); + + OfferTranslation translation = new OfferTranslation(); + translation.setOffer(offer); + translation.setLocale(targetLocale); + translation.setTitle(translated.get(0)); + translation.setDescription(translated.get(1)); + translation.setDetails(sourceTranslation.getDetails() == null ? null : translated.get(2)); + offerTranslationRepository.save(translation); + } + + offer.setTranslationStatus(TranslationStatus.COMPLETED); + offerRepository.save(offer); + } catch (RuntimeException ex) { + LOGGER.error("Falha ao traduzir oferta {}", offerId, ex); + offerRepository.findById(offerId).ifPresent(offer -> { + offer.setTranslationStatus(TranslationStatus.FAILED); + offerRepository.save(offer); + }); + } + } + + private String shortCode(String locale) { + return locale.split("-")[0].toLowerCase(); + } +} diff --git a/src/main/java/com/solaria/persistence/service/ProposalItemService.java b/src/main/java/com/solaria/persistence/service/ProposalItemService.java index b87e561..f68784e 100644 --- a/src/main/java/com/solaria/persistence/service/ProposalItemService.java +++ b/src/main/java/com/solaria/persistence/service/ProposalItemService.java @@ -212,9 +212,11 @@ private ModelResponseDTO toModelResponse(Model model) { .id(model.getId()) .brand(model.getBrand()) .model(model.getModel()) + .type(model.getType()) .powerWp(model.getPowerWp()) .efficiency(model.getEfficiency()) - .dimension(model.getDimension()) + .width(model.getWidth()) + .length(model.getLength()) .weight(model.getWeight()) .status(model.getStatus()) .build(); diff --git a/src/main/java/com/solaria/persistence/service/TechnicianService.java b/src/main/java/com/solaria/persistence/service/TechnicianService.java index 0b918d4..f3c444f 100644 --- a/src/main/java/com/solaria/persistence/service/TechnicianService.java +++ b/src/main/java/com/solaria/persistence/service/TechnicianService.java @@ -18,6 +18,7 @@ import com.solaria.persistence.exception.ResourceNotFoundException; import com.solaria.persistence.repository.PersonRepository; import com.solaria.persistence.repository.TechnicianRepository; +import com.solaria.persistence.util.SlugUtil; @Service @@ -46,6 +47,7 @@ public TechnicianResponseDTO save(TechnicianRequestDTO dto) { Technician technician = new Technician(); technician.setPerson(person); technician.setCrea(dto.getCrea()); + technician.setSlug(generateUniqueSlug(person.getName())); return toResponse(technicianRepository.save(technician)); } @@ -87,10 +89,22 @@ public List findAll() { return technicianRepository.findAll().stream().map(this::toResponse).toList(); } + private String generateUniqueSlug(String name) { + String base = SlugUtil.slugify(name); + String candidate = base; + int suffix = 2; + while (technicianRepository.existsBySlug(candidate)) { + candidate = base + "-" + suffix; + suffix++; + } + return candidate; + } + private TechnicianResponseDTO toResponse(Technician technician) { TechnicianResponseDTO response = new TechnicianResponseDTO(); response.setId(technician.getId()); response.setCrea(technician.getCrea()); + response.setSlug(technician.getSlug()); response.setPerson(toPersonResponse(technician.getPerson())); return response; } diff --git a/src/main/java/com/solaria/persistence/service/UserPhotoService.java b/src/main/java/com/solaria/persistence/service/UserPhotoService.java new file mode 100644 index 0000000..6d4b206 --- /dev/null +++ b/src/main/java/com/solaria/persistence/service/UserPhotoService.java @@ -0,0 +1,111 @@ +package com.solaria.persistence.service; + +import java.time.OffsetDateTime; +import java.util.List; +import java.util.Set; +import java.util.UUID; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import com.solaria.persistence.config.CloudinaryProperties; +import com.solaria.persistence.domain.entity.User; +import com.solaria.persistence.domain.entity.UserPhoto; +import com.solaria.persistence.domain.enums.PhotoType; +import com.solaria.persistence.dto.response.UserPhotoResponseDTO; +import com.solaria.persistence.exception.ResourceNotFoundException; +import com.solaria.persistence.repository.UserPhotoRepository; +import com.solaria.persistence.repository.UserRepository; +import com.solaria.persistence.security.rbac.RbacAuthorizationService; +import com.solaria.persistence.service.CloudinaryService.UploadResult; + +@Service +public class UserPhotoService { + + private static final Set ALLOWED_CONTENT_TYPES = Set.of("image/jpeg", "image/png", "image/webp"); + private static final long MAX_BYTES = 5L * 1024 * 1024; + + private final UserPhotoRepository userPhotoRepository; + private final UserRepository userRepository; + private final CloudinaryService cloudinaryService; + private final CloudinaryProperties cloudinaryProperties; + private final RbacAuthorizationService rbac; + + public UserPhotoService(UserPhotoRepository userPhotoRepository, + UserRepository userRepository, + CloudinaryService cloudinaryService, + CloudinaryProperties cloudinaryProperties, + RbacAuthorizationService rbac) { + this.userPhotoRepository = userPhotoRepository; + this.userRepository = userRepository; + this.cloudinaryService = cloudinaryService; + this.cloudinaryProperties = cloudinaryProperties; + this.rbac = rbac; + } + + @Transactional + public UserPhotoResponseDTO upload(UUID userId, PhotoType type, MultipartFile file) { + rbac.requireOwnUser(userId); + + User user = userRepository.findById(userId) + .orElseThrow(() -> new ResourceNotFoundException("Usuário não encontrado com ID: " + userId)); + + + UploadResult result = cloudinaryService.upload(file, folder(userId), publicId(userId, type), true, + ALLOWED_CONTENT_TYPES, MAX_BYTES); + + UserPhoto photo = userPhotoRepository.findByUserIdAndType(userId, type).orElseGet(UserPhoto::new); + photo.setUser(user); + photo.setType(type); + photo.setUrl(result.url()); + photo.setPublicId(result.publicId()); + if (photo.getCreatedAt() == null) { + photo.setCreatedAt(OffsetDateTime.now()); + } + // em caso de falha do BD, remove o asset do cloudnary + try { + return toResponse(userPhotoRepository.save(photo)); + } catch (RuntimeException e) { + cloudinaryService.delete(result.publicId()); + throw e; + } + } + + @Transactional + public void delete(UUID userId, PhotoType type) { + rbac.requireOwnUser(userId); + + UserPhoto photo = userPhotoRepository.findByUserIdAndType(userId, type) + .orElseThrow(() -> new ResourceNotFoundException( + "Foto não encontrada para o usuário " + userId + " e tipo " + type)); + + cloudinaryService.delete(photo.getPublicId()); + userPhotoRepository.delete(photo); + } + + @Transactional(readOnly = true) + public List findByUser(UUID userId) { + return userPhotoRepository.findByUserIdOrderByTypeAsc(userId).stream() + .map(this::toResponse) + .toList(); + } + + private String folder(UUID userId) { + return cloudinaryProperties.getFolderPrefix() + "/usuarios/" + userId; + } + + private String publicId(UUID userId, PhotoType type) { + return folder(userId) + "/" + type.name().toLowerCase(); + } + + private UserPhotoResponseDTO toResponse(UserPhoto photo) { + UserPhotoResponseDTO response = new UserPhotoResponseDTO(); + response.setId(photo.getId()); + response.setUserId(photo.getUser().getId()); + response.setType(photo.getType()); + response.setUrl(photo.getUrl()); + response.setCreatedAt(photo.getCreatedAt()); + return response; + } +} diff --git a/src/main/java/com/solaria/persistence/service/UserService.java b/src/main/java/com/solaria/persistence/service/UserService.java index d2dc99d..d0835ca 100644 --- a/src/main/java/com/solaria/persistence/service/UserService.java +++ b/src/main/java/com/solaria/persistence/service/UserService.java @@ -16,6 +16,7 @@ import com.solaria.persistence.exception.ResourceNotFoundException; import com.solaria.persistence.repository.PersonRepository; import com.solaria.persistence.repository.UserCompanyRepository; +import com.solaria.persistence.repository.UserPhotoRepository; import com.solaria.persistence.repository.UserRepository; @@ -25,15 +26,18 @@ public class UserService { private final UserRepository userRepository; private final PersonRepository personRepository; private final UserCompanyRepository userCompanyRepository; + private final UserPhotoRepository userPhotoRepository; private final ObjectMapper objectMapper; public UserService(UserRepository userRepository, PersonRepository personRepository, UserCompanyRepository userCompanyRepository, + UserPhotoRepository userPhotoRepository, ObjectMapper objectMapper) { this.userRepository = userRepository; this.personRepository = personRepository; this.userCompanyRepository = userCompanyRepository; + this.userPhotoRepository = userPhotoRepository; this.objectMapper = objectMapper; } @@ -70,6 +74,9 @@ public void deleteById(UUID id) { if (userCompanyRepository.existsByUserId(id)) { throw new ResourceInUseException("Usuário não pode ser excluído: possui vínculo(s) de empresa"); } + if (userPhotoRepository.existsByUserId(id)) { + throw new ResourceInUseException("Usuário não pode ser excluído: possui foto(s) vinculada(s)"); + } userRepository.deleteById(id); } diff --git a/src/main/java/com/solaria/persistence/util/SlugUtil.java b/src/main/java/com/solaria/persistence/util/SlugUtil.java new file mode 100644 index 0000000..381eee7 --- /dev/null +++ b/src/main/java/com/solaria/persistence/util/SlugUtil.java @@ -0,0 +1,29 @@ +package com.solaria.persistence.util; + +import java.text.Normalizer; +import java.util.regex.Pattern; + +/** + * Gera slugs a partir de nomes (empresa, pessoa), no mesmo padrão usado no front-end + * (normalização NFD, remoção de acentos, minúsculas, apenas [a-z0-9-]). + */ +public final class SlugUtil { + + private static final Pattern DIACRITICS = Pattern.compile("\\p{InCombiningDiacriticalMarks}+"); + private static final Pattern NON_ALPHANUMERIC = Pattern.compile("[^a-z0-9]+"); + private static final Pattern EDGE_HYPHENS = Pattern.compile("(^-+)|(-+$)"); + + private SlugUtil() {} + + public static String slugify(String input) { + if (input == null) { + return null; + } + String normalized = Normalizer.normalize(input.trim(), Normalizer.Form.NFD); + normalized = DIACRITICS.matcher(normalized).replaceAll(""); + normalized = normalized.toLowerCase(); + normalized = NON_ALPHANUMERIC.matcher(normalized).replaceAll("-"); + normalized = EDGE_HYPHENS.matcher(normalized).replaceAll(""); + return normalized; + } +} diff --git a/src/main/java/com/solaria/persistence/util/SupportedLocales.java b/src/main/java/com/solaria/persistence/util/SupportedLocales.java new file mode 100644 index 0000000..084cbad --- /dev/null +++ b/src/main/java/com/solaria/persistence/util/SupportedLocales.java @@ -0,0 +1,43 @@ +package com.solaria.persistence.util; + +import java.util.List; +import java.util.Map; + +/** + * Idiomas suportados pela plataforma, espelhando SUPPORTED_LANGUAGES do front-end + * (web-app/src/config/locales/languages.ts). + */ +public final class SupportedLocales { + + public static final String PT_BR = "pt-BR"; + public static final String EN_US = "en-US"; + public static final String ES_ES = "es-ES"; + + public static final List ALL = List.of(PT_BR, EN_US, ES_ES); + + public static final String DEFAULT_LOCALE = PT_BR; + + /** Mapa de código curto (ISO-639-1, devolvido pela Google Translate API) para o locale suportado. */ + private static final Map SHORT_CODE_TO_LOCALE = Map.of( + "pt", PT_BR, + "en", EN_US, + "es", ES_ES + ); + + private SupportedLocales() {} + + /** + * Resolve um código curto devolvido pela Google Translate API (ex.: "pt") para um dos + * locales suportados. Quando o idioma detectado não é suportado, cai no DEFAULT_LOCALE. + */ + public static String resolveFromShortCode(String shortCode) { + if (shortCode == null) { + return DEFAULT_LOCALE; + } + return SHORT_CODE_TO_LOCALE.getOrDefault(shortCode.toLowerCase(), DEFAULT_LOCALE); + } + + public static List targetsExcluding(String locale) { + return ALL.stream().filter(l -> !l.equals(locale)).toList(); + } +} diff --git a/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 1c3e978..4abdc3b 100644 --- a/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -73,5 +73,10 @@ "name": "app.jwt.service.refresh-ttl-ms", "type": "java.lang.String", "description": "A description for 'app.jwt.service.refresh-ttl-ms'" + }, + { + "name": "google-translate.api-key", + "type": "java.lang.String", + "description": "Chave de API da Google Cloud Translation API (v2), usada para detectar o idioma e traduzir o conteudo das ofertas" } ]} \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 4e70f98..e516233 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -46,3 +46,13 @@ app.jwt.service.access-ttl-ms=${SERVICE_JWT_ACCESS_TTL_MS:600000} # TTL do token de refresh app.jwt.service.refresh-ttl-ms=${SERVICE_JWT_REFRESH_TTL_MS:3600000} +cloudinary.cloud-name=${CLOUDINARY_CLOUD_NAME} +cloudinary.api-key=${CLOUDINARY_API_KEY} +cloudinary.api-secret=${CLOUDINARY_API_SECRET} +cloudinary.folder-prefix=${CLOUDINARY_FOLDER_PREFIX:solier} + +google-translate.api-key=${GOOGLE_TRANSLATE_API_KEY} + +spring.servlet.multipart.max-file-size=8MB +spring.servlet.multipart.max-request-size=8MB + From 975204f26c72261355deb4f49a28f4f8fd3c035d Mon Sep 17 00:00:00 2001 From: davisilva <84607533+Megueutu@users.noreply.github.com> Date: Sun, 30 Aug 2026 17:35:12 -0300 Subject: [PATCH 2/8] feat: publish docker image on push to main (#33) * feat: add photo management with Cloudinary integration - Created UserPhoto entity and corresponding repository. - Introduced PhotoType enum for categorizing photo types. - Developed services for managing company, local unit, model, and user photos, including upload and delete functionalities. - Implemented CloudinaryService for handling file uploads and deletions. - Added response DTOs for various photo types. - Enhanced EnergyBillService to support photo attachment and removal. - Updated CompanyService and LocalUnitService to include photo repository checks during deletions. - Configured application properties for Cloudinary settings and increased file upload limits. * Merge branch 'feat/cloudnaryPhotos' of https://github.com/Solierrr/api-core * chore: updating gitignore for sonarqube cloud * feat: add panel type and translation status enums * refactor: replace model dimension field with width, length and panel type * feat: add slug field to company and technician * feat: add automatic multi-language translation for offers via google translate * chore: add google translate api key env var * fix: add missing openapi interfaces for photo controllers * fix: harden google translate response parsing against null and malformed responses * fix: corrige build e quality gate do CI (SonarCloud) - adiciona metodos attachPhoto/removePhoto faltantes na interface EnergyBillOpenApi, corrigindo erro de compilacao - restaura dependencia h2 (removida por engano ao mesclar cloudinary-http5), corrigindo falha nos testes - agrupa alternancia no regex de EDGE_HYPHENS em SlugUtil para eliminar ambiguidade de precedencia (S5850) - reduz limite de upload multipart de 10MB para 8MB para atender ao rating de seguranca do SonarCloud (S5693) * feat: publish docker image to docker hub on push to main --------- Co-authored-by: ArthurMachado2501 --- .github/workflows/release.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0db6188..fa9a11e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,11 +1,11 @@ name: Release on: - workflow_dispatch: + push: + branches: + - main jobs: release: - runs-on: ubuntu-latest - - steps: - - run: echo "Release ainda não configurada." + uses: Solierrr/.github/.github/workflows/docker-publish.yml@main + secrets: inherit From e71953a6a7f99a2304197130cc2a56e5a9b33f9d Mon Sep 17 00:00:00 2001 From: davisilva <84607533+Megueutu@users.noreply.github.com> Date: Sun, 30 Aug 2026 18:07:04 -0300 Subject: [PATCH 3/8] feat: wire up qa-sync and repo-cleanup reusable workflows (#34) --- .github/workflows/qa-sync.yml | 13 +++++++++++++ .github/workflows/repo-cleanup.yml | 13 +++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 .github/workflows/qa-sync.yml create mode 100644 .github/workflows/repo-cleanup.yml diff --git a/.github/workflows/qa-sync.yml b/.github/workflows/qa-sync.yml new file mode 100644 index 0000000..c565491 --- /dev/null +++ b/.github/workflows/qa-sync.yml @@ -0,0 +1,13 @@ +name: Sync main <> QA + +on: + push: + branches: + - main + +jobs: + sync: + permissions: + contents: write + pull-requests: write + uses: Solierrr/.github/.github/workflows/qa-sync.yml@main diff --git a/.github/workflows/repo-cleanup.yml b/.github/workflows/repo-cleanup.yml new file mode 100644 index 0000000..2d94015 --- /dev/null +++ b/.github/workflows/repo-cleanup.yml @@ -0,0 +1,13 @@ +name: Cleanup branches + +on: + push: + branches: + - main + +jobs: + cleanup: + permissions: + contents: write + pull-requests: read + uses: Solierrr/.github/.github/workflows/repo-cleanup.yml@main From 27bc33f6b88914f3ac9b14774811ea0738504c5e Mon Sep 17 00:00:00 2001 From: Arthur Machado Date: Sun, 30 Aug 2026 19:02:18 -0300 Subject: [PATCH 4/8] Feat/observability (#35) * feat: add observability with OpenTelemetry support --- .env.example | 22 +++++ pom.xml | 16 +++ .../solaria/persistence/config/WebConfig.java | 5 +- .../handler/GlobalExceptionHandler.java | 93 ++++++++++++++---- .../observability/ActuatorSecurityConfig.java | 47 +++++++++ .../observability/HttpObservationErrors.java | 60 ++++++++++++ .../observability/ObservabilityConfig.java | 98 +++++++++++++++++++ .../OpenTelemetryAppenderInitializer.java | 38 +++++++ .../observability/TraceIdResponseFilter.java | 62 ++++++++++++ .../ProblemDetailAccessDeniedHandler.java | 13 +++ ...ProblemDetailAuthenticationEntryPoint.java | 13 +++ .../persistence/security/SecurityConfig.java | 2 + .../service/CloudinaryService.java | 57 ++++++++--- src/main/resources/application.properties | 60 +++++++++++- src/main/resources/logback-spring.xml | 31 ++++++ 15 files changed, 581 insertions(+), 36 deletions(-) create mode 100644 src/main/java/com/solaria/persistence/observability/ActuatorSecurityConfig.java create mode 100644 src/main/java/com/solaria/persistence/observability/HttpObservationErrors.java create mode 100644 src/main/java/com/solaria/persistence/observability/ObservabilityConfig.java create mode 100644 src/main/java/com/solaria/persistence/observability/OpenTelemetryAppenderInitializer.java create mode 100644 src/main/java/com/solaria/persistence/observability/TraceIdResponseFilter.java create mode 100644 src/main/resources/logback-spring.xml diff --git a/.env.example b/.env.example index cdd548d..898a6ae 100644 --- a/.env.example +++ b/.env.example @@ -1,2 +1,24 @@ +DB_URL= +DB_USERNAME= +DB_PASSWORD= +DB_NAME= +DB_PORT= +DB_SSLMODE= + +SERVICE_JWT_SECRET=qualquerstringde32letrasaisenaoelepara + +CLOUDINARY_CLOUD_NAME= +CLOUDINARY_API_KEY= +CLOUDINARY_API_SECRET= +CLOUDINARY_FOLDER_PREFIX=solier + +# URL do OpenTelemetry Collector +# dev local -> kubectl port-forward svc/otel-collector 4318:4318 e usar http://localhost:4318 +OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 +# Identidade do servico no backend de observabilidade +SERVICE_VERSION=dev +DEPLOYMENT_ENVIRONMENT=local +# taxa de requests normais irem para o collector | padrão em 100% pois collectoe abrange essa funcionalidade +OTEL_TRACES_SAMPLING_PROBABILITY=1.0 REDIS_URL=rediss://default:SENHA@SEU-HOST-UPSTASH:6379 GOOGLE_TRANSLATE_API_KEY=SUA-CHAVE-DA-GOOGLE-TRANSLATE-API diff --git a/pom.xml b/pom.xml index 43ef4c0..5aedce1 100644 --- a/pom.xml +++ b/pom.xml @@ -100,6 +100,22 @@ cloudinary-http5 2.3.0 + + org.springframework.boot + spring-boot-starter-opentelemetry + + + org.springframework.boot + spring-boot-starter-actuator + + + io.opentelemetry.instrumentation + opentelemetry-logback-appender-1.0 + 2.21.0-alpha + + + org.springframework.boot + spring-boot-starter-webmvc-test com.h2database h2 diff --git a/src/main/java/com/solaria/persistence/config/WebConfig.java b/src/main/java/com/solaria/persistence/config/WebConfig.java index b83d0c0..1b1413c 100644 --- a/src/main/java/com/solaria/persistence/config/WebConfig.java +++ b/src/main/java/com/solaria/persistence/config/WebConfig.java @@ -7,7 +7,7 @@ import com.solaria.persistence.security.rbac.EndpointAuthorizationInterceptor; /** - * Configuração MVC genérica + * Configuração MVC genérica */ @Configuration public class WebConfig implements WebMvcConfigurer { @@ -22,6 +22,7 @@ public WebConfig(EndpointAuthorizationInterceptor endpointAuthorizationIntercept public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(endpointAuthorizationInterceptor) .addPathPatterns("/**") - .excludePathPatterns("/internal/**", "/v3/api-docs/**", "/swagger-ui/**", "/swagger-ui.html"); + .excludePathPatterns("/internal/**", "/actuator/**", "/v3/api-docs/**", "/swagger-ui/**", + "/swagger-ui.html"); } } diff --git a/src/main/java/com/solaria/persistence/exception/handler/GlobalExceptionHandler.java b/src/main/java/com/solaria/persistence/exception/handler/GlobalExceptionHandler.java index 8b0142e..1016530 100644 --- a/src/main/java/com/solaria/persistence/exception/handler/GlobalExceptionHandler.java +++ b/src/main/java/com/solaria/persistence/exception/handler/GlobalExceptionHandler.java @@ -4,6 +4,8 @@ import java.util.List; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.OptimisticLockingFailureException; import org.springframework.http.HttpHeaders; @@ -22,29 +24,62 @@ import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; import com.solaria.persistence.exception.BusinessException; +import com.solaria.persistence.observability.HttpObservationErrors; import jakarta.persistence.EntityNotFoundException; import jakarta.servlet.http.HttpServletRequest; /** * Classe responsável por centralizar tratamento de exceções - * Diferentes handlers foram implementados visando cobrir escopos de: Banco de Dados, + * Diferentes handlers foram implementados visando cobrir escopos de: Banco de + * Dados, * Regras de negócio, Jsons, BEAN validations e erros inesperados. + * + * Logging -> toda exceção tratada é registrada como erro no tracing e nas + * métricas (span {@code ERROR} + tag {@code exception} em + * {@code http.server.requests}) + * gerando um log correlacionado ao trace + * + * {@code WARN} para 4xx + * {@code ERROR} com stack trace para 5xx */ + @RestControllerAdvice public class GlobalExceptionHandler extends ResponseEntityExceptionHandler { + private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class); + private final ProblemDetailFactory factory; public GlobalExceptionHandler(ProblemDetailFactory factory) { this.factory = factory; } + // Informa à observabilidade que a request teve um erro + private void markObservationError(Throwable ex, HttpServletRequest request) { + HttpObservationErrors.mark(request, ex); + } + + // Marca a observação como erro e registra um log correlacionado ao trace + private void recordError(Throwable ex, HttpStatusCode status, HttpServletRequest request) { + markObservationError(ex, request); + String method = (request != null) ? request.getMethod() : "?"; + String uri = (request != null) ? request.getRequestURI() : "?"; + if (status.is5xxServerError()) { + log.error("Falha {} em {} {}", status.value(), method, uri, ex); + } else { + log.warn("Erro {} em {} {}: {}", status.value(), method, uri, ex.getMessage()); + } + } + // Handler responsável por BusinessException e todas as subclasses. @ExceptionHandler(BusinessException.class) public ResponseEntity handleBusinessException(BusinessException ex, - HttpServletRequest request) { + HttpServletRequest request) { + + recordError(ex, ex.getStatus(), request); + ProblemDetail body = factory.create( ex.getStatus(), ex.getMessage(), @@ -58,7 +93,10 @@ public ResponseEntity handleBusinessException(BusinessException e @ExceptionHandler(DataIntegrityViolationException.class) public ResponseEntity handleDataIntegrity(DataIntegrityViolationException ex, - HttpServletRequest request) { + HttpServletRequest request) { + + recordError(ex, HttpStatus.CONFLICT, request); + ProblemDetail body = factory.create(HttpStatus.CONFLICT, "A operação viola uma restrição do banco.", "DATA_INTEGRITY_VIOLATION", @@ -69,7 +107,10 @@ public ResponseEntity handleDataIntegrity(DataIntegrityViolationE @ExceptionHandler(OptimisticLockingFailureException.class) public ResponseEntity handleOptimisticLock(OptimisticLockingFailureException ex, - HttpServletRequest request) { + HttpServletRequest request) { + + recordError(ex, HttpStatus.CONFLICT, request); + ProblemDetail body = factory.create(HttpStatus.CONFLICT, "O registro foi modificado por outra operação simultânea. Recarregue e tente novamente.", "CONCURRENT_MODIFICATION", @@ -80,7 +121,9 @@ public ResponseEntity handleOptimisticLock(OptimisticLockingFailu @ExceptionHandler(EntityNotFoundException.class) public ResponseEntity handleEntityNotFound(EntityNotFoundException ex, - HttpServletRequest request) { + HttpServletRequest request) { + recordError(ex, HttpStatus.NOT_FOUND, request); + ProblemDetail body = factory.create(HttpStatus.NOT_FOUND, "Registro não encontrado.", "RESOURCE_NOT_FOUND", @@ -89,12 +132,13 @@ public ResponseEntity handleEntityNotFound(EntityNotFoundExceptio return ResponseEntity.status(HttpStatus.NOT_FOUND).body(body); } - // Handler para negação de autorização vinda do próprio Spring Security - // sem handler explícito, o catch-all de Exception abaixo capturaria primeiro e devolveria 500 em vez de 403 + // Handler para negação de autorização vinda do Spring Security @ExceptionHandler(AccessDeniedException.class) public ResponseEntity handleAccessDenied(AccessDeniedException ex, - HttpServletRequest request) { + HttpServletRequest request) { + recordError(ex, HttpStatus.FORBIDDEN, request); + ProblemDetail body = factory.create(HttpStatus.FORBIDDEN, "Você não tem permissão para executar esta ação.", "UNAUTHORIZED_ACCESS", @@ -107,6 +151,11 @@ public ResponseEntity handleAccessDenied(AccessDeniedException ex @ExceptionHandler(Exception.class) public ResponseEntity handleUnexpected(Exception ex, HttpServletRequest request) { + + // registra no span (status ERROR + evento de excecao) com stack trace + markObservationError(ex, request); + log.error("Unhandled exception on {} {}", request.getMethod(), request.getRequestURI(), ex); + ProblemDetail body = factory.create(HttpStatus.INTERNAL_SERVER_ERROR, "Ocorreu um erro interno inesperado. Se persistir, contate o suporte.", "INTERNAL_ERROR", @@ -119,9 +168,12 @@ public ResponseEntity handleUnexpected(Exception ex, HttpServletR @Override protected ResponseEntity handleMethodArgumentNotValid(MethodArgumentNotValidException ex, - HttpHeaders headers, - HttpStatusCode status, - WebRequest request) { + HttpHeaders headers, + HttpStatusCode status, + WebRequest request) { + + recordError(ex, HttpStatus.BAD_REQUEST, servletRequest(request)); + List> errors = ex.getBindingResult() .getFieldErrors() .stream() @@ -140,13 +192,16 @@ protected ResponseEntity handleMethodArgumentNotValid(MethodArgumentNotV return new ResponseEntity<>(body, HttpStatus.BAD_REQUEST); } - // Sobrescrita de handler responsável por BEAN validation / parâmetros dos métodos. + // Sobrescrita de handler responsável por BEAN validation / parâmetros dos + // métodos. @Override protected ResponseEntity handleHandlerMethodValidationException(HandlerMethodValidationException ex, - HttpHeaders headers, - HttpStatusCode status, - WebRequest request) { + HttpHeaders headers, + HttpStatusCode status, + WebRequest request) { + recordError(ex, HttpStatus.BAD_REQUEST, servletRequest(request)); + List> errors = ex.getAllErrors() .stream() .map(err -> { @@ -166,9 +221,11 @@ protected ResponseEntity handleHandlerMethodValidationException(HandlerM @Override protected ResponseEntity handleHttpMessageNotReadable(HttpMessageNotReadableException ex, - HttpHeaders headers, - HttpStatusCode status, - WebRequest request) { + HttpHeaders headers, + HttpStatusCode status, + WebRequest request) { + recordError(ex, HttpStatus.BAD_REQUEST, servletRequest(request)); + ProblemDetail body = factory.create(HttpStatus.BAD_REQUEST, "Corpo da requisição malformado ou ilegível.", "MALFORMED_REQUEST", diff --git a/src/main/java/com/solaria/persistence/observability/ActuatorSecurityConfig.java b/src/main/java/com/solaria/persistence/observability/ActuatorSecurityConfig.java new file mode 100644 index 0000000..de9562d --- /dev/null +++ b/src/main/java/com/solaria/persistence/observability/ActuatorSecurityConfig.java @@ -0,0 +1,47 @@ +package com.solaria.persistence.observability; + +import org.springframework.boot.security.autoconfigure.actuate.web.servlet.EndpointRequest; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.annotation.Order; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.web.SecurityFilterChain; + +/** + * declara uma {@link SecurityFilterChain} + * dedicada e prioritaria ({@code @Order(0)}) para os endpoints do Spring Boot Actuator. + * + *

+ * mantem os endpoints de observabilidade em uma chain própria, sem isso {@code /actuator/**} + * cairia em outras chains e as probes do Kubernetes/load balancers receberiam {@code 401}. + *

+ * + *

+ * {@link #actuatorSecurityFilterChain(HttpSecurity)} -> libera{@code /actuator/health} e {@code /actuator/info} + *

+ */ +@Configuration +public class ActuatorSecurityConfig { + + /** + * Chain de seguranca aplicada apenas aos endpoints do Actuator + * {@code @Order(0)} -> prioridade maior de chain + * + * @return chain configurada para {@link EndpointRequest#toAnyEndpoint()} + */ + @Bean + @Order(0) + public SecurityFilterChain actuatorSecurityFilterChain(HttpSecurity http) throws Exception { + http + // restringe esta chain apenas aos endpoints do Actuator + .securityMatcher(EndpointRequest.toAnyEndpoint()) + // health/info liberados para probes e checagens externas + .authorizeHttpRequests(auth -> auth + .requestMatchers(EndpointRequest.to("health", "info")).permitAll() + .anyRequest().denyAll()) + .csrf(csrf -> csrf.disable()) + .sessionManagement(sm -> sm.sessionCreationPolicy(SessionCreationPolicy.STATELESS)); + return http.build(); + } +} diff --git a/src/main/java/com/solaria/persistence/observability/HttpObservationErrors.java b/src/main/java/com/solaria/persistence/observability/HttpObservationErrors.java new file mode 100644 index 0000000..fa2a914 --- /dev/null +++ b/src/main/java/com/solaria/persistence/observability/HttpObservationErrors.java @@ -0,0 +1,60 @@ +package com.solaria.persistence.observability; + +import io.micrometer.observation.Observation; + +import org.springframework.web.filter.ServerHttpObservationFilter; + +import jakarta.servlet.http.HttpServletRequest; + +/** + * Marca a requisição HTTP atual como erro quando uma exceção já foi tratada pela aplicação> + * + *

+ * A classe apenas atualiza a observabilidade da request + * não altera a resposta HTTP nem o tratamento da exceção -> função dos handlers de exception + *

+ */ + +public final class HttpObservationErrors { + + /** + * Identifica a observação HTTP criada para a request atual + * + *

+ * Quando essa observação existe, informar diretamente que a request + * terminou com erro e faz com que essa informação apareça no trace + *

+ */ + private static final String OBSERVATION_ATTRIBUTE = + "org.springframework.web.filter.ServerHttpObservationFilter.observation"; + + private HttpObservationErrors() { + } + + /** + * Registra uma exceção na observação da request atual + * + *

+ * Se a observação estiver disponível -> erro é registrado no trace + * se não -> tenta registrar a exceção no contexto disponível + *

+ * + *

+ * Se não houver request exception ou observation -> não acontece nada + *

+ */ + public static void mark(HttpServletRequest request, Throwable error) { + if (request == null || error == null) { + return; + } + + if (request.getAttribute(OBSERVATION_ATTRIBUTE) instanceof Observation observation) { + observation.error(error); + return; + } + + // Mesmo sem a observação principal, tenta registrar a exceção no contexto da request + ServerHttpObservationFilter.findObservationContext(request) + .ifPresent(context -> context.setError(error)); + } +} diff --git a/src/main/java/com/solaria/persistence/observability/ObservabilityConfig.java b/src/main/java/com/solaria/persistence/observability/ObservabilityConfig.java new file mode 100644 index 0000000..f88a591 --- /dev/null +++ b/src/main/java/com/solaria/persistence/observability/ObservabilityConfig.java @@ -0,0 +1,98 @@ +package com.solaria.persistence.observability; + +import org.springframework.beans.factory.ObjectProvider; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.Ordered; +import org.springframework.core.task.TaskDecorator; +import org.springframework.core.task.support.ContextPropagatingTaskDecorator; +import org.springframework.http.server.observation.ServerRequestObservationContext; + +import io.micrometer.observation.ObservationPredicate; +import io.micrometer.tracing.Tracer; +import jakarta.servlet.DispatcherType; + +/** + * Configuracao central de observabilidade da aplicacao + * + * Concentra na camda de infra os beans que para comportamento das libs Micrometer|Micrometer Tracing|OpenTelemetry + * sem misturar camada de observabilidade com camada de negocios + * + *

+ * + *

Beans disponibilizados:

+ *
    + *
  • {@link #traceIdResponseFilterRegistration(ObjectProvider)} -> registra o + * {@link TraceIdResponseFilter} logo apos o filtro de observacao do Spring MVC
  • + *
  • {@link #noActuatorObservations()} -> descarta observacoes (spans/metricas) + * do trafego de probe em {@code /actuator/**} reduzindo ruido e custo
  • + *
  • {@link #contextPropagatingTaskDecorator()} -> preserva o contexto de + * observabilidade em trocas de thread (async) aplicado automaticamente pelo + * Spring Boot ao executor padrao
  • + *
+ */ +@Configuration +public class ObservabilityConfig { + + /** + * Registra o filtro responsável por adicionar o traceId + * na resposta HTTP -> {@link TraceIdResponseFilter} + * + *

+ * permite que o cliente receba o traceId e possa utilizá-lo para localizar a requests + *

+ * + *

funciona para requests normais, assíncronas e relacionadas a erros

+ * + * @param tracerProvider fornece o tracer quando o tracing está habilitado + * @return configuração do filtro de traceId + */ + @Bean + public FilterRegistrationBean traceIdResponseFilterRegistration( + ObjectProvider tracerProvider) { + FilterRegistrationBean registration = + new FilterRegistrationBean<>(new TraceIdResponseFilter(tracerProvider)); + registration.setOrder(Ordered.HIGHEST_PRECEDENCE + 2); + registration.setDispatcherTypes(DispatcherType.REQUEST, DispatcherType.ASYNC, DispatcherType.ERROR); + registration.addUrlPatterns("/*"); + return registration; + } + + /** + * Evita gerar métricas e traces para requisições do Actuator + * + *

Endpoints como {@code /actuator/health} são chamados + * frequentemente pelo K8s para verificar se a aplicação + * está funcionando, essas chamadas não são importantes + * para acompanhar o comportamento da aplicação, elas são ignoradas

+ * + * @return regra que decide quais requisições devem gerar observabilidade + */ + @Bean + public ObservationPredicate noActuatorObservations() { + return (name, context) -> { + if (context instanceof ServerRequestObservationContext serverContext) { + String uri = serverContext.getCarrier().getRequestURI(); + return uri == null || !uri.startsWith("/actuator"); + } + return true; + }; + } + + /** + * Mantém o contexto de observabilidade quando uma tarefa + * é executada em outra thread. + * + *

importante para async pois permite que o traceId e outras informações de contexto + * continuem disponíveis mesmo após a troca de thread.

+ * + * @return decorator responsável por propagar o contexto + */ + @Bean + @ConditionalOnClass(name = "io.micrometer.context.ContextSnapshot") + public TaskDecorator contextPropagatingTaskDecorator() { + return new ContextPropagatingTaskDecorator(); + } +} diff --git a/src/main/java/com/solaria/persistence/observability/OpenTelemetryAppenderInitializer.java b/src/main/java/com/solaria/persistence/observability/OpenTelemetryAppenderInitializer.java new file mode 100644 index 0000000..706648e --- /dev/null +++ b/src/main/java/com/solaria/persistence/observability/OpenTelemetryAppenderInitializer.java @@ -0,0 +1,38 @@ +package com.solaria.persistence.observability; + +import org.springframework.beans.factory.ObjectProvider; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.ApplicationListener; +import org.springframework.stereotype.Component; + +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.logback.appender.v1_0.OpenTelemetryAppender; + + +/** + * + * Prepara o envio dos logs da aplicação para o OpenTelemetry + * + *

+ * Caso o OpenTelemetry não esteja disponível a aplicação continua funcionando + * normalmente e os logs seguem apenas o comportamento padrão do Logback + *

+ */ + +@Component +public class OpenTelemetryAppenderInitializer implements ApplicationListener { + + private final ObjectProvider openTelemetryProvider; + + public OpenTelemetryAppenderInitializer(ObjectProvider openTelemetryProvider) { + this.openTelemetryProvider = openTelemetryProvider; + } + + @Override + public void onApplicationEvent(ApplicationReadyEvent event) { + OpenTelemetry openTelemetry = openTelemetryProvider.getIfAvailable(); + if (openTelemetry != null) { + OpenTelemetryAppender.install(openTelemetry); + } + } +} diff --git a/src/main/java/com/solaria/persistence/observability/TraceIdResponseFilter.java b/src/main/java/com/solaria/persistence/observability/TraceIdResponseFilter.java new file mode 100644 index 0000000..14ba59a --- /dev/null +++ b/src/main/java/com/solaria/persistence/observability/TraceIdResponseFilter.java @@ -0,0 +1,62 @@ +package com.solaria.persistence.observability; + +import java.io.IOException; + +import org.springframework.beans.factory.ObjectProvider; +import org.springframework.web.filter.OncePerRequestFilter; + +import io.micrometer.tracing.Span; +import io.micrometer.tracing.Tracer; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +/** + *

+ * Filtro que copia o {@code traceId} do span ativo para o header de resposta {@code X-Trace-Id} + *

+ * + *

+ * Pega o traceId do span já ativo e coloca no response + *

+ * + *

+ * Sem span ativo, o filtro nao faz nada + *

+ * + *

+ * Registrado em {@link ObservabilityConfig#traceIdResponseFilterRegistration} + *

+ */ +public class TraceIdResponseFilter extends OncePerRequestFilter { + + /** Header de resposta com o {@code traceId} */ + public static final String TRACE_ID_HEADER = "X-Trace-Id"; + + // ObjectProvider -> bean Tracer nao existe quando o tracing esta desligado + private final ObjectProvider tracerProvider; + + public TraceIdResponseFilter(ObjectProvider tracerProvider) { + this.tracerProvider = tracerProvider; + } + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, + FilterChain filterChain) throws ServletException, IOException { + // verifica se o tracer existe | se não existir a chain não faz nada + Tracer tracer = tracerProvider.getIfAvailable(); + + if (tracer != null && !response.isCommitted()) { + // mantem o span atual + Span span = tracer.currentSpan(); + + if (span != null) { + + response.setHeader(TRACE_ID_HEADER, + span.context().traceId()); // pega o traceId do span + } + } + filterChain.doFilter(request, response); + } +} diff --git a/src/main/java/com/solaria/persistence/security/ProblemDetailAccessDeniedHandler.java b/src/main/java/com/solaria/persistence/security/ProblemDetailAccessDeniedHandler.java index 9470c91..c35cd6e 100644 --- a/src/main/java/com/solaria/persistence/security/ProblemDetailAccessDeniedHandler.java +++ b/src/main/java/com/solaria/persistence/security/ProblemDetailAccessDeniedHandler.java @@ -2,6 +2,8 @@ import java.io.IOException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; import org.springframework.http.ProblemDetail; import org.springframework.security.access.AccessDeniedException; @@ -9,6 +11,7 @@ import org.springframework.stereotype.Component; import com.solaria.persistence.exception.handler.ProblemDetailFactory; +import com.solaria.persistence.observability.HttpObservationErrors; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @@ -20,6 +23,8 @@ @Component public class ProblemDetailAccessDeniedHandler implements AccessDeniedHandler { + private static final Logger log = LoggerFactory.getLogger(ProblemDetailAccessDeniedHandler.class); + private final ProblemDetailFactory problemDetailFactory; private final ObjectMapper objectMapper; @@ -34,6 +39,14 @@ public ProblemDetailAccessDeniedHandler(ProblemDetailFactory problemDetailFactor public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException { + // 403 (RBAC) gerado na chain fora do GlobalExceptionHandler + // marca a observação como span ERROR + tag exception, como WARN + HttpObservationErrors.mark(request, accessDeniedException); + log.warn("403 em {} {}: {}", + request.getMethod(), + request.getRequestURI(), + accessDeniedException.getMessage()); + // cria corpo do json a partir da classe ProblemDetail ProblemDetail problem = problemDetailFactory.create( HttpStatus.FORBIDDEN, diff --git a/src/main/java/com/solaria/persistence/security/ProblemDetailAuthenticationEntryPoint.java b/src/main/java/com/solaria/persistence/security/ProblemDetailAuthenticationEntryPoint.java index b712432..cd20ac5 100644 --- a/src/main/java/com/solaria/persistence/security/ProblemDetailAuthenticationEntryPoint.java +++ b/src/main/java/com/solaria/persistence/security/ProblemDetailAuthenticationEntryPoint.java @@ -2,6 +2,8 @@ import java.io.IOException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; import org.springframework.http.ProblemDetail; import org.springframework.security.core.AuthenticationException; @@ -9,6 +11,7 @@ import org.springframework.stereotype.Component; import com.solaria.persistence.exception.handler.ProblemDetailFactory; +import com.solaria.persistence.observability.HttpObservationErrors; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @@ -20,6 +23,8 @@ @Component public class ProblemDetailAuthenticationEntryPoint implements AuthenticationEntryPoint { + private static final Logger log = LoggerFactory.getLogger(ProblemDetailAuthenticationEntryPoint.class); + private final ProblemDetailFactory problemDetailFactory; private final ObjectMapper objectMapper; @@ -34,6 +39,14 @@ public ProblemDetailAuthenticationEntryPoint(ProblemDetailFactory problemDetailF @Override public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException { + // 401 gerado na chain fora do GlobalExceptionHandler + // marca a observação como span ERROR + tag exception, como WARN + HttpObservationErrors.mark(request, authException); + log.warn("401 em {} {}: {}", + request.getMethod(), + request.getRequestURI(), + authException.getMessage()); + // cria corpo do json a partir da classe ProblemDetail ProblemDetail problem = problemDetailFactory.create( HttpStatus.UNAUTHORIZED, diff --git a/src/main/java/com/solaria/persistence/security/SecurityConfig.java b/src/main/java/com/solaria/persistence/security/SecurityConfig.java index 1442c29..9668b9d 100644 --- a/src/main/java/com/solaria/persistence/security/SecurityConfig.java +++ b/src/main/java/com/solaria/persistence/security/SecurityConfig.java @@ -188,6 +188,8 @@ public CorsConfigurationSource corsConfigurationSource() { configuration.setAllowedMethods(List.of("GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS")); // headers permitidos configuration.setAllowedHeaders(List.of("Authorization", "Content-Type", "apikey")); + // traz o traceId nas respostas de erro + configuration.setExposedHeaders(List.of("X-Trace-Id")); // Aplica esta CorsConfiguration a todos os paths ("/**") UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", configuration); diff --git a/src/main/java/com/solaria/persistence/service/CloudinaryService.java b/src/main/java/com/solaria/persistence/service/CloudinaryService.java index 1b38515..7c0d150 100644 --- a/src/main/java/com/solaria/persistence/service/CloudinaryService.java +++ b/src/main/java/com/solaria/persistence/service/CloudinaryService.java @@ -12,16 +12,28 @@ import com.solaria.persistence.exception.InvalidFieldException; import com.solaria.persistence.exception.StorageException; +import io.micrometer.observation.Observation; +import io.micrometer.observation.ObservationRegistry; + /** * Classe centralizadora que fala diretamente com o SDK do Cloudinary. + * + *

+ * As chamadas ao SDK sao envolvidas em uma {@link Observation} para render um + * span filho com latencia/erro dessa dependencia externa no trace da + * requisicao. + *

*/ @Service public class CloudinaryService { private final Cloudinary cloudinary; + // registry usado para criar o span das chamadas ao Cloudinary + private final ObservationRegistry observationRegistry; - public CloudinaryService(Cloudinary cloudinary) { + public CloudinaryService(Cloudinary cloudinary, ObservationRegistry observationRegistry) { this.cloudinary = cloudinary; + this.observationRegistry = observationRegistry; } // dto simples -> representa o resultado do upload @@ -46,7 +58,6 @@ public UploadResult upload( long maxBytes) // tamanho maxímo de arquivo permitido { - // validação (vazio/tipo/tamanho) antes de chamar o SDK do cloudnary validate(file, allowedContentTypes, maxBytes); @@ -62,21 +73,30 @@ public UploadResult upload( options.put("public_id", publicId); } - try { - // comunicação com cloudnary-> retorna um map com o resultado do upload / upload síncrono - Map result = cloudinary // sdk que conversa com o cloudnary - .uploader() - .upload( - file.getBytes(), // converte o arquivo para byte -> sdk recebe dados nesse formato - options // configs do cloudnary - ); + + // comunicação com cloudnary + observation(logging)-> retorna um map com o resultado do upload / upload síncrono + Observation observation = Observation.createNotStarted("cloudinary.upload", observationRegistry) + .lowCardinalityKeyValue("cloudinary.folder", folder) // pasta do cloudinary para traces + .start(); + + try (Observation.Scope ignored = observation.openScope()) { + // comunicação com cloudnary-> retorna um map com o resultado do upload + + Map result = cloudinary // sdk que conversa com o cloudnary + .uploader() + .upload( + file.getBytes(), // converte o arquivo para byte -> sdk recebe dados nesse formato + options // configs do cloudnary + ); // secure_url -> url pública do asset | public_id -> id interno -> usado em delete/sobrescrita return new UploadResult((String) result.get("secure_url"), (String) result.get("public_id")); - } catch (IOException e) { // qualquer exception vira storageException e retornado como 502 + observation.error(e); throw new StorageException("Falha ao enviar arquivo para o Cloudinary"); + } finally { + observation.stop(); } } @@ -84,10 +104,21 @@ public void delete(String publicId) { if (publicId == null || publicId.isBlank()) { return; } - try { - cloudinary.uploader().destroy(publicId, ObjectUtils.asMap("invalidate", true)); + + // destroy sincrono, envolvido numa Observation -> span Sem tags de id + Observation observation = Observation.createNotStarted("cloudinary.delete", observationRegistry).start(); + try (Observation.Scope ignored = observation.openScope()) { + + cloudinary.uploader() + .destroy(publicId, + ObjectUtils.asMap("invalidate", true) + ); + } catch (IOException e) { + observation.error(e); throw new StorageException("Falha ao remover arquivo do Cloudinary"); + } finally { + observation.stop(); } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e516233..d48ab53 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -46,13 +46,67 @@ app.jwt.service.access-ttl-ms=${SERVICE_JWT_ACCESS_TTL_MS:600000} # TTL do token de refresh app.jwt.service.refresh-ttl-ms=${SERVICE_JWT_REFRESH_TTL_MS:3600000} +# variaveis da URL -> montada dessa forma -> *cloudinary://:@* cloudinary.cloud-name=${CLOUDINARY_CLOUD_NAME} cloudinary.api-key=${CLOUDINARY_API_KEY} cloudinary.api-secret=${CLOUDINARY_API_SECRET} cloudinary.folder-prefix=${CLOUDINARY_FOLDER_PREFIX:solier} +cloudinary.timeout-seconds=${CLOUDINARY_TIMEOUT_SECONDS:10} -google-translate.api-key=${GOOGLE_TRANSLATE_API_KEY} +spring.servlet.multipart.max-file-size=10MB +spring.servlet.multipart.max-request-size=10MB + +# Observabilidade (Actuator + Micrometer + Micrometer Tracing + OpenTelemetry SDK) +# aplicacao exporta OTLP para o Collector + +# identidade da aplicação no backend de observabilidade +management.opentelemetry.resource-attributes.service.name=${spring.application.name} +management.opentelemetry.resource-attributes.service.version=${SERVICE_VERSION:dev} +management.opentelemetry.resource-attributes.deployment.environment=${DEPLOYMENT_ENVIRONMENT:local} + +# endpoints OTLP (apontam para o collector) +management.otlp.metrics.export.url=${OTEL_EXPORTER_OTLP_ENDPOINT:http://localhost:4318}/v1/metrics +management.opentelemetry.tracing.export.otlp.endpoint=${OTEL_EXPORTER_OTLP_ENDPOINT:http://localhost:4318}/v1/traces +management.opentelemetry.logging.export.otlp.endpoint=${OTEL_EXPORTER_OTLP_ENDPOINT:http://localhost:4318}/v1/logs + +# % de traces enviados | padrão de 100% porque collector decide se envia ou descarta trace +management.tracing.sampling.probability=${OTEL_TRACES_SAMPLING_PROBABILITY:1.0} + +# restringindo actuactor para /health e /info +management.endpoints.web.exposure.include=health,info +management.endpoints.access.default=none +management.endpoint.health.access=read-only +management.endpoint.info.access=read-only + +# integração com probres do k8s no Actuator ( /actuator/health/[liveness|readiness] ) +management.endpoint.health.probes.enabled=true + +# Verifica a saúde interna do Spring -> Se falhar o K8s reinicia o container +management.endpoint.health.group.liveness.include=livenessState -spring.servlet.multipart.max-file-size=8MB -spring.servlet.multipart.max-request-size=8MB +# Verifica o Spring + Banco de Dados -> Se falhar o K8s remove o pod do load balancer sem reiniciar +management.endpoint.health.group.readiness.include=readinessState,db + +# Oculta detalhes na resposta do /health (segurança+performance) +management.endpoint.health.show-details=never +management.endpoint.health.show-components=never +management.health.redis.enabled=false + +# Habilita histogramas para calcular percentis (p50, p95, p99) no Grafana +management.metrics.distribution.percentiles-histogram.http.server.requests=true + +# medição de faixas de tempo para analise de distribuição de requests por tempo de latência no grafana +management.metrics.distribution.slo.http.server.requests=50ms,100ms,200ms,300ms,500ms,1s,2s,5s + +# Valor mínimo considerado pelo histograma +management.metrics.distribution.minimum-expected-value.http.server.requests=5ms +# Valor máximo considerado pelo histograma +management.metrics.distribution.maximum-expected-value.http.server.requests=10s + +# conteudo do endpoint /actuator/info +management.info.env.enabled=false +management.info.java.enabled=true +management.info.os.enabled=true + +google-translate.api-key=${GOOGLE_TRANSLATE_API_KEY} diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..398ebee --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + false + false + false + true + * + + + + + + + + From d6fa6645c1e8b4f6ca1217088b6694e725bfa80e Mon Sep 17 00:00:00 2001 From: davisilva <84607533+Megueutu@users.noreply.github.com> Date: Sun, 30 Aug 2026 22:37:36 -0300 Subject: [PATCH 5/8] refactor: organize source packages by business domain (#37) * refactor: organize source packages by business domain * fix: correct malformed dependency closing tag in pom.xml --- pom.xml | 1 + .../{ => auth}/ServiceAuthController.java | 8 ++--- .../{ => catalog}/InventoryController.java | 12 +++---- .../{ => catalog}/ModelController.java | 12 +++---- .../{ => catalog}/ModelPhotoController.java | 8 ++--- .../{ => catalog}/OfferController.java | 10 +++--- .../{ => catalog}/SupplierController.java | 14 ++++---- .../{ => common}/InternalPingController.java | 2 +- .../BusinessContactController.java | 10 +++--- .../{ => company}/ChargeController.java | 12 +++---- .../{ => company}/CompanyController.java | 14 ++++---- .../{ => company}/CompanyPhotoController.java | 10 +++--- .../{ => company}/CompanyPlansController.java | 10 +++--- .../CompanyPositionsController.java | 10 +++--- .../{ => company}/SubscriptionController.java | 10 +++--- .../{ => execution}/RequesterController.java | 10 +++--- .../ServiceContractController.java | 10 +++--- .../ServiceExecutorController.java | 12 +++---- .../TechnicalProjectController.java | 10 +++--- .../TechnicalServiceController.java | 16 ++++----- .../InternalUserProvisioningController.java | 8 ++--- .../{ => identity}/PermissionController.java | 10 +++--- .../{ => identity}/PersonController.java | 10 +++--- .../{ => identity}/PositionController.java | 10 +++--- .../PositionPermissionController.java | 10 +++--- .../{ => identity}/UserCompanyController.java | 12 +++---- .../{ => identity}/UserController.java | 10 +++--- .../{ => identity}/UserPhotoController.java | 10 +++--- .../CertificationController.java | 10 +++--- .../CertificationRecordController.java | 10 +++--- .../ProfessionController.java | 10 +++--- .../ProfessionalRegistrationController.java | 10 +++--- .../ProfessionalReviewController.java | 10 +++--- .../{ => professional}/ShiftController.java | 10 +++--- .../TechnicalCourseController.java | 10 +++--- .../TechnicianAffiliationController.java | 16 ++++----- .../TechnicianController.java | 10 +++--- .../{ => proposal}/ProposalController.java | 12 +++---- .../ProposalItemController.java | 10 +++--- .../ProposalUnitController.java | 10 +++--- .../{ => shared}/AddressController.java | 10 +++--- .../{ => shared}/ContactController.java | 10 +++--- .../{ => shared}/FluxLogController.java | 10 +++--- .../GeolocalizationController.java | 10 +++--- .../{ => unit}/EnergyBillController.java | 10 +++--- .../{ => unit}/LocalUnitController.java | 12 +++---- .../{ => unit}/LocalUnitPhotoController.java | 8 ++--- .../UnitSpecificationsController.java | 10 +++--- .../entity/{ => catalog}/Inventory.java | 2 +- .../domain/entity/{ => catalog}/Model.java | 6 ++-- .../entity/{ => catalog}/ModelPhoto.java | 2 +- .../domain/entity/{ => catalog}/Offer.java | 4 +-- .../{ => catalog}/OfferTranslation.java | 2 +- .../domain/entity/{ => catalog}/Supplier.java | 5 +-- .../entity/{ => company}/BusinessContact.java | 2 +- .../domain/entity/{ => company}/Charge.java | 6 ++-- .../domain/entity/{ => company}/Company.java | 5 +-- .../entity/{ => company}/CompanyPhoto.java | 4 +-- .../entity/{ => company}/CompanyPlans.java | 4 +-- .../{ => company}/CompanyPositions.java | 3 +- .../entity/{ => company}/Subscription.java | 5 +-- .../entity/{ => execution}/Requester.java | 3 +- .../{ => execution}/ServiceContract.java | 2 +- .../{ => execution}/ServiceExecutor.java | 3 +- .../{ => execution}/TechnicalProject.java | 5 +-- .../{ => execution}/TechnicalService.java | 4 +-- .../entity/{ => identity}/Permission.java | 2 +- .../domain/entity/{ => identity}/Person.java | 3 +- .../entity/{ => identity}/Position.java | 2 +- .../{ => identity}/PositionPermission.java | 2 +- .../domain/entity/{ => identity}/User.java | 2 +- .../entity/{ => identity}/UserCompany.java | 3 +- .../entity/{ => identity}/UserPhoto.java | 4 +-- .../{ => professional}/Certification.java | 2 +- .../CertificationRecord.java | 2 +- .../entity/{ => professional}/Profession.java | 2 +- .../ProfessionalRegistration.java | 2 +- .../ProfessionalReview.java | 4 ++- .../entity/{ => professional}/Shift.java | 4 +-- .../{ => professional}/TechnicalCourse.java | 3 +- .../entity/{ => professional}/Technician.java | 3 +- .../TechnicianAffiliation.java | 5 +-- .../entity/{ => proposal}/Proposal.java | 5 +-- .../entity/{ => proposal}/ProposalItem.java | 3 +- .../entity/{ => proposal}/ProposalUnit.java | 3 +- .../domain/entity/{ => shared}/Address.java | 2 +- .../domain/entity/{ => shared}/Contact.java | 2 +- .../domain/entity/{ => shared}/FluxLog.java | 3 +- .../entity/{ => shared}/Geolocalization.java | 2 +- .../domain/entity/{ => unit}/EnergyBill.java | 2 +- .../domain/entity/{ => unit}/LocalUnit.java | 6 ++-- .../entity/{ => unit}/LocalUnitPhoto.java | 2 +- .../entity/{ => unit}/UnitSpecifications.java | 2 +- .../persistence/domain/enums/PhotoType.java | 6 ---- .../enums/{ => catalog}/ModelStatus.java | 2 +- .../domain/enums/{ => catalog}/PanelType.java | 2 +- .../enums/{ => catalog}/SupplierStatus.java | 2 +- .../{ => catalog}/TranslationStatus.java | 2 +- .../enums/{ => company}/BillingStatus.java | 2 +- .../enums/{ => company}/CompanyStatus.java | 2 +- .../enums/{ => company}/PaymentMethod.java | 2 +- .../domain/enums/{ => company}/PlanCycle.java | 2 +- .../{ => company}/SubscriptionStatus.java | 2 +- .../enums/{ => execution}/ServiceStatus.java | 2 +- .../enums/{ => professional}/DayWeek.java | 2 +- .../TechnicalAffiliationType.java | 2 +- .../enums/{ => proposal}/ProposalStatus.java | 2 +- .../domain/enums/shared/PhotoType.java | 6 ++++ .../domain/enums/{ => unit}/LocationType.java | 2 +- .../{ => catalog}/UpdateQuantityDTO.java | 2 +- .../UpdateBusinessContactIdDTO.java | 2 +- .../UpdateCompanyAddressIdDTO.java | 2 +- .../{ => execution}/ServiceAcceptanceDTO.java | 2 +- .../{ => execution}/ServiceScheduleDTO.java | 2 +- .../{ => execution}/UpdateFunctionDTO.java | 2 +- .../{ => execution}/UpdatePurposeDTO.java | 2 +- .../{ => identity}/UpdatePositionDTO.java | 2 +- .../{ => professional}/UpdateActiveDTO.java | 2 +- .../{ => professional}/UpdateTypeDTO.java | 4 +-- .../patch/{ => proposal}/UpdateNotesDTO.java | 2 +- .../UpdateLocalUnitAddressIdDTO.java | 2 +- .../ServiceTokenMintRequestDTO.java | 2 +- .../ServiceTokenRefreshRequestDTO.java | 2 +- .../{ => catalog}/InventoryRequestDTO.java | 2 +- .../{ => catalog}/ModelRequestDTO.java | 4 +-- .../{ => catalog}/OfferRequestDTO.java | 2 +- .../{ => catalog}/SupplierRequestDTO.java | 2 +- .../SupplierSearchFilterDTO.java | 2 +- .../BusinessContactRequestDTO.java | 2 +- .../{ => company}/ChargeRequestDTO.java | 4 +-- .../{ => company}/CompanyPlansRequestDTO.java | 4 +-- .../CompanyPositionsRequestDTO.java | 2 +- .../{ => company}/CompanyRequestDTO.java | 2 +- .../{ => company}/SubscriptionRequestDTO.java | 2 +- .../{ => execution}/RequesterRequestDTO.java | 2 +- .../ServiceContractRequestDTO.java | 2 +- .../ServiceExecutorRequestDTO.java | 2 +- .../TechnicalProjectRequestDTO.java | 4 +-- .../TechnicalServiceRequestDTO.java | 2 +- .../InternalUserProvisionRequestDTO.java | 2 +- .../{ => identity}/PermissionRequestDTO.java | 2 +- .../{ => identity}/PersonRequestDTO.java | 2 +- .../PositionPermissionRequestDTO.java | 2 +- .../{ => identity}/PositionRequestDTO.java | 2 +- .../{ => identity}/UserCompanyRequestDTO.java | 2 +- .../{ => identity}/UserRequestDTO.java | 2 +- .../CertificationRecordRequestDTO.java | 2 +- .../CertificationRequestDTO.java | 2 +- .../ProfessionRequestDTO.java | 2 +- .../ProfessionalRegistrationRequestDTO.java | 2 +- .../ProfessionalReviewRequestDTO.java | 2 +- .../{ => professional}/ShiftRequestDTO.java | 4 +-- .../TechnicalCourseRequestDTO.java | 2 +- .../TechnicianAffiliationRequestDTO.java | 4 +-- .../TechnicianRequestDTO.java | 2 +- .../ProposalItemRequestDTO.java | 2 +- .../{ => proposal}/ProposalRequestDTO.java | 2 +- .../ProposalUnitRequestDTO.java | 2 +- .../{ => shared}/AddressRequestDTO.java | 2 +- .../{ => shared}/ContactRequestDTO.java | 2 +- .../{ => shared}/FluxLogRequestDTO.java | 2 +- .../GeolocalizationRequestDTO.java | 2 +- .../{ => unit}/EnergyBillRequestDTO.java | 2 +- .../{ => unit}/LocalUnitRequestDTO.java | 4 +-- .../UnitSpecificationsRequestDTO.java | 2 +- .../{ => auth}/ServiceTokenResponseDTO.java | 2 +- .../{ => catalog}/InventoryResponseDTO.java | 2 +- .../{ => catalog}/ModelPhotoResponseDTO.java | 2 +- .../{ => catalog}/ModelResponseDTO.java | 6 ++-- .../{ => catalog}/OfferResponseDTO.java | 4 +-- .../OfferTranslationResponseDTO.java | 2 +- .../{ => catalog}/SupplierResponseDTO.java | 5 +-- .../SupplierSearchResponseDTO.java | 2 +- .../BusinessContactResponseDTO.java | 2 +- .../{ => company}/ChargeResponseDTO.java | 6 ++-- .../CompanyPhotoResponseDTO.java | 4 +-- .../CompanyPlansResponseDTO.java | 4 +-- .../CompanyPositionsResponseDTO.java | 3 +- .../{ => company}/CompanyResponseDTO.java | 5 +-- .../SubscriptionResponseDTO.java | 4 +-- .../{ => execution}/RequesterResponseDTO.java | 3 +- .../ServiceContractResponseDTO.java | 2 +- .../ServiceExecutorResponseDTO.java | 3 +- .../TechnicalProjectResponseDTO.java | 4 +-- .../TechnicalServiceResponseDTO.java | 4 +-- .../InternalUserProvisionResponseDTO.java | 2 +- .../{ => identity}/PermissionResponseDTO.java | 2 +- .../{ => identity}/PersonResponseDTO.java | 3 +- .../PositionPermissionResponseDTO.java | 2 +- .../{ => identity}/PositionResponseDTO.java | 2 +- .../UserCompanyResponseDTO.java | 2 +- .../{ => identity}/UserPhotoResponseDTO.java | 4 +-- .../{ => identity}/UserResponseDTO.java | 2 +- .../CertificationRecordResponseDTO.java | 2 +- .../CertificationResponseDTO.java | 2 +- .../ProfessionResponseDTO.java | 2 +- .../ProfessionalRegistrationResponseDTO.java | 2 +- .../ProfessionalReviewResponseDTO.java | 2 +- .../{ => professional}/ShiftResponseDTO.java | 4 +-- .../TechnicalCourseResponseDTO.java | 2 +- .../TechnicianAffiliationResponseDTO.java | 4 +-- .../TechnicianResponseDTO.java | 3 +- .../ProposalItemResponseDTO.java | 3 +- .../{ => proposal}/ProposalResponseDTO.java | 4 +-- .../ProposalUnitResponseDTO.java | 3 +- .../{ => shared}/AddressResponseDTO.java | 2 +- .../{ => shared}/ContactResponseDTO.java | 2 +- .../{ => shared}/FluxLogResponseDTO.java | 2 +- .../GeolocalizationResponseDTO.java | 2 +- .../{ => unit}/EnergyBillResponseDTO.java | 2 +- .../{ => unit}/LocalUnitPhotoResponseDTO.java | 2 +- .../{ => unit}/LocalUnitResponseDTO.java | 5 +-- .../UnitSpecificationsResponseDTO.java | 2 +- .../{ => catalog}/InventoryOpenApi.java | 8 ++--- .../openapi/{ => catalog}/ModelOpenApi.java | 8 ++--- .../{ => catalog}/ModelPhotoOpenApi.java | 4 +-- .../openapi/{ => catalog}/OfferOpenApi.java | 6 ++-- .../{ => catalog}/SupplierOpenApi.java | 10 +++--- .../{ => company}/BusinessContactOpenApi.java | 6 ++-- .../openapi/{ => company}/ChargeOpenApi.java | 8 ++--- .../openapi/{ => company}/CompanyOpenApi.java | 10 +++--- .../{ => company}/CompanyPhotoOpenApi.java | 6 ++-- .../{ => company}/CompanyPlansOpenApi.java | 6 ++-- .../CompanyPositionsOpenApi.java | 6 ++-- .../{ => company}/SubscriptionOpenApi.java | 6 ++-- .../{ => execution}/RequesterOpenApi.java | 6 ++-- .../ServiceContractOpenApi.java | 6 ++-- .../ServiceExecutorOpenApi.java | 8 ++--- .../TechnicalProjectOpenApi.java | 6 ++-- .../TechnicalServiceOpenApi.java | 12 +++---- .../{ => identity}/PermissionOpenApi.java | 6 ++-- .../openapi/{ => identity}/PersonOpenApi.java | 6 ++-- .../{ => identity}/PositionOpenApi.java | 6 ++-- .../PositionPermissionOpenApi.java | 6 ++-- .../{ => identity}/UserCompanyOpenApi.java | 8 ++--- .../openapi/{ => identity}/UserOpenApi.java | 6 ++-- .../{ => identity}/UserPhotoOpenApi.java | 6 ++-- .../CertificationOpenApi.java | 6 ++-- .../CertificationRecordOpenApi.java | 6 ++-- .../{ => professional}/ProfessionOpenApi.java | 6 ++-- .../ProfessionalRegistrationOpenApi.java | 6 ++-- .../ProfessionalReviewOpenApi.java | 6 ++-- .../{ => professional}/ShiftOpenApi.java | 6 ++-- .../TechnicalCourseOpenApi.java | 6 ++-- .../TechnicianAffiliationOpenApi.java | 10 +++--- .../{ => professional}/TechnicianOpenApi.java | 6 ++-- .../{ => proposal}/ProposalItemOpenApi.java | 6 ++-- .../{ => proposal}/ProposalOpenApi.java | 8 ++--- .../{ => proposal}/ProposalUnitOpenApi.java | 6 ++-- .../openapi/{ => shared}/AddressOpenApi.java | 6 ++-- .../openapi/{ => shared}/ContactOpenApi.java | 6 ++-- .../openapi/{ => shared}/FluxLogOpenApi.java | 6 ++-- .../{ => shared}/GeolocalizationOpenApi.java | 6 ++-- .../openapi/{ => unit}/EnergyBillOpenApi.java | 6 ++-- .../openapi/{ => unit}/LocalUnitOpenApi.java | 8 ++--- .../{ => unit}/LocalUnitPhotoOpenApi.java | 4 +-- .../{ => unit}/UnitSpecificationsOpenApi.java | 6 ++-- .../{ => catalog}/InventoryRepository.java | 4 +-- .../{ => catalog}/ModelPhotoRepository.java | 4 +-- .../{ => catalog}/ModelRepository.java | 6 ++-- .../{ => catalog}/OfferRepository.java | 4 +-- .../OfferTranslationRepository.java | 4 +-- .../{ => catalog}/SupplierRepository.java | 4 +-- .../BusinessContactRepository.java | 4 +-- .../{ => company}/ChargeRepository.java | 4 +-- .../{ => company}/CompanyPhotoRepository.java | 6 ++-- .../{ => company}/CompanyPlansRepository.java | 4 +-- .../CompanyPositionsRepository.java | 4 +-- .../{ => company}/CompanyRepository.java | 4 +-- .../{ => company}/SubscriptionRepository.java | 6 ++-- .../{ => execution}/RequesterRepository.java | 4 +-- .../ServiceContractRepository.java | 4 +-- .../ServiceExecutorRepository.java | 4 +-- .../TechnicalProjectRepository.java | 4 +-- .../TechnicalServiceRepository.java | 6 ++-- .../{ => identity}/PermissionRepository.java | 4 +-- .../{ => identity}/PersonRepository.java | 4 +-- .../PositionPermissionRepository.java | 4 +-- .../{ => identity}/PositionRepository.java | 4 +-- .../{ => identity}/UserCompanyRepository.java | 4 +-- .../{ => identity}/UserPhotoRepository.java | 6 ++-- .../{ => identity}/UserRepository.java | 4 +-- .../CertificationRecordRepository.java | 4 +-- .../CertificationRepository.java | 4 +-- .../ProfessionRepository.java | 4 +-- .../ProfessionalRegistrationRepository.java | 4 +-- .../ProfessionalReviewRepository.java | 4 +-- .../{ => professional}/ShiftRepository.java | 4 +-- .../TechnicalCourseRepository.java | 4 +-- .../TechnicianAffiliationRepository.java | 4 +-- .../TechnicianRepository.java | 4 +-- .../ProposalItemRepository.java | 4 +-- .../{ => proposal}/ProposalRepository.java | 4 +-- .../ProposalUnitRepository.java | 4 +-- .../{ => shared}/AddressRepository.java | 4 +-- .../{ => shared}/ContactRepository.java | 4 +-- .../{ => shared}/FluxLogRepository.java | 4 +-- .../GeolocalizationRepository.java | 4 +-- .../{ => catalog}/SupplierSpecification.java | 10 +++--- .../{ => unit}/EnergyBillRepository.java | 4 +-- .../{ => unit}/LocalUnitPhotoRepository.java | 4 +-- .../{ => unit}/LocalUnitRepository.java | 4 +-- .../UnitSpecificationsRepository.java | 4 +-- .../rbac/RbacAuthorizationService.java | 12 +++---- .../{ => catalog}/GoogleTranslateService.java | 2 +- .../{ => catalog}/InventoryService.java | 23 ++++++------ .../{ => catalog}/ModelPhotoService.java | 15 ++++---- .../service/{ => catalog}/ModelService.java | 18 +++++----- .../service/{ => catalog}/OfferService.java | 35 +++++++++--------- .../OfferTranslationService.java | 12 +++---- .../{ => catalog}/SupplierCacheService.java | 6 ++-- .../{ => catalog}/SupplierService.java | 36 +++++++++---------- .../{ => company}/BusinessContactService.java | 12 +++---- .../service/{ => company}/ChargeService.java | 18 +++++----- .../{ => company}/CompanyPhotoService.java | 17 ++++----- .../{ => company}/CompanyPlansService.java | 12 +++---- .../CompanyPositionsService.java | 22 ++++++------ .../service/{ => company}/CompanyService.java | 36 +++++++++---------- .../{ => company}/SubscriptionService.java | 22 ++++++------ .../{ => execution}/RequesterService.java | 32 ++++++++--------- .../ServiceContractService.java | 16 ++++----- .../ServiceExecutorService.java | 22 ++++++------ .../TechnicalProjectService.java | 22 ++++++------ .../TechnicalServiceService.java | 18 +++++----- .../InternalUserProvisioningService.java | 8 ++--- .../{ => identity}/PermissionService.java | 12 +++---- .../service/{ => identity}/PersonService.java | 22 ++++++------ .../PositionPermissionService.java | 20 +++++------ .../{ => identity}/PositionService.java | 16 ++++----- .../{ => identity}/UserCompanyService.java | 26 +++++++------- .../{ => identity}/UserPhotoService.java | 17 ++++----- .../service/{ => identity}/UserService.java | 16 ++++----- .../CertificationRecordService.java | 18 +++++----- .../CertificationService.java | 12 +++---- .../{ => professional}/ProfessionService.java | 12 +++---- .../ProfessionalRegistrationService.java | 20 +++++------ .../ProfessionalReviewService.java | 26 +++++++------- .../{ => professional}/ShiftService.java | 14 ++++---- .../TechnicalCourseService.java | 14 ++++---- .../TechnicianAffiliationService.java | 20 +++++------ .../{ => professional}/TechnicianService.java | 20 +++++------ .../{ => proposal}/ProposalItemService.java | 24 ++++++------- .../{ => proposal}/ProposalService.java | 28 +++++++-------- .../{ => proposal}/ProposalUnitService.java | 26 +++++++------- .../service/{ => shared}/AddressService.java | 16 ++++----- .../service/{ => shared}/AuditService.java | 2 +- .../{ => shared}/CloudinaryService.java | 2 +- .../service/{ => shared}/ContactService.java | 12 +++---- .../service/{ => shared}/FluxLogService.java | 14 ++++---- .../{ => shared}/GeolocalizationService.java | 14 ++++---- .../service/{ => unit}/EnergyBillService.java | 17 ++++----- .../{ => unit}/LocalUnitPhotoService.java | 15 ++++---- .../service/{ => unit}/LocalUnitService.java | 28 +++++++-------- .../{ => unit}/UnitSpecificationsService.java | 14 ++++---- .../persistence/util/CacheKeyGenerator.java | 2 +- 355 files changed, 1193 insertions(+), 1155 deletions(-) rename src/main/java/com/solaria/persistence/controller/{ => auth}/ServiceAuthController.java (91%) rename src/main/java/com/solaria/persistence/controller/{ => catalog}/InventoryController.java (86%) rename src/main/java/com/solaria/persistence/controller/{ => catalog}/ModelController.java (87%) rename src/main/java/com/solaria/persistence/controller/{ => catalog}/ModelPhotoController.java (87%) rename src/main/java/com/solaria/persistence/controller/{ => catalog}/OfferController.java (88%) rename src/main/java/com/solaria/persistence/controller/{ => catalog}/SupplierController.java (83%) rename src/main/java/com/solaria/persistence/controller/{ => common}/InternalPingController.java (89%) rename src/main/java/com/solaria/persistence/controller/{ => company}/BusinessContactController.java (86%) rename src/main/java/com/solaria/persistence/controller/{ => company}/ChargeController.java (88%) rename src/main/java/com/solaria/persistence/controller/{ => company}/CompanyController.java (87%) rename src/main/java/com/solaria/persistence/controller/{ => company}/CompanyPhotoController.java (85%) rename src/main/java/com/solaria/persistence/controller/{ => company}/CompanyPlansController.java (86%) rename src/main/java/com/solaria/persistence/controller/{ => company}/CompanyPositionsController.java (84%) rename src/main/java/com/solaria/persistence/controller/{ => company}/SubscriptionController.java (88%) rename src/main/java/com/solaria/persistence/controller/{ => execution}/RequesterController.java (84%) rename src/main/java/com/solaria/persistence/controller/{ => execution}/ServiceContractController.java (86%) rename src/main/java/com/solaria/persistence/controller/{ => execution}/ServiceExecutorController.java (82%) rename src/main/java/com/solaria/persistence/controller/{ => execution}/TechnicalProjectController.java (87%) rename src/main/java/com/solaria/persistence/controller/{ => execution}/TechnicalServiceController.java (85%) rename src/main/java/com/solaria/persistence/controller/{ => identity}/InternalUserProvisioningController.java (79%) rename src/main/java/com/solaria/persistence/controller/{ => identity}/PermissionController.java (85%) rename src/main/java/com/solaria/persistence/controller/{ => identity}/PersonController.java (85%) rename src/main/java/com/solaria/persistence/controller/{ => identity}/PositionController.java (86%) rename src/main/java/com/solaria/persistence/controller/{ => identity}/PositionPermissionController.java (82%) rename src/main/java/com/solaria/persistence/controller/{ => identity}/UserCompanyController.java (85%) rename src/main/java/com/solaria/persistence/controller/{ => identity}/UserController.java (85%) rename src/main/java/com/solaria/persistence/controller/{ => identity}/UserPhotoController.java (85%) rename src/main/java/com/solaria/persistence/controller/{ => professional}/CertificationController.java (85%) rename src/main/java/com/solaria/persistence/controller/{ => professional}/CertificationRecordController.java (85%) rename src/main/java/com/solaria/persistence/controller/{ => professional}/ProfessionController.java (85%) rename src/main/java/com/solaria/persistence/controller/{ => professional}/ProfessionalRegistrationController.java (85%) rename src/main/java/com/solaria/persistence/controller/{ => professional}/ProfessionalReviewController.java (83%) rename src/main/java/com/solaria/persistence/controller/{ => professional}/ShiftController.java (85%) rename src/main/java/com/solaria/persistence/controller/{ => professional}/TechnicalCourseController.java (85%) rename src/main/java/com/solaria/persistence/controller/{ => professional}/TechnicianAffiliationController.java (83%) rename src/main/java/com/solaria/persistence/controller/{ => professional}/TechnicianController.java (85%) rename src/main/java/com/solaria/persistence/controller/{ => proposal}/ProposalController.java (89%) rename src/main/java/com/solaria/persistence/controller/{ => proposal}/ProposalItemController.java (86%) rename src/main/java/com/solaria/persistence/controller/{ => proposal}/ProposalUnitController.java (86%) rename src/main/java/com/solaria/persistence/controller/{ => shared}/AddressController.java (86%) rename src/main/java/com/solaria/persistence/controller/{ => shared}/ContactController.java (86%) rename src/main/java/com/solaria/persistence/controller/{ => shared}/FluxLogController.java (80%) rename src/main/java/com/solaria/persistence/controller/{ => shared}/GeolocalizationController.java (86%) rename src/main/java/com/solaria/persistence/controller/{ => unit}/EnergyBillController.java (89%) rename src/main/java/com/solaria/persistence/controller/{ => unit}/LocalUnitController.java (88%) rename src/main/java/com/solaria/persistence/controller/{ => unit}/LocalUnitPhotoController.java (87%) rename src/main/java/com/solaria/persistence/controller/{ => unit}/UnitSpecificationsController.java (82%) rename src/main/java/com/solaria/persistence/domain/entity/{ => catalog}/Inventory.java (94%) rename src/main/java/com/solaria/persistence/domain/entity/{ => catalog}/Model.java (85%) rename src/main/java/com/solaria/persistence/domain/entity/{ => catalog}/ModelPhoto.java (92%) rename src/main/java/com/solaria/persistence/domain/entity/{ => catalog}/Offer.java (92%) rename src/main/java/com/solaria/persistence/domain/entity/{ => catalog}/OfferTranslation.java (93%) rename src/main/java/com/solaria/persistence/domain/entity/{ => catalog}/Supplier.java (76%) rename src/main/java/com/solaria/persistence/domain/entity/{ => company}/BusinessContact.java (90%) rename src/main/java/com/solaria/persistence/domain/entity/{ => company}/Charge.java (84%) rename src/main/java/com/solaria/persistence/domain/entity/{ => company}/Company.java (85%) rename src/main/java/com/solaria/persistence/domain/entity/{ => company}/CompanyPhoto.java (86%) rename src/main/java/com/solaria/persistence/domain/entity/{ => company}/CompanyPlans.java (82%) rename src/main/java/com/solaria/persistence/domain/entity/{ => company}/CompanyPositions.java (88%) rename src/main/java/com/solaria/persistence/domain/entity/{ => company}/Subscription.java (83%) rename src/main/java/com/solaria/persistence/domain/entity/{ => execution}/Requester.java (80%) rename src/main/java/com/solaria/persistence/domain/entity/{ => execution}/ServiceContract.java (93%) rename src/main/java/com/solaria/persistence/domain/entity/{ => execution}/ServiceExecutor.java (88%) rename src/main/java/com/solaria/persistence/domain/entity/{ => execution}/TechnicalProject.java (81%) rename src/main/java/com/solaria/persistence/domain/entity/{ => execution}/TechnicalService.java (89%) rename src/main/java/com/solaria/persistence/domain/entity/{ => identity}/Permission.java (91%) rename src/main/java/com/solaria/persistence/domain/entity/{ => identity}/Person.java (86%) rename src/main/java/com/solaria/persistence/domain/entity/{ => identity}/Position.java (93%) rename src/main/java/com/solaria/persistence/domain/entity/{ => identity}/PositionPermission.java (94%) rename src/main/java/com/solaria/persistence/domain/entity/{ => identity}/User.java (89%) rename src/main/java/com/solaria/persistence/domain/entity/{ => identity}/UserCompany.java (89%) rename src/main/java/com/solaria/persistence/domain/entity/{ => identity}/UserPhoto.java (86%) rename src/main/java/com/solaria/persistence/domain/entity/{ => professional}/Certification.java (91%) rename src/main/java/com/solaria/persistence/domain/entity/{ => professional}/CertificationRecord.java (90%) rename src/main/java/com/solaria/persistence/domain/entity/{ => professional}/Profession.java (89%) rename src/main/java/com/solaria/persistence/domain/entity/{ => professional}/ProfessionalRegistration.java (92%) rename src/main/java/com/solaria/persistence/domain/entity/{ => professional}/ProfessionalReview.java (86%) rename src/main/java/com/solaria/persistence/domain/entity/{ => professional}/Shift.java (85%) rename src/main/java/com/solaria/persistence/domain/entity/{ => professional}/TechnicalCourse.java (83%) rename src/main/java/com/solaria/persistence/domain/entity/{ => professional}/Technician.java (82%) rename src/main/java/com/solaria/persistence/domain/entity/{ => professional}/TechnicianAffiliation.java (78%) rename src/main/java/com/solaria/persistence/domain/entity/{ => proposal}/Proposal.java (82%) rename src/main/java/com/solaria/persistence/domain/entity/{ => proposal}/ProposalItem.java (87%) rename src/main/java/com/solaria/persistence/domain/entity/{ => proposal}/ProposalUnit.java (85%) rename src/main/java/com/solaria/persistence/domain/entity/{ => shared}/Address.java (93%) rename src/main/java/com/solaria/persistence/domain/entity/{ => shared}/Contact.java (88%) rename src/main/java/com/solaria/persistence/domain/entity/{ => shared}/FluxLog.java (83%) rename src/main/java/com/solaria/persistence/domain/entity/{ => shared}/Geolocalization.java (95%) rename src/main/java/com/solaria/persistence/domain/entity/{ => unit}/EnergyBill.java (93%) rename src/main/java/com/solaria/persistence/domain/entity/{ => unit}/LocalUnit.java (74%) rename src/main/java/com/solaria/persistence/domain/entity/{ => unit}/LocalUnitPhoto.java (92%) rename src/main/java/com/solaria/persistence/domain/entity/{ => unit}/UnitSpecifications.java (92%) delete mode 100644 src/main/java/com/solaria/persistence/domain/enums/PhotoType.java rename src/main/java/com/solaria/persistence/domain/enums/{ => catalog}/ModelStatus.java (58%) rename src/main/java/com/solaria/persistence/domain/enums/{ => catalog}/PanelType.java (60%) rename src/main/java/com/solaria/persistence/domain/enums/{ => catalog}/SupplierStatus.java (58%) rename src/main/java/com/solaria/persistence/domain/enums/{ => catalog}/TranslationStatus.java (57%) rename src/main/java/com/solaria/persistence/domain/enums/{ => company}/BillingStatus.java (60%) rename src/main/java/com/solaria/persistence/domain/enums/{ => company}/CompanyStatus.java (59%) rename src/main/java/com/solaria/persistence/domain/enums/{ => company}/PaymentMethod.java (60%) rename src/main/java/com/solaria/persistence/domain/enums/{ => company}/PlanCycle.java (55%) rename src/main/java/com/solaria/persistence/domain/enums/{ => company}/SubscriptionStatus.java (57%) rename src/main/java/com/solaria/persistence/domain/enums/{ => execution}/ServiceStatus.java (60%) rename src/main/java/com/solaria/persistence/domain/enums/{ => professional}/DayWeek.java (66%) rename src/main/java/com/solaria/persistence/domain/enums/{ => professional}/TechnicalAffiliationType.java (59%) rename src/main/java/com/solaria/persistence/domain/enums/{ => proposal}/ProposalStatus.java (68%) create mode 100644 src/main/java/com/solaria/persistence/domain/enums/shared/PhotoType.java rename src/main/java/com/solaria/persistence/domain/enums/{ => unit}/LocationType.java (56%) rename src/main/java/com/solaria/persistence/dto/patch/{ => catalog}/UpdateQuantityDTO.java (87%) rename src/main/java/com/solaria/persistence/dto/patch/{ => company}/UpdateBusinessContactIdDTO.java (84%) rename src/main/java/com/solaria/persistence/dto/patch/{ => company}/UpdateCompanyAddressIdDTO.java (83%) rename src/main/java/com/solaria/persistence/dto/patch/{ => execution}/ServiceAcceptanceDTO.java (83%) rename src/main/java/com/solaria/persistence/dto/patch/{ => execution}/ServiceScheduleDTO.java (84%) rename src/main/java/com/solaria/persistence/dto/patch/{ => execution}/UpdateFunctionDTO.java (82%) rename src/main/java/com/solaria/persistence/dto/patch/{ => execution}/UpdatePurposeDTO.java (81%) rename src/main/java/com/solaria/persistence/dto/patch/{ => identity}/UpdatePositionDTO.java (82%) rename src/main/java/com/solaria/persistence/dto/patch/{ => professional}/UpdateActiveDTO.java (79%) rename src/main/java/com/solaria/persistence/dto/patch/{ => professional}/UpdateTypeDTO.java (64%) rename src/main/java/com/solaria/persistence/dto/patch/{ => proposal}/UpdateNotesDTO.java (82%) rename src/main/java/com/solaria/persistence/dto/patch/{ => unit}/UpdateLocalUnitAddressIdDTO.java (84%) rename src/main/java/com/solaria/persistence/dto/request/{ => auth}/ServiceTokenMintRequestDTO.java (83%) rename src/main/java/com/solaria/persistence/dto/request/{ => auth}/ServiceTokenRefreshRequestDTO.java (83%) rename src/main/java/com/solaria/persistence/dto/request/{ => catalog}/InventoryRequestDTO.java (91%) rename src/main/java/com/solaria/persistence/dto/request/{ => catalog}/ModelRequestDTO.java (88%) rename src/main/java/com/solaria/persistence/dto/request/{ => catalog}/OfferRequestDTO.java (96%) rename src/main/java/com/solaria/persistence/dto/request/{ => catalog}/SupplierRequestDTO.java (84%) rename src/main/java/com/solaria/persistence/dto/request/{ => catalog}/SupplierSearchFilterDTO.java (94%) rename src/main/java/com/solaria/persistence/dto/request/{ => company}/BusinessContactRequestDTO.java (93%) rename src/main/java/com/solaria/persistence/dto/request/{ => company}/ChargeRequestDTO.java (87%) rename src/main/java/com/solaria/persistence/dto/request/{ => company}/CompanyPlansRequestDTO.java (80%) rename src/main/java/com/solaria/persistence/dto/request/{ => company}/CompanyPositionsRequestDTO.java (86%) rename src/main/java/com/solaria/persistence/dto/request/{ => company}/CompanyRequestDTO.java (93%) rename src/main/java/com/solaria/persistence/dto/request/{ => company}/SubscriptionRequestDTO.java (89%) rename src/main/java/com/solaria/persistence/dto/request/{ => execution}/RequesterRequestDTO.java (84%) rename src/main/java/com/solaria/persistence/dto/request/{ => execution}/ServiceContractRequestDTO.java (91%) rename src/main/java/com/solaria/persistence/dto/request/{ => execution}/ServiceExecutorRequestDTO.java (90%) rename src/main/java/com/solaria/persistence/dto/request/{ => execution}/TechnicalProjectRequestDTO.java (74%) rename src/main/java/com/solaria/persistence/dto/request/{ => execution}/TechnicalServiceRequestDTO.java (90%) rename src/main/java/com/solaria/persistence/dto/request/{ => identity}/InternalUserProvisionRequestDTO.java (86%) rename src/main/java/com/solaria/persistence/dto/request/{ => identity}/PermissionRequestDTO.java (90%) rename src/main/java/com/solaria/persistence/dto/request/{ => identity}/PersonRequestDTO.java (94%) rename src/main/java/com/solaria/persistence/dto/request/{ => identity}/PositionPermissionRequestDTO.java (86%) rename src/main/java/com/solaria/persistence/dto/request/{ => identity}/PositionRequestDTO.java (87%) rename src/main/java/com/solaria/persistence/dto/request/{ => identity}/UserCompanyRequestDTO.java (88%) rename src/main/java/com/solaria/persistence/dto/request/{ => identity}/UserRequestDTO.java (89%) rename src/main/java/com/solaria/persistence/dto/request/{ => professional}/CertificationRecordRequestDTO.java (78%) rename src/main/java/com/solaria/persistence/dto/request/{ => professional}/CertificationRequestDTO.java (85%) rename src/main/java/com/solaria/persistence/dto/request/{ => professional}/ProfessionRequestDTO.java (80%) rename src/main/java/com/solaria/persistence/dto/request/{ => professional}/ProfessionalRegistrationRequestDTO.java (87%) rename src/main/java/com/solaria/persistence/dto/request/{ => professional}/ProfessionalReviewRequestDTO.java (94%) rename src/main/java/com/solaria/persistence/dto/request/{ => professional}/ShiftRequestDTO.java (82%) rename src/main/java/com/solaria/persistence/dto/request/{ => professional}/TechnicalCourseRequestDTO.java (84%) rename src/main/java/com/solaria/persistence/dto/request/{ => professional}/TechnicianAffiliationRequestDTO.java (74%) rename src/main/java/com/solaria/persistence/dto/request/{ => professional}/TechnicianRequestDTO.java (86%) rename src/main/java/com/solaria/persistence/dto/request/{ => proposal}/ProposalItemRequestDTO.java (94%) rename src/main/java/com/solaria/persistence/dto/request/{ => proposal}/ProposalRequestDTO.java (84%) rename src/main/java/com/solaria/persistence/dto/request/{ => proposal}/ProposalUnitRequestDTO.java (91%) rename src/main/java/com/solaria/persistence/dto/request/{ => shared}/AddressRequestDTO.java (93%) rename src/main/java/com/solaria/persistence/dto/request/{ => shared}/ContactRequestDTO.java (90%) rename src/main/java/com/solaria/persistence/dto/request/{ => shared}/FluxLogRequestDTO.java (87%) rename src/main/java/com/solaria/persistence/dto/request/{ => shared}/GeolocalizationRequestDTO.java (94%) rename src/main/java/com/solaria/persistence/dto/request/{ => unit}/EnergyBillRequestDTO.java (93%) rename src/main/java/com/solaria/persistence/dto/request/{ => unit}/LocalUnitRequestDTO.java (79%) rename src/main/java/com/solaria/persistence/dto/request/{ => unit}/UnitSpecificationsRequestDTO.java (87%) rename src/main/java/com/solaria/persistence/dto/response/{ => auth}/ServiceTokenResponseDTO.java (87%) rename src/main/java/com/solaria/persistence/dto/response/{ => catalog}/InventoryResponseDTO.java (81%) rename src/main/java/com/solaria/persistence/dto/response/{ => catalog}/ModelPhotoResponseDTO.java (83%) rename src/main/java/com/solaria/persistence/dto/response/{ => catalog}/ModelResponseDTO.java (76%) rename src/main/java/com/solaria/persistence/dto/response/{ => catalog}/OfferResponseDTO.java (83%) rename src/main/java/com/solaria/persistence/dto/response/{ => catalog}/OfferTranslationResponseDTO.java (80%) rename src/main/java/com/solaria/persistence/dto/response/{ => catalog}/SupplierResponseDTO.java (56%) rename src/main/java/com/solaria/persistence/dto/response/{ => catalog}/SupplierSearchResponseDTO.java (86%) rename src/main/java/com/solaria/persistence/dto/response/{ => company}/BusinessContactResponseDTO.java (81%) rename src/main/java/com/solaria/persistence/dto/response/{ => company}/ChargeResponseDTO.java (70%) rename src/main/java/com/solaria/persistence/dto/response/{ => company}/CompanyPhotoResponseDTO.java (72%) rename src/main/java/com/solaria/persistence/dto/response/{ => company}/CompanyPlansResponseDTO.java (69%) rename src/main/java/com/solaria/persistence/dto/response/{ => company}/CompanyPositionsResponseDTO.java (63%) rename src/main/java/com/solaria/persistence/dto/response/{ => company}/CompanyResponseDTO.java (66%) rename src/main/java/com/solaria/persistence/dto/response/{ => company}/SubscriptionResponseDTO.java (76%) rename src/main/java/com/solaria/persistence/dto/response/{ => execution}/RequesterResponseDTO.java (63%) rename src/main/java/com/solaria/persistence/dto/response/{ => execution}/ServiceContractResponseDTO.java (86%) rename src/main/java/com/solaria/persistence/dto/response/{ => execution}/ServiceExecutorResponseDTO.java (65%) rename src/main/java/com/solaria/persistence/dto/response/{ => execution}/TechnicalProjectResponseDTO.java (75%) rename src/main/java/com/solaria/persistence/dto/response/{ => execution}/TechnicalServiceResponseDTO.java (78%) rename src/main/java/com/solaria/persistence/dto/response/{ => identity}/InternalUserProvisionResponseDTO.java (86%) rename src/main/java/com/solaria/persistence/dto/response/{ => identity}/PermissionResponseDTO.java (81%) rename src/main/java/com/solaria/persistence/dto/response/{ => identity}/PersonResponseDTO.java (71%) rename src/main/java/com/solaria/persistence/dto/response/{ => identity}/PositionPermissionResponseDTO.java (80%) rename src/main/java/com/solaria/persistence/dto/response/{ => identity}/PositionResponseDTO.java (78%) rename src/main/java/com/solaria/persistence/dto/response/{ => identity}/UserCompanyResponseDTO.java (81%) rename src/main/java/com/solaria/persistence/dto/response/{ => identity}/UserPhotoResponseDTO.java (71%) rename src/main/java/com/solaria/persistence/dto/response/{ => identity}/UserResponseDTO.java (80%) rename src/main/java/com/solaria/persistence/dto/response/{ => professional}/CertificationRecordResponseDTO.java (80%) rename src/main/java/com/solaria/persistence/dto/response/{ => professional}/CertificationResponseDTO.java (83%) rename src/main/java/com/solaria/persistence/dto/response/{ => professional}/ProfessionResponseDTO.java (78%) rename src/main/java/com/solaria/persistence/dto/response/{ => professional}/ProfessionalRegistrationResponseDTO.java (85%) rename src/main/java/com/solaria/persistence/dto/response/{ => professional}/ProfessionalReviewResponseDTO.java (88%) rename src/main/java/com/solaria/persistence/dto/response/{ => professional}/ShiftResponseDTO.java (71%) rename src/main/java/com/solaria/persistence/dto/response/{ => professional}/TechnicalCourseResponseDTO.java (81%) rename src/main/java/com/solaria/persistence/dto/response/{ => professional}/TechnicianAffiliationResponseDTO.java (67%) rename src/main/java/com/solaria/persistence/dto/response/{ => professional}/TechnicianResponseDTO.java (64%) rename src/main/java/com/solaria/persistence/dto/response/{ => proposal}/ProposalItemResponseDTO.java (73%) rename src/main/java/com/solaria/persistence/dto/response/{ => proposal}/ProposalResponseDTO.java (76%) rename src/main/java/com/solaria/persistence/dto/response/{ => proposal}/ProposalUnitResponseDTO.java (69%) rename src/main/java/com/solaria/persistence/dto/response/{ => shared}/AddressResponseDTO.java (89%) rename src/main/java/com/solaria/persistence/dto/response/{ => shared}/ContactResponseDTO.java (78%) rename src/main/java/com/solaria/persistence/dto/response/{ => shared}/FluxLogResponseDTO.java (83%) rename src/main/java/com/solaria/persistence/dto/response/{ => shared}/GeolocalizationResponseDTO.java (84%) rename src/main/java/com/solaria/persistence/dto/response/{ => unit}/EnergyBillResponseDTO.java (85%) rename src/main/java/com/solaria/persistence/dto/response/{ => unit}/LocalUnitPhotoResponseDTO.java (84%) rename src/main/java/com/solaria/persistence/dto/response/{ => unit}/LocalUnitResponseDTO.java (60%) rename src/main/java/com/solaria/persistence/dto/response/{ => unit}/UnitSpecificationsResponseDTO.java (86%) rename src/main/java/com/solaria/persistence/openapi/{ => catalog}/InventoryOpenApi.java (91%) rename src/main/java/com/solaria/persistence/openapi/{ => catalog}/ModelOpenApi.java (93%) rename src/main/java/com/solaria/persistence/openapi/{ => catalog}/ModelPhotoOpenApi.java (92%) rename src/main/java/com/solaria/persistence/openapi/{ => catalog}/OfferOpenApi.java (94%) rename src/main/java/com/solaria/persistence/openapi/{ => catalog}/SupplierOpenApi.java (91%) rename src/main/java/com/solaria/persistence/openapi/{ => company}/BusinessContactOpenApi.java (92%) rename src/main/java/com/solaria/persistence/openapi/{ => company}/ChargeOpenApi.java (94%) rename src/main/java/com/solaria/persistence/openapi/{ => company}/CompanyOpenApi.java (93%) rename src/main/java/com/solaria/persistence/openapi/{ => company}/CompanyPhotoOpenApi.java (89%) rename src/main/java/com/solaria/persistence/openapi/{ => company}/CompanyPlansOpenApi.java (92%) rename src/main/java/com/solaria/persistence/openapi/{ => company}/CompanyPositionsOpenApi.java (91%) rename src/main/java/com/solaria/persistence/openapi/{ => company}/SubscriptionOpenApi.java (95%) rename src/main/java/com/solaria/persistence/openapi/{ => execution}/RequesterOpenApi.java (91%) rename src/main/java/com/solaria/persistence/openapi/{ => execution}/ServiceContractOpenApi.java (93%) rename src/main/java/com/solaria/persistence/openapi/{ => execution}/ServiceExecutorOpenApi.java (89%) rename src/main/java/com/solaria/persistence/openapi/{ => execution}/TechnicalProjectOpenApi.java (93%) rename src/main/java/com/solaria/persistence/openapi/{ => execution}/TechnicalServiceOpenApi.java (91%) rename src/main/java/com/solaria/persistence/openapi/{ => identity}/PermissionOpenApi.java (93%) rename src/main/java/com/solaria/persistence/openapi/{ => identity}/PersonOpenApi.java (93%) rename src/main/java/com/solaria/persistence/openapi/{ => identity}/PositionOpenApi.java (92%) rename src/main/java/com/solaria/persistence/openapi/{ => identity}/PositionPermissionOpenApi.java (89%) rename src/main/java/com/solaria/persistence/openapi/{ => identity}/UserCompanyOpenApi.java (92%) rename src/main/java/com/solaria/persistence/openapi/{ => identity}/UserOpenApi.java (92%) rename src/main/java/com/solaria/persistence/openapi/{ => identity}/UserPhotoOpenApi.java (89%) rename src/main/java/com/solaria/persistence/openapi/{ => professional}/CertificationOpenApi.java (91%) rename src/main/java/com/solaria/persistence/openapi/{ => professional}/CertificationRecordOpenApi.java (92%) rename src/main/java/com/solaria/persistence/openapi/{ => professional}/ProfessionOpenApi.java (91%) rename src/main/java/com/solaria/persistence/openapi/{ => professional}/ProfessionalRegistrationOpenApi.java (91%) rename src/main/java/com/solaria/persistence/openapi/{ => professional}/ProfessionalReviewOpenApi.java (90%) rename src/main/java/com/solaria/persistence/openapi/{ => professional}/ShiftOpenApi.java (92%) rename src/main/java/com/solaria/persistence/openapi/{ => professional}/TechnicalCourseOpenApi.java (92%) rename src/main/java/com/solaria/persistence/openapi/{ => professional}/TechnicianAffiliationOpenApi.java (90%) rename src/main/java/com/solaria/persistence/openapi/{ => professional}/TechnicianOpenApi.java (91%) rename src/main/java/com/solaria/persistence/openapi/{ => proposal}/ProposalItemOpenApi.java (93%) rename src/main/java/com/solaria/persistence/openapi/{ => proposal}/ProposalOpenApi.java (96%) rename src/main/java/com/solaria/persistence/openapi/{ => proposal}/ProposalUnitOpenApi.java (93%) rename src/main/java/com/solaria/persistence/openapi/{ => shared}/AddressOpenApi.java (93%) rename src/main/java/com/solaria/persistence/openapi/{ => shared}/ContactOpenApi.java (92%) rename src/main/java/com/solaria/persistence/openapi/{ => shared}/FluxLogOpenApi.java (87%) rename src/main/java/com/solaria/persistence/openapi/{ => shared}/GeolocalizationOpenApi.java (92%) rename src/main/java/com/solaria/persistence/openapi/{ => unit}/EnergyBillOpenApi.java (94%) rename src/main/java/com/solaria/persistence/openapi/{ => unit}/LocalUnitOpenApi.java (93%) rename src/main/java/com/solaria/persistence/openapi/{ => unit}/LocalUnitPhotoOpenApi.java (93%) rename src/main/java/com/solaria/persistence/openapi/{ => unit}/UnitSpecificationsOpenApi.java (90%) rename src/main/java/com/solaria/persistence/repository/{ => catalog}/InventoryRepository.java (90%) rename src/main/java/com/solaria/persistence/repository/{ => catalog}/ModelPhotoRepository.java (77%) rename src/main/java/com/solaria/persistence/repository/{ => catalog}/ModelRepository.java (57%) rename src/main/java/com/solaria/persistence/repository/{ => catalog}/OfferRepository.java (84%) rename src/main/java/com/solaria/persistence/repository/{ => catalog}/OfferTranslationRepository.java (78%) rename src/main/java/com/solaria/persistence/repository/{ => catalog}/SupplierRepository.java (81%) rename src/main/java/com/solaria/persistence/repository/{ => company}/BusinessContactRepository.java (59%) rename src/main/java/com/solaria/persistence/repository/{ => company}/ChargeRepository.java (79%) rename src/main/java/com/solaria/persistence/repository/{ => company}/CompanyPhotoRepository.java (70%) rename src/main/java/com/solaria/persistence/repository/{ => company}/CompanyPlansRepository.java (59%) rename src/main/java/com/solaria/persistence/repository/{ => company}/CompanyPositionsRepository.java (81%) rename src/main/java/com/solaria/persistence/repository/{ => company}/CompanyRepository.java (85%) rename src/main/java/com/solaria/persistence/repository/{ => company}/SubscriptionRepository.java (87%) rename src/main/java/com/solaria/persistence/repository/{ => execution}/RequesterRepository.java (76%) rename src/main/java/com/solaria/persistence/repository/{ => execution}/ServiceContractRepository.java (77%) rename src/main/java/com/solaria/persistence/repository/{ => execution}/ServiceExecutorRepository.java (80%) rename src/main/java/com/solaria/persistence/repository/{ => execution}/TechnicalProjectRepository.java (80%) rename src/main/java/com/solaria/persistence/repository/{ => execution}/TechnicalServiceRepository.java (77%) rename src/main/java/com/solaria/persistence/repository/{ => identity}/PermissionRepository.java (72%) rename src/main/java/com/solaria/persistence/repository/{ => identity}/PersonRepository.java (75%) rename src/main/java/com/solaria/persistence/repository/{ => identity}/PositionPermissionRepository.java (81%) rename src/main/java/com/solaria/persistence/repository/{ => identity}/PositionRepository.java (58%) rename src/main/java/com/solaria/persistence/repository/{ => identity}/UserCompanyRepository.java (83%) rename src/main/java/com/solaria/persistence/repository/{ => identity}/UserPhotoRepository.java (68%) rename src/main/java/com/solaria/persistence/repository/{ => identity}/UserRepository.java (85%) rename src/main/java/com/solaria/persistence/repository/{ => professional}/CertificationRecordRepository.java (76%) rename src/main/java/com/solaria/persistence/repository/{ => professional}/CertificationRepository.java (57%) rename src/main/java/com/solaria/persistence/repository/{ => professional}/ProfessionRepository.java (57%) rename src/main/java/com/solaria/persistence/repository/{ => professional}/ProfessionalRegistrationRepository.java (71%) rename src/main/java/com/solaria/persistence/repository/{ => professional}/ProfessionalReviewRepository.java (75%) rename src/main/java/com/solaria/persistence/repository/{ => professional}/ShiftRepository.java (66%) rename src/main/java/com/solaria/persistence/repository/{ => professional}/TechnicalCourseRepository.java (73%) rename src/main/java/com/solaria/persistence/repository/{ => professional}/TechnicianAffiliationRepository.java (80%) rename src/main/java/com/solaria/persistence/repository/{ => professional}/TechnicianRepository.java (72%) rename src/main/java/com/solaria/persistence/repository/{ => proposal}/ProposalItemRepository.java (86%) rename src/main/java/com/solaria/persistence/repository/{ => proposal}/ProposalRepository.java (80%) rename src/main/java/com/solaria/persistence/repository/{ => proposal}/ProposalUnitRepository.java (86%) rename src/main/java/com/solaria/persistence/repository/{ => shared}/AddressRepository.java (59%) rename src/main/java/com/solaria/persistence/repository/{ => shared}/ContactRepository.java (59%) rename src/main/java/com/solaria/persistence/repository/{ => shared}/FluxLogRepository.java (69%) rename src/main/java/com/solaria/persistence/repository/{ => shared}/GeolocalizationRepository.java (72%) rename src/main/java/com/solaria/persistence/repository/specification/{ => catalog}/SupplierSpecification.java (91%) rename src/main/java/com/solaria/persistence/repository/{ => unit}/EnergyBillRepository.java (79%) rename src/main/java/com/solaria/persistence/repository/{ => unit}/LocalUnitPhotoRepository.java (79%) rename src/main/java/com/solaria/persistence/repository/{ => unit}/LocalUnitRepository.java (82%) rename src/main/java/com/solaria/persistence/repository/{ => unit}/UnitSpecificationsRepository.java (79%) rename src/main/java/com/solaria/persistence/service/{ => catalog}/GoogleTranslateService.java (98%) rename src/main/java/com/solaria/persistence/service/{ => catalog}/InventoryService.java (88%) rename src/main/java/com/solaria/persistence/service/{ => catalog}/ModelPhotoService.java (86%) rename src/main/java/com/solaria/persistence/service/{ => catalog}/ModelService.java (91%) rename src/main/java/com/solaria/persistence/service/{ => catalog}/OfferService.java (90%) rename src/main/java/com/solaria/persistence/service/{ => catalog}/OfferTranslationService.java (91%) rename src/main/java/com/solaria/persistence/service/{ => catalog}/SupplierCacheService.java (95%) rename src/main/java/com/solaria/persistence/service/{ => catalog}/SupplierService.java (87%) rename src/main/java/com/solaria/persistence/service/{ => company}/BusinessContactService.java (88%) rename src/main/java/com/solaria/persistence/service/{ => company}/ChargeService.java (91%) rename src/main/java/com/solaria/persistence/service/{ => company}/CompanyPhotoService.java (87%) rename src/main/java/com/solaria/persistence/service/{ => company}/CompanyPlansService.java (88%) rename src/main/java/com/solaria/persistence/service/{ => company}/CompanyPositionsService.java (86%) rename src/main/java/com/solaria/persistence/service/{ => company}/CompanyService.java (89%) rename src/main/java/com/solaria/persistence/service/{ => company}/SubscriptionService.java (90%) rename src/main/java/com/solaria/persistence/service/{ => execution}/RequesterService.java (85%) rename src/main/java/com/solaria/persistence/service/{ => execution}/ServiceContractService.java (90%) rename src/main/java/com/solaria/persistence/service/{ => execution}/ServiceExecutorService.java (86%) rename src/main/java/com/solaria/persistence/service/{ => execution}/TechnicalProjectService.java (88%) rename src/main/java/com/solaria/persistence/service/{ => execution}/TechnicalServiceService.java (92%) rename src/main/java/com/solaria/persistence/service/{ => identity}/InternalUserProvisioningService.java (88%) rename src/main/java/com/solaria/persistence/service/{ => identity}/PermissionService.java (88%) rename src/main/java/com/solaria/persistence/service/{ => identity}/PersonService.java (88%) rename src/main/java/com/solaria/persistence/service/{ => identity}/PositionPermissionService.java (83%) rename src/main/java/com/solaria/persistence/service/{ => identity}/PositionService.java (86%) rename src/main/java/com/solaria/persistence/service/{ => identity}/UserCompanyService.java (89%) rename src/main/java/com/solaria/persistence/service/{ => identity}/UserPhotoService.java (87%) rename src/main/java/com/solaria/persistence/service/{ => identity}/UserService.java (87%) rename src/main/java/com/solaria/persistence/service/{ => professional}/CertificationRecordService.java (86%) rename src/main/java/com/solaria/persistence/service/{ => professional}/CertificationService.java (87%) rename src/main/java/com/solaria/persistence/service/{ => professional}/ProfessionService.java (86%) rename src/main/java/com/solaria/persistence/service/{ => professional}/ProfessionalRegistrationService.java (87%) rename src/main/java/com/solaria/persistence/service/{ => professional}/ProfessionalReviewService.java (85%) rename src/main/java/com/solaria/persistence/service/{ => professional}/ShiftService.java (87%) rename src/main/java/com/solaria/persistence/service/{ => professional}/TechnicalCourseService.java (88%) rename src/main/java/com/solaria/persistence/service/{ => professional}/TechnicianAffiliationService.java (87%) rename src/main/java/com/solaria/persistence/service/{ => professional}/TechnicianService.java (86%) rename src/main/java/com/solaria/persistence/service/{ => proposal}/ProposalItemService.java (91%) rename src/main/java/com/solaria/persistence/service/{ => proposal}/ProposalService.java (92%) rename src/main/java/com/solaria/persistence/service/{ => proposal}/ProposalUnitService.java (90%) rename src/main/java/com/solaria/persistence/service/{ => shared}/AddressService.java (87%) rename src/main/java/com/solaria/persistence/service/{ => shared}/AuditService.java (92%) rename src/main/java/com/solaria/persistence/service/{ => shared}/CloudinaryService.java (99%) rename src/main/java/com/solaria/persistence/service/{ => shared}/ContactService.java (87%) rename src/main/java/com/solaria/persistence/service/{ => shared}/FluxLogService.java (80%) rename src/main/java/com/solaria/persistence/service/{ => shared}/GeolocalizationService.java (92%) rename src/main/java/com/solaria/persistence/service/{ => unit}/EnergyBillService.java (92%) rename src/main/java/com/solaria/persistence/service/{ => unit}/LocalUnitPhotoService.java (88%) rename src/main/java/com/solaria/persistence/service/{ => unit}/LocalUnitService.java (88%) rename src/main/java/com/solaria/persistence/service/{ => unit}/UnitSpecificationsService.java (86%) diff --git a/pom.xml b/pom.xml index 5aedce1..4f4b9d4 100644 --- a/pom.xml +++ b/pom.xml @@ -116,6 +116,7 @@ org.springframework.boot spring-boot-starter-webmvc-test + com.h2database h2 diff --git a/src/main/java/com/solaria/persistence/controller/ServiceAuthController.java b/src/main/java/com/solaria/persistence/controller/auth/ServiceAuthController.java similarity index 91% rename from src/main/java/com/solaria/persistence/controller/ServiceAuthController.java rename to src/main/java/com/solaria/persistence/controller/auth/ServiceAuthController.java index 6c5dcff..589ae37 100644 --- a/src/main/java/com/solaria/persistence/controller/ServiceAuthController.java +++ b/src/main/java/com/solaria/persistence/controller/auth/ServiceAuthController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.auth; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; @@ -9,9 +9,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.ServiceTokenMintRequestDTO; -import com.solaria.persistence.dto.request.ServiceTokenRefreshRequestDTO; -import com.solaria.persistence.dto.response.ServiceTokenResponseDTO; +import com.solaria.persistence.dto.request.auth.ServiceTokenMintRequestDTO; +import com.solaria.persistence.dto.request.auth.ServiceTokenRefreshRequestDTO; +import com.solaria.persistence.dto.response.auth.ServiceTokenResponseDTO; import com.solaria.persistence.exception.ServiceAuthException; import com.solaria.persistence.security.service.ServiceTokenProperties; import com.solaria.persistence.security.service.ServiceTokenProvider; diff --git a/src/main/java/com/solaria/persistence/controller/InventoryController.java b/src/main/java/com/solaria/persistence/controller/catalog/InventoryController.java similarity index 86% rename from src/main/java/com/solaria/persistence/controller/InventoryController.java rename to src/main/java/com/solaria/persistence/controller/catalog/InventoryController.java index cbd47e4..0748834 100644 --- a/src/main/java/com/solaria/persistence/controller/InventoryController.java +++ b/src/main/java/com/solaria/persistence/controller/catalog/InventoryController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.catalog; import java.net.URI; import java.util.List; @@ -14,11 +14,11 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.patch.UpdateQuantityDTO; -import com.solaria.persistence.dto.request.InventoryRequestDTO; -import com.solaria.persistence.dto.response.InventoryResponseDTO; -import com.solaria.persistence.openapi.InventoryOpenApi; -import com.solaria.persistence.service.InventoryService; +import com.solaria.persistence.dto.patch.catalog.UpdateQuantityDTO; +import com.solaria.persistence.dto.request.catalog.InventoryRequestDTO; +import com.solaria.persistence.dto.response.catalog.InventoryResponseDTO; +import com.solaria.persistence.openapi.catalog.InventoryOpenApi; +import com.solaria.persistence.service.catalog.InventoryService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/ModelController.java b/src/main/java/com/solaria/persistence/controller/catalog/ModelController.java similarity index 87% rename from src/main/java/com/solaria/persistence/controller/ModelController.java rename to src/main/java/com/solaria/persistence/controller/catalog/ModelController.java index 1d7db12..2a04cc9 100644 --- a/src/main/java/com/solaria/persistence/controller/ModelController.java +++ b/src/main/java/com/solaria/persistence/controller/catalog/ModelController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.catalog; import java.net.URI; import java.util.List; @@ -14,11 +14,11 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.domain.enums.ModelStatus; -import com.solaria.persistence.dto.request.ModelRequestDTO; -import com.solaria.persistence.dto.response.ModelResponseDTO; -import com.solaria.persistence.openapi.ModelOpenApi; -import com.solaria.persistence.service.ModelService; +import com.solaria.persistence.domain.enums.catalog.ModelStatus; +import com.solaria.persistence.dto.request.catalog.ModelRequestDTO; +import com.solaria.persistence.dto.response.catalog.ModelResponseDTO; +import com.solaria.persistence.openapi.catalog.ModelOpenApi; +import com.solaria.persistence.service.catalog.ModelService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/ModelPhotoController.java b/src/main/java/com/solaria/persistence/controller/catalog/ModelPhotoController.java similarity index 87% rename from src/main/java/com/solaria/persistence/controller/ModelPhotoController.java rename to src/main/java/com/solaria/persistence/controller/catalog/ModelPhotoController.java index c2a3bc2..442ed03 100644 --- a/src/main/java/com/solaria/persistence/controller/ModelPhotoController.java +++ b/src/main/java/com/solaria/persistence/controller/catalog/ModelPhotoController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.catalog; import java.net.URI; import java.util.List; @@ -15,9 +15,9 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import com.solaria.persistence.dto.response.ModelPhotoResponseDTO; -import com.solaria.persistence.openapi.ModelPhotoOpenApi; -import com.solaria.persistence.service.ModelPhotoService; +import com.solaria.persistence.dto.response.catalog.ModelPhotoResponseDTO; +import com.solaria.persistence.openapi.catalog.ModelPhotoOpenApi; +import com.solaria.persistence.service.catalog.ModelPhotoService; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/OfferController.java b/src/main/java/com/solaria/persistence/controller/catalog/OfferController.java similarity index 88% rename from src/main/java/com/solaria/persistence/controller/OfferController.java rename to src/main/java/com/solaria/persistence/controller/catalog/OfferController.java index ffe1b7e..9311dd6 100644 --- a/src/main/java/com/solaria/persistence/controller/OfferController.java +++ b/src/main/java/com/solaria/persistence/controller/catalog/OfferController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.catalog; import java.net.URI; import java.util.List; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.OfferRequestDTO; -import com.solaria.persistence.dto.response.OfferResponseDTO; -import com.solaria.persistence.openapi.OfferOpenApi; -import com.solaria.persistence.service.OfferService; +import com.solaria.persistence.dto.request.catalog.OfferRequestDTO; +import com.solaria.persistence.dto.response.catalog.OfferResponseDTO; +import com.solaria.persistence.openapi.catalog.OfferOpenApi; +import com.solaria.persistence.service.catalog.OfferService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/SupplierController.java b/src/main/java/com/solaria/persistence/controller/catalog/SupplierController.java similarity index 83% rename from src/main/java/com/solaria/persistence/controller/SupplierController.java rename to src/main/java/com/solaria/persistence/controller/catalog/SupplierController.java index e4a0eb2..f358c46 100644 --- a/src/main/java/com/solaria/persistence/controller/SupplierController.java +++ b/src/main/java/com/solaria/persistence/controller/catalog/SupplierController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.catalog; import java.net.URI; import java.util.List; @@ -12,12 +12,12 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.SupplierRequestDTO; -import com.solaria.persistence.dto.request.SupplierSearchFilterDTO; -import com.solaria.persistence.dto.response.SupplierResponseDTO; -import com.solaria.persistence.dto.response.SupplierSearchResponseDTO; -import com.solaria.persistence.openapi.SupplierOpenApi; -import com.solaria.persistence.service.SupplierService; +import com.solaria.persistence.dto.request.catalog.SupplierRequestDTO; +import com.solaria.persistence.dto.request.catalog.SupplierSearchFilterDTO; +import com.solaria.persistence.dto.response.catalog.SupplierResponseDTO; +import com.solaria.persistence.dto.response.catalog.SupplierSearchResponseDTO; +import com.solaria.persistence.openapi.catalog.SupplierOpenApi; +import com.solaria.persistence.service.catalog.SupplierService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/InternalPingController.java b/src/main/java/com/solaria/persistence/controller/common/InternalPingController.java similarity index 89% rename from src/main/java/com/solaria/persistence/controller/InternalPingController.java rename to src/main/java/com/solaria/persistence/controller/common/InternalPingController.java index 4601b58..15d6abd 100644 --- a/src/main/java/com/solaria/persistence/controller/InternalPingController.java +++ b/src/main/java/com/solaria/persistence/controller/common/InternalPingController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.common; import java.util.Map; diff --git a/src/main/java/com/solaria/persistence/controller/BusinessContactController.java b/src/main/java/com/solaria/persistence/controller/company/BusinessContactController.java similarity index 86% rename from src/main/java/com/solaria/persistence/controller/BusinessContactController.java rename to src/main/java/com/solaria/persistence/controller/company/BusinessContactController.java index e1da4fb..6aac7ef 100644 --- a/src/main/java/com/solaria/persistence/controller/BusinessContactController.java +++ b/src/main/java/com/solaria/persistence/controller/company/BusinessContactController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.company; import java.net.URI; import java.util.List; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.BusinessContactRequestDTO; -import com.solaria.persistence.dto.response.BusinessContactResponseDTO; -import com.solaria.persistence.openapi.BusinessContactOpenApi; -import com.solaria.persistence.service.BusinessContactService; +import com.solaria.persistence.dto.request.company.BusinessContactRequestDTO; +import com.solaria.persistence.dto.response.company.BusinessContactResponseDTO; +import com.solaria.persistence.openapi.company.BusinessContactOpenApi; +import com.solaria.persistence.service.company.BusinessContactService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/ChargeController.java b/src/main/java/com/solaria/persistence/controller/company/ChargeController.java similarity index 88% rename from src/main/java/com/solaria/persistence/controller/ChargeController.java rename to src/main/java/com/solaria/persistence/controller/company/ChargeController.java index 9320672..8684651 100644 --- a/src/main/java/com/solaria/persistence/controller/ChargeController.java +++ b/src/main/java/com/solaria/persistence/controller/company/ChargeController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.company; import java.net.URI; import java.time.LocalDate; @@ -15,11 +15,11 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.domain.enums.PaymentMethod; -import com.solaria.persistence.dto.request.ChargeRequestDTO; -import com.solaria.persistence.dto.response.ChargeResponseDTO; -import com.solaria.persistence.openapi.ChargeOpenApi; -import com.solaria.persistence.service.ChargeService; +import com.solaria.persistence.domain.enums.company.PaymentMethod; +import com.solaria.persistence.dto.request.company.ChargeRequestDTO; +import com.solaria.persistence.dto.response.company.ChargeResponseDTO; +import com.solaria.persistence.openapi.company.ChargeOpenApi; +import com.solaria.persistence.service.company.ChargeService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/CompanyController.java b/src/main/java/com/solaria/persistence/controller/company/CompanyController.java similarity index 87% rename from src/main/java/com/solaria/persistence/controller/CompanyController.java rename to src/main/java/com/solaria/persistence/controller/company/CompanyController.java index c331017..56b92a8 100644 --- a/src/main/java/com/solaria/persistence/controller/CompanyController.java +++ b/src/main/java/com/solaria/persistence/controller/company/CompanyController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.company; import java.net.URI; import java.util.List; @@ -15,12 +15,12 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.patch.UpdateBusinessContactIdDTO; -import com.solaria.persistence.dto.patch.UpdateCompanyAddressIdDTO; -import com.solaria.persistence.dto.request.CompanyRequestDTO; -import com.solaria.persistence.dto.response.CompanyResponseDTO; -import com.solaria.persistence.openapi.CompanyOpenApi; -import com.solaria.persistence.service.CompanyService; +import com.solaria.persistence.dto.patch.company.UpdateBusinessContactIdDTO; +import com.solaria.persistence.dto.patch.company.UpdateCompanyAddressIdDTO; +import com.solaria.persistence.dto.request.company.CompanyRequestDTO; +import com.solaria.persistence.dto.response.company.CompanyResponseDTO; +import com.solaria.persistence.openapi.company.CompanyOpenApi; +import com.solaria.persistence.service.company.CompanyService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/CompanyPhotoController.java b/src/main/java/com/solaria/persistence/controller/company/CompanyPhotoController.java similarity index 85% rename from src/main/java/com/solaria/persistence/controller/CompanyPhotoController.java rename to src/main/java/com/solaria/persistence/controller/company/CompanyPhotoController.java index 44800f2..05d097f 100644 --- a/src/main/java/com/solaria/persistence/controller/CompanyPhotoController.java +++ b/src/main/java/com/solaria/persistence/controller/company/CompanyPhotoController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.company; import java.util.List; import java.util.UUID; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import com.solaria.persistence.domain.enums.PhotoType; -import com.solaria.persistence.dto.response.CompanyPhotoResponseDTO; -import com.solaria.persistence.openapi.CompanyPhotoOpenApi; -import com.solaria.persistence.service.CompanyPhotoService; +import com.solaria.persistence.domain.enums.shared.PhotoType; +import com.solaria.persistence.dto.response.company.CompanyPhotoResponseDTO; +import com.solaria.persistence.openapi.company.CompanyPhotoOpenApi; +import com.solaria.persistence.service.company.CompanyPhotoService; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/CompanyPlansController.java b/src/main/java/com/solaria/persistence/controller/company/CompanyPlansController.java similarity index 86% rename from src/main/java/com/solaria/persistence/controller/CompanyPlansController.java rename to src/main/java/com/solaria/persistence/controller/company/CompanyPlansController.java index 781a6a3..17219d9 100644 --- a/src/main/java/com/solaria/persistence/controller/CompanyPlansController.java +++ b/src/main/java/com/solaria/persistence/controller/company/CompanyPlansController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.company; import java.net.URI; import java.util.List; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.CompanyPlansRequestDTO; -import com.solaria.persistence.dto.response.CompanyPlansResponseDTO; -import com.solaria.persistence.openapi.CompanyPlansOpenApi; -import com.solaria.persistence.service.CompanyPlansService; +import com.solaria.persistence.dto.request.company.CompanyPlansRequestDTO; +import com.solaria.persistence.dto.response.company.CompanyPlansResponseDTO; +import com.solaria.persistence.openapi.company.CompanyPlansOpenApi; +import com.solaria.persistence.service.company.CompanyPlansService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/CompanyPositionsController.java b/src/main/java/com/solaria/persistence/controller/company/CompanyPositionsController.java similarity index 84% rename from src/main/java/com/solaria/persistence/controller/CompanyPositionsController.java rename to src/main/java/com/solaria/persistence/controller/company/CompanyPositionsController.java index 7525e68..676e624 100644 --- a/src/main/java/com/solaria/persistence/controller/CompanyPositionsController.java +++ b/src/main/java/com/solaria/persistence/controller/company/CompanyPositionsController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.company; import java.net.URI; import java.util.List; @@ -13,10 +13,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.CompanyPositionsRequestDTO; -import com.solaria.persistence.dto.response.CompanyPositionsResponseDTO; -import com.solaria.persistence.openapi.CompanyPositionsOpenApi; -import com.solaria.persistence.service.CompanyPositionsService; +import com.solaria.persistence.dto.request.company.CompanyPositionsRequestDTO; +import com.solaria.persistence.dto.response.company.CompanyPositionsResponseDTO; +import com.solaria.persistence.openapi.company.CompanyPositionsOpenApi; +import com.solaria.persistence.service.company.CompanyPositionsService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/SubscriptionController.java b/src/main/java/com/solaria/persistence/controller/company/SubscriptionController.java similarity index 88% rename from src/main/java/com/solaria/persistence/controller/SubscriptionController.java rename to src/main/java/com/solaria/persistence/controller/company/SubscriptionController.java index fa94ece..33d6572 100644 --- a/src/main/java/com/solaria/persistence/controller/SubscriptionController.java +++ b/src/main/java/com/solaria/persistence/controller/company/SubscriptionController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.company; import java.net.URI; import java.util.List; @@ -12,10 +12,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.SubscriptionRequestDTO; -import com.solaria.persistence.dto.response.SubscriptionResponseDTO; -import com.solaria.persistence.openapi.SubscriptionOpenApi; -import com.solaria.persistence.service.SubscriptionService; +import com.solaria.persistence.dto.request.company.SubscriptionRequestDTO; +import com.solaria.persistence.dto.response.company.SubscriptionResponseDTO; +import com.solaria.persistence.openapi.company.SubscriptionOpenApi; +import com.solaria.persistence.service.company.SubscriptionService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/RequesterController.java b/src/main/java/com/solaria/persistence/controller/execution/RequesterController.java similarity index 84% rename from src/main/java/com/solaria/persistence/controller/RequesterController.java rename to src/main/java/com/solaria/persistence/controller/execution/RequesterController.java index 59403cb..439ad7e 100644 --- a/src/main/java/com/solaria/persistence/controller/RequesterController.java +++ b/src/main/java/com/solaria/persistence/controller/execution/RequesterController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.execution; import java.net.URI; import java.util.List; @@ -13,10 +13,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.RequesterRequestDTO; -import com.solaria.persistence.dto.response.RequesterResponseDTO; -import com.solaria.persistence.openapi.RequesterOpenApi; -import com.solaria.persistence.service.RequesterService; +import com.solaria.persistence.dto.request.execution.RequesterRequestDTO; +import com.solaria.persistence.dto.response.execution.RequesterResponseDTO; +import com.solaria.persistence.openapi.execution.RequesterOpenApi; +import com.solaria.persistence.service.execution.RequesterService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/ServiceContractController.java b/src/main/java/com/solaria/persistence/controller/execution/ServiceContractController.java similarity index 86% rename from src/main/java/com/solaria/persistence/controller/ServiceContractController.java rename to src/main/java/com/solaria/persistence/controller/execution/ServiceContractController.java index 9047364..3244190 100644 --- a/src/main/java/com/solaria/persistence/controller/ServiceContractController.java +++ b/src/main/java/com/solaria/persistence/controller/execution/ServiceContractController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.execution; import java.net.URI; import java.util.UUID; @@ -13,10 +13,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.ServiceContractRequestDTO; -import com.solaria.persistence.dto.response.ServiceContractResponseDTO; -import com.solaria.persistence.openapi.ServiceContractOpenApi; -import com.solaria.persistence.service.ServiceContractService; +import com.solaria.persistence.dto.request.execution.ServiceContractRequestDTO; +import com.solaria.persistence.dto.response.execution.ServiceContractResponseDTO; +import com.solaria.persistence.openapi.execution.ServiceContractOpenApi; +import com.solaria.persistence.service.execution.ServiceContractService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/ServiceExecutorController.java b/src/main/java/com/solaria/persistence/controller/execution/ServiceExecutorController.java similarity index 82% rename from src/main/java/com/solaria/persistence/controller/ServiceExecutorController.java rename to src/main/java/com/solaria/persistence/controller/execution/ServiceExecutorController.java index 849df07..ac574a3 100644 --- a/src/main/java/com/solaria/persistence/controller/ServiceExecutorController.java +++ b/src/main/java/com/solaria/persistence/controller/execution/ServiceExecutorController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.execution; import java.util.List; import java.util.UUID; @@ -13,11 +13,11 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.patch.UpdateFunctionDTO; -import com.solaria.persistence.dto.request.ServiceExecutorRequestDTO; -import com.solaria.persistence.dto.response.ServiceExecutorResponseDTO; -import com.solaria.persistence.openapi.ServiceExecutorOpenApi; -import com.solaria.persistence.service.ServiceExecutorService; +import com.solaria.persistence.dto.patch.execution.UpdateFunctionDTO; +import com.solaria.persistence.dto.request.execution.ServiceExecutorRequestDTO; +import com.solaria.persistence.dto.response.execution.ServiceExecutorResponseDTO; +import com.solaria.persistence.openapi.execution.ServiceExecutorOpenApi; +import com.solaria.persistence.service.execution.ServiceExecutorService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/TechnicalProjectController.java b/src/main/java/com/solaria/persistence/controller/execution/TechnicalProjectController.java similarity index 87% rename from src/main/java/com/solaria/persistence/controller/TechnicalProjectController.java rename to src/main/java/com/solaria/persistence/controller/execution/TechnicalProjectController.java index 66b44aa..82b0dbe 100644 --- a/src/main/java/com/solaria/persistence/controller/TechnicalProjectController.java +++ b/src/main/java/com/solaria/persistence/controller/execution/TechnicalProjectController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.execution; import java.net.URI; import java.util.List; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.TechnicalProjectRequestDTO; -import com.solaria.persistence.dto.response.TechnicalProjectResponseDTO; -import com.solaria.persistence.openapi.TechnicalProjectOpenApi; -import com.solaria.persistence.service.TechnicalProjectService; +import com.solaria.persistence.dto.request.execution.TechnicalProjectRequestDTO; +import com.solaria.persistence.dto.response.execution.TechnicalProjectResponseDTO; +import com.solaria.persistence.openapi.execution.TechnicalProjectOpenApi; +import com.solaria.persistence.service.execution.TechnicalProjectService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/TechnicalServiceController.java b/src/main/java/com/solaria/persistence/controller/execution/TechnicalServiceController.java similarity index 85% rename from src/main/java/com/solaria/persistence/controller/TechnicalServiceController.java rename to src/main/java/com/solaria/persistence/controller/execution/TechnicalServiceController.java index bffaabe..02164fb 100644 --- a/src/main/java/com/solaria/persistence/controller/TechnicalServiceController.java +++ b/src/main/java/com/solaria/persistence/controller/execution/TechnicalServiceController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.execution; import java.net.URI; import java.util.List; @@ -13,13 +13,13 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.patch.ServiceAcceptanceDTO; -import com.solaria.persistence.dto.patch.ServiceScheduleDTO; -import com.solaria.persistence.dto.patch.UpdatePurposeDTO; -import com.solaria.persistence.dto.request.TechnicalServiceRequestDTO; -import com.solaria.persistence.dto.response.TechnicalServiceResponseDTO; -import com.solaria.persistence.openapi.TechnicalServiceOpenApi; -import com.solaria.persistence.service.TechnicalServiceService; +import com.solaria.persistence.dto.patch.execution.ServiceAcceptanceDTO; +import com.solaria.persistence.dto.patch.execution.ServiceScheduleDTO; +import com.solaria.persistence.dto.patch.execution.UpdatePurposeDTO; +import com.solaria.persistence.dto.request.execution.TechnicalServiceRequestDTO; +import com.solaria.persistence.dto.response.execution.TechnicalServiceResponseDTO; +import com.solaria.persistence.openapi.execution.TechnicalServiceOpenApi; +import com.solaria.persistence.service.execution.TechnicalServiceService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/InternalUserProvisioningController.java b/src/main/java/com/solaria/persistence/controller/identity/InternalUserProvisioningController.java similarity index 79% rename from src/main/java/com/solaria/persistence/controller/InternalUserProvisioningController.java rename to src/main/java/com/solaria/persistence/controller/identity/InternalUserProvisioningController.java index 574d647..c4453aa 100644 --- a/src/main/java/com/solaria/persistence/controller/InternalUserProvisioningController.java +++ b/src/main/java/com/solaria/persistence/controller/identity/InternalUserProvisioningController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.identity; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; @@ -6,9 +6,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.InternalUserProvisionRequestDTO; -import com.solaria.persistence.dto.response.InternalUserProvisionResponseDTO; -import com.solaria.persistence.service.InternalUserProvisioningService; +import com.solaria.persistence.dto.request.identity.InternalUserProvisionRequestDTO; +import com.solaria.persistence.dto.response.identity.InternalUserProvisionResponseDTO; +import com.solaria.persistence.service.identity.InternalUserProvisioningService; import jakarta.validation.Valid; diff --git a/src/main/java/com/solaria/persistence/controller/PermissionController.java b/src/main/java/com/solaria/persistence/controller/identity/PermissionController.java similarity index 85% rename from src/main/java/com/solaria/persistence/controller/PermissionController.java rename to src/main/java/com/solaria/persistence/controller/identity/PermissionController.java index 1ad25ed..af43a99 100644 --- a/src/main/java/com/solaria/persistence/controller/PermissionController.java +++ b/src/main/java/com/solaria/persistence/controller/identity/PermissionController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.identity; import java.net.URI; import java.util.List; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.PermissionRequestDTO; -import com.solaria.persistence.dto.response.PermissionResponseDTO; -import com.solaria.persistence.openapi.PermissionOpenApi; -import com.solaria.persistence.service.PermissionService; +import com.solaria.persistence.dto.request.identity.PermissionRequestDTO; +import com.solaria.persistence.dto.response.identity.PermissionResponseDTO; +import com.solaria.persistence.openapi.identity.PermissionOpenApi; +import com.solaria.persistence.service.identity.PermissionService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/PersonController.java b/src/main/java/com/solaria/persistence/controller/identity/PersonController.java similarity index 85% rename from src/main/java/com/solaria/persistence/controller/PersonController.java rename to src/main/java/com/solaria/persistence/controller/identity/PersonController.java index b530bb9..94611e4 100644 --- a/src/main/java/com/solaria/persistence/controller/PersonController.java +++ b/src/main/java/com/solaria/persistence/controller/identity/PersonController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.identity; import java.net.URI; import java.util.List; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.PersonRequestDTO; -import com.solaria.persistence.dto.response.PersonResponseDTO; -import com.solaria.persistence.openapi.PersonOpenApi; -import com.solaria.persistence.service.PersonService; +import com.solaria.persistence.dto.request.identity.PersonRequestDTO; +import com.solaria.persistence.dto.response.identity.PersonResponseDTO; +import com.solaria.persistence.openapi.identity.PersonOpenApi; +import com.solaria.persistence.service.identity.PersonService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/PositionController.java b/src/main/java/com/solaria/persistence/controller/identity/PositionController.java similarity index 86% rename from src/main/java/com/solaria/persistence/controller/PositionController.java rename to src/main/java/com/solaria/persistence/controller/identity/PositionController.java index 94bcdb3..404b87f 100644 --- a/src/main/java/com/solaria/persistence/controller/PositionController.java +++ b/src/main/java/com/solaria/persistence/controller/identity/PositionController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.identity; import java.net.URI; import java.util.List; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.PositionRequestDTO; -import com.solaria.persistence.dto.response.PositionResponseDTO; -import com.solaria.persistence.openapi.PositionOpenApi; -import com.solaria.persistence.service.PositionService; +import com.solaria.persistence.dto.request.identity.PositionRequestDTO; +import com.solaria.persistence.dto.response.identity.PositionResponseDTO; +import com.solaria.persistence.openapi.identity.PositionOpenApi; +import com.solaria.persistence.service.identity.PositionService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/PositionPermissionController.java b/src/main/java/com/solaria/persistence/controller/identity/PositionPermissionController.java similarity index 82% rename from src/main/java/com/solaria/persistence/controller/PositionPermissionController.java rename to src/main/java/com/solaria/persistence/controller/identity/PositionPermissionController.java index 787ee1e..392a54f 100644 --- a/src/main/java/com/solaria/persistence/controller/PositionPermissionController.java +++ b/src/main/java/com/solaria/persistence/controller/identity/PositionPermissionController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.identity; import java.net.URI; import java.util.List; @@ -13,10 +13,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.PositionPermissionRequestDTO; -import com.solaria.persistence.dto.response.PositionPermissionResponseDTO; -import com.solaria.persistence.openapi.PositionPermissionOpenApi; -import com.solaria.persistence.service.PositionPermissionService; +import com.solaria.persistence.dto.request.identity.PositionPermissionRequestDTO; +import com.solaria.persistence.dto.response.identity.PositionPermissionResponseDTO; +import com.solaria.persistence.openapi.identity.PositionPermissionOpenApi; +import com.solaria.persistence.service.identity.PositionPermissionService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/UserCompanyController.java b/src/main/java/com/solaria/persistence/controller/identity/UserCompanyController.java similarity index 85% rename from src/main/java/com/solaria/persistence/controller/UserCompanyController.java rename to src/main/java/com/solaria/persistence/controller/identity/UserCompanyController.java index 30e6779..a0b7c18 100644 --- a/src/main/java/com/solaria/persistence/controller/UserCompanyController.java +++ b/src/main/java/com/solaria/persistence/controller/identity/UserCompanyController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.identity; import java.net.URI; import java.util.List; @@ -14,11 +14,11 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.patch.UpdatePositionDTO; -import com.solaria.persistence.dto.request.UserCompanyRequestDTO; -import com.solaria.persistence.dto.response.UserCompanyResponseDTO; -import com.solaria.persistence.openapi.UserCompanyOpenApi; -import com.solaria.persistence.service.UserCompanyService; +import com.solaria.persistence.dto.patch.identity.UpdatePositionDTO; +import com.solaria.persistence.dto.request.identity.UserCompanyRequestDTO; +import com.solaria.persistence.dto.response.identity.UserCompanyResponseDTO; +import com.solaria.persistence.openapi.identity.UserCompanyOpenApi; +import com.solaria.persistence.service.identity.UserCompanyService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/UserController.java b/src/main/java/com/solaria/persistence/controller/identity/UserController.java similarity index 85% rename from src/main/java/com/solaria/persistence/controller/UserController.java rename to src/main/java/com/solaria/persistence/controller/identity/UserController.java index a4723aa..3abfee7 100644 --- a/src/main/java/com/solaria/persistence/controller/UserController.java +++ b/src/main/java/com/solaria/persistence/controller/identity/UserController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.identity; import java.net.URI; import java.util.List; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.UserRequestDTO; -import com.solaria.persistence.dto.response.UserResponseDTO; -import com.solaria.persistence.openapi.UserOpenApi; -import com.solaria.persistence.service.UserService; +import com.solaria.persistence.dto.request.identity.UserRequestDTO; +import com.solaria.persistence.dto.response.identity.UserResponseDTO; +import com.solaria.persistence.openapi.identity.UserOpenApi; +import com.solaria.persistence.service.identity.UserService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/UserPhotoController.java b/src/main/java/com/solaria/persistence/controller/identity/UserPhotoController.java similarity index 85% rename from src/main/java/com/solaria/persistence/controller/UserPhotoController.java rename to src/main/java/com/solaria/persistence/controller/identity/UserPhotoController.java index ddbc14a..63dca16 100644 --- a/src/main/java/com/solaria/persistence/controller/UserPhotoController.java +++ b/src/main/java/com/solaria/persistence/controller/identity/UserPhotoController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.identity; import java.util.List; import java.util.UUID; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import com.solaria.persistence.domain.enums.PhotoType; -import com.solaria.persistence.dto.response.UserPhotoResponseDTO; -import com.solaria.persistence.openapi.UserPhotoOpenApi; -import com.solaria.persistence.service.UserPhotoService; +import com.solaria.persistence.domain.enums.shared.PhotoType; +import com.solaria.persistence.dto.response.identity.UserPhotoResponseDTO; +import com.solaria.persistence.openapi.identity.UserPhotoOpenApi; +import com.solaria.persistence.service.identity.UserPhotoService; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/CertificationController.java b/src/main/java/com/solaria/persistence/controller/professional/CertificationController.java similarity index 85% rename from src/main/java/com/solaria/persistence/controller/CertificationController.java rename to src/main/java/com/solaria/persistence/controller/professional/CertificationController.java index 4ec653e..d8a7682 100644 --- a/src/main/java/com/solaria/persistence/controller/CertificationController.java +++ b/src/main/java/com/solaria/persistence/controller/professional/CertificationController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.professional; import java.net.URI; import java.util.List; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.CertificationRequestDTO; -import com.solaria.persistence.dto.response.CertificationResponseDTO; -import com.solaria.persistence.openapi.CertificationOpenApi; -import com.solaria.persistence.service.CertificationService; +import com.solaria.persistence.dto.request.professional.CertificationRequestDTO; +import com.solaria.persistence.dto.response.professional.CertificationResponseDTO; +import com.solaria.persistence.openapi.professional.CertificationOpenApi; +import com.solaria.persistence.service.professional.CertificationService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/CertificationRecordController.java b/src/main/java/com/solaria/persistence/controller/professional/CertificationRecordController.java similarity index 85% rename from src/main/java/com/solaria/persistence/controller/CertificationRecordController.java rename to src/main/java/com/solaria/persistence/controller/professional/CertificationRecordController.java index 6f2d1ac..d33834a 100644 --- a/src/main/java/com/solaria/persistence/controller/CertificationRecordController.java +++ b/src/main/java/com/solaria/persistence/controller/professional/CertificationRecordController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.professional; import java.net.URI; import java.util.List; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.CertificationRecordRequestDTO; -import com.solaria.persistence.dto.response.CertificationRecordResponseDTO; -import com.solaria.persistence.openapi.CertificationRecordOpenApi; -import com.solaria.persistence.service.CertificationRecordService; +import com.solaria.persistence.dto.request.professional.CertificationRecordRequestDTO; +import com.solaria.persistence.dto.response.professional.CertificationRecordResponseDTO; +import com.solaria.persistence.openapi.professional.CertificationRecordOpenApi; +import com.solaria.persistence.service.professional.CertificationRecordService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/ProfessionController.java b/src/main/java/com/solaria/persistence/controller/professional/ProfessionController.java similarity index 85% rename from src/main/java/com/solaria/persistence/controller/ProfessionController.java rename to src/main/java/com/solaria/persistence/controller/professional/ProfessionController.java index 42bcb11..e4b7cea 100644 --- a/src/main/java/com/solaria/persistence/controller/ProfessionController.java +++ b/src/main/java/com/solaria/persistence/controller/professional/ProfessionController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.professional; import java.net.URI; import java.util.List; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.ProfessionRequestDTO; -import com.solaria.persistence.dto.response.ProfessionResponseDTO; -import com.solaria.persistence.openapi.ProfessionOpenApi; -import com.solaria.persistence.service.ProfessionService; +import com.solaria.persistence.dto.request.professional.ProfessionRequestDTO; +import com.solaria.persistence.dto.response.professional.ProfessionResponseDTO; +import com.solaria.persistence.openapi.professional.ProfessionOpenApi; +import com.solaria.persistence.service.professional.ProfessionService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/ProfessionalRegistrationController.java b/src/main/java/com/solaria/persistence/controller/professional/ProfessionalRegistrationController.java similarity index 85% rename from src/main/java/com/solaria/persistence/controller/ProfessionalRegistrationController.java rename to src/main/java/com/solaria/persistence/controller/professional/ProfessionalRegistrationController.java index d0b6017..b605317 100644 --- a/src/main/java/com/solaria/persistence/controller/ProfessionalRegistrationController.java +++ b/src/main/java/com/solaria/persistence/controller/professional/ProfessionalRegistrationController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.professional; import java.net.URI; import java.util.List; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.ProfessionalRegistrationRequestDTO; -import com.solaria.persistence.dto.response.ProfessionalRegistrationResponseDTO; -import com.solaria.persistence.openapi.ProfessionalRegistrationOpenApi; -import com.solaria.persistence.service.ProfessionalRegistrationService; +import com.solaria.persistence.dto.request.professional.ProfessionalRegistrationRequestDTO; +import com.solaria.persistence.dto.response.professional.ProfessionalRegistrationResponseDTO; +import com.solaria.persistence.openapi.professional.ProfessionalRegistrationOpenApi; +import com.solaria.persistence.service.professional.ProfessionalRegistrationService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/ProfessionalReviewController.java b/src/main/java/com/solaria/persistence/controller/professional/ProfessionalReviewController.java similarity index 83% rename from src/main/java/com/solaria/persistence/controller/ProfessionalReviewController.java rename to src/main/java/com/solaria/persistence/controller/professional/ProfessionalReviewController.java index 7db52f1..0bed03b 100644 --- a/src/main/java/com/solaria/persistence/controller/ProfessionalReviewController.java +++ b/src/main/java/com/solaria/persistence/controller/professional/ProfessionalReviewController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.professional; import java.net.URI; import java.util.List; @@ -13,10 +13,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.ProfessionalReviewRequestDTO; -import com.solaria.persistence.dto.response.ProfessionalReviewResponseDTO; -import com.solaria.persistence.openapi.ProfessionalReviewOpenApi; -import com.solaria.persistence.service.ProfessionalReviewService; +import com.solaria.persistence.dto.request.professional.ProfessionalReviewRequestDTO; +import com.solaria.persistence.dto.response.professional.ProfessionalReviewResponseDTO; +import com.solaria.persistence.openapi.professional.ProfessionalReviewOpenApi; +import com.solaria.persistence.service.professional.ProfessionalReviewService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/ShiftController.java b/src/main/java/com/solaria/persistence/controller/professional/ShiftController.java similarity index 85% rename from src/main/java/com/solaria/persistence/controller/ShiftController.java rename to src/main/java/com/solaria/persistence/controller/professional/ShiftController.java index e90d09d..0671fd0 100644 --- a/src/main/java/com/solaria/persistence/controller/ShiftController.java +++ b/src/main/java/com/solaria/persistence/controller/professional/ShiftController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.professional; import java.net.URI; import java.util.List; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.ShiftRequestDTO; -import com.solaria.persistence.dto.response.ShiftResponseDTO; -import com.solaria.persistence.openapi.ShiftOpenApi; -import com.solaria.persistence.service.ShiftService; +import com.solaria.persistence.dto.request.professional.ShiftRequestDTO; +import com.solaria.persistence.dto.response.professional.ShiftResponseDTO; +import com.solaria.persistence.openapi.professional.ShiftOpenApi; +import com.solaria.persistence.service.professional.ShiftService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/TechnicalCourseController.java b/src/main/java/com/solaria/persistence/controller/professional/TechnicalCourseController.java similarity index 85% rename from src/main/java/com/solaria/persistence/controller/TechnicalCourseController.java rename to src/main/java/com/solaria/persistence/controller/professional/TechnicalCourseController.java index 04b13dd..a9172f1 100644 --- a/src/main/java/com/solaria/persistence/controller/TechnicalCourseController.java +++ b/src/main/java/com/solaria/persistence/controller/professional/TechnicalCourseController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.professional; import java.net.URI; import java.util.List; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.TechnicalCourseRequestDTO; -import com.solaria.persistence.dto.response.TechnicalCourseResponseDTO; -import com.solaria.persistence.openapi.TechnicalCourseOpenApi; -import com.solaria.persistence.service.TechnicalCourseService; +import com.solaria.persistence.dto.request.professional.TechnicalCourseRequestDTO; +import com.solaria.persistence.dto.response.professional.TechnicalCourseResponseDTO; +import com.solaria.persistence.openapi.professional.TechnicalCourseOpenApi; +import com.solaria.persistence.service.professional.TechnicalCourseService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/TechnicianAffiliationController.java b/src/main/java/com/solaria/persistence/controller/professional/TechnicianAffiliationController.java similarity index 83% rename from src/main/java/com/solaria/persistence/controller/TechnicianAffiliationController.java rename to src/main/java/com/solaria/persistence/controller/professional/TechnicianAffiliationController.java index dc91ce1..89d7e99 100644 --- a/src/main/java/com/solaria/persistence/controller/TechnicianAffiliationController.java +++ b/src/main/java/com/solaria/persistence/controller/professional/TechnicianAffiliationController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.professional; import java.net.URI; import java.util.List; @@ -13,18 +13,18 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.patch.UpdateActiveDTO; -import com.solaria.persistence.dto.patch.UpdateTypeDTO; -import com.solaria.persistence.dto.request.TechnicianAffiliationRequestDTO; -import com.solaria.persistence.dto.response.TechnicianAffiliationResponseDTO; -import com.solaria.persistence.openapi.TechnicianAffiliationOpenApi; -import com.solaria.persistence.service.TechnicianAffiliationService; +import com.solaria.persistence.dto.patch.professional.UpdateActiveDTO; +import com.solaria.persistence.dto.patch.professional.UpdateTypeDTO; +import com.solaria.persistence.dto.request.professional.TechnicianAffiliationRequestDTO; +import com.solaria.persistence.dto.response.professional.TechnicianAffiliationResponseDTO; +import com.solaria.persistence.openapi.professional.TechnicianAffiliationOpenApi; +import com.solaria.persistence.service.professional.TechnicianAffiliationService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; /** - * controller REST (borda pura) para {@link com.solaria.persistence.domain.entity.TechnicianAffiliation} + * controller REST (borda pura) para {@link com.solaria.persistence.domain.entity.professional.TechnicianAffiliation} * (RN-14). Delega para {@link TechnicianAffiliationService}. */ @RestController diff --git a/src/main/java/com/solaria/persistence/controller/TechnicianController.java b/src/main/java/com/solaria/persistence/controller/professional/TechnicianController.java similarity index 85% rename from src/main/java/com/solaria/persistence/controller/TechnicianController.java rename to src/main/java/com/solaria/persistence/controller/professional/TechnicianController.java index 6738bda..6410268 100644 --- a/src/main/java/com/solaria/persistence/controller/TechnicianController.java +++ b/src/main/java/com/solaria/persistence/controller/professional/TechnicianController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.professional; import java.net.URI; import java.util.List; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.TechnicianRequestDTO; -import com.solaria.persistence.dto.response.TechnicianResponseDTO; -import com.solaria.persistence.openapi.TechnicianOpenApi; -import com.solaria.persistence.service.TechnicianService; +import com.solaria.persistence.dto.request.professional.TechnicianRequestDTO; +import com.solaria.persistence.dto.response.professional.TechnicianResponseDTO; +import com.solaria.persistence.openapi.professional.TechnicianOpenApi; +import com.solaria.persistence.service.professional.TechnicianService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/ProposalController.java b/src/main/java/com/solaria/persistence/controller/proposal/ProposalController.java similarity index 89% rename from src/main/java/com/solaria/persistence/controller/ProposalController.java rename to src/main/java/com/solaria/persistence/controller/proposal/ProposalController.java index 63099c7..e2f90b9 100644 --- a/src/main/java/com/solaria/persistence/controller/ProposalController.java +++ b/src/main/java/com/solaria/persistence/controller/proposal/ProposalController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.proposal; import java.net.URI; import java.util.List; @@ -13,11 +13,11 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.patch.UpdateNotesDTO; -import com.solaria.persistence.dto.request.ProposalRequestDTO; -import com.solaria.persistence.dto.response.ProposalResponseDTO; -import com.solaria.persistence.openapi.ProposalOpenApi; -import com.solaria.persistence.service.ProposalService; +import com.solaria.persistence.dto.patch.proposal.UpdateNotesDTO; +import com.solaria.persistence.dto.request.proposal.ProposalRequestDTO; +import com.solaria.persistence.dto.response.proposal.ProposalResponseDTO; +import com.solaria.persistence.openapi.proposal.ProposalOpenApi; +import com.solaria.persistence.service.proposal.ProposalService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/ProposalItemController.java b/src/main/java/com/solaria/persistence/controller/proposal/ProposalItemController.java similarity index 86% rename from src/main/java/com/solaria/persistence/controller/ProposalItemController.java rename to src/main/java/com/solaria/persistence/controller/proposal/ProposalItemController.java index 9066711..7c77645 100644 --- a/src/main/java/com/solaria/persistence/controller/ProposalItemController.java +++ b/src/main/java/com/solaria/persistence/controller/proposal/ProposalItemController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.proposal; import java.net.URI; import java.util.List; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.ProposalItemRequestDTO; -import com.solaria.persistence.dto.response.ProposalItemResponseDTO; -import com.solaria.persistence.openapi.ProposalItemOpenApi; -import com.solaria.persistence.service.ProposalItemService; +import com.solaria.persistence.dto.request.proposal.ProposalItemRequestDTO; +import com.solaria.persistence.dto.response.proposal.ProposalItemResponseDTO; +import com.solaria.persistence.openapi.proposal.ProposalItemOpenApi; +import com.solaria.persistence.service.proposal.ProposalItemService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/ProposalUnitController.java b/src/main/java/com/solaria/persistence/controller/proposal/ProposalUnitController.java similarity index 86% rename from src/main/java/com/solaria/persistence/controller/ProposalUnitController.java rename to src/main/java/com/solaria/persistence/controller/proposal/ProposalUnitController.java index 69e94f8..c6f2a47 100644 --- a/src/main/java/com/solaria/persistence/controller/ProposalUnitController.java +++ b/src/main/java/com/solaria/persistence/controller/proposal/ProposalUnitController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.proposal; import java.net.URI; import java.util.List; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.ProposalUnitRequestDTO; -import com.solaria.persistence.dto.response.ProposalUnitResponseDTO; -import com.solaria.persistence.openapi.ProposalUnitOpenApi; -import com.solaria.persistence.service.ProposalUnitService; +import com.solaria.persistence.dto.request.proposal.ProposalUnitRequestDTO; +import com.solaria.persistence.dto.response.proposal.ProposalUnitResponseDTO; +import com.solaria.persistence.openapi.proposal.ProposalUnitOpenApi; +import com.solaria.persistence.service.proposal.ProposalUnitService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/AddressController.java b/src/main/java/com/solaria/persistence/controller/shared/AddressController.java similarity index 86% rename from src/main/java/com/solaria/persistence/controller/AddressController.java rename to src/main/java/com/solaria/persistence/controller/shared/AddressController.java index 41021d6..dea1e83 100644 --- a/src/main/java/com/solaria/persistence/controller/AddressController.java +++ b/src/main/java/com/solaria/persistence/controller/shared/AddressController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.shared; import java.net.URI; import java.util.List; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.AddressRequestDTO; -import com.solaria.persistence.dto.response.AddressResponseDTO; -import com.solaria.persistence.openapi.AddressOpenApi; -import com.solaria.persistence.service.AddressService; +import com.solaria.persistence.dto.request.shared.AddressRequestDTO; +import com.solaria.persistence.dto.response.shared.AddressResponseDTO; +import com.solaria.persistence.openapi.shared.AddressOpenApi; +import com.solaria.persistence.service.shared.AddressService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/ContactController.java b/src/main/java/com/solaria/persistence/controller/shared/ContactController.java similarity index 86% rename from src/main/java/com/solaria/persistence/controller/ContactController.java rename to src/main/java/com/solaria/persistence/controller/shared/ContactController.java index fc70a35..80e0f10 100644 --- a/src/main/java/com/solaria/persistence/controller/ContactController.java +++ b/src/main/java/com/solaria/persistence/controller/shared/ContactController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.shared; import java.net.URI; import java.util.List; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.ContactRequestDTO; -import com.solaria.persistence.dto.response.ContactResponseDTO; -import com.solaria.persistence.openapi.ContactOpenApi; -import com.solaria.persistence.service.ContactService; +import com.solaria.persistence.dto.request.shared.ContactRequestDTO; +import com.solaria.persistence.dto.response.shared.ContactResponseDTO; +import com.solaria.persistence.openapi.shared.ContactOpenApi; +import com.solaria.persistence.service.shared.ContactService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/FluxLogController.java b/src/main/java/com/solaria/persistence/controller/shared/FluxLogController.java similarity index 80% rename from src/main/java/com/solaria/persistence/controller/FluxLogController.java rename to src/main/java/com/solaria/persistence/controller/shared/FluxLogController.java index 292536e..3e570ce 100644 --- a/src/main/java/com/solaria/persistence/controller/FluxLogController.java +++ b/src/main/java/com/solaria/persistence/controller/shared/FluxLogController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.shared; import java.net.URI; import java.util.List; @@ -12,10 +12,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.FluxLogRequestDTO; -import com.solaria.persistence.dto.response.FluxLogResponseDTO; -import com.solaria.persistence.openapi.FluxLogOpenApi; -import com.solaria.persistence.service.FluxLogService; +import com.solaria.persistence.dto.request.shared.FluxLogRequestDTO; +import com.solaria.persistence.dto.response.shared.FluxLogResponseDTO; +import com.solaria.persistence.openapi.shared.FluxLogOpenApi; +import com.solaria.persistence.service.shared.FluxLogService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/GeolocalizationController.java b/src/main/java/com/solaria/persistence/controller/shared/GeolocalizationController.java similarity index 86% rename from src/main/java/com/solaria/persistence/controller/GeolocalizationController.java rename to src/main/java/com/solaria/persistence/controller/shared/GeolocalizationController.java index d5a11ee..4bce2e0 100644 --- a/src/main/java/com/solaria/persistence/controller/GeolocalizationController.java +++ b/src/main/java/com/solaria/persistence/controller/shared/GeolocalizationController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.shared; import java.net.URI; import java.util.List; @@ -14,10 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.GeolocalizationRequestDTO; -import com.solaria.persistence.dto.response.GeolocalizationResponseDTO; -import com.solaria.persistence.openapi.GeolocalizationOpenApi; -import com.solaria.persistence.service.GeolocalizationService; +import com.solaria.persistence.dto.request.shared.GeolocalizationRequestDTO; +import com.solaria.persistence.dto.response.shared.GeolocalizationResponseDTO; +import com.solaria.persistence.openapi.shared.GeolocalizationOpenApi; +import com.solaria.persistence.service.shared.GeolocalizationService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/EnergyBillController.java b/src/main/java/com/solaria/persistence/controller/unit/EnergyBillController.java similarity index 89% rename from src/main/java/com/solaria/persistence/controller/EnergyBillController.java rename to src/main/java/com/solaria/persistence/controller/unit/EnergyBillController.java index 3415e7e..f7723ca 100644 --- a/src/main/java/com/solaria/persistence/controller/EnergyBillController.java +++ b/src/main/java/com/solaria/persistence/controller/unit/EnergyBillController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.unit; import java.net.URI; import java.util.List; @@ -17,10 +17,10 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import com.solaria.persistence.dto.request.EnergyBillRequestDTO; -import com.solaria.persistence.dto.response.EnergyBillResponseDTO; -import com.solaria.persistence.openapi.EnergyBillOpenApi; -import com.solaria.persistence.service.EnergyBillService; +import com.solaria.persistence.dto.request.unit.EnergyBillRequestDTO; +import com.solaria.persistence.dto.response.unit.EnergyBillResponseDTO; +import com.solaria.persistence.openapi.unit.EnergyBillOpenApi; +import com.solaria.persistence.service.unit.EnergyBillService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/LocalUnitController.java b/src/main/java/com/solaria/persistence/controller/unit/LocalUnitController.java similarity index 88% rename from src/main/java/com/solaria/persistence/controller/LocalUnitController.java rename to src/main/java/com/solaria/persistence/controller/unit/LocalUnitController.java index 26ff459..b9abe1f 100644 --- a/src/main/java/com/solaria/persistence/controller/LocalUnitController.java +++ b/src/main/java/com/solaria/persistence/controller/unit/LocalUnitController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.unit; import java.net.URI; import java.util.List; @@ -15,11 +15,11 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.patch.UpdateLocalUnitAddressIdDTO; -import com.solaria.persistence.dto.request.LocalUnitRequestDTO; -import com.solaria.persistence.dto.response.LocalUnitResponseDTO; -import com.solaria.persistence.openapi.LocalUnitOpenApi; -import com.solaria.persistence.service.LocalUnitService; +import com.solaria.persistence.dto.patch.unit.UpdateLocalUnitAddressIdDTO; +import com.solaria.persistence.dto.request.unit.LocalUnitRequestDTO; +import com.solaria.persistence.dto.response.unit.LocalUnitResponseDTO; +import com.solaria.persistence.openapi.unit.LocalUnitOpenApi; +import com.solaria.persistence.service.unit.LocalUnitService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/LocalUnitPhotoController.java b/src/main/java/com/solaria/persistence/controller/unit/LocalUnitPhotoController.java similarity index 87% rename from src/main/java/com/solaria/persistence/controller/LocalUnitPhotoController.java rename to src/main/java/com/solaria/persistence/controller/unit/LocalUnitPhotoController.java index 89e85e8..e449218 100644 --- a/src/main/java/com/solaria/persistence/controller/LocalUnitPhotoController.java +++ b/src/main/java/com/solaria/persistence/controller/unit/LocalUnitPhotoController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.unit; import java.net.URI; import java.util.List; @@ -15,9 +15,9 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import com.solaria.persistence.dto.response.LocalUnitPhotoResponseDTO; -import com.solaria.persistence.openapi.LocalUnitPhotoOpenApi; -import com.solaria.persistence.service.LocalUnitPhotoService; +import com.solaria.persistence.dto.response.unit.LocalUnitPhotoResponseDTO; +import com.solaria.persistence.openapi.unit.LocalUnitPhotoOpenApi; +import com.solaria.persistence.service.unit.LocalUnitPhotoService; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/controller/UnitSpecificationsController.java b/src/main/java/com/solaria/persistence/controller/unit/UnitSpecificationsController.java similarity index 82% rename from src/main/java/com/solaria/persistence/controller/UnitSpecificationsController.java rename to src/main/java/com/solaria/persistence/controller/unit/UnitSpecificationsController.java index 19db40e..f47d85f 100644 --- a/src/main/java/com/solaria/persistence/controller/UnitSpecificationsController.java +++ b/src/main/java/com/solaria/persistence/controller/unit/UnitSpecificationsController.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.controller; +package com.solaria.persistence.controller.unit; import java.net.URI; import java.util.List; @@ -12,10 +12,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.solaria.persistence.dto.request.UnitSpecificationsRequestDTO; -import com.solaria.persistence.dto.response.UnitSpecificationsResponseDTO; -import com.solaria.persistence.openapi.UnitSpecificationsOpenApi; -import com.solaria.persistence.service.UnitSpecificationsService; +import com.solaria.persistence.dto.request.unit.UnitSpecificationsRequestDTO; +import com.solaria.persistence.dto.response.unit.UnitSpecificationsResponseDTO; +import com.solaria.persistence.openapi.unit.UnitSpecificationsOpenApi; +import com.solaria.persistence.service.unit.UnitSpecificationsService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/com/solaria/persistence/domain/entity/Inventory.java b/src/main/java/com/solaria/persistence/domain/entity/catalog/Inventory.java similarity index 94% rename from src/main/java/com/solaria/persistence/domain/entity/Inventory.java rename to src/main/java/com/solaria/persistence/domain/entity/catalog/Inventory.java index 30361f6..67bf6b9 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Inventory.java +++ b/src/main/java/com/solaria/persistence/domain/entity/catalog/Inventory.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.catalog; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/domain/entity/Model.java b/src/main/java/com/solaria/persistence/domain/entity/catalog/Model.java similarity index 85% rename from src/main/java/com/solaria/persistence/domain/entity/Model.java rename to src/main/java/com/solaria/persistence/domain/entity/catalog/Model.java index 020a6fc..eb3231d 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Model.java +++ b/src/main/java/com/solaria/persistence/domain/entity/catalog/Model.java @@ -1,7 +1,7 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.catalog; -import com.solaria.persistence.domain.enums.ModelStatus; -import com.solaria.persistence.domain.enums.PanelType; +import com.solaria.persistence.domain.enums.catalog.ModelStatus; +import com.solaria.persistence.domain.enums.catalog.PanelType; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/entity/ModelPhoto.java b/src/main/java/com/solaria/persistence/domain/entity/catalog/ModelPhoto.java similarity index 92% rename from src/main/java/com/solaria/persistence/domain/entity/ModelPhoto.java rename to src/main/java/com/solaria/persistence/domain/entity/catalog/ModelPhoto.java index d65ae07..91f7179 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/ModelPhoto.java +++ b/src/main/java/com/solaria/persistence/domain/entity/catalog/ModelPhoto.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.catalog; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/entity/Offer.java b/src/main/java/com/solaria/persistence/domain/entity/catalog/Offer.java similarity index 92% rename from src/main/java/com/solaria/persistence/domain/entity/Offer.java rename to src/main/java/com/solaria/persistence/domain/entity/catalog/Offer.java index ca8fcdf..f6c1cb3 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Offer.java +++ b/src/main/java/com/solaria/persistence/domain/entity/catalog/Offer.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.catalog; -import com.solaria.persistence.domain.enums.TranslationStatus; +import com.solaria.persistence.domain.enums.catalog.TranslationStatus; import jakarta.persistence.*; import lombok.*; import org.hibernate.annotations.ColumnDefault; diff --git a/src/main/java/com/solaria/persistence/domain/entity/OfferTranslation.java b/src/main/java/com/solaria/persistence/domain/entity/catalog/OfferTranslation.java similarity index 93% rename from src/main/java/com/solaria/persistence/domain/entity/OfferTranslation.java rename to src/main/java/com/solaria/persistence/domain/entity/catalog/OfferTranslation.java index 0ddcf2e..e42dfb5 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/OfferTranslation.java +++ b/src/main/java/com/solaria/persistence/domain/entity/catalog/OfferTranslation.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.catalog; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/entity/Supplier.java b/src/main/java/com/solaria/persistence/domain/entity/catalog/Supplier.java similarity index 76% rename from src/main/java/com/solaria/persistence/domain/entity/Supplier.java rename to src/main/java/com/solaria/persistence/domain/entity/catalog/Supplier.java index 734d1f3..608c215 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Supplier.java +++ b/src/main/java/com/solaria/persistence/domain/entity/catalog/Supplier.java @@ -1,10 +1,11 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.catalog; -import com.solaria.persistence.domain.enums.SupplierStatus; +import com.solaria.persistence.domain.enums.catalog.SupplierStatus; import jakarta.persistence.*; import lombok.*; import java.util.UUID; +import com.solaria.persistence.domain.entity.company.Company; @Entity diff --git a/src/main/java/com/solaria/persistence/domain/entity/BusinessContact.java b/src/main/java/com/solaria/persistence/domain/entity/company/BusinessContact.java similarity index 90% rename from src/main/java/com/solaria/persistence/domain/entity/BusinessContact.java rename to src/main/java/com/solaria/persistence/domain/entity/company/BusinessContact.java index 8ff1bf4..9b30397 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/BusinessContact.java +++ b/src/main/java/com/solaria/persistence/domain/entity/company/BusinessContact.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.company; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/entity/Charge.java b/src/main/java/com/solaria/persistence/domain/entity/company/Charge.java similarity index 84% rename from src/main/java/com/solaria/persistence/domain/entity/Charge.java rename to src/main/java/com/solaria/persistence/domain/entity/company/Charge.java index dd23474..01e594b 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Charge.java +++ b/src/main/java/com/solaria/persistence/domain/entity/company/Charge.java @@ -1,7 +1,7 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.company; -import com.solaria.persistence.domain.enums.BillingStatus; -import com.solaria.persistence.domain.enums.PaymentMethod; +import com.solaria.persistence.domain.enums.company.BillingStatus; +import com.solaria.persistence.domain.enums.company.PaymentMethod; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/entity/Company.java b/src/main/java/com/solaria/persistence/domain/entity/company/Company.java similarity index 85% rename from src/main/java/com/solaria/persistence/domain/entity/Company.java rename to src/main/java/com/solaria/persistence/domain/entity/company/Company.java index f7477d7..f717c8b 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Company.java +++ b/src/main/java/com/solaria/persistence/domain/entity/company/Company.java @@ -1,11 +1,12 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.company; -import com.solaria.persistence.domain.enums.CompanyStatus; +import com.solaria.persistence.domain.enums.company.CompanyStatus; import jakarta.persistence.*; import lombok.*; import org.hibernate.annotations.ColumnDefault; import java.util.UUID; +import com.solaria.persistence.domain.entity.shared.Address; @Entity @Table(name = "company") diff --git a/src/main/java/com/solaria/persistence/domain/entity/CompanyPhoto.java b/src/main/java/com/solaria/persistence/domain/entity/company/CompanyPhoto.java similarity index 86% rename from src/main/java/com/solaria/persistence/domain/entity/CompanyPhoto.java rename to src/main/java/com/solaria/persistence/domain/entity/company/CompanyPhoto.java index 25e4a56..0bbd4e8 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/CompanyPhoto.java +++ b/src/main/java/com/solaria/persistence/domain/entity/company/CompanyPhoto.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.company; -import com.solaria.persistence.domain.enums.PhotoType; +import com.solaria.persistence.domain.enums.shared.PhotoType; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/entity/CompanyPlans.java b/src/main/java/com/solaria/persistence/domain/entity/company/CompanyPlans.java similarity index 82% rename from src/main/java/com/solaria/persistence/domain/entity/CompanyPlans.java rename to src/main/java/com/solaria/persistence/domain/entity/company/CompanyPlans.java index 1992bfe..270e51b 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/CompanyPlans.java +++ b/src/main/java/com/solaria/persistence/domain/entity/company/CompanyPlans.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.company; -import com.solaria.persistence.domain.enums.PlanCycle; +import com.solaria.persistence.domain.enums.company.PlanCycle; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/entity/CompanyPositions.java b/src/main/java/com/solaria/persistence/domain/entity/company/CompanyPositions.java similarity index 88% rename from src/main/java/com/solaria/persistence/domain/entity/CompanyPositions.java rename to src/main/java/com/solaria/persistence/domain/entity/company/CompanyPositions.java index 06ab1ee..bc0f4b1 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/CompanyPositions.java +++ b/src/main/java/com/solaria/persistence/domain/entity/company/CompanyPositions.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.company; import java.util.UUID; @@ -14,6 +14,7 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import com.solaria.persistence.domain.entity.identity.Position; @Entity @Table(name = "company_positions") diff --git a/src/main/java/com/solaria/persistence/domain/entity/Subscription.java b/src/main/java/com/solaria/persistence/domain/entity/company/Subscription.java similarity index 83% rename from src/main/java/com/solaria/persistence/domain/entity/Subscription.java rename to src/main/java/com/solaria/persistence/domain/entity/company/Subscription.java index b5bca67..752ee4b 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Subscription.java +++ b/src/main/java/com/solaria/persistence/domain/entity/company/Subscription.java @@ -1,11 +1,12 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.company; -import com.solaria.persistence.domain.enums.SubscriptionStatus; +import com.solaria.persistence.domain.enums.company.SubscriptionStatus; import jakarta.persistence.*; import lombok.*; import java.time.OffsetDateTime; import java.util.UUID; +import com.solaria.persistence.domain.entity.catalog.Supplier; @Entity @Table(name = "subscription") diff --git a/src/main/java/com/solaria/persistence/domain/entity/Requester.java b/src/main/java/com/solaria/persistence/domain/entity/execution/Requester.java similarity index 80% rename from src/main/java/com/solaria/persistence/domain/entity/Requester.java rename to src/main/java/com/solaria/persistence/domain/entity/execution/Requester.java index 41ae771..1c8a182 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Requester.java +++ b/src/main/java/com/solaria/persistence/domain/entity/execution/Requester.java @@ -1,9 +1,10 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.execution; import jakarta.persistence.*; import lombok.*; import java.util.UUID; +import com.solaria.persistence.domain.entity.company.Company; @Entity diff --git a/src/main/java/com/solaria/persistence/domain/entity/ServiceContract.java b/src/main/java/com/solaria/persistence/domain/entity/execution/ServiceContract.java similarity index 93% rename from src/main/java/com/solaria/persistence/domain/entity/ServiceContract.java rename to src/main/java/com/solaria/persistence/domain/entity/execution/ServiceContract.java index 82cbd28..0c056d1 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/ServiceContract.java +++ b/src/main/java/com/solaria/persistence/domain/entity/execution/ServiceContract.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.execution; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/entity/ServiceExecutor.java b/src/main/java/com/solaria/persistence/domain/entity/execution/ServiceExecutor.java similarity index 88% rename from src/main/java/com/solaria/persistence/domain/entity/ServiceExecutor.java rename to src/main/java/com/solaria/persistence/domain/entity/execution/ServiceExecutor.java index 1a1e0e3..a452fec 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/ServiceExecutor.java +++ b/src/main/java/com/solaria/persistence/domain/entity/execution/ServiceExecutor.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.execution; import java.util.UUID; @@ -15,6 +15,7 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import com.solaria.persistence.domain.entity.professional.TechnicianAffiliation; @Entity @Table(name = "service_executor") diff --git a/src/main/java/com/solaria/persistence/domain/entity/TechnicalProject.java b/src/main/java/com/solaria/persistence/domain/entity/execution/TechnicalProject.java similarity index 81% rename from src/main/java/com/solaria/persistence/domain/entity/TechnicalProject.java rename to src/main/java/com/solaria/persistence/domain/entity/execution/TechnicalProject.java index c433900..24dd291 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/TechnicalProject.java +++ b/src/main/java/com/solaria/persistence/domain/entity/execution/TechnicalProject.java @@ -1,12 +1,13 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.execution; -import com.solaria.persistence.domain.enums.ServiceStatus; +import com.solaria.persistence.domain.enums.execution.ServiceStatus; import jakarta.persistence.*; import lombok.*; import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.util.UUID; +import com.solaria.persistence.domain.entity.unit.LocalUnit; @Entity diff --git a/src/main/java/com/solaria/persistence/domain/entity/TechnicalService.java b/src/main/java/com/solaria/persistence/domain/entity/execution/TechnicalService.java similarity index 89% rename from src/main/java/com/solaria/persistence/domain/entity/TechnicalService.java rename to src/main/java/com/solaria/persistence/domain/entity/execution/TechnicalService.java index 056dc6d..42d791a 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/TechnicalService.java +++ b/src/main/java/com/solaria/persistence/domain/entity/execution/TechnicalService.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.execution; -import com.solaria.persistence.domain.enums.ServiceStatus; +import com.solaria.persistence.domain.enums.execution.ServiceStatus; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/entity/Permission.java b/src/main/java/com/solaria/persistence/domain/entity/identity/Permission.java similarity index 91% rename from src/main/java/com/solaria/persistence/domain/entity/Permission.java rename to src/main/java/com/solaria/persistence/domain/entity/identity/Permission.java index 5a753d5..6d78045 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Permission.java +++ b/src/main/java/com/solaria/persistence/domain/entity/identity/Permission.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.identity; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/entity/Person.java b/src/main/java/com/solaria/persistence/domain/entity/identity/Person.java similarity index 86% rename from src/main/java/com/solaria/persistence/domain/entity/Person.java rename to src/main/java/com/solaria/persistence/domain/entity/identity/Person.java index 08782d1..8c96c7f 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Person.java +++ b/src/main/java/com/solaria/persistence/domain/entity/identity/Person.java @@ -1,10 +1,11 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.identity; import jakarta.persistence.*; import lombok.*; import java.time.LocalDate; import java.util.UUID; +import com.solaria.persistence.domain.entity.shared.Contact; @Entity @Table(name = "person") diff --git a/src/main/java/com/solaria/persistence/domain/entity/Position.java b/src/main/java/com/solaria/persistence/domain/entity/identity/Position.java similarity index 93% rename from src/main/java/com/solaria/persistence/domain/entity/Position.java rename to src/main/java/com/solaria/persistence/domain/entity/identity/Position.java index 2c27de6..5f5dc69 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Position.java +++ b/src/main/java/com/solaria/persistence/domain/entity/identity/Position.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.identity; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/domain/entity/PositionPermission.java b/src/main/java/com/solaria/persistence/domain/entity/identity/PositionPermission.java similarity index 94% rename from src/main/java/com/solaria/persistence/domain/entity/PositionPermission.java rename to src/main/java/com/solaria/persistence/domain/entity/identity/PositionPermission.java index 46d961f..2e66400 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/PositionPermission.java +++ b/src/main/java/com/solaria/persistence/domain/entity/identity/PositionPermission.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.identity; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/domain/entity/User.java b/src/main/java/com/solaria/persistence/domain/entity/identity/User.java similarity index 89% rename from src/main/java/com/solaria/persistence/domain/entity/User.java rename to src/main/java/com/solaria/persistence/domain/entity/identity/User.java index 3d716b5..79d2d0c 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/User.java +++ b/src/main/java/com/solaria/persistence/domain/entity/identity/User.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.identity; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/entity/UserCompany.java b/src/main/java/com/solaria/persistence/domain/entity/identity/UserCompany.java similarity index 89% rename from src/main/java/com/solaria/persistence/domain/entity/UserCompany.java rename to src/main/java/com/solaria/persistence/domain/entity/identity/UserCompany.java index 510362e..1d3beb7 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/UserCompany.java +++ b/src/main/java/com/solaria/persistence/domain/entity/identity/UserCompany.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.identity; import java.util.UUID; @@ -14,6 +14,7 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import com.solaria.persistence.domain.entity.company.Company; @Entity @Table(name = "user_company") diff --git a/src/main/java/com/solaria/persistence/domain/entity/UserPhoto.java b/src/main/java/com/solaria/persistence/domain/entity/identity/UserPhoto.java similarity index 86% rename from src/main/java/com/solaria/persistence/domain/entity/UserPhoto.java rename to src/main/java/com/solaria/persistence/domain/entity/identity/UserPhoto.java index 4e775e5..31e2e3b 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/UserPhoto.java +++ b/src/main/java/com/solaria/persistence/domain/entity/identity/UserPhoto.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.identity; -import com.solaria.persistence.domain.enums.PhotoType; +import com.solaria.persistence.domain.enums.shared.PhotoType; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/entity/Certification.java b/src/main/java/com/solaria/persistence/domain/entity/professional/Certification.java similarity index 91% rename from src/main/java/com/solaria/persistence/domain/entity/Certification.java rename to src/main/java/com/solaria/persistence/domain/entity/professional/Certification.java index e5e0c44..5a2a9a6 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Certification.java +++ b/src/main/java/com/solaria/persistence/domain/entity/professional/Certification.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.professional; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/entity/CertificationRecord.java b/src/main/java/com/solaria/persistence/domain/entity/professional/CertificationRecord.java similarity index 90% rename from src/main/java/com/solaria/persistence/domain/entity/CertificationRecord.java rename to src/main/java/com/solaria/persistence/domain/entity/professional/CertificationRecord.java index 28c2c7f..4894a32 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/CertificationRecord.java +++ b/src/main/java/com/solaria/persistence/domain/entity/professional/CertificationRecord.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.professional; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/entity/Profession.java b/src/main/java/com/solaria/persistence/domain/entity/professional/Profession.java similarity index 89% rename from src/main/java/com/solaria/persistence/domain/entity/Profession.java rename to src/main/java/com/solaria/persistence/domain/entity/professional/Profession.java index b144554..68bc4b0 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Profession.java +++ b/src/main/java/com/solaria/persistence/domain/entity/professional/Profession.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.professional; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/entity/ProfessionalRegistration.java b/src/main/java/com/solaria/persistence/domain/entity/professional/ProfessionalRegistration.java similarity index 92% rename from src/main/java/com/solaria/persistence/domain/entity/ProfessionalRegistration.java rename to src/main/java/com/solaria/persistence/domain/entity/professional/ProfessionalRegistration.java index ca19c50..dc81d09 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/ProfessionalRegistration.java +++ b/src/main/java/com/solaria/persistence/domain/entity/professional/ProfessionalRegistration.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.professional; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/entity/ProfessionalReview.java b/src/main/java/com/solaria/persistence/domain/entity/professional/ProfessionalReview.java similarity index 86% rename from src/main/java/com/solaria/persistence/domain/entity/ProfessionalReview.java rename to src/main/java/com/solaria/persistence/domain/entity/professional/ProfessionalReview.java index 192d23e..f4d1b67 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/ProfessionalReview.java +++ b/src/main/java/com/solaria/persistence/domain/entity/professional/ProfessionalReview.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.professional; import jakarta.persistence.*; import lombok.*; @@ -6,6 +6,8 @@ import java.math.BigDecimal; import java.time.OffsetDateTime; import java.util.UUID; +import com.solaria.persistence.domain.entity.identity.User; +import com.solaria.persistence.domain.entity.execution.TechnicalService; @Entity diff --git a/src/main/java/com/solaria/persistence/domain/entity/Shift.java b/src/main/java/com/solaria/persistence/domain/entity/professional/Shift.java similarity index 85% rename from src/main/java/com/solaria/persistence/domain/entity/Shift.java rename to src/main/java/com/solaria/persistence/domain/entity/professional/Shift.java index 9f932e3..62bb876 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Shift.java +++ b/src/main/java/com/solaria/persistence/domain/entity/professional/Shift.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.professional; -import com.solaria.persistence.domain.enums.DayWeek; +import com.solaria.persistence.domain.enums.professional.DayWeek; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/entity/TechnicalCourse.java b/src/main/java/com/solaria/persistence/domain/entity/professional/TechnicalCourse.java similarity index 83% rename from src/main/java/com/solaria/persistence/domain/entity/TechnicalCourse.java rename to src/main/java/com/solaria/persistence/domain/entity/professional/TechnicalCourse.java index 79b87ef..3fb19fa 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/TechnicalCourse.java +++ b/src/main/java/com/solaria/persistence/domain/entity/professional/TechnicalCourse.java @@ -1,9 +1,10 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.professional; import jakarta.persistence.*; import lombok.*; import java.util.UUID; +import com.solaria.persistence.domain.entity.company.Company; @Entity @Table(name = "technical_course") diff --git a/src/main/java/com/solaria/persistence/domain/entity/Technician.java b/src/main/java/com/solaria/persistence/domain/entity/professional/Technician.java similarity index 82% rename from src/main/java/com/solaria/persistence/domain/entity/Technician.java rename to src/main/java/com/solaria/persistence/domain/entity/professional/Technician.java index 954c837..149114d 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Technician.java +++ b/src/main/java/com/solaria/persistence/domain/entity/professional/Technician.java @@ -1,9 +1,10 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.professional; import jakarta.persistence.*; import lombok.*; import java.util.UUID; +import com.solaria.persistence.domain.entity.identity.Person; @Entity @Table(name = "technician") diff --git a/src/main/java/com/solaria/persistence/domain/entity/TechnicianAffiliation.java b/src/main/java/com/solaria/persistence/domain/entity/professional/TechnicianAffiliation.java similarity index 78% rename from src/main/java/com/solaria/persistence/domain/entity/TechnicianAffiliation.java rename to src/main/java/com/solaria/persistence/domain/entity/professional/TechnicianAffiliation.java index d715b9e..f8f60dd 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/TechnicianAffiliation.java +++ b/src/main/java/com/solaria/persistence/domain/entity/professional/TechnicianAffiliation.java @@ -1,10 +1,11 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.professional; -import com.solaria.persistence.domain.enums.TechnicalAffiliationType; +import com.solaria.persistence.domain.enums.professional.TechnicalAffiliationType; import jakarta.persistence.*; import lombok.*; import java.util.UUID; +import com.solaria.persistence.domain.entity.company.Company; @Entity @Table(name = "technician_affiliation") diff --git a/src/main/java/com/solaria/persistence/domain/entity/Proposal.java b/src/main/java/com/solaria/persistence/domain/entity/proposal/Proposal.java similarity index 82% rename from src/main/java/com/solaria/persistence/domain/entity/Proposal.java rename to src/main/java/com/solaria/persistence/domain/entity/proposal/Proposal.java index 2c4b587..c167391 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Proposal.java +++ b/src/main/java/com/solaria/persistence/domain/entity/proposal/Proposal.java @@ -1,12 +1,13 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.proposal; -import com.solaria.persistence.domain.enums.ProposalStatus; +import com.solaria.persistence.domain.enums.proposal.ProposalStatus; import jakarta.persistence.*; import lombok.*; import java.math.BigDecimal; import java.time.OffsetDateTime; import java.util.UUID; +import com.solaria.persistence.domain.entity.execution.Requester; @Entity diff --git a/src/main/java/com/solaria/persistence/domain/entity/ProposalItem.java b/src/main/java/com/solaria/persistence/domain/entity/proposal/ProposalItem.java similarity index 87% rename from src/main/java/com/solaria/persistence/domain/entity/ProposalItem.java rename to src/main/java/com/solaria/persistence/domain/entity/proposal/ProposalItem.java index ea992cf..fcea831 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/ProposalItem.java +++ b/src/main/java/com/solaria/persistence/domain/entity/proposal/ProposalItem.java @@ -1,10 +1,11 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.proposal; import jakarta.persistence.*; import lombok.*; import java.math.BigDecimal; import java.util.UUID; +import com.solaria.persistence.domain.entity.catalog.Offer; @Entity @Table(name = "proposal_item") diff --git a/src/main/java/com/solaria/persistence/domain/entity/ProposalUnit.java b/src/main/java/com/solaria/persistence/domain/entity/proposal/ProposalUnit.java similarity index 85% rename from src/main/java/com/solaria/persistence/domain/entity/ProposalUnit.java rename to src/main/java/com/solaria/persistence/domain/entity/proposal/ProposalUnit.java index ec6c33b..3d7e8d8 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/ProposalUnit.java +++ b/src/main/java/com/solaria/persistence/domain/entity/proposal/ProposalUnit.java @@ -1,9 +1,10 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.proposal; import jakarta.persistence.*; import lombok.*; import java.util.UUID; +import com.solaria.persistence.domain.entity.unit.LocalUnit; @Entity @Table(name = "proposal_unit") diff --git a/src/main/java/com/solaria/persistence/domain/entity/Address.java b/src/main/java/com/solaria/persistence/domain/entity/shared/Address.java similarity index 93% rename from src/main/java/com/solaria/persistence/domain/entity/Address.java rename to src/main/java/com/solaria/persistence/domain/entity/shared/Address.java index 6f99176..b273e62 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Address.java +++ b/src/main/java/com/solaria/persistence/domain/entity/shared/Address.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.shared; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/entity/Contact.java b/src/main/java/com/solaria/persistence/domain/entity/shared/Contact.java similarity index 88% rename from src/main/java/com/solaria/persistence/domain/entity/Contact.java rename to src/main/java/com/solaria/persistence/domain/entity/shared/Contact.java index 7376f03..47b7424 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Contact.java +++ b/src/main/java/com/solaria/persistence/domain/entity/shared/Contact.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.shared; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/entity/FluxLog.java b/src/main/java/com/solaria/persistence/domain/entity/shared/FluxLog.java similarity index 83% rename from src/main/java/com/solaria/persistence/domain/entity/FluxLog.java rename to src/main/java/com/solaria/persistence/domain/entity/shared/FluxLog.java index d7e7f51..7a77edc 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/FluxLog.java +++ b/src/main/java/com/solaria/persistence/domain/entity/shared/FluxLog.java @@ -1,10 +1,11 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.shared; import jakarta.persistence.*; import lombok.*; import java.time.OffsetDateTime; import java.util.UUID; +import com.solaria.persistence.domain.entity.identity.User; @Entity @Table(name = "flux_log") diff --git a/src/main/java/com/solaria/persistence/domain/entity/Geolocalization.java b/src/main/java/com/solaria/persistence/domain/entity/shared/Geolocalization.java similarity index 95% rename from src/main/java/com/solaria/persistence/domain/entity/Geolocalization.java rename to src/main/java/com/solaria/persistence/domain/entity/shared/Geolocalization.java index ded9a0b..18cfdb9 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/Geolocalization.java +++ b/src/main/java/com/solaria/persistence/domain/entity/shared/Geolocalization.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.shared; import java.math.BigDecimal; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/domain/entity/EnergyBill.java b/src/main/java/com/solaria/persistence/domain/entity/unit/EnergyBill.java similarity index 93% rename from src/main/java/com/solaria/persistence/domain/entity/EnergyBill.java rename to src/main/java/com/solaria/persistence/domain/entity/unit/EnergyBill.java index 7a135eb..9592438 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/EnergyBill.java +++ b/src/main/java/com/solaria/persistence/domain/entity/unit/EnergyBill.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.unit; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/entity/LocalUnit.java b/src/main/java/com/solaria/persistence/domain/entity/unit/LocalUnit.java similarity index 74% rename from src/main/java/com/solaria/persistence/domain/entity/LocalUnit.java rename to src/main/java/com/solaria/persistence/domain/entity/unit/LocalUnit.java index 05ff1d3..acbfb49 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/LocalUnit.java +++ b/src/main/java/com/solaria/persistence/domain/entity/unit/LocalUnit.java @@ -1,10 +1,12 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.unit; -import com.solaria.persistence.domain.enums.LocationType; +import com.solaria.persistence.domain.enums.unit.LocationType; import jakarta.persistence.*; import lombok.*; import java.util.UUID; +import com.solaria.persistence.domain.entity.execution.Requester; +import com.solaria.persistence.domain.entity.shared.Address; @Entity @Table(name = "local_unit") diff --git a/src/main/java/com/solaria/persistence/domain/entity/LocalUnitPhoto.java b/src/main/java/com/solaria/persistence/domain/entity/unit/LocalUnitPhoto.java similarity index 92% rename from src/main/java/com/solaria/persistence/domain/entity/LocalUnitPhoto.java rename to src/main/java/com/solaria/persistence/domain/entity/unit/LocalUnitPhoto.java index 6c5f446..31a0114 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/LocalUnitPhoto.java +++ b/src/main/java/com/solaria/persistence/domain/entity/unit/LocalUnitPhoto.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.unit; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/entity/UnitSpecifications.java b/src/main/java/com/solaria/persistence/domain/entity/unit/UnitSpecifications.java similarity index 92% rename from src/main/java/com/solaria/persistence/domain/entity/UnitSpecifications.java rename to src/main/java/com/solaria/persistence/domain/entity/unit/UnitSpecifications.java index 4a66107..d17de4f 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/UnitSpecifications.java +++ b/src/main/java/com/solaria/persistence/domain/entity/unit/UnitSpecifications.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.entity; +package com.solaria.persistence.domain.entity.unit; import jakarta.persistence.*; import lombok.*; diff --git a/src/main/java/com/solaria/persistence/domain/enums/PhotoType.java b/src/main/java/com/solaria/persistence/domain/enums/PhotoType.java deleted file mode 100644 index 3452b92..0000000 --- a/src/main/java/com/solaria/persistence/domain/enums/PhotoType.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.solaria.persistence.domain.enums; - -public enum PhotoType { - PROFILE, - BANNER -} diff --git a/src/main/java/com/solaria/persistence/domain/enums/ModelStatus.java b/src/main/java/com/solaria/persistence/domain/enums/catalog/ModelStatus.java similarity index 58% rename from src/main/java/com/solaria/persistence/domain/enums/ModelStatus.java rename to src/main/java/com/solaria/persistence/domain/enums/catalog/ModelStatus.java index 383855c..29c03b4 100644 --- a/src/main/java/com/solaria/persistence/domain/enums/ModelStatus.java +++ b/src/main/java/com/solaria/persistence/domain/enums/catalog/ModelStatus.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.enums; +package com.solaria.persistence.domain.enums.catalog; public enum ModelStatus { APPROVED, diff --git a/src/main/java/com/solaria/persistence/domain/enums/PanelType.java b/src/main/java/com/solaria/persistence/domain/enums/catalog/PanelType.java similarity index 60% rename from src/main/java/com/solaria/persistence/domain/enums/PanelType.java rename to src/main/java/com/solaria/persistence/domain/enums/catalog/PanelType.java index 1c456f7..4de954c 100644 --- a/src/main/java/com/solaria/persistence/domain/enums/PanelType.java +++ b/src/main/java/com/solaria/persistence/domain/enums/catalog/PanelType.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.enums; +package com.solaria.persistence.domain.enums.catalog; public enum PanelType { MONOCRYSTALLINE, diff --git a/src/main/java/com/solaria/persistence/domain/enums/SupplierStatus.java b/src/main/java/com/solaria/persistence/domain/enums/catalog/SupplierStatus.java similarity index 58% rename from src/main/java/com/solaria/persistence/domain/enums/SupplierStatus.java rename to src/main/java/com/solaria/persistence/domain/enums/catalog/SupplierStatus.java index 4fdc9d9..f5cef20 100644 --- a/src/main/java/com/solaria/persistence/domain/enums/SupplierStatus.java +++ b/src/main/java/com/solaria/persistence/domain/enums/catalog/SupplierStatus.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.enums; +package com.solaria.persistence.domain.enums.catalog; public enum SupplierStatus { ACTIVE, diff --git a/src/main/java/com/solaria/persistence/domain/enums/TranslationStatus.java b/src/main/java/com/solaria/persistence/domain/enums/catalog/TranslationStatus.java similarity index 57% rename from src/main/java/com/solaria/persistence/domain/enums/TranslationStatus.java rename to src/main/java/com/solaria/persistence/domain/enums/catalog/TranslationStatus.java index 260d940..6f0ce68 100644 --- a/src/main/java/com/solaria/persistence/domain/enums/TranslationStatus.java +++ b/src/main/java/com/solaria/persistence/domain/enums/catalog/TranslationStatus.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.enums; +package com.solaria.persistence.domain.enums.catalog; public enum TranslationStatus { PENDING, diff --git a/src/main/java/com/solaria/persistence/domain/enums/BillingStatus.java b/src/main/java/com/solaria/persistence/domain/enums/company/BillingStatus.java similarity index 60% rename from src/main/java/com/solaria/persistence/domain/enums/BillingStatus.java rename to src/main/java/com/solaria/persistence/domain/enums/company/BillingStatus.java index 99fd8d4..faea138 100644 --- a/src/main/java/com/solaria/persistence/domain/enums/BillingStatus.java +++ b/src/main/java/com/solaria/persistence/domain/enums/company/BillingStatus.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.enums; +package com.solaria.persistence.domain.enums.company; public enum BillingStatus { PENDING, diff --git a/src/main/java/com/solaria/persistence/domain/enums/CompanyStatus.java b/src/main/java/com/solaria/persistence/domain/enums/company/CompanyStatus.java similarity index 59% rename from src/main/java/com/solaria/persistence/domain/enums/CompanyStatus.java rename to src/main/java/com/solaria/persistence/domain/enums/company/CompanyStatus.java index 4d0a85f..c7e2a48 100644 --- a/src/main/java/com/solaria/persistence/domain/enums/CompanyStatus.java +++ b/src/main/java/com/solaria/persistence/domain/enums/company/CompanyStatus.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.enums; +package com.solaria.persistence.domain.enums.company; public enum CompanyStatus { diff --git a/src/main/java/com/solaria/persistence/domain/enums/PaymentMethod.java b/src/main/java/com/solaria/persistence/domain/enums/company/PaymentMethod.java similarity index 60% rename from src/main/java/com/solaria/persistence/domain/enums/PaymentMethod.java rename to src/main/java/com/solaria/persistence/domain/enums/company/PaymentMethod.java index 8155968..35c7d3d 100644 --- a/src/main/java/com/solaria/persistence/domain/enums/PaymentMethod.java +++ b/src/main/java/com/solaria/persistence/domain/enums/company/PaymentMethod.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.enums; +package com.solaria.persistence.domain.enums.company; public enum PaymentMethod { PIX, diff --git a/src/main/java/com/solaria/persistence/domain/enums/PlanCycle.java b/src/main/java/com/solaria/persistence/domain/enums/company/PlanCycle.java similarity index 55% rename from src/main/java/com/solaria/persistence/domain/enums/PlanCycle.java rename to src/main/java/com/solaria/persistence/domain/enums/company/PlanCycle.java index d2ca7db..81add9b 100644 --- a/src/main/java/com/solaria/persistence/domain/enums/PlanCycle.java +++ b/src/main/java/com/solaria/persistence/domain/enums/company/PlanCycle.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.enums; +package com.solaria.persistence.domain.enums.company; public enum PlanCycle { MONTHLY, diff --git a/src/main/java/com/solaria/persistence/domain/enums/SubscriptionStatus.java b/src/main/java/com/solaria/persistence/domain/enums/company/SubscriptionStatus.java similarity index 57% rename from src/main/java/com/solaria/persistence/domain/enums/SubscriptionStatus.java rename to src/main/java/com/solaria/persistence/domain/enums/company/SubscriptionStatus.java index 868833a..d0d9273 100644 --- a/src/main/java/com/solaria/persistence/domain/enums/SubscriptionStatus.java +++ b/src/main/java/com/solaria/persistence/domain/enums/company/SubscriptionStatus.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.enums; +package com.solaria.persistence.domain.enums.company; public enum SubscriptionStatus { PAID, diff --git a/src/main/java/com/solaria/persistence/domain/enums/ServiceStatus.java b/src/main/java/com/solaria/persistence/domain/enums/execution/ServiceStatus.java similarity index 60% rename from src/main/java/com/solaria/persistence/domain/enums/ServiceStatus.java rename to src/main/java/com/solaria/persistence/domain/enums/execution/ServiceStatus.java index 081425c..4a6ec2f 100644 --- a/src/main/java/com/solaria/persistence/domain/enums/ServiceStatus.java +++ b/src/main/java/com/solaria/persistence/domain/enums/execution/ServiceStatus.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.enums; +package com.solaria.persistence.domain.enums.execution; public enum ServiceStatus { OPEN, diff --git a/src/main/java/com/solaria/persistence/domain/enums/DayWeek.java b/src/main/java/com/solaria/persistence/domain/enums/professional/DayWeek.java similarity index 66% rename from src/main/java/com/solaria/persistence/domain/enums/DayWeek.java rename to src/main/java/com/solaria/persistence/domain/enums/professional/DayWeek.java index cc8122b..2bc1fd0 100644 --- a/src/main/java/com/solaria/persistence/domain/enums/DayWeek.java +++ b/src/main/java/com/solaria/persistence/domain/enums/professional/DayWeek.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.enums; +package com.solaria.persistence.domain.enums.professional; public enum DayWeek { MONDAY, diff --git a/src/main/java/com/solaria/persistence/domain/enums/TechnicalAffiliationType.java b/src/main/java/com/solaria/persistence/domain/enums/professional/TechnicalAffiliationType.java similarity index 59% rename from src/main/java/com/solaria/persistence/domain/enums/TechnicalAffiliationType.java rename to src/main/java/com/solaria/persistence/domain/enums/professional/TechnicalAffiliationType.java index 050e1ea..000dbc4 100644 --- a/src/main/java/com/solaria/persistence/domain/enums/TechnicalAffiliationType.java +++ b/src/main/java/com/solaria/persistence/domain/enums/professional/TechnicalAffiliationType.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.enums; +package com.solaria.persistence.domain.enums.professional; public enum TechnicalAffiliationType { INDEPENDENT, diff --git a/src/main/java/com/solaria/persistence/domain/enums/ProposalStatus.java b/src/main/java/com/solaria/persistence/domain/enums/proposal/ProposalStatus.java similarity index 68% rename from src/main/java/com/solaria/persistence/domain/enums/ProposalStatus.java rename to src/main/java/com/solaria/persistence/domain/enums/proposal/ProposalStatus.java index 9519dcd..71e1650 100644 --- a/src/main/java/com/solaria/persistence/domain/enums/ProposalStatus.java +++ b/src/main/java/com/solaria/persistence/domain/enums/proposal/ProposalStatus.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.enums; +package com.solaria.persistence.domain.enums.proposal; public enum ProposalStatus { AWAITING_SUPPLIER, diff --git a/src/main/java/com/solaria/persistence/domain/enums/shared/PhotoType.java b/src/main/java/com/solaria/persistence/domain/enums/shared/PhotoType.java new file mode 100644 index 0000000..08199bf --- /dev/null +++ b/src/main/java/com/solaria/persistence/domain/enums/shared/PhotoType.java @@ -0,0 +1,6 @@ +package com.solaria.persistence.domain.enums.shared; + +public enum PhotoType { + PROFILE, + BANNER +} diff --git a/src/main/java/com/solaria/persistence/domain/enums/LocationType.java b/src/main/java/com/solaria/persistence/domain/enums/unit/LocationType.java similarity index 56% rename from src/main/java/com/solaria/persistence/domain/enums/LocationType.java rename to src/main/java/com/solaria/persistence/domain/enums/unit/LocationType.java index ad3ba60..ad1ccd4 100644 --- a/src/main/java/com/solaria/persistence/domain/enums/LocationType.java +++ b/src/main/java/com/solaria/persistence/domain/enums/unit/LocationType.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.domain.enums; +package com.solaria.persistence.domain.enums.unit; public enum LocationType { BUILDING, diff --git a/src/main/java/com/solaria/persistence/dto/patch/UpdateQuantityDTO.java b/src/main/java/com/solaria/persistence/dto/patch/catalog/UpdateQuantityDTO.java similarity index 87% rename from src/main/java/com/solaria/persistence/dto/patch/UpdateQuantityDTO.java rename to src/main/java/com/solaria/persistence/dto/patch/catalog/UpdateQuantityDTO.java index f376950..839d0c6 100644 --- a/src/main/java/com/solaria/persistence/dto/patch/UpdateQuantityDTO.java +++ b/src/main/java/com/solaria/persistence/dto/patch/catalog/UpdateQuantityDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.patch; +package com.solaria.persistence.dto.patch.catalog; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.PositiveOrZero; diff --git a/src/main/java/com/solaria/persistence/dto/patch/UpdateBusinessContactIdDTO.java b/src/main/java/com/solaria/persistence/dto/patch/company/UpdateBusinessContactIdDTO.java similarity index 84% rename from src/main/java/com/solaria/persistence/dto/patch/UpdateBusinessContactIdDTO.java rename to src/main/java/com/solaria/persistence/dto/patch/company/UpdateBusinessContactIdDTO.java index b6a7410..e035384 100644 --- a/src/main/java/com/solaria/persistence/dto/patch/UpdateBusinessContactIdDTO.java +++ b/src/main/java/com/solaria/persistence/dto/patch/company/UpdateBusinessContactIdDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.patch; +package com.solaria.persistence.dto.patch.company; import jakarta.validation.constraints.NotNull; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/patch/UpdateCompanyAddressIdDTO.java b/src/main/java/com/solaria/persistence/dto/patch/company/UpdateCompanyAddressIdDTO.java similarity index 83% rename from src/main/java/com/solaria/persistence/dto/patch/UpdateCompanyAddressIdDTO.java rename to src/main/java/com/solaria/persistence/dto/patch/company/UpdateCompanyAddressIdDTO.java index 3060069..8210432 100644 --- a/src/main/java/com/solaria/persistence/dto/patch/UpdateCompanyAddressIdDTO.java +++ b/src/main/java/com/solaria/persistence/dto/patch/company/UpdateCompanyAddressIdDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.patch; +package com.solaria.persistence.dto.patch.company; import jakarta.validation.constraints.NotNull; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/patch/ServiceAcceptanceDTO.java b/src/main/java/com/solaria/persistence/dto/patch/execution/ServiceAcceptanceDTO.java similarity index 83% rename from src/main/java/com/solaria/persistence/dto/patch/ServiceAcceptanceDTO.java rename to src/main/java/com/solaria/persistence/dto/patch/execution/ServiceAcceptanceDTO.java index f39db8c..d7c246f 100644 --- a/src/main/java/com/solaria/persistence/dto/patch/ServiceAcceptanceDTO.java +++ b/src/main/java/com/solaria/persistence/dto/patch/execution/ServiceAcceptanceDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.patch; +package com.solaria.persistence.dto.patch.execution; import jakarta.validation.constraints.NotNull; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/patch/ServiceScheduleDTO.java b/src/main/java/com/solaria/persistence/dto/patch/execution/ServiceScheduleDTO.java similarity index 84% rename from src/main/java/com/solaria/persistence/dto/patch/ServiceScheduleDTO.java rename to src/main/java/com/solaria/persistence/dto/patch/execution/ServiceScheduleDTO.java index 1879672..717ae8a 100644 --- a/src/main/java/com/solaria/persistence/dto/patch/ServiceScheduleDTO.java +++ b/src/main/java/com/solaria/persistence/dto/patch/execution/ServiceScheduleDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.patch; +package com.solaria.persistence.dto.patch.execution; import jakarta.validation.constraints.NotNull; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/patch/UpdateFunctionDTO.java b/src/main/java/com/solaria/persistence/dto/patch/execution/UpdateFunctionDTO.java similarity index 82% rename from src/main/java/com/solaria/persistence/dto/patch/UpdateFunctionDTO.java rename to src/main/java/com/solaria/persistence/dto/patch/execution/UpdateFunctionDTO.java index a73bd35..17308d1 100644 --- a/src/main/java/com/solaria/persistence/dto/patch/UpdateFunctionDTO.java +++ b/src/main/java/com/solaria/persistence/dto/patch/execution/UpdateFunctionDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.patch; +package com.solaria.persistence.dto.patch.execution; import jakarta.validation.constraints.NotBlank; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/patch/UpdatePurposeDTO.java b/src/main/java/com/solaria/persistence/dto/patch/execution/UpdatePurposeDTO.java similarity index 81% rename from src/main/java/com/solaria/persistence/dto/patch/UpdatePurposeDTO.java rename to src/main/java/com/solaria/persistence/dto/patch/execution/UpdatePurposeDTO.java index 2a70ac3..4831b82 100644 --- a/src/main/java/com/solaria/persistence/dto/patch/UpdatePurposeDTO.java +++ b/src/main/java/com/solaria/persistence/dto/patch/execution/UpdatePurposeDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.patch; +package com.solaria.persistence.dto.patch.execution; import jakarta.validation.constraints.NotBlank; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/patch/UpdatePositionDTO.java b/src/main/java/com/solaria/persistence/dto/patch/identity/UpdatePositionDTO.java similarity index 82% rename from src/main/java/com/solaria/persistence/dto/patch/UpdatePositionDTO.java rename to src/main/java/com/solaria/persistence/dto/patch/identity/UpdatePositionDTO.java index 0fa19ae..acaa8f2 100644 --- a/src/main/java/com/solaria/persistence/dto/patch/UpdatePositionDTO.java +++ b/src/main/java/com/solaria/persistence/dto/patch/identity/UpdatePositionDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.patch; +package com.solaria.persistence.dto.patch.identity; import jakarta.validation.constraints.NotNull; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/patch/UpdateActiveDTO.java b/src/main/java/com/solaria/persistence/dto/patch/professional/UpdateActiveDTO.java similarity index 79% rename from src/main/java/com/solaria/persistence/dto/patch/UpdateActiveDTO.java rename to src/main/java/com/solaria/persistence/dto/patch/professional/UpdateActiveDTO.java index 5c4a76c..ed6a070 100644 --- a/src/main/java/com/solaria/persistence/dto/patch/UpdateActiveDTO.java +++ b/src/main/java/com/solaria/persistence/dto/patch/professional/UpdateActiveDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.patch; +package com.solaria.persistence.dto.patch.professional; import jakarta.validation.constraints.NotNull; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/patch/UpdateTypeDTO.java b/src/main/java/com/solaria/persistence/dto/patch/professional/UpdateTypeDTO.java similarity index 64% rename from src/main/java/com/solaria/persistence/dto/patch/UpdateTypeDTO.java rename to src/main/java/com/solaria/persistence/dto/patch/professional/UpdateTypeDTO.java index 306ca84..d0f0634 100644 --- a/src/main/java/com/solaria/persistence/dto/patch/UpdateTypeDTO.java +++ b/src/main/java/com/solaria/persistence/dto/patch/professional/UpdateTypeDTO.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.dto.patch; +package com.solaria.persistence.dto.patch.professional; -import com.solaria.persistence.domain.enums.TechnicalAffiliationType; +import com.solaria.persistence.domain.enums.professional.TechnicalAffiliationType; import jakarta.validation.constraints.NotNull; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/patch/UpdateNotesDTO.java b/src/main/java/com/solaria/persistence/dto/patch/proposal/UpdateNotesDTO.java similarity index 82% rename from src/main/java/com/solaria/persistence/dto/patch/UpdateNotesDTO.java rename to src/main/java/com/solaria/persistence/dto/patch/proposal/UpdateNotesDTO.java index d4c9981..151b61f 100644 --- a/src/main/java/com/solaria/persistence/dto/patch/UpdateNotesDTO.java +++ b/src/main/java/com/solaria/persistence/dto/patch/proposal/UpdateNotesDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.patch; +package com.solaria.persistence.dto.patch.proposal; import jakarta.validation.constraints.Size; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/patch/UpdateLocalUnitAddressIdDTO.java b/src/main/java/com/solaria/persistence/dto/patch/unit/UpdateLocalUnitAddressIdDTO.java similarity index 84% rename from src/main/java/com/solaria/persistence/dto/patch/UpdateLocalUnitAddressIdDTO.java rename to src/main/java/com/solaria/persistence/dto/patch/unit/UpdateLocalUnitAddressIdDTO.java index 2757443..a9dc590 100644 --- a/src/main/java/com/solaria/persistence/dto/patch/UpdateLocalUnitAddressIdDTO.java +++ b/src/main/java/com/solaria/persistence/dto/patch/unit/UpdateLocalUnitAddressIdDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.patch; +package com.solaria.persistence.dto.patch.unit; import jakarta.validation.constraints.NotNull; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/request/ServiceTokenMintRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/auth/ServiceTokenMintRequestDTO.java similarity index 83% rename from src/main/java/com/solaria/persistence/dto/request/ServiceTokenMintRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/auth/ServiceTokenMintRequestDTO.java index 74e93c9..159d5c5 100644 --- a/src/main/java/com/solaria/persistence/dto/request/ServiceTokenMintRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/auth/ServiceTokenMintRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.auth; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/com/solaria/persistence/dto/request/ServiceTokenRefreshRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/auth/ServiceTokenRefreshRequestDTO.java similarity index 83% rename from src/main/java/com/solaria/persistence/dto/request/ServiceTokenRefreshRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/auth/ServiceTokenRefreshRequestDTO.java index 224e22b..a8c1ad5 100644 --- a/src/main/java/com/solaria/persistence/dto/request/ServiceTokenRefreshRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/auth/ServiceTokenRefreshRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.auth; import jakarta.validation.constraints.NotBlank; diff --git a/src/main/java/com/solaria/persistence/dto/request/InventoryRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/catalog/InventoryRequestDTO.java similarity index 91% rename from src/main/java/com/solaria/persistence/dto/request/InventoryRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/catalog/InventoryRequestDTO.java index d3f5f3d..363da6c 100644 --- a/src/main/java/com/solaria/persistence/dto/request/InventoryRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/catalog/InventoryRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.catalog; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.PositiveOrZero; diff --git a/src/main/java/com/solaria/persistence/dto/request/ModelRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/catalog/ModelRequestDTO.java similarity index 88% rename from src/main/java/com/solaria/persistence/dto/request/ModelRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/catalog/ModelRequestDTO.java index a70bae7..b5e2c49 100644 --- a/src/main/java/com/solaria/persistence/dto/request/ModelRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/catalog/ModelRequestDTO.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.catalog; -import com.solaria.persistence.domain.enums.PanelType; +import com.solaria.persistence.domain.enums.catalog.PanelType; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; diff --git a/src/main/java/com/solaria/persistence/dto/request/OfferRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/catalog/OfferRequestDTO.java similarity index 96% rename from src/main/java/com/solaria/persistence/dto/request/OfferRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/catalog/OfferRequestDTO.java index ae7d487..dd76819 100644 --- a/src/main/java/com/solaria/persistence/dto/request/OfferRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/catalog/OfferRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.catalog; import jakarta.validation.constraints.DecimalMax; import jakarta.validation.constraints.DecimalMin; diff --git a/src/main/java/com/solaria/persistence/dto/request/SupplierRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/catalog/SupplierRequestDTO.java similarity index 84% rename from src/main/java/com/solaria/persistence/dto/request/SupplierRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/catalog/SupplierRequestDTO.java index 31bfeac..58faad5 100644 --- a/src/main/java/com/solaria/persistence/dto/request/SupplierRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/catalog/SupplierRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.catalog; import jakarta.validation.constraints.NotNull; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/request/SupplierSearchFilterDTO.java b/src/main/java/com/solaria/persistence/dto/request/catalog/SupplierSearchFilterDTO.java similarity index 94% rename from src/main/java/com/solaria/persistence/dto/request/SupplierSearchFilterDTO.java rename to src/main/java/com/solaria/persistence/dto/request/catalog/SupplierSearchFilterDTO.java index b651437..30f2ba7 100644 --- a/src/main/java/com/solaria/persistence/dto/request/SupplierSearchFilterDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/catalog/SupplierSearchFilterDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.catalog; import jakarta.validation.constraints.Max; import jakarta.validation.constraints.NotNull; diff --git a/src/main/java/com/solaria/persistence/dto/request/BusinessContactRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/company/BusinessContactRequestDTO.java similarity index 93% rename from src/main/java/com/solaria/persistence/dto/request/BusinessContactRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/company/BusinessContactRequestDTO.java index 61ba2a1..3b4dfb2 100644 --- a/src/main/java/com/solaria/persistence/dto/request/BusinessContactRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/company/BusinessContactRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.company; import com.solaria.persistence.util.RegexValidator; diff --git a/src/main/java/com/solaria/persistence/dto/request/ChargeRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/company/ChargeRequestDTO.java similarity index 87% rename from src/main/java/com/solaria/persistence/dto/request/ChargeRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/company/ChargeRequestDTO.java index 6041d41..74b1872 100644 --- a/src/main/java/com/solaria/persistence/dto/request/ChargeRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/company/ChargeRequestDTO.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.company; -import com.solaria.persistence.domain.enums.PaymentMethod; +import com.solaria.persistence.domain.enums.company.PaymentMethod; import jakarta.validation.constraints.FutureOrPresent; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Positive; diff --git a/src/main/java/com/solaria/persistence/dto/request/CompanyPlansRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/company/CompanyPlansRequestDTO.java similarity index 80% rename from src/main/java/com/solaria/persistence/dto/request/CompanyPlansRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/company/CompanyPlansRequestDTO.java index 418ae46..42e9da7 100644 --- a/src/main/java/com/solaria/persistence/dto/request/CompanyPlansRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/company/CompanyPlansRequestDTO.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.company; -import com.solaria.persistence.domain.enums.PlanCycle; +import com.solaria.persistence.domain.enums.company.PlanCycle; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/request/CompanyPositionsRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/company/CompanyPositionsRequestDTO.java similarity index 86% rename from src/main/java/com/solaria/persistence/dto/request/CompanyPositionsRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/company/CompanyPositionsRequestDTO.java index a46620c..3b35c9b 100644 --- a/src/main/java/com/solaria/persistence/dto/request/CompanyPositionsRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/company/CompanyPositionsRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.company; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/dto/request/CompanyRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/company/CompanyRequestDTO.java similarity index 93% rename from src/main/java/com/solaria/persistence/dto/request/CompanyRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/company/CompanyRequestDTO.java index c684742..e0e119c 100644 --- a/src/main/java/com/solaria/persistence/dto/request/CompanyRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/company/CompanyRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.company; import com.solaria.persistence.util.RegexValidator; diff --git a/src/main/java/com/solaria/persistence/dto/request/SubscriptionRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/company/SubscriptionRequestDTO.java similarity index 89% rename from src/main/java/com/solaria/persistence/dto/request/SubscriptionRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/company/SubscriptionRequestDTO.java index 779f077..3c799f0 100644 --- a/src/main/java/com/solaria/persistence/dto/request/SubscriptionRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/company/SubscriptionRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.company; import jakarta.validation.constraints.NotNull; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/request/RequesterRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/execution/RequesterRequestDTO.java similarity index 84% rename from src/main/java/com/solaria/persistence/dto/request/RequesterRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/execution/RequesterRequestDTO.java index 6f97b42..11d0370 100644 --- a/src/main/java/com/solaria/persistence/dto/request/RequesterRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/execution/RequesterRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.execution; import jakarta.validation.constraints.NotNull; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/request/ServiceContractRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/execution/ServiceContractRequestDTO.java similarity index 91% rename from src/main/java/com/solaria/persistence/dto/request/ServiceContractRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/execution/ServiceContractRequestDTO.java index 4df3853..562303c 100644 --- a/src/main/java/com/solaria/persistence/dto/request/ServiceContractRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/execution/ServiceContractRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.execution; import jakarta.validation.constraints.FutureOrPresent; import jakarta.validation.constraints.NotNull; diff --git a/src/main/java/com/solaria/persistence/dto/request/ServiceExecutorRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/execution/ServiceExecutorRequestDTO.java similarity index 90% rename from src/main/java/com/solaria/persistence/dto/request/ServiceExecutorRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/execution/ServiceExecutorRequestDTO.java index 162ea3f..fce216a 100644 --- a/src/main/java/com/solaria/persistence/dto/request/ServiceExecutorRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/execution/ServiceExecutorRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.execution; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/dto/request/TechnicalProjectRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/execution/TechnicalProjectRequestDTO.java similarity index 74% rename from src/main/java/com/solaria/persistence/dto/request/TechnicalProjectRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/execution/TechnicalProjectRequestDTO.java index a71d111..a3a969c 100644 --- a/src/main/java/com/solaria/persistence/dto/request/TechnicalProjectRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/execution/TechnicalProjectRequestDTO.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.execution; -import com.solaria.persistence.domain.enums.ServiceStatus; +import com.solaria.persistence.domain.enums.execution.ServiceStatus; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/request/TechnicalServiceRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/execution/TechnicalServiceRequestDTO.java similarity index 90% rename from src/main/java/com/solaria/persistence/dto/request/TechnicalServiceRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/execution/TechnicalServiceRequestDTO.java index e60a29a..65db348 100644 --- a/src/main/java/com/solaria/persistence/dto/request/TechnicalServiceRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/execution/TechnicalServiceRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.execution; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; diff --git a/src/main/java/com/solaria/persistence/dto/request/InternalUserProvisionRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/identity/InternalUserProvisionRequestDTO.java similarity index 86% rename from src/main/java/com/solaria/persistence/dto/request/InternalUserProvisionRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/identity/InternalUserProvisionRequestDTO.java index a45e550..2de7c05 100644 --- a/src/main/java/com/solaria/persistence/dto/request/InternalUserProvisionRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/identity/InternalUserProvisionRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.identity; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/dto/request/PermissionRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/identity/PermissionRequestDTO.java similarity index 90% rename from src/main/java/com/solaria/persistence/dto/request/PermissionRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/identity/PermissionRequestDTO.java index 4262b25..9b23d85 100644 --- a/src/main/java/com/solaria/persistence/dto/request/PermissionRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/identity/PermissionRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.identity; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; diff --git a/src/main/java/com/solaria/persistence/dto/request/PersonRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/identity/PersonRequestDTO.java similarity index 94% rename from src/main/java/com/solaria/persistence/dto/request/PersonRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/identity/PersonRequestDTO.java index 028daff..4c3f207 100644 --- a/src/main/java/com/solaria/persistence/dto/request/PersonRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/identity/PersonRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.identity; import com.solaria.persistence.util.RegexValidator; diff --git a/src/main/java/com/solaria/persistence/dto/request/PositionPermissionRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/identity/PositionPermissionRequestDTO.java similarity index 86% rename from src/main/java/com/solaria/persistence/dto/request/PositionPermissionRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/identity/PositionPermissionRequestDTO.java index 53fb5be..9851ac7 100644 --- a/src/main/java/com/solaria/persistence/dto/request/PositionPermissionRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/identity/PositionPermissionRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.identity; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/dto/request/PositionRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/identity/PositionRequestDTO.java similarity index 87% rename from src/main/java/com/solaria/persistence/dto/request/PositionRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/identity/PositionRequestDTO.java index 65fcba4..01e7813 100644 --- a/src/main/java/com/solaria/persistence/dto/request/PositionRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/identity/PositionRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.identity; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; diff --git a/src/main/java/com/solaria/persistence/dto/request/UserCompanyRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/identity/UserCompanyRequestDTO.java similarity index 88% rename from src/main/java/com/solaria/persistence/dto/request/UserCompanyRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/identity/UserCompanyRequestDTO.java index 9c865e5..895eec9 100644 --- a/src/main/java/com/solaria/persistence/dto/request/UserCompanyRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/identity/UserCompanyRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.identity; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/dto/request/UserRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/identity/UserRequestDTO.java similarity index 89% rename from src/main/java/com/solaria/persistence/dto/request/UserRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/identity/UserRequestDTO.java index 5bee4c6..76f3cde 100644 --- a/src/main/java/com/solaria/persistence/dto/request/UserRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/identity/UserRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.identity; import com.solaria.persistence.util.RegexValidator; diff --git a/src/main/java/com/solaria/persistence/dto/request/CertificationRecordRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/professional/CertificationRecordRequestDTO.java similarity index 78% rename from src/main/java/com/solaria/persistence/dto/request/CertificationRecordRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/professional/CertificationRecordRequestDTO.java index f15789f..66a6871 100644 --- a/src/main/java/com/solaria/persistence/dto/request/CertificationRecordRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/professional/CertificationRecordRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.professional; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/request/CertificationRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/professional/CertificationRequestDTO.java similarity index 85% rename from src/main/java/com/solaria/persistence/dto/request/CertificationRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/professional/CertificationRequestDTO.java index 7cd973f..0b5fd38 100644 --- a/src/main/java/com/solaria/persistence/dto/request/CertificationRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/professional/CertificationRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.professional; import jakarta.validation.constraints.Size; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/request/ProfessionRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/professional/ProfessionRequestDTO.java similarity index 80% rename from src/main/java/com/solaria/persistence/dto/request/ProfessionRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/professional/ProfessionRequestDTO.java index 228c3cd..7f9d5f4 100644 --- a/src/main/java/com/solaria/persistence/dto/request/ProfessionRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/professional/ProfessionRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.professional; import jakarta.validation.constraints.Size; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/request/ProfessionalRegistrationRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/professional/ProfessionalRegistrationRequestDTO.java similarity index 87% rename from src/main/java/com/solaria/persistence/dto/request/ProfessionalRegistrationRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/professional/ProfessionalRegistrationRequestDTO.java index 79b0f44..c42ea53 100644 --- a/src/main/java/com/solaria/persistence/dto/request/ProfessionalRegistrationRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/professional/ProfessionalRegistrationRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.professional; import jakarta.validation.constraints.Size; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/request/ProfessionalReviewRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/professional/ProfessionalReviewRequestDTO.java similarity index 94% rename from src/main/java/com/solaria/persistence/dto/request/ProfessionalReviewRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/professional/ProfessionalReviewRequestDTO.java index 46f9424..66fa237 100644 --- a/src/main/java/com/solaria/persistence/dto/request/ProfessionalReviewRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/professional/ProfessionalReviewRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.professional; import jakarta.validation.constraints.DecimalMax; import jakarta.validation.constraints.DecimalMin; diff --git a/src/main/java/com/solaria/persistence/dto/request/ShiftRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/professional/ShiftRequestDTO.java similarity index 82% rename from src/main/java/com/solaria/persistence/dto/request/ShiftRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/professional/ShiftRequestDTO.java index d8423e7..2137727 100644 --- a/src/main/java/com/solaria/persistence/dto/request/ShiftRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/professional/ShiftRequestDTO.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.professional; -import com.solaria.persistence.domain.enums.DayWeek; +import com.solaria.persistence.domain.enums.professional.DayWeek; import jakarta.validation.constraints.NotNull; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/request/TechnicalCourseRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/professional/TechnicalCourseRequestDTO.java similarity index 84% rename from src/main/java/com/solaria/persistence/dto/request/TechnicalCourseRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/professional/TechnicalCourseRequestDTO.java index e90d5d9..5630e64 100644 --- a/src/main/java/com/solaria/persistence/dto/request/TechnicalCourseRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/professional/TechnicalCourseRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.professional; import jakarta.validation.constraints.Size; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/request/TechnicianAffiliationRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/professional/TechnicianAffiliationRequestDTO.java similarity index 74% rename from src/main/java/com/solaria/persistence/dto/request/TechnicianAffiliationRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/professional/TechnicianAffiliationRequestDTO.java index 505748a..1217dda 100644 --- a/src/main/java/com/solaria/persistence/dto/request/TechnicianAffiliationRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/professional/TechnicianAffiliationRequestDTO.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.professional; -import com.solaria.persistence.domain.enums.TechnicalAffiliationType; +import com.solaria.persistence.domain.enums.professional.TechnicalAffiliationType; import jakarta.validation.constraints.NotNull; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/request/TechnicianRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/professional/TechnicianRequestDTO.java similarity index 86% rename from src/main/java/com/solaria/persistence/dto/request/TechnicianRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/professional/TechnicianRequestDTO.java index d0ad3ee..7dbc476 100644 --- a/src/main/java/com/solaria/persistence/dto/request/TechnicianRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/professional/TechnicianRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.professional; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; diff --git a/src/main/java/com/solaria/persistence/dto/request/ProposalItemRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/proposal/ProposalItemRequestDTO.java similarity index 94% rename from src/main/java/com/solaria/persistence/dto/request/ProposalItemRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/proposal/ProposalItemRequestDTO.java index d3dd449..9914a94 100644 --- a/src/main/java/com/solaria/persistence/dto/request/ProposalItemRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/proposal/ProposalItemRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.proposal; import jakarta.validation.constraints.DecimalMax; import jakarta.validation.constraints.NotNull; diff --git a/src/main/java/com/solaria/persistence/dto/request/ProposalRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/proposal/ProposalRequestDTO.java similarity index 84% rename from src/main/java/com/solaria/persistence/dto/request/ProposalRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/proposal/ProposalRequestDTO.java index 6e78f46..6a6ff14 100644 --- a/src/main/java/com/solaria/persistence/dto/request/ProposalRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/proposal/ProposalRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.proposal; import jakarta.validation.constraints.NotNull; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/request/ProposalUnitRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/proposal/ProposalUnitRequestDTO.java similarity index 91% rename from src/main/java/com/solaria/persistence/dto/request/ProposalUnitRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/proposal/ProposalUnitRequestDTO.java index 635b41f..880a5f3 100644 --- a/src/main/java/com/solaria/persistence/dto/request/ProposalUnitRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/proposal/ProposalUnitRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.proposal; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Positive; diff --git a/src/main/java/com/solaria/persistence/dto/request/AddressRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/shared/AddressRequestDTO.java similarity index 93% rename from src/main/java/com/solaria/persistence/dto/request/AddressRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/shared/AddressRequestDTO.java index aea6d64..e765f33 100644 --- a/src/main/java/com/solaria/persistence/dto/request/AddressRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/shared/AddressRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.shared; import com.solaria.persistence.util.RegexValidator; diff --git a/src/main/java/com/solaria/persistence/dto/request/ContactRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/shared/ContactRequestDTO.java similarity index 90% rename from src/main/java/com/solaria/persistence/dto/request/ContactRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/shared/ContactRequestDTO.java index 6a6dbb5..9987e07 100644 --- a/src/main/java/com/solaria/persistence/dto/request/ContactRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/shared/ContactRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.shared; import com.solaria.persistence.util.RegexValidator; diff --git a/src/main/java/com/solaria/persistence/dto/request/FluxLogRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/shared/FluxLogRequestDTO.java similarity index 87% rename from src/main/java/com/solaria/persistence/dto/request/FluxLogRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/shared/FluxLogRequestDTO.java index e90792a..f052419 100644 --- a/src/main/java/com/solaria/persistence/dto/request/FluxLogRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/shared/FluxLogRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.shared; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; diff --git a/src/main/java/com/solaria/persistence/dto/request/GeolocalizationRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/shared/GeolocalizationRequestDTO.java similarity index 94% rename from src/main/java/com/solaria/persistence/dto/request/GeolocalizationRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/shared/GeolocalizationRequestDTO.java index 6391b2d..ffea240 100644 --- a/src/main/java/com/solaria/persistence/dto/request/GeolocalizationRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/shared/GeolocalizationRequestDTO.java @@ -1,5 +1,5 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.shared; import java.math.BigDecimal; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/dto/request/EnergyBillRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/unit/EnergyBillRequestDTO.java similarity index 93% rename from src/main/java/com/solaria/persistence/dto/request/EnergyBillRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/unit/EnergyBillRequestDTO.java index ce92b0f..0be008a 100644 --- a/src/main/java/com/solaria/persistence/dto/request/EnergyBillRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/unit/EnergyBillRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.unit; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Positive; diff --git a/src/main/java/com/solaria/persistence/dto/request/LocalUnitRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/unit/LocalUnitRequestDTO.java similarity index 79% rename from src/main/java/com/solaria/persistence/dto/request/LocalUnitRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/unit/LocalUnitRequestDTO.java index abcbd42..c73e140 100644 --- a/src/main/java/com/solaria/persistence/dto/request/LocalUnitRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/unit/LocalUnitRequestDTO.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.unit; -import com.solaria.persistence.domain.enums.LocationType; +import com.solaria.persistence.domain.enums.unit.LocationType; import jakarta.validation.constraints.NotNull; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/request/UnitSpecificationsRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/unit/UnitSpecificationsRequestDTO.java similarity index 87% rename from src/main/java/com/solaria/persistence/dto/request/UnitSpecificationsRequestDTO.java rename to src/main/java/com/solaria/persistence/dto/request/unit/UnitSpecificationsRequestDTO.java index cb2ccf1..ac2e586 100644 --- a/src/main/java/com/solaria/persistence/dto/request/UnitSpecificationsRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/unit/UnitSpecificationsRequestDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.request; +package com.solaria.persistence.dto.request.unit; import jakarta.validation.constraints.NotNull; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/response/ServiceTokenResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/auth/ServiceTokenResponseDTO.java similarity index 87% rename from src/main/java/com/solaria/persistence/dto/response/ServiceTokenResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/auth/ServiceTokenResponseDTO.java index ef247e5..12aba61 100644 --- a/src/main/java/com/solaria/persistence/dto/response/ServiceTokenResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/auth/ServiceTokenResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.auth; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/src/main/java/com/solaria/persistence/dto/response/InventoryResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/catalog/InventoryResponseDTO.java similarity index 81% rename from src/main/java/com/solaria/persistence/dto/response/InventoryResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/catalog/InventoryResponseDTO.java index 04317ae..3b22cd1 100644 --- a/src/main/java/com/solaria/persistence/dto/response/InventoryResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/catalog/InventoryResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.catalog; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/response/ModelPhotoResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/catalog/ModelPhotoResponseDTO.java similarity index 83% rename from src/main/java/com/solaria/persistence/dto/response/ModelPhotoResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/catalog/ModelPhotoResponseDTO.java index aa04df6..6fb3f04 100644 --- a/src/main/java/com/solaria/persistence/dto/response/ModelPhotoResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/catalog/ModelPhotoResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.catalog; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/response/ModelResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/catalog/ModelResponseDTO.java similarity index 76% rename from src/main/java/com/solaria/persistence/dto/response/ModelResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/catalog/ModelResponseDTO.java index 86f5e67..e8291ac 100644 --- a/src/main/java/com/solaria/persistence/dto/response/ModelResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/catalog/ModelResponseDTO.java @@ -1,7 +1,7 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.catalog; -import com.solaria.persistence.domain.enums.ModelStatus; -import com.solaria.persistence.domain.enums.PanelType; +import com.solaria.persistence.domain.enums.catalog.ModelStatus; +import com.solaria.persistence.domain.enums.catalog.PanelType; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/response/OfferResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/catalog/OfferResponseDTO.java similarity index 83% rename from src/main/java/com/solaria/persistence/dto/response/OfferResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/catalog/OfferResponseDTO.java index 61d57c3..f089637 100644 --- a/src/main/java/com/solaria/persistence/dto/response/OfferResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/catalog/OfferResponseDTO.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.catalog; -import com.solaria.persistence.domain.enums.TranslationStatus; +import com.solaria.persistence.domain.enums.catalog.TranslationStatus; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/response/OfferTranslationResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/catalog/OfferTranslationResponseDTO.java similarity index 80% rename from src/main/java/com/solaria/persistence/dto/response/OfferTranslationResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/catalog/OfferTranslationResponseDTO.java index 7dce953..57b2c6e 100644 --- a/src/main/java/com/solaria/persistence/dto/response/OfferTranslationResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/catalog/OfferTranslationResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.catalog; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/response/SupplierResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/catalog/SupplierResponseDTO.java similarity index 56% rename from src/main/java/com/solaria/persistence/dto/response/SupplierResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/catalog/SupplierResponseDTO.java index 4ff1b19..a746680 100644 --- a/src/main/java/com/solaria/persistence/dto/response/SupplierResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/catalog/SupplierResponseDTO.java @@ -1,10 +1,11 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.catalog; -import com.solaria.persistence.domain.enums.SupplierStatus; +import com.solaria.persistence.domain.enums.catalog.SupplierStatus; import lombok.Getter; import lombok.Setter; import java.util.UUID; +import com.solaria.persistence.dto.response.company.CompanyResponseDTO; @Getter @Setter diff --git a/src/main/java/com/solaria/persistence/dto/response/SupplierSearchResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/catalog/SupplierSearchResponseDTO.java similarity index 86% rename from src/main/java/com/solaria/persistence/dto/response/SupplierSearchResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/catalog/SupplierSearchResponseDTO.java index a7aa46e..3808a96 100644 --- a/src/main/java/com/solaria/persistence/dto/response/SupplierSearchResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/catalog/SupplierSearchResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.catalog; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/response/BusinessContactResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/company/BusinessContactResponseDTO.java similarity index 81% rename from src/main/java/com/solaria/persistence/dto/response/BusinessContactResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/company/BusinessContactResponseDTO.java index 001fec5..4aa7de5 100644 --- a/src/main/java/com/solaria/persistence/dto/response/BusinessContactResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/company/BusinessContactResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.company; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/response/ChargeResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/company/ChargeResponseDTO.java similarity index 70% rename from src/main/java/com/solaria/persistence/dto/response/ChargeResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/company/ChargeResponseDTO.java index d92a3a3..f344568 100644 --- a/src/main/java/com/solaria/persistence/dto/response/ChargeResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/company/ChargeResponseDTO.java @@ -1,7 +1,7 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.company; -import com.solaria.persistence.domain.enums.BillingStatus; -import com.solaria.persistence.domain.enums.PaymentMethod; +import com.solaria.persistence.domain.enums.company.BillingStatus; +import com.solaria.persistence.domain.enums.company.PaymentMethod; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/response/CompanyPhotoResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/company/CompanyPhotoResponseDTO.java similarity index 72% rename from src/main/java/com/solaria/persistence/dto/response/CompanyPhotoResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/company/CompanyPhotoResponseDTO.java index cd18491..7cebe48 100644 --- a/src/main/java/com/solaria/persistence/dto/response/CompanyPhotoResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/company/CompanyPhotoResponseDTO.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.company; -import com.solaria.persistence.domain.enums.PhotoType; +import com.solaria.persistence.domain.enums.shared.PhotoType; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/response/CompanyPlansResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/company/CompanyPlansResponseDTO.java similarity index 69% rename from src/main/java/com/solaria/persistence/dto/response/CompanyPlansResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/company/CompanyPlansResponseDTO.java index 7e478b4..7ab9462 100644 --- a/src/main/java/com/solaria/persistence/dto/response/CompanyPlansResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/company/CompanyPlansResponseDTO.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.company; -import com.solaria.persistence.domain.enums.PlanCycle; +import com.solaria.persistence.domain.enums.company.PlanCycle; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/response/CompanyPositionsResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/company/CompanyPositionsResponseDTO.java similarity index 63% rename from src/main/java/com/solaria/persistence/dto/response/CompanyPositionsResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/company/CompanyPositionsResponseDTO.java index 2a162a8..36a5b31 100644 --- a/src/main/java/com/solaria/persistence/dto/response/CompanyPositionsResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/company/CompanyPositionsResponseDTO.java @@ -1,9 +1,10 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.company; import java.util.UUID; import lombok.Getter; import lombok.Setter; +import com.solaria.persistence.dto.response.identity.PositionResponseDTO; @Getter @Setter diff --git a/src/main/java/com/solaria/persistence/dto/response/CompanyResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/company/CompanyResponseDTO.java similarity index 66% rename from src/main/java/com/solaria/persistence/dto/response/CompanyResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/company/CompanyResponseDTO.java index 24e2edd..d4a3c7b 100644 --- a/src/main/java/com/solaria/persistence/dto/response/CompanyResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/company/CompanyResponseDTO.java @@ -1,10 +1,11 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.company; -import com.solaria.persistence.domain.enums.CompanyStatus; +import com.solaria.persistence.domain.enums.company.CompanyStatus; import lombok.Getter; import lombok.Setter; import java.util.UUID; +import com.solaria.persistence.dto.response.shared.AddressResponseDTO; @Getter @Setter diff --git a/src/main/java/com/solaria/persistence/dto/response/SubscriptionResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/company/SubscriptionResponseDTO.java similarity index 76% rename from src/main/java/com/solaria/persistence/dto/response/SubscriptionResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/company/SubscriptionResponseDTO.java index 1d642c2..e2ec56b 100644 --- a/src/main/java/com/solaria/persistence/dto/response/SubscriptionResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/company/SubscriptionResponseDTO.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.company; -import com.solaria.persistence.domain.enums.SubscriptionStatus; +import com.solaria.persistence.domain.enums.company.SubscriptionStatus; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/response/RequesterResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/execution/RequesterResponseDTO.java similarity index 63% rename from src/main/java/com/solaria/persistence/dto/response/RequesterResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/execution/RequesterResponseDTO.java index 141178c..3a2a51b 100644 --- a/src/main/java/com/solaria/persistence/dto/response/RequesterResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/execution/RequesterResponseDTO.java @@ -1,9 +1,10 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.execution; import lombok.Getter; import lombok.Setter; import java.util.UUID; +import com.solaria.persistence.dto.response.company.CompanyResponseDTO; @Getter @Setter diff --git a/src/main/java/com/solaria/persistence/dto/response/ServiceContractResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/execution/ServiceContractResponseDTO.java similarity index 86% rename from src/main/java/com/solaria/persistence/dto/response/ServiceContractResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/execution/ServiceContractResponseDTO.java index 395d170..3eafcd5 100644 --- a/src/main/java/com/solaria/persistence/dto/response/ServiceContractResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/execution/ServiceContractResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.execution; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/response/ServiceExecutorResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/execution/ServiceExecutorResponseDTO.java similarity index 65% rename from src/main/java/com/solaria/persistence/dto/response/ServiceExecutorResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/execution/ServiceExecutorResponseDTO.java index 6279aba..d9a4163 100644 --- a/src/main/java/com/solaria/persistence/dto/response/ServiceExecutorResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/execution/ServiceExecutorResponseDTO.java @@ -1,9 +1,10 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.execution; import java.util.UUID; import lombok.Getter; import lombok.Setter; +import com.solaria.persistence.dto.response.professional.TechnicianAffiliationResponseDTO; @Setter @Getter diff --git a/src/main/java/com/solaria/persistence/dto/response/TechnicalProjectResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/execution/TechnicalProjectResponseDTO.java similarity index 75% rename from src/main/java/com/solaria/persistence/dto/response/TechnicalProjectResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/execution/TechnicalProjectResponseDTO.java index f1cc1ce..4ef72d7 100644 --- a/src/main/java/com/solaria/persistence/dto/response/TechnicalProjectResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/execution/TechnicalProjectResponseDTO.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.execution; -import com.solaria.persistence.domain.enums.ServiceStatus; +import com.solaria.persistence.domain.enums.execution.ServiceStatus; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/response/TechnicalServiceResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/execution/TechnicalServiceResponseDTO.java similarity index 78% rename from src/main/java/com/solaria/persistence/dto/response/TechnicalServiceResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/execution/TechnicalServiceResponseDTO.java index 33b812f..001162f 100644 --- a/src/main/java/com/solaria/persistence/dto/response/TechnicalServiceResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/execution/TechnicalServiceResponseDTO.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.execution; -import com.solaria.persistence.domain.enums.ServiceStatus; +import com.solaria.persistence.domain.enums.execution.ServiceStatus; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/response/InternalUserProvisionResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/identity/InternalUserProvisionResponseDTO.java similarity index 86% rename from src/main/java/com/solaria/persistence/dto/response/InternalUserProvisionResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/identity/InternalUserProvisionResponseDTO.java index 7a3e269..543eac2 100644 --- a/src/main/java/com/solaria/persistence/dto/response/InternalUserProvisionResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/identity/InternalUserProvisionResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.identity; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/dto/response/PermissionResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/identity/PermissionResponseDTO.java similarity index 81% rename from src/main/java/com/solaria/persistence/dto/response/PermissionResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/identity/PermissionResponseDTO.java index 0b6157d..a4cbf25 100644 --- a/src/main/java/com/solaria/persistence/dto/response/PermissionResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/identity/PermissionResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.identity; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/response/PersonResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/identity/PersonResponseDTO.java similarity index 71% rename from src/main/java/com/solaria/persistence/dto/response/PersonResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/identity/PersonResponseDTO.java index 1776b8e..afc9d4b 100644 --- a/src/main/java/com/solaria/persistence/dto/response/PersonResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/identity/PersonResponseDTO.java @@ -1,10 +1,11 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.identity; import lombok.Getter; import lombok.Setter; import java.time.LocalDate; import java.util.UUID; +import com.solaria.persistence.dto.response.shared.ContactResponseDTO; @Setter @Getter diff --git a/src/main/java/com/solaria/persistence/dto/response/PositionPermissionResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/identity/PositionPermissionResponseDTO.java similarity index 80% rename from src/main/java/com/solaria/persistence/dto/response/PositionPermissionResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/identity/PositionPermissionResponseDTO.java index 5c9a376..c56a6be 100644 --- a/src/main/java/com/solaria/persistence/dto/response/PositionPermissionResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/identity/PositionPermissionResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.identity; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/dto/response/PositionResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/identity/PositionResponseDTO.java similarity index 78% rename from src/main/java/com/solaria/persistence/dto/response/PositionResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/identity/PositionResponseDTO.java index 9710802..6d6e713 100644 --- a/src/main/java/com/solaria/persistence/dto/response/PositionResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/identity/PositionResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.identity; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/dto/response/UserCompanyResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/identity/UserCompanyResponseDTO.java similarity index 81% rename from src/main/java/com/solaria/persistence/dto/response/UserCompanyResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/identity/UserCompanyResponseDTO.java index 60a7ae5..6956cae 100644 --- a/src/main/java/com/solaria/persistence/dto/response/UserCompanyResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/identity/UserCompanyResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.identity; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/dto/response/UserPhotoResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/identity/UserPhotoResponseDTO.java similarity index 71% rename from src/main/java/com/solaria/persistence/dto/response/UserPhotoResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/identity/UserPhotoResponseDTO.java index 1f1eb16..4c443a0 100644 --- a/src/main/java/com/solaria/persistence/dto/response/UserPhotoResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/identity/UserPhotoResponseDTO.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.identity; -import com.solaria.persistence.domain.enums.PhotoType; +import com.solaria.persistence.domain.enums.shared.PhotoType; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/response/UserResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/identity/UserResponseDTO.java similarity index 80% rename from src/main/java/com/solaria/persistence/dto/response/UserResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/identity/UserResponseDTO.java index 398898c..8a639b5 100644 --- a/src/main/java/com/solaria/persistence/dto/response/UserResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/identity/UserResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.identity; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/response/CertificationRecordResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/professional/CertificationRecordResponseDTO.java similarity index 80% rename from src/main/java/com/solaria/persistence/dto/response/CertificationRecordResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/professional/CertificationRecordResponseDTO.java index eae870a..f7025e2 100644 --- a/src/main/java/com/solaria/persistence/dto/response/CertificationRecordResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/professional/CertificationRecordResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.professional; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/dto/response/CertificationResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/professional/CertificationResponseDTO.java similarity index 83% rename from src/main/java/com/solaria/persistence/dto/response/CertificationResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/professional/CertificationResponseDTO.java index 609b3cd..9390176 100644 --- a/src/main/java/com/solaria/persistence/dto/response/CertificationResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/professional/CertificationResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.professional; import java.time.LocalDateTime; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/dto/response/ProfessionResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/professional/ProfessionResponseDTO.java similarity index 78% rename from src/main/java/com/solaria/persistence/dto/response/ProfessionResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/professional/ProfessionResponseDTO.java index 17140e2..2b1934a 100644 --- a/src/main/java/com/solaria/persistence/dto/response/ProfessionResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/professional/ProfessionResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.professional; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/dto/response/ProfessionalRegistrationResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/professional/ProfessionalRegistrationResponseDTO.java similarity index 85% rename from src/main/java/com/solaria/persistence/dto/response/ProfessionalRegistrationResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/professional/ProfessionalRegistrationResponseDTO.java index fa929ac..b16c080 100644 --- a/src/main/java/com/solaria/persistence/dto/response/ProfessionalRegistrationResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/professional/ProfessionalRegistrationResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.professional; import java.time.LocalDateTime; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/dto/response/ProfessionalReviewResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/professional/ProfessionalReviewResponseDTO.java similarity index 88% rename from src/main/java/com/solaria/persistence/dto/response/ProfessionalReviewResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/professional/ProfessionalReviewResponseDTO.java index 0900172..faecade 100644 --- a/src/main/java/com/solaria/persistence/dto/response/ProfessionalReviewResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/professional/ProfessionalReviewResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.professional; import lombok.Builder; import lombok.Getter; diff --git a/src/main/java/com/solaria/persistence/dto/response/ShiftResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/professional/ShiftResponseDTO.java similarity index 71% rename from src/main/java/com/solaria/persistence/dto/response/ShiftResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/professional/ShiftResponseDTO.java index 8868f24..e854cd9 100644 --- a/src/main/java/com/solaria/persistence/dto/response/ShiftResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/professional/ShiftResponseDTO.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.professional; -import com.solaria.persistence.domain.enums.DayWeek; +import com.solaria.persistence.domain.enums.professional.DayWeek; import java.time.LocalDateTime; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/dto/response/TechnicalCourseResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/professional/TechnicalCourseResponseDTO.java similarity index 81% rename from src/main/java/com/solaria/persistence/dto/response/TechnicalCourseResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/professional/TechnicalCourseResponseDTO.java index a71b324..5f9948d 100644 --- a/src/main/java/com/solaria/persistence/dto/response/TechnicalCourseResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/professional/TechnicalCourseResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.professional; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/dto/response/TechnicianAffiliationResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/professional/TechnicianAffiliationResponseDTO.java similarity index 67% rename from src/main/java/com/solaria/persistence/dto/response/TechnicianAffiliationResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/professional/TechnicianAffiliationResponseDTO.java index 0709d3d..bc68aac 100644 --- a/src/main/java/com/solaria/persistence/dto/response/TechnicianAffiliationResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/professional/TechnicianAffiliationResponseDTO.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.professional; -import com.solaria.persistence.domain.enums.TechnicalAffiliationType; +import com.solaria.persistence.domain.enums.professional.TechnicalAffiliationType; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/response/TechnicianResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/professional/TechnicianResponseDTO.java similarity index 64% rename from src/main/java/com/solaria/persistence/dto/response/TechnicianResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/professional/TechnicianResponseDTO.java index 89e108c..83ff3c8 100644 --- a/src/main/java/com/solaria/persistence/dto/response/TechnicianResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/professional/TechnicianResponseDTO.java @@ -1,9 +1,10 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.professional; import lombok.Getter; import lombok.Setter; import java.util.UUID; +import com.solaria.persistence.dto.response.identity.PersonResponseDTO; @Getter @Setter diff --git a/src/main/java/com/solaria/persistence/dto/response/ProposalItemResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/proposal/ProposalItemResponseDTO.java similarity index 73% rename from src/main/java/com/solaria/persistence/dto/response/ProposalItemResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/proposal/ProposalItemResponseDTO.java index 87bcddb..3fb4055 100644 --- a/src/main/java/com/solaria/persistence/dto/response/ProposalItemResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/proposal/ProposalItemResponseDTO.java @@ -1,10 +1,11 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.proposal; import lombok.Getter; import lombok.Setter; import java.math.BigDecimal; import java.util.UUID; +import com.solaria.persistence.dto.response.catalog.OfferResponseDTO; @Getter @Setter diff --git a/src/main/java/com/solaria/persistence/dto/response/ProposalResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/proposal/ProposalResponseDTO.java similarity index 76% rename from src/main/java/com/solaria/persistence/dto/response/ProposalResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/proposal/ProposalResponseDTO.java index 3d18e90..0eae030 100644 --- a/src/main/java/com/solaria/persistence/dto/response/ProposalResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/proposal/ProposalResponseDTO.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.proposal; -import com.solaria.persistence.domain.enums.ProposalStatus; +import com.solaria.persistence.domain.enums.proposal.ProposalStatus; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/response/ProposalUnitResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/proposal/ProposalUnitResponseDTO.java similarity index 69% rename from src/main/java/com/solaria/persistence/dto/response/ProposalUnitResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/proposal/ProposalUnitResponseDTO.java index 533873a..c3728e4 100644 --- a/src/main/java/com/solaria/persistence/dto/response/ProposalUnitResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/proposal/ProposalUnitResponseDTO.java @@ -1,9 +1,10 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.proposal; import lombok.Getter; import lombok.Setter; import java.util.UUID; +import com.solaria.persistence.dto.response.unit.LocalUnitResponseDTO; @Setter @Getter diff --git a/src/main/java/com/solaria/persistence/dto/response/AddressResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/shared/AddressResponseDTO.java similarity index 89% rename from src/main/java/com/solaria/persistence/dto/response/AddressResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/shared/AddressResponseDTO.java index 8980a14..b87ee76 100644 --- a/src/main/java/com/solaria/persistence/dto/response/AddressResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/shared/AddressResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.shared; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/src/main/java/com/solaria/persistence/dto/response/ContactResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/shared/ContactResponseDTO.java similarity index 78% rename from src/main/java/com/solaria/persistence/dto/response/ContactResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/shared/ContactResponseDTO.java index b43f27c..91a337a 100644 --- a/src/main/java/com/solaria/persistence/dto/response/ContactResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/shared/ContactResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.shared; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/response/FluxLogResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/shared/FluxLogResponseDTO.java similarity index 83% rename from src/main/java/com/solaria/persistence/dto/response/FluxLogResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/shared/FluxLogResponseDTO.java index daac31e..5b1140a 100644 --- a/src/main/java/com/solaria/persistence/dto/response/FluxLogResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/shared/FluxLogResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.shared; import java.time.OffsetDateTime; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/dto/response/GeolocalizationResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/shared/GeolocalizationResponseDTO.java similarity index 84% rename from src/main/java/com/solaria/persistence/dto/response/GeolocalizationResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/shared/GeolocalizationResponseDTO.java index e289b25..cbd4e9c 100644 --- a/src/main/java/com/solaria/persistence/dto/response/GeolocalizationResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/shared/GeolocalizationResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.shared; import java.math.BigDecimal; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/dto/response/EnergyBillResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/unit/EnergyBillResponseDTO.java similarity index 85% rename from src/main/java/com/solaria/persistence/dto/response/EnergyBillResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/unit/EnergyBillResponseDTO.java index f1ca229..7cc25eb 100644 --- a/src/main/java/com/solaria/persistence/dto/response/EnergyBillResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/unit/EnergyBillResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.unit; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/response/LocalUnitPhotoResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/unit/LocalUnitPhotoResponseDTO.java similarity index 84% rename from src/main/java/com/solaria/persistence/dto/response/LocalUnitPhotoResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/unit/LocalUnitPhotoResponseDTO.java index fbe7eca..aaf92f5 100644 --- a/src/main/java/com/solaria/persistence/dto/response/LocalUnitPhotoResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/unit/LocalUnitPhotoResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.unit; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/dto/response/LocalUnitResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/unit/LocalUnitResponseDTO.java similarity index 60% rename from src/main/java/com/solaria/persistence/dto/response/LocalUnitResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/unit/LocalUnitResponseDTO.java index cbb6324..70c1019 100644 --- a/src/main/java/com/solaria/persistence/dto/response/LocalUnitResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/unit/LocalUnitResponseDTO.java @@ -1,10 +1,11 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.unit; -import com.solaria.persistence.domain.enums.LocationType; +import com.solaria.persistence.domain.enums.unit.LocationType; import lombok.Getter; import lombok.Setter; import java.util.UUID; +import com.solaria.persistence.dto.response.shared.AddressResponseDTO; @Getter @Setter diff --git a/src/main/java/com/solaria/persistence/dto/response/UnitSpecificationsResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/unit/UnitSpecificationsResponseDTO.java similarity index 86% rename from src/main/java/com/solaria/persistence/dto/response/UnitSpecificationsResponseDTO.java rename to src/main/java/com/solaria/persistence/dto/response/unit/UnitSpecificationsResponseDTO.java index 13f923d..f6bd9c6 100644 --- a/src/main/java/com/solaria/persistence/dto/response/UnitSpecificationsResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/unit/UnitSpecificationsResponseDTO.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.dto.response; +package com.solaria.persistence.dto.response.unit; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/com/solaria/persistence/openapi/InventoryOpenApi.java b/src/main/java/com/solaria/persistence/openapi/catalog/InventoryOpenApi.java similarity index 91% rename from src/main/java/com/solaria/persistence/openapi/InventoryOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/catalog/InventoryOpenApi.java index a630dff..70d4485 100644 --- a/src/main/java/com/solaria/persistence/openapi/InventoryOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/catalog/InventoryOpenApi.java @@ -1,13 +1,13 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.catalog; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.patch.UpdateQuantityDTO; -import com.solaria.persistence.dto.request.InventoryRequestDTO; -import com.solaria.persistence.dto.response.InventoryResponseDTO; +import com.solaria.persistence.dto.patch.catalog.UpdateQuantityDTO; +import com.solaria.persistence.dto.request.catalog.InventoryRequestDTO; +import com.solaria.persistence.dto.response.catalog.InventoryResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/ModelOpenApi.java b/src/main/java/com/solaria/persistence/openapi/catalog/ModelOpenApi.java similarity index 93% rename from src/main/java/com/solaria/persistence/openapi/ModelOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/catalog/ModelOpenApi.java index 2fb2680..f367ed4 100644 --- a/src/main/java/com/solaria/persistence/openapi/ModelOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/catalog/ModelOpenApi.java @@ -1,13 +1,13 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.catalog; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.domain.enums.ModelStatus; -import com.solaria.persistence.dto.request.ModelRequestDTO; -import com.solaria.persistence.dto.response.ModelResponseDTO; +import com.solaria.persistence.domain.enums.catalog.ModelStatus; +import com.solaria.persistence.dto.request.catalog.ModelRequestDTO; +import com.solaria.persistence.dto.response.catalog.ModelResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/ModelPhotoOpenApi.java b/src/main/java/com/solaria/persistence/openapi/catalog/ModelPhotoOpenApi.java similarity index 92% rename from src/main/java/com/solaria/persistence/openapi/ModelPhotoOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/catalog/ModelPhotoOpenApi.java index f121fde..72f5c42 100644 --- a/src/main/java/com/solaria/persistence/openapi/ModelPhotoOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/catalog/ModelPhotoOpenApi.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.catalog; import java.util.List; import java.util.UUID; @@ -6,7 +6,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.multipart.MultipartFile; -import com.solaria.persistence.dto.response.ModelPhotoResponseDTO; +import com.solaria.persistence.dto.response.catalog.ModelPhotoResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/OfferOpenApi.java b/src/main/java/com/solaria/persistence/openapi/catalog/OfferOpenApi.java similarity index 94% rename from src/main/java/com/solaria/persistence/openapi/OfferOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/catalog/OfferOpenApi.java index 024dd90..2b5fbce 100644 --- a/src/main/java/com/solaria/persistence/openapi/OfferOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/catalog/OfferOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.catalog; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.OfferRequestDTO; -import com.solaria.persistence.dto.response.OfferResponseDTO; +import com.solaria.persistence.dto.request.catalog.OfferRequestDTO; +import com.solaria.persistence.dto.response.catalog.OfferResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/SupplierOpenApi.java b/src/main/java/com/solaria/persistence/openapi/catalog/SupplierOpenApi.java similarity index 91% rename from src/main/java/com/solaria/persistence/openapi/SupplierOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/catalog/SupplierOpenApi.java index 94cac0a..6843797 100644 --- a/src/main/java/com/solaria/persistence/openapi/SupplierOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/catalog/SupplierOpenApi.java @@ -1,14 +1,14 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.catalog; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.SupplierRequestDTO; -import com.solaria.persistence.dto.request.SupplierSearchFilterDTO; -import com.solaria.persistence.dto.response.SupplierResponseDTO; -import com.solaria.persistence.dto.response.SupplierSearchResponseDTO; +import com.solaria.persistence.dto.request.catalog.SupplierRequestDTO; +import com.solaria.persistence.dto.request.catalog.SupplierSearchFilterDTO; +import com.solaria.persistence.dto.response.catalog.SupplierResponseDTO; +import com.solaria.persistence.dto.response.catalog.SupplierSearchResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/BusinessContactOpenApi.java b/src/main/java/com/solaria/persistence/openapi/company/BusinessContactOpenApi.java similarity index 92% rename from src/main/java/com/solaria/persistence/openapi/BusinessContactOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/company/BusinessContactOpenApi.java index 5728abc..1c61fa6 100644 --- a/src/main/java/com/solaria/persistence/openapi/BusinessContactOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/company/BusinessContactOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.company; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.BusinessContactRequestDTO; -import com.solaria.persistence.dto.response.BusinessContactResponseDTO; +import com.solaria.persistence.dto.request.company.BusinessContactRequestDTO; +import com.solaria.persistence.dto.response.company.BusinessContactResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/ChargeOpenApi.java b/src/main/java/com/solaria/persistence/openapi/company/ChargeOpenApi.java similarity index 94% rename from src/main/java/com/solaria/persistence/openapi/ChargeOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/company/ChargeOpenApi.java index 134c84e..0861b32 100644 --- a/src/main/java/com/solaria/persistence/openapi/ChargeOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/company/ChargeOpenApi.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.company; import java.time.LocalDate; import java.util.List; @@ -6,9 +6,9 @@ import org.springframework.http.ResponseEntity; -import com.solaria.persistence.domain.enums.PaymentMethod; -import com.solaria.persistence.dto.request.ChargeRequestDTO; -import com.solaria.persistence.dto.response.ChargeResponseDTO; +import com.solaria.persistence.domain.enums.company.PaymentMethod; +import com.solaria.persistence.dto.request.company.ChargeRequestDTO; +import com.solaria.persistence.dto.response.company.ChargeResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/CompanyOpenApi.java b/src/main/java/com/solaria/persistence/openapi/company/CompanyOpenApi.java similarity index 93% rename from src/main/java/com/solaria/persistence/openapi/CompanyOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/company/CompanyOpenApi.java index f4da34a..87ed3f7 100644 --- a/src/main/java/com/solaria/persistence/openapi/CompanyOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/company/CompanyOpenApi.java @@ -1,14 +1,14 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.company; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.patch.UpdateBusinessContactIdDTO; -import com.solaria.persistence.dto.patch.UpdateCompanyAddressIdDTO; -import com.solaria.persistence.dto.request.CompanyRequestDTO; -import com.solaria.persistence.dto.response.CompanyResponseDTO; +import com.solaria.persistence.dto.patch.company.UpdateBusinessContactIdDTO; +import com.solaria.persistence.dto.patch.company.UpdateCompanyAddressIdDTO; +import com.solaria.persistence.dto.request.company.CompanyRequestDTO; +import com.solaria.persistence.dto.response.company.CompanyResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/CompanyPhotoOpenApi.java b/src/main/java/com/solaria/persistence/openapi/company/CompanyPhotoOpenApi.java similarity index 89% rename from src/main/java/com/solaria/persistence/openapi/CompanyPhotoOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/company/CompanyPhotoOpenApi.java index c9d1b9a..5333cf5 100644 --- a/src/main/java/com/solaria/persistence/openapi/CompanyPhotoOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/company/CompanyPhotoOpenApi.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.company; import java.util.List; import java.util.UUID; @@ -6,8 +6,8 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.multipart.MultipartFile; -import com.solaria.persistence.domain.enums.PhotoType; -import com.solaria.persistence.dto.response.CompanyPhotoResponseDTO; +import com.solaria.persistence.domain.enums.shared.PhotoType; +import com.solaria.persistence.dto.response.company.CompanyPhotoResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/CompanyPlansOpenApi.java b/src/main/java/com/solaria/persistence/openapi/company/CompanyPlansOpenApi.java similarity index 92% rename from src/main/java/com/solaria/persistence/openapi/CompanyPlansOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/company/CompanyPlansOpenApi.java index 4f39688..f411e1c 100644 --- a/src/main/java/com/solaria/persistence/openapi/CompanyPlansOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/company/CompanyPlansOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.company; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.CompanyPlansRequestDTO; -import com.solaria.persistence.dto.response.CompanyPlansResponseDTO; +import com.solaria.persistence.dto.request.company.CompanyPlansRequestDTO; +import com.solaria.persistence.dto.response.company.CompanyPlansResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/CompanyPositionsOpenApi.java b/src/main/java/com/solaria/persistence/openapi/company/CompanyPositionsOpenApi.java similarity index 91% rename from src/main/java/com/solaria/persistence/openapi/CompanyPositionsOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/company/CompanyPositionsOpenApi.java index 051e6da..6e50291 100644 --- a/src/main/java/com/solaria/persistence/openapi/CompanyPositionsOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/company/CompanyPositionsOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.company; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.CompanyPositionsRequestDTO; -import com.solaria.persistence.dto.response.CompanyPositionsResponseDTO; +import com.solaria.persistence.dto.request.company.CompanyPositionsRequestDTO; +import com.solaria.persistence.dto.response.company.CompanyPositionsResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/SubscriptionOpenApi.java b/src/main/java/com/solaria/persistence/openapi/company/SubscriptionOpenApi.java similarity index 95% rename from src/main/java/com/solaria/persistence/openapi/SubscriptionOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/company/SubscriptionOpenApi.java index 5ba4793..a36bb29 100644 --- a/src/main/java/com/solaria/persistence/openapi/SubscriptionOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/company/SubscriptionOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.company; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.SubscriptionRequestDTO; -import com.solaria.persistence.dto.response.SubscriptionResponseDTO; +import com.solaria.persistence.dto.request.company.SubscriptionRequestDTO; +import com.solaria.persistence.dto.response.company.SubscriptionResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/RequesterOpenApi.java b/src/main/java/com/solaria/persistence/openapi/execution/RequesterOpenApi.java similarity index 91% rename from src/main/java/com/solaria/persistence/openapi/RequesterOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/execution/RequesterOpenApi.java index c5fb806..08ce999 100644 --- a/src/main/java/com/solaria/persistence/openapi/RequesterOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/execution/RequesterOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.execution; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.RequesterRequestDTO; -import com.solaria.persistence.dto.response.RequesterResponseDTO; +import com.solaria.persistence.dto.request.execution.RequesterRequestDTO; +import com.solaria.persistence.dto.response.execution.RequesterResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/ServiceContractOpenApi.java b/src/main/java/com/solaria/persistence/openapi/execution/ServiceContractOpenApi.java similarity index 93% rename from src/main/java/com/solaria/persistence/openapi/ServiceContractOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/execution/ServiceContractOpenApi.java index 50412cb..e45db24 100644 --- a/src/main/java/com/solaria/persistence/openapi/ServiceContractOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/execution/ServiceContractOpenApi.java @@ -1,11 +1,11 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.execution; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.ServiceContractRequestDTO; -import com.solaria.persistence.dto.response.ServiceContractResponseDTO; +import com.solaria.persistence.dto.request.execution.ServiceContractRequestDTO; +import com.solaria.persistence.dto.response.execution.ServiceContractResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/ServiceExecutorOpenApi.java b/src/main/java/com/solaria/persistence/openapi/execution/ServiceExecutorOpenApi.java similarity index 89% rename from src/main/java/com/solaria/persistence/openapi/ServiceExecutorOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/execution/ServiceExecutorOpenApi.java index 74b9376..57daf1c 100644 --- a/src/main/java/com/solaria/persistence/openapi/ServiceExecutorOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/execution/ServiceExecutorOpenApi.java @@ -1,13 +1,13 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.execution; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.patch.UpdateFunctionDTO; -import com.solaria.persistence.dto.request.ServiceExecutorRequestDTO; -import com.solaria.persistence.dto.response.ServiceExecutorResponseDTO; +import com.solaria.persistence.dto.patch.execution.UpdateFunctionDTO; +import com.solaria.persistence.dto.request.execution.ServiceExecutorRequestDTO; +import com.solaria.persistence.dto.response.execution.ServiceExecutorResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/TechnicalProjectOpenApi.java b/src/main/java/com/solaria/persistence/openapi/execution/TechnicalProjectOpenApi.java similarity index 93% rename from src/main/java/com/solaria/persistence/openapi/TechnicalProjectOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/execution/TechnicalProjectOpenApi.java index f7928b9..aeae3cc 100644 --- a/src/main/java/com/solaria/persistence/openapi/TechnicalProjectOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/execution/TechnicalProjectOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.execution; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.TechnicalProjectRequestDTO; -import com.solaria.persistence.dto.response.TechnicalProjectResponseDTO; +import com.solaria.persistence.dto.request.execution.TechnicalProjectRequestDTO; +import com.solaria.persistence.dto.response.execution.TechnicalProjectResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/TechnicalServiceOpenApi.java b/src/main/java/com/solaria/persistence/openapi/execution/TechnicalServiceOpenApi.java similarity index 91% rename from src/main/java/com/solaria/persistence/openapi/TechnicalServiceOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/execution/TechnicalServiceOpenApi.java index 6f59f21..f2c8245 100644 --- a/src/main/java/com/solaria/persistence/openapi/TechnicalServiceOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/execution/TechnicalServiceOpenApi.java @@ -1,15 +1,15 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.execution; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.patch.ServiceAcceptanceDTO; -import com.solaria.persistence.dto.patch.ServiceScheduleDTO; -import com.solaria.persistence.dto.patch.UpdatePurposeDTO; -import com.solaria.persistence.dto.request.TechnicalServiceRequestDTO; -import com.solaria.persistence.dto.response.TechnicalServiceResponseDTO; +import com.solaria.persistence.dto.patch.execution.ServiceAcceptanceDTO; +import com.solaria.persistence.dto.patch.execution.ServiceScheduleDTO; +import com.solaria.persistence.dto.patch.execution.UpdatePurposeDTO; +import com.solaria.persistence.dto.request.execution.TechnicalServiceRequestDTO; +import com.solaria.persistence.dto.response.execution.TechnicalServiceResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/PermissionOpenApi.java b/src/main/java/com/solaria/persistence/openapi/identity/PermissionOpenApi.java similarity index 93% rename from src/main/java/com/solaria/persistence/openapi/PermissionOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/identity/PermissionOpenApi.java index 254bc52..0cd8edc 100644 --- a/src/main/java/com/solaria/persistence/openapi/PermissionOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/identity/PermissionOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.identity; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.PermissionRequestDTO; -import com.solaria.persistence.dto.response.PermissionResponseDTO; +import com.solaria.persistence.dto.request.identity.PermissionRequestDTO; +import com.solaria.persistence.dto.response.identity.PermissionResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/PersonOpenApi.java b/src/main/java/com/solaria/persistence/openapi/identity/PersonOpenApi.java similarity index 93% rename from src/main/java/com/solaria/persistence/openapi/PersonOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/identity/PersonOpenApi.java index c3afa48..3de091e 100644 --- a/src/main/java/com/solaria/persistence/openapi/PersonOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/identity/PersonOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.identity; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.PersonRequestDTO; -import com.solaria.persistence.dto.response.PersonResponseDTO; +import com.solaria.persistence.dto.request.identity.PersonRequestDTO; +import com.solaria.persistence.dto.response.identity.PersonResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/PositionOpenApi.java b/src/main/java/com/solaria/persistence/openapi/identity/PositionOpenApi.java similarity index 92% rename from src/main/java/com/solaria/persistence/openapi/PositionOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/identity/PositionOpenApi.java index 4d625d5..ab20057 100644 --- a/src/main/java/com/solaria/persistence/openapi/PositionOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/identity/PositionOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.identity; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.PositionRequestDTO; -import com.solaria.persistence.dto.response.PositionResponseDTO; +import com.solaria.persistence.dto.request.identity.PositionRequestDTO; +import com.solaria.persistence.dto.response.identity.PositionResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/PositionPermissionOpenApi.java b/src/main/java/com/solaria/persistence/openapi/identity/PositionPermissionOpenApi.java similarity index 89% rename from src/main/java/com/solaria/persistence/openapi/PositionPermissionOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/identity/PositionPermissionOpenApi.java index 3b5392b..076aaa5 100644 --- a/src/main/java/com/solaria/persistence/openapi/PositionPermissionOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/identity/PositionPermissionOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.identity; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.PositionPermissionRequestDTO; -import com.solaria.persistence.dto.response.PositionPermissionResponseDTO; +import com.solaria.persistence.dto.request.identity.PositionPermissionRequestDTO; +import com.solaria.persistence.dto.response.identity.PositionPermissionResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/UserCompanyOpenApi.java b/src/main/java/com/solaria/persistence/openapi/identity/UserCompanyOpenApi.java similarity index 92% rename from src/main/java/com/solaria/persistence/openapi/UserCompanyOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/identity/UserCompanyOpenApi.java index 5b543e2..88cf225 100644 --- a/src/main/java/com/solaria/persistence/openapi/UserCompanyOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/identity/UserCompanyOpenApi.java @@ -1,13 +1,13 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.identity; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.patch.UpdatePositionDTO; -import com.solaria.persistence.dto.request.UserCompanyRequestDTO; -import com.solaria.persistence.dto.response.UserCompanyResponseDTO; +import com.solaria.persistence.dto.patch.identity.UpdatePositionDTO; +import com.solaria.persistence.dto.request.identity.UserCompanyRequestDTO; +import com.solaria.persistence.dto.response.identity.UserCompanyResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/UserOpenApi.java b/src/main/java/com/solaria/persistence/openapi/identity/UserOpenApi.java similarity index 92% rename from src/main/java/com/solaria/persistence/openapi/UserOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/identity/UserOpenApi.java index 655d91c..838836f 100644 --- a/src/main/java/com/solaria/persistence/openapi/UserOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/identity/UserOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.identity; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.UserRequestDTO; -import com.solaria.persistence.dto.response.UserResponseDTO; +import com.solaria.persistence.dto.request.identity.UserRequestDTO; +import com.solaria.persistence.dto.response.identity.UserResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/UserPhotoOpenApi.java b/src/main/java/com/solaria/persistence/openapi/identity/UserPhotoOpenApi.java similarity index 89% rename from src/main/java/com/solaria/persistence/openapi/UserPhotoOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/identity/UserPhotoOpenApi.java index 65d958c..ec5e355 100644 --- a/src/main/java/com/solaria/persistence/openapi/UserPhotoOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/identity/UserPhotoOpenApi.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.identity; import java.util.List; import java.util.UUID; @@ -6,8 +6,8 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.multipart.MultipartFile; -import com.solaria.persistence.domain.enums.PhotoType; -import com.solaria.persistence.dto.response.UserPhotoResponseDTO; +import com.solaria.persistence.domain.enums.shared.PhotoType; +import com.solaria.persistence.dto.response.identity.UserPhotoResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/CertificationOpenApi.java b/src/main/java/com/solaria/persistence/openapi/professional/CertificationOpenApi.java similarity index 91% rename from src/main/java/com/solaria/persistence/openapi/CertificationOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/professional/CertificationOpenApi.java index d7adbcf..724d262 100644 --- a/src/main/java/com/solaria/persistence/openapi/CertificationOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/professional/CertificationOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.professional; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.CertificationRequestDTO; -import com.solaria.persistence.dto.response.CertificationResponseDTO; +import com.solaria.persistence.dto.request.professional.CertificationRequestDTO; +import com.solaria.persistence.dto.response.professional.CertificationResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/CertificationRecordOpenApi.java b/src/main/java/com/solaria/persistence/openapi/professional/CertificationRecordOpenApi.java similarity index 92% rename from src/main/java/com/solaria/persistence/openapi/CertificationRecordOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/professional/CertificationRecordOpenApi.java index ba6a94c..5db358f 100644 --- a/src/main/java/com/solaria/persistence/openapi/CertificationRecordOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/professional/CertificationRecordOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.professional; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.CertificationRecordRequestDTO; -import com.solaria.persistence.dto.response.CertificationRecordResponseDTO; +import com.solaria.persistence.dto.request.professional.CertificationRecordRequestDTO; +import com.solaria.persistence.dto.response.professional.CertificationRecordResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/ProfessionOpenApi.java b/src/main/java/com/solaria/persistence/openapi/professional/ProfessionOpenApi.java similarity index 91% rename from src/main/java/com/solaria/persistence/openapi/ProfessionOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/professional/ProfessionOpenApi.java index 6705933..e4ce0bd 100644 --- a/src/main/java/com/solaria/persistence/openapi/ProfessionOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/professional/ProfessionOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.professional; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.ProfessionRequestDTO; -import com.solaria.persistence.dto.response.ProfessionResponseDTO; +import com.solaria.persistence.dto.request.professional.ProfessionRequestDTO; +import com.solaria.persistence.dto.response.professional.ProfessionResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/ProfessionalRegistrationOpenApi.java b/src/main/java/com/solaria/persistence/openapi/professional/ProfessionalRegistrationOpenApi.java similarity index 91% rename from src/main/java/com/solaria/persistence/openapi/ProfessionalRegistrationOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/professional/ProfessionalRegistrationOpenApi.java index ad026c9..91475d1 100644 --- a/src/main/java/com/solaria/persistence/openapi/ProfessionalRegistrationOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/professional/ProfessionalRegistrationOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.professional; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.ProfessionalRegistrationRequestDTO; -import com.solaria.persistence.dto.response.ProfessionalRegistrationResponseDTO; +import com.solaria.persistence.dto.request.professional.ProfessionalRegistrationRequestDTO; +import com.solaria.persistence.dto.response.professional.ProfessionalRegistrationResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/ProfessionalReviewOpenApi.java b/src/main/java/com/solaria/persistence/openapi/professional/ProfessionalReviewOpenApi.java similarity index 90% rename from src/main/java/com/solaria/persistence/openapi/ProfessionalReviewOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/professional/ProfessionalReviewOpenApi.java index 87190ab..df97458 100644 --- a/src/main/java/com/solaria/persistence/openapi/ProfessionalReviewOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/professional/ProfessionalReviewOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.professional; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.ProfessionalReviewRequestDTO; -import com.solaria.persistence.dto.response.ProfessionalReviewResponseDTO; +import com.solaria.persistence.dto.request.professional.ProfessionalReviewRequestDTO; +import com.solaria.persistence.dto.response.professional.ProfessionalReviewResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/ShiftOpenApi.java b/src/main/java/com/solaria/persistence/openapi/professional/ShiftOpenApi.java similarity index 92% rename from src/main/java/com/solaria/persistence/openapi/ShiftOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/professional/ShiftOpenApi.java index 133af62..a6eb08d 100644 --- a/src/main/java/com/solaria/persistence/openapi/ShiftOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/professional/ShiftOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.professional; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.ShiftRequestDTO; -import com.solaria.persistence.dto.response.ShiftResponseDTO; +import com.solaria.persistence.dto.request.professional.ShiftRequestDTO; +import com.solaria.persistence.dto.response.professional.ShiftResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/TechnicalCourseOpenApi.java b/src/main/java/com/solaria/persistence/openapi/professional/TechnicalCourseOpenApi.java similarity index 92% rename from src/main/java/com/solaria/persistence/openapi/TechnicalCourseOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/professional/TechnicalCourseOpenApi.java index 5976117..29974a5 100644 --- a/src/main/java/com/solaria/persistence/openapi/TechnicalCourseOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/professional/TechnicalCourseOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.professional; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.TechnicalCourseRequestDTO; -import com.solaria.persistence.dto.response.TechnicalCourseResponseDTO; +import com.solaria.persistence.dto.request.professional.TechnicalCourseRequestDTO; +import com.solaria.persistence.dto.response.professional.TechnicalCourseResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/TechnicianAffiliationOpenApi.java b/src/main/java/com/solaria/persistence/openapi/professional/TechnicianAffiliationOpenApi.java similarity index 90% rename from src/main/java/com/solaria/persistence/openapi/TechnicianAffiliationOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/professional/TechnicianAffiliationOpenApi.java index c81388f..b081d64 100644 --- a/src/main/java/com/solaria/persistence/openapi/TechnicianAffiliationOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/professional/TechnicianAffiliationOpenApi.java @@ -1,14 +1,14 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.professional; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.patch.UpdateActiveDTO; -import com.solaria.persistence.dto.patch.UpdateTypeDTO; -import com.solaria.persistence.dto.request.TechnicianAffiliationRequestDTO; -import com.solaria.persistence.dto.response.TechnicianAffiliationResponseDTO; +import com.solaria.persistence.dto.patch.professional.UpdateActiveDTO; +import com.solaria.persistence.dto.patch.professional.UpdateTypeDTO; +import com.solaria.persistence.dto.request.professional.TechnicianAffiliationRequestDTO; +import com.solaria.persistence.dto.response.professional.TechnicianAffiliationResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/TechnicianOpenApi.java b/src/main/java/com/solaria/persistence/openapi/professional/TechnicianOpenApi.java similarity index 91% rename from src/main/java/com/solaria/persistence/openapi/TechnicianOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/professional/TechnicianOpenApi.java index 4e92508..501b258 100644 --- a/src/main/java/com/solaria/persistence/openapi/TechnicianOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/professional/TechnicianOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.professional; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.TechnicianRequestDTO; -import com.solaria.persistence.dto.response.TechnicianResponseDTO; +import com.solaria.persistence.dto.request.professional.TechnicianRequestDTO; +import com.solaria.persistence.dto.response.professional.TechnicianResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/ProposalItemOpenApi.java b/src/main/java/com/solaria/persistence/openapi/proposal/ProposalItemOpenApi.java similarity index 93% rename from src/main/java/com/solaria/persistence/openapi/ProposalItemOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/proposal/ProposalItemOpenApi.java index 243a22d..6ef7e3a 100644 --- a/src/main/java/com/solaria/persistence/openapi/ProposalItemOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/proposal/ProposalItemOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.proposal; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.ProposalItemRequestDTO; -import com.solaria.persistence.dto.response.ProposalItemResponseDTO; +import com.solaria.persistence.dto.request.proposal.ProposalItemRequestDTO; +import com.solaria.persistence.dto.response.proposal.ProposalItemResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/ProposalOpenApi.java b/src/main/java/com/solaria/persistence/openapi/proposal/ProposalOpenApi.java similarity index 96% rename from src/main/java/com/solaria/persistence/openapi/ProposalOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/proposal/ProposalOpenApi.java index dd60a30..8d6508f 100644 --- a/src/main/java/com/solaria/persistence/openapi/ProposalOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/proposal/ProposalOpenApi.java @@ -1,13 +1,13 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.proposal; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.patch.UpdateNotesDTO; -import com.solaria.persistence.dto.request.ProposalRequestDTO; -import com.solaria.persistence.dto.response.ProposalResponseDTO; +import com.solaria.persistence.dto.patch.proposal.UpdateNotesDTO; +import com.solaria.persistence.dto.request.proposal.ProposalRequestDTO; +import com.solaria.persistence.dto.response.proposal.ProposalResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/ProposalUnitOpenApi.java b/src/main/java/com/solaria/persistence/openapi/proposal/ProposalUnitOpenApi.java similarity index 93% rename from src/main/java/com/solaria/persistence/openapi/ProposalUnitOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/proposal/ProposalUnitOpenApi.java index f0e3cc1..081b0da 100644 --- a/src/main/java/com/solaria/persistence/openapi/ProposalUnitOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/proposal/ProposalUnitOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.proposal; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.ProposalUnitRequestDTO; -import com.solaria.persistence.dto.response.ProposalUnitResponseDTO; +import com.solaria.persistence.dto.request.proposal.ProposalUnitRequestDTO; +import com.solaria.persistence.dto.response.proposal.ProposalUnitResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/AddressOpenApi.java b/src/main/java/com/solaria/persistence/openapi/shared/AddressOpenApi.java similarity index 93% rename from src/main/java/com/solaria/persistence/openapi/AddressOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/shared/AddressOpenApi.java index 81dbd89..9f50204 100644 --- a/src/main/java/com/solaria/persistence/openapi/AddressOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/shared/AddressOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.shared; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.AddressRequestDTO; -import com.solaria.persistence.dto.response.AddressResponseDTO; +import com.solaria.persistence.dto.request.shared.AddressRequestDTO; +import com.solaria.persistence.dto.response.shared.AddressResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/ContactOpenApi.java b/src/main/java/com/solaria/persistence/openapi/shared/ContactOpenApi.java similarity index 92% rename from src/main/java/com/solaria/persistence/openapi/ContactOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/shared/ContactOpenApi.java index a92543c..f9db8ea 100644 --- a/src/main/java/com/solaria/persistence/openapi/ContactOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/shared/ContactOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.shared; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.ContactRequestDTO; -import com.solaria.persistence.dto.response.ContactResponseDTO; +import com.solaria.persistence.dto.request.shared.ContactRequestDTO; +import com.solaria.persistence.dto.response.shared.ContactResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/FluxLogOpenApi.java b/src/main/java/com/solaria/persistence/openapi/shared/FluxLogOpenApi.java similarity index 87% rename from src/main/java/com/solaria/persistence/openapi/FluxLogOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/shared/FluxLogOpenApi.java index 37a5a4b..5923889 100644 --- a/src/main/java/com/solaria/persistence/openapi/FluxLogOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/shared/FluxLogOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.shared; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.FluxLogRequestDTO; -import com.solaria.persistence.dto.response.FluxLogResponseDTO; +import com.solaria.persistence.dto.request.shared.FluxLogRequestDTO; +import com.solaria.persistence.dto.response.shared.FluxLogResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/GeolocalizationOpenApi.java b/src/main/java/com/solaria/persistence/openapi/shared/GeolocalizationOpenApi.java similarity index 92% rename from src/main/java/com/solaria/persistence/openapi/GeolocalizationOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/shared/GeolocalizationOpenApi.java index 8b29f2f..33ab5fb 100644 --- a/src/main/java/com/solaria/persistence/openapi/GeolocalizationOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/shared/GeolocalizationOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.shared; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.GeolocalizationRequestDTO; -import com.solaria.persistence.dto.response.GeolocalizationResponseDTO; +import com.solaria.persistence.dto.request.shared.GeolocalizationRequestDTO; +import com.solaria.persistence.dto.response.shared.GeolocalizationResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/EnergyBillOpenApi.java b/src/main/java/com/solaria/persistence/openapi/unit/EnergyBillOpenApi.java similarity index 94% rename from src/main/java/com/solaria/persistence/openapi/EnergyBillOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/unit/EnergyBillOpenApi.java index e5f74af..861631d 100644 --- a/src/main/java/com/solaria/persistence/openapi/EnergyBillOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/unit/EnergyBillOpenApi.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.unit; import java.util.List; import java.util.UUID; @@ -6,8 +6,8 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.multipart.MultipartFile; -import com.solaria.persistence.dto.request.EnergyBillRequestDTO; -import com.solaria.persistence.dto.response.EnergyBillResponseDTO; +import com.solaria.persistence.dto.request.unit.EnergyBillRequestDTO; +import com.solaria.persistence.dto.response.unit.EnergyBillResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/LocalUnitOpenApi.java b/src/main/java/com/solaria/persistence/openapi/unit/LocalUnitOpenApi.java similarity index 93% rename from src/main/java/com/solaria/persistence/openapi/LocalUnitOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/unit/LocalUnitOpenApi.java index da2531b..bc71636 100644 --- a/src/main/java/com/solaria/persistence/openapi/LocalUnitOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/unit/LocalUnitOpenApi.java @@ -1,13 +1,13 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.unit; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.patch.UpdateLocalUnitAddressIdDTO; -import com.solaria.persistence.dto.request.LocalUnitRequestDTO; -import com.solaria.persistence.dto.response.LocalUnitResponseDTO; +import com.solaria.persistence.dto.patch.unit.UpdateLocalUnitAddressIdDTO; +import com.solaria.persistence.dto.request.unit.LocalUnitRequestDTO; +import com.solaria.persistence.dto.response.unit.LocalUnitResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/LocalUnitPhotoOpenApi.java b/src/main/java/com/solaria/persistence/openapi/unit/LocalUnitPhotoOpenApi.java similarity index 93% rename from src/main/java/com/solaria/persistence/openapi/LocalUnitPhotoOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/unit/LocalUnitPhotoOpenApi.java index e706772..69a22e8 100644 --- a/src/main/java/com/solaria/persistence/openapi/LocalUnitPhotoOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/unit/LocalUnitPhotoOpenApi.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.unit; import java.util.List; import java.util.UUID; @@ -6,7 +6,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.multipart.MultipartFile; -import com.solaria.persistence.dto.response.LocalUnitPhotoResponseDTO; +import com.solaria.persistence.dto.response.unit.LocalUnitPhotoResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/openapi/UnitSpecificationsOpenApi.java b/src/main/java/com/solaria/persistence/openapi/unit/UnitSpecificationsOpenApi.java similarity index 90% rename from src/main/java/com/solaria/persistence/openapi/UnitSpecificationsOpenApi.java rename to src/main/java/com/solaria/persistence/openapi/unit/UnitSpecificationsOpenApi.java index bc8b163..4a7808b 100644 --- a/src/main/java/com/solaria/persistence/openapi/UnitSpecificationsOpenApi.java +++ b/src/main/java/com/solaria/persistence/openapi/unit/UnitSpecificationsOpenApi.java @@ -1,12 +1,12 @@ -package com.solaria.persistence.openapi; +package com.solaria.persistence.openapi.unit; import java.util.List; import java.util.UUID; import org.springframework.http.ResponseEntity; -import com.solaria.persistence.dto.request.UnitSpecificationsRequestDTO; -import com.solaria.persistence.dto.response.UnitSpecificationsResponseDTO; +import com.solaria.persistence.dto.request.unit.UnitSpecificationsRequestDTO; +import com.solaria.persistence.dto.response.unit.UnitSpecificationsResponseDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; diff --git a/src/main/java/com/solaria/persistence/repository/InventoryRepository.java b/src/main/java/com/solaria/persistence/repository/catalog/InventoryRepository.java similarity index 90% rename from src/main/java/com/solaria/persistence/repository/InventoryRepository.java rename to src/main/java/com/solaria/persistence/repository/catalog/InventoryRepository.java index 1f3defa..88b4278 100644 --- a/src/main/java/com/solaria/persistence/repository/InventoryRepository.java +++ b/src/main/java/com/solaria/persistence/repository/catalog/InventoryRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.catalog; -import com.solaria.persistence.domain.entity.Inventory; +import com.solaria.persistence.domain.entity.catalog.Inventory; import jakarta.persistence.LockModeType; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Lock; diff --git a/src/main/java/com/solaria/persistence/repository/ModelPhotoRepository.java b/src/main/java/com/solaria/persistence/repository/catalog/ModelPhotoRepository.java similarity index 77% rename from src/main/java/com/solaria/persistence/repository/ModelPhotoRepository.java rename to src/main/java/com/solaria/persistence/repository/catalog/ModelPhotoRepository.java index 842bfea..a9ba195 100644 --- a/src/main/java/com/solaria/persistence/repository/ModelPhotoRepository.java +++ b/src/main/java/com/solaria/persistence/repository/catalog/ModelPhotoRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.catalog; -import com.solaria.persistence.domain.entity.ModelPhoto; +import com.solaria.persistence.domain.entity.catalog.ModelPhoto; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/ModelRepository.java b/src/main/java/com/solaria/persistence/repository/catalog/ModelRepository.java similarity index 57% rename from src/main/java/com/solaria/persistence/repository/ModelRepository.java rename to src/main/java/com/solaria/persistence/repository/catalog/ModelRepository.java index fd0b62b..cfc6e5a 100644 --- a/src/main/java/com/solaria/persistence/repository/ModelRepository.java +++ b/src/main/java/com/solaria/persistence/repository/catalog/ModelRepository.java @@ -1,7 +1,7 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.catalog; -import com.solaria.persistence.domain.entity.Model; -import com.solaria.persistence.domain.enums.ModelStatus; +import com.solaria.persistence.domain.entity.catalog.Model; +import com.solaria.persistence.domain.enums.catalog.ModelStatus; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/OfferRepository.java b/src/main/java/com/solaria/persistence/repository/catalog/OfferRepository.java similarity index 84% rename from src/main/java/com/solaria/persistence/repository/OfferRepository.java rename to src/main/java/com/solaria/persistence/repository/catalog/OfferRepository.java index ca7db10..eeb5e85 100644 --- a/src/main/java/com/solaria/persistence/repository/OfferRepository.java +++ b/src/main/java/com/solaria/persistence/repository/catalog/OfferRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.catalog; -import com.solaria.persistence.domain.entity.Offer; +import com.solaria.persistence.domain.entity.catalog.Offer; import org.springframework.data.jpa.repository.JpaRepository; import java.time.OffsetDateTime; diff --git a/src/main/java/com/solaria/persistence/repository/OfferTranslationRepository.java b/src/main/java/com/solaria/persistence/repository/catalog/OfferTranslationRepository.java similarity index 78% rename from src/main/java/com/solaria/persistence/repository/OfferTranslationRepository.java rename to src/main/java/com/solaria/persistence/repository/catalog/OfferTranslationRepository.java index 3270c10..9ce1465 100644 --- a/src/main/java/com/solaria/persistence/repository/OfferTranslationRepository.java +++ b/src/main/java/com/solaria/persistence/repository/catalog/OfferTranslationRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.catalog; -import com.solaria.persistence.domain.entity.OfferTranslation; +import com.solaria.persistence.domain.entity.catalog.OfferTranslation; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/SupplierRepository.java b/src/main/java/com/solaria/persistence/repository/catalog/SupplierRepository.java similarity index 81% rename from src/main/java/com/solaria/persistence/repository/SupplierRepository.java rename to src/main/java/com/solaria/persistence/repository/catalog/SupplierRepository.java index e8ed130..bc9cb04 100644 --- a/src/main/java/com/solaria/persistence/repository/SupplierRepository.java +++ b/src/main/java/com/solaria/persistence/repository/catalog/SupplierRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.catalog; -import com.solaria.persistence.domain.entity.Supplier; +import com.solaria.persistence.domain.entity.catalog.Supplier; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; diff --git a/src/main/java/com/solaria/persistence/repository/BusinessContactRepository.java b/src/main/java/com/solaria/persistence/repository/company/BusinessContactRepository.java similarity index 59% rename from src/main/java/com/solaria/persistence/repository/BusinessContactRepository.java rename to src/main/java/com/solaria/persistence/repository/company/BusinessContactRepository.java index cfe4f55..9b1f2ff 100644 --- a/src/main/java/com/solaria/persistence/repository/BusinessContactRepository.java +++ b/src/main/java/com/solaria/persistence/repository/company/BusinessContactRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.company; -import com.solaria.persistence.domain.entity.BusinessContact; +import com.solaria.persistence.domain.entity.company.BusinessContact; import org.springframework.data.jpa.repository.JpaRepository; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/repository/ChargeRepository.java b/src/main/java/com/solaria/persistence/repository/company/ChargeRepository.java similarity index 79% rename from src/main/java/com/solaria/persistence/repository/ChargeRepository.java rename to src/main/java/com/solaria/persistence/repository/company/ChargeRepository.java index e6948d9..da4609b 100644 --- a/src/main/java/com/solaria/persistence/repository/ChargeRepository.java +++ b/src/main/java/com/solaria/persistence/repository/company/ChargeRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.company; -import com.solaria.persistence.domain.entity.Charge; +import com.solaria.persistence.domain.entity.company.Charge; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/CompanyPhotoRepository.java b/src/main/java/com/solaria/persistence/repository/company/CompanyPhotoRepository.java similarity index 70% rename from src/main/java/com/solaria/persistence/repository/CompanyPhotoRepository.java rename to src/main/java/com/solaria/persistence/repository/company/CompanyPhotoRepository.java index 7fdf0cb..e06ca6b 100644 --- a/src/main/java/com/solaria/persistence/repository/CompanyPhotoRepository.java +++ b/src/main/java/com/solaria/persistence/repository/company/CompanyPhotoRepository.java @@ -1,7 +1,7 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.company; -import com.solaria.persistence.domain.entity.CompanyPhoto; -import com.solaria.persistence.domain.enums.PhotoType; +import com.solaria.persistence.domain.entity.company.CompanyPhoto; +import com.solaria.persistence.domain.enums.shared.PhotoType; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/CompanyPlansRepository.java b/src/main/java/com/solaria/persistence/repository/company/CompanyPlansRepository.java similarity index 59% rename from src/main/java/com/solaria/persistence/repository/CompanyPlansRepository.java rename to src/main/java/com/solaria/persistence/repository/company/CompanyPlansRepository.java index 2fd2fe2..665038f 100644 --- a/src/main/java/com/solaria/persistence/repository/CompanyPlansRepository.java +++ b/src/main/java/com/solaria/persistence/repository/company/CompanyPlansRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.company; -import com.solaria.persistence.domain.entity.CompanyPlans; +import com.solaria.persistence.domain.entity.company.CompanyPlans; import org.springframework.data.jpa.repository.JpaRepository; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/repository/CompanyPositionsRepository.java b/src/main/java/com/solaria/persistence/repository/company/CompanyPositionsRepository.java similarity index 81% rename from src/main/java/com/solaria/persistence/repository/CompanyPositionsRepository.java rename to src/main/java/com/solaria/persistence/repository/company/CompanyPositionsRepository.java index 9c280fd..8e4ee23 100644 --- a/src/main/java/com/solaria/persistence/repository/CompanyPositionsRepository.java +++ b/src/main/java/com/solaria/persistence/repository/company/CompanyPositionsRepository.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.company; import java.util.List; import java.util.Optional; @@ -6,7 +6,7 @@ import org.springframework.data.jpa.repository.JpaRepository; -import com.solaria.persistence.domain.entity.CompanyPositions; +import com.solaria.persistence.domain.entity.company.CompanyPositions; public interface CompanyPositionsRepository extends JpaRepository { diff --git a/src/main/java/com/solaria/persistence/repository/CompanyRepository.java b/src/main/java/com/solaria/persistence/repository/company/CompanyRepository.java similarity index 85% rename from src/main/java/com/solaria/persistence/repository/CompanyRepository.java rename to src/main/java/com/solaria/persistence/repository/company/CompanyRepository.java index 70a19ac..bd45b5a 100644 --- a/src/main/java/com/solaria/persistence/repository/CompanyRepository.java +++ b/src/main/java/com/solaria/persistence/repository/company/CompanyRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.company; -import com.solaria.persistence.domain.entity.Company; +import com.solaria.persistence.domain.entity.company.Company; import org.springframework.data.jpa.repository.EntityGraph; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/main/java/com/solaria/persistence/repository/SubscriptionRepository.java b/src/main/java/com/solaria/persistence/repository/company/SubscriptionRepository.java similarity index 87% rename from src/main/java/com/solaria/persistence/repository/SubscriptionRepository.java rename to src/main/java/com/solaria/persistence/repository/company/SubscriptionRepository.java index d74c75d..b8a7c7c 100644 --- a/src/main/java/com/solaria/persistence/repository/SubscriptionRepository.java +++ b/src/main/java/com/solaria/persistence/repository/company/SubscriptionRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.company; -import com.solaria.persistence.domain.entity.Subscription; +import com.solaria.persistence.domain.entity.company.Subscription; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -32,7 +32,7 @@ void callGenerateSubscriptionCharge(@Param("subscriptionId") UUID subscriptionId boolean existsByPlanId(UUID planId); @org.springframework.data.jpa.repository.Query("SELECT CASE WHEN COUNT(s) > 0 THEN true ELSE false END " + - "FROM Subscription s WHERE s.supplier.id = :supplierId AND s.status = com.solaria.persistence.domain.enums.SubscriptionStatus.PAID " + + "FROM Subscription s WHERE s.supplier.id = :supplierId AND s.status = com.solaria.persistence.domain.enums.company.SubscriptionStatus.PAID " + "AND (s.endDate IS NULL OR s.endDate > :now)") boolean hasActiveSubscription(@Param("supplierId") UUID supplierId, @Param("now") OffsetDateTime now); } diff --git a/src/main/java/com/solaria/persistence/repository/RequesterRepository.java b/src/main/java/com/solaria/persistence/repository/execution/RequesterRepository.java similarity index 76% rename from src/main/java/com/solaria/persistence/repository/RequesterRepository.java rename to src/main/java/com/solaria/persistence/repository/execution/RequesterRepository.java index e39e613..4f3a892 100644 --- a/src/main/java/com/solaria/persistence/repository/RequesterRepository.java +++ b/src/main/java/com/solaria/persistence/repository/execution/RequesterRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.execution; -import com.solaria.persistence.domain.entity.Requester; +import com.solaria.persistence.domain.entity.execution.Requester; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/ServiceContractRepository.java b/src/main/java/com/solaria/persistence/repository/execution/ServiceContractRepository.java similarity index 77% rename from src/main/java/com/solaria/persistence/repository/ServiceContractRepository.java rename to src/main/java/com/solaria/persistence/repository/execution/ServiceContractRepository.java index 36ab47c..f9a609d 100644 --- a/src/main/java/com/solaria/persistence/repository/ServiceContractRepository.java +++ b/src/main/java/com/solaria/persistence/repository/execution/ServiceContractRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.execution; -import com.solaria.persistence.domain.entity.ServiceContract; +import com.solaria.persistence.domain.entity.execution.ServiceContract; import org.springframework.data.jpa.repository.JpaRepository; import java.util.Optional; diff --git a/src/main/java/com/solaria/persistence/repository/ServiceExecutorRepository.java b/src/main/java/com/solaria/persistence/repository/execution/ServiceExecutorRepository.java similarity index 80% rename from src/main/java/com/solaria/persistence/repository/ServiceExecutorRepository.java rename to src/main/java/com/solaria/persistence/repository/execution/ServiceExecutorRepository.java index e6de5ca..f28a093 100644 --- a/src/main/java/com/solaria/persistence/repository/ServiceExecutorRepository.java +++ b/src/main/java/com/solaria/persistence/repository/execution/ServiceExecutorRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.execution; -import com.solaria.persistence.domain.entity.ServiceExecutor; +import com.solaria.persistence.domain.entity.execution.ServiceExecutor; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/TechnicalProjectRepository.java b/src/main/java/com/solaria/persistence/repository/execution/TechnicalProjectRepository.java similarity index 80% rename from src/main/java/com/solaria/persistence/repository/TechnicalProjectRepository.java rename to src/main/java/com/solaria/persistence/repository/execution/TechnicalProjectRepository.java index f0fd666..2086beb 100644 --- a/src/main/java/com/solaria/persistence/repository/TechnicalProjectRepository.java +++ b/src/main/java/com/solaria/persistence/repository/execution/TechnicalProjectRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.execution; -import com.solaria.persistence.domain.entity.TechnicalProject; +import com.solaria.persistence.domain.entity.execution.TechnicalProject; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/TechnicalServiceRepository.java b/src/main/java/com/solaria/persistence/repository/execution/TechnicalServiceRepository.java similarity index 77% rename from src/main/java/com/solaria/persistence/repository/TechnicalServiceRepository.java rename to src/main/java/com/solaria/persistence/repository/execution/TechnicalServiceRepository.java index 5a41db7..f6aea79 100644 --- a/src/main/java/com/solaria/persistence/repository/TechnicalServiceRepository.java +++ b/src/main/java/com/solaria/persistence/repository/execution/TechnicalServiceRepository.java @@ -1,7 +1,7 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.execution; -import com.solaria.persistence.domain.entity.TechnicalService; -import com.solaria.persistence.domain.enums.ServiceStatus; +import com.solaria.persistence.domain.entity.execution.TechnicalService; +import com.solaria.persistence.domain.enums.execution.ServiceStatus; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/PermissionRepository.java b/src/main/java/com/solaria/persistence/repository/identity/PermissionRepository.java similarity index 72% rename from src/main/java/com/solaria/persistence/repository/PermissionRepository.java rename to src/main/java/com/solaria/persistence/repository/identity/PermissionRepository.java index 0b9e385..1204ef6 100644 --- a/src/main/java/com/solaria/persistence/repository/PermissionRepository.java +++ b/src/main/java/com/solaria/persistence/repository/identity/PermissionRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.identity; -import com.solaria.persistence.domain.entity.Permission; +import com.solaria.persistence.domain.entity.identity.Permission; import org.springframework.data.jpa.repository.JpaRepository; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/repository/PersonRepository.java b/src/main/java/com/solaria/persistence/repository/identity/PersonRepository.java similarity index 75% rename from src/main/java/com/solaria/persistence/repository/PersonRepository.java rename to src/main/java/com/solaria/persistence/repository/identity/PersonRepository.java index b9fb04e..6ea8094 100644 --- a/src/main/java/com/solaria/persistence/repository/PersonRepository.java +++ b/src/main/java/com/solaria/persistence/repository/identity/PersonRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.identity; -import com.solaria.persistence.domain.entity.Person; +import com.solaria.persistence.domain.entity.identity.Person; import org.springframework.data.jpa.repository.JpaRepository; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/repository/PositionPermissionRepository.java b/src/main/java/com/solaria/persistence/repository/identity/PositionPermissionRepository.java similarity index 81% rename from src/main/java/com/solaria/persistence/repository/PositionPermissionRepository.java rename to src/main/java/com/solaria/persistence/repository/identity/PositionPermissionRepository.java index 36ada02..2e4add2 100644 --- a/src/main/java/com/solaria/persistence/repository/PositionPermissionRepository.java +++ b/src/main/java/com/solaria/persistence/repository/identity/PositionPermissionRepository.java @@ -1,11 +1,11 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.identity; import java.util.List; import java.util.UUID; import org.springframework.data.jpa.repository.JpaRepository; -import com.solaria.persistence.domain.entity.PositionPermission; +import com.solaria.persistence.domain.entity.identity.PositionPermission; public interface PositionPermissionRepository extends JpaRepository { diff --git a/src/main/java/com/solaria/persistence/repository/PositionRepository.java b/src/main/java/com/solaria/persistence/repository/identity/PositionRepository.java similarity index 58% rename from src/main/java/com/solaria/persistence/repository/PositionRepository.java rename to src/main/java/com/solaria/persistence/repository/identity/PositionRepository.java index b73782b..c7f5044 100644 --- a/src/main/java/com/solaria/persistence/repository/PositionRepository.java +++ b/src/main/java/com/solaria/persistence/repository/identity/PositionRepository.java @@ -1,10 +1,10 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.identity; import java.util.UUID; import org.springframework.data.jpa.repository.JpaRepository; -import com.solaria.persistence.domain.entity.Position; +import com.solaria.persistence.domain.entity.identity.Position; public interface PositionRepository extends JpaRepository { diff --git a/src/main/java/com/solaria/persistence/repository/UserCompanyRepository.java b/src/main/java/com/solaria/persistence/repository/identity/UserCompanyRepository.java similarity index 83% rename from src/main/java/com/solaria/persistence/repository/UserCompanyRepository.java rename to src/main/java/com/solaria/persistence/repository/identity/UserCompanyRepository.java index 233bc44..921932c 100644 --- a/src/main/java/com/solaria/persistence/repository/UserCompanyRepository.java +++ b/src/main/java/com/solaria/persistence/repository/identity/UserCompanyRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.identity; -import com.solaria.persistence.domain.entity.UserCompany; +import com.solaria.persistence.domain.entity.identity.UserCompany; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/UserPhotoRepository.java b/src/main/java/com/solaria/persistence/repository/identity/UserPhotoRepository.java similarity index 68% rename from src/main/java/com/solaria/persistence/repository/UserPhotoRepository.java rename to src/main/java/com/solaria/persistence/repository/identity/UserPhotoRepository.java index ac22237..47f59c4 100644 --- a/src/main/java/com/solaria/persistence/repository/UserPhotoRepository.java +++ b/src/main/java/com/solaria/persistence/repository/identity/UserPhotoRepository.java @@ -1,7 +1,7 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.identity; -import com.solaria.persistence.domain.entity.UserPhoto; -import com.solaria.persistence.domain.enums.PhotoType; +import com.solaria.persistence.domain.entity.identity.UserPhoto; +import com.solaria.persistence.domain.enums.shared.PhotoType; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/UserRepository.java b/src/main/java/com/solaria/persistence/repository/identity/UserRepository.java similarity index 85% rename from src/main/java/com/solaria/persistence/repository/UserRepository.java rename to src/main/java/com/solaria/persistence/repository/identity/UserRepository.java index 00f2052..5e40a19 100644 --- a/src/main/java/com/solaria/persistence/repository/UserRepository.java +++ b/src/main/java/com/solaria/persistence/repository/identity/UserRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.identity; -import com.solaria.persistence.domain.entity.User; +import com.solaria.persistence.domain.entity.identity.User; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; diff --git a/src/main/java/com/solaria/persistence/repository/CertificationRecordRepository.java b/src/main/java/com/solaria/persistence/repository/professional/CertificationRecordRepository.java similarity index 76% rename from src/main/java/com/solaria/persistence/repository/CertificationRecordRepository.java rename to src/main/java/com/solaria/persistence/repository/professional/CertificationRecordRepository.java index 49a082b..e04766a 100644 --- a/src/main/java/com/solaria/persistence/repository/CertificationRecordRepository.java +++ b/src/main/java/com/solaria/persistence/repository/professional/CertificationRecordRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.professional; -import com.solaria.persistence.domain.entity.CertificationRecord; +import com.solaria.persistence.domain.entity.professional.CertificationRecord; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/CertificationRepository.java b/src/main/java/com/solaria/persistence/repository/professional/CertificationRepository.java similarity index 57% rename from src/main/java/com/solaria/persistence/repository/CertificationRepository.java rename to src/main/java/com/solaria/persistence/repository/professional/CertificationRepository.java index bf6fded..353ec17 100644 --- a/src/main/java/com/solaria/persistence/repository/CertificationRepository.java +++ b/src/main/java/com/solaria/persistence/repository/professional/CertificationRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.professional; -import com.solaria.persistence.domain.entity.Certification; +import com.solaria.persistence.domain.entity.professional.Certification; import org.springframework.data.jpa.repository.JpaRepository; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/repository/ProfessionRepository.java b/src/main/java/com/solaria/persistence/repository/professional/ProfessionRepository.java similarity index 57% rename from src/main/java/com/solaria/persistence/repository/ProfessionRepository.java rename to src/main/java/com/solaria/persistence/repository/professional/ProfessionRepository.java index 52668a2..c2f99a8 100644 --- a/src/main/java/com/solaria/persistence/repository/ProfessionRepository.java +++ b/src/main/java/com/solaria/persistence/repository/professional/ProfessionRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.professional; -import com.solaria.persistence.domain.entity.Profession; +import com.solaria.persistence.domain.entity.professional.Profession; import org.springframework.data.jpa.repository.JpaRepository; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/repository/ProfessionalRegistrationRepository.java b/src/main/java/com/solaria/persistence/repository/professional/ProfessionalRegistrationRepository.java similarity index 71% rename from src/main/java/com/solaria/persistence/repository/ProfessionalRegistrationRepository.java rename to src/main/java/com/solaria/persistence/repository/professional/ProfessionalRegistrationRepository.java index 6100e08..20270f4 100644 --- a/src/main/java/com/solaria/persistence/repository/ProfessionalRegistrationRepository.java +++ b/src/main/java/com/solaria/persistence/repository/professional/ProfessionalRegistrationRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.professional; -import com.solaria.persistence.domain.entity.ProfessionalRegistration; +import com.solaria.persistence.domain.entity.professional.ProfessionalRegistration; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/ProfessionalReviewRepository.java b/src/main/java/com/solaria/persistence/repository/professional/ProfessionalReviewRepository.java similarity index 75% rename from src/main/java/com/solaria/persistence/repository/ProfessionalReviewRepository.java rename to src/main/java/com/solaria/persistence/repository/professional/ProfessionalReviewRepository.java index c9776ba..413e70f 100644 --- a/src/main/java/com/solaria/persistence/repository/ProfessionalReviewRepository.java +++ b/src/main/java/com/solaria/persistence/repository/professional/ProfessionalReviewRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.professional; -import com.solaria.persistence.domain.entity.ProfessionalReview; +import com.solaria.persistence.domain.entity.professional.ProfessionalReview; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/ShiftRepository.java b/src/main/java/com/solaria/persistence/repository/professional/ShiftRepository.java similarity index 66% rename from src/main/java/com/solaria/persistence/repository/ShiftRepository.java rename to src/main/java/com/solaria/persistence/repository/professional/ShiftRepository.java index 91809a8..ca5ef6a 100644 --- a/src/main/java/com/solaria/persistence/repository/ShiftRepository.java +++ b/src/main/java/com/solaria/persistence/repository/professional/ShiftRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.professional; -import com.solaria.persistence.domain.entity.Shift; +import com.solaria.persistence.domain.entity.professional.Shift; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/TechnicalCourseRepository.java b/src/main/java/com/solaria/persistence/repository/professional/TechnicalCourseRepository.java similarity index 73% rename from src/main/java/com/solaria/persistence/repository/TechnicalCourseRepository.java rename to src/main/java/com/solaria/persistence/repository/professional/TechnicalCourseRepository.java index 2ffcc0a..895847e 100644 --- a/src/main/java/com/solaria/persistence/repository/TechnicalCourseRepository.java +++ b/src/main/java/com/solaria/persistence/repository/professional/TechnicalCourseRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.professional; -import com.solaria.persistence.domain.entity.TechnicalCourse; +import com.solaria.persistence.domain.entity.professional.TechnicalCourse; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/TechnicianAffiliationRepository.java b/src/main/java/com/solaria/persistence/repository/professional/TechnicianAffiliationRepository.java similarity index 80% rename from src/main/java/com/solaria/persistence/repository/TechnicianAffiliationRepository.java rename to src/main/java/com/solaria/persistence/repository/professional/TechnicianAffiliationRepository.java index 3db7242..0d696f3 100644 --- a/src/main/java/com/solaria/persistence/repository/TechnicianAffiliationRepository.java +++ b/src/main/java/com/solaria/persistence/repository/professional/TechnicianAffiliationRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.professional; -import com.solaria.persistence.domain.entity.TechnicianAffiliation; +import com.solaria.persistence.domain.entity.professional.TechnicianAffiliation; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/TechnicianRepository.java b/src/main/java/com/solaria/persistence/repository/professional/TechnicianRepository.java similarity index 72% rename from src/main/java/com/solaria/persistence/repository/TechnicianRepository.java rename to src/main/java/com/solaria/persistence/repository/professional/TechnicianRepository.java index 84b54fb..81f4f52 100644 --- a/src/main/java/com/solaria/persistence/repository/TechnicianRepository.java +++ b/src/main/java/com/solaria/persistence/repository/professional/TechnicianRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.professional; -import com.solaria.persistence.domain.entity.Technician; +import com.solaria.persistence.domain.entity.professional.Technician; import org.springframework.data.jpa.repository.JpaRepository; import java.util.Optional; diff --git a/src/main/java/com/solaria/persistence/repository/ProposalItemRepository.java b/src/main/java/com/solaria/persistence/repository/proposal/ProposalItemRepository.java similarity index 86% rename from src/main/java/com/solaria/persistence/repository/ProposalItemRepository.java rename to src/main/java/com/solaria/persistence/repository/proposal/ProposalItemRepository.java index 8458aad..e0af121 100644 --- a/src/main/java/com/solaria/persistence/repository/ProposalItemRepository.java +++ b/src/main/java/com/solaria/persistence/repository/proposal/ProposalItemRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.proposal; -import com.solaria.persistence.domain.entity.ProposalItem; +import com.solaria.persistence.domain.entity.proposal.ProposalItem; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; diff --git a/src/main/java/com/solaria/persistence/repository/ProposalRepository.java b/src/main/java/com/solaria/persistence/repository/proposal/ProposalRepository.java similarity index 80% rename from src/main/java/com/solaria/persistence/repository/ProposalRepository.java rename to src/main/java/com/solaria/persistence/repository/proposal/ProposalRepository.java index 056b9b9..77280bb 100644 --- a/src/main/java/com/solaria/persistence/repository/ProposalRepository.java +++ b/src/main/java/com/solaria/persistence/repository/proposal/ProposalRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.proposal; -import com.solaria.persistence.domain.entity.Proposal; +import com.solaria.persistence.domain.entity.proposal.Proposal; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/ProposalUnitRepository.java b/src/main/java/com/solaria/persistence/repository/proposal/ProposalUnitRepository.java similarity index 86% rename from src/main/java/com/solaria/persistence/repository/ProposalUnitRepository.java rename to src/main/java/com/solaria/persistence/repository/proposal/ProposalUnitRepository.java index 63a2cf7..fc66cca 100644 --- a/src/main/java/com/solaria/persistence/repository/ProposalUnitRepository.java +++ b/src/main/java/com/solaria/persistence/repository/proposal/ProposalUnitRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.proposal; -import com.solaria.persistence.domain.entity.ProposalUnit; +import com.solaria.persistence.domain.entity.proposal.ProposalUnit; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.repository.query.Param; diff --git a/src/main/java/com/solaria/persistence/repository/AddressRepository.java b/src/main/java/com/solaria/persistence/repository/shared/AddressRepository.java similarity index 59% rename from src/main/java/com/solaria/persistence/repository/AddressRepository.java rename to src/main/java/com/solaria/persistence/repository/shared/AddressRepository.java index bc93b67..79e4ccc 100644 --- a/src/main/java/com/solaria/persistence/repository/AddressRepository.java +++ b/src/main/java/com/solaria/persistence/repository/shared/AddressRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.shared; -import com.solaria.persistence.domain.entity.Address; +import com.solaria.persistence.domain.entity.shared.Address; import org.springframework.data.jpa.repository.JpaRepository; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/repository/ContactRepository.java b/src/main/java/com/solaria/persistence/repository/shared/ContactRepository.java similarity index 59% rename from src/main/java/com/solaria/persistence/repository/ContactRepository.java rename to src/main/java/com/solaria/persistence/repository/shared/ContactRepository.java index 1db5488..b899ea2 100644 --- a/src/main/java/com/solaria/persistence/repository/ContactRepository.java +++ b/src/main/java/com/solaria/persistence/repository/shared/ContactRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.shared; -import com.solaria.persistence.domain.entity.Contact; +import com.solaria.persistence.domain.entity.shared.Contact; import org.springframework.data.jpa.repository.JpaRepository; import java.util.UUID; diff --git a/src/main/java/com/solaria/persistence/repository/FluxLogRepository.java b/src/main/java/com/solaria/persistence/repository/shared/FluxLogRepository.java similarity index 69% rename from src/main/java/com/solaria/persistence/repository/FluxLogRepository.java rename to src/main/java/com/solaria/persistence/repository/shared/FluxLogRepository.java index f5c1f4c..392884f 100644 --- a/src/main/java/com/solaria/persistence/repository/FluxLogRepository.java +++ b/src/main/java/com/solaria/persistence/repository/shared/FluxLogRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.shared; -import com.solaria.persistence.domain.entity.FluxLog; +import com.solaria.persistence.domain.entity.shared.FluxLog; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/GeolocalizationRepository.java b/src/main/java/com/solaria/persistence/repository/shared/GeolocalizationRepository.java similarity index 72% rename from src/main/java/com/solaria/persistence/repository/GeolocalizationRepository.java rename to src/main/java/com/solaria/persistence/repository/shared/GeolocalizationRepository.java index 5331674..8019232 100644 --- a/src/main/java/com/solaria/persistence/repository/GeolocalizationRepository.java +++ b/src/main/java/com/solaria/persistence/repository/shared/GeolocalizationRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.shared; -import com.solaria.persistence.domain.entity.Geolocalization; +import com.solaria.persistence.domain.entity.shared.Geolocalization; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/specification/SupplierSpecification.java b/src/main/java/com/solaria/persistence/repository/specification/catalog/SupplierSpecification.java similarity index 91% rename from src/main/java/com/solaria/persistence/repository/specification/SupplierSpecification.java rename to src/main/java/com/solaria/persistence/repository/specification/catalog/SupplierSpecification.java index c6d8303..f839745 100644 --- a/src/main/java/com/solaria/persistence/repository/specification/SupplierSpecification.java +++ b/src/main/java/com/solaria/persistence/repository/specification/catalog/SupplierSpecification.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.repository.specification; +package com.solaria.persistence.repository.specification.catalog; import java.util.ArrayList; import java.util.List; @@ -6,10 +6,10 @@ import org.springframework.data.jpa.domain.Specification; -import com.solaria.persistence.domain.entity.Address; -import com.solaria.persistence.domain.entity.Company; -import com.solaria.persistence.domain.entity.Supplier; -import com.solaria.persistence.dto.request.SupplierSearchFilterDTO; +import com.solaria.persistence.domain.entity.shared.Address; +import com.solaria.persistence.domain.entity.company.Company; +import com.solaria.persistence.domain.entity.catalog.Supplier; +import com.solaria.persistence.dto.request.catalog.SupplierSearchFilterDTO; import jakarta.persistence.criteria.Join; import jakarta.persistence.criteria.JoinType; diff --git a/src/main/java/com/solaria/persistence/repository/EnergyBillRepository.java b/src/main/java/com/solaria/persistence/repository/unit/EnergyBillRepository.java similarity index 79% rename from src/main/java/com/solaria/persistence/repository/EnergyBillRepository.java rename to src/main/java/com/solaria/persistence/repository/unit/EnergyBillRepository.java index cffe7bd..505042e 100644 --- a/src/main/java/com/solaria/persistence/repository/EnergyBillRepository.java +++ b/src/main/java/com/solaria/persistence/repository/unit/EnergyBillRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.unit; -import com.solaria.persistence.domain.entity.EnergyBill; +import com.solaria.persistence.domain.entity.unit.EnergyBill; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/LocalUnitPhotoRepository.java b/src/main/java/com/solaria/persistence/repository/unit/LocalUnitPhotoRepository.java similarity index 79% rename from src/main/java/com/solaria/persistence/repository/LocalUnitPhotoRepository.java rename to src/main/java/com/solaria/persistence/repository/unit/LocalUnitPhotoRepository.java index 3232f91..9f6fcc8 100644 --- a/src/main/java/com/solaria/persistence/repository/LocalUnitPhotoRepository.java +++ b/src/main/java/com/solaria/persistence/repository/unit/LocalUnitPhotoRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.unit; -import com.solaria.persistence.domain.entity.LocalUnitPhoto; +import com.solaria.persistence.domain.entity.unit.LocalUnitPhoto; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/LocalUnitRepository.java b/src/main/java/com/solaria/persistence/repository/unit/LocalUnitRepository.java similarity index 82% rename from src/main/java/com/solaria/persistence/repository/LocalUnitRepository.java rename to src/main/java/com/solaria/persistence/repository/unit/LocalUnitRepository.java index 8d7ab3b..273e980 100644 --- a/src/main/java/com/solaria/persistence/repository/LocalUnitRepository.java +++ b/src/main/java/com/solaria/persistence/repository/unit/LocalUnitRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.unit; -import com.solaria.persistence.domain.entity.LocalUnit; +import com.solaria.persistence.domain.entity.unit.LocalUnit; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/repository/UnitSpecificationsRepository.java b/src/main/java/com/solaria/persistence/repository/unit/UnitSpecificationsRepository.java similarity index 79% rename from src/main/java/com/solaria/persistence/repository/UnitSpecificationsRepository.java rename to src/main/java/com/solaria/persistence/repository/unit/UnitSpecificationsRepository.java index 3353e9a..a8112ac 100644 --- a/src/main/java/com/solaria/persistence/repository/UnitSpecificationsRepository.java +++ b/src/main/java/com/solaria/persistence/repository/unit/UnitSpecificationsRepository.java @@ -1,6 +1,6 @@ -package com.solaria.persistence.repository; +package com.solaria.persistence.repository.unit; -import com.solaria.persistence.domain.entity.UnitSpecifications; +import com.solaria.persistence.domain.entity.unit.UnitSpecifications; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/src/main/java/com/solaria/persistence/security/rbac/RbacAuthorizationService.java b/src/main/java/com/solaria/persistence/security/rbac/RbacAuthorizationService.java index 64c79ad..c03e291 100644 --- a/src/main/java/com/solaria/persistence/security/rbac/RbacAuthorizationService.java +++ b/src/main/java/com/solaria/persistence/security/rbac/RbacAuthorizationService.java @@ -10,13 +10,13 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.domain.entity.Position; -import com.solaria.persistence.domain.entity.User; -import com.solaria.persistence.domain.entity.UserCompany; +import com.solaria.persistence.domain.entity.identity.Position; +import com.solaria.persistence.domain.entity.identity.User; +import com.solaria.persistence.domain.entity.identity.UserCompany; import com.solaria.persistence.exception.UnauthorizedAccessException; -import com.solaria.persistence.repository.PositionPermissionRepository; -import com.solaria.persistence.repository.UserCompanyRepository; -import com.solaria.persistence.repository.UserRepository; +import com.solaria.persistence.repository.identity.PositionPermissionRepository; +import com.solaria.persistence.repository.identity.UserCompanyRepository; +import com.solaria.persistence.repository.identity.UserRepository; /** * Resolve a autorização do usuário, em 2 camadas: diff --git a/src/main/java/com/solaria/persistence/service/GoogleTranslateService.java b/src/main/java/com/solaria/persistence/service/catalog/GoogleTranslateService.java similarity index 98% rename from src/main/java/com/solaria/persistence/service/GoogleTranslateService.java rename to src/main/java/com/solaria/persistence/service/catalog/GoogleTranslateService.java index 541c262..68d6d16 100644 --- a/src/main/java/com/solaria/persistence/service/GoogleTranslateService.java +++ b/src/main/java/com/solaria/persistence/service/catalog/GoogleTranslateService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.catalog; import java.util.List; import java.util.Map; diff --git a/src/main/java/com/solaria/persistence/service/InventoryService.java b/src/main/java/com/solaria/persistence/service/catalog/InventoryService.java similarity index 88% rename from src/main/java/com/solaria/persistence/service/InventoryService.java rename to src/main/java/com/solaria/persistence/service/catalog/InventoryService.java index 5ab63ff..25d8772 100644 --- a/src/main/java/com/solaria/persistence/service/InventoryService.java +++ b/src/main/java/com/solaria/persistence/service/catalog/InventoryService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.catalog; import java.util.List; import java.util.UUID; @@ -6,20 +6,21 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.domain.entity.Inventory; -import com.solaria.persistence.domain.entity.Model; -import com.solaria.persistence.domain.entity.Supplier; -import com.solaria.persistence.domain.enums.SupplierStatus; -import com.solaria.persistence.dto.request.InventoryRequestDTO; -import com.solaria.persistence.dto.response.InventoryResponseDTO; -import com.solaria.persistence.dto.response.ModelResponseDTO; +import com.solaria.persistence.domain.entity.catalog.Inventory; +import com.solaria.persistence.domain.entity.catalog.Model; +import com.solaria.persistence.domain.entity.catalog.Supplier; +import com.solaria.persistence.domain.enums.catalog.SupplierStatus; +import com.solaria.persistence.dto.request.catalog.InventoryRequestDTO; +import com.solaria.persistence.dto.response.catalog.InventoryResponseDTO; +import com.solaria.persistence.dto.response.catalog.ModelResponseDTO; import com.solaria.persistence.exception.BusinessRuleException; import com.solaria.persistence.exception.DuplicateResourceException; import com.solaria.persistence.exception.InvalidFieldException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.InventoryRepository; -import com.solaria.persistence.repository.ModelRepository; -import com.solaria.persistence.repository.SupplierRepository; +import com.solaria.persistence.repository.catalog.InventoryRepository; +import com.solaria.persistence.repository.catalog.ModelRepository; +import com.solaria.persistence.repository.catalog.SupplierRepository; +import com.solaria.persistence.service.company.SubscriptionService; @Service public class InventoryService { diff --git a/src/main/java/com/solaria/persistence/service/ModelPhotoService.java b/src/main/java/com/solaria/persistence/service/catalog/ModelPhotoService.java similarity index 86% rename from src/main/java/com/solaria/persistence/service/ModelPhotoService.java rename to src/main/java/com/solaria/persistence/service/catalog/ModelPhotoService.java index b4bfa27..a123326 100644 --- a/src/main/java/com/solaria/persistence/service/ModelPhotoService.java +++ b/src/main/java/com/solaria/persistence/service/catalog/ModelPhotoService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.catalog; import java.time.OffsetDateTime; import java.util.List; @@ -10,13 +10,14 @@ import org.springframework.web.multipart.MultipartFile; import com.solaria.persistence.config.CloudinaryProperties; -import com.solaria.persistence.domain.entity.Model; -import com.solaria.persistence.domain.entity.ModelPhoto; -import com.solaria.persistence.dto.response.ModelPhotoResponseDTO; +import com.solaria.persistence.domain.entity.catalog.Model; +import com.solaria.persistence.domain.entity.catalog.ModelPhoto; +import com.solaria.persistence.dto.response.catalog.ModelPhotoResponseDTO; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.ModelPhotoRepository; -import com.solaria.persistence.repository.ModelRepository; -import com.solaria.persistence.service.CloudinaryService.UploadResult; +import com.solaria.persistence.repository.catalog.ModelPhotoRepository; +import com.solaria.persistence.repository.catalog.ModelRepository; +import com.solaria.persistence.service.shared.CloudinaryService.UploadResult; +import com.solaria.persistence.service.shared.CloudinaryService; @Service public class ModelPhotoService { diff --git a/src/main/java/com/solaria/persistence/service/ModelService.java b/src/main/java/com/solaria/persistence/service/catalog/ModelService.java similarity index 91% rename from src/main/java/com/solaria/persistence/service/ModelService.java rename to src/main/java/com/solaria/persistence/service/catalog/ModelService.java index 285776f..48d9596 100644 --- a/src/main/java/com/solaria/persistence/service/ModelService.java +++ b/src/main/java/com/solaria/persistence/service/catalog/ModelService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.catalog; import java.math.BigDecimal; import java.util.List; @@ -9,18 +9,18 @@ import tools.jackson.databind.ObjectMapper; -import com.solaria.persistence.domain.entity.Model; -import com.solaria.persistence.domain.enums.ModelStatus; -import com.solaria.persistence.dto.request.ModelRequestDTO; -import com.solaria.persistence.dto.response.ModelResponseDTO; +import com.solaria.persistence.domain.entity.catalog.Model; +import com.solaria.persistence.domain.enums.catalog.ModelStatus; +import com.solaria.persistence.dto.request.catalog.ModelRequestDTO; +import com.solaria.persistence.dto.response.catalog.ModelResponseDTO; import com.solaria.persistence.exception.BusinessRuleException; import com.solaria.persistence.exception.InvalidFieldException; import com.solaria.persistence.exception.ResourceInUseException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.InventoryRepository; -import com.solaria.persistence.repository.ModelPhotoRepository; -import com.solaria.persistence.repository.ModelRepository; -import com.solaria.persistence.repository.OfferRepository; +import com.solaria.persistence.repository.catalog.InventoryRepository; +import com.solaria.persistence.repository.catalog.ModelPhotoRepository; +import com.solaria.persistence.repository.catalog.ModelRepository; +import com.solaria.persistence.repository.catalog.OfferRepository; @Service public class ModelService { diff --git a/src/main/java/com/solaria/persistence/service/OfferService.java b/src/main/java/com/solaria/persistence/service/catalog/OfferService.java similarity index 90% rename from src/main/java/com/solaria/persistence/service/OfferService.java rename to src/main/java/com/solaria/persistence/service/catalog/OfferService.java index 0ed40e7..fa7f6dd 100644 --- a/src/main/java/com/solaria/persistence/service/OfferService.java +++ b/src/main/java/com/solaria/persistence/service/catalog/OfferService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.catalog; import java.math.BigDecimal; import java.time.OffsetDateTime; @@ -10,27 +10,28 @@ import org.springframework.transaction.support.TransactionSynchronization; import org.springframework.transaction.support.TransactionSynchronizationManager; -import com.solaria.persistence.domain.entity.Model; -import com.solaria.persistence.domain.entity.Offer; -import com.solaria.persistence.domain.entity.OfferTranslation; -import com.solaria.persistence.domain.entity.Supplier; -import com.solaria.persistence.domain.enums.ModelStatus; -import com.solaria.persistence.domain.enums.SupplierStatus; -import com.solaria.persistence.domain.enums.TranslationStatus; -import com.solaria.persistence.dto.request.OfferRequestDTO; -import com.solaria.persistence.dto.response.ModelResponseDTO; -import com.solaria.persistence.dto.response.OfferResponseDTO; -import com.solaria.persistence.dto.response.OfferTranslationResponseDTO; +import com.solaria.persistence.domain.entity.catalog.Model; +import com.solaria.persistence.domain.entity.catalog.Offer; +import com.solaria.persistence.domain.entity.catalog.OfferTranslation; +import com.solaria.persistence.domain.entity.catalog.Supplier; +import com.solaria.persistence.domain.enums.catalog.ModelStatus; +import com.solaria.persistence.domain.enums.catalog.SupplierStatus; +import com.solaria.persistence.domain.enums.catalog.TranslationStatus; +import com.solaria.persistence.dto.request.catalog.OfferRequestDTO; +import com.solaria.persistence.dto.response.catalog.ModelResponseDTO; +import com.solaria.persistence.dto.response.catalog.OfferResponseDTO; +import com.solaria.persistence.dto.response.catalog.OfferTranslationResponseDTO; import com.solaria.persistence.exception.BusinessRuleException; import com.solaria.persistence.exception.InvalidFieldException; import com.solaria.persistence.exception.ResourceInUseException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.ModelRepository; -import com.solaria.persistence.repository.OfferRepository; -import com.solaria.persistence.repository.OfferTranslationRepository; -import com.solaria.persistence.repository.ProposalItemRepository; -import com.solaria.persistence.repository.SupplierRepository; +import com.solaria.persistence.repository.catalog.ModelRepository; +import com.solaria.persistence.repository.catalog.OfferRepository; +import com.solaria.persistence.repository.catalog.OfferTranslationRepository; +import com.solaria.persistence.repository.proposal.ProposalItemRepository; +import com.solaria.persistence.repository.catalog.SupplierRepository; import com.solaria.persistence.util.SlugUtil; +import com.solaria.persistence.service.company.SubscriptionService; @Service public class OfferService { diff --git a/src/main/java/com/solaria/persistence/service/OfferTranslationService.java b/src/main/java/com/solaria/persistence/service/catalog/OfferTranslationService.java similarity index 91% rename from src/main/java/com/solaria/persistence/service/OfferTranslationService.java rename to src/main/java/com/solaria/persistence/service/catalog/OfferTranslationService.java index c70d68b..cbe2081 100644 --- a/src/main/java/com/solaria/persistence/service/OfferTranslationService.java +++ b/src/main/java/com/solaria/persistence/service/catalog/OfferTranslationService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.catalog; import java.util.ArrayList; import java.util.List; @@ -10,11 +10,11 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.domain.entity.Offer; -import com.solaria.persistence.domain.entity.OfferTranslation; -import com.solaria.persistence.domain.enums.TranslationStatus; -import com.solaria.persistence.repository.OfferRepository; -import com.solaria.persistence.repository.OfferTranslationRepository; +import com.solaria.persistence.domain.entity.catalog.Offer; +import com.solaria.persistence.domain.entity.catalog.OfferTranslation; +import com.solaria.persistence.domain.enums.catalog.TranslationStatus; +import com.solaria.persistence.repository.catalog.OfferRepository; +import com.solaria.persistence.repository.catalog.OfferTranslationRepository; import com.solaria.persistence.util.SupportedLocales; /** diff --git a/src/main/java/com/solaria/persistence/service/SupplierCacheService.java b/src/main/java/com/solaria/persistence/service/catalog/SupplierCacheService.java similarity index 95% rename from src/main/java/com/solaria/persistence/service/SupplierCacheService.java rename to src/main/java/com/solaria/persistence/service/catalog/SupplierCacheService.java index b756dc9..9e78cd6 100644 --- a/src/main/java/com/solaria/persistence/service/SupplierCacheService.java +++ b/src/main/java/com/solaria/persistence/service/catalog/SupplierCacheService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.catalog; import java.time.Duration; import java.util.Optional; @@ -11,8 +11,8 @@ import org.springframework.stereotype.Service; import com.solaria.persistence.config.RedisProperties; -import com.solaria.persistence.dto.request.SupplierSearchFilterDTO; -import com.solaria.persistence.dto.response.SupplierSearchResponseDTO; +import com.solaria.persistence.dto.request.catalog.SupplierSearchFilterDTO; +import com.solaria.persistence.dto.response.catalog.SupplierSearchResponseDTO; import com.solaria.persistence.util.CacheKeyGenerator; @Service diff --git a/src/main/java/com/solaria/persistence/service/SupplierService.java b/src/main/java/com/solaria/persistence/service/catalog/SupplierService.java similarity index 87% rename from src/main/java/com/solaria/persistence/service/SupplierService.java rename to src/main/java/com/solaria/persistence/service/catalog/SupplierService.java index 8486d53..7f74022 100644 --- a/src/main/java/com/solaria/persistence/service/SupplierService.java +++ b/src/main/java/com/solaria/persistence/service/catalog/SupplierService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.catalog; import java.util.List; import java.util.Map; @@ -12,26 +12,26 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.dto.request.SupplierSearchFilterDTO; -import com.solaria.persistence.dto.response.AddressResponseDTO; -import com.solaria.persistence.dto.response.BusinessContactResponseDTO; -import com.solaria.persistence.dto.response.CompanyResponseDTO; -import com.solaria.persistence.dto.request.SupplierRequestDTO; -import com.solaria.persistence.dto.response.SupplierResponseDTO; -import com.solaria.persistence.dto.response.SupplierSearchResponseDTO; -import com.solaria.persistence.domain.entity.Address; -import com.solaria.persistence.domain.entity.BusinessContact; -import com.solaria.persistence.domain.entity.Company; -import com.solaria.persistence.domain.entity.Supplier; -import com.solaria.persistence.domain.enums.CompanyStatus; -import com.solaria.persistence.domain.enums.SupplierStatus; +import com.solaria.persistence.dto.request.catalog.SupplierSearchFilterDTO; +import com.solaria.persistence.dto.response.shared.AddressResponseDTO; +import com.solaria.persistence.dto.response.company.BusinessContactResponseDTO; +import com.solaria.persistence.dto.response.company.CompanyResponseDTO; +import com.solaria.persistence.dto.request.catalog.SupplierRequestDTO; +import com.solaria.persistence.dto.response.catalog.SupplierResponseDTO; +import com.solaria.persistence.dto.response.catalog.SupplierSearchResponseDTO; +import com.solaria.persistence.domain.entity.shared.Address; +import com.solaria.persistence.domain.entity.company.BusinessContact; +import com.solaria.persistence.domain.entity.company.Company; +import com.solaria.persistence.domain.entity.catalog.Supplier; +import com.solaria.persistence.domain.enums.company.CompanyStatus; +import com.solaria.persistence.domain.enums.catalog.SupplierStatus; import com.solaria.persistence.exception.BusinessRuleException; import com.solaria.persistence.exception.DuplicateResourceException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.CompanyRepository; -import com.solaria.persistence.repository.RequesterRepository; -import com.solaria.persistence.repository.SupplierRepository; -import com.solaria.persistence.repository.specification.SupplierSpecification; +import com.solaria.persistence.repository.company.CompanyRepository; +import com.solaria.persistence.repository.execution.RequesterRepository; +import com.solaria.persistence.repository.catalog.SupplierRepository; +import com.solaria.persistence.repository.specification.catalog.SupplierSpecification; import com.solaria.persistence.security.rbac.RbacAuthorizationService; diff --git a/src/main/java/com/solaria/persistence/service/BusinessContactService.java b/src/main/java/com/solaria/persistence/service/company/BusinessContactService.java similarity index 88% rename from src/main/java/com/solaria/persistence/service/BusinessContactService.java rename to src/main/java/com/solaria/persistence/service/company/BusinessContactService.java index f94c95e..72557c0 100644 --- a/src/main/java/com/solaria/persistence/service/BusinessContactService.java +++ b/src/main/java/com/solaria/persistence/service/company/BusinessContactService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.company; import java.util.List; import java.util.UUID; @@ -8,13 +8,13 @@ import tools.jackson.databind.ObjectMapper; -import com.solaria.persistence.domain.entity.BusinessContact; -import com.solaria.persistence.dto.request.BusinessContactRequestDTO; -import com.solaria.persistence.dto.response.BusinessContactResponseDTO; +import com.solaria.persistence.domain.entity.company.BusinessContact; +import com.solaria.persistence.dto.request.company.BusinessContactRequestDTO; +import com.solaria.persistence.dto.response.company.BusinessContactResponseDTO; import com.solaria.persistence.exception.ResourceInUseException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.BusinessContactRepository; -import com.solaria.persistence.repository.CompanyRepository; +import com.solaria.persistence.repository.company.BusinessContactRepository; +import com.solaria.persistence.repository.company.CompanyRepository; @Service public class BusinessContactService { diff --git a/src/main/java/com/solaria/persistence/service/ChargeService.java b/src/main/java/com/solaria/persistence/service/company/ChargeService.java similarity index 91% rename from src/main/java/com/solaria/persistence/service/ChargeService.java rename to src/main/java/com/solaria/persistence/service/company/ChargeService.java index 27d8f14..69dfcdc 100644 --- a/src/main/java/com/solaria/persistence/service/ChargeService.java +++ b/src/main/java/com/solaria/persistence/service/company/ChargeService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.company; import java.math.BigDecimal; import java.time.LocalDate; @@ -10,17 +10,17 @@ import org.springframework.transaction.annotation.Transactional; import tools.jackson.databind.ObjectMapper; -import com.solaria.persistence.dto.request.ChargeRequestDTO; -import com.solaria.persistence.dto.response.ChargeResponseDTO; -import com.solaria.persistence.domain.entity.Charge; -import com.solaria.persistence.domain.entity.Subscription; -import com.solaria.persistence.domain.enums.BillingStatus; -import com.solaria.persistence.domain.enums.PaymentMethod; +import com.solaria.persistence.dto.request.company.ChargeRequestDTO; +import com.solaria.persistence.dto.response.company.ChargeResponseDTO; +import com.solaria.persistence.domain.entity.company.Charge; +import com.solaria.persistence.domain.entity.company.Subscription; +import com.solaria.persistence.domain.enums.company.BillingStatus; +import com.solaria.persistence.domain.enums.company.PaymentMethod; import com.solaria.persistence.exception.BusinessRuleException; import com.solaria.persistence.exception.InvalidFieldException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.ChargeRepository; -import com.solaria.persistence.repository.SubscriptionRepository; +import com.solaria.persistence.repository.company.ChargeRepository; +import com.solaria.persistence.repository.company.SubscriptionRepository; import com.solaria.persistence.security.rbac.RbacAuthorizationService; @Service diff --git a/src/main/java/com/solaria/persistence/service/CompanyPhotoService.java b/src/main/java/com/solaria/persistence/service/company/CompanyPhotoService.java similarity index 87% rename from src/main/java/com/solaria/persistence/service/CompanyPhotoService.java rename to src/main/java/com/solaria/persistence/service/company/CompanyPhotoService.java index 17e31b1..2ddf550 100644 --- a/src/main/java/com/solaria/persistence/service/CompanyPhotoService.java +++ b/src/main/java/com/solaria/persistence/service/company/CompanyPhotoService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.company; import java.time.OffsetDateTime; import java.util.List; @@ -10,15 +10,16 @@ import org.springframework.web.multipart.MultipartFile; import com.solaria.persistence.config.CloudinaryProperties; -import com.solaria.persistence.domain.entity.Company; -import com.solaria.persistence.domain.entity.CompanyPhoto; -import com.solaria.persistence.domain.enums.PhotoType; -import com.solaria.persistence.dto.response.CompanyPhotoResponseDTO; +import com.solaria.persistence.domain.entity.company.Company; +import com.solaria.persistence.domain.entity.company.CompanyPhoto; +import com.solaria.persistence.domain.enums.shared.PhotoType; +import com.solaria.persistence.dto.response.company.CompanyPhotoResponseDTO; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.CompanyPhotoRepository; -import com.solaria.persistence.repository.CompanyRepository; +import com.solaria.persistence.repository.company.CompanyPhotoRepository; +import com.solaria.persistence.repository.company.CompanyRepository; import com.solaria.persistence.security.rbac.RbacAuthorizationService; -import com.solaria.persistence.service.CloudinaryService.UploadResult; +import com.solaria.persistence.service.shared.CloudinaryService.UploadResult; +import com.solaria.persistence.service.shared.CloudinaryService; @Service public class CompanyPhotoService { diff --git a/src/main/java/com/solaria/persistence/service/CompanyPlansService.java b/src/main/java/com/solaria/persistence/service/company/CompanyPlansService.java similarity index 88% rename from src/main/java/com/solaria/persistence/service/CompanyPlansService.java rename to src/main/java/com/solaria/persistence/service/company/CompanyPlansService.java index e943be2..c5b9d25 100644 --- a/src/main/java/com/solaria/persistence/service/CompanyPlansService.java +++ b/src/main/java/com/solaria/persistence/service/company/CompanyPlansService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.company; import java.math.BigDecimal; import java.util.List; @@ -9,14 +9,14 @@ import tools.jackson.databind.ObjectMapper; -import com.solaria.persistence.domain.entity.CompanyPlans; -import com.solaria.persistence.dto.request.CompanyPlansRequestDTO; -import com.solaria.persistence.dto.response.CompanyPlansResponseDTO; +import com.solaria.persistence.domain.entity.company.CompanyPlans; +import com.solaria.persistence.dto.request.company.CompanyPlansRequestDTO; +import com.solaria.persistence.dto.response.company.CompanyPlansResponseDTO; import com.solaria.persistence.exception.InvalidFieldException; import com.solaria.persistence.exception.ResourceInUseException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.CompanyPlansRepository; -import com.solaria.persistence.repository.SubscriptionRepository; +import com.solaria.persistence.repository.company.CompanyPlansRepository; +import com.solaria.persistence.repository.company.SubscriptionRepository; @Service public class CompanyPlansService { diff --git a/src/main/java/com/solaria/persistence/service/CompanyPositionsService.java b/src/main/java/com/solaria/persistence/service/company/CompanyPositionsService.java similarity index 86% rename from src/main/java/com/solaria/persistence/service/CompanyPositionsService.java rename to src/main/java/com/solaria/persistence/service/company/CompanyPositionsService.java index cea3e48..2596ebf 100644 --- a/src/main/java/com/solaria/persistence/service/CompanyPositionsService.java +++ b/src/main/java/com/solaria/persistence/service/company/CompanyPositionsService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.company; import java.util.List; import java.util.UUID; @@ -7,19 +7,19 @@ import org.springframework.transaction.annotation.Transactional; import tools.jackson.databind.ObjectMapper; -import com.solaria.persistence.dto.request.CompanyPositionsRequestDTO; -import com.solaria.persistence.dto.response.CompanyPositionsResponseDTO; -import com.solaria.persistence.dto.response.PositionResponseDTO; -import com.solaria.persistence.domain.entity.Company; -import com.solaria.persistence.domain.entity.CompanyPositions; -import com.solaria.persistence.domain.entity.Position; +import com.solaria.persistence.dto.request.company.CompanyPositionsRequestDTO; +import com.solaria.persistence.dto.response.company.CompanyPositionsResponseDTO; +import com.solaria.persistence.dto.response.identity.PositionResponseDTO; +import com.solaria.persistence.domain.entity.company.Company; +import com.solaria.persistence.domain.entity.company.CompanyPositions; +import com.solaria.persistence.domain.entity.identity.Position; import com.solaria.persistence.exception.DuplicateResourceException; import com.solaria.persistence.exception.ResourceInUseException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.CompanyPositionsRepository; -import com.solaria.persistence.repository.CompanyRepository; -import com.solaria.persistence.repository.PositionRepository; -import com.solaria.persistence.repository.UserCompanyRepository; +import com.solaria.persistence.repository.company.CompanyPositionsRepository; +import com.solaria.persistence.repository.company.CompanyRepository; +import com.solaria.persistence.repository.identity.PositionRepository; +import com.solaria.persistence.repository.identity.UserCompanyRepository; import com.solaria.persistence.security.rbac.RbacAuthorizationService; @Service diff --git a/src/main/java/com/solaria/persistence/service/CompanyService.java b/src/main/java/com/solaria/persistence/service/company/CompanyService.java similarity index 89% rename from src/main/java/com/solaria/persistence/service/CompanyService.java rename to src/main/java/com/solaria/persistence/service/company/CompanyService.java index 06b0450..7fa963c 100644 --- a/src/main/java/com/solaria/persistence/service/CompanyService.java +++ b/src/main/java/com/solaria/persistence/service/company/CompanyService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.company; import java.util.List; import java.util.UUID; @@ -6,28 +6,28 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.domain.entity.Address; -import com.solaria.persistence.domain.entity.BusinessContact; -import com.solaria.persistence.domain.entity.Company; -import com.solaria.persistence.domain.enums.CompanyStatus; -import com.solaria.persistence.dto.request.CompanyRequestDTO; -import com.solaria.persistence.dto.response.AddressResponseDTO; -import com.solaria.persistence.dto.response.BusinessContactResponseDTO; -import com.solaria.persistence.dto.response.CompanyResponseDTO; +import com.solaria.persistence.domain.entity.shared.Address; +import com.solaria.persistence.domain.entity.company.BusinessContact; +import com.solaria.persistence.domain.entity.company.Company; +import com.solaria.persistence.domain.enums.company.CompanyStatus; +import com.solaria.persistence.dto.request.company.CompanyRequestDTO; +import com.solaria.persistence.dto.response.shared.AddressResponseDTO; +import com.solaria.persistence.dto.response.company.BusinessContactResponseDTO; +import com.solaria.persistence.dto.response.company.CompanyResponseDTO; import com.solaria.persistence.exception.BusinessRuleException; import com.solaria.persistence.exception.DuplicateResourceException; import com.solaria.persistence.exception.InvalidFieldException; import com.solaria.persistence.exception.ResourceInUseException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.AddressRepository; -import com.solaria.persistence.repository.BusinessContactRepository; -import com.solaria.persistence.repository.CompanyPhotoRepository; -import com.solaria.persistence.repository.CompanyPositionsRepository; -import com.solaria.persistence.repository.CompanyRepository; -import com.solaria.persistence.repository.RequesterRepository; -import com.solaria.persistence.repository.SupplierRepository; -import com.solaria.persistence.repository.TechnicianAffiliationRepository; -import com.solaria.persistence.repository.UserCompanyRepository; +import com.solaria.persistence.repository.shared.AddressRepository; +import com.solaria.persistence.repository.company.BusinessContactRepository; +import com.solaria.persistence.repository.company.CompanyPhotoRepository; +import com.solaria.persistence.repository.company.CompanyPositionsRepository; +import com.solaria.persistence.repository.company.CompanyRepository; +import com.solaria.persistence.repository.execution.RequesterRepository; +import com.solaria.persistence.repository.catalog.SupplierRepository; +import com.solaria.persistence.repository.professional.TechnicianAffiliationRepository; +import com.solaria.persistence.repository.identity.UserCompanyRepository; import com.solaria.persistence.util.SlugUtil; @Service diff --git a/src/main/java/com/solaria/persistence/service/SubscriptionService.java b/src/main/java/com/solaria/persistence/service/company/SubscriptionService.java similarity index 90% rename from src/main/java/com/solaria/persistence/service/SubscriptionService.java rename to src/main/java/com/solaria/persistence/service/company/SubscriptionService.java index 727b13a..effda8e 100644 --- a/src/main/java/com/solaria/persistence/service/SubscriptionService.java +++ b/src/main/java/com/solaria/persistence/service/company/SubscriptionService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.company; import java.time.OffsetDateTime; import java.util.List; @@ -9,19 +9,19 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.dto.response.CompanyPlansResponseDTO; -import com.solaria.persistence.dto.request.SubscriptionRequestDTO; -import com.solaria.persistence.dto.response.SubscriptionResponseDTO; -import com.solaria.persistence.domain.entity.CompanyPlans; -import com.solaria.persistence.domain.entity.Subscription; -import com.solaria.persistence.domain.entity.Supplier; -import com.solaria.persistence.domain.enums.SubscriptionStatus; +import com.solaria.persistence.dto.response.company.CompanyPlansResponseDTO; +import com.solaria.persistence.dto.request.company.SubscriptionRequestDTO; +import com.solaria.persistence.dto.response.company.SubscriptionResponseDTO; +import com.solaria.persistence.domain.entity.company.CompanyPlans; +import com.solaria.persistence.domain.entity.company.Subscription; +import com.solaria.persistence.domain.entity.catalog.Supplier; +import com.solaria.persistence.domain.enums.company.SubscriptionStatus; import com.solaria.persistence.exception.BusinessRuleException; import com.solaria.persistence.exception.DuplicateResourceException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.CompanyPlansRepository; -import com.solaria.persistence.repository.SubscriptionRepository; -import com.solaria.persistence.repository.SupplierRepository; +import com.solaria.persistence.repository.company.CompanyPlansRepository; +import com.solaria.persistence.repository.company.SubscriptionRepository; +import com.solaria.persistence.repository.catalog.SupplierRepository; import com.solaria.persistence.security.rbac.RbacAuthorizationService; @Service diff --git a/src/main/java/com/solaria/persistence/service/RequesterService.java b/src/main/java/com/solaria/persistence/service/execution/RequesterService.java similarity index 85% rename from src/main/java/com/solaria/persistence/service/RequesterService.java rename to src/main/java/com/solaria/persistence/service/execution/RequesterService.java index 82d637a..35ab7e2 100644 --- a/src/main/java/com/solaria/persistence/service/RequesterService.java +++ b/src/main/java/com/solaria/persistence/service/execution/RequesterService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.execution; import java.util.List; import java.util.UUID; @@ -6,25 +6,25 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.domain.entity.Address; -import com.solaria.persistence.domain.entity.BusinessContact; -import com.solaria.persistence.domain.entity.Company; -import com.solaria.persistence.domain.entity.Requester; -import com.solaria.persistence.domain.enums.CompanyStatus; -import com.solaria.persistence.dto.request.RequesterRequestDTO; -import com.solaria.persistence.dto.response.AddressResponseDTO; -import com.solaria.persistence.dto.response.BusinessContactResponseDTO; -import com.solaria.persistence.dto.response.CompanyResponseDTO; -import com.solaria.persistence.dto.response.RequesterResponseDTO; +import com.solaria.persistence.domain.entity.shared.Address; +import com.solaria.persistence.domain.entity.company.BusinessContact; +import com.solaria.persistence.domain.entity.company.Company; +import com.solaria.persistence.domain.entity.execution.Requester; +import com.solaria.persistence.domain.enums.company.CompanyStatus; +import com.solaria.persistence.dto.request.execution.RequesterRequestDTO; +import com.solaria.persistence.dto.response.shared.AddressResponseDTO; +import com.solaria.persistence.dto.response.company.BusinessContactResponseDTO; +import com.solaria.persistence.dto.response.company.CompanyResponseDTO; +import com.solaria.persistence.dto.response.execution.RequesterResponseDTO; import com.solaria.persistence.exception.BusinessRuleException; import com.solaria.persistence.exception.DuplicateResourceException; import com.solaria.persistence.exception.ResourceInUseException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.CompanyRepository; -import com.solaria.persistence.repository.ProposalRepository; -import com.solaria.persistence.repository.RequesterRepository; -import com.solaria.persistence.repository.SupplierRepository; -import com.solaria.persistence.repository.TechnicalProjectRepository; +import com.solaria.persistence.repository.company.CompanyRepository; +import com.solaria.persistence.repository.proposal.ProposalRepository; +import com.solaria.persistence.repository.execution.RequesterRepository; +import com.solaria.persistence.repository.catalog.SupplierRepository; +import com.solaria.persistence.repository.execution.TechnicalProjectRepository; @Service public class RequesterService { diff --git a/src/main/java/com/solaria/persistence/service/ServiceContractService.java b/src/main/java/com/solaria/persistence/service/execution/ServiceContractService.java similarity index 90% rename from src/main/java/com/solaria/persistence/service/ServiceContractService.java rename to src/main/java/com/solaria/persistence/service/execution/ServiceContractService.java index 37cb4d3..145372f 100644 --- a/src/main/java/com/solaria/persistence/service/ServiceContractService.java +++ b/src/main/java/com/solaria/persistence/service/execution/ServiceContractService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.execution; import java.time.LocalDate; import java.util.UUID; @@ -7,17 +7,17 @@ import org.springframework.transaction.annotation.Transactional; import tools.jackson.databind.ObjectMapper; -import com.solaria.persistence.dto.request.ServiceContractRequestDTO; -import com.solaria.persistence.dto.response.ServiceContractResponseDTO; -import com.solaria.persistence.domain.entity.ServiceContract; -import com.solaria.persistence.domain.entity.TechnicalService; -import com.solaria.persistence.domain.enums.ServiceStatus; +import com.solaria.persistence.dto.request.execution.ServiceContractRequestDTO; +import com.solaria.persistence.dto.response.execution.ServiceContractResponseDTO; +import com.solaria.persistence.domain.entity.execution.ServiceContract; +import com.solaria.persistence.domain.entity.execution.TechnicalService; +import com.solaria.persistence.domain.enums.execution.ServiceStatus; import com.solaria.persistence.exception.BusinessRuleException; import com.solaria.persistence.exception.DuplicateResourceException; import com.solaria.persistence.exception.InvalidFieldException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.ServiceContractRepository; -import com.solaria.persistence.repository.TechnicalServiceRepository; +import com.solaria.persistence.repository.execution.ServiceContractRepository; +import com.solaria.persistence.repository.execution.TechnicalServiceRepository; import com.solaria.persistence.security.rbac.RbacAuthorizationService; diff --git a/src/main/java/com/solaria/persistence/service/ServiceExecutorService.java b/src/main/java/com/solaria/persistence/service/execution/ServiceExecutorService.java similarity index 86% rename from src/main/java/com/solaria/persistence/service/ServiceExecutorService.java rename to src/main/java/com/solaria/persistence/service/execution/ServiceExecutorService.java index 4f0b0e9..f777846 100644 --- a/src/main/java/com/solaria/persistence/service/ServiceExecutorService.java +++ b/src/main/java/com/solaria/persistence/service/execution/ServiceExecutorService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.execution; import java.util.List; import java.util.UUID; @@ -8,20 +8,20 @@ import tools.jackson.databind.ObjectMapper; -import com.solaria.persistence.domain.entity.ServiceExecutor; -import com.solaria.persistence.domain.entity.TechnicalService; -import com.solaria.persistence.domain.entity.TechnicianAffiliation; -import com.solaria.persistence.domain.enums.ServiceStatus; -import com.solaria.persistence.dto.request.ServiceExecutorRequestDTO; -import com.solaria.persistence.dto.response.ServiceExecutorResponseDTO; -import com.solaria.persistence.dto.response.TechnicianAffiliationResponseDTO; +import com.solaria.persistence.domain.entity.execution.ServiceExecutor; +import com.solaria.persistence.domain.entity.execution.TechnicalService; +import com.solaria.persistence.domain.entity.professional.TechnicianAffiliation; +import com.solaria.persistence.domain.enums.execution.ServiceStatus; +import com.solaria.persistence.dto.request.execution.ServiceExecutorRequestDTO; +import com.solaria.persistence.dto.response.execution.ServiceExecutorResponseDTO; +import com.solaria.persistence.dto.response.professional.TechnicianAffiliationResponseDTO; import com.solaria.persistence.exception.BusinessRuleException; import com.solaria.persistence.exception.DuplicateResourceException; import com.solaria.persistence.exception.InvalidFieldException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.ServiceExecutorRepository; -import com.solaria.persistence.repository.TechnicalServiceRepository; -import com.solaria.persistence.repository.TechnicianAffiliationRepository; +import com.solaria.persistence.repository.execution.ServiceExecutorRepository; +import com.solaria.persistence.repository.execution.TechnicalServiceRepository; +import com.solaria.persistence.repository.professional.TechnicianAffiliationRepository; @Service diff --git a/src/main/java/com/solaria/persistence/service/TechnicalProjectService.java b/src/main/java/com/solaria/persistence/service/execution/TechnicalProjectService.java similarity index 88% rename from src/main/java/com/solaria/persistence/service/TechnicalProjectService.java rename to src/main/java/com/solaria/persistence/service/execution/TechnicalProjectService.java index a6420c0..d0d61ba 100644 --- a/src/main/java/com/solaria/persistence/service/TechnicalProjectService.java +++ b/src/main/java/com/solaria/persistence/service/execution/TechnicalProjectService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.execution; import java.util.List; import java.util.UUID; @@ -6,18 +6,18 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.domain.entity.LocalUnit; -import com.solaria.persistence.domain.entity.Requester; -import com.solaria.persistence.domain.entity.TechnicalProject; -import com.solaria.persistence.domain.enums.ServiceStatus; -import com.solaria.persistence.dto.request.TechnicalProjectRequestDTO; -import com.solaria.persistence.dto.response.TechnicalProjectResponseDTO; +import com.solaria.persistence.domain.entity.unit.LocalUnit; +import com.solaria.persistence.domain.entity.execution.Requester; +import com.solaria.persistence.domain.entity.execution.TechnicalProject; +import com.solaria.persistence.domain.enums.execution.ServiceStatus; +import com.solaria.persistence.dto.request.execution.TechnicalProjectRequestDTO; +import com.solaria.persistence.dto.response.execution.TechnicalProjectResponseDTO; import com.solaria.persistence.exception.ResourceInUseException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.LocalUnitRepository; -import com.solaria.persistence.repository.RequesterRepository; -import com.solaria.persistence.repository.TechnicalProjectRepository; -import com.solaria.persistence.repository.TechnicalServiceRepository; +import com.solaria.persistence.repository.unit.LocalUnitRepository; +import com.solaria.persistence.repository.execution.RequesterRepository; +import com.solaria.persistence.repository.execution.TechnicalProjectRepository; +import com.solaria.persistence.repository.execution.TechnicalServiceRepository; @Service public class TechnicalProjectService { diff --git a/src/main/java/com/solaria/persistence/service/TechnicalServiceService.java b/src/main/java/com/solaria/persistence/service/execution/TechnicalServiceService.java similarity index 92% rename from src/main/java/com/solaria/persistence/service/TechnicalServiceService.java rename to src/main/java/com/solaria/persistence/service/execution/TechnicalServiceService.java index 3c513e4..6e0074f 100644 --- a/src/main/java/com/solaria/persistence/service/TechnicalServiceService.java +++ b/src/main/java/com/solaria/persistence/service/execution/TechnicalServiceService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.execution; import java.time.OffsetDateTime; import java.util.List; @@ -8,16 +8,16 @@ import org.springframework.transaction.annotation.Transactional; import tools.jackson.databind.ObjectMapper; -import com.solaria.persistence.dto.request.TechnicalServiceRequestDTO; -import com.solaria.persistence.dto.response.TechnicalServiceResponseDTO; -import com.solaria.persistence.domain.entity.TechnicalProject; -import com.solaria.persistence.domain.entity.TechnicalService; -import com.solaria.persistence.domain.enums.ServiceStatus; +import com.solaria.persistence.dto.request.execution.TechnicalServiceRequestDTO; +import com.solaria.persistence.dto.response.execution.TechnicalServiceResponseDTO; +import com.solaria.persistence.domain.entity.execution.TechnicalProject; +import com.solaria.persistence.domain.entity.execution.TechnicalService; +import com.solaria.persistence.domain.enums.execution.ServiceStatus; import com.solaria.persistence.exception.BusinessRuleException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.ServiceExecutorRepository; -import com.solaria.persistence.repository.TechnicalProjectRepository; -import com.solaria.persistence.repository.TechnicalServiceRepository; +import com.solaria.persistence.repository.execution.ServiceExecutorRepository; +import com.solaria.persistence.repository.execution.TechnicalProjectRepository; +import com.solaria.persistence.repository.execution.TechnicalServiceRepository; import com.solaria.persistence.security.rbac.RbacAuthorizationService; @Service diff --git a/src/main/java/com/solaria/persistence/service/InternalUserProvisioningService.java b/src/main/java/com/solaria/persistence/service/identity/InternalUserProvisioningService.java similarity index 88% rename from src/main/java/com/solaria/persistence/service/InternalUserProvisioningService.java rename to src/main/java/com/solaria/persistence/service/identity/InternalUserProvisioningService.java index 17506e6..ee28716 100644 --- a/src/main/java/com/solaria/persistence/service/InternalUserProvisioningService.java +++ b/src/main/java/com/solaria/persistence/service/identity/InternalUserProvisioningService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.identity; import java.util.Optional; import java.util.UUID; @@ -7,9 +7,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.domain.entity.User; -import com.solaria.persistence.dto.response.InternalUserProvisionResponseDTO; -import com.solaria.persistence.repository.UserRepository; +import com.solaria.persistence.domain.entity.identity.User; +import com.solaria.persistence.dto.response.identity.InternalUserProvisionResponseDTO; +import com.solaria.persistence.repository.identity.UserRepository; // classe service dedicada a eventos de registro de Users vindos de api-auth (M2M) // separado de UserService pois fluxo prexisa ser idempotente; entrega de eventos em fila diff --git a/src/main/java/com/solaria/persistence/service/PermissionService.java b/src/main/java/com/solaria/persistence/service/identity/PermissionService.java similarity index 88% rename from src/main/java/com/solaria/persistence/service/PermissionService.java rename to src/main/java/com/solaria/persistence/service/identity/PermissionService.java index ce163a3..ef365b9 100644 --- a/src/main/java/com/solaria/persistence/service/PermissionService.java +++ b/src/main/java/com/solaria/persistence/service/identity/PermissionService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.identity; import java.util.List; import java.util.UUID; @@ -7,13 +7,13 @@ import org.springframework.transaction.annotation.Transactional; import tools.jackson.databind.ObjectMapper; -import com.solaria.persistence.dto.request.PermissionRequestDTO; -import com.solaria.persistence.dto.response.PermissionResponseDTO; -import com.solaria.persistence.domain.entity.Permission; +import com.solaria.persistence.dto.request.identity.PermissionRequestDTO; +import com.solaria.persistence.dto.response.identity.PermissionResponseDTO; +import com.solaria.persistence.domain.entity.identity.Permission; import com.solaria.persistence.exception.DuplicateResourceException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.PermissionRepository; -import com.solaria.persistence.repository.PositionPermissionRepository; +import com.solaria.persistence.repository.identity.PermissionRepository; +import com.solaria.persistence.repository.identity.PositionPermissionRepository; @Service public class PermissionService { diff --git a/src/main/java/com/solaria/persistence/service/PersonService.java b/src/main/java/com/solaria/persistence/service/identity/PersonService.java similarity index 88% rename from src/main/java/com/solaria/persistence/service/PersonService.java rename to src/main/java/com/solaria/persistence/service/identity/PersonService.java index cbd937d..46f0b00 100644 --- a/src/main/java/com/solaria/persistence/service/PersonService.java +++ b/src/main/java/com/solaria/persistence/service/identity/PersonService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.identity; import java.time.LocalDate; import java.util.List; @@ -7,20 +7,20 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.domain.entity.Contact; -import com.solaria.persistence.domain.entity.Person; -import com.solaria.persistence.domain.entity.User; -import com.solaria.persistence.dto.request.PersonRequestDTO; -import com.solaria.persistence.dto.response.ContactResponseDTO; -import com.solaria.persistence.dto.response.PersonResponseDTO; +import com.solaria.persistence.domain.entity.shared.Contact; +import com.solaria.persistence.domain.entity.identity.Person; +import com.solaria.persistence.domain.entity.identity.User; +import com.solaria.persistence.dto.request.identity.PersonRequestDTO; +import com.solaria.persistence.dto.response.shared.ContactResponseDTO; +import com.solaria.persistence.dto.response.identity.PersonResponseDTO; import com.solaria.persistence.exception.DuplicateResourceException; import com.solaria.persistence.exception.InvalidFieldException; import com.solaria.persistence.exception.ResourceInUseException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.ContactRepository; -import com.solaria.persistence.repository.PersonRepository; -import com.solaria.persistence.repository.TechnicianRepository; -import com.solaria.persistence.repository.UserRepository; +import com.solaria.persistence.repository.shared.ContactRepository; +import com.solaria.persistence.repository.identity.PersonRepository; +import com.solaria.persistence.repository.professional.TechnicianRepository; +import com.solaria.persistence.repository.identity.UserRepository; @Service public class PersonService { diff --git a/src/main/java/com/solaria/persistence/service/PositionPermissionService.java b/src/main/java/com/solaria/persistence/service/identity/PositionPermissionService.java similarity index 83% rename from src/main/java/com/solaria/persistence/service/PositionPermissionService.java rename to src/main/java/com/solaria/persistence/service/identity/PositionPermissionService.java index b809cf7..45a1039 100644 --- a/src/main/java/com/solaria/persistence/service/PositionPermissionService.java +++ b/src/main/java/com/solaria/persistence/service/identity/PositionPermissionService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.identity; import java.util.List; import java.util.UUID; @@ -6,18 +6,18 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.dto.response.PermissionResponseDTO; -import com.solaria.persistence.dto.request.PositionPermissionRequestDTO; -import com.solaria.persistence.dto.response.PositionPermissionResponseDTO; -import com.solaria.persistence.domain.entity.Permission; -import com.solaria.persistence.domain.entity.Position; -import com.solaria.persistence.domain.entity.PositionPermission; +import com.solaria.persistence.dto.response.identity.PermissionResponseDTO; +import com.solaria.persistence.dto.request.identity.PositionPermissionRequestDTO; +import com.solaria.persistence.dto.response.identity.PositionPermissionResponseDTO; +import com.solaria.persistence.domain.entity.identity.Permission; +import com.solaria.persistence.domain.entity.identity.Position; +import com.solaria.persistence.domain.entity.identity.PositionPermission; import com.solaria.persistence.exception.DuplicateResourceException; import com.solaria.persistence.exception.ResourceNotFoundException; import com.solaria.persistence.exception.UnauthorizedAccessException; -import com.solaria.persistence.repository.PermissionRepository; -import com.solaria.persistence.repository.PositionPermissionRepository; -import com.solaria.persistence.repository.PositionRepository; +import com.solaria.persistence.repository.identity.PermissionRepository; +import com.solaria.persistence.repository.identity.PositionPermissionRepository; +import com.solaria.persistence.repository.identity.PositionRepository; @Service diff --git a/src/main/java/com/solaria/persistence/service/PositionService.java b/src/main/java/com/solaria/persistence/service/identity/PositionService.java similarity index 86% rename from src/main/java/com/solaria/persistence/service/PositionService.java rename to src/main/java/com/solaria/persistence/service/identity/PositionService.java index d3f1f29..aeef835 100644 --- a/src/main/java/com/solaria/persistence/service/PositionService.java +++ b/src/main/java/com/solaria/persistence/service/identity/PositionService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.identity; import java.util.List; import java.util.UUID; @@ -7,16 +7,16 @@ import org.springframework.transaction.annotation.Transactional; import tools.jackson.databind.ObjectMapper; -import com.solaria.persistence.dto.request.PositionRequestDTO; -import com.solaria.persistence.dto.response.PositionResponseDTO; -import com.solaria.persistence.domain.entity.Position; +import com.solaria.persistence.dto.request.identity.PositionRequestDTO; +import com.solaria.persistence.dto.response.identity.PositionResponseDTO; +import com.solaria.persistence.domain.entity.identity.Position; import com.solaria.persistence.exception.ResourceInUseException; import com.solaria.persistence.exception.ResourceNotFoundException; import com.solaria.persistence.exception.UnauthorizedAccessException; -import com.solaria.persistence.repository.CompanyPositionsRepository; -import com.solaria.persistence.repository.PositionPermissionRepository; -import com.solaria.persistence.repository.PositionRepository; -import com.solaria.persistence.repository.UserCompanyRepository; +import com.solaria.persistence.repository.company.CompanyPositionsRepository; +import com.solaria.persistence.repository.identity.PositionPermissionRepository; +import com.solaria.persistence.repository.identity.PositionRepository; +import com.solaria.persistence.repository.identity.UserCompanyRepository; @Service diff --git a/src/main/java/com/solaria/persistence/service/UserCompanyService.java b/src/main/java/com/solaria/persistence/service/identity/UserCompanyService.java similarity index 89% rename from src/main/java/com/solaria/persistence/service/UserCompanyService.java rename to src/main/java/com/solaria/persistence/service/identity/UserCompanyService.java index d61df46..5ec1711 100644 --- a/src/main/java/com/solaria/persistence/service/UserCompanyService.java +++ b/src/main/java/com/solaria/persistence/service/identity/UserCompanyService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.identity; import java.util.List; import java.util.UUID; @@ -7,22 +7,22 @@ import org.springframework.transaction.annotation.Transactional; import tools.jackson.databind.ObjectMapper; -import com.solaria.persistence.dto.response.PositionResponseDTO; -import com.solaria.persistence.dto.request.UserCompanyRequestDTO; -import com.solaria.persistence.dto.response.UserCompanyResponseDTO; -import com.solaria.persistence.domain.entity.Company; -import com.solaria.persistence.domain.entity.Position; -import com.solaria.persistence.domain.entity.User; -import com.solaria.persistence.domain.entity.UserCompany; +import com.solaria.persistence.dto.response.identity.PositionResponseDTO; +import com.solaria.persistence.dto.request.identity.UserCompanyRequestDTO; +import com.solaria.persistence.dto.response.identity.UserCompanyResponseDTO; +import com.solaria.persistence.domain.entity.company.Company; +import com.solaria.persistence.domain.entity.identity.Position; +import com.solaria.persistence.domain.entity.identity.User; +import com.solaria.persistence.domain.entity.identity.UserCompany; import com.solaria.persistence.exception.DuplicateResourceException; import com.solaria.persistence.exception.InvalidFieldException; import com.solaria.persistence.exception.ResourceNotFoundException; import com.solaria.persistence.exception.UnauthorizedAccessException; -import com.solaria.persistence.repository.CompanyPositionsRepository; -import com.solaria.persistence.repository.CompanyRepository; -import com.solaria.persistence.repository.PositionRepository; -import com.solaria.persistence.repository.UserCompanyRepository; -import com.solaria.persistence.repository.UserRepository; +import com.solaria.persistence.repository.company.CompanyPositionsRepository; +import com.solaria.persistence.repository.company.CompanyRepository; +import com.solaria.persistence.repository.identity.PositionRepository; +import com.solaria.persistence.repository.identity.UserCompanyRepository; +import com.solaria.persistence.repository.identity.UserRepository; import com.solaria.persistence.security.rbac.RbacAuthorizationService; diff --git a/src/main/java/com/solaria/persistence/service/UserPhotoService.java b/src/main/java/com/solaria/persistence/service/identity/UserPhotoService.java similarity index 87% rename from src/main/java/com/solaria/persistence/service/UserPhotoService.java rename to src/main/java/com/solaria/persistence/service/identity/UserPhotoService.java index 6d4b206..4c3d64d 100644 --- a/src/main/java/com/solaria/persistence/service/UserPhotoService.java +++ b/src/main/java/com/solaria/persistence/service/identity/UserPhotoService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.identity; import java.time.OffsetDateTime; import java.util.List; @@ -10,15 +10,16 @@ import org.springframework.web.multipart.MultipartFile; import com.solaria.persistence.config.CloudinaryProperties; -import com.solaria.persistence.domain.entity.User; -import com.solaria.persistence.domain.entity.UserPhoto; -import com.solaria.persistence.domain.enums.PhotoType; -import com.solaria.persistence.dto.response.UserPhotoResponseDTO; +import com.solaria.persistence.domain.entity.identity.User; +import com.solaria.persistence.domain.entity.identity.UserPhoto; +import com.solaria.persistence.domain.enums.shared.PhotoType; +import com.solaria.persistence.dto.response.identity.UserPhotoResponseDTO; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.UserPhotoRepository; -import com.solaria.persistence.repository.UserRepository; +import com.solaria.persistence.repository.identity.UserPhotoRepository; +import com.solaria.persistence.repository.identity.UserRepository; import com.solaria.persistence.security.rbac.RbacAuthorizationService; -import com.solaria.persistence.service.CloudinaryService.UploadResult; +import com.solaria.persistence.service.shared.CloudinaryService.UploadResult; +import com.solaria.persistence.service.shared.CloudinaryService; @Service public class UserPhotoService { diff --git a/src/main/java/com/solaria/persistence/service/UserService.java b/src/main/java/com/solaria/persistence/service/identity/UserService.java similarity index 87% rename from src/main/java/com/solaria/persistence/service/UserService.java rename to src/main/java/com/solaria/persistence/service/identity/UserService.java index d0835ca..649b97a 100644 --- a/src/main/java/com/solaria/persistence/service/UserService.java +++ b/src/main/java/com/solaria/persistence/service/identity/UserService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.identity; import java.util.List; import java.util.UUID; @@ -8,16 +8,16 @@ import tools.jackson.databind.ObjectMapper; -import com.solaria.persistence.domain.entity.User; -import com.solaria.persistence.dto.request.UserRequestDTO; -import com.solaria.persistence.dto.response.UserResponseDTO; +import com.solaria.persistence.domain.entity.identity.User; +import com.solaria.persistence.dto.request.identity.UserRequestDTO; +import com.solaria.persistence.dto.response.identity.UserResponseDTO; import com.solaria.persistence.exception.InvalidFieldException; import com.solaria.persistence.exception.ResourceInUseException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.PersonRepository; -import com.solaria.persistence.repository.UserCompanyRepository; -import com.solaria.persistence.repository.UserPhotoRepository; -import com.solaria.persistence.repository.UserRepository; +import com.solaria.persistence.repository.identity.PersonRepository; +import com.solaria.persistence.repository.identity.UserCompanyRepository; +import com.solaria.persistence.repository.identity.UserPhotoRepository; +import com.solaria.persistence.repository.identity.UserRepository; @Service diff --git a/src/main/java/com/solaria/persistence/service/CertificationRecordService.java b/src/main/java/com/solaria/persistence/service/professional/CertificationRecordService.java similarity index 86% rename from src/main/java/com/solaria/persistence/service/CertificationRecordService.java rename to src/main/java/com/solaria/persistence/service/professional/CertificationRecordService.java index a712915..7688c9c 100644 --- a/src/main/java/com/solaria/persistence/service/CertificationRecordService.java +++ b/src/main/java/com/solaria/persistence/service/professional/CertificationRecordService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.professional; import java.util.List; import java.util.UUID; @@ -6,15 +6,15 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.domain.entity.Certification; -import com.solaria.persistence.domain.entity.CertificationRecord; -import com.solaria.persistence.domain.entity.ProfessionalRegistration; -import com.solaria.persistence.dto.request.CertificationRecordRequestDTO; -import com.solaria.persistence.dto.response.CertificationRecordResponseDTO; +import com.solaria.persistence.domain.entity.professional.Certification; +import com.solaria.persistence.domain.entity.professional.CertificationRecord; +import com.solaria.persistence.domain.entity.professional.ProfessionalRegistration; +import com.solaria.persistence.dto.request.professional.CertificationRecordRequestDTO; +import com.solaria.persistence.dto.response.professional.CertificationRecordResponseDTO; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.CertificationRecordRepository; -import com.solaria.persistence.repository.CertificationRepository; -import com.solaria.persistence.repository.ProfessionalRegistrationRepository; +import com.solaria.persistence.repository.professional.CertificationRecordRepository; +import com.solaria.persistence.repository.professional.CertificationRepository; +import com.solaria.persistence.repository.professional.ProfessionalRegistrationRepository; @Service diff --git a/src/main/java/com/solaria/persistence/service/CertificationService.java b/src/main/java/com/solaria/persistence/service/professional/CertificationService.java similarity index 87% rename from src/main/java/com/solaria/persistence/service/CertificationService.java rename to src/main/java/com/solaria/persistence/service/professional/CertificationService.java index f0df2e8..684232d 100644 --- a/src/main/java/com/solaria/persistence/service/CertificationService.java +++ b/src/main/java/com/solaria/persistence/service/professional/CertificationService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.professional; import java.util.List; import java.util.UUID; @@ -8,13 +8,13 @@ import tools.jackson.databind.ObjectMapper; -import com.solaria.persistence.domain.entity.Certification; -import com.solaria.persistence.dto.request.CertificationRequestDTO; -import com.solaria.persistence.dto.response.CertificationResponseDTO; +import com.solaria.persistence.domain.entity.professional.Certification; +import com.solaria.persistence.dto.request.professional.CertificationRequestDTO; +import com.solaria.persistence.dto.response.professional.CertificationResponseDTO; import com.solaria.persistence.exception.ResourceInUseException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.CertificationRecordRepository; -import com.solaria.persistence.repository.CertificationRepository; +import com.solaria.persistence.repository.professional.CertificationRecordRepository; +import com.solaria.persistence.repository.professional.CertificationRepository; @Service public class CertificationService { diff --git a/src/main/java/com/solaria/persistence/service/ProfessionService.java b/src/main/java/com/solaria/persistence/service/professional/ProfessionService.java similarity index 86% rename from src/main/java/com/solaria/persistence/service/ProfessionService.java rename to src/main/java/com/solaria/persistence/service/professional/ProfessionService.java index 49a7a06..f267656 100644 --- a/src/main/java/com/solaria/persistence/service/ProfessionService.java +++ b/src/main/java/com/solaria/persistence/service/professional/ProfessionService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.professional; import java.util.List; import java.util.UUID; @@ -8,13 +8,13 @@ import tools.jackson.databind.ObjectMapper; -import com.solaria.persistence.domain.entity.Profession; -import com.solaria.persistence.dto.request.ProfessionRequestDTO; -import com.solaria.persistence.dto.response.ProfessionResponseDTO; +import com.solaria.persistence.domain.entity.professional.Profession; +import com.solaria.persistence.dto.request.professional.ProfessionRequestDTO; +import com.solaria.persistence.dto.response.professional.ProfessionResponseDTO; import com.solaria.persistence.exception.ResourceInUseException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.ProfessionRepository; -import com.solaria.persistence.repository.ProfessionalRegistrationRepository; +import com.solaria.persistence.repository.professional.ProfessionRepository; +import com.solaria.persistence.repository.professional.ProfessionalRegistrationRepository; @Service public class ProfessionService { diff --git a/src/main/java/com/solaria/persistence/service/ProfessionalRegistrationService.java b/src/main/java/com/solaria/persistence/service/professional/ProfessionalRegistrationService.java similarity index 87% rename from src/main/java/com/solaria/persistence/service/ProfessionalRegistrationService.java rename to src/main/java/com/solaria/persistence/service/professional/ProfessionalRegistrationService.java index 636be98..b088c49 100644 --- a/src/main/java/com/solaria/persistence/service/ProfessionalRegistrationService.java +++ b/src/main/java/com/solaria/persistence/service/professional/ProfessionalRegistrationService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.professional; import java.util.List; import java.util.UUID; @@ -6,17 +6,17 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.domain.entity.ProfessionalRegistration; -import com.solaria.persistence.domain.entity.Profession; -import com.solaria.persistence.domain.entity.Technician; -import com.solaria.persistence.dto.request.ProfessionalRegistrationRequestDTO; -import com.solaria.persistence.dto.response.ProfessionalRegistrationResponseDTO; +import com.solaria.persistence.domain.entity.professional.ProfessionalRegistration; +import com.solaria.persistence.domain.entity.professional.Profession; +import com.solaria.persistence.domain.entity.professional.Technician; +import com.solaria.persistence.dto.request.professional.ProfessionalRegistrationRequestDTO; +import com.solaria.persistence.dto.response.professional.ProfessionalRegistrationResponseDTO; import com.solaria.persistence.exception.ResourceInUseException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.CertificationRecordRepository; -import com.solaria.persistence.repository.ProfessionRepository; -import com.solaria.persistence.repository.ProfessionalRegistrationRepository; -import com.solaria.persistence.repository.TechnicianRepository; +import com.solaria.persistence.repository.professional.CertificationRecordRepository; +import com.solaria.persistence.repository.professional.ProfessionRepository; +import com.solaria.persistence.repository.professional.ProfessionalRegistrationRepository; +import com.solaria.persistence.repository.professional.TechnicianRepository; @Service diff --git a/src/main/java/com/solaria/persistence/service/ProfessionalReviewService.java b/src/main/java/com/solaria/persistence/service/professional/ProfessionalReviewService.java similarity index 85% rename from src/main/java/com/solaria/persistence/service/ProfessionalReviewService.java rename to src/main/java/com/solaria/persistence/service/professional/ProfessionalReviewService.java index 7ce9933..8b1b426 100644 --- a/src/main/java/com/solaria/persistence/service/ProfessionalReviewService.java +++ b/src/main/java/com/solaria/persistence/service/professional/ProfessionalReviewService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.professional; import java.math.BigDecimal; import java.time.OffsetDateTime; @@ -8,22 +8,22 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.domain.entity.ProfessionalReview; -import com.solaria.persistence.domain.entity.Technician; -import com.solaria.persistence.domain.entity.TechnicalService; -import com.solaria.persistence.domain.entity.User; -import com.solaria.persistence.domain.enums.ServiceStatus; -import com.solaria.persistence.dto.request.ProfessionalReviewRequestDTO; -import com.solaria.persistence.dto.response.ProfessionalReviewResponseDTO; +import com.solaria.persistence.domain.entity.professional.ProfessionalReview; +import com.solaria.persistence.domain.entity.professional.Technician; +import com.solaria.persistence.domain.entity.execution.TechnicalService; +import com.solaria.persistence.domain.entity.identity.User; +import com.solaria.persistence.domain.enums.execution.ServiceStatus; +import com.solaria.persistence.dto.request.professional.ProfessionalReviewRequestDTO; +import com.solaria.persistence.dto.response.professional.ProfessionalReviewResponseDTO; import com.solaria.persistence.exception.BusinessRuleException; import com.solaria.persistence.exception.DuplicateResourceException; import com.solaria.persistence.exception.InvalidFieldException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.ProfessionalReviewRepository; -import com.solaria.persistence.repository.ServiceExecutorRepository; -import com.solaria.persistence.repository.TechnicalServiceRepository; -import com.solaria.persistence.repository.TechnicianRepository; -import com.solaria.persistence.repository.UserRepository; +import com.solaria.persistence.repository.professional.ProfessionalReviewRepository; +import com.solaria.persistence.repository.execution.ServiceExecutorRepository; +import com.solaria.persistence.repository.execution.TechnicalServiceRepository; +import com.solaria.persistence.repository.professional.TechnicianRepository; +import com.solaria.persistence.repository.identity.UserRepository; @Service public class ProfessionalReviewService { diff --git a/src/main/java/com/solaria/persistence/service/ShiftService.java b/src/main/java/com/solaria/persistence/service/professional/ShiftService.java similarity index 87% rename from src/main/java/com/solaria/persistence/service/ShiftService.java rename to src/main/java/com/solaria/persistence/service/professional/ShiftService.java index c793265..3531d4d 100644 --- a/src/main/java/com/solaria/persistence/service/ShiftService.java +++ b/src/main/java/com/solaria/persistence/service/professional/ShiftService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.professional; import java.util.List; import java.util.UUID; @@ -6,14 +6,14 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.domain.entity.Shift; -import com.solaria.persistence.domain.entity.Technician; -import com.solaria.persistence.dto.request.ShiftRequestDTO; -import com.solaria.persistence.dto.response.ShiftResponseDTO; +import com.solaria.persistence.domain.entity.professional.Shift; +import com.solaria.persistence.domain.entity.professional.Technician; +import com.solaria.persistence.dto.request.professional.ShiftRequestDTO; +import com.solaria.persistence.dto.response.professional.ShiftResponseDTO; import com.solaria.persistence.exception.BusinessRuleException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.ShiftRepository; -import com.solaria.persistence.repository.TechnicianRepository; +import com.solaria.persistence.repository.professional.ShiftRepository; +import com.solaria.persistence.repository.professional.TechnicianRepository; @Service public class ShiftService { diff --git a/src/main/java/com/solaria/persistence/service/TechnicalCourseService.java b/src/main/java/com/solaria/persistence/service/professional/TechnicalCourseService.java similarity index 88% rename from src/main/java/com/solaria/persistence/service/TechnicalCourseService.java rename to src/main/java/com/solaria/persistence/service/professional/TechnicalCourseService.java index 17d9411..ee55968 100644 --- a/src/main/java/com/solaria/persistence/service/TechnicalCourseService.java +++ b/src/main/java/com/solaria/persistence/service/professional/TechnicalCourseService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.professional; import java.util.List; import java.util.UUID; @@ -6,13 +6,13 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.domain.entity.Company; -import com.solaria.persistence.domain.entity.TechnicalCourse; -import com.solaria.persistence.dto.request.TechnicalCourseRequestDTO; -import com.solaria.persistence.dto.response.TechnicalCourseResponseDTO; +import com.solaria.persistence.domain.entity.company.Company; +import com.solaria.persistence.domain.entity.professional.TechnicalCourse; +import com.solaria.persistence.dto.request.professional.TechnicalCourseRequestDTO; +import com.solaria.persistence.dto.response.professional.TechnicalCourseResponseDTO; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.CompanyRepository; -import com.solaria.persistence.repository.TechnicalCourseRepository; +import com.solaria.persistence.repository.company.CompanyRepository; +import com.solaria.persistence.repository.professional.TechnicalCourseRepository; @Service public class TechnicalCourseService { diff --git a/src/main/java/com/solaria/persistence/service/TechnicianAffiliationService.java b/src/main/java/com/solaria/persistence/service/professional/TechnicianAffiliationService.java similarity index 87% rename from src/main/java/com/solaria/persistence/service/TechnicianAffiliationService.java rename to src/main/java/com/solaria/persistence/service/professional/TechnicianAffiliationService.java index d85b046..a334096 100644 --- a/src/main/java/com/solaria/persistence/service/TechnicianAffiliationService.java +++ b/src/main/java/com/solaria/persistence/service/professional/TechnicianAffiliationService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.professional; import java.util.List; import java.util.UUID; @@ -8,17 +8,17 @@ import tools.jackson.databind.ObjectMapper; -import com.solaria.persistence.domain.entity.Company; -import com.solaria.persistence.domain.entity.Technician; -import com.solaria.persistence.domain.entity.TechnicianAffiliation; -import com.solaria.persistence.domain.enums.TechnicalAffiliationType; -import com.solaria.persistence.dto.request.TechnicianAffiliationRequestDTO; -import com.solaria.persistence.dto.response.TechnicianAffiliationResponseDTO; +import com.solaria.persistence.domain.entity.company.Company; +import com.solaria.persistence.domain.entity.professional.Technician; +import com.solaria.persistence.domain.entity.professional.TechnicianAffiliation; +import com.solaria.persistence.domain.enums.professional.TechnicalAffiliationType; +import com.solaria.persistence.dto.request.professional.TechnicianAffiliationRequestDTO; +import com.solaria.persistence.dto.response.professional.TechnicianAffiliationResponseDTO; import com.solaria.persistence.exception.DuplicateResourceException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.CompanyRepository; -import com.solaria.persistence.repository.TechnicianAffiliationRepository; -import com.solaria.persistence.repository.TechnicianRepository; +import com.solaria.persistence.repository.company.CompanyRepository; +import com.solaria.persistence.repository.professional.TechnicianAffiliationRepository; +import com.solaria.persistence.repository.professional.TechnicianRepository; @Service public class TechnicianAffiliationService { diff --git a/src/main/java/com/solaria/persistence/service/TechnicianService.java b/src/main/java/com/solaria/persistence/service/professional/TechnicianService.java similarity index 86% rename from src/main/java/com/solaria/persistence/service/TechnicianService.java rename to src/main/java/com/solaria/persistence/service/professional/TechnicianService.java index f3c444f..c7d3f26 100644 --- a/src/main/java/com/solaria/persistence/service/TechnicianService.java +++ b/src/main/java/com/solaria/persistence/service/professional/TechnicianService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.professional; import java.util.List; import java.util.UUID; @@ -6,18 +6,18 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.domain.entity.Contact; -import com.solaria.persistence.domain.entity.Person; -import com.solaria.persistence.domain.entity.Technician; -import com.solaria.persistence.dto.request.TechnicianRequestDTO; -import com.solaria.persistence.dto.response.ContactResponseDTO; -import com.solaria.persistence.dto.response.PersonResponseDTO; -import com.solaria.persistence.dto.response.TechnicianResponseDTO; +import com.solaria.persistence.domain.entity.shared.Contact; +import com.solaria.persistence.domain.entity.identity.Person; +import com.solaria.persistence.domain.entity.professional.Technician; +import com.solaria.persistence.dto.request.professional.TechnicianRequestDTO; +import com.solaria.persistence.dto.response.shared.ContactResponseDTO; +import com.solaria.persistence.dto.response.identity.PersonResponseDTO; +import com.solaria.persistence.dto.response.professional.TechnicianResponseDTO; import com.solaria.persistence.exception.DuplicateResourceException; import com.solaria.persistence.exception.InvalidFieldException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.PersonRepository; -import com.solaria.persistence.repository.TechnicianRepository; +import com.solaria.persistence.repository.identity.PersonRepository; +import com.solaria.persistence.repository.professional.TechnicianRepository; import com.solaria.persistence.util.SlugUtil; diff --git a/src/main/java/com/solaria/persistence/service/ProposalItemService.java b/src/main/java/com/solaria/persistence/service/proposal/ProposalItemService.java similarity index 91% rename from src/main/java/com/solaria/persistence/service/ProposalItemService.java rename to src/main/java/com/solaria/persistence/service/proposal/ProposalItemService.java index f68784e..5c83c55 100644 --- a/src/main/java/com/solaria/persistence/service/ProposalItemService.java +++ b/src/main/java/com/solaria/persistence/service/proposal/ProposalItemService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.proposal; import java.math.BigDecimal; import java.time.OffsetDateTime; @@ -8,21 +8,21 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.domain.entity.Model; -import com.solaria.persistence.domain.entity.Offer; -import com.solaria.persistence.domain.entity.Proposal; -import com.solaria.persistence.domain.entity.ProposalItem; -import com.solaria.persistence.dto.request.ProposalItemRequestDTO; -import com.solaria.persistence.dto.response.ModelResponseDTO; -import com.solaria.persistence.dto.response.OfferResponseDTO; -import com.solaria.persistence.dto.response.ProposalItemResponseDTO; +import com.solaria.persistence.domain.entity.catalog.Model; +import com.solaria.persistence.domain.entity.catalog.Offer; +import com.solaria.persistence.domain.entity.proposal.Proposal; +import com.solaria.persistence.domain.entity.proposal.ProposalItem; +import com.solaria.persistence.dto.request.proposal.ProposalItemRequestDTO; +import com.solaria.persistence.dto.response.catalog.ModelResponseDTO; +import com.solaria.persistence.dto.response.catalog.OfferResponseDTO; +import com.solaria.persistence.dto.response.proposal.ProposalItemResponseDTO; import com.solaria.persistence.exception.BusinessRuleException; import com.solaria.persistence.exception.DuplicateResourceException; import com.solaria.persistence.exception.InvalidFieldException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.OfferRepository; -import com.solaria.persistence.repository.ProposalItemRepository; -import com.solaria.persistence.repository.ProposalRepository; +import com.solaria.persistence.repository.catalog.OfferRepository; +import com.solaria.persistence.repository.proposal.ProposalItemRepository; +import com.solaria.persistence.repository.proposal.ProposalRepository; @Service public class ProposalItemService { diff --git a/src/main/java/com/solaria/persistence/service/ProposalService.java b/src/main/java/com/solaria/persistence/service/proposal/ProposalService.java similarity index 92% rename from src/main/java/com/solaria/persistence/service/ProposalService.java rename to src/main/java/com/solaria/persistence/service/proposal/ProposalService.java index bfcfbdd..7a58608 100644 --- a/src/main/java/com/solaria/persistence/service/ProposalService.java +++ b/src/main/java/com/solaria/persistence/service/proposal/ProposalService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.proposal; import java.math.BigDecimal; import java.math.RoundingMode; @@ -10,21 +10,21 @@ import org.springframework.transaction.annotation.Transactional; import tools.jackson.databind.ObjectMapper; -import com.solaria.persistence.dto.request.ProposalRequestDTO; -import com.solaria.persistence.dto.response.ProposalResponseDTO; -import com.solaria.persistence.domain.entity.Inventory; -import com.solaria.persistence.domain.entity.Offer; -import com.solaria.persistence.domain.entity.Proposal; -import com.solaria.persistence.domain.entity.ProposalItem; -import com.solaria.persistence.domain.entity.Requester; -import com.solaria.persistence.domain.enums.ProposalStatus; +import com.solaria.persistence.dto.request.proposal.ProposalRequestDTO; +import com.solaria.persistence.dto.response.proposal.ProposalResponseDTO; +import com.solaria.persistence.domain.entity.catalog.Inventory; +import com.solaria.persistence.domain.entity.catalog.Offer; +import com.solaria.persistence.domain.entity.proposal.Proposal; +import com.solaria.persistence.domain.entity.proposal.ProposalItem; +import com.solaria.persistence.domain.entity.execution.Requester; +import com.solaria.persistence.domain.enums.proposal.ProposalStatus; import com.solaria.persistence.exception.BusinessRuleException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.InventoryRepository; -import com.solaria.persistence.repository.OfferRepository; -import com.solaria.persistence.repository.ProposalItemRepository; -import com.solaria.persistence.repository.ProposalRepository; -import com.solaria.persistence.repository.RequesterRepository; +import com.solaria.persistence.repository.catalog.InventoryRepository; +import com.solaria.persistence.repository.catalog.OfferRepository; +import com.solaria.persistence.repository.proposal.ProposalItemRepository; +import com.solaria.persistence.repository.proposal.ProposalRepository; +import com.solaria.persistence.repository.execution.RequesterRepository; import com.solaria.persistence.security.rbac.RbacAuthorizationService; @Service diff --git a/src/main/java/com/solaria/persistence/service/ProposalUnitService.java b/src/main/java/com/solaria/persistence/service/proposal/ProposalUnitService.java similarity index 90% rename from src/main/java/com/solaria/persistence/service/ProposalUnitService.java rename to src/main/java/com/solaria/persistence/service/proposal/ProposalUnitService.java index 1ed8fb0..41f8fb5 100644 --- a/src/main/java/com/solaria/persistence/service/ProposalUnitService.java +++ b/src/main/java/com/solaria/persistence/service/proposal/ProposalUnitService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.proposal; import java.util.List; import java.util.UUID; @@ -6,22 +6,22 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.domain.entity.Address; -import com.solaria.persistence.domain.entity.LocalUnit; -import com.solaria.persistence.domain.entity.ProposalItem; -import com.solaria.persistence.domain.entity.ProposalUnit; -import com.solaria.persistence.domain.enums.ProposalStatus; -import com.solaria.persistence.dto.request.ProposalUnitRequestDTO; -import com.solaria.persistence.dto.response.AddressResponseDTO; -import com.solaria.persistence.dto.response.LocalUnitResponseDTO; -import com.solaria.persistence.dto.response.ProposalUnitResponseDTO; +import com.solaria.persistence.domain.entity.shared.Address; +import com.solaria.persistence.domain.entity.unit.LocalUnit; +import com.solaria.persistence.domain.entity.proposal.ProposalItem; +import com.solaria.persistence.domain.entity.proposal.ProposalUnit; +import com.solaria.persistence.domain.enums.proposal.ProposalStatus; +import com.solaria.persistence.dto.request.proposal.ProposalUnitRequestDTO; +import com.solaria.persistence.dto.response.shared.AddressResponseDTO; +import com.solaria.persistence.dto.response.unit.LocalUnitResponseDTO; +import com.solaria.persistence.dto.response.proposal.ProposalUnitResponseDTO; import com.solaria.persistence.exception.BusinessRuleException; import com.solaria.persistence.exception.InvalidFieldException; import com.solaria.persistence.exception.ResourceNotFoundException; import com.solaria.persistence.exception.UnauthorizedAccessException; -import com.solaria.persistence.repository.LocalUnitRepository; -import com.solaria.persistence.repository.ProposalItemRepository; -import com.solaria.persistence.repository.ProposalUnitRepository; +import com.solaria.persistence.repository.unit.LocalUnitRepository; +import com.solaria.persistence.repository.proposal.ProposalItemRepository; +import com.solaria.persistence.repository.proposal.ProposalUnitRepository; @Service public class ProposalUnitService { diff --git a/src/main/java/com/solaria/persistence/service/AddressService.java b/src/main/java/com/solaria/persistence/service/shared/AddressService.java similarity index 87% rename from src/main/java/com/solaria/persistence/service/AddressService.java rename to src/main/java/com/solaria/persistence/service/shared/AddressService.java index ac08327..17a5c77 100644 --- a/src/main/java/com/solaria/persistence/service/AddressService.java +++ b/src/main/java/com/solaria/persistence/service/shared/AddressService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.shared; import java.util.List; import java.util.UUID; @@ -6,15 +6,15 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.domain.entity.Address; -import com.solaria.persistence.dto.request.AddressRequestDTO; -import com.solaria.persistence.dto.response.AddressResponseDTO; +import com.solaria.persistence.domain.entity.shared.Address; +import com.solaria.persistence.dto.request.shared.AddressRequestDTO; +import com.solaria.persistence.dto.response.shared.AddressResponseDTO; import com.solaria.persistence.exception.ResourceInUseException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.AddressRepository; -import com.solaria.persistence.repository.CompanyRepository; -import com.solaria.persistence.repository.GeolocalizationRepository; -import com.solaria.persistence.repository.LocalUnitRepository; +import com.solaria.persistence.repository.shared.AddressRepository; +import com.solaria.persistence.repository.company.CompanyRepository; +import com.solaria.persistence.repository.shared.GeolocalizationRepository; +import com.solaria.persistence.repository.unit.LocalUnitRepository; import tools.jackson.databind.ObjectMapper; diff --git a/src/main/java/com/solaria/persistence/service/AuditService.java b/src/main/java/com/solaria/persistence/service/shared/AuditService.java similarity index 92% rename from src/main/java/com/solaria/persistence/service/AuditService.java rename to src/main/java/com/solaria/persistence/service/shared/AuditService.java index 349c2ed..d9d8945 100644 --- a/src/main/java/com/solaria/persistence/service/AuditService.java +++ b/src/main/java/com/solaria/persistence/service/shared/AuditService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.shared; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; diff --git a/src/main/java/com/solaria/persistence/service/CloudinaryService.java b/src/main/java/com/solaria/persistence/service/shared/CloudinaryService.java similarity index 99% rename from src/main/java/com/solaria/persistence/service/CloudinaryService.java rename to src/main/java/com/solaria/persistence/service/shared/CloudinaryService.java index 7c0d150..bf5e7b4 100644 --- a/src/main/java/com/solaria/persistence/service/CloudinaryService.java +++ b/src/main/java/com/solaria/persistence/service/shared/CloudinaryService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.shared; import java.io.IOException; import java.util.Map; diff --git a/src/main/java/com/solaria/persistence/service/ContactService.java b/src/main/java/com/solaria/persistence/service/shared/ContactService.java similarity index 87% rename from src/main/java/com/solaria/persistence/service/ContactService.java rename to src/main/java/com/solaria/persistence/service/shared/ContactService.java index 809897d..f040af6 100644 --- a/src/main/java/com/solaria/persistence/service/ContactService.java +++ b/src/main/java/com/solaria/persistence/service/shared/ContactService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.shared; import java.util.List; import java.util.UUID; @@ -8,13 +8,13 @@ import tools.jackson.databind.ObjectMapper; -import com.solaria.persistence.domain.entity.Contact; -import com.solaria.persistence.dto.request.ContactRequestDTO; -import com.solaria.persistence.dto.response.ContactResponseDTO; +import com.solaria.persistence.domain.entity.shared.Contact; +import com.solaria.persistence.dto.request.shared.ContactRequestDTO; +import com.solaria.persistence.dto.response.shared.ContactResponseDTO; import com.solaria.persistence.exception.ResourceInUseException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.ContactRepository; -import com.solaria.persistence.repository.PersonRepository; +import com.solaria.persistence.repository.shared.ContactRepository; +import com.solaria.persistence.repository.identity.PersonRepository; @Service public class ContactService { diff --git a/src/main/java/com/solaria/persistence/service/FluxLogService.java b/src/main/java/com/solaria/persistence/service/shared/FluxLogService.java similarity index 80% rename from src/main/java/com/solaria/persistence/service/FluxLogService.java rename to src/main/java/com/solaria/persistence/service/shared/FluxLogService.java index 671e617..ebb28f8 100644 --- a/src/main/java/com/solaria/persistence/service/FluxLogService.java +++ b/src/main/java/com/solaria/persistence/service/shared/FluxLogService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.shared; import java.time.OffsetDateTime; import java.util.List; @@ -7,13 +7,13 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.domain.entity.FluxLog; -import com.solaria.persistence.domain.entity.User; -import com.solaria.persistence.dto.request.FluxLogRequestDTO; -import com.solaria.persistence.dto.response.FluxLogResponseDTO; +import com.solaria.persistence.domain.entity.shared.FluxLog; +import com.solaria.persistence.domain.entity.identity.User; +import com.solaria.persistence.dto.request.shared.FluxLogRequestDTO; +import com.solaria.persistence.dto.response.shared.FluxLogResponseDTO; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.FluxLogRepository; -import com.solaria.persistence.repository.UserRepository; +import com.solaria.persistence.repository.shared.FluxLogRepository; +import com.solaria.persistence.repository.identity.UserRepository; @Service diff --git a/src/main/java/com/solaria/persistence/service/GeolocalizationService.java b/src/main/java/com/solaria/persistence/service/shared/GeolocalizationService.java similarity index 92% rename from src/main/java/com/solaria/persistence/service/GeolocalizationService.java rename to src/main/java/com/solaria/persistence/service/shared/GeolocalizationService.java index 607df98..bcc38de 100644 --- a/src/main/java/com/solaria/persistence/service/GeolocalizationService.java +++ b/src/main/java/com/solaria/persistence/service/shared/GeolocalizationService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.shared; import java.math.BigDecimal; import java.util.List; @@ -9,15 +9,15 @@ import tools.jackson.databind.ObjectMapper; -import com.solaria.persistence.domain.entity.Address; -import com.solaria.persistence.domain.entity.Geolocalization; -import com.solaria.persistence.dto.request.GeolocalizationRequestDTO; -import com.solaria.persistence.dto.response.GeolocalizationResponseDTO; +import com.solaria.persistence.domain.entity.shared.Address; +import com.solaria.persistence.domain.entity.shared.Geolocalization; +import com.solaria.persistence.dto.request.shared.GeolocalizationRequestDTO; +import com.solaria.persistence.dto.response.shared.GeolocalizationResponseDTO; import com.solaria.persistence.exception.DuplicateResourceException; import com.solaria.persistence.exception.InvalidFieldException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.AddressRepository; -import com.solaria.persistence.repository.GeolocalizationRepository; +import com.solaria.persistence.repository.shared.AddressRepository; +import com.solaria.persistence.repository.shared.GeolocalizationRepository; @Service public class GeolocalizationService { diff --git a/src/main/java/com/solaria/persistence/service/EnergyBillService.java b/src/main/java/com/solaria/persistence/service/unit/EnergyBillService.java similarity index 92% rename from src/main/java/com/solaria/persistence/service/EnergyBillService.java rename to src/main/java/com/solaria/persistence/service/unit/EnergyBillService.java index 76b949a..ec686b7 100644 --- a/src/main/java/com/solaria/persistence/service/EnergyBillService.java +++ b/src/main/java/com/solaria/persistence/service/unit/EnergyBillService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.unit; import java.math.BigDecimal; import java.util.List; @@ -10,18 +10,19 @@ import org.springframework.web.multipart.MultipartFile; import com.solaria.persistence.config.CloudinaryProperties; -import com.solaria.persistence.domain.entity.EnergyBill; -import com.solaria.persistence.domain.entity.LocalUnit; -import com.solaria.persistence.dto.request.EnergyBillRequestDTO; -import com.solaria.persistence.dto.response.EnergyBillResponseDTO; +import com.solaria.persistence.domain.entity.unit.EnergyBill; +import com.solaria.persistence.domain.entity.unit.LocalUnit; +import com.solaria.persistence.dto.request.unit.EnergyBillRequestDTO; +import com.solaria.persistence.dto.response.unit.EnergyBillResponseDTO; import com.solaria.persistence.exception.InvalidFieldException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.EnergyBillRepository; -import com.solaria.persistence.repository.LocalUnitRepository; +import com.solaria.persistence.repository.unit.EnergyBillRepository; +import com.solaria.persistence.repository.unit.LocalUnitRepository; import com.solaria.persistence.security.rbac.RbacAuthorizationService; -import com.solaria.persistence.service.CloudinaryService.UploadResult; +import com.solaria.persistence.service.shared.CloudinaryService.UploadResult; import tools.jackson.databind.ObjectMapper; +import com.solaria.persistence.service.shared.CloudinaryService; @Service public class EnergyBillService { diff --git a/src/main/java/com/solaria/persistence/service/LocalUnitPhotoService.java b/src/main/java/com/solaria/persistence/service/unit/LocalUnitPhotoService.java similarity index 88% rename from src/main/java/com/solaria/persistence/service/LocalUnitPhotoService.java rename to src/main/java/com/solaria/persistence/service/unit/LocalUnitPhotoService.java index 9c791e7..128251c 100644 --- a/src/main/java/com/solaria/persistence/service/LocalUnitPhotoService.java +++ b/src/main/java/com/solaria/persistence/service/unit/LocalUnitPhotoService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.unit; import java.time.OffsetDateTime; import java.util.List; @@ -10,14 +10,15 @@ import org.springframework.web.multipart.MultipartFile; import com.solaria.persistence.config.CloudinaryProperties; -import com.solaria.persistence.domain.entity.LocalUnit; -import com.solaria.persistence.domain.entity.LocalUnitPhoto; -import com.solaria.persistence.dto.response.LocalUnitPhotoResponseDTO; +import com.solaria.persistence.domain.entity.unit.LocalUnit; +import com.solaria.persistence.domain.entity.unit.LocalUnitPhoto; +import com.solaria.persistence.dto.response.unit.LocalUnitPhotoResponseDTO; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.LocalUnitPhotoRepository; -import com.solaria.persistence.repository.LocalUnitRepository; +import com.solaria.persistence.repository.unit.LocalUnitPhotoRepository; +import com.solaria.persistence.repository.unit.LocalUnitRepository; import com.solaria.persistence.security.rbac.RbacAuthorizationService; -import com.solaria.persistence.service.CloudinaryService.UploadResult; +import com.solaria.persistence.service.shared.CloudinaryService.UploadResult; +import com.solaria.persistence.service.shared.CloudinaryService; @Service public class LocalUnitPhotoService { diff --git a/src/main/java/com/solaria/persistence/service/LocalUnitService.java b/src/main/java/com/solaria/persistence/service/unit/LocalUnitService.java similarity index 88% rename from src/main/java/com/solaria/persistence/service/LocalUnitService.java rename to src/main/java/com/solaria/persistence/service/unit/LocalUnitService.java index c5d7a6e..d1018e9 100644 --- a/src/main/java/com/solaria/persistence/service/LocalUnitService.java +++ b/src/main/java/com/solaria/persistence/service/unit/LocalUnitService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.unit; import java.util.List; import java.util.UUID; @@ -6,22 +6,22 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.solaria.persistence.domain.entity.Address; -import com.solaria.persistence.domain.entity.LocalUnit; -import com.solaria.persistence.domain.entity.Requester; -import com.solaria.persistence.dto.request.LocalUnitRequestDTO; -import com.solaria.persistence.dto.response.AddressResponseDTO; -import com.solaria.persistence.dto.response.LocalUnitResponseDTO; +import com.solaria.persistence.domain.entity.shared.Address; +import com.solaria.persistence.domain.entity.unit.LocalUnit; +import com.solaria.persistence.domain.entity.execution.Requester; +import com.solaria.persistence.dto.request.unit.LocalUnitRequestDTO; +import com.solaria.persistence.dto.response.shared.AddressResponseDTO; +import com.solaria.persistence.dto.response.unit.LocalUnitResponseDTO; import com.solaria.persistence.exception.InvalidFieldException; import com.solaria.persistence.exception.ResourceInUseException; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.AddressRepository; -import com.solaria.persistence.repository.EnergyBillRepository; -import com.solaria.persistence.repository.LocalUnitPhotoRepository; -import com.solaria.persistence.repository.LocalUnitRepository; -import com.solaria.persistence.repository.ProposalUnitRepository; -import com.solaria.persistence.repository.RequesterRepository; -import com.solaria.persistence.repository.UnitSpecificationsRepository; +import com.solaria.persistence.repository.shared.AddressRepository; +import com.solaria.persistence.repository.unit.EnergyBillRepository; +import com.solaria.persistence.repository.unit.LocalUnitPhotoRepository; +import com.solaria.persistence.repository.unit.LocalUnitRepository; +import com.solaria.persistence.repository.proposal.ProposalUnitRepository; +import com.solaria.persistence.repository.execution.RequesterRepository; +import com.solaria.persistence.repository.unit.UnitSpecificationsRepository; @Service diff --git a/src/main/java/com/solaria/persistence/service/UnitSpecificationsService.java b/src/main/java/com/solaria/persistence/service/unit/UnitSpecificationsService.java similarity index 86% rename from src/main/java/com/solaria/persistence/service/UnitSpecificationsService.java rename to src/main/java/com/solaria/persistence/service/unit/UnitSpecificationsService.java index 4b98c11..eccde6f 100644 --- a/src/main/java/com/solaria/persistence/service/UnitSpecificationsService.java +++ b/src/main/java/com/solaria/persistence/service/unit/UnitSpecificationsService.java @@ -1,4 +1,4 @@ -package com.solaria.persistence.service; +package com.solaria.persistence.service.unit; import java.time.OffsetDateTime; import java.util.List; @@ -9,13 +9,13 @@ import tools.jackson.databind.ObjectMapper; -import com.solaria.persistence.domain.entity.LocalUnit; -import com.solaria.persistence.domain.entity.UnitSpecifications; -import com.solaria.persistence.dto.request.UnitSpecificationsRequestDTO; -import com.solaria.persistence.dto.response.UnitSpecificationsResponseDTO; +import com.solaria.persistence.domain.entity.unit.LocalUnit; +import com.solaria.persistence.domain.entity.unit.UnitSpecifications; +import com.solaria.persistence.dto.request.unit.UnitSpecificationsRequestDTO; +import com.solaria.persistence.dto.response.unit.UnitSpecificationsResponseDTO; import com.solaria.persistence.exception.ResourceNotFoundException; -import com.solaria.persistence.repository.LocalUnitRepository; -import com.solaria.persistence.repository.UnitSpecificationsRepository; +import com.solaria.persistence.repository.unit.LocalUnitRepository; +import com.solaria.persistence.repository.unit.UnitSpecificationsRepository; @Service public class UnitSpecificationsService { diff --git a/src/main/java/com/solaria/persistence/util/CacheKeyGenerator.java b/src/main/java/com/solaria/persistence/util/CacheKeyGenerator.java index a40a06f..bb0fa28 100644 --- a/src/main/java/com/solaria/persistence/util/CacheKeyGenerator.java +++ b/src/main/java/com/solaria/persistence/util/CacheKeyGenerator.java @@ -2,7 +2,7 @@ import org.springframework.stereotype.Component; import com.solaria.persistence.config.RedisProperties; -import com.solaria.persistence.dto.request.SupplierSearchFilterDTO; +import com.solaria.persistence.dto.request.catalog.SupplierSearchFilterDTO; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; From b5e59b573bb5d3f1476464aca411bde64613aa31 Mon Sep 17 00:00:00 2001 From: Arthur Machado Date: Mon, 31 Aug 2026 21:32:07 -0300 Subject: [PATCH 6/8] refactor: (#38) remove M2M security components and related configurations --- .env.example | 2 - pom.xml | 17 --- .../auth/ServiceAuthController.java | 76 ----------- .../common/InternalPingController.java | 18 --- .../auth/ServiceTokenMintRequestDTO.java | 15 --- .../auth/ServiceTokenRefreshRequestDTO.java | 16 --- .../auth/ServiceTokenResponseDTO.java | 22 ---- .../exception/ServiceAuthException.java | 16 --- .../persistence/security/SecurityConfig.java | 45 ++----- .../service/ServiceTokenAuthFilter.java | 67 ---------- .../service/ServiceTokenProperties.java | 81 ------------ .../service/ServiceTokenProvider.java | 119 ------------------ ...itional-spring-configuration-metadata.json | 25 ---- src/main/resources/application.properties | 10 -- src/test/resources/application.properties | 6 - 15 files changed, 9 insertions(+), 526 deletions(-) delete mode 100644 src/main/java/com/solaria/persistence/controller/auth/ServiceAuthController.java delete mode 100644 src/main/java/com/solaria/persistence/controller/common/InternalPingController.java delete mode 100644 src/main/java/com/solaria/persistence/dto/request/auth/ServiceTokenMintRequestDTO.java delete mode 100644 src/main/java/com/solaria/persistence/dto/request/auth/ServiceTokenRefreshRequestDTO.java delete mode 100644 src/main/java/com/solaria/persistence/dto/response/auth/ServiceTokenResponseDTO.java delete mode 100644 src/main/java/com/solaria/persistence/exception/ServiceAuthException.java delete mode 100644 src/main/java/com/solaria/persistence/security/service/ServiceTokenAuthFilter.java delete mode 100644 src/main/java/com/solaria/persistence/security/service/ServiceTokenProperties.java delete mode 100644 src/main/java/com/solaria/persistence/security/service/ServiceTokenProvider.java diff --git a/.env.example b/.env.example index 898a6ae..b6665c2 100644 --- a/.env.example +++ b/.env.example @@ -5,8 +5,6 @@ DB_NAME= DB_PORT= DB_SSLMODE= -SERVICE_JWT_SECRET=qualquerstringde32letrasaisenaoelepara - CLOUDINARY_CLOUD_NAME= CLOUDINARY_API_KEY= CLOUDINARY_API_SECRET= diff --git a/pom.xml b/pom.xml index 4f4b9d4..5ba4181 100644 --- a/pom.xml +++ b/pom.xml @@ -59,23 +59,6 @@ org.springframework.security spring-security-oauth2-jose - - io.jsonwebtoken - jjwt-api - 0.11.5 - - - io.jsonwebtoken - jjwt-impl - 0.11.5 - runtime - - - io.jsonwebtoken - jjwt-jackson - 0.11.5 - runtime - org.springdoc springdoc-openapi-starter-webmvc-ui diff --git a/src/main/java/com/solaria/persistence/controller/auth/ServiceAuthController.java b/src/main/java/com/solaria/persistence/controller/auth/ServiceAuthController.java deleted file mode 100644 index 589ae37..0000000 --- a/src/main/java/com/solaria/persistence/controller/auth/ServiceAuthController.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.solaria.persistence.controller.auth; - -import java.nio.charset.StandardCharsets; -import java.security.MessageDigest; - -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import com.solaria.persistence.dto.request.auth.ServiceTokenMintRequestDTO; -import com.solaria.persistence.dto.request.auth.ServiceTokenRefreshRequestDTO; -import com.solaria.persistence.dto.response.auth.ServiceTokenResponseDTO; -import com.solaria.persistence.exception.ServiceAuthException; -import com.solaria.persistence.security.service.ServiceTokenProperties; -import com.solaria.persistence.security.service.ServiceTokenProvider; - -import jakarta.validation.Valid; - -/** - * Controller para autentificação M2M(APIs) - */ -@RestController -@RequestMapping("/internal/service-tokens") -public class ServiceAuthController { - - // classe emissora/validadora de token -> usada para mint(emição) e refresh(renovação) - private final ServiceTokenProvider serviceTokenProvider; - - // classe com as propriedades do token - private final ServiceTokenProperties serviceTokenProperties; - - public ServiceAuthController(ServiceTokenProvider serviceTokenProvider, - ServiceTokenProperties serviceTokenProperties) { - this.serviceTokenProvider = serviceTokenProvider; - this.serviceTokenProperties = serviceTokenProperties; - } - - - // Emite um novo par de access+refresh token, fazendo a autentificação com clientSecret - @PostMapping - public ResponseEntity mint(@Valid @RequestBody ServiceTokenMintRequestDTO dto) { - // Lança ServiceAuthException (-> 401) se o secret não bater; - validateClientSecret(dto.getClientSecret()); - return ResponseEntity.ok(buildResponse( - serviceTokenProvider.mintAccessToken(), - serviceTokenProvider.mintRefreshToken())); - } - - // Troca um refresh token por um acess token, devolvendo o refresh usado e o novo acess token - @PostMapping("/refresh") - public ResponseEntity refresh(@Valid @RequestBody ServiceTokenRefreshRequestDTO dto) { - serviceTokenProvider.parseAndValidate(dto.getRefreshToken(), ServiceTokenProvider.TOKEN_TYPE_REFRESH); - return ResponseEntity.ok(buildResponse( - serviceTokenProvider.mintAccessToken(), - dto.getRefreshToken())); - } - - private void validateClientSecret(String providedSecret) { - byte[] provided = (providedSecret == null ? "" : providedSecret).getBytes(StandardCharsets.UTF_8); - byte[] expected = serviceTokenProperties.getClientSecret().getBytes(StandardCharsets.UTF_8); - if (!MessageDigest.isEqual(provided, expected)) { - throw new ServiceAuthException("clientSecret inválido."); - } - } - - private ServiceTokenResponseDTO buildResponse(String accessToken, String refreshToken) { - return ServiceTokenResponseDTO.builder() - .accessToken(accessToken) - .refreshToken(refreshToken) - .tokenType("Bearer") - .expiresIn(serviceTokenProperties.getAccessTtl().toSeconds()) - .build(); - } -} diff --git a/src/main/java/com/solaria/persistence/controller/common/InternalPingController.java b/src/main/java/com/solaria/persistence/controller/common/InternalPingController.java deleted file mode 100644 index 15d6abd..0000000 --- a/src/main/java/com/solaria/persistence/controller/common/InternalPingController.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.solaria.persistence.controller.common; - -import java.util.Map; - -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * Endpoint para testar se auth funcionou, tem apenas um return por ser apenas uma checagem rápida - */ -@RestController -public class InternalPingController { - - @GetMapping("/internal/ping") - public Map ping() { - return Map.of("status", "ok"); - } -} diff --git a/src/main/java/com/solaria/persistence/dto/request/auth/ServiceTokenMintRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/auth/ServiceTokenMintRequestDTO.java deleted file mode 100644 index 159d5c5..0000000 --- a/src/main/java/com/solaria/persistence/dto/request/auth/ServiceTokenMintRequestDTO.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.solaria.persistence.dto.request.auth; - - -import jakarta.validation.constraints.NotBlank; - -import lombok.Getter; -import lombok.Setter; - -@Getter -@Setter -public class ServiceTokenMintRequestDTO { - - @NotBlank(message = "clientSecret é obrigatório") - private String clientSecret; -} diff --git a/src/main/java/com/solaria/persistence/dto/request/auth/ServiceTokenRefreshRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/auth/ServiceTokenRefreshRequestDTO.java deleted file mode 100644 index a8c1ad5..0000000 --- a/src/main/java/com/solaria/persistence/dto/request/auth/ServiceTokenRefreshRequestDTO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.solaria.persistence.dto.request.auth; - -import jakarta.validation.constraints.NotBlank; - -import lombok.Getter; -import lombok.Setter; - - -@Getter -@Setter -public class ServiceTokenRefreshRequestDTO { - - - @NotBlank(message = "refreshToken é obrigatório") - private String refreshToken; -} diff --git a/src/main/java/com/solaria/persistence/dto/response/auth/ServiceTokenResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/auth/ServiceTokenResponseDTO.java deleted file mode 100644 index 12aba61..0000000 --- a/src/main/java/com/solaria/persistence/dto/response/auth/ServiceTokenResponseDTO.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.solaria.persistence.dto.response.auth; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; - -import lombok.NoArgsConstructor; -import lombok.Setter; - - -@Setter -@Getter -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ServiceTokenResponseDTO { - - private String accessToken; - private String refreshToken; - private String tokenType; - private long expiresIn; -} diff --git a/src/main/java/com/solaria/persistence/exception/ServiceAuthException.java b/src/main/java/com/solaria/persistence/exception/ServiceAuthException.java deleted file mode 100644 index 81deb74..0000000 --- a/src/main/java/com/solaria/persistence/exception/ServiceAuthException.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.solaria.persistence.exception; - -import java.util.Map; - -import org.springframework.http.HttpStatus; - -public class ServiceAuthException extends BusinessException { - - public ServiceAuthException(String message) { - super(message, HttpStatus.UNAUTHORIZED, "SERVICE_AUTH_FAILED"); - } - - public ServiceAuthException(String message, Map properties) { - super(message, HttpStatus.UNAUTHORIZED, "SERVICE_AUTH_FAILED", properties); - } -} diff --git a/src/main/java/com/solaria/persistence/security/SecurityConfig.java b/src/main/java/com/solaria/persistence/security/SecurityConfig.java index 9668b9d..ccf8efd 100644 --- a/src/main/java/com/solaria/persistence/security/SecurityConfig.java +++ b/src/main/java/com/solaria/persistence/security/SecurityConfig.java @@ -8,7 +8,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.Order; -import org.springframework.http.HttpMethod; import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; @@ -18,26 +17,19 @@ import org.springframework.security.oauth2.jwt.JwtValidators; import org.springframework.security.oauth2.jwt.NimbusJwtDecoder; import org.springframework.security.web.SecurityFilterChain; -import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.CorsConfigurationSource; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import com.solaria.persistence.security.service.ServiceTokenAuthFilter; -import com.solaria.persistence.security.service.ServiceTokenProperties; -import com.solaria.persistence.security.service.ServiceTokenProvider; - /** * Duas SecurityFilterChain, estruturalmente independentes e segregadas * por @Order * - * @Order(1): rotas -> internal/**; token/jwt de serviço M2M(API->API); - * HS256/JJWT; - * segredo compartilhado (SERVICE_JWT_SECRET), sem JWKS. + * @Order(1): rotas -> /internal/**; rotas internas de rede; + * nunca expostas via Kong; alcançáveis apenas dentro do cluster * * @Order(2): rotas -> sem delimitador; JWT de usuário emitido pelo api-auth; - * resource server RS256/JWKS; validado via NimbusJwtDecoder.withJwkSetUri(...); - * sem segredo compartilhado. + * resource server RS256/JWKS; validado via NimbusJwtDecoder.withJwkSetUri(...). */ // Registra esta classe como fonte de beans de configuração do Spring. @@ -53,14 +45,12 @@ @EnableMethodSecurity // Liga as classes com @ConfigurationProperties como Beans -@EnableConfigurationProperties({ JwtProperties.class, ServiceTokenProperties.class }) +@EnableConfigurationProperties(JwtProperties.class) public class SecurityConfig { private final JwtProperties jwtProperties; - private final ServiceTokenProvider serviceTokenProvider; - - // Handlers 401/403 compartilhados pelas duas chains + // Handlers 401/403 usados pela chain @Order(2) private final ProblemDetailAuthenticationEntryPoint problemDetailAuthenticationEntryPoint; private final ProblemDetailAccessDeniedHandler problemDetailAccessDeniedHandler; @@ -69,11 +59,9 @@ public class SecurityConfig { private String allowedOrigins; public SecurityConfig(JwtProperties jwtProperties, - ServiceTokenProvider serviceTokenProvider, ProblemDetailAuthenticationEntryPoint problemDetailAuthenticationEntryPoint, ProblemDetailAccessDeniedHandler problemDetailAccessDeniedHandler) { this.jwtProperties = jwtProperties; - this.serviceTokenProvider = serviceTokenProvider; this.problemDetailAuthenticationEntryPoint = problemDetailAuthenticationEntryPoint; this.problemDetailAccessDeniedHandler = problemDetailAccessDeniedHandler; } @@ -87,29 +75,14 @@ public SecurityFilterChain internalSecurityFilterChain(HttpSecurity http) throws http // Restringe essa chain apenas para /internal/** .securityMatcher("/internal/**") - // CSRF desabilitado + // CSRF desabilitado .csrf(csrf -> csrf.disable()) - // HttpSession não é usado/criado. toda request se autentica sozinha pelo header + // HttpSession não é usado/criado .sessionManagement(sm -> sm.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) // CorsConfigurationSource é a mesma para as duas chains .cors(cors -> cors.configurationSource(corsConfigurationSource())) - // adiciona filtro de token antes de qualquer verificação de autorização - .addFilterBefore(new ServiceTokenAuthFilter(serviceTokenProvider), - UsernamePasswordAuthenticationFilter.class) - .authorizeHttpRequests(auth -> auth - // Fora do filtro de Bearer token - // mint autentica via clientSecret no corpo; - // refresh autentica via posse de um refresh token válido; - .requestMatchers(HttpMethod.POST, - "/internal/service-tokens", - "/internal/service-tokens/refresh") - .permitAll() - // Todo o resto de /internal/** exige autenticação - .anyRequest().authenticated()) - // Garante que exceptions usem o formato de ProblemDetail - .exceptionHandling(e -> e - .authenticationEntryPoint(problemDetailAuthenticationEntryPoint) - .accessDeniedHandler(problemDetailAccessDeniedHandler)); + // Rotas internas -> sem autenticação de aplicação + .authorizeHttpRequests(auth -> auth.anyRequest().permitAll()); // Constrói e devolve a SecurityFilterChain configurada acima como o bean deste // método return http.build(); diff --git a/src/main/java/com/solaria/persistence/security/service/ServiceTokenAuthFilter.java b/src/main/java/com/solaria/persistence/security/service/ServiceTokenAuthFilter.java deleted file mode 100644 index 7749a04..0000000 --- a/src/main/java/com/solaria/persistence/security/service/ServiceTokenAuthFilter.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.solaria.persistence.security.service; - -import java.io.IOException; -import java.util.List; - -import org.springframework.security.core.Authentication; -import org.springframework.security.core.authority.SimpleGrantedAuthority; -import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationToken; - -import org.springframework.web.filter.OncePerRequestFilter; - -import com.solaria.persistence.exception.ServiceAuthException; - -import jakarta.servlet.FilterChain; -import jakarta.servlet.ServletException; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; - -/** - * Classe responsavel por validar e extrair o token de serviço - * Sem @component para não ser instanciada com filtro global(serve apenas rotas /internal/**) - */ -public class ServiceTokenAuthFilter extends OncePerRequestFilter { - - private static final String AUTHORIZATION_HEADER = "Authorization"; - private static final String BEARER_PREFIX = "Bearer "; - - // única classe que sabe emitir/validar o token de serviço. - private final ServiceTokenProvider serviceTokenProvider; - - public ServiceTokenAuthFilter(ServiceTokenProvider serviceTokenProvider) { - this.serviceTokenProvider = serviceTokenProvider; - } - - @Override - protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, - FilterChain filterChain) throws ServletException, IOException { - String header = request.getHeader(AUTHORIZATION_HEADER); - // verifica se existe um header authorization e se é bearer - if (header != null && header.startsWith(BEARER_PREFIX)) { - // remove "Bearer ", sobrando apenas o jwt - String token = header.substring(BEARER_PREFIX.length()); - try { - // Validação de assinatura, issuer e expiração por ServiceTokenProvider; - // TOKEN_TYPE_ACCESS garante que apenas access tokens são válidados - serviceTokenProvider.parseAndValidate(token, ServiceTokenProvider.TOKEN_TYPE_ACCESS); - - // Token validado -> constroi uma authentication já verificada com a auhtority ROLE_SERVICE - // Authority única para M2M - Authentication authentication = new PreAuthenticatedAuthenticationToken( - "internal-client", null, - List.of(new SimpleGrantedAuthority("ROLE_SERVICE"))); - - // Seta a authtentication para a request atual - SecurityContextHolder.getContext().setAuthentication(authentication); - - } catch (ServiceAuthException ex) { - // em caso de erro, remove qualquer authentication da trhead - SecurityContextHolder.clearContext(); - } - } - - // dispacha request para o próximo filtro - filterChain.doFilter(request, response); - } -} diff --git a/src/main/java/com/solaria/persistence/security/service/ServiceTokenProperties.java b/src/main/java/com/solaria/persistence/security/service/ServiceTokenProperties.java deleted file mode 100644 index 2216829..0000000 --- a/src/main/java/com/solaria/persistence/security/service/ServiceTokenProperties.java +++ /dev/null @@ -1,81 +0,0 @@ - -package com.solaria.persistence.security.service; - -import java.time.Duration; - -import org.springframework.boot.context.properties.ConfigurationProperties; - -/** - * Propriedades do token de serviço (HMAC-SHA256), relacionamento M2M (/internal/**) - */ - -// Habilita essa classe com as variaveis em application.properties com prefixo app.jwt.service -@ConfigurationProperties(prefix = "app.jwt.service") -public class ServiceTokenProperties { - - // Secret HMAC (SERVICE_JWT_SECRET) usado para assinar/validar os tokens de serviço - private String secret; - - // Secret comparado no mint (SERVICE_CLIENT_SECRET) - private String clientSecret; - - // Issuer gravado nos tokens de serviço emitidos por esse fluxo - private String issuer; - - // TTL do access token de serviço - private long accessTtlMs; - - // TTL do refresh token de serviço - private long refreshTtlMs; - - public String getSecret() { - return secret; - } - - public void setSecret(String secret) { - this.secret = secret; - } - - public String getClientSecret() { - return clientSecret; - } - - public void setClientSecret(String clientSecret) { - this.clientSecret = clientSecret; - } - - public String getIssuer() { - return issuer; - } - - public void setIssuer(String issuer) { - this.issuer = issuer; - } - - public long getAccessTtlMs() { - return accessTtlMs; - } - - public void setAccessTtlMs(long accessTtlMs) { - this.accessTtlMs = accessTtlMs; - } - - public long getRefreshTtlMs() { - return refreshTtlMs; - } - - public void setRefreshTtlMs(long refreshTtlMs) { - this.refreshTtlMs = refreshTtlMs; - } - - - // Getter derivado, converte long para milisegundos - public Duration getAccessTtl() { - return Duration.ofMillis(accessTtlMs); - } - - // Getter derivado, converte long para milisegundos - public Duration getRefreshTtl() { - return Duration.ofMillis(refreshTtlMs); - } -} diff --git a/src/main/java/com/solaria/persistence/security/service/ServiceTokenProvider.java b/src/main/java/com/solaria/persistence/security/service/ServiceTokenProvider.java deleted file mode 100644 index 4ad5fdf..0000000 --- a/src/main/java/com/solaria/persistence/security/service/ServiceTokenProvider.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.solaria.persistence.security.service; - -import java.nio.charset.StandardCharsets; - -import java.security.Key; - -import java.time.Duration; -import java.time.Instant; - -import java.util.Date; -import java.util.UUID; - -import javax.crypto.spec.SecretKeySpec; - -import org.springframework.stereotype.Component; - -import com.solaria.persistence.exception.ServiceAuthException; - -import io.jsonwebtoken.Claims; -import io.jsonwebtoken.JwtException; -import io.jsonwebtoken.Jwts; -import io.jsonwebtoken.SignatureAlgorithm; - -/** - * Emite e valida o token de serviço M2M (API para API) via JJWT + HMAC-SHA256 - * Usa JJWT em vez de Nimbus (Impede que um token M2M seja válidado como - * accesses/refresh token) - * Segredo e issuer são próprios deste fluxo M2M (/internal/**) - */ -@Component -public class ServiceTokenProvider { - - public static final String TOKEN_TYPE_ACCESS = "service_access"; - public static final String TOKEN_TYPE_REFRESH = "service_refresh"; - - private static final String CLAIM_TOKEN_TYPE = "token_type"; - private static final String SUBJECT = "internal-client"; - private static final int MIN_SECRET_BYTES = 32; - - private final ServiceTokenProperties properties; - private final Key signingKey; - - public ServiceTokenProvider(ServiceTokenProperties properties) { - this.properties = properties; - this.signingKey = buildSigningKey(properties.getSecret()); - } - - // Método responsável por validar a secret e criar uma chave criptográfica para - // uso com algoritmo HMAC-SHA256/HS256 com os bytes da mesma - private static Key buildSigningKey(String secret) { - - // Verificação de secret - if (secret == null || secret.isBlank()) { - throw new IllegalStateException( - "Secret precisa estar definido para o token de serviço M2M."); - } - - // transforma secret em bytes - byte[] secretBytes = secret.getBytes(StandardCharsets.UTF_8); - - // Verificação de tamanho da secret - if (secretBytes.length < MIN_SECRET_BYTES) { - throw new IllegalStateException( - "Secret precisa ter pelo menos " + MIN_SECRET_BYTES + "bytes;"); - } - - // Cria uma chave criptográfica para uso com algoritmo HMAC-SHA256/HS256 usando - // os bytes do secret - return new SecretKeySpec(secretBytes, SignatureAlgorithm.HS256.getJcaName()); - } - - // retorna um accesses token - public String mintAccessToken() { - return mint(TOKEN_TYPE_ACCESS, properties.getAccessTtl()); - } - - // retorna um refrsh token - public String mintRefreshToken() { - return mint(TOKEN_TYPE_REFRESH, properties.getRefreshTtl()); - } - - // cria um acesses/refrsh token - private String mint(String tokenType, Duration ttl) { - Instant now = Instant.now(); // instante da criação do token - return Jwts.builder() - .setId(UUID.randomUUID().toString()) // gera um UUID único para o token - .setIssuer(properties.getIssuer()) // define quem emitiu o token - .setSubject(SUBJECT) // define "descrição/assunto" do token - .claim(CLAIM_TOKEN_TYPE, tokenType) // claim personalizado, define o tipo do token accesses/refresh - .setIssuedAt(Date.from(now)) // define o instante de criação do token - .setExpiration(Date.from(now.plus(ttl))) // define instante de expiração do token - .signWith(signingKey, SignatureAlgorithm.HS256) // assina o token com a secret + algoritmo HMAC-SHA256/HS256 - .compact(); // transforma o token em um jwt - } - - // validação do token - public Claims parseAndValidate(String token, String expectedTokenType) { - Claims claims; // representa os dados dentro do payload - try { - // Cria um parser configurado para validar o JWT - claims = Jwts.parserBuilder() - .setSigningKey(signingKey) // define a chave usada para valiadar a assinatura - .requireIssuer(properties.getIssuer()) // exige um emissor especifico para o token - .build() // constrói o parser com essas configurações - .parseClaimsJws(token) // valida o jwt - .getBody(); // retorna o paylaod do token - } catch (JwtException | IllegalArgumentException ex) { - throw new ServiceAuthException("Token de serviço inválido: " + ex.getMessage()); - } - - // verificação do tipo de token esperado e recebido - String actualTokenType = claims.get(CLAIM_TOKEN_TYPE, String.class); - if (!expectedTokenType.equals(actualTokenType)) { - throw new ServiceAuthException( - "Tipo de token de serviço inesperado (esperado: " + expectedTokenType+ ", recebido: " + actualTokenType + ")."); - } - return claims; - } -} \ No newline at end of file diff --git a/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 4abdc3b..1b86ea3 100644 --- a/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -49,31 +49,6 @@ "type": "java.lang.String", "description": "A description for 'app.jwt.issuer'" }, - { - "name": "app.jwt.service.secret", - "type": "java.lang.String", - "description": "A description for 'app.jwt.service.secret'" - }, - { - "name": "app.jwt.service.client-secret", - "type": "java.lang.String", - "description": "A description for 'app.jwt.service.client-secret'" - }, - { - "name": "app.jwt.service.issuer", - "type": "java.lang.String", - "description": "A description for 'app.jwt.service.issuer'" - }, - { - "name": "app.jwt.service.access-ttl-ms", - "type": "java.lang.String", - "description": "A description for 'app.jwt.service.access-ttl-ms'" - }, - { - "name": "app.jwt.service.refresh-ttl-ms", - "type": "java.lang.String", - "description": "A description for 'app.jwt.service.refresh-ttl-ms'" - }, { "name": "google-translate.api-key", "type": "java.lang.String", diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index d48ab53..e1b1204 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -35,16 +35,6 @@ app.cors.allowed-origins=http://localhost:3000,http://localhost:5173 app.jwt.jwk-set-uri=${JWT_JWK_SET_URI:http://localhost:8081/.well-known/jwks.json} # claim de emissor do jwt do usuário app.jwt.issuer=solaria-auth -# secret do token de serviço M2M, precisa ter >= 32 bytes -app.jwt.service.secret=${SERVICE_JWT_SECRET} -# segredo compartilhado, comparado com clientSecret em POST /internal/service-tokens -> define quem pode emitir um token novo -app.jwt.service.client-secret=${SERVICE_CLIENT_SECRET} -# Emissor próprio do token de serviço -app.jwt.service.issuer=${SERVICE_JWT_ISSUER:solaria-persistence-internal} -# TTL do token de access -app.jwt.service.access-ttl-ms=${SERVICE_JWT_ACCESS_TTL_MS:600000} -# TTL do token de refresh -app.jwt.service.refresh-ttl-ms=${SERVICE_JWT_REFRESH_TTL_MS:3600000} # variaveis da URL -> montada dessa forma -> *cloudinary://:@* cloudinary.cloud-name=${CLOUDINARY_CLOUD_NAME} diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties index 8435d6c..f87e97d 100644 --- a/src/test/resources/application.properties +++ b/src/test/resources/application.properties @@ -10,9 +10,3 @@ app.cors.allowed-origins=http://localhost:3000,http://localhost:5173 app.jwt.jwk-set-uri=http://localhost:8081/.well-known/jwks.json app.jwt.issuer=solaria-auth - -app.jwt.service.secret=test-service-jwt-secret-must-be-at-least-32-bytes-long -app.jwt.service.client-secret=test-service-client-secret-value -app.jwt.service.issuer=solaria-persistence-internal -app.jwt.service.access-ttl-ms=600000 -app.jwt.service.refresh-ttl-ms=3600000 From 528d4ac4762621e2e31a82288ade94d9769f2824 Mon Sep 17 00:00:00 2001 From: davisilva <84607533+Megueutu@users.noreply.github.com> Date: Tue, 1 Sep 2026 09:01:59 -0300 Subject: [PATCH 7/8] docs: add openapi annotations to internal user provisioning controller (#39) --- .../identity/InternalUserProvisioningController.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/solaria/persistence/controller/identity/InternalUserProvisioningController.java b/src/main/java/com/solaria/persistence/controller/identity/InternalUserProvisioningController.java index c4453aa..04de9ef 100644 --- a/src/main/java/com/solaria/persistence/controller/identity/InternalUserProvisioningController.java +++ b/src/main/java/com/solaria/persistence/controller/identity/InternalUserProvisioningController.java @@ -10,12 +10,15 @@ import com.solaria.persistence.dto.response.identity.InternalUserProvisionResponseDTO; import com.solaria.persistence.service.identity.InternalUserProvisioningService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; // Controller M2M chamado por api-auth (via service token) para garantir que um User com o authId // do evento USER_REGISTERED exista em dbsolier @RestController @RequestMapping("/internal/users") +@Tag(name = "Provisionamento Interno de Usuários", description = "Endpoint M2M usado pelo api-auth") public class InternalUserProvisioningController { private final InternalUserProvisioningService provisioningService; @@ -24,9 +27,10 @@ public InternalUserProvisioningController(InternalUserProvisioningService provis this.provisioningService = provisioningService; } - // Cria/confirma User com o authId recebido -> sempre responde 200 - // idempotencia da operação garantida por authId + // Cria/confirma User com o authId recebido -> sempre responde 200 + // idempotencia da operação garantida por authId @PostMapping + @Operation(summary = "Provisiona ou confirma um usuário a partir do authId") public ResponseEntity provision( @Valid @RequestBody InternalUserProvisionRequestDTO dto) { return ResponseEntity.ok(provisioningService.provision(dto.getAuthId())); From 8a20e41bafa776f3d6cf2f489fff9f99a7133606 Mon Sep 17 00:00:00 2001 From: davisilva <84607533+Megueutu@users.noreply.github.com> Date: Tue, 1 Sep 2026 10:45:57 -0300 Subject: [PATCH 8/8] chore: rename artifact and app name from persistence to core (#40) --- pom.xml | 4 ++-- src/main/resources/application.properties | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 5ba4181..2dab789 100644 --- a/pom.xml +++ b/pom.xml @@ -9,9 +9,9 @@ com.solaria - persistence + core 0.0.1-SNAPSHOT - persistence + core diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e1b1204..4ff2b19 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,4 +1,4 @@ -spring.application.name=persistence +spring.application.name=core spring.config.import=optional:file:.env[.properties]