1- import { Order , OrderResource , Item , ItemResource , ItemOptions , ItemOptionsResource , CertificateItemOptionsResource } from "./types" ;
1+ import {
2+ Order , OrderResource , Item , ItemResource , ItemOptions , ItemOptionsResource ,
3+ CertificateItemOptionsResource , CertifiedCopyItemOptionsResource ,
4+ MissingImageDeliveryItemOptionsResource
5+ } from "./types" ;
26
37export default class OrderMapping {
48 public static mapOrderResourceToOrder ( orderResource : OrderResource ) : Order {
59 const order : Order = {
610 deliveryDetails : {
7- addressLine1 : orderResource . delivery_details . address_line_1 ,
8- addressLine2 : orderResource . delivery_details . address_line_2 ,
9- country : orderResource . delivery_details . country ,
10- forename : orderResource . delivery_details . forename ,
11- locality : orderResource . delivery_details . locality ,
12- poBox : orderResource . delivery_details . po_box ,
13- postalCode : orderResource . delivery_details . postal_code ,
14- region : orderResource . delivery_details . region ,
15- surname : orderResource . delivery_details . surname
11+ addressLine1 : orderResource ? .delivery_details ? .address_line_1 ,
12+ addressLine2 : orderResource ? .delivery_details ? .address_line_2 ,
13+ country : orderResource ? .delivery_details ? .country ,
14+ forename : orderResource ? .delivery_details ? .forename ,
15+ locality : orderResource ? .delivery_details ? .locality ,
16+ poBox : orderResource ? .delivery_details ? .po_box ,
17+ postalCode : orderResource ? .delivery_details ? .postal_code ,
18+ region : orderResource ? .delivery_details ? .region ,
19+ surname : orderResource ? .delivery_details ? .surname
1620 } ,
1721 items : orderResource . items . map ( ( item ) => {
1822 return this . mapItemResourceToItem ( item )
@@ -50,7 +54,7 @@ export default class OrderMapping {
5054 itemCost : i ?. item_cost ,
5155 productType : i ?. product_type
5256 } ) ) ,
53- itemOptions : this . mapItemOptionsResourceToItemOptions ( itemResource . item_options ) ,
57+ itemOptions : this . mapItemOptionsResourceToItemOptions ( itemResource . item_options , itemResource . kind ) ,
5458 itemUri : itemResource . item_uri ,
5559 kind : itemResource . kind ,
5660 links : {
@@ -69,8 +73,9 @@ export default class OrderMapping {
6973 return Object . values ( input ) . some ( ( value ) => value !== undefined ) ? input : undefined ;
7074 }
7175
72- private static mapItemOptionsResourceToItemOptions ( itemResource : ItemOptionsResource ) : ItemOptions {
73- if ( "certificate_type" in itemResource ) {
76+ private static mapItemOptionsResourceToItemOptions ( itemResource : ItemOptionsResource , kind : string ) : ItemOptions {
77+ if ( kind === "item#certificate" ) {
78+ itemResource = itemResource as CertificateItemOptionsResource ;
7479 const directorDetails = this . removeEmptyObjects ( {
7580 includeBasicInformation : itemResource ?. director_details ?. include_basic_information
7681 } ) ;
@@ -95,7 +100,8 @@ export default class OrderMapping {
95100 forename : itemResource . forename ,
96101 surname : itemResource . surname
97102 }
98- } else {
103+ } else if ( kind === "item#certified-copy" ) {
104+ itemResource = itemResource as CertifiedCopyItemOptionsResource ;
99105 return {
100106 deliveryTimescale : itemResource . delivery_timescale ,
101107 deliveryMethod : itemResource . delivery_method ,
@@ -108,6 +114,15 @@ export default class OrderMapping {
108114 filingHistoryCost : f . filing_history_cost
109115 } ) )
110116 }
117+ } else {
118+ itemResource = itemResource as MissingImageDeliveryItemOptionsResource ;
119+ return {
120+ filingHistoryDate : itemResource . filing_history_date ,
121+ filingHistoryDescription : itemResource . filing_history_description ,
122+ filingHistoryId : itemResource . filing_history_id ,
123+ filingHistoryType : itemResource . filing_history_type ,
124+ filingHistoryDescriptionValues : itemResource . filing_history_description_values
125+ }
111126 }
112127 }
113128}
0 commit comments