github.com/companieshouse/insolvency-api@v0.0.0-20231024103413-440c973d9e9b/service/soa_service.go (about) 1 package service 2 3 import ( 4 "fmt" 5 "net/http" 6 "strings" 7 8 "github.com/companieshouse/chs.go/log" 9 "github.com/companieshouse/insolvency-api/dao" 10 "github.com/companieshouse/insolvency-api/models" 11 "github.com/companieshouse/insolvency-api/utils" 12 ) 13 14 // ValidateStatementDetails checks that the incoming statement details are valid 15 func ValidateStatementDetails(svc dao.Service, statementDao *models.StatementOfAffairsResourceDao, transactionID string, req *http.Request) (string, error) { 16 var errs []string 17 18 if statementDao == nil { 19 err := fmt.Errorf("nil DAO passed to service for validation") 20 log.ErrorR(req, err) 21 return "", err 22 } 23 24 // Check that the attachment has been submitted correctly 25 if len(statementDao.Attachments) == 0 { 26 errs = append(errs, "please supply at least one attachment") 27 } 28 if len(statementDao.Attachments) > 2 { 29 errs = append(errs, "please supply a maximum of two attachments") 30 } 31 32 // Check if statement date supplied is in the future or before company was incorporated 33 insolvencyResource, err := svc.GetInsolvencyResource(transactionID) 34 if err != nil { 35 err = fmt.Errorf("error getting insolvency resource from DB: [%s]", err) 36 log.ErrorR(req, err) 37 return "", err 38 } 39 // Retrieve company incorporation date 40 incorporatedOn, err := GetCompanyIncorporatedOn(insolvencyResource.Data.CompanyNumber, req) 41 if err != nil { 42 err = fmt.Errorf("error getting company details from DB: [%s]", err) 43 log.ErrorR(req, err) 44 return "", err 45 } 46 47 ok, err := utils.IsDateBetweenIncorporationAndNow(statementDao.StatementDate, incorporatedOn) 48 if err != nil { 49 err = fmt.Errorf("error parsing date: [%s]", err) 50 log.ErrorR(req, err) 51 return "", err 52 } 53 if !ok { 54 errs = append(errs, fmt.Sprintf("statement_date [%s] should not be in the future or before the company was incorporated", statementDao.StatementDate)) 55 } 56 57 return strings.Join(errs, ", "), nil 58 }