@ozdao/martyrs 0.2.473 → 0.2.475
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Media-DW8RLbfM.js → Media-_vz04tII.js} +1 -1
- package/dist/{Media-y_TX6us_.mjs → Media-sGk7Bp9b.mjs} +1 -1
- package/dist/auth.server.js +6 -2
- package/dist/auth.server.mjs +6 -2
- package/dist/authJwt-CELQKF2s.js +82 -0
- package/dist/authJwt-DnXu3BFq.mjs +83 -0
- package/dist/builder.js +7 -4
- package/dist/builder.mjs +7 -4
- package/dist/chats.server.js +1 -1
- package/dist/chats.server.mjs +1 -1
- package/dist/community.server.js +4 -4
- package/dist/community.server.mjs +4 -4
- package/dist/events.server.js +4 -4
- package/dist/events.server.mjs +4 -4
- package/dist/files.server.js +1 -1
- package/dist/files.server.mjs +1 -1
- package/dist/gallery.server.js +3 -3
- package/dist/gallery.server.mjs +3 -3
- package/dist/{globals.abac-DT0VjfaZ.js → globals.abac-Bn-4tbX8.js} +110 -16
- package/dist/{globals.abac-CvmZM8XG.mjs → globals.abac-DZpTRxKR.mjs} +110 -16
- package/dist/globals.server.js +70 -10
- package/dist/globals.server.mjs +70 -10
- package/dist/{globals.verifier-C_VZYebB.mjs → globals.verifier-BdJxc8-8.mjs} +34 -0
- package/dist/{globals.verifier-ChDpCdy_.js → globals.verifier-CKYpYfQl.js} +34 -0
- package/dist/{index-CVXl1rB5.js → index-BOmxJQ5W.js} +7 -86
- package/dist/{index-Df8vtZx7.mjs → index-C_Fw0Umg.mjs} +7 -86
- package/dist/{main-CgmHzhq5.mjs → main-CqMtW7Hq.mjs} +274 -276
- package/dist/{main-CCfQH-Dd.js → main-CsGkbSyK.js} +2 -2
- package/dist/martyrs/src/components/Block/Block.vue.cjs +1 -1
- package/dist/martyrs/src/components/Block/Block.vue.js +1 -1
- package/dist/martyrs/src/components/Button/Button.vue2.cjs +1 -1
- package/dist/martyrs/src/components/Button/Button.vue2.js +1 -1
- package/dist/martyrs/src/components/Chips/{Chips.vue2.cjs → Chips.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Chips/Chips.vue.cjs.map +1 -0
- package/dist/martyrs/src/components/Chips/{Chips.vue2.js → Chips.vue.js} +2 -2
- package/dist/martyrs/src/components/Chips/Chips.vue.js.map +1 -0
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.cjs → Dropdown.vue2.cjs} +2 -2
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue2.cjs.map +1 -0
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.js → Dropdown.vue2.js} +2 -2
- package/dist/martyrs/src/components/Dropdown/{Dropdown.vue.cjs.map → Dropdown.vue2.js.map} +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs +2 -2
- package/dist/martyrs/src/components/Feed/Feed.vue.js +2 -2
- package/dist/martyrs/src/components/Loader/{Loader.vue2.cjs → Loader.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Loader/{Loader.vue2.js.map → Loader.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/Loader/{Loader.vue2.js → Loader.vue.js} +2 -2
- package/dist/martyrs/src/components/Loader/Loader.vue.js.map +1 -0
- package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.cjs +1 -1
- package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.js +1 -1
- package/dist/martyrs/src/components/Select/Select.vue.cjs +4 -4
- package/dist/martyrs/src/components/Select/Select.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Select/Select.vue.js +4 -4
- package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -1
- package/dist/martyrs/src/components/Slider/Slider.native.vue.cjs +1 -1
- package/dist/martyrs/src/components/Slider/Slider.native.vue.js +1 -1
- package/dist/martyrs/src/components/Tooltip/{Tooltip.vue2.cjs → Tooltip.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Tooltip/{Tooltip.vue2.js.map → Tooltip.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/Tooltip/{Tooltip.vue2.js → Tooltip.vue.js} +2 -2
- package/dist/martyrs/src/components/Tooltip/Tooltip.vue.js.map +1 -0
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.cjs +1 -1
- package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
- package/dist/martyrs/src/modules/community/community.client.js +27 -27
- package/dist/martyrs/src/modules/community/community.client.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/blocks/CardBlogpost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +2 -2
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +2 -2
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.cjs +4 -5
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js +4 -5
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/blocks/CardEvent.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +2 -2
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.cjs +2 -2
- package/dist/martyrs/src/modules/events/components/sections/EventsHot.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/sections/Feed.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/sections/List.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +3 -3
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +3 -3
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.cjs +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderUser.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +88 -27
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +89 -28
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +2 -2
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/store/shopcart.cjs +1 -0
- package/dist/martyrs/src/modules/orders/store/shopcart.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/store/shopcart.js +1 -0
- package/dist/martyrs/src/modules/orders/store/shopcart.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
- package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/Images360.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/blocks/Images360.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +21 -2
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +21 -2
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +1 -0
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +1 -0
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditProductInfo.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditProductInfo.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/PopularProducts.vue.js +1 -1
- package/dist/martyrs/src/modules/products/store/categories.cjs +2 -0
- package/dist/martyrs/src/modules/products/store/categories.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/store/categories.js +2 -0
- package/dist/martyrs/src/modules/products/store/categories.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +31 -24
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +31 -24
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +807 -0
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +807 -0
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js.map +1 -0
- package/dist/martyrs/src/modules/spots/store/spots.cjs +4 -1
- package/dist/martyrs/src/modules/spots/store/spots.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/store/spots.js +4 -1
- package/dist/martyrs/src/modules/spots/store/spots.js.map +1 -1
- package/dist/martyrs.cjs.js +1 -1
- package/dist/martyrs.css +1 -1
- package/dist/martyrs.es.js +1 -1
- package/dist/notifications.server.js +1 -1
- package/dist/notifications.server.mjs +1 -1
- package/dist/orders.server.js +5 -4
- package/dist/orders.server.mjs +5 -4
- package/dist/organizations.server.js +120 -47
- package/dist/organizations.server.mjs +120 -47
- package/dist/{ownership.schema-C0w02Vw1.mjs → ownership.schema-CNCotD3D.mjs} +10 -4
- package/dist/{ownership.schema-Ck2H9clB.js → ownership.schema-MxfJlPtq.js} +10 -4
- package/dist/products.server.js +415 -149
- package/dist/products.server.mjs +415 -149
- package/dist/{profile.schema-h61hhB2w.js → profile.schema-BLSuV_VC.js} +0 -4
- package/dist/{profile.schema-kP_zKXNt.mjs → profile.schema-BRuvQ7QV.mjs} +0 -4
- package/dist/{queryProcessor-CWnMIe2U.mjs → queryProcessor-CVKI651_.mjs} +62 -8
- package/dist/{queryProcessor-D6GuKfTV.js → queryProcessor-DSUqSk3I.js} +62 -8
- package/dist/rents.server.js +4 -4
- package/dist/rents.server.mjs +4 -4
- package/dist/spots.server.js +162 -8
- package/dist/spots.server.mjs +162 -8
- package/dist/style.css +27 -4
- package/dist/wallet.server.js +2 -2
- package/dist/wallet.server.mjs +2 -2
- package/package.json +1 -1
- package/src/builder/rspack/rspack.config.base.js +1 -1
- package/src/builder/rspack/rspack.config.client.js +13 -5
- package/src/components/Select/Select.vue +4 -2
- package/src/modules/auth/models/user.model.js +4 -1
- package/src/modules/community/components/sections/HotPosts.vue +1 -1
- package/src/modules/globals/controllers/classes/globals.abac.js +148 -23
- package/src/modules/globals/controllers/classes/globals.validator.js +37 -0
- package/src/modules/globals/controllers/classes/globals.verifier.js +2 -0
- package/src/modules/globals/controllers/policies/globals.policies.js +91 -74
- package/src/modules/globals/controllers/utils/queryProcessor.js +59 -11
- package/src/modules/globals/models/schemas/ownership.schema.js +11 -6
- package/src/modules/globals/models/schemas/profile.schema.js +0 -4
- package/src/modules/music/components/layouts/MusicLayout.vue +10 -58
- package/src/modules/music/components/pages/MusicHome.vue +5 -5
- package/src/modules/orders/components/pages/OrderCreate.vue +84 -12
- package/src/modules/orders/controllers/orders.controller.js +3 -0
- package/src/modules/orders/store/shopcart.js +1 -0
- package/src/modules/organizations/models/schemas/accesses.schema.js +18 -0
- package/src/modules/organizations/policies/organizations.policies.js +117 -61
- package/src/modules/products/components/pages/CategoryEdit.vue +27 -2
- package/src/modules/products/components/pages/Product.vue +1 -0
- package/src/modules/products/components/pages/ProductEdit.vue +2 -2
- package/src/modules/products/controllers/categories.controller.js +297 -133
- package/src/modules/products/middlewares/categories.verifier.js +177 -0
- package/src/modules/products/models/category.model.js +12 -14
- package/src/modules/products/routes/categories.routes.js +50 -11
- package/src/modules/products/store/categories.js +2 -0
- package/src/modules/spots/components/pages/SpotEdit.vue +21 -17
- package/src/modules/spots/components/sections/WorktimeEdit.vue +840 -0
- package/src/modules/spots/controllers/queries/getIsOpenNowStage.js +109 -0
- package/src/modules/spots/controllers/spots.controller.js +2 -1
- package/src/modules/spots/models/spot.model.js +59 -13
- package/src/modules/spots/store/spots.js +4 -1
- package/dist/martyrs/src/components/Chips/Chips.vue2.cjs.map +0 -1
- package/dist/martyrs/src/components/Chips/Chips.vue2.js.map +0 -1
- package/dist/martyrs/src/components/Dropdown/Dropdown.vue.js.map +0 -1
- package/dist/martyrs/src/components/Loader/Loader.vue2.cjs.map +0 -1
- package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.cjs.map +0 -1
- package/src/modules/products/middlewares/index.js +0 -11
- package/src/modules/products/middlewares/verifyCategory.js +0 -25
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrderCreate.vue.js","sources":["../../../../../../../src/modules/orders/components/pages/OrderCreate.vue"],"sourcesContent":["<template>\n\n<section class=\"bg-white pd-thin\">\n\n\t<!-- Ask to login -->\n\t<AskToLogin class=\"mn-b-thin\" v-if=\"auth.state.access.status === false\" /> \n\t<!-- Order form -->\n\t<div class=\"gap-small mn-b-thin cols-2\">\n\t\t<!-- Empty State -->\n\t\t<EmptyState \n\t\t\tv-if=\"shopcart.state.positions < 1\" \n\t\t/>\t\n\n\t\t<Succes \n\t\t\tv-if=\"order.status === true && shopcart.state.positions.length > 0\" \n\t\t\t:order=\"order\" \n\t\t/>\n\t\t<!-- Order Form -->\n\t\t<div\n\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\" \n\t\t\tclass=\"rows-1 gap-thin\"\n\t\t>\n\t\t\t<FormCustomerDetails\n\t\t\t\t:customer=\"orders.state.current.customer\"\n\t\t\t/>\n\t\t\t<FormPayment \t\n\t\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n\t\t\t\t:order=\"orders.state.current\" \n\t\t\t\t:organization=\"orderOrganization[0]\" \n\t\t\t/>\n\t\t\t<FormDelivery \t\n\t\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n\t\t\t\t:order=\"orders.state.current\" \n\t\t\t\t:organization=\"orderOrganization[0]\" \n\t\t\t/>\n\t\t\t\n\t\t</div>\n\n\t\t<!-- Order positions -->\n\t\t<div \n\t\t\tv-if=\"shopcart.state.positions.length > 0\" \n\t\t\tclass=\"bg-white br-solid br-light br-1px pd-medium radius-medium\"\n\t\t>\n\t\t\t<h4 class=\"font-second mn-b-thin\">Your Order</h4>\n\n\t\t\t<ul class=\"flex gap-thin flex-wrap mn-b-thin\">\n\t\t\t\t<CardOrderItem \n\t\t\t\t\tv-for=\"product in shopcart.state.positions\" \n\t\t\t\t\t:key=\"product._id\" \n\t\t\t\t\t:editable=\"true\" \n\t\t\t\t\t:product=\"product\" \n\t :increase=\"product => shopcart.actions.incrementItemQuantity(product._id)\"\n\t :decrease=\"product => shopcart.actions.decrementItemQuantity(product._id)\"\n\t :remove=\"product => shopcart.actions.removeProduct(product._id)\"\n\t\t\t\t\t@updateRentDates=\"(product, dates) => shopcart.actions.updateRentDates({ productId: product._id, dates })\"\n\t class=\"w-100 bg-white \"\n\t />\n\t\t\t</ul>\n\n\t\t\t\t<div \n\t\t\t\tclass=\"mn-b-thin\"\n\t\t\t>\t\n\t\t\t\t<PriceTotal \n :totalPrice=\"cartTotalPrice\"\n :deliveryRate=\"deliveryCost\"\n :currency=\"returnCurrency()\"\n :showFees=\"globals.state.options?.orders.showFees\"\n :feesRate=\"globals.state.options?.orders.feesRate || 0\"\n :showVat=\"globals.state.options?.orders.showVat\"\n :vatRate=\"globals.state.options?.orders.vatRate || 0\"\n :showDeliveryFee=\"globals.state.options?.orders.showDeliveryFee\"\n />\n\t\t\t</div>\n\t\t\t<!-- Send order -->\n\t\t <Button\n v-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n :submit=\"() => handleCreate()\"\n class=\"bg-main mn-b-small pd-small radius-big w-100 button\"\n :disabled=\"\n\t\t errorName \n\t\t || errorPhoneOrMessenger \n\t\t || errorCity \n\t\t || errorAddress \n\t\t || errorDelivery \n\t\t || errorPayment\n\t\t || isLocationLoading\n\t\t \"\n >\n <span>Place an Order</span>\n </Button>\n\n\t\t <p class='mn-b-thin'>\n\t\t\t\tI agree that placing the order places me under an obligation to make a payment in accordance with <a class=\"t-semi font-second t-second\" href=\"/legal/terms-of-use\" target=\"_blank\">Terms of Use.</a>\n\t\t\t</p>\n\t\t\t<p >\n\t\t\t\t\n\t\t\t</p>\n\t\t</div>\n\n\t</div>\n\n\t\n\t\n</section>\n\n</template>\n\n\n<script setup>\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Import components\n///////////////////////////////////////////////////////////////////////////////////////////////////\nimport Button from '@martyrs/src/components/Button/Button.vue'\n// Block\nimport CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue'\n// Sections\nimport AskToLogin from '@martyrs/src/modules/orders/components/sections/AskToLogin.vue'\nimport Succes from '@martyrs/src/modules/orders/components/sections/Succes.vue'\nimport EmptyState from '@martyrs/src/modules/orders/components/sections/EmptyState.vue'\n\nimport PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue';\n\nimport FormCustomerDetails from '@martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue'\nimport FormDelivery from '@martyrs/src/modules/orders/components/sections/FormDelivery.vue'\nimport FormPayment from '@martyrs/src/modules/orders/components/sections/FormPayment.vue'\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Import libs\n///////////////////////////////////////////////////////////////////////////////////////////////////\nimport { ref, computed, onMounted, watch } from 'vue'\nimport { useRoute,useRouter } from 'vue-router'\nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/views/mixins/mixins.js\"\n\n// Store\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth';\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart';\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations';\nimport * as orders from '@martyrs/src/modules/orders/store/orders';\nimport * as users from '@martyrs/src/modules/auth/views/store/users';\n\nconst emits = defineEmits(['page-loading', 'page-loaded']);\n\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Variables and computed\n//////////////////////////////////////////////////////////////////////////////////////////////////\nconst isLocationLoading = ref(false)\n// Accessing router and store\nconst route = useRoute()\nconst router = useRouter()\nconst { returnCurrency } = useGlobalMixins()\n// COMPUTED\nconst order = computed(() => orders.state.current)\nconst user = computed(() => users.state.current)\n\nconst cartTotalPrice = shopcart.getters.cartTotalPrice\n\nconst deliveryCost = computed(() => {\n const type = orders.state.current.delivery.type\n const distance = orderOrganization.value[0]?.distance || 0\n const config = globals.state.options?.orders?.delivery_formula || {}\n\n return orders.getters.getDeliveryPrice(type, distance, config)\n})\n\n// Organization\nconst orderOrganization = ref({})\n\n\nif (!globals.state.options.orders.allowUnauthenticatedOrders && !auth.state.user._id) { \n\trouter.push({name: 'Sign In'})\t\n}\n\n\norders.mutations.resetOrder()\n\nonMounted(async()=> {\n\temits('page-loading');\n\n\tisLocationLoading.value = true\n\n\tif (auth.state.user._id) {\n\t\tlet data = await users.actions.read({ _id:auth.state.user._id, user: auth.state.user._id });\n\n\t\torders.state.current.customer.profile.name = users.state.current.profile.name\n\t\torders.state.current.customer.phone = users.state.current.phone\n\t\torders.state.current.customer.phone = users.state.current.phone\n\t}\n\n\torderOrganization.value = await organizations.actions.read({\n\t _id: shopcart.state.organization,\n\t location: globals.state.position?.location,\n\t lookup: ['spots']\n\t})\n\t\n \tisLocationLoading.value = false\n emits('page-loaded');\n\n if (typeof gtag === 'function') {\n gtag('event', 'begin_checkout', {\n currency: returnCurrency(), // Замените на вашу валюту\n value: cartTotalPrice || 0,\n items: shopcart.state.positions.map(item => ({\n item_id: item.product?._id,\n item_name: item.product?.name,\n price: item.price || 0,\n quantity: item.quantity || 1,\n item_category: item.product?.category || '',\n item_brand: orderOrganization.value.profile?.name || ''\n })),\n organization: orderOrganization.value.profile?.name || '',\n location: globals.state.position?.location || 'unknown'\n });\n }\n})\n\n\nwatch(\n () => orders.state.current.delivery,\n async (newVal) => {\n if (newVal?.location) {\n \tisLocationLoading.value = true\n\n orderOrganization.value = await organizations.actions.read({\n _id: shopcart.state.organization,\n location: newVal.location,\n lookup: ['spots']\n })\n\n isLocationLoading.value = false\n }\n },\n { deep: true }\n)\n\n\n/////////////////////////////\n// Store Verification\n/////////////////////////////\nconst errorName = computed(() => {\n if (orders.state.current.customer.name?.length < 2) { return true } else { return false }\n});\n\nconst errorPhoneOrMessenger = computed(() => {\n const hasMessengerType = orders.state.current.customer.messenger?.type;\n const hasMessengerValue = orders.state.current.customer.messenger?.value?.length >\t 2;\n const hasPhone = orders.state.current.customer.number?.length > 0;\n // Ошибка, если нет ни номера телефона, ни корректного типа и значения мессенджера\n return !hasPhone && !(hasMessengerType && hasMessengerValue);\n});\n\nconst errorAddress = computed(() => {\n const type = orders.state.current.delivery.type;\n if (type === \"pickup\") {\n return !orders.state.current.delivery.spot;\n } else if (type === \"courier\" || type === \"mail\") {\n const address = orders.state.current.delivery.address;\n return !address || typeof address !== 'string' || address.length < 2;\n }\n return false;\n});\n\nconst errorDelivery = computed(() => {\n if (orders.state.current.delivery.type) {return false } else {return true } \n})\n\nconst errorPayment = computed(() => {\n if (orders.state.current.payment.type) { return false } else {return true } \n})\n/////////////////////////////\n// Methods\n/////////////////////////////\nasync function handleCreate() {\n\n\torders.state.current.status = 'created';\n\n\torders.state.current.owner = {\n\t\ttarget: orderOrganization.value[0]._id,\n\t\ttype: 'organization'\n\t}\n\n\tif (auth.state.user._id) {\n\t\torders.state.current.creator = {\n\t\t\ttarget: auth.state.user._id,\n\t\t\ttype: 'user'\n\t\t}\n\t}\n\n\tif (auth.state.user._id) {\n\t\torders.state.current.customer = {\n\t\t\ttarget: auth.state.user._id,\n\t\t\ttype: 'user'\n\t\t}\n\t}\n\n\torders.state.current.positions = shopcart.state.positions\n\n \tconst referralCode = localStorage.getItem('referalCode');\n \n if (referralCode) {\n orders.state.current.referralCode = referralCode;\n }\n\n let order = await orders.actions.create(orders.state.current);\n\n if (order) {\n\t if (typeof gtag === 'function') {\n\t gtag('event', 'purchase', {\n\t transaction_id: order._id,\n\t value: cartTotalPrice || 0,\n\t currency: returnCurrency(), // Замените на вашу валюту\n\t tax: 0, // Если есть данные о налоге\n\t shipping: deliveryCost.value, // Если есть данные о доставке\n\t items: shopcart.state.positions.map(item => ({\n\t item_id: item.product?._id,\n\t item_name: item.product?.name ,\n\t price: item.price || 0,\n\t quantity: item.quantity || 1,\n\t item_category: item.product?.category || ''\n\t })),\n\t organization: orderOrganization.value?.profile?.name,\n\t location: globals.state.position?.location || 'unknown',\n\t referral_code: referralCode || null,\n\t user_id: auth.state.user._id || 'anonymous'\n\t });\n\t }\n\t}\n\n if (order) {\n \tawait router.push({\n \t\tname: 'Order',\n \t\tparams: {\n \t\t\torder: order._id\n \t\t}\n \t})\n \t\t\n \tshopcart.actions.resetShopcart()\n\n } else {\n \talert('something wrong')\n }\n}\n</script>\n\n<style lang=\"scss\">\n\n.round-wrapper {\n\tposition: relative;\n\n\t.round {\n\t\tmargin: 0;\n\t\tmargin-right: 1rem;\n\t}\n\n\tinput:checked {\n\t\tbackground: #00ff88;\n\t}\n\n\t.round-checkmark {\n\t\tposition: absolute;\n\t\twidth: 0.5rem;\n\t\theight: 0.5rem;\n\t\tbackground: white;\n\n\t\tleft: 0.5rem;\n\t\ttop: 0.5rem;\n\n\t\topacity: 1;\n\t}\n}\n</style>"],"names":["orders.state","users.state","shopcart.getters","globals.state","orders.getters","auth.state","orders.mutations","users.actions","organizations.actions","shopcart.state","_a","_b","_c","order","orders.actions","shopcart.actions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OrderCreate.vue.js","sources":["../../../../../../../src/modules/orders/components/pages/OrderCreate.vue"],"sourcesContent":["<template>\n\n<section class=\"bg-white pd-thin\">\n\n\t<!-- Ask to login -->\n\t<AskToLogin class=\"mn-b-thin\" v-if=\"auth.state.access.status === false\" /> \n\n\t<!-- Empty State -->\n\t<EmptyState \n\t\tv-if=\"shopcart.state.positions < 1\" \n\t/>\t\n\t<Succes \n\t\tv-if=\"order.status === true && shopcart.state.positions.length > 0\" \n\t\t:order=\"order\" \n\t/>\n\t<!-- Уведомления о минимальной сумме заказа и времени работы -->\n\t<div v-if=\"shopcart.state.positions.length > 0 && orders.state.current.status !== true\" class=\"w-100 gap-thin cols-1 mn-b-thin\">\n\t\t<div v-if=\"!isOpen\" class=\"bg-fifth-nano pd-small radius-medium t-center\">\n\t\t\t<p class=\"t-fourth\">⚠️ This spot is currently closed. You can place an order, but it will be processed when the spot opens.</p>\n\t\t</div>\n\t\t<div v-if=\"cartTotalPrice < minOrderAmount\" class=\"bg-fourth-nano pd-small radius-medium t-center\">\n\t\t\t<p class=\"t-fourth\">⚠️ Minimum order amount is {{ formatPrice(minOrderAmount) }}. Your current total is {{ formatPrice(cartTotalPrice) }}.</p>\n\t\t</div>\n\t</div>\n\t<!-- Order form -->\n\t<div class=\"gap-small mn-b-thin cols-2\">\n\t\t<!-- Order Form -->\n\t\t<div\n\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\" \n\t\t\tclass=\"rows-1 gap-thin\"\n\t\t>\n\t\t\t<FormCustomerDetails\n\t\t\t\t:customer=\"orders.state.current.customer\"\n\t\t\t/>\n\t\t\t<FormPayment \t\n\t\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n\t\t\t\t:order=\"orders.state.current\" \n\t\t\t\t:organization=\"orderOrganization[0]\" \n\t\t\t/>\n\t\t\t<FormDelivery \t\n\t\t\t\tv-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n\t\t\t\t:order=\"orders.state.current\" \n\t\t\t\t:organization=\"orderOrganization[0]\" \n\t\t\t/>\n\t\t\t\n\t\t</div>\n\n\t\t<!-- Order positions -->\n\t\t<div \n\t\t\tv-if=\"shopcart.state.positions.length > 0\" \n\t\t\tclass=\"bg-white br-solid br-light br-1px pd-medium radius-medium\"\n\t\t>\n\t\t\t<h4 class=\"font-second mn-b-thin\">Your Order</h4>\n\n\t\t\t<ul class=\"flex gap-thin flex-wrap mn-b-thin\">\n\t\t\t\t<CardOrderItem \n\t\t\t\t\tv-for=\"product in shopcart.state.positions\" \n\t\t\t\t\t:key=\"product._id\" \n\t\t\t\t\t:editable=\"true\" \n\t\t\t\t\t:product=\"product\" \n\t :increase=\"product => shopcart.actions.incrementItemQuantity(product._id)\"\n\t :decrease=\"product => shopcart.actions.decrementItemQuantity(product._id)\"\n\t :remove=\"product => shopcart.actions.removeProduct(product._id)\"\n\t\t\t\t\t@updateRentDates=\"(product, dates) => shopcart.actions.updateRentDates({ productId: product._id, dates })\"\n\t class=\"w-100 bg-white \"\n\t />\n\t\t\t</ul>\n\n\t\t\t\t<div \n\t\t\t\tclass=\"mn-b-thin\"\n\t\t\t>\t\n\t\t\t\t<PriceTotal \n :totalPrice=\"cartTotalPrice\"\n :deliveryRate=\"deliveryCost\"\n :currency=\"returnCurrency()\"\n :showFees=\"globals.state.options?.orders.showFees\"\n :feesRate=\"globals.state.options?.orders.feesRate || 0\"\n :showVat=\"globals.state.options?.orders.showVat\"\n :vatRate=\"globals.state.options?.orders.vatRate || 0\"\n :showDeliveryFee=\"globals.state.options?.orders.showDeliveryFee\"\n />\n\t\t\t</div>\n\t\t\t<!-- Send order -->\n\t\t <Button\n v-if=\"orders.state.current.status !== true && shopcart.state.positions.length > 0\"\n :submit=\"() => handleCreate()\"\n class=\"bg-main mn-b-small pd-small radius-big w-100 button\"\n :disabled=\"\n\t\t errorName \n\t\t || errorPhoneOrMessenger \n\t\t || errorCity \n\t\t || errorAddress \n\t\t || errorDelivery \n\t\t || errorPayment\n\t\t || isLocationLoading\n\t\t || cartTotalPrice < minOrderAmount\n\t\t \"\n >\n <span>Place an Order</span>\n </Button>\n\n\t\t <p class='mn-b-thin'>\n\t\t\t\tI agree that placing the order places me under an obligation to make a payment in accordance with <a class=\"t-semi font-second t-second\" href=\"/legal/terms-of-use\" target=\"_blank\">Terms of Use.</a>\n\t\t\t</p>\n\t\t\t<p >\n\t\t\t\t\n\t\t\t</p>\n\t\t</div>\n\n\t</div>\n\n\t\n\t\n</section>\n\n</template>\n\n\n<script setup>\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Import components\n///////////////////////////////////////////////////////////////////////////////////////////////////\nimport Button from '@martyrs/src/components/Button/Button.vue'\n// Block\nimport CardOrderItem from '@martyrs/src/modules/orders/components/blocks/CardOrderItem.vue'\n// Sections\nimport AskToLogin from '@martyrs/src/modules/orders/components/sections/AskToLogin.vue'\nimport Succes from '@martyrs/src/modules/orders/components/sections/Succes.vue'\nimport EmptyState from '@martyrs/src/modules/orders/components/sections/EmptyState.vue'\n\nimport PriceTotal from '@martyrs/src/modules/orders/components/elements/PriceTotal.vue';\n\nimport FormCustomerDetails from '@martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue'\nimport FormDelivery from '@martyrs/src/modules/orders/components/sections/FormDelivery.vue'\nimport FormPayment from '@martyrs/src/modules/orders/components/sections/FormPayment.vue'\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Import libs\n///////////////////////////////////////////////////////////////////////////////////////////////////\nimport { ref, computed, onMounted, watch } from 'vue'\nimport { useRoute,useRouter } from 'vue-router'\nimport { useGlobalMixins } from \"@martyrs/src/modules/globals/views/mixins/mixins.js\"\n\n// Store\nimport * as globals from '@martyrs/src/modules/globals/views/store/globals';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth';\nimport * as shopcart from '@martyrs/src/modules/orders/store/shopcart';\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations';\nimport * as orders from '@martyrs/src/modules/orders/store/orders';\nimport * as users from '@martyrs/src/modules/auth/views/store/users';\n\nconst emits = defineEmits(['page-loading', 'page-loaded']);\n\n///////////////////////////////////////////////////////////////////////////////////////////////////\n// Variables and computed\n//////////////////////////////////////////////////////////////////////////////////////////////////\nconst isLocationLoading = ref(false)\n// Accessing router and store\nconst route = useRoute()\nconst router = useRouter()\nconst { returnCurrency, formatPrice } = useGlobalMixins()\n// COMPUTED\nconst order = computed(() => orders.state.current)\nconst user = computed(() => users.state.current)\n\nconst cartTotalPrice = shopcart.getters.cartTotalPrice\n\nconst deliveryCost = computed(() => {\n const type = orders.state.current.delivery.type\n const distance = orderOrganization.value[0]?.distance || 0\n const config = globals.state.options?.orders?.delivery_formula || {}\n\n return orders.getters.getDeliveryPrice(type, distance, config)\n})\n\n// Organization\nconst orderOrganization = ref({})\nconst spotOrganization = ref({})\nconst isOpen = ref(true)\n\n// Новые переменные для проверки минимальной суммы заказа и времени работы\nconst minOrderAmount = ref(0)\n\nfunction checkIsOpenNow(worktime) {\n try {\n console.log('[checkIsOpenNow] worktime:', worktime);\n\n if (\n !worktime ||\n typeof worktime !== 'object' ||\n Array.isArray(worktime) ||\n !worktime.regular\n ) {\n console.log('[checkIsOpenNow] invalid, returning true');\n return true;\n }\n\n const now = new Date();\n const currentDay = now.getDay();\n const currentTime = `${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}`;\n const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n\n console.log('[checkIsOpenNow] currentDay:', currentDay);\n console.log('[checkIsOpenNow] currentTime:', currentTime);\n\n const specialDay = worktime.special?.find(s => {\n const d = new Date(s.date);\n return (\n d.getFullYear() === today.getFullYear() &&\n d.getMonth() === today.getMonth() &&\n d.getDate() === today.getDate()\n );\n });\n\n if (specialDay) {\n console.log('[checkIsOpenNow] specialDay:', specialDay);\n if (!specialDay.isOpen) return false;\n return specialDay.periods?.some(p => p.open <= currentTime && p.close > currentTime);\n }\n\n const regularDay = worktime.regular.find(d => d.dayOfWeek === currentDay);\n if (!regularDay || !regularDay.isOpen) return false;\n\n return regularDay.periods?.some(p => p.open <= currentTime && p.close > currentTime);\n } catch (err) {\n console.error('[checkIsOpenNow] error:', err);\n return true;\n }\n}\n\n\nif (!globals.state.options.orders.allowUnauthenticatedOrders && !auth.state.user._id) { \n\trouter.push({name: 'Sign In'})\t\n}\n\n\norders.mutations.resetOrder()\n\nonMounted(async()=> {\n\temits('page-loading');\n\n\tisLocationLoading.value = true\n\n\tif (auth.state.user._id) {\n\t\tlet data = await users.actions.read({ _id:auth.state.user._id, user: auth.state.user._id });\n\n\t\torders.state.current.customer.profile.name = users.state.current.profile.name\n\t\torders.state.current.customer.phone = users.state.current.phone\n\t\torders.state.current.customer.phone = users.state.current.phone\n\t}\n\t\n\torderOrganization.value = await organizations.actions.read({\n\t _id: shopcart.state.organization,\n\t location: globals.state.position?.location,\n\t lookup: ['spots']\n\t})\n\t\n\t// Получаем информацию о минимальной сумме заказа и времени работы из spot\n\tif (orderOrganization.value && orderOrganization.value[0]?.spots?.length > 0) {\n\t spotOrganization.value = orderOrganization.value[0].spots[0];\n\t\tisOpen.value = checkIsOpenNow(spotOrganization.value.worktime);\n\t console.log(spotOrganization.value)\n\t minOrderAmount.value = spotOrganization.value.minorder || 0;\n\t}\n\n\n\t\n \tisLocationLoading.value = false\n emits('page-loaded');\n\n if (typeof gtag === 'function') {\n gtag('event', 'begin_checkout', {\n currency: returnCurrency(), // Замените на вашу валюту\n value: cartTotalPrice || 0,\n items: shopcart.state.positions.map(item => ({\n item_id: item.product?._id,\n item_name: item.product?.name,\n price: item.price || 0,\n quantity: item.quantity || 1,\n item_category: item.product?.category || '',\n item_brand: orderOrganization.value.profile?.name || ''\n })),\n organization: orderOrganization.value.profile?.name || '',\n location: globals.state.position?.location || 'unknown'\n });\n }\n})\n\n\nwatch(\n () => orders.state.current.delivery,\n async (newVal) => {\n if (newVal?.location) {\n \tisLocationLoading.value = true\n\n orderOrganization.value = await organizations.actions.read({\n _id: shopcart.state.organization,\n location: newVal.location,\n lookup: ['spots']\n })\n \n isLocationLoading.value = false\n }\n },\n { deep: true }\n)\n\n\n/////////////////////////////\n// Store Verification\n/////////////////////////////\nconst errorName = computed(() => {\n if (orders.state.current.customer.name?.length < 2) { return true } else { return false }\n});\n\nconst errorPhoneOrMessenger = computed(() => {\n const hasMessengerType = orders.state.current.customer.messenger?.type;\n const hasMessengerValue = orders.state.current.customer.messenger?.value?.length >\t 2;\n const hasPhone = orders.state.current.customer.number?.length > 0;\n // Ошибка, если нет ни номера телефона, ни корректного типа и значения мессенджера\n return !hasPhone && !(hasMessengerType && hasMessengerValue);\n});\n\nconst errorAddress = computed(() => {\n const type = orders.state.current.delivery.type;\n if (type === \"pickup\") {\n return !orders.state.current.delivery.spot;\n } else if (type === \"courier\" || type === \"mail\") {\n const address = orders.state.current.delivery.address;\n return !address || typeof address !== 'string' || address.length < 2;\n }\n return false;\n});\n\nconst errorDelivery = computed(() => {\n if (orders.state.current.delivery.type) {return false } else {return true } \n})\n\nconst errorPayment = computed(() => {\n if (orders.state.current.payment.type) { return false } else {return true } \n})\n/////////////////////////////\n// Methods\n/////////////////////////////\nasync function handleCreate() {\n\n\torders.state.current.status = 'created';\n\n\torders.state.current.owner = {\n\t\ttarget: orderOrganization.value[0]._id,\n\t\ttype: 'organization'\n\t}\n\n\tif (auth.state.user._id) {\n\t\torders.state.current.creator = {\n\t\t\ttarget: auth.state.user._id,\n\t\t\ttype: 'user'\n\t\t}\n\t}\n\n\tif (auth.state.user._id) {\n\t\torders.state.current.customer = {\n\t\t\ttarget: auth.state.user._id,\n\t\t\ttype: 'user'\n\t\t}\n\t}\n\n\torders.state.current.positions = shopcart.state.positions\n\n \tconst referralCode = localStorage.getItem('referalCode');\n \n if (referralCode) {\n orders.state.current.referralCode = referralCode;\n }\n\n let order = await orders.actions.create(orders.state.current);\n\n if (order) {\n\t if (typeof gtag === 'function') {\n\t gtag('event', 'purchase', {\n\t transaction_id: order._id,\n\t value: cartTotalPrice || 0,\n\t currency: returnCurrency(), // Замените на вашу валюту\n\t tax: 0, // Если есть данные о налоге\n\t shipping: deliveryCost.value, // Если есть данные о доставке\n\t items: shopcart.state.positions.map(item => ({\n\t item_id: item.product?._id,\n\t item_name: item.product?.name ,\n\t price: item.price || 0,\n\t quantity: item.quantity || 1,\n\t item_category: item.product?.category || ''\n\t })),\n\t organization: orderOrganization.value?.profile?.name,\n\t location: globals.state.position?.location || 'unknown',\n\t referral_code: referralCode || null,\n\t user_id: auth.state.user._id || 'anonymous'\n\t });\n\t }\n\t}\n\n if (order) {\n \tawait router.push({\n \t\tname: 'Order',\n \t\tparams: {\n \t\t\torder: order._id\n \t\t}\n \t})\n \t\t\n \tshopcart.actions.resetShopcart()\n\n } else {\n \talert('something wrong')\n }\n}\n</script>\n\n<style lang=\"scss\">\n\n.round-wrapper {\n\tposition: relative;\n\n\t.round {\n\t\tmargin: 0;\n\t\tmargin-right: 1rem;\n\t}\n\n\tinput:checked {\n\t\tbackground: #00ff88;\n\t}\n\n\t.round-checkmark {\n\t\tposition: absolute;\n\t\twidth: 0.5rem;\n\t\theight: 0.5rem;\n\t\tbackground: white;\n\n\t\tleft: 0.5rem;\n\t\ttop: 0.5rem;\n\n\t\topacity: 1;\n\t}\n}\n</style>"],"names":["orders.state","users.state","shopcart.getters","globals.state","orders.getters","auth.state","orders.mutations","users.actions","organizations.actions","shopcart.state","_a","_b","_c","_d","order","orders.actions","shopcart.actions"],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
3
|
const vue = require("vue");
|
|
4
4
|
const vueRouter = require("vue-router");
|
|
5
|
-
;/* empty css
|
|
6
|
-
;/* empty css
|
|
5
|
+
;/* empty css */
|
|
6
|
+
;/* empty css */
|
|
7
7
|
const Field = require("../../../../components/Field/Field.vue.cjs");
|
|
8
8
|
const Radio = require("../../../../components/Radio/Radio.vue.cjs");
|
|
9
9
|
;/* empty css */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { watch, onMounted, computed, createBlock, openBlock, withCtx, createElementVNode, createElementBlock, createCommentVNode, createVNode, Fragment, renderList } from "vue";
|
|
2
2
|
import { useRoute } from "vue-router";
|
|
3
|
-
/* empty css
|
|
4
|
-
/* empty css
|
|
3
|
+
/* empty css */
|
|
4
|
+
/* empty css */
|
|
5
5
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
6
6
|
import _sfc_main$2 from "../../../../components/Radio/Radio.vue.js";
|
|
7
7
|
/* empty css */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shopcart.cjs","sources":["../../../../../../src/modules/orders/store/shopcart.js"],"sourcesContent":["/////////////////////////////\n// DEPENDENCIES\n/////////////////////////////\nimport { reactive, watch, computed } from \"vue\";\n// Dependencies\nimport Cookies from 'js-cookie'\n// Globals \nimport { setError } from '@martyrs/src/modules/globals/views/store/globals'\n\n/////////////////////////////\n// State\n/////////////////////////////\nconst state = reactive({\n organization: null,\n positions: [],\n currentState: false\n});\n\n/////////////////////////////\n// Helpers\n/////////////////////////////\nconst helpers = {\n createCartItem(product, organization, type = 'sale') {\n return {\n _id: product._id,\n images: product.images,\n name: product.name,\n price: product.price,\n listing: product.listing,\n quantity: 1,\n org_id: organization,\n type: type\n };\n },\n\n saveToStorage() {\n localStorage.setItem(CART_STORAGE_KEY, JSON.stringify({\n positions: state.positions,\n organization: state.organization\n }));\n },\n\n async validateProduct(product) {\n const serverProduct = await api.fetchProduct(product._id);\n \n if (!serverProduct) {\n return false;\n }\n\n return serverProduct.price === product.price &&\n serverProduct.name === product.name &&\n serverProduct.available !== false;\n }\n};\n\n/////////////////////////////\n// SYNC PRODUCT IN SHOPCART\n/////////////////////////////\n// Constants\nconst CART_STORAGE_KEY = 'shopcart';\nconst SYNC_INTERVAL = 30000; // 30 seconds in milliseconds\n\n// API service\nconst api = {\n async fetchProduct(productId) {\n try {\n const response = await fetch(`/api/products/read`, { _id: productId});\n return await response.json();\n } catch (error) {\n console.error('Failed to fetch product:', error);\n return null;\n }\n }\n};\n\nasync function syncWithServer() {\n try {\n const invalidProducts = [];\n \n for (let i = 0; i < state.positions.length; i++) {\n const product = state.positions[i];\n const serverProduct = await api.fetchProduct(product._id);\n \n if (!serverProduct || \n serverProduct.price !== product.price || \n serverProduct.name !== product.name || \n serverProduct.available === false) {\n invalidProducts.push(product._id);\n }\n }\n\n if (invalidProducts.length > 0) {\n state.positions = state.positions.filter(\n product => !invalidProducts.includes(product._id)\n );\n helpers.saveToStorage();\n setError('Some products were removed from cart due to changes on server');\n }\n } catch (error) {\n console.error('Failed to sync with server:', error);\n }\n}\n// Initialize periodic sync\nlet syncInterval;\n\nconst startPeriodicSync = () => {\n syncInterval = setInterval(syncWithServer, SYNC_INTERVAL);\n};\n\nconst stopPeriodicSync = () => {\n if (syncInterval) {\n clearInterval(syncInterval);\n }\n};\n\n// Start sync when module is imported\n// startPeriodicSync();\n/////////////////////////////\n// Actions\n/////////////////////////////\nconst actions = {\n\n toggleShopcart () {\n state.currentState = state.currentState ? false : true;\n },\n\n setShopcart() {\n try {\n const storedShopcart = localStorage.getItem('shopcart');\n\n if (storedShopcart) {\n const shopcartData = JSON.parse(storedShopcart);\n state.positions = shopcartData.positions; // Восстанавливаем продукты\n state.organization = shopcartData.organization; // Восстанавливаем _id организации\n } \n } catch (error) {\n console.error(error);\n throw error;\n }\n },\n\n\n addProductToCart(product, organization, date) {\n console.log('organization shopcart is', organization)\n const cartItem = state.positions.find(\n (item) => item._id === product._id\n );\n\n if (cartItem) {\n cartItem.quantity++;\n } else {\n state.positions.push({\n _id: product._id,\n images: product.images,\n name: product.name,\n listing: product.listing,\n price: product.price,\n quantity: 1,\n date: date, \n org_id: organization, // Добавляем _id организации к каждому продукту\n });\n }\n\n // Обновляем объект корзины в localStorage, включая _id организации\n localStorage.setItem('shopcart', JSON.stringify({\n positions: state.positions,\n organization: organization // Сохраняем _id организации в корне объекта корзины\n }));\n },\n\n\n removeProduct(_id) {\n const cartItem = state.positions.find(\n (item) => item._id === _id\n );\n const cartItemIndex = state.positions.indexOf(cartItem);\n\n if (cartItemIndex > -1) {\n state.positions.splice(cartItemIndex, 1);\n \n // Сохраняем весь объект корзины, а не только позиции\n localStorage.setItem('shopcart', JSON.stringify({\n positions: state.positions,\n organization: state.organization\n }));\n }\n },\n\n\n decrementItemQuantity(_id) {\n const cartItem = state.positions.find(\n (item) => item._id === _id\n );\n const cartItemIndex = state.positions.indexOf(cartItem);\n \n if (cartItemIndex > -1) {\n cartItem.quantity--;\n \n if (cartItem.quantity < 1) {\n state.positions.splice(cartItemIndex, 1);\n }\n\n // Сохраняем весь объект корзины, а не только позиции\n localStorage.setItem('shopcart', JSON.stringify({\n positions: state.positions,\n organization: state.organization\n }));\n }\n },\n\n\n incrementItemQuantity(_id) {\n const cartItem = state.positions.find(\n (item) => item._id === _id\n );\n\n if (cartItem) {\n cartItem.quantity++;\n\n // Сохраняем весь объект корзины, а не только позиции\n localStorage.setItem('shopcart', JSON.stringify({\n positions: state.positions,\n organization: state.organization\n }));\n }\n },\n\n updateRentDates({ productId, dates }) {\n const product = state.positions.find(p => p._id === productId)\n\n if (product) {\n product.date = dates // Предполагается, что dates — объект { start, end }\n }\n\n localStorage.setItem('shopcart', JSON.stringify({\n positions: state.positions,\n organization: state.organization\n }));\n },\n\n\n resetShopcart() {\n state.positions = [];\n \n localStorage.removeItem('shopcart');\n },\n};\n\n/////////////////////////////\n// Getters\n/////////////////////////////\nconst getters = {\n cartTotalPrice: computed(() => {\n return Number(state.positions.reduce((total, product) => {\n // Проверяем тип листинга\n if (product.listing === 'rent') {\n const start = new Date(product.date.start)\n const end = new Date(product.date.end)\n const diffTime = Math.abs(end - start)\n return total + product.price * (Math.ceil(diffTime / (1000 * 60 * 60 * 24)) + 1);\n } else {\n // Для обычных товаров умножаем на количество\n return total + product.price * (product.quantity || 1);\n }\n }, 0));\n }),\n cartTotalAmount: computed(() => {\n return Number(state.positions.reduce((total, product) => {\n return total + product.quantity;\n }, 0));\n }),\n getStoreCartState: computed(() => {\n return Number(state.currentState);\n }),\n};\n/////////////////////////////\n// History\n/////////////////////////////\nconst history = []\nhistory.push(state) \n\n/////////////////////////////\n// Watch\n/////////////////////////////\nwatch(state, (newState, oldState) => {\n history.push(newState)\n})\n\n/////////////////////////////\n// Module Export\n/////////////////////////////\nexport {\n state,\n actions,\n getters\n}"],"names":["reactive","computed","watch"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shopcart.cjs","sources":["../../../../../../src/modules/orders/store/shopcart.js"],"sourcesContent":["/////////////////////////////\n// DEPENDENCIES\n/////////////////////////////\nimport { reactive, watch, computed } from \"vue\";\n// Dependencies\nimport Cookies from 'js-cookie'\n// Globals \nimport { setError } from '@martyrs/src/modules/globals/views/store/globals'\n\n/////////////////////////////\n// State\n/////////////////////////////\nconst state = reactive({\n organization: null,\n positions: [],\n currentState: false\n});\n\n/////////////////////////////\n// Helpers\n/////////////////////////////\nconst helpers = {\n createCartItem(product, organization, type = 'sale') {\n return {\n _id: product._id,\n images: product.images,\n name: product.name,\n price: product.price,\n listing: product.listing,\n quantity: 1,\n org_id: organization,\n type: type\n };\n },\n\n saveToStorage() {\n localStorage.setItem(CART_STORAGE_KEY, JSON.stringify({\n positions: state.positions,\n organization: state.organization\n }));\n },\n\n async validateProduct(product) {\n const serverProduct = await api.fetchProduct(product._id);\n \n if (!serverProduct) {\n return false;\n }\n\n return serverProduct.price === product.price &&\n serverProduct.name === product.name &&\n serverProduct.available !== false;\n }\n};\n\n/////////////////////////////\n// SYNC PRODUCT IN SHOPCART\n/////////////////////////////\n// Constants\nconst CART_STORAGE_KEY = 'shopcart';\nconst SYNC_INTERVAL = 30000; // 30 seconds in milliseconds\n\n// API service\nconst api = {\n async fetchProduct(productId) {\n try {\n const response = await fetch(`/api/products/read`, { _id: productId});\n return await response.json();\n } catch (error) {\n console.error('Failed to fetch product:', error);\n return null;\n }\n }\n};\n\nasync function syncWithServer() {\n try {\n const invalidProducts = [];\n \n for (let i = 0; i < state.positions.length; i++) {\n const product = state.positions[i];\n const serverProduct = await api.fetchProduct(product._id);\n \n if (!serverProduct || \n serverProduct.price !== product.price || \n serverProduct.name !== product.name || \n serverProduct.available === false) {\n invalidProducts.push(product._id);\n }\n }\n\n if (invalidProducts.length > 0) {\n state.positions = state.positions.filter(\n product => !invalidProducts.includes(product._id)\n );\n helpers.saveToStorage();\n setError('Some products were removed from cart due to changes on server');\n }\n } catch (error) {\n console.error('Failed to sync with server:', error);\n }\n}\n// Initialize periodic sync\nlet syncInterval;\n\nconst startPeriodicSync = () => {\n syncInterval = setInterval(syncWithServer, SYNC_INTERVAL);\n};\n\nconst stopPeriodicSync = () => {\n if (syncInterval) {\n clearInterval(syncInterval);\n }\n};\n\n// Start sync when module is imported\n// startPeriodicSync();\n/////////////////////////////\n// Actions\n/////////////////////////////\nconst actions = {\n\n toggleShopcart () {\n state.currentState = state.currentState ? false : true;\n },\n\n setShopcart() {\n try {\n const storedShopcart = localStorage.getItem('shopcart');\n\n if (storedShopcart) {\n const shopcartData = JSON.parse(storedShopcart);\n state.positions = shopcartData.positions; // Восстанавливаем продукты\n state.organization = shopcartData.organization; // Восстанавливаем _id организации\n } \n } catch (error) {\n console.error(error);\n throw error;\n }\n },\n\n\n addProductToCart(product, organization, date) {\n console.log('organization shopcart is', organization)\n const cartItem = state.positions.find(\n (item) => item._id === product._id\n );\n\n if (cartItem) {\n cartItem.quantity++;\n } else {\n state.positions.push({\n _id: product._id,\n images: product.images,\n name: product.name,\n listing: product.listing,\n price: product.price,\n quantity: 1,\n date: date, \n org_id: organization, // Добавляем _id организации к каждому продукту\n });\n }\n state.organization = organization\n\n // Обновляем объект корзины в localStorage, включая _id организации\n localStorage.setItem('shopcart', JSON.stringify({\n positions: state.positions,\n organization: organization // Сохраняем _id организации в корне объекта корзины\n }));\n },\n\n\n removeProduct(_id) {\n const cartItem = state.positions.find(\n (item) => item._id === _id\n );\n const cartItemIndex = state.positions.indexOf(cartItem);\n\n if (cartItemIndex > -1) {\n state.positions.splice(cartItemIndex, 1);\n \n // Сохраняем весь объект корзины, а не только позиции\n localStorage.setItem('shopcart', JSON.stringify({\n positions: state.positions,\n organization: state.organization\n }));\n }\n },\n\n\n decrementItemQuantity(_id) {\n const cartItem = state.positions.find(\n (item) => item._id === _id\n );\n const cartItemIndex = state.positions.indexOf(cartItem);\n \n if (cartItemIndex > -1) {\n cartItem.quantity--;\n \n if (cartItem.quantity < 1) {\n state.positions.splice(cartItemIndex, 1);\n }\n\n // Сохраняем весь объект корзины, а не только позиции\n localStorage.setItem('shopcart', JSON.stringify({\n positions: state.positions,\n organization: state.organization\n }));\n }\n },\n\n\n incrementItemQuantity(_id) {\n const cartItem = state.positions.find(\n (item) => item._id === _id\n );\n\n if (cartItem) {\n cartItem.quantity++;\n\n // Сохраняем весь объект корзины, а не только позиции\n localStorage.setItem('shopcart', JSON.stringify({\n positions: state.positions,\n organization: state.organization\n }));\n }\n },\n\n updateRentDates({ productId, dates }) {\n const product = state.positions.find(p => p._id === productId)\n\n if (product) {\n product.date = dates // Предполагается, что dates — объект { start, end }\n }\n\n localStorage.setItem('shopcart', JSON.stringify({\n positions: state.positions,\n organization: state.organization\n }));\n },\n\n\n resetShopcart() {\n state.positions = [];\n \n localStorage.removeItem('shopcart');\n },\n};\n\n/////////////////////////////\n// Getters\n/////////////////////////////\nconst getters = {\n cartTotalPrice: computed(() => {\n return Number(state.positions.reduce((total, product) => {\n // Проверяем тип листинга\n if (product.listing === 'rent') {\n const start = new Date(product.date.start)\n const end = new Date(product.date.end)\n const diffTime = Math.abs(end - start)\n return total + product.price * (Math.ceil(diffTime / (1000 * 60 * 60 * 24)) + 1);\n } else {\n // Для обычных товаров умножаем на количество\n return total + product.price * (product.quantity || 1);\n }\n }, 0));\n }),\n cartTotalAmount: computed(() => {\n return Number(state.positions.reduce((total, product) => {\n return total + product.quantity;\n }, 0));\n }),\n getStoreCartState: computed(() => {\n return Number(state.currentState);\n }),\n};\n/////////////////////////////\n// History\n/////////////////////////////\nconst history = []\nhistory.push(state) \n\n/////////////////////////////\n// Watch\n/////////////////////////////\nwatch(state, (newState, oldState) => {\n history.push(newState)\n})\n\n/////////////////////////////\n// Module Export\n/////////////////////////////\nexport {\n state,\n actions,\n getters\n}"],"names":["reactive","computed","watch"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shopcart.js","sources":["../../../../../../src/modules/orders/store/shopcart.js"],"sourcesContent":["/////////////////////////////\n// DEPENDENCIES\n/////////////////////////////\nimport { reactive, watch, computed } from \"vue\";\n// Dependencies\nimport Cookies from 'js-cookie'\n// Globals \nimport { setError } from '@martyrs/src/modules/globals/views/store/globals'\n\n/////////////////////////////\n// State\n/////////////////////////////\nconst state = reactive({\n organization: null,\n positions: [],\n currentState: false\n});\n\n/////////////////////////////\n// Helpers\n/////////////////////////////\nconst helpers = {\n createCartItem(product, organization, type = 'sale') {\n return {\n _id: product._id,\n images: product.images,\n name: product.name,\n price: product.price,\n listing: product.listing,\n quantity: 1,\n org_id: organization,\n type: type\n };\n },\n\n saveToStorage() {\n localStorage.setItem(CART_STORAGE_KEY, JSON.stringify({\n positions: state.positions,\n organization: state.organization\n }));\n },\n\n async validateProduct(product) {\n const serverProduct = await api.fetchProduct(product._id);\n \n if (!serverProduct) {\n return false;\n }\n\n return serverProduct.price === product.price &&\n serverProduct.name === product.name &&\n serverProduct.available !== false;\n }\n};\n\n/////////////////////////////\n// SYNC PRODUCT IN SHOPCART\n/////////////////////////////\n// Constants\nconst CART_STORAGE_KEY = 'shopcart';\nconst SYNC_INTERVAL = 30000; // 30 seconds in milliseconds\n\n// API service\nconst api = {\n async fetchProduct(productId) {\n try {\n const response = await fetch(`/api/products/read`, { _id: productId});\n return await response.json();\n } catch (error) {\n console.error('Failed to fetch product:', error);\n return null;\n }\n }\n};\n\nasync function syncWithServer() {\n try {\n const invalidProducts = [];\n \n for (let i = 0; i < state.positions.length; i++) {\n const product = state.positions[i];\n const serverProduct = await api.fetchProduct(product._id);\n \n if (!serverProduct || \n serverProduct.price !== product.price || \n serverProduct.name !== product.name || \n serverProduct.available === false) {\n invalidProducts.push(product._id);\n }\n }\n\n if (invalidProducts.length > 0) {\n state.positions = state.positions.filter(\n product => !invalidProducts.includes(product._id)\n );\n helpers.saveToStorage();\n setError('Some products were removed from cart due to changes on server');\n }\n } catch (error) {\n console.error('Failed to sync with server:', error);\n }\n}\n// Initialize periodic sync\nlet syncInterval;\n\nconst startPeriodicSync = () => {\n syncInterval = setInterval(syncWithServer, SYNC_INTERVAL);\n};\n\nconst stopPeriodicSync = () => {\n if (syncInterval) {\n clearInterval(syncInterval);\n }\n};\n\n// Start sync when module is imported\n// startPeriodicSync();\n/////////////////////////////\n// Actions\n/////////////////////////////\nconst actions = {\n\n toggleShopcart () {\n state.currentState = state.currentState ? false : true;\n },\n\n setShopcart() {\n try {\n const storedShopcart = localStorage.getItem('shopcart');\n\n if (storedShopcart) {\n const shopcartData = JSON.parse(storedShopcart);\n state.positions = shopcartData.positions; // Восстанавливаем продукты\n state.organization = shopcartData.organization; // Восстанавливаем _id организации\n } \n } catch (error) {\n console.error(error);\n throw error;\n }\n },\n\n\n addProductToCart(product, organization, date) {\n console.log('organization shopcart is', organization)\n const cartItem = state.positions.find(\n (item) => item._id === product._id\n );\n\n if (cartItem) {\n cartItem.quantity++;\n } else {\n state.positions.push({\n _id: product._id,\n images: product.images,\n name: product.name,\n listing: product.listing,\n price: product.price,\n quantity: 1,\n date: date, \n org_id: organization, // Добавляем _id организации к каждому продукту\n });\n }\n\n // Обновляем объект корзины в localStorage, включая _id организации\n localStorage.setItem('shopcart', JSON.stringify({\n positions: state.positions,\n organization: organization // Сохраняем _id организации в корне объекта корзины\n }));\n },\n\n\n removeProduct(_id) {\n const cartItem = state.positions.find(\n (item) => item._id === _id\n );\n const cartItemIndex = state.positions.indexOf(cartItem);\n\n if (cartItemIndex > -1) {\n state.positions.splice(cartItemIndex, 1);\n \n // Сохраняем весь объект корзины, а не только позиции\n localStorage.setItem('shopcart', JSON.stringify({\n positions: state.positions,\n organization: state.organization\n }));\n }\n },\n\n\n decrementItemQuantity(_id) {\n const cartItem = state.positions.find(\n (item) => item._id === _id\n );\n const cartItemIndex = state.positions.indexOf(cartItem);\n \n if (cartItemIndex > -1) {\n cartItem.quantity--;\n \n if (cartItem.quantity < 1) {\n state.positions.splice(cartItemIndex, 1);\n }\n\n // Сохраняем весь объект корзины, а не только позиции\n localStorage.setItem('shopcart', JSON.stringify({\n positions: state.positions,\n organization: state.organization\n }));\n }\n },\n\n\n incrementItemQuantity(_id) {\n const cartItem = state.positions.find(\n (item) => item._id === _id\n );\n\n if (cartItem) {\n cartItem.quantity++;\n\n // Сохраняем весь объект корзины, а не только позиции\n localStorage.setItem('shopcart', JSON.stringify({\n positions: state.positions,\n organization: state.organization\n }));\n }\n },\n\n updateRentDates({ productId, dates }) {\n const product = state.positions.find(p => p._id === productId)\n\n if (product) {\n product.date = dates // Предполагается, что dates — объект { start, end }\n }\n\n localStorage.setItem('shopcart', JSON.stringify({\n positions: state.positions,\n organization: state.organization\n }));\n },\n\n\n resetShopcart() {\n state.positions = [];\n \n localStorage.removeItem('shopcart');\n },\n};\n\n/////////////////////////////\n// Getters\n/////////////////////////////\nconst getters = {\n cartTotalPrice: computed(() => {\n return Number(state.positions.reduce((total, product) => {\n // Проверяем тип листинга\n if (product.listing === 'rent') {\n const start = new Date(product.date.start)\n const end = new Date(product.date.end)\n const diffTime = Math.abs(end - start)\n return total + product.price * (Math.ceil(diffTime / (1000 * 60 * 60 * 24)) + 1);\n } else {\n // Для обычных товаров умножаем на количество\n return total + product.price * (product.quantity || 1);\n }\n }, 0));\n }),\n cartTotalAmount: computed(() => {\n return Number(state.positions.reduce((total, product) => {\n return total + product.quantity;\n }, 0));\n }),\n getStoreCartState: computed(() => {\n return Number(state.currentState);\n }),\n};\n/////////////////////////////\n// History\n/////////////////////////////\nconst history = []\nhistory.push(state) \n\n/////////////////////////////\n// Watch\n/////////////////////////////\nwatch(state, (newState, oldState) => {\n history.push(newState)\n})\n\n/////////////////////////////\n// Module Export\n/////////////////////////////\nexport {\n state,\n actions,\n getters\n}"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shopcart.js","sources":["../../../../../../src/modules/orders/store/shopcart.js"],"sourcesContent":["/////////////////////////////\n// DEPENDENCIES\n/////////////////////////////\nimport { reactive, watch, computed } from \"vue\";\n// Dependencies\nimport Cookies from 'js-cookie'\n// Globals \nimport { setError } from '@martyrs/src/modules/globals/views/store/globals'\n\n/////////////////////////////\n// State\n/////////////////////////////\nconst state = reactive({\n organization: null,\n positions: [],\n currentState: false\n});\n\n/////////////////////////////\n// Helpers\n/////////////////////////////\nconst helpers = {\n createCartItem(product, organization, type = 'sale') {\n return {\n _id: product._id,\n images: product.images,\n name: product.name,\n price: product.price,\n listing: product.listing,\n quantity: 1,\n org_id: organization,\n type: type\n };\n },\n\n saveToStorage() {\n localStorage.setItem(CART_STORAGE_KEY, JSON.stringify({\n positions: state.positions,\n organization: state.organization\n }));\n },\n\n async validateProduct(product) {\n const serverProduct = await api.fetchProduct(product._id);\n \n if (!serverProduct) {\n return false;\n }\n\n return serverProduct.price === product.price &&\n serverProduct.name === product.name &&\n serverProduct.available !== false;\n }\n};\n\n/////////////////////////////\n// SYNC PRODUCT IN SHOPCART\n/////////////////////////////\n// Constants\nconst CART_STORAGE_KEY = 'shopcart';\nconst SYNC_INTERVAL = 30000; // 30 seconds in milliseconds\n\n// API service\nconst api = {\n async fetchProduct(productId) {\n try {\n const response = await fetch(`/api/products/read`, { _id: productId});\n return await response.json();\n } catch (error) {\n console.error('Failed to fetch product:', error);\n return null;\n }\n }\n};\n\nasync function syncWithServer() {\n try {\n const invalidProducts = [];\n \n for (let i = 0; i < state.positions.length; i++) {\n const product = state.positions[i];\n const serverProduct = await api.fetchProduct(product._id);\n \n if (!serverProduct || \n serverProduct.price !== product.price || \n serverProduct.name !== product.name || \n serverProduct.available === false) {\n invalidProducts.push(product._id);\n }\n }\n\n if (invalidProducts.length > 0) {\n state.positions = state.positions.filter(\n product => !invalidProducts.includes(product._id)\n );\n helpers.saveToStorage();\n setError('Some products were removed from cart due to changes on server');\n }\n } catch (error) {\n console.error('Failed to sync with server:', error);\n }\n}\n// Initialize periodic sync\nlet syncInterval;\n\nconst startPeriodicSync = () => {\n syncInterval = setInterval(syncWithServer, SYNC_INTERVAL);\n};\n\nconst stopPeriodicSync = () => {\n if (syncInterval) {\n clearInterval(syncInterval);\n }\n};\n\n// Start sync when module is imported\n// startPeriodicSync();\n/////////////////////////////\n// Actions\n/////////////////////////////\nconst actions = {\n\n toggleShopcart () {\n state.currentState = state.currentState ? false : true;\n },\n\n setShopcart() {\n try {\n const storedShopcart = localStorage.getItem('shopcart');\n\n if (storedShopcart) {\n const shopcartData = JSON.parse(storedShopcart);\n state.positions = shopcartData.positions; // Восстанавливаем продукты\n state.organization = shopcartData.organization; // Восстанавливаем _id организации\n } \n } catch (error) {\n console.error(error);\n throw error;\n }\n },\n\n\n addProductToCart(product, organization, date) {\n console.log('organization shopcart is', organization)\n const cartItem = state.positions.find(\n (item) => item._id === product._id\n );\n\n if (cartItem) {\n cartItem.quantity++;\n } else {\n state.positions.push({\n _id: product._id,\n images: product.images,\n name: product.name,\n listing: product.listing,\n price: product.price,\n quantity: 1,\n date: date, \n org_id: organization, // Добавляем _id организации к каждому продукту\n });\n }\n state.organization = organization\n\n // Обновляем объект корзины в localStorage, включая _id организации\n localStorage.setItem('shopcart', JSON.stringify({\n positions: state.positions,\n organization: organization // Сохраняем _id организации в корне объекта корзины\n }));\n },\n\n\n removeProduct(_id) {\n const cartItem = state.positions.find(\n (item) => item._id === _id\n );\n const cartItemIndex = state.positions.indexOf(cartItem);\n\n if (cartItemIndex > -1) {\n state.positions.splice(cartItemIndex, 1);\n \n // Сохраняем весь объект корзины, а не только позиции\n localStorage.setItem('shopcart', JSON.stringify({\n positions: state.positions,\n organization: state.organization\n }));\n }\n },\n\n\n decrementItemQuantity(_id) {\n const cartItem = state.positions.find(\n (item) => item._id === _id\n );\n const cartItemIndex = state.positions.indexOf(cartItem);\n \n if (cartItemIndex > -1) {\n cartItem.quantity--;\n \n if (cartItem.quantity < 1) {\n state.positions.splice(cartItemIndex, 1);\n }\n\n // Сохраняем весь объект корзины, а не только позиции\n localStorage.setItem('shopcart', JSON.stringify({\n positions: state.positions,\n organization: state.organization\n }));\n }\n },\n\n\n incrementItemQuantity(_id) {\n const cartItem = state.positions.find(\n (item) => item._id === _id\n );\n\n if (cartItem) {\n cartItem.quantity++;\n\n // Сохраняем весь объект корзины, а не только позиции\n localStorage.setItem('shopcart', JSON.stringify({\n positions: state.positions,\n organization: state.organization\n }));\n }\n },\n\n updateRentDates({ productId, dates }) {\n const product = state.positions.find(p => p._id === productId)\n\n if (product) {\n product.date = dates // Предполагается, что dates — объект { start, end }\n }\n\n localStorage.setItem('shopcart', JSON.stringify({\n positions: state.positions,\n organization: state.organization\n }));\n },\n\n\n resetShopcart() {\n state.positions = [];\n \n localStorage.removeItem('shopcart');\n },\n};\n\n/////////////////////////////\n// Getters\n/////////////////////////////\nconst getters = {\n cartTotalPrice: computed(() => {\n return Number(state.positions.reduce((total, product) => {\n // Проверяем тип листинга\n if (product.listing === 'rent') {\n const start = new Date(product.date.start)\n const end = new Date(product.date.end)\n const diffTime = Math.abs(end - start)\n return total + product.price * (Math.ceil(diffTime / (1000 * 60 * 60 * 24)) + 1);\n } else {\n // Для обычных товаров умножаем на количество\n return total + product.price * (product.quantity || 1);\n }\n }, 0));\n }),\n cartTotalAmount: computed(() => {\n return Number(state.positions.reduce((total, product) => {\n return total + product.quantity;\n }, 0));\n }),\n getStoreCartState: computed(() => {\n return Number(state.currentState);\n }),\n};\n/////////////////////////////\n// History\n/////////////////////////////\nconst history = []\nhistory.push(state) \n\n/////////////////////////////\n// Watch\n/////////////////////////////\nwatch(state, (newState, oldState) => {\n history.push(newState)\n})\n\n/////////////////////////////\n// Module Export\n/////////////////////////////\nexport {\n state,\n actions,\n getters\n}"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
|
|
|
3
3
|
const vue = require("vue");
|
|
4
4
|
const vueRouter = require("vue-router");
|
|
5
5
|
const CardOrderItem = require("../../../orders/components/blocks/CardOrderItem.vue.cjs");
|
|
6
|
-
const Chips = require("../../../../components/Chips/Chips.
|
|
6
|
+
const Chips = require("../../../../components/Chips/Chips.vue.cjs");
|
|
7
7
|
const PlaceholderOrganizationPic = require("../../../icons/placeholders/PlaceholderOrganizationPic.vue.cjs");
|
|
8
8
|
const IconShopcart = require("../../../icons/entities/IconShopcart.vue.cjs");
|
|
9
9
|
const IconTime = require("../../../icons/entities/IconTime.vue.cjs");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createElementBlock, openBlock, createElementVNode, createCommentVNode, createBlock, toDisplayString, withCtx, createVNode, Fragment, renderList, withModifiers } from "vue";
|
|
2
2
|
import { useRouter } from "vue-router";
|
|
3
3
|
import _sfc_main$4 from "../../../orders/components/blocks/CardOrderItem.vue.js";
|
|
4
|
-
import _sfc_main$1 from "../../../../components/Chips/Chips.
|
|
4
|
+
import _sfc_main$1 from "../../../../components/Chips/Chips.vue.js";
|
|
5
5
|
import PlaceholderOrganizationPic from "../../../icons/placeholders/PlaceholderOrganizationPic.vue.js";
|
|
6
6
|
import _sfc_main$3 from "../../../icons/entities/IconShopcart.vue.js";
|
|
7
7
|
import IconTime from "../../../icons/entities/IconTime.vue.js";
|
|
@@ -11,7 +11,7 @@ const Field = require("../../../../components/Field/Field.vue.cjs");
|
|
|
11
11
|
const Checkbox = require("../../../../components/Checkbox/Checkbox.vue.cjs");
|
|
12
12
|
require("../../../../../../node_modules/.pnpm/@googlemaps_js-api-loader@1.16.8/node_modules/@googlemaps/js-api-loader/dist/index.cjs");
|
|
13
13
|
;/* empty css */
|
|
14
|
-
;/* empty css
|
|
14
|
+
;/* empty css */
|
|
15
15
|
;/* empty css */
|
|
16
16
|
const Button = require("../../../../components/Button/Button.vue2.cjs");
|
|
17
17
|
const Popup = require("../../../../components/Popup/Popup.vue.cjs");
|
|
@@ -9,7 +9,7 @@ import Field from "../../../../components/Field/Field.vue.js";
|
|
|
9
9
|
import _sfc_main$8 from "../../../../components/Checkbox/Checkbox.vue.js";
|
|
10
10
|
import "../../../../../../node_modules/.pnpm/@googlemaps_js-api-loader@1.16.8/node_modules/@googlemaps/js-api-loader/dist/index.js";
|
|
11
11
|
/* empty css */
|
|
12
|
-
/* empty css
|
|
12
|
+
/* empty css */
|
|
13
13
|
/* empty css */
|
|
14
14
|
import _sfc_main$1 from "../../../../components/Button/Button.vue2.js";
|
|
15
15
|
import _sfc_main$6 from "../../../../components/Popup/Popup.vue.js";
|
|
@@ -4,7 +4,7 @@ const vue = require("vue");
|
|
|
4
4
|
const vueRouter = require("vue-router");
|
|
5
5
|
const Feed = require("../../../../components/Feed/Feed.vue.cjs");
|
|
6
6
|
;/* empty css */
|
|
7
|
-
;/* empty css
|
|
7
|
+
;/* empty css */
|
|
8
8
|
const Popup = require("../../../../components/Popup/Popup.vue.cjs");
|
|
9
9
|
const SectionPageTitle = require("../../../globals/views/components/sections/SectionPageTitle.vue.cjs");
|
|
10
10
|
const MembersAdd = require("../sections/MembersAdd.vue.cjs");
|
|
@@ -2,7 +2,7 @@ import { ref, onMounted, computed, resolveComponent, createElementBlock, openBlo
|
|
|
2
2
|
import { useRoute, useRouter } from "vue-router";
|
|
3
3
|
import _sfc_main$4 from "../../../../components/Feed/Feed.vue.js";
|
|
4
4
|
/* empty css */
|
|
5
|
-
/* empty css
|
|
5
|
+
/* empty css */
|
|
6
6
|
import _sfc_main$2 from "../../../../components/Popup/Popup.vue.js";
|
|
7
7
|
import _sfc_main$1 from "../../../globals/views/components/sections/SectionPageTitle.vue.js";
|
|
8
8
|
import _sfc_main$3 from "../sections/MembersAdd.vue.js";
|
package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
3
|
const vue = require("vue");
|
|
4
4
|
const vueRouter = require("vue-router");
|
|
5
|
-
const Dropdown = require("../../../../components/Dropdown/Dropdown.
|
|
5
|
+
const Dropdown = require("../../../../components/Dropdown/Dropdown.vue2.cjs");
|
|
6
6
|
const Text = require("../../../../components/Text/Text.vue.cjs");
|
|
7
|
-
const Chips = require("../../../../components/Chips/Chips.
|
|
7
|
+
const Chips = require("../../../../components/Chips/Chips.vue.cjs");
|
|
8
8
|
const IconFollowing = require("../../../icons/entities/IconFollowing.vue.cjs");
|
|
9
9
|
const IconEdit = require("../../../icons/navigation/IconEdit.vue.cjs");
|
|
10
10
|
const IconEllipsis = require("../../../icons/navigation/IconEllipsis.vue.cjs");
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { resolveComponent, createElementBlock, openBlock, createBlock, createCommentVNode, createElementVNode, createVNode, renderSlot, withCtx, toDisplayString, unref } from "vue";
|
|
2
2
|
import { useRoute } from "vue-router";
|
|
3
|
-
import _sfc_main$1 from "../../../../components/Dropdown/Dropdown.
|
|
3
|
+
import _sfc_main$1 from "../../../../components/Dropdown/Dropdown.vue2.js";
|
|
4
4
|
import _sfc_main$7 from "../../../../components/Text/Text.vue.js";
|
|
5
|
-
import _sfc_main$8 from "../../../../components/Chips/Chips.
|
|
5
|
+
import _sfc_main$8 from "../../../../components/Chips/Chips.vue.js";
|
|
6
6
|
import _sfc_main$6 from "../../../icons/entities/IconFollowing.vue.js";
|
|
7
7
|
import _sfc_main$5 from "../../../icons/navigation/IconEdit.vue.js";
|
|
8
8
|
import _sfc_main$2 from "../../../icons/navigation/IconEllipsis.vue.js";
|
|
@@ -4,7 +4,7 @@ const vue = require("vue");
|
|
|
4
4
|
const vueRouter = require("vue-router");
|
|
5
5
|
const Field = require("../../../../components/Field/Field.vue.cjs");
|
|
6
6
|
;/* empty css */
|
|
7
|
-
;/* empty css
|
|
7
|
+
;/* empty css */
|
|
8
8
|
const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.cjs");
|
|
9
9
|
;/* empty css */
|
|
10
10
|
const _hoisted_1 = { class: "documents" };
|
|
@@ -2,7 +2,7 @@ import { ref, watchEffect, resolveComponent, createElementBlock, openBlock, crea
|
|
|
2
2
|
import { useRouter, useRoute } from "vue-router";
|
|
3
3
|
import Field from "../../../../components/Field/Field.vue.js";
|
|
4
4
|
/* empty css */
|
|
5
|
-
/* empty css
|
|
5
|
+
/* empty css */
|
|
6
6
|
import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
|
|
7
7
|
/* empty css */
|
|
8
8
|
const _hoisted_1 = { class: "documents" };
|
|
@@ -4,7 +4,7 @@ const vue = require("vue");
|
|
|
4
4
|
const vueRouter = require("vue-router");
|
|
5
5
|
require("../../../../../../node_modules/.pnpm/js-cookie@3.0.5/node_modules/js-cookie/dist/js.cookie.cjs");
|
|
6
6
|
;/* empty css */
|
|
7
|
-
;/* empty css
|
|
7
|
+
;/* empty css */
|
|
8
8
|
;/* empty css */
|
|
9
9
|
const CardOrganization = require("../blocks/CardOrganization.vue.cjs");
|
|
10
10
|
const EmptyState = require("../blocks/EmptyState.vue.cjs");
|
|
@@ -2,7 +2,7 @@ import { ref, withAsyncContext, watch, createElementBlock, openBlock, createElem
|
|
|
2
2
|
import { useRouter, useRoute } from "vue-router";
|
|
3
3
|
import "../../../../../../node_modules/.pnpm/js-cookie@3.0.5/node_modules/js-cookie/dist/js.cookie.js";
|
|
4
4
|
/* empty css */
|
|
5
|
-
/* empty css
|
|
5
|
+
/* empty css */
|
|
6
6
|
/* empty css */
|
|
7
7
|
import _sfc_main$2 from "../blocks/CardOrganization.vue.js";
|
|
8
8
|
import _sfc_main$1 from "../blocks/EmptyState.vue.js";
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
|
|
|
3
3
|
const vue = require("vue");
|
|
4
4
|
const IconEdit = require("../../../../icons/navigation/IconEdit.vue.cjs");
|
|
5
5
|
const IconAdd = require("../../../../icons/navigation/IconAdd.vue.cjs");
|
|
6
|
-
;/* empty css
|
|
6
|
+
;/* empty css */
|
|
7
7
|
;/* empty css */
|
|
8
8
|
const vueRouter = require("vue-router");
|
|
9
9
|
;/* empty css */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ref, resolveComponent, createElementBlock, openBlock, createElementVNode, createCommentVNode, normalizeClass, createVNode, createBlock, unref, withCtx, createTextVNode, toDisplayString, Fragment, renderList } from "vue";
|
|
2
2
|
import _sfc_main$1 from "../../../../icons/navigation/IconEdit.vue.js";
|
|
3
3
|
import _sfc_main$2 from "../../../../icons/navigation/IconAdd.vue.js";
|
|
4
|
-
/* empty css
|
|
4
|
+
/* empty css */
|
|
5
5
|
/* empty css */
|
|
6
6
|
import { useRouter } from "vue-router";
|
|
7
7
|
/* empty css */
|
|
@@ -6,7 +6,7 @@ const mixins = require("../../../../globals/views/mixins/mixins.cjs");
|
|
|
6
6
|
const pages = require("../../store/pages.cjs");
|
|
7
7
|
const Button = require("../../../../../components/Button/Button.vue2.cjs");
|
|
8
8
|
;/* empty css */
|
|
9
|
-
;/* empty css
|
|
9
|
+
;/* empty css */
|
|
10
10
|
const Constructor = require("../../../../constructor/components/sections/Constructor.vue.cjs");
|
|
11
11
|
const _hoisted_1 = { key: 0 };
|
|
12
12
|
const _hoisted_2 = {
|
|
@@ -4,7 +4,7 @@ import { useGlobalMixins } from "../../../../globals/views/mixins/mixins.js";
|
|
|
4
4
|
import { actions, state } from "../../store/pages.js";
|
|
5
5
|
import _sfc_main$2 from "../../../../../components/Button/Button.vue2.js";
|
|
6
6
|
/* empty css */
|
|
7
|
-
/* empty css
|
|
7
|
+
/* empty css */
|
|
8
8
|
import _sfc_main$1 from "../../../../constructor/components/sections/Constructor.vue.js";
|
|
9
9
|
const _hoisted_1 = { key: 0 };
|
|
10
10
|
const _hoisted_2 = {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
3
|
const vue = require("vue");
|
|
4
|
-
const Loader = require("../../../../components/Loader/Loader.
|
|
4
|
+
const Loader = require("../../../../components/Loader/Loader.vue.cjs");
|
|
5
5
|
const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.cjs");
|
|
6
6
|
const _hoisted_1 = { class: "product-360-viewer" };
|
|
7
7
|
const _hoisted_2 = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ref, computed, watch, onMounted, onUnmounted, createElementBlock, openBlock, createStaticVNode, createVNode, Transition, withCtx, createCommentVNode, withModifiers, createBlock } from "vue";
|
|
2
|
-
import Loader from "../../../../components/Loader/Loader.
|
|
2
|
+
import Loader from "../../../../components/Loader/Loader.vue.js";
|
|
3
3
|
import _export_sfc from "../../../../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
4
|
const _hoisted_1 = { class: "product-360-viewer" };
|
|
5
5
|
const _hoisted_2 = {
|
|
@@ -5,7 +5,7 @@ const vueRouter = require("vue-router");
|
|
|
5
5
|
const globals = require("../../../globals/views/store/globals.cjs");
|
|
6
6
|
const auth = require("../../../auth/views/store/auth.cjs");
|
|
7
7
|
const categories = require("../../store/categories.cjs");
|
|
8
|
-
;/* empty css
|
|
8
|
+
;/* empty css */
|
|
9
9
|
;/* empty css */
|
|
10
10
|
const Block = require("../../../../components/Block/Block.vue.cjs");
|
|
11
11
|
const Feed = require("../../../../components/Feed/Feed.vue.cjs");
|
|
@@ -3,7 +3,7 @@ import { useRoute, useRouter } from "vue-router";
|
|
|
3
3
|
import { state as state$1 } from "../../../globals/views/store/globals.js";
|
|
4
4
|
import { state } from "../../../auth/views/store/auth.js";
|
|
5
5
|
import { state as state$2, actions } from "../../store/categories.js";
|
|
6
|
-
/* empty css
|
|
6
|
+
/* empty css */
|
|
7
7
|
/* empty css */
|
|
8
8
|
import _sfc_main$2 from "../../../../components/Block/Block.vue.js";
|
|
9
9
|
import _sfc_main$3 from "../../../../components/Feed/Feed.vue.js";
|
|
@@ -7,8 +7,8 @@ const Button = require("../../../../components/Button/Button.vue2.cjs");
|
|
|
7
7
|
const Select = require("../../../../components/Select/Select.vue.cjs");
|
|
8
8
|
const UploadImage = require("../../../../components/UploadImage/UploadImage.vue.cjs");
|
|
9
9
|
const Field = require("../../../../components/Field/Field.vue.cjs");
|
|
10
|
-
;/* empty css
|
|
11
|
-
;/* empty css
|
|
10
|
+
;/* empty css */
|
|
11
|
+
;/* empty css */
|
|
12
12
|
;/* empty css */
|
|
13
13
|
;/* empty css */
|
|
14
14
|
const Block = require("../../../../components/Block/Block.vue.cjs");
|
|
@@ -59,9 +59,28 @@ const _sfc_main = {
|
|
|
59
59
|
});
|
|
60
60
|
async function onSubmit() {
|
|
61
61
|
if (route.params.category) {
|
|
62
|
+
categories.state.current.creator = {
|
|
63
|
+
type: categories.state.current.creator.type,
|
|
64
|
+
hidden: categories.state.current.creator.hidden,
|
|
65
|
+
target: categories.state.current.creator.target._id
|
|
66
|
+
};
|
|
67
|
+
categories.state.current.owner = {
|
|
68
|
+
type: categories.state.current.owner.type,
|
|
69
|
+
target: categories.state.current.owner.target._id
|
|
70
|
+
};
|
|
62
71
|
await categories.actions.update(categories.state.current);
|
|
63
72
|
redirectTo();
|
|
64
73
|
} else {
|
|
74
|
+
categories.state.current.creator = {
|
|
75
|
+
type: "user",
|
|
76
|
+
hidden: false,
|
|
77
|
+
target: auth.state.user._id
|
|
78
|
+
};
|
|
79
|
+
categories.state.current.owner = {
|
|
80
|
+
type: route.params._id ? "organization" : "platform",
|
|
81
|
+
hidden: false,
|
|
82
|
+
target: route.params._id ? route.params._id : null
|
|
83
|
+
};
|
|
65
84
|
await categories.actions.create(categories.state.current);
|
|
66
85
|
redirectTo();
|
|
67
86
|
}
|