@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,109 @@
1
+ // getIsOpenNowStage.js
2
+
3
+ /**
4
+ * Создает шаг агрегации для расчета поля isOpenNow
5
+ * @returns {Object} Объект этапа агрегации MongoDB
6
+ */
7
+ module.exports = function getIsOpenNowStage() {
8
+ const now = new Date();
9
+ const currentDay = now.getDay();
10
+ const currentTime = `${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}`;
11
+
12
+ return {
13
+ $addFields: {
14
+ isOpenNow: {
15
+ $let: {
16
+ vars: {
17
+ // Найдем особую дату на сегодня, если она есть
18
+ specialDay: {
19
+ $filter: {
20
+ input: { $ifNull: ["$worktime.special", []] },
21
+ as: "special",
22
+ cond: {
23
+ $eq: [
24
+ { $dateToString: { format: "%Y-%m-%d", date: "$$special.date" } },
25
+ { $dateToString: { format: "%Y-%m-%d", date: new Date() } }
26
+ ]
27
+ }
28
+ }
29
+ }
30
+ },
31
+ in: {
32
+ $cond: {
33
+ if: { $gt: [{ $size: "$$specialDay" }, 0] },
34
+ then: {
35
+ $let: {
36
+ vars: { day: { $arrayElemAt: ["$$specialDay", 0] } },
37
+ in: {
38
+ $cond: {
39
+ if: "$$day.isOpen",
40
+ then: {
41
+ $anyElementTrue: {
42
+ $map: {
43
+ input: { $ifNull: ["$$day.periods", []] },
44
+ as: "period",
45
+ in: {
46
+ $and: [
47
+ { $lte: ["$$period.open", currentTime] },
48
+ { $gt: ["$$period.close", currentTime] }
49
+ ]
50
+ }
51
+ }
52
+ }
53
+ },
54
+ else: false
55
+ }
56
+ }
57
+ }
58
+ },
59
+ else: {
60
+ $let: {
61
+ vars: {
62
+ regularDay: {
63
+ $filter: {
64
+ input: { $ifNull: ["$worktime.regular", []] },
65
+ as: "day",
66
+ cond: { $eq: ["$$day.dayOfWeek", currentDay] }
67
+ }
68
+ }
69
+ },
70
+ in: {
71
+ $cond: {
72
+ if: { $gt: [{ $size: "$$regularDay" }, 0] },
73
+ then: {
74
+ $let: {
75
+ vars: { day: { $arrayElemAt: ["$$regularDay", 0] } },
76
+ in: {
77
+ $cond: {
78
+ if: "$$day.isOpen",
79
+ then: {
80
+ $anyElementTrue: {
81
+ $map: {
82
+ input: { $ifNull: ["$$day.periods", []] },
83
+ as: "period",
84
+ in: {
85
+ $and: [
86
+ { $lte: ["$$period.open", currentTime] },
87
+ { $gt: ["$$period.close", currentTime] }
88
+ ]
89
+ }
90
+ }
91
+ }
92
+ },
93
+ else: false
94
+ }
95
+ }
96
+ }
97
+ },
98
+ else: false
99
+ }
100
+ }
101
+ }
102
+ }
103
+ }
104
+ }
105
+ }
106
+ }
107
+ }
108
+ };
109
+ };
@@ -1,5 +1,5 @@
1
1
  const queryProcessorGlobals = require('@martyrs/src/modules/globals/controllers/utils/queryProcessor');
2
-
2
+ const getIsOpenNowStage = require('./queries/getIsOpenNowStage');
3
3
 
