Skip to content

Commit 7c3c9ec

Browse files
2 parents 78a993c + cf01d29 commit 7c3c9ec

9 files changed

Lines changed: 32 additions & 45 deletions

File tree

application/src/main/java/br/com/ifsp/tickets/app/financial/order/create/CreateOrderUseCase.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public CreateOrderOutput execute(CreateOrderInput anIn) {
6666

6767
Order createdOrder = this.orderGateway.create(Order.newOrderTicket(
6868
authenticatedUser.orElse(null),
69-
List.of(),
69+
new ArrayList<>(),
7070
name,
7171
emailAddress,
7272
phoneNumber,
@@ -100,6 +100,7 @@ public CreateOrderOutput execute(CreateOrderInput anIn) {
100100
}
101101

102102
createdOrder.addItems(items);
103+
createdOrder = this.orderGateway.update(createdOrder);
103104
createdOrder.generatePaymentUrl(this.paymentURLGenerator);
104105
createdOrder = this.orderGateway.update(createdOrder);
105106

database/01_tabelas.sql

Lines changed: 7 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,6 @@ alter table companies
2929
add constraint companies_pkey
3030
primary key (id);
3131

32-
alter table companies
33-
add constraint companies_address_id_key
34-
unique (address_id);
35-
3632
alter table companies
3733
add constraint companies_cnpj_key
3834
unique (cnpj);
@@ -127,14 +123,6 @@ alter table event_configurations
127123
add constraint fk33jpq0j7g5hn9x03pi9y8qh5q
128124
foreign key (event_id) references events;
129125

130-
alter table events
131-
add constraint events_address_id_key
132-
unique (address_id);
133-
134-
alter table events
135-
add constraint events_event_thumbnail_id_key
136-
unique (event_thumbnail_id);
137-
138126
alter table events
139127
add constraint fkquc7xx27bo60lupj2rf7e0hn2
140128
foreign key (address_id) references addresses;
@@ -168,32 +156,28 @@ alter table messages
168156

169157
create table order_items
170158
(
171-
quantity integer not null,
172-
id bigint not null,
173-
order_id bigint not null,
174-
ticket_id uuid not null
159+
quantity integer not null,
160+
id bigserial not null,
161+
order_id bigint not null,
162+
ticket_id uuid not null
175163
);
176164

177165
alter table order_items
178166
add constraint order_items_pkey
179167
primary key (id);
180168

181-
alter table order_items
182-
add constraint order_items_ticket_id_key
183-
unique (ticket_id);
184-
185169
create table orders
186170
(
187171
birth_date date not null,
188172
status smallint not null,
189173
created_at timestamp(6) not null,
190-
id bigint not null,
174+
id bigserial not null,
191175
updated_at timestamp(6) not null,
192176
customer_id uuid not null,
193177
document varchar(255) not null,
194178
email varchar(255) not null,
195179
name varchar(255) not null,
196-
payment_url varchar(255) not null,
180+
payment_url varchar(255),
197181
phone_number varchar(255) not null
198182
);
199183

@@ -205,10 +189,6 @@ alter table order_items
205189
add constraint fkbioxgbv59vetrxe0ejfubep1w
206190
foreign key (order_id) references orders;
207191

208-
alter table orders
209-
add constraint orders_customer_id_key
210-
unique (customer_id);
211-
212192
alter table orders
213193
add constraint orders_status_check
214194
check ((status >= 0) AND (status <= 5));
@@ -239,7 +219,7 @@ create table payments
239219
amount numeric(38, 2) not null,
240220
approval_date timestamp(6) not null,
241221
created_at timestamp(6) not null,
242-
id bigint not null,
222+
id bigserial not null,
243223
order_id bigint not null,
244224
updated_at timestamp(6) not null,
245225
currency varchar(255) not null,

domain/src/main/java/br/com/ifsp/tickets/domain/financial/order/Order.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public static Order with(OrderID orderID, User customer, String name, EmailAddre
4949
}
5050

5151
public static Order newOrderTicket(User customer, List<OrderItem> items, String name, EmailAddress email, PhoneNumber phoneNumber, Document document, LocalDate birthDate) {
52-
return new Order(new OrderID(null), customer, name, email, phoneNumber, document, birthDate, items, null, OrderStatus.PENDING, LocalDateTime.now(), LocalDateTime.now());
52+
return new Order(new OrderID(null), customer, name, email, phoneNumber, document, birthDate, items, null, OrderStatus.RESERVED, LocalDateTime.now(), LocalDateTime.now());
5353
}
5454

5555
public void generatePaymentUrl(IPaymentURLGenerator paymentURLGenerator) {

infrastructure/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ dependencies {
4242
implementation group: 'org.jasypt', name: 'jasypt', version: '1.9.2'
4343

4444
// mercadopago sdk
45-
implementation group: 'com.mercadopago', name: 'sdk-java', version: '2.2.0'
45+
implementation group: 'com.mercadopago', name: 'sdk-java', version: '2.4.0'
4646

4747
// spring boot
4848
implementation 'org.springframework.boot:spring-boot-starter-actuator'

infrastructure/src/main/java/br/com/ifsp/tickets/infra/api/OrderAPI.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public interface OrderAPI {
2626
}
2727

2828
)
29-
ResponseEntity<CreateOrderResponse> pay(CreateOrderRequest request);
29+
ResponseEntity<CreateOrderResponse> pay(@RequestBody CreateOrderRequest request);
3030

3131
@PostMapping(
3232
value = "/search",

infrastructure/src/main/java/br/com/ifsp/tickets/infra/contexts/administrative/user/AuthUtils.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import br.com.ifsp.tickets.app.administrative.auth.IAuthUtils;
44
import br.com.ifsp.tickets.domain.administrative.user.User;
5-
import br.com.ifsp.tickets.domain.shared.utils.UUIDUtils;
65
import br.com.ifsp.tickets.domain.shared.validation.Error;
76
import br.com.ifsp.tickets.domain.shared.validation.IValidationHandler;
87
import com.auth0.jwt.JWT;
@@ -53,7 +52,7 @@ public boolean isTokenValid(String token, User userDetails) {
5352
}
5453

5554
public UUID getUuidFromToken(String token) {
56-
return UUIDUtils.getFromString(this.decode(token).getSubject());
55+
return UUID.fromString(this.decode(token).getSubject());
5756
}
5857

5958
@Override
@@ -69,16 +68,17 @@ public void validatePassword(String aPassword, IValidationHandler validationHand
6968
}
7069

7170
private boolean isTokenExpired(String token) {
72-
return this.extractExpiration(token) != null
73-
&& this.extractExpiration(token).before(Date.from(Instant.now()));
71+
final Date expiration = this.extractExpiration(token);
72+
return expiration != null && expiration.before(new Date());
7473
}
7574

7675
private Date extractExpiration(String token) {
7776
return decode(token).getExpiresAt();
7877
}
7978

8079
private LocalDate extractIssuedAt(String token) {
81-
return LocalDate.from(decode(token).getIssuedAt().toInstant());
80+
final Instant issuedAt = decode(token).getIssuedAt().toInstant();
81+
return issuedAt.atZone(java.time.ZoneId.systemDefault()).toLocalDate();
8282
}
8383

8484
private DecodedJWT decode(String token) {

infrastructure/src/main/java/br/com/ifsp/tickets/infra/contexts/financial/order/PaymentURLGenerator.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,16 @@
1313
import com.mercadopago.client.common.IdentificationRequest;
1414
import com.mercadopago.client.common.PhoneRequest;
1515
import com.mercadopago.client.preference.*;
16+
import com.mercadopago.exceptions.MPApiException;
17+
import com.mercadopago.net.MPResponse;
1618
import com.mercadopago.resources.preference.Preference;
1719
import lombok.RequiredArgsConstructor;
1820
import lombok.extern.slf4j.Slf4j;
1921
import org.springframework.beans.factory.annotation.Autowired;
2022
import org.springframework.stereotype.Component;
2123

22-
import java.time.LocalDateTime;
2324
import java.time.OffsetDateTime;
25+
import java.time.ZoneOffset;
2426
import java.util.ArrayList;
2527
import java.util.Comparator;
2628
import java.util.List;
@@ -45,8 +47,7 @@ public String generateURL(Order order) {
4547
.min(Comparator.comparing(Event::getInitDate))
4648
.orElseThrow(() -> new ValidationException("No event found for order", Notification.create("No event found for order")));
4749

48-
final LocalDateTime expirationTime = event.getConfiguration(EventConfigKey.END_SELLING_DATE).getLocalDateTime();
49-
50+
final OffsetDateTime expirationTime = event.getConfiguration(EventConfigKey.END_SELLING_DATE).getLocalDateTime().atOffset(ZoneOffset.of("-03:00"));
5051
final PreferenceClient client = new PreferenceClient();
5152

5253
final List<PreferenceItemRequest> items = order.getItems().stream().map(orderItem -> PreferenceItemRequest.builder()
@@ -61,11 +62,10 @@ public String generateURL(Order order) {
6162
final List<PreferencePaymentTypeRequest> excludedPaymentTypes = new ArrayList<>();
6263
excludedPaymentTypes.add(PreferencePaymentTypeRequest.builder().id("ticket").build());
6364
excludedPaymentTypes.add(PreferencePaymentTypeRequest.builder().id("credit_card").build());
64-
excludedPaymentTypes.add(PreferencePaymentTypeRequest.builder().id("debit_card").build());
6565

6666
final PreferenceRequest preferenceRequest = PreferenceRequest.builder()
6767
.expires(true)
68-
.dateOfExpiration(OffsetDateTime.from(expirationTime))
68+
.dateOfExpiration(expirationTime)
6969
.items(items)
7070
.payer(
7171
PreferencePayerRequest.builder()
@@ -78,7 +78,6 @@ public String generateURL(Order order) {
7878
.externalReference(orderId.getValue().toString())
7979
.paymentMethods(
8080
PreferencePaymentMethodsRequest.builder()
81-
.defaultPaymentMethodId("pix")
8281
.excludedPaymentTypes(excludedPaymentTypes)
8382
.installments(1)
8483
.defaultInstallments(1)
@@ -90,6 +89,10 @@ public String generateURL(Order order) {
9089
preference = client.create(preferenceRequest);
9190
} catch (Exception e) {
9291
log.error("Error creating preference", e);
92+
if (e instanceof MPApiException mpApiException) {
93+
final MPResponse response = mpApiException.getApiResponse();
94+
log.error("MPAPI - Code {}: {}", response.getStatusCode(), response.getContent());
95+
}
9396
throw new ValidationException("Error creating preference", Notification.create(e.getMessage()));
9497
}
9598

infrastructure/src/main/java/br/com/ifsp/tickets/infra/contexts/financial/order/persistence/OrderJpaEntity.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import java.io.Serializable;
1616
import java.time.LocalDate;
1717
import java.time.LocalDateTime;
18+
import java.util.ArrayList;
1819
import java.util.List;
1920

2021
@Entity
@@ -24,6 +25,7 @@
2425
public class OrderJpaEntity implements Serializable {
2526

2627
@Id
28+
@GeneratedValue(strategy = GenerationType.IDENTITY)
2729
@Column(name = "id", nullable = false, unique = true, updatable = false)
2830
private Long id;
2931
@OneToOne(cascade = {CascadeType.DETACH, CascadeType.REFRESH})
@@ -47,7 +49,7 @@ public class OrderJpaEntity implements Serializable {
4749
private LocalDateTime createdAt;
4850
@Column(name = "updated_at", nullable = false)
4951
private LocalDateTime updatedAt;
50-
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
52+
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
5153
@JoinColumn(name = "order_id")
5254
private List<OrderItemJpaEntity> items;
5355

@@ -79,7 +81,7 @@ public static OrderJpaEntity from(Order order) {
7981
order.getStatus(),
8082
order.getCreatedAt(),
8183
order.getUpdatedAt(),
82-
order.getItems().stream().map(OrderItemJpaEntity::from).toList()
84+
new ArrayList<>(order.getItems().stream().map(OrderItemJpaEntity::from).toList())
8385
);
8486
}
8587

@@ -92,7 +94,7 @@ public Order toAggregate() {
9294
new PhoneNumber(this.getPhoneNumber()),
9395
new RG(this.getDocument()),
9496
this.getBirthDate(),
95-
this.getItems().stream().map(OrderItemJpaEntity::toAggregate).toList(),
97+
new ArrayList<>(this.getItems().stream().map(OrderItemJpaEntity::toAggregate).toList()),
9698
this.getPaymentUrl(),
9799
this.getStatus(),
98100
this.getCreatedAt(),

infrastructure/src/main/java/br/com/ifsp/tickets/infra/contexts/financial/order/persistence/item/OrderItemJpaEntity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
public class OrderItemJpaEntity implements Serializable {
1818

1919
@Id
20+
@GeneratedValue(strategy = GenerationType.IDENTITY)
2021
@Column(name = "id", nullable = false, unique = true, updatable = false)
2122
private Long id;
2223
@Column(name = "order_id", nullable = false)

0 commit comments

Comments
 (0)