From 457a6a665dce0e3b58759d18dc23bf8a7e60558c Mon Sep 17 00:00:00 2001 From: Kwandes Date: Tue, 25 Oct 2022 17:46:32 +0200 Subject: [PATCH 01/20] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Add=20paymentRemin?= =?UTF-8?q?derSent=20field=20to=20order?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/dk/treecreate/api/order/Order.java | 30 ++++++++++++++++++- apps/api/src/main/resources/data.sql | 6 ++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/apps/api/src/main/java/dk/treecreate/api/order/Order.java b/apps/api/src/main/java/dk/treecreate/api/order/Order.java index 5a9ea5cb5..e292425d2 100644 --- a/apps/api/src/main/java/dk/treecreate/api/order/Order.java +++ b/apps/api/src/main/java/dk/treecreate/api/order/Order.java @@ -12,7 +12,17 @@ import java.util.List; import java.util.Objects; import java.util.UUID; -import javax.persistence.*; +import javax.persistence.Basic; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.OneToOne; +import javax.persistence.Table; import javax.validation.constraints.Min; import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.GenericGenerator; @@ -99,6 +109,16 @@ public class Order { @ApiModelProperty(notes = "Transaction items of the given order") private List transactionItems; + @Column( + name = "payment_reminder_sent", + columnDefinition = "boolean default false", + nullable = false) + @ApiModelProperty( + notes = "Has a payment reminder for this order been sent?", + example = "false", + required = false) + private boolean paymentReminderSent = false; + @ApiModelProperty( name = "Date the entity was created at", example = "2021-08-31T19:40:10.000+00:00") @@ -231,6 +251,14 @@ public void setUpdatedAt(Date updatedAt) { this.updatedAt = updatedAt; } + public boolean getPaymentReminderSent() { + return paymentReminderSent; + } + + public void setPaymentReminderSent(boolean paymentReminderSent) { + this.paymentReminderSent = paymentReminderSent; + } + @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/apps/api/src/main/resources/data.sql b/apps/api/src/main/resources/data.sql index 67ced4190..9cc9f8d49 100644 --- a/apps/api/src/main/resources/data.sql +++ b/apps/api/src/main/resources/data.sql @@ -546,6 +546,7 @@ FROM (( , 'ac86995f-60ae-4520-a434-c8abc98980b9' AS user_id , 'c0a80121-7e81-1c3e-817e-82cc11180004' AS billing_info_contact_info_id , 'c0a80121-7e81-1c3e-817e-82cc11180005' AS contact_info_contact_info_id + , false AS paymentReminderSent , null AS discount_discount_id) UNION ALL ( @@ -562,6 +563,7 @@ FROM (( , 'ac86995f-60ae-4520-a434-c8abc98980b9' AS user_id , 'c0a80121-7e81-1c3e-817e-82cd4a340009' AS billing_info_contact_info_id , 'c0a80121-7e81-1c3e-817e-82cd4a34000a' AS contact_info_contact_info_id + , false AS paymentReminderSent , null AS discount_discount_id) UNION ALL ( @@ -578,6 +580,7 @@ FROM (( , 'ac86995f-60ae-4520-a434-c8abc98980b9' AS user_id , 'c0a80121-7e81-1c3e-817e-82ce4595000e' AS billing_info_contact_info_id , 'c0a80121-7e81-1c3e-817e-82ce4595000f' AS contact_info_contact_info_id + , false AS paymentReminderSent , '2f61a7a1-499d-45bb-8229-53f70a4475c4' AS discount_discount_id) UNION ALL ( @@ -594,6 +597,7 @@ FROM (( , 'ac86995f-60ae-4520-a434-c8abc98980b9' AS user_id , 'c0a80121-7e81-1c3e-817e-82cff3ca0013' AS billing_info_contact_info_id , 'c0a80121-7e81-1c3e-817e-82cff3ca0014' AS contact_info_contact_info_id + , false AS paymentReminderSent , '35c90960-1da4-4ff0-93df-622fb5718e55' AS discount_discount_id) UNION ALL ( @@ -610,6 +614,7 @@ FROM (( , 'ac86995f-60ae-4520-a434-c8abc98980b9' AS user_id , 'c0a80121-7e81-1c3e-817e-82d0c0d20018' AS billing_info_contact_info_id , 'c0a80121-7e81-1c3e-817e-82d0c0d20019' AS contact_info_contact_info_id + , false AS paymentReminderSent , null AS discount_discount_id) UNION ALL ( @@ -626,6 +631,7 @@ FROM (( , 'ac86995f-60ae-4520-a434-c8abc98980b9' AS user_id , 'c0a80121-7e81-1c3e-817e-82e1aefc001d' AS billing_info_contact_info_id , 'c0a80121-7e81-1c3e-817e-82e1aefc001e' AS contact_info_contact_info_id + , false AS paymentReminderSent , null AS discount_discount_id) ) orders WHERE NOT EXISTS( From c422bb2ddbb8a8f8655294e24498a1b7df5f28a8 Mon Sep 17 00:00:00 2001 From: Kwandes Date: Tue, 25 Oct 2022 17:49:41 +0200 Subject: [PATCH 02/20] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Add=20payment=20re?= =?UTF-8?q?minder=20email?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dk/treecreate/api/mail/MailService.java | 14 ++ .../dk/treecreate/api/mail/MailTemplate.java | 3 +- .../templates/emails/payment-reminder.html | 153 ++++++++++++++++++ 3 files changed, 169 insertions(+), 1 deletion(-) create mode 100644 apps/api/src/main/resources/templates/emails/payment-reminder.html diff --git a/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java b/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java index 6ff50ee5d..983ad99df 100644 --- a/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java +++ b/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java @@ -5,6 +5,7 @@ import dk.treecreate.api.order.OrderService; import dk.treecreate.api.order.dto.CreateCustomOrderRequest; import dk.treecreate.api.utils.LinkService; +import dk.treecreate.api.utils.QuickpayService; import io.sentry.Sentry; import java.io.File; import java.io.FileInputStream; @@ -46,6 +47,7 @@ public class MailService { @Autowired LinkService linkService; @Autowired OrderService orderService; @Autowired CustomPropertiesConfig customPropertiesConfig; + @Autowired QuickpayService quickpayService; public MailService( TemplateEngine templateEngine, @@ -188,6 +190,18 @@ public void sendCustomOrderRequestEmail(CreateCustomOrderRequest orderInfo) orderInfo.getImages()); } + public void sendOrderPaymentReminderEmail(Order order, String recipient) throws Exception { + String subject = "Your Treecreate order is waiting for your payment!"; + Context context = new Context(Locale.ENGLISH); + context.setVariable("payment-link", quickpayService.getPaymentLink(order.getPaymentId())); + sendMail( + order.getContactInfo().getEmail(), + MailDomain.INFO, + subject, + context, + MailTemplate.PAYMENT_REMINDER); + } + // No BCC email and no attachments private void sendMail( String to, MailDomain from, String subject, Context context, MailTemplate template) diff --git a/apps/api/src/main/java/dk/treecreate/api/mail/MailTemplate.java b/apps/api/src/main/java/dk/treecreate/api/mail/MailTemplate.java index 2153afe4a..a99ce947f 100644 --- a/apps/api/src/main/java/dk/treecreate/api/mail/MailTemplate.java +++ b/apps/api/src/main/java/dk/treecreate/api/mail/MailTemplate.java @@ -7,7 +7,8 @@ public enum MailTemplate { RESET_PASSWORD("reset-password"), ORDER_CONFIRMATION("order-confirmation"), CUSTOM_ORDER_REQUEST("custom-order-request"), - NEWSLETTER_DISCOUNT("newsletter-discount"); + NEWSLETTER_DISCOUNT("newsletter-discount"), + PAYMENT_REMINDER("payment-reminder"); public final String label; diff --git a/apps/api/src/main/resources/templates/emails/payment-reminder.html b/apps/api/src/main/resources/templates/emails/payment-reminder.html new file mode 100644 index 000000000..51273877f --- /dev/null +++ b/apps/api/src/main/resources/templates/emails/payment-reminder.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + +
+

Here's your payment link:

+
+ + From 77b9ca9d4e9af773cd39f13fadef5e35fa4db637 Mon Sep 17 00:00:00 2001 From: Dominic Smith Date: Wed, 26 Oct 2022 16:09:11 +0200 Subject: [PATCH 03/20] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Add=20commented=20?= =?UTF-8?q?out=20scheduled=20method?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/dk/treecreate/api/order/OrderService.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java index b57945dc4..cf3095b74 100644 --- a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java +++ b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java @@ -287,6 +287,19 @@ public void sendOrderConfirmationEmail(Order order) { } } + + // @Scheduled(fixedRate=1, timeUnit = TimeUnit.HOURS) + // public void sendScheduledPaymentLink() { + // IOrder[] orders[] = this.orderRepository.findAll(); + // try { + // forEach(Order order: orders){ + // if (order.createdAt) { + + // } + // } + // } + // } + public Order setupOrderFromCreateRequest(CreateOrderRequest createOrderRequest) { Order order = new Order(); order.setSubtotal(createOrderRequest.getSubtotal()); From d155bebb1a130b190a4d65be7c6238f405f7dc6c Mon Sep 17 00:00:00 2001 From: Dominic Smith Date: Wed, 26 Oct 2022 22:06:08 +0200 Subject: [PATCH 04/20] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Add=20get=20unpaye?= =?UTF-8?q?d=20orders=20list=20method?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dk/treecreate/api/order/OrderController.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/apps/api/src/main/java/dk/treecreate/api/order/OrderController.java b/apps/api/src/main/java/dk/treecreate/api/order/OrderController.java index 8083ad0b1..2d50b278a 100644 --- a/apps/api/src/main/java/dk/treecreate/api/order/OrderController.java +++ b/apps/api/src/main/java/dk/treecreate/api/order/OrderController.java @@ -94,6 +94,19 @@ public List getAll( return orderRepository.findByUserId(currentUser.getUserId()); } + @GetMapping() + @Operation(summary = "Get all orders where status is initial or rejected") + @PreAuthorize("hasRole('DEVELOPER') or hasRole('ADMIN')") + public List getAllUnpaidOrders() { + List allOrders = orderRepository.findAll(); + List initialOrders = new List; + for(Order order : allOrders){ + if (order.status == OrderStatus.INITIAL || order.status == OrderStatus.REJECTED)}{ + initialOrders.add(order); + } + } + } + @GetMapping("me") @Operation(summary = "Get all orders of current user") @ApiResponses( From e915942dd7ee30b70a59f089bd0dc7b5d04bf92b Mon Sep 17 00:00:00 2001 From: Dominic Smith Date: Thu, 27 Oct 2022 10:05:51 +0200 Subject: [PATCH 05/20] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Add=20Spring=20Imp?= =?UTF-8?q?ort?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dk/treecreate/api/order/OrderService.java | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java index cf3095b74..68b55cae5 100644 --- a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java +++ b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java @@ -33,9 +33,11 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.server.ResponseStatusException; +import org.springframework.scheduling.annotation.EnableScheduling; @Service @Transactional +@EnableScheduling public class OrderService { private static final Logger LOGGER = LoggerFactory.getLogger(OrderService.class); @@ -288,17 +290,13 @@ public void sendOrderConfirmationEmail(Order order) { } - // @Scheduled(fixedRate=1, timeUnit = TimeUnit.HOURS) - // public void sendScheduledPaymentLink() { - // IOrder[] orders[] = this.orderRepository.findAll(); - // try { - // forEach(Order order: orders){ - // if (order.createdAt) { - - // } - // } - // } - // } + @Scheduled(fixedRate = 1, timeUnit = TimeUnit.MINUTES) + public void sendScheduledPaymentLink() { + List orderList[] = this.OrderController.getAllUnpaidOrders(); + try { + + } + } public Order setupOrderFromCreateRequest(CreateOrderRequest createOrderRequest) { Order order = new Order(); From a86bfb6ddaf0352fdbc4e4b51761364cd2adf938 Mon Sep 17 00:00:00 2001 From: Dominic Smith Date: Thu, 27 Oct 2022 12:28:41 +0200 Subject: [PATCH 06/20] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Change=20payment?= =?UTF-8?q?=20reminder=20email=20slightly?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/api/src/main/java/dk/treecreate/api/mail/MailService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java b/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java index 983ad99df..82cb95cd5 100644 --- a/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java +++ b/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java @@ -190,7 +190,7 @@ public void sendCustomOrderRequestEmail(CreateCustomOrderRequest orderInfo) orderInfo.getImages()); } - public void sendOrderPaymentReminderEmail(Order order, String recipient) throws Exception { + public void sendOrderPaymentReminderEmail(Order order) throws Exception { String subject = "Your Treecreate order is waiting for your payment!"; Context context = new Context(Locale.ENGLISH); context.setVariable("payment-link", quickpayService.getPaymentLink(order.getPaymentId())); From fb69653730b104600decc30cb8237a14b5fa595b Mon Sep 17 00:00:00 2001 From: Dominic Smith Date: Thu, 27 Oct 2022 12:29:13 +0200 Subject: [PATCH 07/20] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Add=20logic=20to?= =?UTF-8?q?=20scheduled=20method?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/dk/treecreate/api/order/OrderController.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/api/src/main/java/dk/treecreate/api/order/OrderController.java b/apps/api/src/main/java/dk/treecreate/api/order/OrderController.java index 2d50b278a..ce665d507 100644 --- a/apps/api/src/main/java/dk/treecreate/api/order/OrderController.java +++ b/apps/api/src/main/java/dk/treecreate/api/order/OrderController.java @@ -16,6 +16,7 @@ import dk.treecreate.api.user.User; import dk.treecreate.api.user.UserRepository; import dk.treecreate.api.utils.LocaleService; +import dk.treecreate.api.utils.OrderStatus; import dk.treecreate.api.utils.QuickpayService; import dk.treecreate.api.utils.model.quickpay.dto.CreatePaymentLinkResponse; import dk.treecreate.api.utils.model.quickpay.dto.GetPaymentLinkResponse; @@ -27,6 +28,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import java.net.URISyntaxException; +import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.UUID; @@ -99,12 +101,13 @@ public List getAll( @PreAuthorize("hasRole('DEVELOPER') or hasRole('ADMIN')") public List getAllUnpaidOrders() { List allOrders = orderRepository.findAll(); - List initialOrders = new List; + List initialOrders = new ArrayList(); for(Order order : allOrders){ - if (order.status == OrderStatus.INITIAL || order.status == OrderStatus.REJECTED)}{ + if ((order.getStatus() == OrderStatus.INITIAL || order.getStatus() == OrderStatus.REJECTED) && order.getPaymentReminderSent() == false){ initialOrders.add(order); } } + return initialOrders; } @GetMapping("me") From 666583c2dec03fd4256d66f63574a6a54c8df089 Mon Sep 17 00:00:00 2001 From: Dominic Smith Date: Thu, 27 Oct 2022 12:29:40 +0200 Subject: [PATCH 08/20] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Add=20logic=20to?= =?UTF-8?q?=20OrderService=20method?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/dk/treecreate/api/order/OrderService.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java index 68b55cae5..33aeb0921 100644 --- a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java +++ b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java @@ -19,6 +19,7 @@ import dk.treecreate.api.user.User; import dk.treecreate.api.user.UserRepository; import dk.treecreate.api.utils.OrderStatus; +import dk.treecreate.api.order.OrderController; import dk.treecreate.api.utils.model.quickpay.ShippingMethod; import java.math.BigDecimal; import java.math.RoundingMode; @@ -34,6 +35,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.server.ResponseStatusException; import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; @Service @Transactional @@ -47,6 +49,7 @@ public class OrderService { @Autowired UserRepository userRepository; @Autowired AuthUserService authUserService; @Autowired OrderRepository orderRepository; + @Autowired OrderController orderController; @Autowired MailService mailService; @@ -290,11 +293,13 @@ public void sendOrderConfirmationEmail(Order order) { } - @Scheduled(fixedRate = 1, timeUnit = TimeUnit.MINUTES) + @Scheduled(cron = "* * 1 * *") public void sendScheduledPaymentLink() { - List orderList[] = this.OrderController.getAllUnpaidOrders(); + List orderList = this.orderController.getAllUnpaidOrders(); try { - + for(Order order: orderList) { + this.mailService.sendOrderPaymentReminderEmail(order); + } } } From 4b84fa0c5870d3872223c0f3ab042b900e6a1257 Mon Sep 17 00:00:00 2001 From: Dominic Smith Date: Thu, 27 Oct 2022 12:29:13 +0200 Subject: [PATCH 09/20] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Add=20logic=20to?= =?UTF-8?q?=20fetch=20order=20method?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/dk/treecreate/api/order/OrderController.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/api/src/main/java/dk/treecreate/api/order/OrderController.java b/apps/api/src/main/java/dk/treecreate/api/order/OrderController.java index 2d50b278a..ce665d507 100644 --- a/apps/api/src/main/java/dk/treecreate/api/order/OrderController.java +++ b/apps/api/src/main/java/dk/treecreate/api/order/OrderController.java @@ -16,6 +16,7 @@ import dk.treecreate.api.user.User; import dk.treecreate.api.user.UserRepository; import dk.treecreate.api.utils.LocaleService; +import dk.treecreate.api.utils.OrderStatus; import dk.treecreate.api.utils.QuickpayService; import dk.treecreate.api.utils.model.quickpay.dto.CreatePaymentLinkResponse; import dk.treecreate.api.utils.model.quickpay.dto.GetPaymentLinkResponse; @@ -27,6 +28,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import java.net.URISyntaxException; +import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.UUID; @@ -99,12 +101,13 @@ public List getAll( @PreAuthorize("hasRole('DEVELOPER') or hasRole('ADMIN')") public List getAllUnpaidOrders() { List allOrders = orderRepository.findAll(); - List initialOrders = new List; + List initialOrders = new ArrayList(); for(Order order : allOrders){ - if (order.status == OrderStatus.INITIAL || order.status == OrderStatus.REJECTED)}{ + if ((order.getStatus() == OrderStatus.INITIAL || order.getStatus() == OrderStatus.REJECTED) && order.getPaymentReminderSent() == false){ initialOrders.add(order); } } + return initialOrders; } @GetMapping("me") From 2dc8ee55494abaa37ca428cfc16345d955903f80 Mon Sep 17 00:00:00 2001 From: Dominic Smith Date: Thu, 27 Oct 2022 12:29:40 +0200 Subject: [PATCH 10/20] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Add=20logic=20to?= =?UTF-8?q?=20OrderService=20method?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/dk/treecreate/api/order/OrderService.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java index 68b55cae5..33aeb0921 100644 --- a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java +++ b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java @@ -19,6 +19,7 @@ import dk.treecreate.api.user.User; import dk.treecreate.api.user.UserRepository; import dk.treecreate.api.utils.OrderStatus; +import dk.treecreate.api.order.OrderController; import dk.treecreate.api.utils.model.quickpay.ShippingMethod; import java.math.BigDecimal; import java.math.RoundingMode; @@ -34,6 +35,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.server.ResponseStatusException; import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; @Service @Transactional @@ -47,6 +49,7 @@ public class OrderService { @Autowired UserRepository userRepository; @Autowired AuthUserService authUserService; @Autowired OrderRepository orderRepository; + @Autowired OrderController orderController; @Autowired MailService mailService; @@ -290,11 +293,13 @@ public void sendOrderConfirmationEmail(Order order) { } - @Scheduled(fixedRate = 1, timeUnit = TimeUnit.MINUTES) + @Scheduled(cron = "* * 1 * *") public void sendScheduledPaymentLink() { - List orderList[] = this.OrderController.getAllUnpaidOrders(); + List orderList = this.orderController.getAllUnpaidOrders(); try { - + for(Order order: orderList) { + this.mailService.sendOrderPaymentReminderEmail(order); + } } } From 5e37582a2b89e303be65d4a286c719cff73736cb Mon Sep 17 00:00:00 2001 From: Dominic Smith Date: Thu, 27 Oct 2022 21:04:09 +0200 Subject: [PATCH 11/20] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Move=20fetch=20ord?= =?UTF-8?q?er=20logic=20to=20OrderService?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dk/treecreate/api/mail/MailService.java | 14 +++++++------ .../treecreate/api/order/OrderController.java | 14 ------------- .../dk/treecreate/api/order/OrderService.java | 21 +++++++++++++++---- 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java b/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java index 82cb95cd5..abde258d2 100644 --- a/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java +++ b/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java @@ -194,12 +194,14 @@ public void sendOrderPaymentReminderEmail(Order order) throws Exception { String subject = "Your Treecreate order is waiting for your payment!"; Context context = new Context(Locale.ENGLISH); context.setVariable("payment-link", quickpayService.getPaymentLink(order.getPaymentId())); - sendMail( - order.getContactInfo().getEmail(), - MailDomain.INFO, - subject, - context, - MailTemplate.PAYMENT_REMINDER); + if (order.getPaymentReminderSent() == false){ + sendMail( + order.getContactInfo().getEmail(), + MailDomain.INFO, + subject, + context, + MailTemplate.PAYMENT_REMINDER); + } } // No BCC email and no attachments diff --git a/apps/api/src/main/java/dk/treecreate/api/order/OrderController.java b/apps/api/src/main/java/dk/treecreate/api/order/OrderController.java index ce665d507..dc21f4e49 100644 --- a/apps/api/src/main/java/dk/treecreate/api/order/OrderController.java +++ b/apps/api/src/main/java/dk/treecreate/api/order/OrderController.java @@ -96,20 +96,6 @@ public List getAll( return orderRepository.findByUserId(currentUser.getUserId()); } - @GetMapping() - @Operation(summary = "Get all orders where status is initial or rejected") - @PreAuthorize("hasRole('DEVELOPER') or hasRole('ADMIN')") - public List getAllUnpaidOrders() { - List allOrders = orderRepository.findAll(); - List initialOrders = new ArrayList(); - for(Order order : allOrders){ - if ((order.getStatus() == OrderStatus.INITIAL || order.getStatus() == OrderStatus.REJECTED) && order.getPaymentReminderSent() == false){ - initialOrders.add(order); - } - } - return initialOrders; - } - @GetMapping("me") @Operation(summary = "Get all orders of current user") @ApiResponses( diff --git a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java index 33aeb0921..981530f4e 100644 --- a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java +++ b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java @@ -19,8 +19,8 @@ import dk.treecreate.api.user.User; import dk.treecreate.api.user.UserRepository; import dk.treecreate.api.utils.OrderStatus; -import dk.treecreate.api.order.OrderController; import dk.treecreate.api.utils.model.quickpay.ShippingMethod; + import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; @@ -49,7 +49,6 @@ public class OrderService { @Autowired UserRepository userRepository; @Autowired AuthUserService authUserService; @Autowired OrderRepository orderRepository; - @Autowired OrderController orderController; @Autowired MailService mailService; @@ -292,14 +291,28 @@ public void sendOrderConfirmationEmail(Order order) { } } + public List getAllUnpaidOrders() { + List allOrders = orderRepository.findAll(); + List initialOrders = new ArrayList(); + for(Order order : allOrders){ + if ((order.getStatus() == OrderStatus.INITIAL || order.getStatus() == OrderStatus.REJECTED) && order.getPaymentReminderSent() == false){ + initialOrders.add(order); + } + } + return initialOrders; + } - @Scheduled(cron = "* * 1 * *") + @Scheduled(cron = "1 * * * * ?") public void sendScheduledPaymentLink() { - List orderList = this.orderController.getAllUnpaidOrders(); + List orderList = this.getAllUnpaidOrders(); try { for(Order order: orderList) { + if (order.getContactInfo().getEmail() == Validator) this.mailService.sendOrderPaymentReminderEmail(order); + order.setPaymentReminderSent(true); } + } catch (Exception e) { + LOGGER.error("Failed to process scheduled payment link", e); } } From c1b0ac4601a1c9462c9832fb328784a715801046 Mon Sep 17 00:00:00 2001 From: Dominic Smith Date: Thu, 27 Oct 2022 21:07:58 +0200 Subject: [PATCH 12/20] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Remove=20unneeded?= =?UTF-8?q?=20line?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/api/src/main/java/dk/treecreate/api/order/OrderService.java | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java index 83a0026dd..b167f7fbb 100644 --- a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java +++ b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java @@ -309,7 +309,6 @@ public void sendScheduledPaymentLink() { List orderList = this.getAllUnpaidOrders(); try { for(Order order: orderList) { - if (order.getContactInfo().getEmail() == Validator) this.mailService.sendOrderPaymentReminderEmail(order); order.setPaymentReminderSent(true); } From daba1c1938cb2ce2db14c5583a8062957f653492 Mon Sep 17 00:00:00 2001 From: Dominic Smith Date: Thu, 27 Oct 2022 21:08:36 +0200 Subject: [PATCH 13/20] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Change=20frequency?= =?UTF-8?q?=20of=20cron=20expression?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/src/main/java/dk/treecreate/api/order/OrderService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java index b167f7fbb..73dce1d7b 100644 --- a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java +++ b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java @@ -304,7 +304,7 @@ public List getAllUnpaidOrders() { return initialOrders; } - @Scheduled(cron = "1 * * * * ?") + @Scheduled(cron = "* 1 * * * ?") public void sendScheduledPaymentLink() { List orderList = this.getAllUnpaidOrders(); try { From 9a645a5c47c4197a9096fb8497c815eb73481ef8 Mon Sep 17 00:00:00 2001 From: Dominic Smith Date: Fri, 28 Oct 2022 13:42:53 +0200 Subject: [PATCH 14/20] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Add=20payment=20li?= =?UTF-8?q?nk=20to=20template?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/dk/treecreate/api/mail/MailService.java | 5 +++-- .../main/java/dk/treecreate/api/order/OrderService.java | 2 +- .../main/resources/templates/emails/payment-reminder.html | 7 ++++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java b/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java index abde258d2..e7b7655f5 100644 --- a/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java +++ b/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java @@ -192,8 +192,9 @@ public void sendCustomOrderRequestEmail(CreateCustomOrderRequest orderInfo) public void sendOrderPaymentReminderEmail(Order order) throws Exception { String subject = "Your Treecreate order is waiting for your payment!"; - Context context = new Context(Locale.ENGLISH); - context.setVariable("payment-link", quickpayService.getPaymentLink(order.getPaymentId())); + Context context = new Context(new Locale("da")); + context.setVariable("paymentLink", quickpayService.getPaymentLink(order.getPaymentId())); + System.out.println(quickpayService.getPaymentLink(order.getPaymentId())); if (order.getPaymentReminderSent() == false){ sendMail( order.getContactInfo().getEmail(), diff --git a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java index 73dce1d7b..b167f7fbb 100644 --- a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java +++ b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java @@ -304,7 +304,7 @@ public List getAllUnpaidOrders() { return initialOrders; } - @Scheduled(cron = "* 1 * * * ?") + @Scheduled(cron = "1 * * * * ?") public void sendScheduledPaymentLink() { List orderList = this.getAllUnpaidOrders(); try { diff --git a/apps/api/src/main/resources/templates/emails/payment-reminder.html b/apps/api/src/main/resources/templates/emails/payment-reminder.html index 51273877f..753582d86 100644 --- a/apps/api/src/main/resources/templates/emails/payment-reminder.html +++ b/apps/api/src/main/resources/templates/emails/payment-reminder.html @@ -147,7 +147,12 @@
-

Here's your payment link:

+

Here's your payment link: Complete Payment

From a42677c3a8b667c35c2ba517b589f39136445d81 Mon Sep 17 00:00:00 2001 From: Dominic Smith Date: Sun, 30 Oct 2022 09:57:59 +0100 Subject: [PATCH 15/20] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Add=20check=20for?= =?UTF-8?q?=20time=20to=20scheduled=20method?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/dk/treecreate/api/order/OrderService.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java index b167f7fbb..99bc909f3 100644 --- a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java +++ b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java @@ -28,6 +28,8 @@ import java.util.Date; import java.util.List; import java.util.UUID; +import java.util.concurrent.TimeUnit; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -304,13 +306,16 @@ public List getAllUnpaidOrders() { return initialOrders; } - @Scheduled(cron = "1 * * * * ?") + @Scheduled(cron = "* 1 * * * ?") public void sendScheduledPaymentLink() { List orderList = this.getAllUnpaidOrders(); + Date now = new Date(System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(5)); try { for(Order order: orderList) { - this.mailService.sendOrderPaymentReminderEmail(order); - order.setPaymentReminderSent(true); + if(order.getCreatedAt().after(now)){ + this.mailService.sendOrderPaymentReminderEmail(order); + order.setPaymentReminderSent(true); + } } } catch (Exception e) { LOGGER.error("Failed to process scheduled payment link", e); From 3a82171263de0ae966402baca0ae1f980347f6ef Mon Sep 17 00:00:00 2001 From: Dominic Smith Date: Sun, 30 Oct 2022 13:46:12 +0100 Subject: [PATCH 16/20] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Fix=20payment=20li?= =?UTF-8?q?nk=20in=20email=20template=20and=20add=20time=20check?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dk/treecreate/api/mail/MailService.java | 2 +- .../dk/treecreate/api/order/OrderService.java | 18 +++++++++++------- .../templates/emails/payment-reminder.html | 3 ++- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java b/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java index e7b7655f5..d22bcdcb6 100644 --- a/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java +++ b/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java @@ -193,7 +193,7 @@ public void sendCustomOrderRequestEmail(CreateCustomOrderRequest orderInfo) public void sendOrderPaymentReminderEmail(Order order) throws Exception { String subject = "Your Treecreate order is waiting for your payment!"; Context context = new Context(new Locale("da")); - context.setVariable("paymentLink", quickpayService.getPaymentLink(order.getPaymentId())); + context.setVariable("paymentLink", quickpayService.getPaymentLink(order.getPaymentId()).getUrl()); System.out.println(quickpayService.getPaymentLink(order.getPaymentId())); if (order.getPaymentReminderSent() == false){ sendMail( diff --git a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java index 99bc909f3..0c2c6057d 100644 --- a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java +++ b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java @@ -21,6 +21,7 @@ import dk.treecreate.api.utils.OrderStatus; import dk.treecreate.api.order.OrderController; import dk.treecreate.api.utils.model.quickpay.ShippingMethod; +import io.sentry.Sentry; import java.math.BigDecimal; import java.math.RoundingMode; @@ -306,20 +307,23 @@ public List getAllUnpaidOrders() { return initialOrders; } - @Scheduled(cron = "* 1 * * * ?") + @Scheduled(cron = "1 * * * * ?") public void sendScheduledPaymentLink() { List orderList = this.getAllUnpaidOrders(); Date now = new Date(System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(5)); - try { - for(Order order: orderList) { - if(order.getCreatedAt().after(now)){ + for(Order order: orderList) { + try { + if (now.after(order.getCreatedAt())){ this.mailService.sendOrderPaymentReminderEmail(order); order.setPaymentReminderSent(true); + orderRepository.save(order); + LOGGER.info("Payment reminder email has been sent to " + order.getOrderId()); } + } catch (Exception e) { + LOGGER.error("Failed to process scheduled payment link to " + order.getContactInfo().getEmail(), e); + Sentry.captureException(e); } - } catch (Exception e) { - LOGGER.error("Failed to process scheduled payment link", e); - } + } } public Order setupOrderFromCreateRequest(CreateOrderRequest createOrderRequest) { diff --git a/apps/api/src/main/resources/templates/emails/payment-reminder.html b/apps/api/src/main/resources/templates/emails/payment-reminder.html index 753582d86..afe82ccf4 100644 --- a/apps/api/src/main/resources/templates/emails/payment-reminder.html +++ b/apps/api/src/main/resources/templates/emails/payment-reminder.html @@ -152,7 +152,8 @@ text-decoration: underline; color: #000000; " - rel="noopener">Complete Payment

+ rel="noopener">Complete Payment +

From 7aa9b642903fa8f7cc0ab5ad6348a76e6e9f8602 Mon Sep 17 00:00:00 2001 From: Dominic Smith Date: Sun, 30 Oct 2022 13:50:56 +0100 Subject: [PATCH 17/20] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Change=20CRON=20to?= =?UTF-8?q?=201hr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/src/main/java/dk/treecreate/api/order/OrderService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java index 0c2c6057d..5a981b3ca 100644 --- a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java +++ b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java @@ -307,7 +307,7 @@ public List getAllUnpaidOrders() { return initialOrders; } - @Scheduled(cron = "1 * * * * ?") + @Scheduled(cron = "* 1 * * * ?") public void sendScheduledPaymentLink() { List orderList = this.getAllUnpaidOrders(); Date now = new Date(System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(5)); From c46d82316df302392742a359e0ef7d17706281f6 Mon Sep 17 00:00:00 2001 From: Dominic Smith Date: Sun, 30 Oct 2022 14:01:00 +0100 Subject: [PATCH 18/20] =?UTF-8?q?style:=20=F0=9F=92=84=20Formatting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dk/treecreate/api/mail/MailService.java | 7 ++-- .../treecreate/api/order/OrderController.java | 2 - .../dk/treecreate/api/order/OrderService.java | 37 +++++++++---------- 3 files changed, 22 insertions(+), 24 deletions(-) diff --git a/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java b/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java index d22bcdcb6..6d2558e4f 100644 --- a/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java +++ b/apps/api/src/main/java/dk/treecreate/api/mail/MailService.java @@ -193,16 +193,17 @@ public void sendCustomOrderRequestEmail(CreateCustomOrderRequest orderInfo) public void sendOrderPaymentReminderEmail(Order order) throws Exception { String subject = "Your Treecreate order is waiting for your payment!"; Context context = new Context(new Locale("da")); - context.setVariable("paymentLink", quickpayService.getPaymentLink(order.getPaymentId()).getUrl()); + context.setVariable( + "paymentLink", quickpayService.getPaymentLink(order.getPaymentId()).getUrl()); System.out.println(quickpayService.getPaymentLink(order.getPaymentId())); - if (order.getPaymentReminderSent() == false){ + if (order.getPaymentReminderSent() == false) { sendMail( order.getContactInfo().getEmail(), MailDomain.INFO, subject, context, MailTemplate.PAYMENT_REMINDER); - } + } } // No BCC email and no attachments diff --git a/apps/api/src/main/java/dk/treecreate/api/order/OrderController.java b/apps/api/src/main/java/dk/treecreate/api/order/OrderController.java index dc21f4e49..8083ad0b1 100644 --- a/apps/api/src/main/java/dk/treecreate/api/order/OrderController.java +++ b/apps/api/src/main/java/dk/treecreate/api/order/OrderController.java @@ -16,7 +16,6 @@ import dk.treecreate.api.user.User; import dk.treecreate.api.user.UserRepository; import dk.treecreate.api.utils.LocaleService; -import dk.treecreate.api.utils.OrderStatus; import dk.treecreate.api.utils.QuickpayService; import dk.treecreate.api.utils.model.quickpay.dto.CreatePaymentLinkResponse; import dk.treecreate.api.utils.model.quickpay.dto.GetPaymentLinkResponse; @@ -28,7 +27,6 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import java.net.URISyntaxException; -import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.UUID; diff --git a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java index 5a981b3ca..4bdae8b7f 100644 --- a/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java +++ b/apps/api/src/main/java/dk/treecreate/api/order/OrderService.java @@ -19,10 +19,8 @@ import dk.treecreate.api.user.User; import dk.treecreate.api.user.UserRepository; import dk.treecreate.api.utils.OrderStatus; -import dk.treecreate.api.order.OrderController; import dk.treecreate.api.utils.model.quickpay.ShippingMethod; import io.sentry.Sentry; - import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; @@ -30,16 +28,15 @@ import java.util.List; import java.util.UUID; import java.util.concurrent.TimeUnit; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.server.ResponseStatusException; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.annotation.Scheduled; @Service @Transactional @@ -299,8 +296,9 @@ public void sendOrderConfirmationEmail(Order order) { public List getAllUnpaidOrders() { List allOrders = orderRepository.findAll(); List initialOrders = new ArrayList(); - for(Order order : allOrders){ - if ((order.getStatus() == OrderStatus.INITIAL || order.getStatus() == OrderStatus.REJECTED) && order.getPaymentReminderSent() == false){ + for (Order order : allOrders) { + if ((order.getStatus() == OrderStatus.INITIAL || order.getStatus() == OrderStatus.REJECTED) + && order.getPaymentReminderSent() == false) { initialOrders.add(order); } } @@ -311,19 +309,20 @@ public List getAllUnpaidOrders() { public void sendScheduledPaymentLink() { List orderList = this.getAllUnpaidOrders(); Date now = new Date(System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(5)); - for(Order order: orderList) { - try { - if (now.after(order.getCreatedAt())){ - this.mailService.sendOrderPaymentReminderEmail(order); - order.setPaymentReminderSent(true); - orderRepository.save(order); - LOGGER.info("Payment reminder email has been sent to " + order.getOrderId()); - } - } catch (Exception e) { - LOGGER.error("Failed to process scheduled payment link to " + order.getContactInfo().getEmail(), e); - Sentry.captureException(e); + for (Order order : orderList) { + try { + if (now.after(order.getCreatedAt())) { + this.mailService.sendOrderPaymentReminderEmail(order); + order.setPaymentReminderSent(true); + orderRepository.save(order); + LOGGER.info("Payment reminder email has been sent to " + order.getOrderId()); } - } + } catch (Exception e) { + LOGGER.error( + "Failed to process scheduled payment link to " + order.getContactInfo().getEmail(), e); + Sentry.captureException(e); + } + } } public Order setupOrderFromCreateRequest(CreateOrderRequest createOrderRequest) { From e817732d214e7ab428b10d12fdb02c0c289f4b28 Mon Sep 17 00:00:00 2001 From: Kwandes Date: Sun, 30 Oct 2022 22:00:14 +0100 Subject: [PATCH 19/20] =?UTF-8?q?refactor:=20=F0=9F=92=A1=20Rename=20payme?= =?UTF-8?q?ntReminderSent=20variable=20in=20data.sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/api/src/main/resources/data.sql | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/api/src/main/resources/data.sql b/apps/api/src/main/resources/data.sql index 9cc9f8d49..3ead70a3e 100644 --- a/apps/api/src/main/resources/data.sql +++ b/apps/api/src/main/resources/data.sql @@ -546,7 +546,7 @@ FROM (( , 'ac86995f-60ae-4520-a434-c8abc98980b9' AS user_id , 'c0a80121-7e81-1c3e-817e-82cc11180004' AS billing_info_contact_info_id , 'c0a80121-7e81-1c3e-817e-82cc11180005' AS contact_info_contact_info_id - , false AS paymentReminderSent + , false AS payment_reminder_sent , null AS discount_discount_id) UNION ALL ( @@ -563,7 +563,7 @@ FROM (( , 'ac86995f-60ae-4520-a434-c8abc98980b9' AS user_id , 'c0a80121-7e81-1c3e-817e-82cd4a340009' AS billing_info_contact_info_id , 'c0a80121-7e81-1c3e-817e-82cd4a34000a' AS contact_info_contact_info_id - , false AS paymentReminderSent + , false AS payment_reminder_sent , null AS discount_discount_id) UNION ALL ( @@ -580,7 +580,7 @@ FROM (( , 'ac86995f-60ae-4520-a434-c8abc98980b9' AS user_id , 'c0a80121-7e81-1c3e-817e-82ce4595000e' AS billing_info_contact_info_id , 'c0a80121-7e81-1c3e-817e-82ce4595000f' AS contact_info_contact_info_id - , false AS paymentReminderSent + , false AS payment_reminder_sent , '2f61a7a1-499d-45bb-8229-53f70a4475c4' AS discount_discount_id) UNION ALL ( @@ -597,7 +597,7 @@ FROM (( , 'ac86995f-60ae-4520-a434-c8abc98980b9' AS user_id , 'c0a80121-7e81-1c3e-817e-82cff3ca0013' AS billing_info_contact_info_id , 'c0a80121-7e81-1c3e-817e-82cff3ca0014' AS contact_info_contact_info_id - , false AS paymentReminderSent + , false AS payment_reminder_sent , '35c90960-1da4-4ff0-93df-622fb5718e55' AS discount_discount_id) UNION ALL ( @@ -614,7 +614,7 @@ FROM (( , 'ac86995f-60ae-4520-a434-c8abc98980b9' AS user_id , 'c0a80121-7e81-1c3e-817e-82d0c0d20018' AS billing_info_contact_info_id , 'c0a80121-7e81-1c3e-817e-82d0c0d20019' AS contact_info_contact_info_id - , false AS paymentReminderSent + , false AS payment_reminder_sent , null AS discount_discount_id) UNION ALL ( @@ -631,7 +631,7 @@ FROM (( , 'ac86995f-60ae-4520-a434-c8abc98980b9' AS user_id , 'c0a80121-7e81-1c3e-817e-82e1aefc001d' AS billing_info_contact_info_id , 'c0a80121-7e81-1c3e-817e-82e1aefc001e' AS contact_info_contact_info_id - , false AS paymentReminderSent + , false AS payment_reminder_sent , null AS discount_discount_id) ) orders WHERE NOT EXISTS( From 1b372f19903c5ffb0cb943d912dd92b2b0b6b247 Mon Sep 17 00:00:00 2001 From: Kwandes Date: Sun, 30 Oct 2022 23:26:54 +0100 Subject: [PATCH 20/20] =?UTF-8?q?chore:=20=F0=9F=A4=96=20Fix=20order=20of?= =?UTF-8?q?=20fields=20in=20data.sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/api/src/main/resources/data.sql | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/api/src/main/resources/data.sql b/apps/api/src/main/resources/data.sql index 3ead70a3e..2666cfee7 100644 --- a/apps/api/src/main/resources/data.sql +++ b/apps/api/src/main/resources/data.sql @@ -537,6 +537,7 @@ FROM (( , now() AS created_at , 0 AS currency , '291586595' AS payment_id + , 0 AS payment_reminder_sent , 1 AS planted_trees , 1 AS shipping_method , 0 AS status @@ -546,7 +547,6 @@ FROM (( , 'ac86995f-60ae-4520-a434-c8abc98980b9' AS user_id , 'c0a80121-7e81-1c3e-817e-82cc11180004' AS billing_info_contact_info_id , 'c0a80121-7e81-1c3e-817e-82cc11180005' AS contact_info_contact_info_id - , false AS payment_reminder_sent , null AS discount_discount_id) UNION ALL ( @@ -554,6 +554,7 @@ FROM (( , now() AS created_at , 0 AS currency , '291586768' AS payment_id + , 0 AS payment_reminder_sent , 1 AS planted_trees , 0 AS shipping_method , 0 AS status @@ -563,7 +564,6 @@ FROM (( , 'ac86995f-60ae-4520-a434-c8abc98980b9' AS user_id , 'c0a80121-7e81-1c3e-817e-82cd4a340009' AS billing_info_contact_info_id , 'c0a80121-7e81-1c3e-817e-82cd4a34000a' AS contact_info_contact_info_id - , false AS payment_reminder_sent , null AS discount_discount_id) UNION ALL ( @@ -571,6 +571,7 @@ FROM (( , now() AS created_at , 0 AS currency , '291586909' AS payment_id + , 0 AS payment_reminder_sent , 1 AS planted_trees , 1 AS shipping_method , 0 AS status @@ -580,7 +581,6 @@ FROM (( , 'ac86995f-60ae-4520-a434-c8abc98980b9' AS user_id , 'c0a80121-7e81-1c3e-817e-82ce4595000e' AS billing_info_contact_info_id , 'c0a80121-7e81-1c3e-817e-82ce4595000f' AS contact_info_contact_info_id - , false AS payment_reminder_sent , '2f61a7a1-499d-45bb-8229-53f70a4475c4' AS discount_discount_id) UNION ALL ( @@ -588,6 +588,7 @@ FROM (( , now() AS created_at , 0 AS currency , '291587163' AS payment_id + , 0 AS payment_reminder_sent , 1 AS planted_trees , 1 AS shipping_method , 0 AS status @@ -597,7 +598,6 @@ FROM (( , 'ac86995f-60ae-4520-a434-c8abc98980b9' AS user_id , 'c0a80121-7e81-1c3e-817e-82cff3ca0013' AS billing_info_contact_info_id , 'c0a80121-7e81-1c3e-817e-82cff3ca0014' AS contact_info_contact_info_id - , false AS payment_reminder_sent , '35c90960-1da4-4ff0-93df-622fb5718e55' AS discount_discount_id) UNION ALL ( @@ -605,6 +605,7 @@ FROM (( , now() AS created_at , 0 AS currency , '291587312' AS payment_id + , 0 AS payment_reminder_sent , 1 AS planted_trees , 1 AS shipping_method , 0 AS status @@ -614,7 +615,6 @@ FROM (( , 'ac86995f-60ae-4520-a434-c8abc98980b9' AS user_id , 'c0a80121-7e81-1c3e-817e-82d0c0d20018' AS billing_info_contact_info_id , 'c0a80121-7e81-1c3e-817e-82d0c0d20019' AS contact_info_contact_info_id - , false AS payment_reminder_sent , null AS discount_discount_id) UNION ALL ( @@ -622,6 +622,7 @@ FROM (( , now() AS created_at , 0 AS currency , '291589918' AS payment_id + , 0 AS payment_reminder_sent , 3 AS planted_trees , 0 AS shipping_method , 0 AS status @@ -631,7 +632,6 @@ FROM (( , 'ac86995f-60ae-4520-a434-c8abc98980b9' AS user_id , 'c0a80121-7e81-1c3e-817e-82e1aefc001d' AS billing_info_contact_info_id , 'c0a80121-7e81-1c3e-817e-82e1aefc001e' AS contact_info_contact_info_id - , false AS payment_reminder_sent , null AS discount_discount_id) ) orders WHERE NOT EXISTS(