mirror of
https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend
synced 2025-12-28 22:42:11 +01:00
feat(checkout): add branch selection to reward catalog - Add new select-branch-dropdown library with BranchDropdownComponent and SelectedBranchDropdownComponent for branch selection - Extend DropdownButtonComponent with filter and option subcomponents - Integrate branch selection into reward catalog page - Add BranchesResource for fetching available branches - Update CheckoutMetadataService with branch selection persistence - Add comprehensive tests for dropdown components Related work items: #5464
79 lines
2.3 KiB
TypeScript
79 lines
2.3 KiB
TypeScript
import { Injectable, inject } from '@angular/core';
|
|
import { TabService, getMetadataHelper } from '@isa/core/tabs';
|
|
import {
|
|
CHECKOUT_REWARD_SELECTION_POPUP_OPENED_STATE_KEY,
|
|
CHECKOUT_REWARD_SHOPPING_CART_ID_METADATA_KEY,
|
|
CHECKOUT_SHOPPING_CART_ID_METADATA_KEY,
|
|
SELECTED_BRANCH_METADATA_KEY,
|
|
} from '../constants';
|
|
import z from 'zod';
|
|
import { Branch, BranchSchema } from '../schemas/branch.schema';
|
|
|
|
@Injectable({ providedIn: 'root' })
|
|
export class CheckoutMetadataService {
|
|
#tabService = inject(TabService);
|
|
|
|
setSelectedBranch(tabId: number, branch: Branch | undefined) {
|
|
this.#tabService.patchTabMetadata(tabId, {
|
|
[SELECTED_BRANCH_METADATA_KEY]: branch,
|
|
});
|
|
}
|
|
|
|
getSelectedBranch(tabId: number): Branch | undefined {
|
|
return getMetadataHelper(
|
|
tabId,
|
|
SELECTED_BRANCH_METADATA_KEY,
|
|
BranchSchema.optional(),
|
|
this.#tabService.entityMap(),
|
|
);
|
|
}
|
|
|
|
setShoppingCartId(tabId: number, shoppingCartId: number | undefined) {
|
|
this.#tabService.patchTabMetadata(tabId, {
|
|
[CHECKOUT_SHOPPING_CART_ID_METADATA_KEY]: shoppingCartId,
|
|
});
|
|
}
|
|
|
|
getShoppingCartId(tabId: number): number | undefined {
|
|
return getMetadataHelper(
|
|
tabId,
|
|
CHECKOUT_SHOPPING_CART_ID_METADATA_KEY,
|
|
z.number().optional(),
|
|
this.#tabService.entityMap(),
|
|
);
|
|
}
|
|
|
|
setRewardShoppingCartId(tabId: number, shoppingCartId: number | undefined) {
|
|
this.#tabService.patchTabMetadata(tabId, {
|
|
[CHECKOUT_REWARD_SHOPPING_CART_ID_METADATA_KEY]: shoppingCartId,
|
|
});
|
|
}
|
|
|
|
getRewardShoppingCartId(tabId: number): number | undefined {
|
|
return getMetadataHelper(
|
|
tabId,
|
|
CHECKOUT_REWARD_SHOPPING_CART_ID_METADATA_KEY,
|
|
z.number().optional(),
|
|
this.#tabService.entityMap(),
|
|
);
|
|
}
|
|
|
|
setRewardSelectionPopupOpenedState(
|
|
tabId: number,
|
|
opened: boolean | undefined,
|
|
) {
|
|
this.#tabService.patchTabMetadata(tabId, {
|
|
[CHECKOUT_REWARD_SELECTION_POPUP_OPENED_STATE_KEY]: opened,
|
|
});
|
|
}
|
|
|
|
getRewardSelectionPopupOpenedState(tabId: number): boolean | undefined {
|
|
return getMetadataHelper(
|
|
tabId,
|
|
CHECKOUT_REWARD_SELECTION_POPUP_OPENED_STATE_KEY,
|
|
z.boolean().optional(),
|
|
this.#tabService.entityMap(),
|
|
);
|
|
}
|
|
}
|