@ozdao/martyrs 0.2.473 → 0.2.474

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.
Files changed (134) hide show
  1. package/dist/{Media-DW8RLbfM.js → Media-_vz04tII.js} +1 -1
  2. package/dist/{Media-y_TX6us_.mjs → Media-sGk7Bp9b.mjs} +1 -1
  3. package/dist/auth.server.js +6 -2
  4. package/dist/auth.server.mjs +6 -2
  5. package/dist/authJwt-CELQKF2s.js +82 -0
  6. package/dist/authJwt-DnXu3BFq.mjs +83 -0
  7. package/dist/builder.js +7 -4
  8. package/dist/builder.mjs +7 -4
  9. package/dist/chats.server.js +1 -1
  10. package/dist/chats.server.mjs +1 -1
  11. package/dist/community.server.js +4 -4
  12. package/dist/community.server.mjs +4 -4
  13. package/dist/events.server.js +4 -4
  14. package/dist/events.server.mjs +4 -4
  15. package/dist/files.server.js +1 -1
  16. package/dist/files.server.mjs +1 -1
  17. package/dist/gallery.server.js +3 -3
  18. package/dist/gallery.server.mjs +3 -3
  19. package/dist/{globals.abac-DT0VjfaZ.js → globals.abac-Bn-4tbX8.js} +110 -16
  20. package/dist/{globals.abac-CvmZM8XG.mjs → globals.abac-DZpTRxKR.mjs} +110 -16
  21. package/dist/globals.server.js +70 -10
  22. package/dist/globals.server.mjs +70 -10
  23. package/dist/{globals.verifier-C_VZYebB.mjs → globals.verifier-BdJxc8-8.mjs} +34 -0
  24. package/dist/{globals.verifier-ChDpCdy_.js → globals.verifier-CKYpYfQl.js} +34 -0
  25. package/dist/{index-CVXl1rB5.js → index-BOmxJQ5W.js} +7 -86
  26. package/dist/{index-Df8vtZx7.mjs → index-C_Fw0Umg.mjs} +7 -86
  27. package/dist/{main-CgmHzhq5.mjs → main-CqMtW7Hq.mjs} +274 -276
  28. package/dist/{main-CCfQH-Dd.js → main-CsGkbSyK.js} +2 -2
  29. package/dist/martyrs/src/components/Select/Select.vue.cjs +4 -4
  30. package/dist/martyrs/src/components/Select/Select.vue.cjs.map +1 -1
  31. package/dist/martyrs/src/components/Select/Select.vue.js +4 -4
  32. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -1
  33. package/dist/martyrs/src/modules/community/community.client.js +27 -27
  34. package/dist/martyrs/src/modules/community/community.client.js.map +1 -1
  35. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.cjs +2 -3
  36. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.cjs.map +1 -1
  37. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js +2 -3
  38. package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js.map +1 -1
  39. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +88 -27
  40. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs.map +1 -1
  41. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +89 -28
  42. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
  43. package/dist/martyrs/src/modules/orders/store/shopcart.cjs +1 -0
  44. package/dist/martyrs/src/modules/orders/store/shopcart.cjs.map +1 -1
  45. package/dist/martyrs/src/modules/orders/store/shopcart.js +1 -0
  46. package/dist/martyrs/src/modules/orders/store/shopcart.js.map +1 -1
  47. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +19 -0
  48. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
  49. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +19 -0
  50. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  51. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +1 -0
  52. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs.map +1 -1
  53. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +1 -0
  54. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  55. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +2 -2
  56. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs.map +1 -1
  57. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
  58. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
  59. package/dist/martyrs/src/modules/products/store/categories.cjs +2 -0
  60. package/dist/martyrs/src/modules/products/store/categories.cjs.map +1 -1
  61. package/dist/martyrs/src/modules/products/store/categories.js +2 -0
  62. package/dist/martyrs/src/modules/products/store/categories.js.map +1 -1
  63. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +30 -24
  64. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs.map +1 -1
  65. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +30 -24
  66. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js.map +1 -1
  67. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +807 -0
  68. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs.map +1 -0
  69. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +807 -0
  70. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js.map +1 -0
  71. package/dist/martyrs/src/modules/spots/store/spots.cjs +4 -1
  72. package/dist/martyrs/src/modules/spots/store/spots.cjs.map +1 -1
  73. package/dist/martyrs/src/modules/spots/store/spots.js +4 -1
  74. package/dist/martyrs/src/modules/spots/store/spots.js.map +1 -1
  75. package/dist/martyrs.cjs.js +1 -1
  76. package/dist/martyrs.css +1 -1
  77. package/dist/martyrs.es.js +1 -1
  78. package/dist/notifications.server.js +1 -1
  79. package/dist/notifications.server.mjs +1 -1
  80. package/dist/orders.server.js +5 -4
  81. package/dist/orders.server.mjs +5 -4
  82. package/dist/organizations.server.js +120 -47
  83. package/dist/organizations.server.mjs +120 -47
  84. package/dist/{ownership.schema-C0w02Vw1.mjs → ownership.schema-CNCotD3D.mjs} +10 -4
  85. package/dist/{ownership.schema-Ck2H9clB.js → ownership.schema-MxfJlPtq.js} +10 -4
  86. package/dist/products.server.js +415 -149
  87. package/dist/products.server.mjs +415 -149
  88. package/dist/{profile.schema-h61hhB2w.js → profile.schema-BLSuV_VC.js} +0 -4
  89. package/dist/{profile.schema-kP_zKXNt.mjs → profile.schema-BRuvQ7QV.mjs} +0 -4
  90. package/dist/{queryProcessor-CWnMIe2U.mjs → queryProcessor-CVKI651_.mjs} +62 -8
  91. package/dist/{queryProcessor-D6GuKfTV.js → queryProcessor-DSUqSk3I.js} +62 -8
  92. package/dist/rents.server.js +4 -4
  93. package/dist/rents.server.mjs +4 -4
  94. package/dist/spots.server.js +162 -8
  95. package/dist/spots.server.mjs +162 -8
  96. package/dist/style.css +27 -4
  97. package/dist/wallet.server.js +2 -2
  98. package/dist/wallet.server.mjs +2 -2
  99. package/package.json +1 -1
  100. package/src/builder/rspack/rspack.config.base.js +1 -1
  101. package/src/builder/rspack/rspack.config.client.js +13 -5
  102. package/src/components/Select/Select.vue +4 -2
  103. package/src/modules/auth/models/user.model.js +4 -1
  104. package/src/modules/community/components/sections/HotPosts.vue +1 -1
  105. package/src/modules/globals/controllers/classes/globals.abac.js +148 -23
  106. package/src/modules/globals/controllers/classes/globals.validator.js +37 -0
  107. package/src/modules/globals/controllers/classes/globals.verifier.js +2 -0
  108. package/src/modules/globals/controllers/policies/globals.policies.js +91 -74
  109. package/src/modules/globals/controllers/utils/queryProcessor.js +59 -11
  110. package/src/modules/globals/models/schemas/ownership.schema.js +11 -6
  111. package/src/modules/globals/models/schemas/profile.schema.js +0 -4
  112. package/src/modules/music/components/layouts/MusicLayout.vue +10 -58
  113. package/src/modules/music/components/pages/MusicHome.vue +5 -5
  114. package/src/modules/orders/components/pages/OrderCreate.vue +85 -12
  115. package/src/modules/orders/controllers/orders.controller.js +3 -0
  116. package/src/modules/orders/store/shopcart.js +1 -0
  117. package/src/modules/organizations/models/schemas/accesses.schema.js +18 -0
  118. package/src/modules/organizations/policies/organizations.policies.js +117 -61
  119. package/src/modules/products/components/pages/CategoryEdit.vue +27 -2
  120. package/src/modules/products/components/pages/Product.vue +1 -0
  121. package/src/modules/products/components/pages/ProductEdit.vue +2 -2
  122. package/src/modules/products/controllers/categories.controller.js +297 -133
  123. package/src/modules/products/middlewares/categories.verifier.js +177 -0
  124. package/src/modules/products/models/category.model.js +12 -14
  125. package/src/modules/products/routes/categories.routes.js +50 -11
  126. package/src/modules/products/store/categories.js +2 -0
  127. package/src/modules/spots/components/pages/SpotEdit.vue +21 -17
  128. package/src/modules/spots/components/sections/WorktimeEdit.vue +840 -0
  129. package/src/modules/spots/controllers/queries/getIsOpenNowStage.js +109 -0
  130. package/src/modules/spots/controllers/spots.controller.js +2 -1
  131. package/src/modules/spots/models/spot.model.js +59 -13
  132. package/src/modules/spots/store/spots.js +4 -1
  133. package/src/modules/products/middlewares/index.js +0 -11
  134. package/src/modules/products/middlewares/verifyCategory.js +0 -25
