{"id":3872,"date":"2020-08-10T07:46:13","date_gmt":"2020-08-10T06:46:13","guid":{"rendered":"https:\/\/solidt.eu\/site\/?p=3872"},"modified":"2020-08-10T07:46:59","modified_gmt":"2020-08-10T06:46:59","slug":"typescript-builder-example","status":"publish","type":"post","link":"https:\/\/solidt.eu\/site\/typescript-builder-example\/","title":{"rendered":"Typescript builder example"},"content":{"rendered":"\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">export class TransportOrderBuilder {\n    private _TransportOrder: TransportOrder;\n\n    constructor() {\n        this._TransportOrder = new TransportOrder();\n    }\n\n    public setOrderStatus(status: enumOrderStatus) {\n        this._TransportOrder.OrderStatus = status;\n        return this;\n    }\n\n    public setCargoType(status: EnumCargoType) {\n        this._TransportOrder.CargoType = status;\n        return this;\n    }\n\n    public setTransportDirection(status: enumTransportDirection) {\n        this._TransportOrder.TransportDirection = status;\n        return this;\n    }\n\n    public setPlanningStatus(status: enumPlanningStatus) {\n        this._TransportOrder.PlanningStatus = status;\n        return this;\n    }\n\n    public setSignUpStatus(status: enumSignedUpStatus) {\n        this._TransportOrder.OrderStatus = enumOrderStatus.SignedUp;\n        this._TransportOrder.SignedUpStatus = status;\n        return this;\n    }\n\n    public setLoadingStatus(status: EnumLoadingStatus) {\n        this._TransportOrder.OrderStatus = enumOrderStatus.InLoading;\n        this._TransportOrder.LoadingStatus = status;\n        return this;\n    }\n\n    public build(): TransportOrder {\n        return this._TransportOrder;\n    }\n\n    public setTransporterId(id: string) {\n        this._TransportOrder.Transporter = new Transporter({ Id: id });\n        return this;\n    }\n\n    public buildToList(amountInList: number): TransportOrder[] {\n        const result = new Array&lt;TransportOrder>();\n\n        for (let index = 0; index &lt; amountInList; index++) {\n            const element = &lt;TransportOrder>deepCopy(this.build());\n            result.push(element);\n        }\n\n        return result;\n    }\n}\n\nfunction deepCopy(obj) {\n    let copy;\n\n    \/\/ Handle the 3 simple types, and null or undefined\n    \/\/ tslint:disable-next-line:curly\n    if (null == obj || \"object\" !== typeof obj) return obj;\n\n    \/\/ Handle Date\n    if (obj instanceof Date) {\n        copy = new Date();\n        copy.setTime(obj.getTime());\n        return copy;\n    }\n\n    \/\/ Handle Array\n    if (obj instanceof Array) {\n        copy = [];\n        for (let i = 0, len = obj.length; i &lt; len; i++) {\n            copy[i] = deepCopy(obj[i]);\n        }\n        return copy;\n    }\n\n    \/\/ Handle Object\n    if (obj instanceof Object) {\n        copy = {};\n        for (const attr in obj) {\n            \/\/ tslint:disable-next-line:curly\n            if (obj.hasOwnProperty(attr)) copy[attr] = deepCopy(obj[attr]);\n        }\n        return copy;\n    }\n\n    throw new Error(\"Unable to copy obj! Its type isn't supported.\");\n}\n\nconst order = new TransportOrderBuilder()\n      .setTransportDirection(enumTransportDirection.Unknown)\n      .setCargoType(EnumCargoType.bulk).build();<\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-3872","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/3872","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/comments?post=3872"}],"version-history":[{"count":3,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/3872\/revisions"}],"predecessor-version":[{"id":3875,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/3872\/revisions\/3875"}],"wp:attachment":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/media?parent=3872"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/categories?post=3872"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/tags?post=3872"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}