4
4
  const controllerFactory = (db) => {
5
5
  const Spot = db.spot;
@@ -10,6 +10,7 @@ const controllerFactory = (db) => {
10
10
  ...queryProcessorGlobals.getBasicOptions(
11
11
  req.query
12
12
  ),
13
+ getIsOpenNowStage(),
13
14
  // Tags
14
15
  ...queryProcessorGlobals.getTagsOptions(req.query.tags),
15
16
  // For creator
@@ -34,13 +34,29 @@ module.exports = (db) => {
34
34
  required: true
35
35
  }
36
36
  },
37
- worktime: [{
38
- day: String,
39
- time: {
40
- start: String,
41
- end: String
42
- }
43
- }],
37
+ // Обновленная структура для часов работы
38
+ worktime: {
39
+ // Стандартные часы работы
40
+ regular: [{
41
+ // 0 = воскресенье, 6 = суббота (соответствует JavaScript Date.getDay())
42
+ dayOfWeek: { type: Number, min: 0, max: 6, required: true },
43
+ isOpen: { type: Boolean, default: true },
44
+ periods: [{
45
+ open: { type: String, required: true }, // формат "HH:MM" 24-часовой
46
+ close: { type: String, required: true } // формат "HH:MM" 24-часовой
47
+ }]
48
+ }],
49
+ // Особые даты (праздники, особые события и т.д.)
50
+ special: [{
51
+ date: { type: Date, required: true },
52
+ isOpen: { type: Boolean, default: false },
53
+ periods: [{
54
+ open: { type: String }, // формат "HH:MM" 24-часовой
55
+ close: { type: String } // формат "HH:MM" 24-часовой
56
+ }],
57
+ description: { type: String } // описание особого дня (например, "Новый год")
58
+ }]
59
+ },
44
60
  // Marketplace options
45
61
  delivery: [String],
46
62
  payment: [String],
@@ -63,13 +79,43 @@ module.exports = (db) => {
63
79
  },
64
80
  ],
65
81
  });
66
-
67
- spotSchema.index({ organization: 1 })
68
-
82
+
83
+ // Индексы
84
+ spotSchema.index({ organization: 1 });
69
85
  spotSchema.index({ location: '2dsphere' });
86
+
87
+ // Виртуальное свойство для проверки открыт ли спот в данный момент
88
+ spotSchema.virtual('isOpenNow').get(function() {
89
+ const now = new Date();
90
+ const currentDay = now.getDay();
91
+ const currentTime = `${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}`;
92
+
93
+ // Проверка особых дат
94
+ const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
95
+ const specialDay = this.worktime?.special?.find(special =>
96
+ special.date.getTime() === today.getTime()
97
+ );
98
+
99
+ if (specialDay) {
100
+ if (!specialDay.isOpen) return false;
101
+ return specialDay.periods.some(period =>
102
+ period.open <= currentTime && period.close > currentTime
103
+ );
104
+ }
105
+
106
+ // Проверка обычных часов работы
107
+ const regularHours = this.worktime?.regular?.find(day => day.dayOfWeek === currentDay);
108
+ if (!regularHours || !regularHours.isOpen) return false;
109
+
110
+ return regularHours.periods.some(period =>
111
+ period.open <= currentTime && period.close > currentTime
112
+ );
113
+ });
70
114
 
115
+ spotSchema.set('toJSON', { virtuals: true });
116
+ spotSchema.set('toObject', { virtuals: true });
71
117
 
118
+
72
119
  const Spot = db.mongoose.model('Spot', spotSchema);
73
-
74
- return Spot
75
- }
120
+ return Spot;
121
+ };
@@ -26,7 +26,10 @@ const state = reactive({
26
26
  address: undefined,
27
27
  location: undefined,
28
28
 
29
- worktime: [],
29
+ worktime: {
30
+ regular: [],
31
+ special: []
32
+ },
30
33
  delivery: [],
31
34
  payment: [],
32
35
  members: [],
@@ -1,11 +0,0 @@
1
- // middlewareIndexFactory.js
2
-
3
- const middlewareIndexFactory = (db) => {
4
- const verifyCategory = require("./verifyCategory")(db);
5
-
6
- return {
7
- verifyCategory
8
- };
9
- };
10
-
11
- module.exports = middlewareIndexFactory;
@@ -1,25 +0,0 @@
1
- // middlewareFactory.js
2
- const middlewareFactory = (db) => {
3
- const Category = db.category;
4
-
5
- const checkCategoryExistOrNot = async (req, res, next) => {
6
- try {
7
- const category = await Category.findOne({ url: req.body.url });
8
-
9
- if (category) {
10
- res.status(400).send({ message: "Failed! Category with this URL is already in use!" });
11
- return;
12
- }
13
-
14
- next();
15
- } catch (err) {
16
- res.status(500).send({ message: err });
17
- }
18
- };
19
-
20
- return {
21
- checkCategoryExistOrNot
22
- };
23
- };
24
-
25
- module.exports = middlewareFactory;