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.