github.com/companieshouse/insolvency-api@v0.0.0-20231024103413-440c973d9e9b/transformers/progress_report_resource.go (about)

     1  package transformers
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/companieshouse/chs.go/log"
     7  	"github.com/companieshouse/insolvency-api/constants"
     8  	"github.com/companieshouse/insolvency-api/models"
     9  	"github.com/companieshouse/insolvency-api/utils"
    10  )
    11  
    12  // ProgressReportResourceRequestToDB transforms a progress report request to a dao model
    13  func ProgressReportResourceRequestToDB(req *models.ProgressReport, transactionID string, helperService utils.HelperService) *models.ProgressReportResourceDao {
    14  
    15  	etag, err := helperService.GenerateEtag()
    16  
    17  	if err != nil {
    18  		log.Error(fmt.Errorf("error generating etag: [%s] and etag is empty", err))
    19  		return nil
    20  	}
    21  
    22  	isEtagValidated := helperService.HandleEtagGenerationValidation(err)
    23  
    24  	if !isEtagValidated {
    25  		return nil
    26  	}
    27  
    28  	selfLink := fmt.Sprintf(constants.TransactionsPath + transactionID + "/insolvency/progress-report")
    29  
    30  	dao := &models.ProgressReportResourceDao{
    31  		FromDate:    req.FromDate,
    32  		ToDate:      req.ToDate,
    33  		Attachments: req.Attachments,
    34  		Etag:        etag,
    35  		Kind:        "insolvency-resource#progress-report",
    36  		Links:       models.ProgressReportResourceLinksDao{Self: selfLink},
    37  	}
    38  
    39  	return dao
    40  }
    41  
    42  // ProgressReportDaoToResponse transforms a progress report dao model to a response
    43  func ProgressReportDaoToResponse(progressReport *models.ProgressReportResourceDao) *models.ProgressReportResource {
    44  	return &models.ProgressReportResource{
    45  		FromDate:    progressReport.FromDate,
    46  		ToDate:      progressReport.ToDate,
    47  		Attachments: progressReport.Attachments,
    48  		Etag:        progressReport.Etag,
    49  		Kind:        progressReport.Kind,
    50  		Links:       models.ProgressReportResourceLinks(progressReport.Links),
    51  	}
    52  }