CouponResponseFactoryImpl.java

package com.deveagles.be15_deveagles_be.features.coupons.common;

import com.deveagles.be15_deveagles_be.features.coupons.domain.entity.Coupon;
import com.deveagles.be15_deveagles_be.features.coupons.domain.vo.DiscountResult;
import com.deveagles.be15_deveagles_be.features.coupons.presentation.dto.response.CouponApplicationResponse;
import com.deveagles.be15_deveagles_be.features.coupons.presentation.dto.response.CouponValidationResponse;
import org.springframework.stereotype.Service;

@Service
public class CouponResponseFactoryImpl implements CouponResponseFactory {

  @Override
  public CouponValidationResponse createValidResponse(Coupon coupon) {
    return new CouponValidationResponse(true, null, coupon);
  }

  @Override
  public CouponValidationResponse createInvalidResponse(String errorMessage) {
    return new CouponValidationResponse(false, errorMessage, null);
  }

  @Override
  public CouponApplicationResponse createSuccessResponse(
      Coupon coupon, DiscountResult discountResult) {
    return new CouponApplicationResponse(
        true,
        null,
        coupon,
        discountResult.getDiscountRate(),
        discountResult.getDiscountAmount(),
        discountResult.getFinalAmount());
  }

  @Override
  public CouponApplicationResponse createFailedResponse(String errorMessage) {
    return new CouponApplicationResponse(false, errorMessage, null, null, null, null);
  }
}