diff --git a/application/src/main/java/com/dh7789dev/xpeditis/controller/api/v1/AuthenticationRestController.java b/application/src/main/java/com/dh7789dev/xpeditis/controller/api/v1/AuthenticationRestController.java index 244be1c..e7c2b89 100644 --- a/application/src/main/java/com/dh7789dev/xpeditis/controller/api/v1/AuthenticationRestController.java +++ b/application/src/main/java/com/dh7789dev/xpeditis/controller/api/v1/AuthenticationRestController.java @@ -3,6 +3,7 @@ package com.dh7789dev.xpeditis.controller.api.v1; import com.dh7789dev.xpeditis.AuthenticationService; import com.dh7789dev.xpeditis.dto.AuthenticationRequest; import com.dh7789dev.xpeditis.dto.AuthenticationResponse; +import com.dh7789dev.xpeditis.dto.RegisterRequest; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; @@ -26,4 +27,10 @@ public class AuthenticationRestController { @RequestBody @Valid AuthenticationRequest request) { return ResponseEntity.ok(service.authenticate(request)); } + + @PostMapping("/register") + public ResponseEntity register( + @RequestBody @Valid RegisterRequest request) { + return ResponseEntity.ok(service.register(request)); + } } diff --git a/bootstrap/src/main/java/com/dh7789dev/xpeditis/configuration/GlobalConfiguration.java b/bootstrap/src/main/java/com/dh7789dev/xpeditis/configuration/GlobalConfiguration.java index 21ad38a..92fa196 100755 --- a/bootstrap/src/main/java/com/dh7789dev/xpeditis/configuration/GlobalConfiguration.java +++ b/bootstrap/src/main/java/com/dh7789dev/xpeditis/configuration/GlobalConfiguration.java @@ -87,9 +87,4 @@ public class GlobalConfiguration { return source; } - @Bean - public UserDetailsService userDetailsService() { - return username -> userDao.findByUsername(username) - .orElseThrow(() -> new UsernameNotFoundException(String.format(USER_NOT_FOUND_MSG, username))); - } } diff --git a/bootstrap/src/main/java/com/dh7789dev/xpeditis/configuration/JwtAuthenticationFilter.java b/bootstrap/src/main/java/com/dh7789dev/xpeditis/configuration/JwtAuthenticationFilter.java index 420f7ee..aefa9eb 100644 --- a/bootstrap/src/main/java/com/dh7789dev/xpeditis/configuration/JwtAuthenticationFilter.java +++ b/bootstrap/src/main/java/com/dh7789dev/xpeditis/configuration/JwtAuthenticationFilter.java @@ -24,6 +24,7 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter { private static final String AUTH_HEADER = "Authorization"; private static final String AUTH_TYPE = "Bearer "; + private final UserDetailsService userDetailsService; private final JwtUtil jwtUtil; private final TokenDao tokenDao; diff --git a/bootstrap/src/main/java/com/dh7789dev/xpeditis/configuration/SecurityConfiguration.java b/bootstrap/src/main/java/com/dh7789dev/xpeditis/configuration/SecurityConfiguration.java index daf15a5..af6fce4 100755 --- a/bootstrap/src/main/java/com/dh7789dev/xpeditis/configuration/SecurityConfiguration.java +++ b/bootstrap/src/main/java/com/dh7789dev/xpeditis/configuration/SecurityConfiguration.java @@ -52,8 +52,6 @@ public class SecurityConfiguration { "/swagger-ui/**", "/webjars/**", "/swagger-ui.html", - "/uploadimage", - "/upload/**", "/addevent"}; private static final WebExpressionAuthorizationManager INTERNAL_ACCESS = @@ -101,12 +99,8 @@ public class SecurityConfiguration { auth.requestMatchers(WHITE_LIST_URL).permitAll() .requestMatchers(antMatcher(HttpMethod.GET, "/")).permitAll() .requestMatchers(antMatcher(HttpMethod.GET, API_V1_URI)).permitAll() - .requestMatchers(antMatcher(HttpMethod.GET, "/images/**")).permitAll() - .requestMatchers(antMatcher(HttpMethod.GET, "/api/v1/reservations")).hasRole(ADMIN_ROLE) - .requestMatchers(antMatcher(HttpMethod.GET, "/api/v1/reservations/**")).hasRole(ADMIN_ROLE) .requestMatchers(antMatcher(HttpMethod.PUT, API_V1_URI)).hasRole(ADMIN_ROLE) .requestMatchers(antMatcher(HttpMethod.DELETE, API_V1_URI)).hasRole(ADMIN_ROLE) - .requestMatchers(antMatcher(HttpMethod.POST, "/api/v1/reservations")).permitAll() .requestMatchers(antMatcher(HttpMethod.POST, API_V1_URI)).hasRole(ADMIN_ROLE) .requestMatchers(antMatcher("/h2-console/**")).access(INTERNAL_ACCESS) .requestMatchers(antMatcher("/actuator/**")).access(INTERNAL_ACCESS) diff --git a/bootstrap/src/main/resources/data-h2.sql b/bootstrap/src/main/resources/data-h2.sql index 05044a4..f471af2 100644 --- a/bootstrap/src/main/resources/data-h2.sql +++ b/bootstrap/src/main/resources/data-h2.sql @@ -1,28 +1,39 @@ -INSERT INTO users (username, email, password, role) -VALUES ('dbuser', 'dbuser@dev.ovh', '{bcrypt}$2y$10$.qkbukzzX21D.bqbI.B2R.tvWP90o/Y16QRWVLodw51BHft7ZWbc.', 'USER'), - ('dbadmin', 'dbadmin@dev.ovh', '{bcrypt}$2y$10$kp1V7UYDEWn17WSK16UcmOnFd1mPFVF6UkLrOOCGtf24HOYt8p1iC', 'ADMIN'); +-- === Companies === +INSERT INTO company_entity (id, name, country) +VALUES + (1, 'Global Logistics', 'France'), + (2, 'TransWorld Exports', 'Germany'); -INSERT INTO event (name, description, date) -VALUES ('toto', 'hello', '2025-01-01'), - ('tata', 'hola', '2025-01-10'); +-- === Users === +INSERT INTO user_entity (id, username, first_name, last_name, email, password, role, enabled, company_id) +VALUES + (1, 'admin1', 'Alice', 'Martin', 'alice@globallogistics.com', '$2a$10$hash1', 'ADMIN', true, 1), + (2, 'user1', 'Bob', 'Dupont', 'bob@globallogistics.com', '$2a$10$hash2', 'USER', true, 1), + (3, 'admin2', 'Eva', 'Schmidt', 'eva@transworld.com', '$2a$10$hash3', 'ADMIN', true, 2); -INSERT INTO gallery (name, description) -VALUES ('gallery', ''); +-- === Licenses === +INSERT INTO license_entity (id, license_key, expiration_date, active, user_id) +VALUES + (1, 'LIC-GL-A', '2025-12-31', true, 1), + (2, 'LIC-GL-B', '2025-12-31', true, 2), + (3, 'LIC-TW-A', '2025-11-30', true, 3); -INSERT INTO menu_category (name) -VALUES ('STARTERS'), - ('DISHES'), - ('DESSERTS'), - ('PIZZAS'), - ('RED_WINES'), - ('WHITE_WINES'); +-- === Quotes === +INSERT INTO quote_entity (id, reference, status, estimated_amount, created_at, user_id, company_id) +VALUES + ('550e8400-e29b-41d4-a716-446655440000', 'QT-GL-001', 'PENDING', 1200.50, CURRENT_TIMESTAMP, 1, 1), + ('550e8400-e29b-41d4-a716-446655440001', 'QT-GL-002', 'VALIDATED', 2300.75, CURRENT_TIMESTAMP, 2, 1), + ('550e8400-e29b-41d4-a716-446655440002', 'QT-TW-001', 'VALIDATED', 1950.00, CURRENT_TIMESTAMP, 3, 2); -INSERT INTO product (name, description, price, category_id) -VALUES ('Coconut Cake', 'Fresh Coconut', 4.90, 3), - ('Pasta', 'Fresh Pasta', 12.79, 2), - ('Foie Gras', 'Fresh Pasta', 12.79, 1); +-- === Export Folders === +INSERT INTO export_folder_entity (id, reference, validation_date, company_id, quote_id) +VALUES + (1, 'EXP-GL-002', CURRENT_TIMESTAMP, 1, '550e8400-e29b-41d4-a716-446655440001'), + (2, 'EXP-TW-001', CURRENT_TIMESTAMP, 2, '550e8400-e29b-41d4-a716-446655440002'); -INSERT INTO selected_day (date) -VALUES ('2035-01-01'), - ('2035-03-02'), - ('2035-03-10'); \ No newline at end of file +-- === Tokens === +INSERT INTO token (id, token, token_type, revoked, expired, user_id) +VALUES + (1, 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9-admin1', 'BEARER', false, false, 1), + (2, 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9-user1', 'BEARER', false, false, 2), + (3, 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9-admin2', 'BEARER', false, false, 3); diff --git a/domain/api/src/main/java/com/dh7789dev/xpeditis/AuthenticationService.java b/domain/api/src/main/java/com/dh7789dev/xpeditis/AuthenticationService.java index 471d8bc..32c7ef5 100644 --- a/domain/api/src/main/java/com/dh7789dev/xpeditis/AuthenticationService.java +++ b/domain/api/src/main/java/com/dh7789dev/xpeditis/AuthenticationService.java @@ -2,8 +2,11 @@ package com.dh7789dev.xpeditis; import com.dh7789dev.xpeditis.dto.AuthenticationRequest; import com.dh7789dev.xpeditis.dto.AuthenticationResponse; +import com.dh7789dev.xpeditis.dto.RegisterRequest; public interface AuthenticationService { AuthenticationResponse authenticate(AuthenticationRequest request); + AuthenticationResponse register(RegisterRequest request); + } diff --git a/domain/data/src/main/java/com/dh7789dev/xpeditis/dto/Company.java b/domain/data/src/main/java/com/dh7789dev/xpeditis/dto/Company.java index ea7ae98..250df57 100644 --- a/domain/data/src/main/java/com/dh7789dev/xpeditis/dto/Company.java +++ b/domain/data/src/main/java/com/dh7789dev/xpeditis/dto/Company.java @@ -1,4 +1,19 @@ package com.dh7789dev.xpeditis.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.util.List; + +@Data +@AllArgsConstructor public class Company { + private Long id; + private String name; + private String country; + private List users; + private List quotes; + private List exports; } + diff --git a/domain/data/src/main/java/com/dh7789dev/xpeditis/dto/ExportFolder.java b/domain/data/src/main/java/com/dh7789dev/xpeditis/dto/ExportFolder.java index 1843685..6384514 100644 --- a/domain/data/src/main/java/com/dh7789dev/xpeditis/dto/ExportFolder.java +++ b/domain/data/src/main/java/com/dh7789dev/xpeditis/dto/ExportFolder.java @@ -1,4 +1,19 @@ package com.dh7789dev.xpeditis.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.time.LocalDateTime; + + +@Data +@AllArgsConstructor public class ExportFolder { + private Long id; + private String reference; + private LocalDateTime validationDate; + private Company company; + private Quote quote; } + diff --git a/domain/data/src/main/java/com/dh7789dev/xpeditis/dto/License.java b/domain/data/src/main/java/com/dh7789dev/xpeditis/dto/License.java index 084b395..bc39e3b 100644 --- a/domain/data/src/main/java/com/dh7789dev/xpeditis/dto/License.java +++ b/domain/data/src/main/java/com/dh7789dev/xpeditis/dto/License.java @@ -1,4 +1,16 @@ package com.dh7789dev.xpeditis.dto; +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.time.LocalDate; + +@Data +@AllArgsConstructor public class License { + private Long id; + private String licenseKey; + private LocalDate expirationDate; + private boolean active; + private UserAccount user; } diff --git a/domain/data/src/main/java/com/dh7789dev/xpeditis/dto/Quote.java b/domain/data/src/main/java/com/dh7789dev/xpeditis/dto/Quote.java index a12d37e..9c67b46 100644 --- a/domain/data/src/main/java/com/dh7789dev/xpeditis/dto/Quote.java +++ b/domain/data/src/main/java/com/dh7789dev/xpeditis/dto/Quote.java @@ -1,4 +1,22 @@ package com.dh7789dev.xpeditis.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + + +@Data +@AllArgsConstructor public class Quote { + private Long id; + private String reference; + private String status; + private BigDecimal estimatedAmount; + private LocalDateTime createdAt = LocalDateTime.now(); + private UserAccount user; + private Company company; + private ExportFolder exportFile; } diff --git a/domain/data/src/main/java/com/dh7789dev/xpeditis/dto/RegisterRequest.java b/domain/data/src/main/java/com/dh7789dev/xpeditis/dto/RegisterRequest.java index 1a1eae7..753e1b2 100644 --- a/domain/data/src/main/java/com/dh7789dev/xpeditis/dto/RegisterRequest.java +++ b/domain/data/src/main/java/com/dh7789dev/xpeditis/dto/RegisterRequest.java @@ -1,4 +1,37 @@ package com.dh7789dev.xpeditis.dto; +import jakarta.validation.constraints.NotBlank; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; +import lombok.experimental.FieldDefaults; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@FieldDefaults(level = AccessLevel.PRIVATE) +@Accessors(chain = true) public class RegisterRequest { + + @NotBlank + String firstName; + + @NotBlank + String lastName; + + @NotBlank + String username; + + @NotBlank + String email; + + @NotBlank + String password; + + @NotBlank + String role; // Should be "USER" or "ADMIN" + } + diff --git a/domain/service/pom.xml b/domain/service/pom.xml index 29a66b1..57a24e6 100755 --- a/domain/service/pom.xml +++ b/domain/service/pom.xml @@ -58,6 +58,10 @@ lombok provided + + org.springframework.security + spring-security-crypto + diff --git a/domain/service/src/main/java/com/dh7789dev/xpeditis/AuthenticationServiceImpl.java b/domain/service/src/main/java/com/dh7789dev/xpeditis/AuthenticationServiceImpl.java index d9988ed..d4a2bbe 100644 --- a/domain/service/src/main/java/com/dh7789dev/xpeditis/AuthenticationServiceImpl.java +++ b/domain/service/src/main/java/com/dh7789dev/xpeditis/AuthenticationServiceImpl.java @@ -2,6 +2,9 @@ package com.dh7789dev.xpeditis; import com.dh7789dev.xpeditis.dto.AuthenticationRequest; import com.dh7789dev.xpeditis.dto.AuthenticationResponse; +import com.dh7789dev.xpeditis.dto.RegisterRequest; +import com.dh7789dev.xpeditis.dto.UserAccount; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; @Service @@ -17,4 +20,9 @@ public class AuthenticationServiceImpl implements AuthenticationService { public AuthenticationResponse authenticate(AuthenticationRequest request) { return authenticationRepository.authenticate(request); } + + @Override + public AuthenticationResponse register(RegisterRequest request) { + return null; + } } diff --git a/infrastructure/src/main/java/com/dh7789dev/xpeditis/dao/CompanyDao.java b/infrastructure/src/main/java/com/dh7789dev/xpeditis/dao/CompanyDao.java index 2f7791b..2bcdfc2 100644 --- a/infrastructure/src/main/java/com/dh7789dev/xpeditis/dao/CompanyDao.java +++ b/infrastructure/src/main/java/com/dh7789dev/xpeditis/dao/CompanyDao.java @@ -1,4 +1,7 @@ package com.dh7789dev.xpeditis.dao; -public interface CompanyDao { +import com.dh7789dev.xpeditis.entity.CompanyEntity; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface CompanyDao extends JpaRepository { } diff --git a/infrastructure/src/main/java/com/dh7789dev/xpeditis/dao/ExportFolderDao.java b/infrastructure/src/main/java/com/dh7789dev/xpeditis/dao/ExportFolderDao.java index 1e5c04f..8ae64dd 100644 --- a/infrastructure/src/main/java/com/dh7789dev/xpeditis/dao/ExportFolderDao.java +++ b/infrastructure/src/main/java/com/dh7789dev/xpeditis/dao/ExportFolderDao.java @@ -1,4 +1,7 @@ package com.dh7789dev.xpeditis.dao; -public interface ExportFolderDao { +import com.dh7789dev.xpeditis.entity.ExportFolderEntity; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ExportFolderDao extends JpaRepository { } diff --git a/infrastructure/src/main/java/com/dh7789dev/xpeditis/dao/LicenseDao.java b/infrastructure/src/main/java/com/dh7789dev/xpeditis/dao/LicenseDao.java index cd316e2..36bfe78 100644 --- a/infrastructure/src/main/java/com/dh7789dev/xpeditis/dao/LicenseDao.java +++ b/infrastructure/src/main/java/com/dh7789dev/xpeditis/dao/LicenseDao.java @@ -1,4 +1,6 @@ package com.dh7789dev.xpeditis.dao; -public interface LicenseDao { +import org.springframework.data.jpa.repository.JpaRepository; + +public interface LicenseDao extends JpaRepository { } diff --git a/infrastructure/src/main/java/com/dh7789dev/xpeditis/dao/QuoteDao.java b/infrastructure/src/main/java/com/dh7789dev/xpeditis/dao/QuoteDao.java index 1500644..b91f8bb 100644 --- a/infrastructure/src/main/java/com/dh7789dev/xpeditis/dao/QuoteDao.java +++ b/infrastructure/src/main/java/com/dh7789dev/xpeditis/dao/QuoteDao.java @@ -1,4 +1,7 @@ package com.dh7789dev.xpeditis.dao; -public class QuoteDao { +import com.dh7789dev.xpeditis.entity.QuoteEntity; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface QuoteDao extends JpaRepository { } diff --git a/infrastructure/src/main/java/com/dh7789dev/xpeditis/dao/TokenDao.java b/infrastructure/src/main/java/com/dh7789dev/xpeditis/dao/TokenDao.java index fcaada5..3295898 100644 --- a/infrastructure/src/main/java/com/dh7789dev/xpeditis/dao/TokenDao.java +++ b/infrastructure/src/main/java/com/dh7789dev/xpeditis/dao/TokenDao.java @@ -12,9 +12,9 @@ public interface TokenDao extends JpaRepository { Optional findByToken(String token); @Query(value = """ - select t from TokenEntity t inner join UserEntity u\s + select t from TokenEntity t inner join UserAccountEntity u\s on t.user.id = u.id\s where u.id = :userId and (t.expired = false or t.revoked = false)\s """) - List findAllValidTokenByUserId(Long userId); + List findAllValidTokenByUserId(String userId); } diff --git a/infrastructure/src/main/java/com/dh7789dev/xpeditis/entity/CompanyEntity.java b/infrastructure/src/main/java/com/dh7789dev/xpeditis/entity/CompanyEntity.java index 7e07e91..fd5bc21 100644 --- a/infrastructure/src/main/java/com/dh7789dev/xpeditis/entity/CompanyEntity.java +++ b/infrastructure/src/main/java/com/dh7789dev/xpeditis/entity/CompanyEntity.java @@ -2,22 +2,25 @@ package com.dh7789dev.xpeditis.entity; import jakarta.persistence.*; +import java.util.List; + @Entity -public class Company extends BaseEntity { +public class CompanyEntity extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; + private String country; @OneToMany(mappedBy = "company", cascade = CascadeType.ALL) - private List users; + private List users; @OneToMany(mappedBy = "company", cascade = CascadeType.ALL) - private List quotes; + private List quotes; @OneToMany(mappedBy = "company", cascade = CascadeType.ALL) - private List exports; + private List exports; } diff --git a/infrastructure/src/main/java/com/dh7789dev/xpeditis/entity/ExportFolderEntity.java b/infrastructure/src/main/java/com/dh7789dev/xpeditis/entity/ExportFolderEntity.java index 70c9171..613c761 100644 --- a/infrastructure/src/main/java/com/dh7789dev/xpeditis/entity/ExportFolderEntity.java +++ b/infrastructure/src/main/java/com/dh7789dev/xpeditis/entity/ExportFolderEntity.java @@ -1,4 +1,24 @@ package com.dh7789dev.xpeditis.entity; -public class ExportFolder { +import jakarta.persistence.*; + +import java.time.LocalDateTime; + +@Entity +public class ExportFolderEntity extends BaseEntity { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String reference; + + private LocalDateTime validationDate; + + @ManyToOne + private CompanyEntity company; + + @OneToOne + @JoinColumn(name = "quote_id", unique = true) + private QuoteEntity quote; } + diff --git a/infrastructure/src/main/java/com/dh7789dev/xpeditis/entity/LicenseEntity.java b/infrastructure/src/main/java/com/dh7789dev/xpeditis/entity/LicenseEntity.java index 4bcb10a..130129a 100644 --- a/infrastructure/src/main/java/com/dh7789dev/xpeditis/entity/LicenseEntity.java +++ b/infrastructure/src/main/java/com/dh7789dev/xpeditis/entity/LicenseEntity.java @@ -5,17 +5,19 @@ import jakarta.persistence.*; import java.time.LocalDate; @Entity -public class License extends BaseEntity { +public class LicenseEntity extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String licenseKey; + private LocalDate expirationDate; + private boolean active; @OneToOne @JoinColumn(name = "user_id", unique = true) - private UserAccount user; + private UserEntity user; } diff --git a/infrastructure/src/main/java/com/dh7789dev/xpeditis/entity/QuoteEntity.java b/infrastructure/src/main/java/com/dh7789dev/xpeditis/entity/QuoteEntity.java index 9e7aa91..0d4b5a1 100644 --- a/infrastructure/src/main/java/com/dh7789dev/xpeditis/entity/QuoteEntity.java +++ b/infrastructure/src/main/java/com/dh7789dev/xpeditis/entity/QuoteEntity.java @@ -6,23 +6,28 @@ import java.math.BigDecimal; import java.time.LocalDateTime; @Entity -public class Quote extends BaseEntity { +public class QuoteEntity extends BaseEntity { @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) + @GeneratedValue(strategy = GenerationType.UUID) private Long id; + @Column(unique = true, nullable = false) private String reference; + + @Column(nullable = false) private String status; + private BigDecimal estimatedAmount; + private LocalDateTime createdAt = LocalDateTime.now(); @ManyToOne - private UserAccount user; + private UserEntity user; @ManyToOne - private Company company; + private CompanyEntity company; @OneToOne(mappedBy = "quote", cascade = CascadeType.ALL) - private ExportFile exportFile; + private ExportFolderEntity exportFile; } diff --git a/infrastructure/src/main/java/com/dh7789dev/xpeditis/entity/UserEntity.java b/infrastructure/src/main/java/com/dh7789dev/xpeditis/entity/UserEntity.java index 35bd76a..0ecfde4 100644 --- a/infrastructure/src/main/java/com/dh7789dev/xpeditis/entity/UserEntity.java +++ b/infrastructure/src/main/java/com/dh7789dev/xpeditis/entity/UserEntity.java @@ -13,7 +13,7 @@ import java.util.List; @Entity @Getter @Setter -public class UserAccountEntity extends BaseEntity implements UserDetails { +public class UserEntity extends BaseEntity implements UserDetails { @NaturalId @Column(nullable = false, unique = true, length = 50) diff --git a/infrastructure/src/main/java/com/dh7789dev/xpeditis/mapper/CompanyMapper.java b/infrastructure/src/main/java/com/dh7789dev/xpeditis/mapper/CompanyMapper.java index 2c26584..de07006 100644 --- a/infrastructure/src/main/java/com/dh7789dev/xpeditis/mapper/CompanyMapper.java +++ b/infrastructure/src/main/java/com/dh7789dev/xpeditis/mapper/CompanyMapper.java @@ -1,4 +1,25 @@ package com.dh7789dev.xpeditis.mapper; -public class CompanyMapper { + +import com.dh7789dev.xpeditis.dto.Company; +import com.dh7789dev.xpeditis.entity.CompanyEntity; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.factory.Mappers; + + + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface CompanyMapper { + + CompanyMapper INSTANCE = Mappers.getMapper(CompanyMapper.class); + + @Mapping(target = "createdDate", ignore = true) + @Mapping(target = "modifiedDate", ignore = true) + @Mapping(target = "createdBy", ignore = true) + @Mapping(target = "modifiedBy", ignore = true) + CompanyEntity companyToCompanyEntity(Company company); + + Company companyEntityToCompany(CompanyEntity companyEntity); } diff --git a/infrastructure/src/main/java/com/dh7789dev/xpeditis/mapper/ExportFolderMapper.java b/infrastructure/src/main/java/com/dh7789dev/xpeditis/mapper/ExportFolderMapper.java index a364446..f03271c 100644 --- a/infrastructure/src/main/java/com/dh7789dev/xpeditis/mapper/ExportFolderMapper.java +++ b/infrastructure/src/main/java/com/dh7789dev/xpeditis/mapper/ExportFolderMapper.java @@ -1,4 +1,21 @@ package com.dh7789dev.xpeditis.mapper; +import com.dh7789dev.xpeditis.dto.ExportFolder; +import com.dh7789dev.xpeditis.entity.ExportFolderEntity; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.factory.Mappers; + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) public interface ExportFolderMapper { + ExportFolderMapper INSTANCE = Mappers.getMapper(ExportFolderMapper.class); + + @Mapping(target = "createdDate", ignore = true) + @Mapping(target = "modifiedDate", ignore = true) + @Mapping(target = "createdBy", ignore = true) + @Mapping(target = "modifiedBy", ignore = true) + ExportFolderEntity exportFolderToCompanyEntity(ExportFolder exportFolder); + + ExportFolder exportFolderEntityToExportFolder(ExportFolderEntity exportFolderEntity); } diff --git a/infrastructure/src/main/java/com/dh7789dev/xpeditis/mapper/LicenseMapper.java b/infrastructure/src/main/java/com/dh7789dev/xpeditis/mapper/LicenseMapper.java index e156212..06efe65 100644 --- a/infrastructure/src/main/java/com/dh7789dev/xpeditis/mapper/LicenseMapper.java +++ b/infrastructure/src/main/java/com/dh7789dev/xpeditis/mapper/LicenseMapper.java @@ -1,4 +1,22 @@ package com.dh7789dev.xpeditis.mapper; + +import com.dh7789dev.xpeditis.dto.License; +import com.dh7789dev.xpeditis.entity.LicenseEntity; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.factory.Mappers; + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) public interface LicenseMapper { + LicenseMapper INSTANCE = Mappers.getMapper(LicenseMapper.class); + + @Mapping(target = "createdDate", ignore = true) + @Mapping(target = "modifiedDate", ignore = true) + @Mapping(target = "createdBy", ignore = true) + @Mapping(target = "modifiedBy", ignore = true) + LicenseEntity licenseToLicenseEntity(License license); + + License licenseEntityToLicense(LicenseEntity licenseEntity); } diff --git a/infrastructure/src/main/java/com/dh7789dev/xpeditis/mapper/QuoteMapper.java b/infrastructure/src/main/java/com/dh7789dev/xpeditis/mapper/QuoteMapper.java index eaf01a1..d6d64b8 100644 --- a/infrastructure/src/main/java/com/dh7789dev/xpeditis/mapper/QuoteMapper.java +++ b/infrastructure/src/main/java/com/dh7789dev/xpeditis/mapper/QuoteMapper.java @@ -1,4 +1,21 @@ package com.dh7789dev.xpeditis.mapper; +import com.dh7789dev.xpeditis.dto.Quote; +import com.dh7789dev.xpeditis.entity.QuoteEntity; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.factory.Mappers; + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) public interface QuoteMapper { + QuoteMapper INSTANCE = Mappers.getMapper(QuoteMapper.class); + + @Mapping(target = "createdDate", ignore = true) + @Mapping(target = "modifiedDate", ignore = true) + @Mapping(target = "createdBy", ignore = true) + @Mapping(target = "modifiedBy", ignore = true) + QuoteEntity quoteToQuoteEntity(Quote quote); + + Quote quoteEntityToQuote(QuoteEntity quoteEntity); } diff --git a/infrastructure/src/main/java/com/dh7789dev/xpeditis/mapper/UserMapper.java b/infrastructure/src/main/java/com/dh7789dev/xpeditis/mapper/UserMapper.java index 55fd979..c32558c 100644 --- a/infrastructure/src/main/java/com/dh7789dev/xpeditis/mapper/UserMapper.java +++ b/infrastructure/src/main/java/com/dh7789dev/xpeditis/mapper/UserMapper.java @@ -1,4 +1,24 @@ package com.dh7789dev.xpeditis.mapper; -public class UserMapper { +import com.dh7789dev.xpeditis.dto.UserAccount; +import com.dh7789dev.xpeditis.entity.UserEntity; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingConstants; +import org.mapstruct.factory.Mappers; + + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface UserMapper { + + UserMapper INSTANCE = Mappers.getMapper(UserMapper.class); + + @Mapping(target = "createdDate", ignore = true) + @Mapping(target = "modifiedDate", ignore = true) + @Mapping(target = "createdBy", ignore = true) + @Mapping(target = "modifiedBy", ignore = true) + UserEntity userAccountToUserEntity(UserAccount user); + + UserAccount userEntityToUserAccount(UserEntity userEntity); } + diff --git a/infrastructure/src/main/java/com/dh7789dev/xpeditis/repository/AuthenticationJwtRepository.java b/infrastructure/src/main/java/com/dh7789dev/xpeditis/repository/AuthenticationJwtRepository.java index f936652..585eb23 100644 --- a/infrastructure/src/main/java/com/dh7789dev/xpeditis/repository/AuthenticationJwtRepository.java +++ b/infrastructure/src/main/java/com/dh7789dev/xpeditis/repository/AuthenticationJwtRepository.java @@ -64,7 +64,7 @@ public class AuthenticationJwtRepository implements AuthenticationRepository { } private void revokeAllUserTokens(UserEntity userEntity) { - var validUserTokens = tokenDao.findAllValidTokenByUserId(userEntity.getId()); + var validUserTokens = tokenDao.findAllValidTokenByUserId(String.valueOf(userEntity.getId())); if (validUserTokens.isEmpty()) return; validUserTokens.forEach(token -> { token.setExpired(true); diff --git a/infrastructure/src/test/java/com/dh7789dev/xpeditis/repository/ReservationJpaRepositoryTest.java b/infrastructure/src/test/java/com/dh7789dev/xpeditis/repository/ReservationJpaRepositoryTest.java index 3e56db1..b2bf20d 100644 --- a/infrastructure/src/test/java/com/dh7789dev/xpeditis/repository/ReservationJpaRepositoryTest.java +++ b/infrastructure/src/test/java/com/dh7789dev/xpeditis/repository/ReservationJpaRepositoryTest.java @@ -1,7 +1,5 @@ package com.dh7789dev.xpeditis.repository; -import com.dh7789dev.xpeditis.dao.ReservationDao; -import com.dh7789dev.xpeditis.entity.ReservationEntity; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks;