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 }