github.com/companieshouse/lfp-pay-api@v0.0.0-20230203133422-0ca455cd79f9/service/payment_details.go (about)

     1  package service
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  
     7  	"github.com/companieshouse/chs.go/log"
     8  	"github.com/companieshouse/lfp-pay-api-core/models"
     9  	"github.com/companieshouse/lfp-pay-api/transformers"
    10  )
    11  
    12  // PaymentDetailsService contains the PayableResourceService for updating the resource with payment details after a successful/failed payment
    13  type PaymentDetailsService struct {
    14  	PayableResourceService *PayableResourceService // needed when implemnting PATCH endpoint from payment-processed-consumer
    15  }
    16  
    17  // GetPaymentDetailsFromPayableResource transforms a PayableResource into its corresponding Payment details resource
    18  func (service *PaymentDetailsService) GetPaymentDetailsFromPayableResource(req *http.Request, payable *models.PayableResource) (*models.PaymentDetails, ResponseType, error) {
    19  	paymentDetails := transformers.PayableResourceToPaymentDetails(payable)
    20  
    21  	if len(paymentDetails.Items) == 0 {
    22  		err := fmt.Errorf("no items in payment details transformed from payable resource [%s]", payable.Reference)
    23  		log.ErrorR(req, err, log.Data{"company_number": payable.CompanyNumber, "reference": payable.Reference, "payable_transactions": payable.Transactions})
    24  		return nil, InvalidData, err
    25  	}
    26  
    27  	return paymentDetails, Success, nil
    28  }