Commit a7c9e2bd authored by Alish's avatar Alish
Browse files

feat: added new fields and used in Merchant mutation #1029

parent d38943d5
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -192,5 +192,32 @@
				</div>
			</div>
		</div>

		<!-- TODO add translate -->
		<div
			*ngIf="hasRestrictedCarriers.value && carriersIds?.value.length"
			class="form-group row"
		>
			<label class="col-sm-2 control-label">Delivery</label>

			<div class="col-sm-9">
				<nb-radio-group
					[(value)]="delivery"
					(valueChange)="changeDelivery($event)"
					class="row m-0"
					name="size"
				>
					<nb-radio name="size" [value]="'all'">
						Use All Carriers
					</nb-radio>
					<nb-radio name="size" [value]="'onlyStore'">
						Use Only Store Carriers
					</nb-radio>
					<nb-radio name="size" [value]="'preferStore'">
						Prefer Store Carriers
					</nb-radio>
				</nb-radio-group>
			</div>
		</div>
	</fieldset>
</div>
+42 −1
Original line number Diff line number Diff line
@@ -24,6 +24,8 @@ export type WarehouseBasicInfo = Pick<
	| 'username'
	| 'hasRestrictedCarriers'
	| 'carriersIds'
	| 'useOnlyRestrictedCarriersForDelivery'
	| 'preferRestrictedCarriersForDelivery'
>;

@Component({
@@ -43,6 +45,7 @@ export class BasicInfoFormComponent implements OnInit {
	uploaderPlaceholder: string;

	carriersOptions: IMultiSelectOption[];
	delivery = 'all';

	static buildForm(formBuilder: FormBuilder): FormGroup {
		// would be used in the parent component and injected into this.form
@@ -78,6 +81,8 @@ export class BasicInfoFormComponent implements OnInit {
			username: ['', [Validators.required]],

			hasRestrictedCarriers: [false, [Validators.required]],
			useOnlyRestrictedCarriersForDelivery: [false],
			preferRestrictedCarriersForDelivery: [false],
			carriersIds: [[]]
		});
	}
@@ -95,6 +100,8 @@ export class BasicInfoFormComponent implements OnInit {

			hasRestrictedCarriers: boolean;
			carriersIds: string[];
			useOnlyRestrictedCarriersForDelivery: boolean;
			preferRestrictedCarriersForDelivery: boolean;
		};

		if (!basicInfo.logo) {
@@ -112,6 +119,16 @@ export class BasicInfoFormComponent implements OnInit {
						hasRestrictedCarriers: basicInfo.hasRestrictedCarriers,
						carriersIds: basicInfo.carriersIds
				  }
				: {}),
			...(basicInfo.hasRestrictedCarriers &&
			basicInfo.carriersIds &&
			basicInfo.carriersIds.length
				? {
						useOnlyRestrictedCarriersForDelivery:
							basicInfo.useOnlyRestrictedCarriersForDelivery,
						preferRestrictedCarriersForDelivery:
							basicInfo.preferRestrictedCarriersForDelivery
				  }
				: {})
		};
	}
@@ -123,7 +140,9 @@ export class BasicInfoFormComponent implements OnInit {
			pick(basicInfo, [
				...Object.keys(this.getValue()),
				'hasRestrictedCarriers',
				'carriersIds'
				'carriersIds',
				'useOnlyRestrictedCarriersForDelivery',
				'preferRestrictedCarriersForDelivery'
			])
		);
	}
@@ -169,6 +188,14 @@ export class BasicInfoFormComponent implements OnInit {
		return this.form.get('carriersIds');
	}

	get useOnlyRestrictedCarriersForDelivery() {
		return this.form.get('useOnlyRestrictedCarriersForDelivery');
	}

	get preferRestrictedCarriersForDelivery() {
		return this.form.get('preferRestrictedCarriersForDelivery');
	}

	get showLogoMeta() {
		return this.logo && this.logo.value !== '';
	}
