I'm always excited to take on new projects and collaborate with innovative minds.

Mail

say@bplbmki.in

Website

https://www.bplbmki.in/

ref

suppression:
 required: true
 clients:
   - onepaywalmart
 pre-activation-indicators:
   - "1"
   - "2"
 post-activation-indicators:
   - "3"
   - "4"
 notification-types:
   - cloudEvent
   - emailSms
   - clientNotification

 

 

 

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;

@Component
@ConfigurationProperties(prefix = "suppression")
public class SuppressionConfig {

   private boolean required;
   private List<String> clients;
   private List<String> preActivationIndicators;
   private List<String> postActivationIndicators;
   private List<String> notificationTypes;

   public boolean isRequired() {
       return required;
   }

   public void setRequired(boolean required) {
       this.required = required;
   }

   public List<String> getClients() {
       return clients;
   }

   public void setClients(List<String> clients) {
       this.clients = clients;
   }

   public List<String> getPreActivationIndicators() {
       return preActivationIndicators;
   }

   public void setPreActivationIndicators(List<String> preActivationIndicators) {
       this.preActivationIndicators = preActivationIndicators;
   }

   public List<String> getPostActivationIndicators() {
       return postActivationIndicators;
   }

   public void setPostActivationIndicators(List<String> postActivationIndicators) {
       this.postActivationIndicators = postActivationIndicators;
   }

   public List<String> getNotificationTypes() {
       return notificationTypes;
   }

   public void setNotificationTypes(List<String> notificationTypes) {
       this.notificationTypes = notificationTypes;
   }
}

 

 

 

 

package com.syf.ecom.util;

import java.util.List;

public class SuppressionUtils {

   private final SuppressionConfig suppressionConfig;

   public SuppressionUtils(SuppressionConfig suppressionConfig) {
       this.suppressionConfig = suppressionConfig;
   }

   /** Notification channel types for suppression logic. */
   public enum ChannelType {
       CLOUD_EVENT,
       EMAIL_SMS
   }

   /** Result object indicating which notifications should be sent. */
   public static class SuppressionResult {
       public final boolean sendCloudEvent;
       public final boolean sendEmailSms;
       public final boolean sendClientNotification;

       public SuppressionResult(boolean sendCloudEvent, boolean sendEmailSms, boolean sendClientNotification) {
           this.sendCloudEvent = sendCloudEvent;
           this.sendEmailSms = sendEmailSms;
           this.sendClientNotification = sendClientNotification;
       }
   }

   public SuppressionResult shouldSendNotification(
           String client,
           String flipStatusIndicator,
           String cardShippedDate) {

       // If suppression not required or client not configured → send all
       if (!suppressionConfig.isRequired()
               || !suppressionConfig.getClients().contains(client)) {
           return new SuppressionResult(true, true, true);
       }

       List<String> preActivation = suppressionConfig.getPreActivationIndicators();
       List<String> postActivation = suppressionConfig.getPostActivationIndicators();

       // Pre-activation logic
       if (preActivation.contains(flipStatusIndicator)
               && cardShippedDate != null
               && !cardShippedDate.isEmpty()) {

           // Send only Cloud + Client Notification
           return new SuppressionResult(true, false, true);
       }

       // Post-activation logic
       if (postActivation.contains(flipStatusIndicator)) {
           return new SuppressionResult(true, true, true);
       }

       // Default
       return new SuppressionResult(true, true, true);
   }
}