PageSourceSearch

https://cross2map.com/chunk-VDAL7MSV.js

js cross2map.com collected 2026-09-24 14:42:21 UTC 5,721 bytes, 187 lines download raw bytes

1import {
2  ApiService
3} from "./chunk-J3VFWUMD.js";
4import {
5  Injectable,
6  inject,
7  map,
8  setClassMetadata,
9  ɵɵdefineInjectable
10} from "./chunk-SD5VU54W.js";
11
12// src/app/models/menu.model.ts
13var CURRENCIES = ["RON", "EUR", "MDL", "USD"];
14var MENU_ITEM_TYPES = [
15  "appetizer",
16  "starter",
17  "soup",
18  "salad",
19  "main_course",
20  "side_dish",
21  "grill",
22  "seafood",
23  "pasta",
24  "pizza",
25  "sandwich",
26  "burger",
27  "vegetarian",
28  "vegan",
29  "kids",
30  "dessert",
31  "beverage",
32  "hot_beverage",
33  "alcohol",
34  "cocktail",
35  "wine",
36  "beer",
37  "breakfast",
38  "brunch",
39  "snack",
40  "special"
41];
42function getMenuItemImages(item) {
43  if (!item)
44    return [];
45  return item.images || item.pictures || [];
46}
47function getArObjectPath(item) {
48  if (!item?.arObject)
49    return null;
50  if (typeof item.arObject === "string") {
51    return item.arObject;
52  }
53  return item.arObject.url || item.arObject.path || null;
54}
55function getMenuItemImageUrl(image) {
56  if (!image)
57    return void 0;
58  return image.url || image.path;
59}
60
61// src/app/features/dashboard/services/menu.service.ts
62var MenuService = class _MenuService {
63  api = inject(ApiService);
64  // ============================================
65  // MENU GROUPS
66  // ============================================
67  /**
68   * Get menu groups (types with count) for a restaurant
69   * GET /restaurant/{id}/menu
70   */
71  getMenuGroups(restaurantId) {
72    return this.api.get(`/restaurant/${restaurantId}/menu`).pipe(map((response) => response.groups || []));
73  }
74  /**
75   * Get menu items by type for a restaurant
76   * GET /restaurant/{id}/menu/{type}
77   */
78  getMenuItemsByType(restaurantId, type) {
79    return this.api.get(`/restaurant/${restaurantId}/menu/${type}`).pipe(map((response) => response.items || []));
80  }
81  // ============================================
82  // MENU ITEMS CRUD
83  // ============================================
84  /**
85   * Get all menu items for a restaurant
86   * GET /restaurant/{id}/menu-items
87   */
88  getAllMenuItems(restaurantId) {
89    return this.api.get(`/restaurant/${restaurantId}
89/menu-items`).pipe(map((response) => response.items || []));
90  }
91  /**
92   * Get a single menu item by ID
93   * GET /restaurant/{id}/menu-items/{menuItemId}
94   * API returns { menuItem: MenuItem }
95   */
96  getMenuItem(restaurantId, menuItemId) {
97    return this.api.get(`/restaurant/${restaurantId}/menu-items/${menuItemId}`).pipe(map((response) => response.menuItem));
98  }
99  /**
100   * Create a new menu item
101   * POST /restaurant/{id}/menu-items
102   * API returns { menuItem: MenuItem }
103   */
104  createMenuItem(restaurantId, data) {
105    return this.api.post(`/restaurant/${restaurantId}/menu-items`, data).pipe(map((response) => response.menuItem));
106  }
107  /**
108   * Update a menu item
109   * PATCH /restaurant/{id}/menu-items/{menuItemId}
110   * API returns { menuItem: MenuItem }
111   */
112  updateMenuItem(restaurantId, menuItemId, data) {
113    return this.api.patch(`/restaurant/${restaurantId}/menu-items/${menuItemId}`, data).pipe(map((response) => response.menuItem));
114  }
115  /**
116   * Delete a menu item
117   * DELETE /restaurant/{id}/menu-items/{menuItemId}
118   * Returns 204 No Content on success
119   */
120  deleteMenuItem(restaurantId, menuItemId) {
121    return this.api.delete(`/restaurant/${restaurantId}
121/menu-items/${menuItemId}`);
122  }
123  // ============================================
124  // MENU ITEM IMAGES (for later implementation)
125  // ============================================
126  /**
127   * Upload images to menu item
128   * POST /restaurant/{id}/menu-items/{menuItemId}/images
129   * API returns { changeRequest: ... } (creates a change request, not direct update)
130   */
131  uploadMenuItemImages(restaurantId, menuItemId, files) {
132    const formData = new FormData();
133    files.forEach((file) => formData.append("files", file));
134    return this.api.upload(`/restaurant/${restaurantId}/menu-items/${menuItemId}/images`, formData).pipe(map(() => void 0));
135  }
136  /**
137   * Delete image from menu item
138   * DELETE /restaurant/{id}/menu-items/{menuItemId}/images/{imageId}
139   * Returns 204 No Content on success
140   */
141  deleteMenuItemImage(restaurantId, menuItemId, imageId) {
142    return this.api.delete(`/restaurant/${restaurantId}/menu-items/${menuItemId}/images/${imageId}`);
143  }
144  // ============================================
145  // AR OBJECT
146  // ============================================
147  /**
148   * Upload AR object to menu item
149   * POST /restaurant/{id}/menu-items/{menuItemId}/ar-object
150   * API returns { changeRequest: ... } (creates a change request, not direct update)
151   */
152  uploadArObject(restaurantId, menuItemId, file) {
153    const formData = new FormData();
154    formData.append("file", file);
155    return this.api.upload(`/restaurant/${restaurantId}
155/menu-items/${menuItemId}/ar-object`, formData).pipe(map(() => void 0));
156  }
157  /**
158   * Delete AR object from menu item
159   * DELETE /restaurant/{id}/menu-items/{menuItemId}/ar-object
160   * Returns 204 No Content on success
161   */
162  deleteArObject(restaurantId, menuItemId) {
163    return this.api.delete(`/restaurant/${restaurantId}/menu-items/${menuItemId}/ar-object`);
164  }
165  static \u0275fac = function MenuService_Factory(__ngFactoryType__) {
166    return new (__ngFactoryType__ || _MenuService)();
167  };
168  static \u0275prov = /* @__PURE__ */ \u0275\u0275defineInjectable({ token: _MenuService, factory: _MenuService.\u0275fac, providedIn: "root" });
169};
170(() => {
171  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MenuService, [{
172    type: Injectable,
173    args: [{
174      providedIn: "root"
175    }]
176  }], null, null);
177})();
178
179export {
180  CURRENCIES,
181  MENU_ITEM_TYPES,
182  getMenuItemImages,
183  getArObjectPath,
184  getMenuItemImageUrl,
185  MenuService
186};
187//# sourceMappingURL=chunk-VDAL7MSV.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.