@@ -182,6 +209,20 @@ export class BasicInfoFormComponent implements OnInit {
		this.logo.setValue('');
	}

	changeDelivery(type: 'all' | 'onlyStore' | 'preferStore') {
		this.useOnlyRestrictedCarriersForDelivery.setValue(false);
		this.preferRestrictedCarriersForDelivery.setValue(false);

		switch (type) {
			case 'onlyStore':
				this.useOnlyRestrictedCarriersForDelivery.setValue(true);
				break;
			case 'preferStore':
				this.preferRestrictedCarriersForDelivery.setValue(true);
				break;
		}
	}

	private async getUploaderPlaceholderText() {
		const res = await this.translateService
			.get(['WAREHOUSE_VIEW.MUTATION.PHOTO', 'OPTIONAL'])
+26 −0
Original line number Diff line number Diff line
@@ -154,5 +154,31 @@
				</div>
			</div>
		</div>

		<!-- TODO add translate -->
		<div
			*ngIf="hasRestrictedCarriers.value && carriersIds?.value.length"
			class="form-group row"
		>
			<label class="col-sm-2 control-label">Delivery</label>

			<div class="col-sm-9">
				<nb-radio-group
					[(value)]="delivery"
					class="row m-0"
					name="size"
				>
					<nb-radio name="size" [value]="'all'">
						Use All Carriers
					</nb-radio>
					<nb-radio name="size" [value]="'onlyStore'">
						Use Only Store Carriers
					</nb-radio>
					<nb-radio name="size" [value]="'preferStore'">
						Prefer Store Carriers
					</nb-radio>
				</nb-radio-group>
			</div>
		</div>
	</fieldset>
</div>
+60 −3
Original line number Diff line number Diff line
@@ -32,6 +32,8 @@ export type WarehouseManageTabsDetails = Pick<
	| 'carriersIds'
	| 'isManufacturing'
	| 'isCarrierRequired'
	| 'useOnlyRestrictedCarriersForDelivery'
	| 'preferRestrictedCarriersForDelivery'
>;

@Component({
@@ -67,6 +69,8 @@ export class WarehouseManageTabsDetailsComponent
		)
	);

	private _delivery: 'all' | 'onlyStore' | 'preferStore';

	constructor(
		private readonly _carrierRouter: CarrierRouter,
		private readonly _translateService: TranslateService
@@ -99,6 +103,33 @@ export class WarehouseManageTabsDetailsComponent
		return this.form.get('isCarrierRequired');
	}

	get useOnlyRestrictedCarriersForDelivery() {
		return this.form.get('useOnlyRestrictedCarriersForDelivery');
	}

	get preferRestrictedCarriersForDelivery() {
		return this.form.get('preferRestrictedCarriersForDelivery');
	}

	get delivery() {
		return this._delivery;
	}

	set delivery(value) {
		this._delivery = value;
		this.useOnlyRestrictedCarriersForDelivery.setValue(false);
		this.preferRestrictedCarriersForDelivery.setValue(false);

		switch (value) {
			case 'onlyStore':
				this.useOnlyRestrictedCarriersForDelivery.setValue(true);
				break;
			case 'preferStore':
				this.preferRestrictedCarriersForDelivery.setValue(true);
				break;
		}
	}

	static buildForm(formBuilder: FormBuilder): FormGroup {
		// would be used in the parent component and injected into this.form
		return formBuilder.group({
@@ -128,7 +159,9 @@ export class WarehouseManageTabsDetailsComponent
			isManufacturing: [true, [Validators.required]],
			isCarrierRequired: [true, [Validators.required]],
			hasRestrictedCarriers: [false, [Validators.required]],
			carriersIds: [[]]
			carriersIds: [[]],
			useOnlyRestrictedCarriersForDelivery: [false],
			preferRestrictedCarriersForDelivery: [false]
		});
	}

@@ -149,6 +182,8 @@ export class WarehouseManageTabsDetailsComponent
			isCarrierRequired: boolean;
			hasRestrictedCarriers: boolean;
			carriersIds: string[];
			useOnlyRestrictedCarriersForDelivery: boolean;
			preferRestrictedCarriersForDelivery: boolean;
		};

		return {
@@ -162,20 +197,42 @@ export class WarehouseManageTabsDetailsComponent
						hasRestrictedCarriers: basicInfo.hasRestrictedCarriers,
						carriersIds: basicInfo.carriersIds
				  }
				: {}),
			...(basicInfo.hasRestrictedCarriers &&
			basicInfo.carriersIds &&
			basicInfo.carriersIds.length
				? {
						useOnlyRestrictedCarriersForDelivery:
							basicInfo.useOnlyRestrictedCarriersForDelivery,
						preferRestrictedCarriersForDelivery:
							basicInfo.preferRestrictedCarriersForDelivery
				  }
				: {})
		};
	}

	setValue<T extends WarehouseManageTabsDetails>(basicInfo: T) {
		FormHelpers.deepMark(this.form, 'dirty');

		this.form.setValue(
			_.pick(basicInfo, [
				...Object.keys(this.getValue()),
				'hasRestrictedCarriers',
				'carriersIds'
				'carriersIds',
				'useOnlyRestrictedCarriersForDelivery',
				'preferRestrictedCarriersForDelivery'
			])
		);

		const onlyStore = basicInfo.useOnlyRestrictedCarriersForDelivery;
		const preferStore = basicInfo.preferRestrictedCarriersForDelivery;

		if (onlyStore) {
			this.delivery = 'onlyStore';
		} else if (preferStore) {
			this.delivery = 'preferStore';
		} else {
			this.delivery = 'all';
		}
	}

	deleteImg() {
+6 −0
Original line number Diff line number Diff line
@@ -44,6 +44,8 @@ type Warehouse {
	usedCarriersIds: [String!]
	carriers: [Carrier!] # Resolved, if hasRestrictedCarriers is false -> returns null
	orderBarcodeType: Int
	useOnlyRestrictedCarriersForDelivery: Boolean
	preferRestrictedCarriersForDelivery: Boolean
}

input WarehouseCreateInput {
@@ -76,6 +78,8 @@ input WarehouseCreateInput {
	hasRestrictedCarriers: Boolean
	carriersIds: [String!]
	usedCarriersIds: [String!]
	useOnlyRestrictedCarriersForDelivery: Boolean
	preferRestrictedCarriersForDelivery: Boolean
}

input WarehousesFindInput {
@@ -109,6 +113,8 @@ input WarehousesFindInput {
	hasRestrictedCarriers: Boolean
	carriersIds: [String!]
	usedCarriersIds: [String!]
	useOnlyRestrictedCarriersForDelivery: Boolean
	preferRestrictedCarriersForDelivery: Boolean
}

type Query {
Loading