@@ -0,0 +1,177 @@
1
+ // middlewares/categories.verifier.js
2
+ const Verifier = require('@martyrs/src/modules/globals/controllers/classes/globals.verifier');
3
+ const Validator = require('@martyrs/src/modules/globals/controllers/classes/globals.validator');
4
+
5
+ module.exports = function(db) {
6
+ // Конфигурация валидатора для запросов
7
+ const queryValidatorConfig = {
8
+ parent: { allowed: true, validator: Validator.schema().string() },
9
+ url: { allowed: true, validator: Validator.schema().string() },
10
+ search: { allowed: true, validator: Validator.schema().string() },
11
+ sortParam: { allowed: true, validator: Validator.schema().string().oneOf(['order', 'name', 'createdAt', 'updatedAt']), default: 'order' },
12
+ sortOrder: { allowed: true, validator: Validator.schema().string().oneOf(['asc', 'desc']), default: 'asc' },
13
+ skip: { allowed: true, validator: Validator.schema().number().integer().min(0), default: 0 },
14
+ limit: { allowed: true, validator: Validator.schema().number().integer().min(1).max(100), default: 10 },
15
+ excludeChildren: { allowed: true, validator: Validator.schema().string().oneOf(['true', 'false']), default: 'true' },
16
+ rootOnly: { allowed: true, validator: Validator.schema().string().oneOf(['true', 'false']), default: 'false' },
17
+ status: { allowed: true, validator: Validator.schema().string().oneOf(['draft', 'internal', 'published', 'removed']) },
18
+ type: { allowed: true, validator: Validator.schema().string().oneOf(['platform', 'organization', 'all']), default: 'all' },
19
+ organizationId: { allowed: true, validator: Validator.schema().string() }
20
+ };
21
+
22
+ const bodyValidatorConfig = {
23
+ _id: { allowed: true, validator: Validator.schema().string() },
24
+ name: { allowed: true, validator: Validator.schema().string().required() },
25
+ description: { allowed: true, validator: Validator.schema().string() },
26
+ photo: { allowed: true, validator: Validator.schema().string() },
27
+ status: { allowed: true, validator: Validator.schema().string().oneOf(['draft', 'internal', 'published', 'removed']), default: 'draft' },
28
+ url: { allowed: true, validator: Validator.schema().string().required() },
29
+ parent: { allowed: true, validator: Validator.schema().oneOfTypes(['string', 'null']) },
30
+ localization: { allowed: true },
31
+ filters: { allowed: true },
32
+ owner: { allowed: true, validator: Validator.schema().object({
33
+ type: Validator.schema().string().oneOf(['platform', 'organization']).required(),
34
+ target: Validator.schema().string()
35
+ }) },
36
+ creator: { allowed: true, validator: Validator.schema().object({
37
+ type: Validator.schema().string().oneOf(['user', 'organization']).required(),
38
+ target: Validator.schema().string()
39
+ }) },
40
+ children: { allowed: true, validator: Validator.schema().array() },
41
+ order: { allowed: true, validator: Validator.schema().number() }
42
+ };
43
+
44
+ const orderBodyValidatorConfig = {
45
+ categories: {
46
+ allowed: true,
47
+ validator: Validator.schema().array().required(),
48
+ default: []
49
+ }
50
+ };
51
+
52
+ const deleteBodyValidatorConfig = {
53
+ url: {
54
+ allowed: true,
55
+ validator: Validator.schema().string().required()
56
+ }
57
+ };
58
+
59
+ const queryVerifier = new Verifier(queryValidatorConfig);
60
+ const bodyVerifier = new Verifier(bodyValidatorConfig);
61
+ const orderBodyVerifier = new Verifier(orderBodyValidatorConfig);
62
+ const deleteBodyVerifier = new Verifier(deleteBodyValidatorConfig);
63
+
64
+ return {
65
+ // Верификация параметров запроса
66
+ verifyQuery(req, res, next) {
67
+ const verification = queryVerifier.verify(req.query);
68
+ if (!verification.isValid) {
69
+ return res.status(400).json({
70
+ errors: verification.verificationErrors,
71
+ message: 'Invalid query parameters'
72
+ });
73
+ }
74
+ req.verifiedQuery = verification.verifiedData;
75
+ next();
76
+ },
77
+
78
+ // Верификация тела запроса для создания/обновления категории
79
+ verifyBody(req, res, next) {
80
+ const verification = bodyVerifier.verify(req.body);
81
+ if (!verification.isValid) {
82
+ return res.status(400).json({
83
+ errors: verification.verificationErrors,
84
+ message: 'Invalid request data'
85
+ });
86
+ }
87
+ req.verifiedBody = verification.verifiedData;
88
+ next();
89
+ },
90
+
91
+ // Верификация тела запроса для обновления порядка категорий
92
+ verifyOrderBody(req, res, next) {
93
+ const verification = orderBodyVerifier.verify(req.body);
94
+ if (!verification.isValid) {
95
+ return res.status(400).json({
96
+ errors: verification.verificationErrors,
97
+ message: 'Invalid request data'
98
+ });
99
+ }
100
+ req.verifiedBody = verification.verifiedData;
101
+ next();
102
+ },
103
+
104
+ // Верификация тела запроса для удаления категории
105
+ verifyDeleteBody(req, res, next) {
106
+ const verification = deleteBodyVerifier.verify(req.body);
107
+ if (!verification.isValid) {
108
+ return res.status(400).json({
109
+ errors: verification.verificationErrors,
110
+ message: 'Invalid request data'
111
+ });
112
+ }
113
+ req.verifiedBody = verification.verifiedData;
114
+ next();
115
+ },
116
+
117
+ // Проверка на существование категории с тем же URL (для создания)
118
+ async checkCategoryExistOrNot(req, res, next) {
119
+ try {
120
+ if (!req.verifiedBody.url) {
121
+ return res.status(400).json({ message: 'URL is required' });
122
+ }
123
+
124
+ const existingCategory = await db.category.findOne({ url: req.verifiedBody.url });
125
+ if (existingCategory) {
126
+ return res.status(409).json({
127
+ message: 'Category with this URL already exists',
128
+ category: existingCategory
129
+ });
130
+ }
131
+ next();
132
+ } catch (error) {
133
+ res.status(500).json({ message: error.message });
134
+ }
135
+ },
136
+
137
+ // Загрузка категории для проверки ABAC (для обновления и удаления)
138
+ async loadCategoryForUpdate(req, res, next) {
139
+ try {
140
+ const categoryId = req.verifiedBody._id;
141
+ if (!categoryId) {
142
+ return res.status(400).json({ message: 'Category ID is required' });
143
+ }
144
+
145
+ const category = await db.category.findById(categoryId).lean();
146
+ if (!category) {
147
+ return res.status(404).json({ message: 'Category not found' });
148
+ }
149
+
150
+ req.currentResource = category; // Устанавливаем для ABAC
151
+ next();
152
+ } catch (error) {
153
+ res.status(500).json({ message: error.message });
154
+ }
155
+ },
156
+
157
+ // Загрузка категории по URL для удаления
158
+ async loadCategoryForDelete(req, res, next) {
159
+ try {
160
+ const url = req.verifiedBody.url;
161
+ if (!url) {
162
+ return res.status(400).json({ message: 'Category URL is required' });
163
+ }
164
+
165
+ const category = await db.category.findOne({ url }).lean();
166
+ if (!category) {
167
+ return res.status(404).json({ message: 'Category not found' });
168
+ }
169
+
170
+ req.currentResource = category; // Устанавливаем для ABAC
171
+ next();
172
+ } catch (error) {
173
+ res.status(500).json({ message: error.message });
174
+ }
175
+ }
176
+ };
177
+ };
@@ -1,29 +1,27 @@
1
+ // models/category.model.js
1
2
  module.exports = (db) => {
2
3
  const CategorySchema = new db.mongoose.Schema({
3
4
  name: { type: String, required: true, trim: true },
4
5
  description: { type: String, trim: true },
5
- photo: {
6
- type: String
7
- },
8
- status: {
9
- type: String,
10
- enum: ['draft','internal','published','removed'],
11
- default: 'draft',
12
- required: true,
13
- },
6
+ photo: { type: String },
14
7
  order: { type: Number, required: true },
15
- url: { type: String, required: true, trim: true },
8
+ url: { type: String, required: true, trim: true, unique: true },
16
9
  parent: { type: db.mongoose.Schema.Types.ObjectId, ref: 'Category' },
17
10
  localization: { type: Array },
18
11
  filters: { type: Array }
19
12
  }, {
20
13
  timestamps: { currentTime: () => Date.now() }
21
14
  });
22
-
15
+
16
+ // Применяем глобальные схемы
17
+ require('@martyrs/src/modules/globals/models/schemas/common.schema')(CategorySchema, db);
18
+ require('@martyrs/src/modules/globals/models/schemas/ownership.schema')(CategorySchema, db);
19
+ require('@martyrs/src/modules/globals/models/schemas/metadata.schema')(CategorySchema, db);
20
+ require('@martyrs/src/modules/globals/models/schemas/engagement.schema')(CategorySchema, db);
21
+
23
22
  CategorySchema.index({ parent: 1 });
24
- CategorySchema.index({ 'owner.target': 1, 'creator.target': 1});
23
+ CategorySchema.index({ name: 1 });
25
24
 
26
25
  const Category = db.mongoose.model('Category', CategorySchema, 'categories');
27
-
28
26
  return Category;
29
- };
27
+ };
@@ -1,18 +1,57 @@
1
- // Factories
2
- const controllerFactory = require("../controllers/categories.controller");
3
- // Middlewares
4
- const middlewareFactoryProducts = require('@martyrs/src/modules/products/middlewares');
1
+ // routes/categories.routes.js
2
+ const controllerFactory = require("../controllers/categories.controller.js");
3
+ const verifierFactory = require('../middlewares/categories.verifier.js');
4
+ const jwtFactory = require('@martyrs/src/modules/auth/controllers/middlewares/authJwt.js');
5
+
6
+ const { getInstance } = require('@martyrs/src/modules/globals/controllers/classes/globals.abac.js');
5
7
 
