UNPKG

@bit-ui-libs/common

Version:
147 lines (117 loc) 5.03 kB
import { AxiosProgressEvent } from 'axios'; import { BaseService, BaseServiceOptions } from '../api'; import { PagedRequest, PagedResponse } from '../common/interfaces/pagination'; import { AddIngredientsRequest, Allergen, AllergenDietaryRequest, DeleteIngredientsRequest, Dietary, GetIngredientsRequest, GetMenuItemMapRequest, GetMenuItemRequest, GetMenuRequest, Ingredient, Menu, MenuExportRequest, MenuItem, MenuItemAllergen, MenuItemDietary, MenuItemMap, MenuItemMapRequest, MenuItemRequest, MenuRequest, MenuUpdateRequest, UpdateIngredientsRequest, UpdateMenuItemRequest, } from './menu.service.interfaces'; export class MenuService extends BaseService { protected menuApiUrl: string; protected menuItemApiUrl: string; constructor(opts: BaseServiceOptions) { super(opts); this.menuApiUrl = `${this.apiUrl}/assets/v1/menus`; this.menuItemApiUrl = `${this.apiUrl}/assets/v1/menu-items`; } getMenu(req: PagedRequest<GetMenuRequest>) { return this.get<PagedResponse<Menu>>(this.menuApiUrl, req); } addMenu(req: MenuRequest) { return this.post<Menu, MenuRequest>(this.menuApiUrl, req); } getMenuById(id: string) { return this.get<Menu>(`${this.menuApiUrl}/${id}`); } updateMenu(req: MenuUpdateRequest) { return this.put<Menu, MenuUpdateRequest>(`${this.menuApiUrl}/${req.id}`, req); } deleteMenu(id: string) { return this.patch<Menu, any>(`${this.menuApiUrl}/${id}/archive`, {}); } getMenuItems(req: PagedRequest<GetMenuItemRequest>) { return this.get<PagedResponse<MenuItem>>(this.menuItemApiUrl, req); } addMenuItems(req: MenuItemRequest) { return this.post<MenuItem, MenuItemRequest>(this.menuItemApiUrl, req); } getAllergen(req: PagedRequest<GetMenuItemRequest>) { return this.get<PagedResponse<Allergen>>(`${this.menuItemApiUrl}/allergens`, req); } getDietary(req: PagedRequest<GetMenuItemRequest>) { return this.get<PagedResponse<Dietary>>(`${this.menuItemApiUrl}/dietaries`, req); } getMenuItemsById(req: { id: string }) { return this.get<MenuItem>(`${this.menuItemApiUrl}/${req.id}`); } updateMenuItem(req: UpdateMenuItemRequest) { return this.put<MenuItem, UpdateMenuItemRequest>(`${this.menuItemApiUrl}/${req.id}`, req); } deleteMenuItem(req: { id: string }) { return this.patch<MenuItem, any>(`${this.menuItemApiUrl}/${req.id}/archive`, {}); } getMenuItemMap(req: PagedRequest<GetMenuItemMapRequest>) { return this.get<PagedResponse<MenuItemMap>>(`${this.menuItemApiUrl}/menu-item-map`, req); } addMenuItemMap(req: MenuItemMapRequest) { return this.post<MenuItemMap[], MenuItemMapRequest>(`${this.menuItemApiUrl}/menu-item-map`, req); } updateMenuItemMap(req: MenuItemMapRequest) { return this.put<MenuItemMap[], MenuItemMapRequest>(`${this.menuItemApiUrl}/menu-item-map`, req); } deleteMenuItemMap(req: { menuId: string; menuItemId: string }) { return this.delete<void>(`${this.menuItemApiUrl}/${req.menuId}/menu-item-map/${req.menuItemId}`); } getMenuItemAllergen(req: PagedRequest<{ menuItemId: string }>) { return this.get<PagedResponse<MenuItemAllergen>>(`${this.menuItemApiUrl}/menu-item-allergens`, req); } addMenuItemAllergen(req: AllergenDietaryRequest) { return this.post<MenuItemAllergen[], AllergenDietaryRequest>(`${this.menuItemApiUrl}/menu-item-allergens`, req); } updateMenuItemAllergen(req: AllergenDietaryRequest) { return this.put<MenuItemAllergen[], AllergenDietaryRequest>(`${this.menuItemApiUrl}/menu-item-allergens`, req); } getMenuItemDietary(req: PagedRequest<{ menuItemId: string }>) { return this.get<PagedResponse<MenuItemDietary>>(`${this.menuItemApiUrl}/menu-item-dietaries`, req); } addMenuItemDietary(req: AllergenDietaryRequest) { return this.post<MenuItemDietary[], AllergenDietaryRequest>(`${this.menuItemApiUrl}/menu-item-dietaries`, req); } updateMenuItemDietary(req: AllergenDietaryRequest) { return this.put<MenuItemDietary[], AllergenDietaryRequest>(`${this.menuItemApiUrl}/menu-item-dietaries`, req); } getMenuItemIngredients(req: GetIngredientsRequest) { return this.get<PagedResponse<Ingredient>>(`${this.menuItemApiUrl}/menu-item-ingredients`, req); } addMenuItemIngredients(req: AddIngredientsRequest) { return this.post<Ingredient[], AddIngredientsRequest>(`${this.menuItemApiUrl}/menu-item-ingredients`, req); } updateMenuItemIngredients(req: UpdateIngredientsRequest) { return this.put<Ingredient, UpdateIngredientsRequest>(`${this.menuItemApiUrl}/menu-item-ingredients`, req); } deleteMenuItemIngredients(req: DeleteIngredientsRequest) { return this.delete<void>(`${this.menuItemApiUrl}/${req.typeId}/menu-item-ingredients/${req.menuItemId}`); } menuExportById(req: MenuExportRequest, onProgress: (progressEvent: AxiosProgressEvent) => void) { return this.get<void, MenuExportRequest>(`${this.menuApiUrl}/export-menu`, req, { onDownloadProgress: onProgress }); } }