@ozdao/prometheus-framework 0.2.48 → 0.2.50
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/auth.server.js +27 -25
- package/dist/auth.server.mjs +27 -25
- package/dist/community.server.js +1 -1
- package/dist/community.server.mjs +1 -1
- package/dist/events.server.js +1 -1
- package/dist/events.server.mjs +1 -1
- package/dist/files.server.js +1 -1
- package/dist/files.server.mjs +1 -1
- package/dist/gallery.server.js +1 -1
- package/dist/gallery.server.mjs +1 -1
- package/dist/index-3981e903.mjs +217 -0
- package/dist/index-4eecfdb9.js +216 -0
- package/dist/main-203b36b6.mjs +13628 -0
- package/dist/main-_b1_i8mt.mjs +13606 -0
- package/dist/main-a7ae4ce5.js +91 -0
- package/dist/main-uiQFxEks.js +91 -0
- package/dist/middlewares.server.js +1 -1
- package/dist/middlewares.server.mjs +1 -1
- package/dist/node_modules/vue-select/dist/vue-select.es.cjs +1 -3
- package/dist/node_modules/vue-select/dist/vue-select.es.js +49 -645
- package/dist/organizations.server.js +13 -27
- package/dist/organizations.server.mjs +13 -27
- package/dist/products.server.js +95 -15
- package/dist/products.server.mjs +95 -15
- package/dist/prometheus-framework/src/components/Button/Button.vue.cjs +1 -1
- package/dist/prometheus-framework/src/components/Button/Button.vue.js +2 -225
- package/dist/prometheus-framework/src/components/Button/Button.vue2.cjs +1 -1
- package/dist/prometheus-framework/src/components/Button/Button.vue2.js +225 -2
- package/dist/prometheus-framework/src/components/Checkbox/Checkbox.vue.cjs +1 -1
- package/dist/prometheus-framework/src/components/Checkbox/Checkbox.vue.js +61 -2
- package/dist/prometheus-framework/src/components/Checkbox/Checkbox.vue2.cjs +1 -1
- package/dist/prometheus-framework/src/components/Checkbox/Checkbox.vue2.js +2 -61
- package/dist/prometheus-framework/src/components/Field/Field.vue.cjs +1 -1
- package/dist/prometheus-framework/src/components/Field/Field.vue.js +2 -76
- package/dist/prometheus-framework/src/components/Field/Field.vue2.cjs +1 -1
- package/dist/prometheus-framework/src/components/Field/Field.vue2.js +76 -2
- package/dist/prometheus-framework/src/components/FieldBig/FieldBig.vue.cjs +1 -1
- package/dist/prometheus-framework/src/components/FieldBig/FieldBig.vue.js +1 -1
- package/dist/prometheus-framework/src/components/SelectMulti/SelectMulti.vue.cjs +1 -1
- package/dist/prometheus-framework/src/components/SelectMulti/SelectMulti.vue.js +6 -6
- package/dist/prometheus-framework/src/components/Tab/Tab.vue.cjs +1 -1
- package/dist/prometheus-framework/src/components/Tab/Tab.vue.js +2 -44
- package/dist/prometheus-framework/src/components/Tab/Tab.vue2.cjs +1 -1
- package/dist/prometheus-framework/src/components/Tab/Tab.vue2.js +44 -2
- package/dist/prometheus-framework/src/modules/auth/components/layouts/Auth.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/auth/components/layouts/Auth.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/auth/components/pages/EnterCode.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/auth/components/pages/EnterCode.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/auth/components/pages/EnterPassword.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/auth/components/pages/EnterPassword.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/auth/components/pages/Invite.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/auth/components/pages/Invite.vue.js +44 -32
- package/dist/prometheus-framework/src/modules/auth/components/pages/ResetPassword.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/auth/components/pages/ResetPassword.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/auth/components/pages/SignIn.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/auth/components/pages/SignIn.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/auth/components/pages/SignUp.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/auth/components/pages/SignUp.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/auth/store/auth.cjs +1 -1
- package/dist/prometheus-framework/src/modules/auth/store/auth.js +45 -44
- package/dist/prometheus-framework/src/modules/auth/store/invites.cjs +1 -1
- package/dist/prometheus-framework/src/modules/auth/store/invites.js +5 -5
- package/dist/prometheus-framework/src/modules/backoffice/components/pages/Dashboard.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/backoffice/components/pages/Dashboard.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/community/components/pages/CreateBlogPost.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/constructor/components/elements/Embed.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/constructor/components/elements/Embed.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/events/components/elements/ButtonJoin.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/events/components/pages/EditEvent.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/events/components/pages/EditEvent.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/events/components/pages/Events.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/events/components/pages/Events.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/gallery/components/sections/GalleryWithCategories.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/gallery/components/sections/GalleryWithCategories.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/globals/components/blocks/CardHeader.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/globals/components/blocks/CardHeader.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/globals/store/globals.cjs +1 -1
- package/dist/prometheus-framework/src/modules/globals/store/globals.js +22 -21
- package/dist/prometheus-framework/src/modules/legal/components/pages/Legal.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/legal/components/pages/Legal.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/mobile/components/Menu/Menu.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/mobile/components/Menu/Menu.vue.js +11 -2
- package/dist/prometheus-framework/src/modules/mobile/components/Menu/Menu.vue2.cjs +1 -1
- package/dist/prometheus-framework/src/modules/mobile/components/Menu/Menu.vue2.js +2 -11
- package/dist/prometheus-framework/src/modules/orders/components/pages/EditOrder.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/orders/components/pages/EditOrder.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/orders/components/pages/Orders.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/orders/components/pages/Orders.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/orders/components/sections/FormOrderDetails.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/orders/components/sections/FormOrderDetails.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/blocks/CardDepartment.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/blocks/CardDepartment.vue.js +17 -17
- package/dist/prometheus-framework/src/modules/organizations/components/blocks/DepartmentMemberModify.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/blocks/DepartmentMemberModify.vue.js +49 -42
- package/dist/prometheus-framework/src/modules/organizations/components/blocks/User.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/blocks/User.vue.js +47 -15
- package/dist/prometheus-framework/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Department.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Department.vue.js +38 -37
- package/dist/prometheus-framework/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/DepartmentEdit.vue.js +249 -61
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Members.vue.js +78 -45
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Organization.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Organization.vue.js +161 -86
- package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/OrganizationEdit.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/sections/Documents.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/sections/MembersAdd.vue.js +52 -54
- package/dist/prometheus-framework/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/components/sections/Organizations.vue.js +20 -26
- package/dist/prometheus-framework/src/modules/organizations/organizations.client.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/organizations.client.js +40 -46
- package/dist/prometheus-framework/src/modules/organizations/store/departments.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/store/departments.js +34 -30
- package/dist/prometheus-framework/src/modules/organizations/store/memberships.cjs +1 -1
- package/dist/prometheus-framework/src/modules/organizations/store/memberships.js +30 -28
- package/dist/prometheus-framework/src/modules/products/components/blocks/CardPosition.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/blocks/CardPosition.vue.js +18 -18
- package/dist/prometheus-framework/src/modules/products/components/blocks/LeftoverPositions.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/blocks/LeftoverPositions.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/products/components/blocks/ListPositions.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/blocks/ListPositions.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/products/components/pages/EditLeftover.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/pages/EditLeftover.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/products/components/pages/Leftovers.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/pages/Leftovers.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/products/components/pages/Product.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/pages/Product.vue.js +33 -28
- package/dist/prometheus-framework/src/modules/products/components/pages/ProductEdit.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/pages/ProductEdit.vue.js +123 -113
- package/dist/prometheus-framework/src/modules/products/components/pages/ProductsBackoffice.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/pages/ProductsBackoffice.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/products/components/sections/EditModifications.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/sections/EditModifications.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/products/components/sections/EditProductInfo.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/sections/EditProductInfo.vue.js +2 -2
- package/dist/prometheus-framework/src/modules/products/components/sections/FilterProducts.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/sections/FilterProducts.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/products/components/sections/SectionProduct.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/products/store/products.cjs +1 -1
- package/dist/prometheus-framework/src/modules/products/store/products.js +1 -1
- package/dist/prometheus-framework/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/reports/components/sections/FormReport.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/users/components/pages/Profile.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/users/components/pages/Profile.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/users/components/pages/ProfileBlogposts.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/users/components/pages/ProfileBlogposts.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/users/components/pages/ProfileEdit.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/users/components/pages/ProfileEdit.vue.js +3 -3
- package/dist/prometheus-framework/src/modules/users/components/pages/ProfileEvents.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/users/components/pages/ProfileEvents.vue.js +1 -1
- package/dist/prometheus-framework/src/modules/wallet/components/pages/Wallet.vue.cjs +1 -1
- package/dist/prometheus-framework/src/modules/wallet/components/pages/Wallet.vue.js +1 -1
- package/dist/prometheus-framework.cjs.js +1 -1
- package/dist/prometheus-framework.es.js +1 -1
- package/dist/reports.server.js +1 -1
- package/dist/reports.server.mjs +1 -1
- package/dist/style.css +1 -1
- package/dist/web-7p76PGnO.mjs +55 -0
- package/dist/web-c63f0ecc.js +1 -0
- package/dist/web-d8173758.mjs +55 -0
- package/dist/web-dn8vgptQ.js +1 -0
- package/package.json +1 -1
- package/src/components/SelectMulti/SelectMulti.vue +1 -1
- package/src/modules/auth/components/pages/Invite.vue +17 -6
- package/src/modules/auth/controllers/auth.controller.js +24 -16
- package/src/modules/auth/controllers/invites.controller.js +17 -8
- package/src/modules/auth/store/auth.js +8 -1
- package/src/modules/auth/store/invites.js +1 -0
- package/src/modules/globals/store/globals.js +5 -1
- package/src/modules/landing/components/blocks/MapBlock.vue +37 -0
- package/src/modules/landing/components/pages/404.vue +3 -0
- package/src/modules/landing/components/pages/Governance.vue +155 -0
- package/src/modules/landing/components/pages/Home.vue +52 -0
- package/src/modules/landing/components/pages/Hotel.vue +54 -0
- package/src/modules/landing/components/pages/Page.vue +184 -0
- package/src/modules/landing/components/sections/AboutSection.vue +69 -0
- package/src/modules/landing/components/sections/Examples.vue +90 -0
- package/src/modules/landing/components/sections/FeatureSection.vue +80 -0
- package/src/modules/landing/components/sections/GiftSection.vue +63 -0
- package/src/modules/landing/components/sections/HeroSection.vue +74 -0
- package/src/modules/landing/components/sections/HowItWorksSection.vue +88 -0
- package/src/modules/landing/components/sections/HowToBuyWDR.vue +131 -0
- package/src/modules/landing/components/sections/InstagramSection.vue +181 -0
- package/src/modules/landing/components/sections/MapSection.vue +91 -0
- package/src/modules/landing/components/sections/SectionsSection.vue +69 -0
- package/src/modules/landing/components/sections/SliderFeatures.vue +131 -0
- package/src/modules/landing/components/sections/WhatIsWDRSection.vue +116 -0
- package/src/modules/landing/router/landing.js +34 -0
- package/src/modules/middlewares/server/verifySignUp.js +4 -0
- package/src/modules/organizations/components/blocks/CardDepartment.vue +3 -3
- package/src/modules/organizations/components/blocks/DepartmentMemberModify.vue +52 -44
- package/src/modules/organizations/components/blocks/User.vue +42 -10
- package/src/modules/organizations/components/pages/Department.vue +7 -6
- package/src/modules/organizations/components/pages/DepartmentEdit.vue +110 -134
- package/src/modules/organizations/components/pages/Members.vue +85 -26
- package/src/modules/organizations/components/pages/Organization.vue +60 -4
- package/src/modules/organizations/components/sections/MembersAdd.vue +27 -34
- package/src/modules/organizations/components/sections/Organizations.vue +0 -1
- package/src/modules/organizations/controllers/memberships.controller.js +6 -2
- package/src/modules/organizations/controllers/organizations.controller.js +1 -1
- package/src/modules/organizations/models/department.model.js +0 -19
- package/src/modules/organizations/models/membership.model.js +4 -0
- package/src/modules/organizations/organizations.client.js +1 -6
- package/src/modules/organizations/store/departments.js +48 -44
- package/src/modules/organizations/store/memberships.js +11 -3
- package/src/modules/products/components/blocks/CardPosition.vue +2 -2
- package/src/modules/products/components/pages/Product.vue +6 -1
- package/src/modules/products/components/pages/ProductEdit.vue +48 -28
- package/src/modules/products/controllers/products.controller.js +87 -24
- package/src/modules/products/models/product.model.js +16 -1
- package/src/modules/products/store/products.js +1 -1
- package/src/modules/users/components/pages/ProfileOrganizations.vue +41 -7
- package/src/modules/organizations/components/sections/FeedDepartments.vue +0 -64
- package/src/modules/organizations/components/sections/MembersList.vue +0 -85
- package/src/modules/organizations/store/invites.js +0 -93
@@ -163,44 +163,51 @@
|
|
163
163
|
:product="products.state.current"
|
164
164
|
/> -->
|
165
165
|
|
166
|
-
<
|
167
|
-
|
168
|
-
|
169
|
-
|
166
|
+
<Popup
|
167
|
+
title="Add ingredient"
|
168
|
+
@close-popup="closeIngredientPopup"
|
169
|
+
:isPopupOpen="isOpenIngredientPopup"
|
170
|
+
class="bg-white pd-big radius-big"
|
171
|
+
>
|
170
172
|
<CardPosition
|
171
173
|
@add="(item) => globals.actions.add(
|
172
|
-
products.state.current.
|
174
|
+
products.state.current.ingredients,
|
173
175
|
item
|
174
176
|
)"
|
175
177
|
:products="Products"
|
178
|
+
class="flex-column"
|
176
179
|
/>
|
180
|
+
</Popup>
|
177
181
|
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
+
<Block
|
183
|
+
title="Ingredients"
|
184
|
+
placeholder="No positions added yet"
|
185
|
+
:actions="[{
|
186
|
+
label: '+',
|
187
|
+
function: () => openIngredientPopup()
|
188
|
+
}]"
|
189
|
+
>
|
190
|
+
<div class="cols-1 gap-thin">
|
182
191
|
<CardPosition
|
183
|
-
v-for="(product, index) in products.state.current.
|
192
|
+
v-for="(product, index) in products.state.current.ingredients"
|
184
193
|
:key="product._id"
|
185
194
|
:product="product"
|
186
|
-
:array="products.state.current.
|
195
|
+
:array="products.state.current.ingredients"
|
187
196
|
:products="Products"
|
188
|
-
@add="(item) =>
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
index
|
201
|
-
)"
|
197
|
+
@add="(item) => {
|
198
|
+
globals.actions.add(products.state.current.ingredients, item);
|
199
|
+
closeIngredientPopup();
|
200
|
+
}"
|
201
|
+
@update="(item) => {
|
202
|
+
globals.actions.update(products.state.current.ingredients, item, index);
|
203
|
+
closeIngredientPopup();
|
204
|
+
}"
|
205
|
+
@delete="(item) => {
|
206
|
+
globals.actions.delete(products.state.current.ingredients, item, index);
|
207
|
+
closeIngredientPopup();
|
208
|
+
}"
|
202
209
|
/>
|
203
|
-
</
|
210
|
+
</div>
|
204
211
|
</Block>
|
205
212
|
|
206
213
|
</div>
|
@@ -221,6 +228,7 @@
|
|
221
228
|
import Checkbox from "@pf/src/components/Checkbox/Checkbox.vue";
|
222
229
|
import Button from "@pf/src/components/Button/Button.vue";
|
223
230
|
import Popup from "@pf/src/components/Popup/Popup.vue";
|
231
|
+
|
224
232
|
import EditImages from '@pf/src/components/EditImages/EditImages.vue';
|
225
233
|
|
226
234
|
import IconDelete from '@pf/src/modules/icons/navigation/IconDelete.vue';
|
@@ -240,6 +248,18 @@
|
|
240
248
|
const router = useRouter()
|
241
249
|
|
242
250
|
const Products = ref(products.state.all);
|
251
|
+
const isOpenIngredientPopup = ref(false);
|
252
|
+
|
253
|
+
|
254
|
+
function openIngredientPopup(member) {
|
255
|
+
isOpenIngredientPopup.value = true;
|
256
|
+
// if (typeof member === "number") selectedMember.value = member;
|
257
|
+
}
|
258
|
+
|
259
|
+
function closeIngredientPopup() {
|
260
|
+
isOpenIngredientPopup.value = false;
|
261
|
+
// selectedMember.value = null;
|
262
|
+
}
|
243
263
|
|
244
264
|
onMounted(async() => {
|
245
265
|
|
@@ -263,8 +283,8 @@
|
|
263
283
|
// await commit('products/clearProductState')
|
264
284
|
}
|
265
285
|
|
266
|
-
if (!products.state.current.
|
267
|
-
products.state.current.
|
286
|
+
if (!products.state.current.ingredients) {
|
287
|
+
products.state.current.ingredients = []
|
268
288
|
}
|
269
289
|
|
270
290
|
})
|
@@ -119,7 +119,7 @@ const controllerFactory = (db) => {
|
|
119
119
|
const Update = async (req, res) => {
|
120
120
|
try {
|
121
121
|
const { _id } = req.params;
|
122
|
-
console.log(
|
122
|
+
console.log(req.body.ingredients);
|
123
123
|
|
124
124
|
const updatedProduct = await Product.findOneAndUpdate(
|
125
125
|
{ _id },
|
@@ -134,7 +134,8 @@ const controllerFactory = (db) => {
|
|
134
134
|
information: req.body.information,
|
135
135
|
localization: req.body.localization,
|
136
136
|
quantity: req.body.quantity,
|
137
|
-
quantityDiscount: req.body.quantityDiscount
|
137
|
+
quantityDiscount: req.body.quantityDiscount,
|
138
|
+
ingredients: req.body.ingredients
|
138
139
|
},
|
139
140
|
{ new: true }
|
140
141
|
);
|
@@ -213,18 +214,18 @@ const controllerFactory = (db) => {
|
|
213
214
|
"withIngredients": [
|
214
215
|
{
|
215
216
|
$match: {
|
216
|
-
|
217
|
+
ingredients: { $exists: true, $not: {$size: 0} } // Продукты с ингредиентами
|
217
218
|
}
|
218
219
|
},
|
219
220
|
{
|
220
221
|
$lookup: {
|
221
222
|
from: "products",
|
222
|
-
localField: "
|
223
|
+
localField: "ingredients",
|
223
224
|
foreignField: "_id",
|
224
225
|
as: "ingredientDetails"
|
225
226
|
}
|
226
227
|
},
|
227
|
-
{ $unwind: "$ingredientDetails" },
|
228
|
+
// { $unwind: "$ingredientDetails" },
|
228
229
|
{
|
229
230
|
$lookup: {
|
230
231
|
from: "leftovers",
|
@@ -259,8 +260,8 @@ const controllerFactory = (db) => {
|
|
259
260
|
{
|
260
261
|
$match: {
|
261
262
|
$or: [
|
262
|
-
{
|
263
|
-
{
|
263
|
+
{ ingredients: { $exists: false } }, // Продукты без ингредиентов
|
264
|
+
{ ingredients: { $size: 0 } }
|
264
265
|
]
|
265
266
|
}
|
266
267
|
},
|
@@ -403,22 +404,29 @@ const controllerFactory = (db) => {
|
|
403
404
|
// Get product
|
404
405
|
const getProduct = async (req, res) => {
|
405
406
|
try {
|
406
|
-
|
407
|
-
{
|
408
|
-
|
407
|
+
const product = await Product.aggregate([
|
408
|
+
{
|
409
|
+
$match: { "_id": new ObjectId(req.params._id) }
|
409
410
|
},
|
410
411
|
{
|
411
412
|
$lookup: {
|
412
413
|
from: "leftovers",
|
413
|
-
let: { productId: "$_id",
|
414
|
+
let: { productId: "$_id", ingredientsIds: "$ingredients._id" },
|
414
415
|
pipeline: [
|
415
416
|
{
|
416
417
|
$unwind: "$positions"
|
417
418
|
},
|
418
|
-
{
|
419
|
-
|
419
|
+
{
|
420
|
+
$match: {
|
421
|
+
$expr: {
|
422
|
+
$or: [
|
423
|
+
{ $eq: ["$positions._id", "$$productId"] },
|
424
|
+
{ $in: ["$positions._id", { $ifNull: ["$$ingredientsIds", []] }] } // Исправлено
|
425
|
+
]
|
426
|
+
}
|
427
|
+
}
|
420
428
|
},
|
421
|
-
{
|
429
|
+
{
|
422
430
|
"$addFields": {
|
423
431
|
"positions.quantity": {
|
424
432
|
$cond: {
|
@@ -429,7 +437,7 @@ const controllerFactory = (db) => {
|
|
429
437
|
}
|
430
438
|
}
|
431
439
|
},
|
432
|
-
{
|
440
|
+
{
|
433
441
|
"$project": {
|
434
442
|
_id: "$positions._id",
|
435
443
|
quantity: "$positions.quantity",
|
@@ -437,19 +445,74 @@ const controllerFactory = (db) => {
|
|
437
445
|
}
|
438
446
|
}
|
439
447
|
],
|
440
|
-
as: "
|
448
|
+
as: "leftovers"
|
449
|
+
}
|
450
|
+
},
|
451
|
+
{
|
452
|
+
$addFields: {
|
453
|
+
ingredientsQuantities: {
|
454
|
+
$cond: {
|
455
|
+
if: { $isArray: "$ingredients" },
|
456
|
+
then: {
|
457
|
+
$map: {
|
458
|
+
input: "$ingredients",
|
459
|
+
as: "ingredient",
|
460
|
+
in: {
|
461
|
+
$let: {
|
462
|
+
vars: {
|
463
|
+
ingredientId: "$$ingredient._id",
|
464
|
+
ingredientQuantity: { $ifNull: ["$$ingredient.quantity", 0] }
|
465
|
+
},
|
466
|
+
in: {
|
467
|
+
$divide: [
|
468
|
+
{
|
469
|
+
$sum: {
|
470
|
+
$map: {
|
471
|
+
input: "$leftovers",
|
472
|
+
as: "leftover",
|
473
|
+
in: {
|
474
|
+
$cond: {
|
475
|
+
if: { $eq: ["$$leftover._id", "$$ingredientId"] },
|
476
|
+
then: "$$leftover.quantity",
|
477
|
+
else: 0
|
478
|
+
}
|
479
|
+
}
|
480
|
+
}
|
481
|
+
}
|
482
|
+
},
|
483
|
+
{
|
484
|
+
$cond: {
|
485
|
+
if: { $eq: ["$$ingredientQuantity", 0] },
|
486
|
+
then: 1,
|
487
|
+
else: "$$ingredientQuantity"
|
488
|
+
}
|
489
|
+
}
|
490
|
+
]
|
491
|
+
}
|
492
|
+
}
|
493
|
+
}
|
494
|
+
}
|
495
|
+
},
|
496
|
+
else: []
|
497
|
+
}
|
498
|
+
}
|
441
499
|
}
|
442
500
|
},
|
443
|
-
{
|
444
|
-
$set: {
|
501
|
+
{
|
502
|
+
$set: {
|
445
503
|
quantity: {
|
446
|
-
$
|
447
|
-
|
448
|
-
|
504
|
+
$cond: {
|
505
|
+
if: { $gt: [{ $size: { $ifNull: ["$ingredients", []] } }, 0] }, // Снова проверяем, не пустой ли массив ингредиентов
|
506
|
+
then: { $floor: { $min: "$ingredientsQuantities" } },
|
507
|
+
else: { $sum: "$leftovers.quantity" } // Просто суммируем quantity из leftovers, если ингредиентов нет
|
508
|
+
}
|
509
|
+
}
|
510
|
+
}
|
449
511
|
},
|
512
|
+
{ $unset: ["leftovers", "ingredientsQuantities"] }
|
513
|
+
]);
|
450
514
|
|
451
|
-
|
452
|
-
]);
|
515
|
+
console.log(product)
|
453
516
|
|
454
517
|
if (!product || product.length < 1) {
|
455
518
|
return res.status(404).send({ message: "Product not found." });
|
@@ -461,7 +524,7 @@ const controllerFactory = (db) => {
|
|
461
524
|
{ new: true }
|
462
525
|
);
|
463
526
|
|
464
|
-
console.log('Popularity updated:', updatedProduct);
|
527
|
+
// console.log('Popularity updated:', updatedProduct);
|
465
528
|
|
466
529
|
res.status(200).send(product);
|
467
530
|
} catch (err) {
|
@@ -18,7 +18,22 @@ module.exports = (mongoose) => {
|
|
18
18
|
images: {type: Array},
|
19
19
|
popularity: {type: Number},
|
20
20
|
localization: {type: Array},
|
21
|
-
ingredients: {
|
21
|
+
ingredients: [{
|
22
|
+
_id: {
|
23
|
+
type: mongoose.Schema.Types.ObjectId,
|
24
|
+
ref: 'Product',
|
25
|
+
},
|
26
|
+
price: {
|
27
|
+
type: Number,
|
28
|
+
required: true,
|
29
|
+
min: [0, 'Price cannot be less than 0']
|
30
|
+
},
|
31
|
+
quantity: {
|
32
|
+
type: Number,
|
33
|
+
required: true,
|
34
|
+
min: [1, 'Quantity cannot be less than 1']
|
35
|
+
},
|
36
|
+
}],
|
22
37
|
information: [{
|
23
38
|
name: {type: String},
|
24
39
|
value: {type: String}
|
@@ -22,20 +22,49 @@
|
|
22
22
|
/>
|
23
23
|
|
24
24
|
<transition name="slide-fade">
|
25
|
-
<Feed
|
25
|
+
<Feed
|
26
26
|
v-if="tabOrganization === 'member'"
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
:states="{
|
28
|
+
empty: {
|
29
|
+
title: 'No Organization Found',
|
30
|
+
description: 'Currently, there are no organization available.'
|
31
|
+
}
|
32
|
+
}"
|
33
|
+
:store="{
|
34
|
+
read: (options) => organizations.actions.read(options),
|
35
|
+
state: organizations.state
|
36
|
+
}"
|
37
|
+
:options="{
|
38
|
+
user: auth.state.user._id,
|
39
|
+
member: auth.state.user._id,
|
40
|
+
limit: 10
|
41
|
+
}"
|
42
|
+
v-slot="{
|
43
|
+
items
|
44
|
+
}"
|
45
|
+
>
|
46
|
+
<CardOrganization
|
47
|
+
v-for="organization in items"
|
48
|
+
:key="organization._id"
|
49
|
+
:organization="organization"
|
50
|
+
:user="auth.state.user"
|
51
|
+
:showProducts="false"
|
52
|
+
:showRating="false"
|
53
|
+
:showFeatured="false"
|
54
|
+
:showFollowers="false"
|
55
|
+
@updateMembership="handleMembershipUpdate"
|
56
|
+
class="mn-b-thin w-100 pd-0 bg-white radius-big o-hidden"
|
57
|
+
/>
|
58
|
+
</Feed>
|
30
59
|
</transition>
|
31
60
|
|
32
|
-
<transition name="slide-fade">
|
61
|
+
<!-- <transition name="slide-fade">
|
33
62
|
<Feed
|
34
63
|
v-if="tabOrganization === 'follower'"
|
35
64
|
:user="auth.state.user._id"
|
36
65
|
:subscriber="route.params._id"
|
37
66
|
/>
|
38
|
-
</transition>
|
67
|
+
</transition> -->
|
39
68
|
</div>
|
40
69
|
</template>
|
41
70
|
|
@@ -44,9 +73,14 @@
|
|
44
73
|
import { useRoute, useRouter } from 'vue-router'
|
45
74
|
// Components
|
46
75
|
import Tab from '@pf/src/components/Tab/Tab.vue'
|
47
|
-
import Feed from '@pf/src/
|
76
|
+
import Feed from '@pf/src/components/Feed/Feed.vue'
|
77
|
+
|
78
|
+
import CardOrganization from '@pf/src/modules/organizations/components/blocks/CardOrganization.vue'
|
79
|
+
|
80
|
+
// import Feed from '@pf/src/modules/organizations/components/sections/Feed.vue';
|
48
81
|
|
49
82
|
import * as auth from '@pf/src/modules/auth/store/auth';
|
83
|
+
import * as organizations from '@pf/src/modules/organizations/store/organizations'
|
50
84
|
// Accessing router
|
51
85
|
const route = useRoute()
|
52
86
|
const router = useRouter()
|
@@ -1,64 +0,0 @@
|
|
1
|
-
<template>
|
2
|
-
<transition name="slide-fade">
|
3
|
-
<div>
|
4
|
-
<EmptyState
|
5
|
-
v-if="FirstLevelDepartments.length < 1"
|
6
|
-
title="You don't have any spots yet."
|
7
|
-
description="Add spots to your hub."
|
8
|
-
action="Add spot"
|
9
|
-
:callback="() => $router.push(`/organizations/${props.organization._id}/departments/create`)"
|
10
|
-
/>
|
11
|
-
|
12
|
-
<div>
|
13
|
-
<CardDepartment
|
14
|
-
v-for="(department, index) in FirstLevelDepartments"
|
15
|
-
:key="index"
|
16
|
-
:department="department"
|
17
|
-
:organization="organization"
|
18
|
-
class="radius-big bg-grey mn-b-thin"
|
19
|
-
/>
|
20
|
-
<button
|
21
|
-
v-if="FirstLevelDepartments.length > 0 && auth.state.user._id === organization.owner"
|
22
|
-
@click="$router.push(`/organizations/${props.organization._id}/departments/create`)"
|
23
|
-
class="mn-b-thin button w-100"
|
24
|
-
>
|
25
|
-
Add spot
|
26
|
-
</button>
|
27
|
-
</div>
|
28
|
-
</div>
|
29
|
-
</transition>
|
30
|
-
</template>
|
31
|
-
|
32
|
-
<script setup>
|
33
|
-
import { ref, computed } from 'vue';
|
34
|
-
import Tab from '@pf/src/components/Tab/Tab.vue';
|
35
|
-
import EmptyState from '@pf/src/modules/organizations/components/blocks/EmptyState.vue';
|
36
|
-
import CardDepartment from '@pf/src/modules/organizations/components/blocks/CardDepartment.vue';
|
37
|
-
import { state as departmentState, actions as departmentActions } from '@pf/src/modules/organizations/store/departments';
|
38
|
-
import * as auth from '@pf/src/modules/auth/store/auth'
|
39
|
-
|
40
|
-
const props = defineProps({
|
41
|
-
organization: Object,
|
42
|
-
units: Array,
|
43
|
-
memberships: Array
|
44
|
-
});
|
45
|
-
|
46
|
-
const tabStructure = ref('departments');
|
47
|
-
|
48
|
-
await departmentActions.read(props.organization._id);
|
49
|
-
|
50
|
-
const FirstLevelDepartments = computed(() => {
|
51
|
-
const departments = departmentState.departments;
|
52
|
-
|
53
|
-
const subdepartmentIds = departments.flatMap(department =>
|
54
|
-
department.subdepartments.map(subdepartment => subdepartment._id)
|
55
|
-
);
|
56
|
-
|
57
|
-
return departments.filter(department =>
|
58
|
-
!subdepartmentIds.includes(department._id)
|
59
|
-
);
|
60
|
-
});
|
61
|
-
</script>
|
62
|
-
|
63
|
-
<style scoped>
|
64
|
-
</style>
|
@@ -1,85 +0,0 @@
|
|
1
|
-
<template>
|
2
|
-
<section class="mn-b-big radius-medium bg-white">
|
3
|
-
<Tab
|
4
|
-
v-model:selected="tabMemberships"
|
5
|
-
class="br-grey br-b br-solid radius-small"
|
6
|
-
:tabs="[
|
7
|
-
{ name: 'Участники', value: 'members' },
|
8
|
-
{ name: 'Приглашения', value: 'invites' },
|
9
|
-
]"
|
10
|
-
/>
|
11
|
-
<!-- Members -->
|
12
|
-
<div
|
13
|
-
v-if="tabMemberships === 'members'"
|
14
|
-
class="pd-semi"
|
15
|
-
>
|
16
|
-
<div
|
17
|
-
v-for="(member, index) in memberships"
|
18
|
-
class="br-grey br-1px br-solid radius-small flex-nowrap flex-v-center flex pd-medium"
|
19
|
-
>
|
20
|
-
<span class="w-100 mn-r-small">{{member.user.email}} {{member.user.phone}}</span>
|
21
|
-
<span class="t-transp">{{member.position}}</span>
|
22
|
-
|
23
|
-
<div v-if="member.position !== 'Основатель'" class="mn-l-medium flex-v-center flex">
|
24
|
-
<button @click="removeMember(index,member)" class="button-small button">×</button>
|
25
|
-
</div>
|
26
|
-
|
27
|
-
</div>
|
28
|
-
</div>
|
29
|
-
<!-- Invites -->
|
30
|
-
<div
|
31
|
-
v-if="tabMemberships === 'invites'"
|
32
|
-
class="pd-semi"
|
33
|
-
>
|
34
|
-
<span v-if="invites.length < 1">В организации нет приглашений</span>
|
35
|
-
<div
|
36
|
-
v-for="(invite, index) in invites"
|
37
|
-
class="br-grey br-1px br-solid radius-small mn-b-thin flex-nowrap flex-v-center flex pd-medium"
|
38
|
-
>
|
39
|
-
|
40
|
-
<span class="w-100 mn-r-small">{{invite.invitedEmail}} {{invite.invitedPhone}}</span>
|
41
|
-
<span class="t-transp">{{invite.status}}</span>
|
42
|
-
|
43
|
-
<div class="mn-l-medium flex-v-center flex">
|
44
|
-
<button @click="removeInvite(index,invite)" class="button-small button">×</button>
|
45
|
-
</div>
|
46
|
-
|
47
|
-
</div>
|
48
|
-
</div>
|
49
|
-
|
50
|
-
|
51
|
-
</section>
|
52
|
-
</template>
|
53
|
-
|
54
|
-
<script setup>
|
55
|
-
import { ref } from "vue";
|
56
|
-
// Import components
|
57
|
-
// Global
|
58
|
-
import Tab from '@pf/src/components/Tab/Tab.vue'
|
59
|
-
// Define props
|
60
|
-
const props = defineProps({
|
61
|
-
organization: Object,
|
62
|
-
memberships: Array,
|
63
|
-
invites: Array,
|
64
|
-
});
|
65
|
-
|
66
|
-
const emits = defineEmits([['removeMember','removeInvite']])
|
67
|
-
// Define emits
|
68
|
-
|
69
|
-
// Accesing state
|
70
|
-
const tabMemberships = ref('members')
|
71
|
-
|
72
|
-
function removeMember(index,member) {
|
73
|
-
props.memberships.splice(index, 1);
|
74
|
-
emits('removeMember', member)
|
75
|
-
}
|
76
|
-
|
77
|
-
function removeInvite(index,invite) {
|
78
|
-
props.invites.splice(index, 1);
|
79
|
-
emits('removeInvite', invite)
|
80
|
-
}
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
</script>
|
@@ -1,93 +0,0 @@
|
|
1
|
-
// Dependencies
|
2
|
-
import axios from 'axios';
|
3
|
-
import Cookies from 'js-cookie'
|
4
|
-
// Vue modules
|
5
|
-
import { reactive, watch } from "vue";
|
6
|
-
// Globals
|
7
|
-
import { setError } from '@pf/src/modules/globals/store/globals'
|
8
|
-
// State
|
9
|
-
import * as auth from '@pf/src/modules/auth/store/auth'
|
10
|
-
// Setup Axios
|
11
|
-
const $axios = axios.create({baseURL: process.env.API_URL, withCredentials: true})
|
12
|
-
// Setup Cookies
|
13
|
-
$axios.defaults.withCredentials = true
|
14
|
-
// State
|
15
|
-
const state = reactive({
|
16
|
-
invites: [],
|
17
|
-
invite: null,
|
18
|
-
error: null,
|
19
|
-
});
|
20
|
-
// Methods
|
21
|
-
const actions = {
|
22
|
-
async read(organizationId) {
|
23
|
-
await $axios
|
24
|
-
.get(`/api/invites/${organizationId}`)
|
25
|
-
.then(response => {
|
26
|
-
state.invites = response.data;
|
27
|
-
state.error = null;
|
28
|
-
})
|
29
|
-
.catch(error => {
|
30
|
-
setError(error)
|
31
|
-
});
|
32
|
-
},
|
33
|
-
async readOne(inviteId) {
|
34
|
-
|
35
|
-
await $axios
|
36
|
-
.get(`/api/invites/get/${inviteId}`) // Измените URL, чтобы использовать inviteId
|
37
|
-
.then(response => {
|
38
|
-
state.invite = response.data; // Используйте отдельное свойство для хранения одного инвайта
|
39
|
-
|
40
|
-
auth.state.user.phone = response.data.invitedPhone
|
41
|
-
auth.state.user.email = response.data.invitedEmail
|
42
|
-
|
43
|
-
})
|
44
|
-
.catch(error => {
|
45
|
-
setError(error);
|
46
|
-
});
|
47
|
-
},
|
48
|
-
async create(organizationId, invite) {
|
49
|
-
await $axios
|
50
|
-
.post(`/api/invites/${organizationId}/create`, invite)
|
51
|
-
.then(() => {
|
52
|
-
state.error = null;
|
53
|
-
})
|
54
|
-
.catch(error => {
|
55
|
-
setError(error)
|
56
|
-
});
|
57
|
-
},
|
58
|
-
async update(organizationId, membership) {
|
59
|
-
await $axios
|
60
|
-
.put(`/api/invites/${organizationId}/update`, membership)
|
61
|
-
.then(() => {
|
62
|
-
state.error = null;
|
63
|
-
})
|
64
|
-
.catch(error => {
|
65
|
-
setError(error)
|
66
|
-
});
|
67
|
-
},
|
68
|
-
async delete(inviteID) {
|
69
|
-
await $axios
|
70
|
-
.delete(`/api/invites/${inviteID}/delete`)
|
71
|
-
.then(() => {
|
72
|
-
state.error = null;
|
73
|
-
})
|
74
|
-
.catch(error => {
|
75
|
-
setError(error)
|
76
|
-
});
|
77
|
-
},
|
78
|
-
};
|
79
|
-
|
80
|
-
// // History
|
81
|
-
const history = []
|
82
|
-
history.push(state)
|
83
|
-
|
84
|
-
// // Watch
|
85
|
-
watch(state, (newState, oldState) => {
|
86
|
-
history.push(newState)
|
87
|
-
})
|
88
|
-
|
89
|
-
// Module Export
|
90
|
-
export {
|
91
|
-
state,
|
92
|
-
actions,
|
93
|
-
}
|