6
8
  module.exports = function(app, db) {
9
+ const jwt = jwtFactory(db);
10
+ const verifier = verifierFactory(db);
11
+ const abac = getInstance(db);
7
12
  const controller = controllerFactory(db);
8
13
 
9
- const { verifyCategory } = middlewareFactoryProducts(db);
10
-
11
- app.get('/api/categories', controller.read);
12
- app.post('/api/categories/create', [verifyCategory.checkCategoryExistOrNot], controller.create);
13
- app.post('/api/categories/update', controller.update); // For single category updates
14
- app.post('/api/categories/updateOrder', controller.updateOrder); // For updating order of multiple categories
15
- app.post('/api/categories/delete', controller.delete);
14
+ // Маршруты API
15
+ app.get('/api/categories',
16
+ jwt.verifyToken(true),
17
+ verifier.verifyQuery,
18
+ controller.read
19
+ );
20
+
21
+ app.post(
22
+ '/api/categories/create',
23
+ jwt.verifyToken(),
24
+ verifier.verifyBody,
25
+ verifier.checkCategoryExistOrNot,
26
+ abac.middleware('category', 'create'),
27
+ controller.create
28
+ );
29
+
30
+ app.post(
31
+ '/api/categories/update',
32
+ jwt.verifyToken(),
33
+ verifier.verifyBody,
34
+ verifier.loadCategoryForUpdate,
35
+ abac.middleware('category', 'edit'),
36
+ controller.update
37
+ );
38
+
39
+ app.post(
40
+ '/api/categories/updateOrder',
41
+ jwt.verifyToken(),
42
+ verifier.verifyOrderBody,
43
+ abac.middleware('category', 'edit'),
44
+ controller.updateOrder
45
+ );
46
+
47
+ app.post(
48
+ '/api/categories/delete',
49
+ jwt.verifyToken(),
50
+ verifier.verifyDeleteBody,
51
+ verifier.loadCategoryForDelete,
52
+ abac.middleware('category', 'delete'),
53
+ controller.delete
54
+ );
16
55
  };
