export class TransportOrderBuilder {
private _TransportOrder: TransportOrder;
constructor() {
this._TransportOrder = new TransportOrder();
}
public setOrderStatus(status: enumOrderStatus) {
this._TransportOrder.OrderStatus = status;
return this;
}
public setCargoType(status: EnumCargoType) {
this._TransportOrder.CargoType = status;
return this;
}
public setTransportDirection(status: enumTransportDirection) {
this._TransportOrder.TransportDirection = status;
return this;
}
public setPlanningStatus(status: enumPlanningStatus) {
this._TransportOrder.PlanningStatus = status;
return this;
}
public setSignUpStatus(status: enumSignedUpStatus) {
this._TransportOrder.OrderStatus = enumOrderStatus.SignedUp;
this._TransportOrder.SignedUpStatus = status;
return this;
}
public setLoadingStatus(status: EnumLoadingStatus) {
this._TransportOrder.OrderStatus = enumOrderStatus.InLoading;
this._TransportOrder.LoadingStatus = status;
return this;
}
public build(): TransportOrder {
return this._TransportOrder;
}
public setTransporterId(id: string) {
this._TransportOrder.Transporter = new Transporter({ Id: id });
return this;
}
public buildToList(amountInList: number): TransportOrder[] {
const result = new Array<TransportOrder>();
for (let index = 0; index < amountInList; index++) {
const element = <TransportOrder>deepCopy(this.build());
result.push(element);
}
return result;
}
}
function deepCopy(obj) {
let copy;
// Handle the 3 simple types, and null or undefined
// tslint:disable-next-line:curly
if (null == obj || "object" !== typeof obj) return obj;
// Handle Date
if (obj instanceof Date) {
copy = new Date();
copy.setTime(obj.getTime());
return copy;
}
// Handle Array
if (obj instanceof Array) {
copy = [];
for (let i = 0, len = obj.length; i < len; i++) {
copy[i] = deepCopy(obj[i]);
}
return copy;
}
// Handle Object
if (obj instanceof Object) {
copy = {};
for (const attr in obj) {
// tslint:disable-next-line:curly
if (obj.hasOwnProperty(attr)) copy[attr] = deepCopy(obj[attr]);
}
return copy;
}
throw new Error("Unable to copy obj! Its type isn't supported.");
}
const order = new TransportOrderBuilder()
.setTransportDirection(enumTransportDirection.Unknown)
.setCargoType(EnumCargoType.bulk).build();
387200cookie-checkTypescript builder example