17
56
 
18
57
  module.exports.controllerFactory = controllerFactory;
@@ -18,6 +18,8 @@ const state = reactive({
18
18
  name: "",
19
19
  url: "",
20
20
  status: "draft",
21
+ creator: null,
22
+ owner: null,
21
23
  parent: null,
22
24
  children: [],
23
25
  filters: [],
@@ -18,15 +18,11 @@
18
18
  </Block>
19
19
 
20
20
 
21
- <div class="cols-2 gap-thin">
22
-
21
+ <div class="cols-2 gap-thin">
23
22
  <Block
24
23
  title="Profile"
25
24
  class="mn-b-semi"
26
25
  >
27
-
28
-
29
-
30
26
  <div class="gap-small mn-b-small cols-2-fit-content">
31
27
  <UploadImage
32
28
  v-model:photo="spots.state.spot.profile.photo"
@@ -52,6 +48,14 @@
52
48
  </div>
53
49
  </div>
54
50
 
51
+ <Field
52
+ v-model:field="spots.state.spot.minorder"
53
+ label="Min.order"
54
+ placeholder="Enter minimum order value"
55
+ class="bg-white radius-small mn-b-small pd-small"
56
+ :validation="organizationName"
57
+ />
58
+
55
59
  <Select
56
60
  v-model:select="spots.state.spot.status"
57
61
  label="Status"
@@ -60,10 +64,10 @@
60
64
  'published',
61
65
  'archivied'
62
66
  ]"
63
- placeholder="Display product"
67
+ placeholder="Status"
64
68
  class="pos-relative w-100 mn-b-small bg-white radius-small pd-medium"
65
69
  />
66
-
70
+
67
71
  <p class="p-medium mn-b-small">Please the available delivery options:</p>
68
72
 
69
73
  <Checkbox
@@ -125,6 +129,12 @@
125
129
  spots.state.spot.address = newAddress;
126
130
  }"
127
131
  />
132
+
133
+ <WorktimeEdit
134
+ v-model:worktime="spots.state.spot.worktime"
135
+ class="mn-b-small"
136
+ />
137
+
128
138
  <p class="mn-b-small p-medium">Options:</p>
129
139
  <Checkbox
130
140
  :label="'Hide address'"
@@ -132,18 +142,10 @@
132
142
  class="w-100 mn-r-small bg-white radius-small pd-small"
133
143
  :radio="spots.state.spot.position?.hide"
134
144
  @update:radio="event => spots.state.spot.position.hide = event"
135
-
136
145
  />
137
146
 
138
- <Field
139
- v-model:field="spots.state.spot.minorder"
140
- label="Min.order"
141
- placeholder="Enter minimum order value"
142
- class="bg-white radius-small pd-medium"
143
- :validation="organizationName"
144
- />
145
-
146
147
  </Block>
148
+
147
149
  </div>
148
150
 
149
151
  <Button :submit="onDelete" :callback="redirectDash" class="w-100 bg-light">Delete Spot</Button>
@@ -166,6 +168,8 @@ import LocationMarker from "@martyrs/src/components/LocationMarker/LocationMarke
166
168
  import Button from "@martyrs/src/components/Button/Button.vue";
167
169
  import Popup from "@martyrs/src/components/Popup/Popup.vue";
168
170
 
171
+ import WorktimeEdit from "../sections/WorktimeEdit.vue";
172
+
169
173
  import * as spots from "@martyrs/src/modules/spots/store/spots";
170
174
 
171
175
  const router = useRouter();
@@ -214,7 +218,7 @@ async function onSubmit() {
214
218
 
215
219
  function redirectTo() {
216
220
  // router.replace({ name: "Spot", params: { _id: route.params._id, spot: spots.state.spot._id } });
217
- router.push({ name: "Organization", params: { _id: route.params._id }});
221
+ router.push({ name: "Organization", query: { tab: 'spots' }, params: { _id: route.params._id }});
218
222
  }
219
223
 
220
224
  async function onDelete() {