@ozdao/martyrs 0.2.506 → 0.2.507

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 (574) hide show
  1. package/dist/auth.server.cjs +1 -1
  2. package/dist/auth.server.js +1 -1
  3. package/dist/builder.cjs +52 -60
  4. package/dist/builder.js +52 -60
  5. package/dist/chats.server.cjs +1 -1
  6. package/dist/chats.server.js +1 -1
  7. package/dist/events.server.cjs +1 -1
  8. package/dist/events.server.js +1 -1
  9. package/dist/{mailing-q7sR8gCV.cjs → mailing-Bs9ThyVZ.cjs} +1 -24
  10. package/dist/{mailing-C11EYWm-.js → mailing-DzlhsxCC.js} +1 -24
  11. package/dist/main-AWSb_d2P.cjs +11 -0
  12. package/dist/{main-DC__VS5b.js → main-Dq-UfO4G.js} +2562 -2477
  13. package/dist/martyrs/src/components/Button/{Button.vue.cjs → Button.vue2.cjs} +2 -2
  14. package/dist/martyrs/src/components/Button/Button.vue2.cjs.map +1 -0
  15. package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +2 -2
  16. package/dist/martyrs/src/components/Button/{Button.vue.cjs.map → Button.vue2.js.map} +1 -1
  17. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.cjs +3 -3
  18. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.cjs.map +1 -1
  19. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js +3 -3
  20. package/dist/martyrs/src/components/Checkbox/Checkbox.vue.js.map +1 -1
  21. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs +0 -93
  22. package/dist/martyrs/src/components/EditImages/EditImages.vue.cjs.map +1 -1
  23. package/dist/martyrs/src/components/EditImages/EditImages.vue.js +1 -94
  24. package/dist/martyrs/src/components/EditImages/EditImages.vue.js.map +1 -1
  25. package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs +93 -0
  26. package/dist/martyrs/src/components/EditImages/EditImages.vue2.cjs.map +1 -1
  27. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js +94 -1
  28. package/dist/martyrs/src/components/EditImages/EditImages.vue2.js.map +1 -1
  29. package/dist/martyrs/src/components/Feed/Feed.vue.cjs +14 -45
  30. package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
  31. package/dist/martyrs/src/components/Feed/Feed.vue.js +21 -52
  32. package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
  33. package/dist/martyrs/src/components/Field/Field.vue.cjs +14 -6
  34. package/dist/martyrs/src/components/Field/Field.vue.cjs.map +1 -1
  35. package/dist/martyrs/src/components/Field/Field.vue.js +14 -6
  36. package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -1
  37. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs +58 -11
  38. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.cjs.map +1 -1
  39. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +60 -13
  40. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js.map +1 -1
  41. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.cjs +2 -2
  42. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.cjs.map +1 -1
  43. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js +2 -2
  44. package/dist/martyrs/src/components/PhotoViewer/PhotoViewer.vue.js.map +1 -1
  45. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.cjs → Spoiler.vue2.cjs} +2 -2
  46. package/dist/martyrs/src/components/Spoiler/Spoiler.vue2.cjs.map +1 -0
  47. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.js → Spoiler.vue2.js} +2 -2
  48. package/dist/martyrs/src/components/Spoiler/{Spoiler.vue.cjs.map → Spoiler.vue2.js.map} +1 -1
  49. package/dist/martyrs/src/components/Tab/{Tab.vue.cjs → Tab.vue2.cjs} +2 -2
  50. package/dist/martyrs/src/components/Tab/Tab.vue2.cjs.map +1 -0
  51. package/dist/martyrs/src/components/Tab/{Tab.vue.js → Tab.vue2.js} +2 -2
  52. package/dist/martyrs/src/components/Tab/{Tab.vue.cjs.map → Tab.vue2.js.map} +1 -1
  53. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.cjs +2 -2
  54. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +2 -2
  55. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +2 -2
  56. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +2 -2
  57. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +2 -2
  58. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs.map +1 -1
  59. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +2 -2
  60. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  61. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.cjs +1 -1
  62. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileBlogposts.vue.js +1 -1
  63. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs +42 -10
  64. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.cjs.map +1 -1
  65. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +44 -12
  66. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js.map +1 -1
  67. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs +12 -16
  68. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.cjs.map +1 -1
  69. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +22 -26
  70. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js.map +1 -1
  71. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs +13 -17
  72. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.cjs.map +1 -1
  73. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +34 -38
  74. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js.map +1 -1
  75. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.cjs +13 -9
  76. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.cjs.map +1 -1
  77. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js +13 -9
  78. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditSidebar.vue.js.map +1 -1
  79. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.cjs +2 -2
  80. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +2 -2
  81. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.cjs +2 -2
  82. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +2 -2
  83. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.cjs +2 -2
  84. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +2 -2
  85. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.cjs +1 -1
  86. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +1 -1
  87. package/dist/martyrs/src/modules/auth/views/router/users.cjs +0 -4
  88. package/dist/martyrs/src/modules/auth/views/router/users.cjs.map +1 -1
  89. package/dist/martyrs/src/modules/auth/views/router/users.js +0 -4
  90. package/dist/martyrs/src/modules/auth/views/router/users.js.map +1 -1
  91. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
  92. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
  93. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.cjs +1 -1
  94. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  95. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs +431 -0
  96. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs.map +1 -0
  97. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +431 -0
  98. package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js.map +1 -0
  99. package/dist/martyrs/src/modules/community/router/blogposts.cjs +17 -0
  100. package/dist/martyrs/src/modules/community/router/blogposts.cjs.map +1 -1
  101. package/dist/martyrs/src/modules/community/router/blogposts.js +17 -0
  102. package/dist/martyrs/src/modules/community/router/blogposts.js.map +1 -1
  103. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.cjs +1 -1
  104. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
  105. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.cjs +1 -1
  106. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
  107. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.cjs +2 -2
  108. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +2 -2
  109. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
  110. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  111. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +1 -3
  112. package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
  113. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -3
  114. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
  115. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.cjs +1 -1
  116. package/dist/martyrs/src/modules/events/components/pages/EventsBackoffice.vue.js +1 -1
  117. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +2 -2
  118. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
  119. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.cjs +4 -6
  120. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.cjs.map +1 -1
  121. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.js +4 -6
  122. package/dist/martyrs/src/modules/globals/views/classes/globals.websocket.js.map +1 -1
  123. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.cjs +1 -1
  124. package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.js +1 -1
  125. package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.cjs +5 -2
  126. package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.cjs.map +1 -1
  127. package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.js +6 -3
  128. package/dist/martyrs/src/modules/globals/views/components/blocks/Card.vue.js.map +1 -1
  129. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +1 -1
  130. package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +1 -1
  131. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.cjs +1 -1
  132. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupAuth.vue.js +1 -1
  133. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.cjs +1 -1
  134. package/dist/martyrs/src/modules/globals/views/components/blocks/PopupDateSelector.vue.js +1 -1
  135. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs +2 -3
  136. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.cjs.map +1 -1
  137. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js +2 -3
  138. package/dist/martyrs/src/modules/globals/views/components/layouts/Client.vue.js.map +1 -1
  139. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +1 -1
  140. package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +1 -1
  141. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.cjs +1 -1
  142. package/dist/martyrs/src/modules/globals/views/components/partials/Navigation.vue.js +1 -1
  143. package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.cjs +1 -1
  144. package/dist/martyrs/src/modules/globals/views/components/partials/NavigationBar.vue.js +1 -1
  145. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs +324 -0
  146. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.cjs.map +1 -0
  147. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js +324 -0
  148. package/dist/martyrs/src/modules/globals/views/components/sections/Filters.vue2.js.map +1 -0
  149. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.cjs +1 -1
  150. package/dist/martyrs/src/modules/globals/views/components/sections/SectionPageTitle.vue.js +1 -1
  151. package/dist/martyrs/src/modules/icons/entities/IconLock.vue.cjs +32 -0
  152. package/dist/martyrs/src/modules/icons/entities/IconLock.vue.cjs.map +1 -0
  153. package/dist/martyrs/src/modules/icons/entities/IconLock.vue.js +32 -0
  154. package/dist/martyrs/src/modules/icons/entities/IconLock.vue.js.map +1 -0
  155. package/dist/martyrs/src/modules/icons/icons.client.cjs +2 -0
  156. package/dist/martyrs/src/modules/icons/icons.client.cjs.map +1 -1
  157. package/dist/martyrs/src/modules/icons/icons.client.js +116 -114
  158. package/dist/martyrs/src/modules/icons/icons.client.js.map +1 -1
  159. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs +5 -3
  160. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs.map +1 -1
  161. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js +117 -115
  162. package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.js.map +1 -1
  163. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +1 -1
  164. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +1 -1
  165. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.cjs +1 -1
  166. package/dist/martyrs/src/modules/landing/components/sections/SectionGuide.vue.js +1 -1
  167. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.cjs +11 -36
  168. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.cjs.map +1 -1
  169. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js +11 -36
  170. package/dist/martyrs/src/modules/landing/components/sections/SubscribeNewsletter.vue.js.map +1 -1
  171. package/dist/martyrs/src/modules/landing/landing.client.cjs +3 -0
  172. package/dist/martyrs/src/modules/landing/landing.client.cjs.map +1 -1
  173. package/dist/martyrs/src/modules/landing/landing.client.js +3 -0
  174. package/dist/martyrs/src/modules/landing/landing.client.js.map +1 -1
  175. package/dist/martyrs/src/modules/landing/locales/en.cjs +12 -0
  176. package/dist/martyrs/src/modules/landing/locales/en.cjs.map +1 -0
  177. package/dist/martyrs/src/modules/landing/locales/en.js +12 -0
  178. package/dist/martyrs/src/modules/landing/locales/en.js.map +1 -0
  179. package/dist/martyrs/src/modules/landing/locales/index.cjs +10 -0
  180. package/dist/martyrs/src/modules/landing/locales/index.cjs.map +1 -0
  181. package/dist/martyrs/src/modules/landing/locales/index.js +10 -0
  182. package/dist/martyrs/src/modules/landing/locales/index.js.map +1 -0
  183. package/dist/martyrs/src/modules/landing/locales/ru.cjs +12 -0
  184. package/dist/martyrs/src/modules/landing/locales/ru.cjs.map +1 -0
  185. package/dist/martyrs/src/modules/landing/locales/ru.js +12 -0
  186. package/dist/martyrs/src/modules/landing/locales/ru.js.map +1 -0
  187. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.cjs +1 -1
  188. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +1 -1
  189. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.cjs +1 -1
  190. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +1 -1
  191. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.cjs +1 -1
  192. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +1 -1
  193. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.cjs +1 -1
  194. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +1 -1
  195. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs +1 -1
  196. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +1 -1
  197. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +1 -1
  198. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +1 -1
  199. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.cjs +1 -1
  200. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +1 -1
  201. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.cjs +1 -1
  202. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +1 -1
  203. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs +1 -1
  204. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +1 -1
  205. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs +2 -2
  206. package/dist/martyrs/src/modules/music/components/pages/Album.vue.cjs.map +1 -1
  207. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +2 -2
  208. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  209. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.cjs +1 -1
  210. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +1 -1
  211. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.cjs +1 -1
  212. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +1 -1
  213. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs +2 -2
  214. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.cjs.map +1 -1
  215. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +2 -2
  216. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  217. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.cjs +1 -1
  218. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +1 -1
  219. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs +2 -2
  220. package/dist/martyrs/src/modules/music/components/pages/Track.vue.cjs.map +1 -1
  221. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +2 -2
  222. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  223. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.cjs +1 -1
  224. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  225. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.cjs +1 -1
  226. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +1 -1
  227. package/dist/martyrs/src/modules/music/router/music.cjs +2 -4
  228. package/dist/martyrs/src/modules/music/router/music.cjs.map +1 -1
  229. package/dist/martyrs/src/modules/music/router/music.js +2 -4
  230. package/dist/martyrs/src/modules/music/router/music.js.map +1 -1
  231. package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.cjs +1 -1
  232. package/dist/martyrs/src/modules/notifications/components/pages/Notifications.vue.js +1 -1
  233. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.cjs +86 -0
  234. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.cjs.map +1 -0
  235. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js +86 -0
  236. package/dist/martyrs/src/modules/orders/components/blocks/CardApplication.vue.js.map +1 -0
  237. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.cjs +103 -0
  238. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.cjs.map +1 -0
  239. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js +103 -0
  240. package/dist/martyrs/src/modules/orders/components/blocks/CardCustomer.vue.js.map +1 -0
  241. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.cjs +194 -0
  242. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.cjs.map +1 -0
  243. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +194 -0
  244. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -0
  245. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs +138 -0
  246. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs.map +1 -0
  247. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +138 -0
  248. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js.map +1 -0
  249. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +189 -0
  250. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs.map +1 -0
  251. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +189 -0
  252. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js.map +1 -0
  253. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.cjs +173 -0
  254. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.cjs.map +1 -0
  255. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +173 -0
  256. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js.map +1 -0
  257. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.cjs +233 -0
  258. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.cjs.map +1 -0
  259. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js +233 -0
  260. package/dist/martyrs/src/modules/orders/components/pages/Applications.vue.js.map +1 -0
  261. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.cjs +234 -0
  262. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.cjs.map +1 -0
  263. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js +234 -0
  264. package/dist/martyrs/src/modules/orders/components/pages/Customers.vue.js.map +1 -0
  265. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
  266. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
  267. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +10 -9
  268. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs.map +1 -1
  269. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +10 -9
  270. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
  271. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs +9 -83
  272. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.cjs.map +1 -1
  273. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +10 -84
  274. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js.map +1 -1
  275. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.cjs +1 -1
  276. package/dist/martyrs/src/modules/orders/components/pages/Orders.vue.js +1 -1
  277. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.cjs +119 -0
  278. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.cjs.map +1 -0
  279. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +119 -0
  280. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js.map +1 -0
  281. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.cjs +139 -0
  282. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.cjs.map +1 -0
  283. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +139 -0
  284. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js.map +1 -0
  285. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +1 -3
  286. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs.map +1 -1
  287. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -3
  288. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
  289. package/dist/martyrs/src/modules/orders/locales/en.cjs +38 -0
  290. package/dist/martyrs/src/modules/orders/locales/en.cjs.map +1 -0
  291. package/dist/martyrs/src/modules/orders/locales/en.js +38 -0
  292. package/dist/martyrs/src/modules/orders/locales/en.js.map +1 -0
  293. package/dist/martyrs/src/modules/orders/locales/index.cjs +10 -0
  294. package/dist/martyrs/src/modules/orders/locales/index.cjs.map +1 -0
  295. package/dist/martyrs/src/modules/orders/locales/index.js +10 -0
  296. package/dist/martyrs/src/modules/orders/locales/index.js.map +1 -0
  297. package/dist/martyrs/src/modules/orders/locales/ru.cjs +38 -0
  298. package/dist/martyrs/src/modules/orders/locales/ru.cjs.map +1 -0
  299. package/dist/martyrs/src/modules/orders/locales/ru.js +38 -0
  300. package/dist/martyrs/src/modules/orders/locales/ru.js.map +1 -0
  301. package/dist/martyrs/src/modules/orders/orders.client.cjs +78 -3
  302. package/dist/martyrs/src/modules/orders/orders.client.cjs.map +1 -1
  303. package/dist/martyrs/src/modules/orders/orders.client.js +80 -5
  304. package/dist/martyrs/src/modules/orders/orders.client.js.map +1 -1
  305. package/dist/martyrs/src/modules/orders/router/applications.router.cjs +17 -0
  306. package/dist/martyrs/src/modules/orders/router/applications.router.cjs.map +1 -0
  307. package/dist/martyrs/src/modules/orders/router/applications.router.js +17 -0
  308. package/dist/martyrs/src/modules/orders/router/applications.router.js.map +1 -0
  309. package/dist/martyrs/src/modules/orders/router/customers.router.cjs +18 -0
  310. package/dist/martyrs/src/modules/orders/router/customers.router.cjs.map +1 -0
  311. package/dist/martyrs/src/modules/orders/router/customers.router.js +18 -0
  312. package/dist/martyrs/src/modules/orders/router/customers.router.js.map +1 -0
  313. package/dist/martyrs/src/modules/orders/store/applications.cjs +4 -42
  314. package/dist/martyrs/src/modules/orders/store/applications.cjs.map +1 -1
  315. package/dist/martyrs/src/modules/orders/store/applications.js +3 -41
  316. package/dist/martyrs/src/modules/orders/store/applications.js.map +1 -1
  317. package/dist/martyrs/src/modules/orders/store/models/application.cjs +20 -0
  318. package/dist/martyrs/src/modules/orders/store/models/application.cjs.map +1 -0
  319. package/dist/martyrs/src/modules/orders/store/models/application.js +20 -0
  320. package/dist/martyrs/src/modules/orders/store/models/application.js.map +1 -0
  321. package/dist/martyrs/src/modules/orders/store/models/customer.cjs +13 -1
  322. package/dist/martyrs/src/modules/orders/store/models/customer.cjs.map +1 -1
  323. package/dist/martyrs/src/modules/orders/store/models/customer.js +13 -1
  324. package/dist/martyrs/src/modules/orders/store/models/customer.js.map +1 -1
  325. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs +1 -1
  326. package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +1 -1
  327. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs +1 -1
  328. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  329. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs +1 -1
  330. package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +1 -1
  331. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +2 -2
  332. package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +2 -2
  333. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +1 -1
  334. package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +1 -1
  335. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +16 -192
  336. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs.map +1 -1
  337. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +17 -193
  338. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
  339. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +2 -2
  340. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +2 -2
  341. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
  342. package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
  343. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs +2 -11
  344. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.cjs.map +1 -1
  345. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js +6 -15
  346. package/dist/martyrs/src/modules/organizations/components/sections/DetailsTabSection.vue.js.map +1 -1
  347. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.cjs +1 -1
  348. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -1
  349. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
  350. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
  351. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +2 -2
  352. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +2 -2
  353. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs +85 -89
  354. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs.map +1 -1
  355. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js +92 -96
  356. package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -1
  357. package/dist/martyrs/src/modules/organizations/router/organizations.cjs +4 -0
  358. package/dist/martyrs/src/modules/organizations/router/organizations.cjs.map +1 -1
  359. package/dist/martyrs/src/modules/organizations/router/organizations.js +4 -0
  360. package/dist/martyrs/src/modules/organizations/router/organizations.js.map +1 -1
  361. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.cjs +1 -1
  362. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +1 -1
  363. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.cjs +3 -6
  364. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.cjs.map +1 -1
  365. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js +3 -6
  366. package/dist/martyrs/src/modules/pages/views/components/pages/Page.vue.js.map +1 -1
  367. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.cjs +1 -1
  368. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  369. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.cjs +1 -1
  370. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  371. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs +1 -1
  372. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.cjs.map +1 -1
  373. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +1 -1
  374. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  375. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs +2 -2
  376. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.cjs.map +1 -1
  377. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js +2 -2
  378. package/dist/martyrs/src/modules/products/components/blocks/ProductImages.vue.js.map +1 -1
  379. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs +22 -19
  380. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.cjs.map +1 -1
  381. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +22 -19
  382. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  383. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +28 -19
  384. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
  385. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +28 -19
  386. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  387. package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +2 -2
  388. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +2 -2
  389. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +3 -3
  390. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +3 -3
  391. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +360 -105
  392. package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
  393. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +378 -123
  394. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  395. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.cjs +1 -1
  396. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
  397. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +1 -1
  398. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +1 -1
  399. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +2 -2
  400. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +2 -2
  401. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.cjs +1 -1
  402. package/dist/martyrs/src/modules/products/components/sections/FilterProducts.vue.js +1 -1
  403. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.cjs +1 -1
  404. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  405. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs +33 -3
  406. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.cjs.map +1 -1
  407. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +34 -4
  408. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js.map +1 -1
  409. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.cjs +2 -2
  410. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +2 -2
  411. package/dist/martyrs/src/modules/products/router/products.router.cjs +15 -0
  412. package/dist/martyrs/src/modules/products/router/products.router.cjs.map +1 -1
  413. package/dist/martyrs/src/modules/products/router/products.router.js +15 -0
  414. package/dist/martyrs/src/modules/products/router/products.router.js.map +1 -1
  415. package/dist/martyrs/src/modules/products/store/categories.cjs +25 -7
  416. package/dist/martyrs/src/modules/products/store/categories.cjs.map +1 -1
  417. package/dist/martyrs/src/modules/products/store/categories.js +25 -7
  418. package/dist/martyrs/src/modules/products/store/categories.js.map +1 -1
  419. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.cjs +2 -2
  420. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +2 -2
  421. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.cjs +1 -1
  422. package/dist/martyrs/src/modules/rents/views/components/pages/Rents.vue.js +1 -1
  423. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
  424. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
  425. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.cjs +1 -1
  426. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  427. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.cjs +1 -1
  428. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
  429. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.cjs +1 -1
  430. package/dist/martyrs/src/modules/spots/components/pages/Spot.vue.js +1 -1
  431. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +2 -2
  432. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
  433. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs +345 -0
  434. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs.map +1 -0
  435. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +345 -0
  436. package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js.map +1 -0
  437. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +1 -1
  438. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
  439. package/dist/martyrs/src/modules/spots/router/spots.cjs +17 -0
  440. package/dist/martyrs/src/modules/spots/router/spots.cjs.map +1 -1
  441. package/dist/martyrs/src/modules/spots/router/spots.js +17 -0
  442. package/dist/martyrs/src/modules/spots/router/spots.js.map +1 -1
  443. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +1 -1
  444. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +1 -1
  445. package/dist/martyrs.cjs.js +1 -1
  446. package/dist/martyrs.css +1 -1
  447. package/dist/martyrs.es.js +1 -1
  448. package/dist/notifications.server.cjs +1 -1
  449. package/dist/notifications.server.js +1 -1
  450. package/dist/orders.server.cjs +459 -201
  451. package/dist/orders.server.js +459 -201
  452. package/dist/organizations.server.cjs +1 -1
  453. package/dist/organizations.server.js +1 -1
  454. package/dist/products.server.cjs +428 -255
  455. package/dist/products.server.js +428 -255
  456. package/dist/style.css +115 -139
  457. package/dist/{tickets.controller-DQQcjyui.js → tickets.controller-C56OvH6v.js} +1 -1
  458. package/dist/{tickets.controller-D0V0gJCA.cjs → tickets.controller-DdnndM6c.cjs} +1 -1
  459. package/dist/wallet.server.cjs +1 -1
  460. package/dist/wallet.server.js +1 -1
  461. package/dist/{web-B1bEJ1W9.js → web-BXajFCU2.js} +1 -1
  462. package/dist/{web-D5i9k2Vv.cjs → web-DaBwwCQ5.cjs} +1 -1
  463. package/package.json +1 -1
  464. package/src/builder/modes/ssr.dev.js +10 -10
  465. package/src/builder/rspack/rspack.config.ssr.client.js +50 -50
  466. package/src/components/Checkbox/Checkbox.vue +3 -4
  467. package/src/components/Feed/Feed.old.vue +522 -0
  468. package/src/components/Feed/Feed.vue +4 -4
  469. package/src/components/Field/Field.vue +7 -1
  470. package/src/components/FieldBig/FieldBig.vue +62 -8
  471. package/src/components/PhotoViewer/PhotoViewer.vue +1 -1
  472. package/src/modules/STYLES.MD +198 -0
  473. package/src/modules/auth/views/components/pages/Profile.vue +1 -1
  474. package/src/modules/auth/views/components/pages/ProfileEdit.vue +42 -8
  475. package/src/modules/auth/views/components/pages/ProfileEditAccount.vue +9 -11
  476. package/src/modules/auth/views/components/pages/ProfileEditProfile.vue +9 -11
  477. package/src/modules/auth/views/components/pages/ProfileEditSidebar.vue +7 -4
  478. package/src/modules/auth/views/router/users.js +0 -4
  479. package/src/modules/community/components/pages/Posts.vue +444 -0
  480. package/src/modules/community/router/blogposts.js +15 -0
  481. package/src/modules/globals/views/classes/globals.websocket.js +7 -8
  482. package/src/modules/globals/views/components/blocks/Card.vue +2 -1
  483. package/src/modules/globals/views/components/layouts/Client.vue +1 -2
  484. package/src/modules/globals/views/components/partials/FooterAlt.vue +161 -188
  485. package/src/modules/globals/views/components/sections/Filters.vue +261 -121
  486. package/src/modules/globals/views/components/sections/filters/FilterCheckbox.vue +78 -0
  487. package/src/modules/globals/views/components/sections/filters/FilterDateRange.vue +177 -0
  488. package/src/modules/globals/views/components/sections/filters/FilterRange.vue +51 -50
  489. package/src/modules/icons/entities/IconLock.vue +14 -0
  490. package/src/modules/icons/icons.client.js +2 -1
  491. package/src/modules/icons/pages/IconsPage.vue +4 -2
  492. package/src/modules/landing/components/sections/SubscribeNewsletter.vue +11 -61
  493. package/src/modules/landing/landing.client.js +6 -0
  494. package/src/modules/landing/locales/en.js +9 -0
  495. package/src/modules/landing/locales/index.js +7 -0
  496. package/src/modules/landing/locales/ru.js +9 -0
  497. package/src/modules/music/components/pages/Album.vue +1 -1
  498. package/src/modules/music/components/pages/Playlist.vue +1 -1
  499. package/src/modules/music/components/pages/Track.vue +1 -1
  500. package/src/modules/orders/components/blocks/CardApplication.vue +74 -0
  501. package/src/modules/orders/components/blocks/CardCustomer.vue +90 -0
  502. package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +199 -0
  503. package/src/modules/orders/components/forms/FormApplicationDetails.vue +117 -0
  504. package/src/modules/orders/components/forms/FormCustomerDetails.vue +165 -0
  505. package/src/modules/orders/components/forms/FormSelectCustomer.vue +172 -0
  506. package/src/modules/orders/components/pages/Applications.vue +240 -0
  507. package/src/modules/orders/components/pages/Customers.vue +239 -0
  508. package/src/modules/orders/components/pages/OrderCreate.vue +2 -2
  509. package/src/modules/orders/components/pages/OrderCreateBackoffice.vue +4 -75
  510. package/src/modules/orders/components/sections/ApplicationDetails.vue +91 -0
  511. package/src/modules/orders/components/sections/CustomerDetails.vue +107 -0
  512. package/src/modules/orders/locales/en.js +35 -0
  513. package/src/modules/orders/locales/index.js +7 -0
  514. package/src/modules/orders/locales/ru.js +35 -0
  515. package/src/modules/orders/middlewares/applications.verifier.js +189 -0
  516. package/src/modules/orders/middlewares/customers.verifier.js +251 -0
  517. package/src/modules/orders/models/application.model.js +21 -0
  518. package/src/modules/orders/models/customer.model.js +26 -0
  519. package/src/modules/orders/orders.client.js +86 -1
  520. package/src/modules/orders/orders.server.js +3 -1
  521. package/src/modules/orders/router/applications.router.js +15 -0
  522. package/src/modules/orders/router/customers.router.js +17 -0
  523. package/src/modules/orders/routes/applications.routes.js +124 -12
  524. package/src/modules/orders/routes/customers.routes.js +43 -0
  525. package/src/modules/orders/store/applications.js +3 -159
  526. package/src/modules/orders/store/models/application.js +18 -0
  527. package/src/modules/orders/store/models/customer.js +12 -0
  528. package/src/modules/organizations/components/pages/Organization.new.vue +593 -0
  529. package/src/modules/organizations/components/pages/Organization.vue +10 -201
  530. package/src/modules/organizations/components/sections/DetailsTabSection.vue +2 -2
  531. package/src/modules/organizations/configs/navigation.organization.config.js +69 -85
  532. package/src/modules/organizations/router/organizations.js +5 -0
  533. package/src/modules/pages/views/components/pages/Page.vue +1 -1
  534. package/src/modules/products/TASKS.MD +157 -0
  535. package/src/modules/products/components/blocks/CardCategory.vue +1 -1
  536. package/src/modules/products/components/blocks/ProductImages.vue +1 -1
  537. package/src/modules/products/components/pages/Categories.vue +27 -22
  538. package/src/modules/products/components/pages/CategoryEdit.vue +24 -13
  539. package/src/modules/products/components/pages/Products.vue +414 -173
  540. package/src/modules/products/components/sections/ProductsRecommended.vue +46 -2
  541. package/src/modules/products/controllers/categories.controller.js +321 -282
  542. package/src/modules/products/controllers/configs/products.lookup.config.js +9 -0
  543. package/src/modules/products/controllers/products.controller.js +2 -1
  544. package/src/modules/products/controllers/queries/products.queries.js +183 -11
  545. package/src/modules/products/middlewares/categories.verifier.js +58 -15
  546. package/src/modules/products/migrations/categories-to-materialized-path.js +433 -0
  547. package/src/modules/products/migrations/path-to-url.js +27 -0
  548. package/src/modules/products/models/category.model.js +8 -23
  549. package/src/modules/products/router/products.router.js +12 -0
  550. package/src/modules/products/store/categories.js +26 -7
  551. package/src/modules/rents/TASK.MD +161 -0
  552. package/src/modules/spots/components/pages/Spots.vue +342 -0
  553. package/src/modules/spots/router/spots.js +15 -0
  554. package/src/styles/base/all.scss +2 -3
  555. package/src/styles/layout.scss +16 -0
  556. package/dist/main-w3rPUBVh.cjs +0 -11
  557. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.cjs +0 -96
  558. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.cjs.map +0 -1
  559. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js +0 -96
  560. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js.map +0 -1
  561. package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
  562. package/dist/martyrs/src/components/Spoiler/Spoiler.vue.js.map +0 -1
  563. package/dist/martyrs/src/components/Tab/Tab.vue.js.map +0 -1
  564. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.cjs +0 -155
  565. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.cjs.map +0 -1
  566. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.js +0 -155
  567. package/dist/martyrs/src/modules/orders/components/sections/FormAddCustomer.vue.js.map +0 -1
  568. package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.cjs +0 -81
  569. package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.cjs.map +0 -1
  570. package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.js +0 -81
  571. package/dist/martyrs/src/modules/orders/components/sections/FormCustomerDetails.vue.js.map +0 -1
  572. package/src/modules/orders/components/sections/FormAddCustomer.vue +0 -152
  573. package/src/modules/orders/components/sections/FormCustomerDetails.vue +0 -67
  574. package/src/modules/orders/controllers/applications.controller.js +0 -122
@@ -17,133 +17,200 @@ const controllerFactory$1 = (db) => {
17
17
  const Category = db.category;
18
18
  const logger = new globals_logger.Logger(db);
19
19
  const cache = new globals_logger.Cache();
20
+ const generateSlug = async (name, parentId = null) => {
21
+ const baseSlug = name.toLowerCase().replace(/[^a-z0-9\s-]/g, "").replace(/\s+/g, "-").replace(/-+/g, "-").trim("-");
22
+ let slug = baseSlug;
23
+ let counter = 1;
24
+ while (await Category.exists({ slug, parent: parentId })) {
25
+ slug = `${baseSlug}-${counter++}`;
26
+ }
27
+ return slug;
28
+ };
29
+ const buildTreeFromUrl = (categories, sortParam = "order", sortOrder = "asc") => {
30
+ console.log("cat buildtree", categories);
31
+ categories.sort((a, b) => a.url.localeCompare(b.url));
32
+ const tree = [];
33
+ const nodeMap = /* @__PURE__ */ new Map();
34
+ console.log("cat buildtree", categories);
35
+ categories.forEach((cat) => {
36
+ const node = { ...cat, children: [] };
37
+ nodeMap.set(cat.url, node);
38
+ const parentUrl = cat.url.substring(0, cat.url.lastIndexOf("/"));
39
+ console.log("cat parent buildtree", parentUrl);
40
+ if (parentUrl && nodeMap.has(parentUrl)) {
41
+ nodeMap.get(parentUrl).children.push(node);
42
+ console.log("cat nodeMap buildtree", nodeMap);
43
+ } else if (cat.level === 0) {
44
+ tree.push(node);
45
+ }
46
+ });
47
+ const sortNodes = (nodes) => {
48
+ nodes.sort((a, b) => {
49
+ const va = a[sortParam] ?? Number.MAX_SAFE_INTEGER;
50
+ const vb = b[sortParam] ?? Number.MAX_SAFE_INTEGER;
51
+ const diff = typeof va === "number" ? va - vb : String(va).localeCompare(String(vb));
52
+ return sortOrder === "asc" ? diff : -diff;
53
+ });
54
+ nodes.forEach((n) => n.children?.length && sortNodes(n.children));
55
+ };
56
+ sortNodes(tree);
57
+ return tree;
58
+ };
59
+ const updateCategoryPaths = async (categoryId, newParentId = null) => {
60
+ const category = await Category.findById(categoryId);
61
+ if (!category) return;
62
+ let newPath = [];
63
+ let newLevel = 0;
64
+ let newUrl = `/${category.slug}`;
65
+ if (newParentId) {
66
+ const parent = await Category.findById(newParentId);
67
+ if (parent) {
68
+ newPath = [...parent.path, newParentId];
69
+ newLevel = parent.level + 1;
70
+ newUrl = `${parent.url}/${category.slug}`;
71
+ }
72
+ }
73
+ await Category.updateOne(
74
+ { _id: categoryId },
75
+ { path: newPath, level: newLevel, url: newUrl }
76
+ );
77
+ const oldUrlPattern = new RegExp(`^${category.url}/`);
78
+ await Category.updateMany(
79
+ { url: oldUrlPattern },
80
+ [{
81
+ $set: {
82
+ url: { $concat: [newUrl, { $substr: ["$url", { $strLenCP: category.url }, -1] }] },
83
+ level: { $add: ["$level", newLevel - category.level] }
84
+ }
85
+ }]
86
+ );
87
+ };
20
88
  return {
21
89
  async read(req, res) {
22
90
  try {
23
- let { parent, url, search, sortParam, sortOrder, skip, limit, excludeChildren, rootOnly, type } = req.verifiedQuery;
24
- const cacheKey = JSON.stringify(req.verifiedQuery);
25
- let cachedResult = await cache.get(cacheKey);
26
- if (cachedResult) {
27
- return res.status(200).json(cachedResult);
28
- }
29
- const matchStage = {
30
- ...req.query.status && { status: req.query.status },
31
- ...url && { url },
91
+ const {
92
+ _id,
93
+ parent,
94
+ url,
95
+ status,
96
+ search,
97
+ sortParam = "order",
98
+ sortOrder = "asc",
99
+ skip,
100
+ limit,
101
+ root = false,
102
+ owner,
103
+ type,
104
+ tree,
105
+ depth = -1
106
+ } = req.query;
107
+ const depthNum = parseInt(depth, 10);
108
+ const isTree = tree === "true" || tree === true;
109
+ const isRoot = root === "true" || root === true;
110
+ console.log("🚀 Read categories params:", { url, depth: depthNum, tree: isTree, root });
111
+ const cacheKey = JSON.stringify(req.query);
112
+ const cached = await cache.get(cacheKey);
113
+ if (cached) return res.json(cached);
114
+ const match = {
115
+ ..._id && { _id: new db.mongoose.Types.ObjectId(_id) },
116
+ ...status && { status },
32
117
  ...search && { name: { $regex: search, $options: "i" } },
33
- ...parent ? { parent: new db.mongoose.Types.ObjectId(parent) } : {},
34
- ...rootOnly === "true" && !search ? { parent: null } : {}
118
+ ...type && { "owner.type": type },
119
+ ...owner && { "owner.target": new db.mongoose.Types.ObjectId(owner) },
120
+ ...parent && { parent: new db.mongoose.Types.ObjectId(parent) }
121
+ // Исправлено: было owner вместо parent
35
122
  };
36
- if (type === "platform") {
37
- matchStage["owner.type"] = "platform";
38
- } else if (type === "organization" && req.query.organizationId) {
39
- matchStage["owner.type"] = "organization";
40
- matchStage["owner.target"] = new db.mongoose.Types.ObjectId(req.query.organizationId);
41
- }
42
- if (search) {
43
- excludeChildren = "true";
123
+ if (url && !_id) {
124
+ if (depth === 0) {
125
+ match.url = url;
126
+ } else if (depth === 1) {
127
+ match.$or = [
128
+ { url },
129
+ { url: { $regex: "^${url}/[^/]+$" } }
130
+ ];
131
+ } else {
132
+ match.$or = [
133
+ { url },
134
+ { url: { $regex: `^${url}/` } }
135
+ ];
136
+ }
137
+ } else if (isRoot && !_id) {
138
+ match.url = { $regex: "^/[^/]+$" };
44
139
  }
45
- let pipeline = [
46
- { $match: matchStage },
47
- queryProcessor.queryProcessorGlobals.getCreatorUserLookupStage(),
48
- queryProcessor.queryProcessorGlobals.getCreatorOrganizationLookupStage(),
49
- // For owner
50
- queryProcessor.queryProcessorGlobals.getOwnerUserLookupStage(),
51
- queryProcessor.queryProcessorGlobals.getOwnerOrganizationLookupStage(),
52
- queryProcessor.queryProcessorGlobals.getAddFieldsCreatorOwnerStage(),
53
- { $sort: { [sortParam]: sortOrder === "asc" ? 1 : -1 } },
54
- { $skip: Number(skip) },
55
- { $limit: Number(limit) },
56
- queryProcessor.queryProcessorGlobals.removeTempPropeties()
140
+ console.log("🔎 Match object:", JSON.stringify(match, null, 2));
141
+ const pipeline = [
142
+ { $match: match },
143
+ ...queryProcessor.queryProcessorGlobals.getSortingOptions(sortParam, sortOrder)
144
+ // ...(skip || limit ? globalsQuery.getPaginationOptions(skip, limit) : []),
57
145
  ];
58
- if (excludeChildren !== "true") {
59
- pipeline.push({
60
- $graphLookup: {
61
- from: "categories",
62
- startWith: "$_id",
63
- connectFromField: "_id",
64
- connectToField: "parent",
65
- as: "allDescendants",
66
- maxDepth: 10
67
- }
146
+ console.log("🔧 Pipeline:", JSON.stringify(pipeline, null, 2));
147
+ let results = await Category.aggregate(pipeline);
148
+ console.log("🔍 Aggregate results:", results.length, "categories found");
149
+ console.log("🔍 Results URLs:", results.map((r) => r.url));
150
+ if (url && depthNum > 1) {
151
+ const maxLevel = url.split("/").filter(Boolean).length + depthNum - 1;
152
+ results = results.filter((cat) => {
153
+ const catLevel = cat.url.split("/").filter(Boolean).length;
154
+ return cat.url === url || catLevel <= maxLevel;
68
155
  });
156
+ console.log("🔍 After depth filter:", results.length, "categories");
69
157
  }
70
- const results = await Category.aggregate(pipeline);
71
- let response;
72
- if (excludeChildren === "true") {
73
- response = results;
74
- } else {
75
- let allCategories = [];
76
- results.forEach((doc) => {
77
- let category = { ...doc };
78
- delete category.allDescendants;
79
- allCategories.push(category);
80
- if (doc.allDescendants && doc.allDescendants.length > 0) {
81
- allCategories.push(...doc.allDescendants);
82
- }
83
- });
84
- let uniqueCategories = Array.from(new Map(allCategories.map((item) => [item._id.toString(), item])).values());
85
- let tree = buildAdjacencyTree(uniqueCategories, sortParam, sortOrder);
86
- if (rootOnly === "true") {
87
- response = tree;
158
+ if (isTree && results.length > 0) {
159
+ console.log("🌳 Building tree from results");
160
+ results = buildTreeFromUrl(results, sortParam, sortOrder);
161
+ } else if (!isTree && depthNum === 1 && url && results.length > 0) {
162
+ console.log("📋 Processing tree=false, depth=1");
163
+ console.log("📋 Looking for main category with url:", url);
164
+ const mainCategory = results.find((c) => c.url === url);
165
+ console.log("📋 Main category found:", !!mainCategory, mainCategory?.url);
166
+ if (mainCategory) {
167
+ const children = results.filter(
168
+ (c) => c.url !== url && c.url.startsWith(url + "/")
169
+ );
170
+ console.log("📋 Children found:", children.length, children.map((c) => c.url));
171
+ mainCategory.children = children;
172
+ results = [mainCategory];
173
+ console.log("📋 Final result with children:", results[0].url, "children:", results[0].children.length);
88
174
  } else {
89
- const requestedCategoryIds = results.map((r) => r._id.toString());
90
- response = tree.filter((category) => requestedCategoryIds.includes(category._id.toString()));
91
- }
92
- }
93
- let tags = ["categories"];
94
- if (type === "organization" && req.query.organizationId) {
95
- tags.push(`organization_${req.query.organizationId}`);
96
- }
97
- for (const cat of response) {
98
- if (cat._id) {
99
- tags.push(`category_${cat._id}`);
175
+ console.log("❌ Main category not found in results!");
100
176
  }
101
177
  }
102
- await cache.setWithTags(cacheKey, response, tags);
103
- res.status(200).json(response);
178
+ const tags = ["categories"];
179
+ if (owner) tags.push(`organization_${owner}`);
180
+ await cache.setWithTags(cacheKey, results, tags);
181
+ console.log("✅ Final results count:", results.length);
182
+ res.json(results);
104
183
  } catch (err) {
105
- console.log(err);
106
184
  logger.error(`Error reading categories: ${err.message}`);
107
185
  res.status(500).json({ message: err.message });
108
186
  }
109
187
  },
110
188
  async create(req, res) {
111
189
  try {
112
- const categoryData = req.verifiedBody;
113
- if (!categoryData.creator && req.userId) {
114
- categoryData.creator = {
115
- type: "user",
116
- target: req.userId
117
- };
118
- }
119
- if (!categoryData.owner) {
120
- if (req.query.organizationId) {
121
- categoryData.owner = {
122
- type: "organization",
123
- target: req.query.organizationId
124
- };
125
- } else {
126
- categoryData.owner = {
127
- type: "platform",
128
- target: null
129
- };
130
- }
190
+ const data = req.verifiedBody;
191
+ data.creator ||= { type: "user", target: req.userId };
192
+ data.owner ||= req.query.owner ? { type: "organization", target: req.query.owner } : { type: "platform", target: null };
193
+ const slug = await generateSlug(data.name, data.parent);
194
+ let path = [];
195
+ let level = 0;
196
+ let url = `/${slug}`;
197
+ if (data.parent) {
198
+ const parent = await Category.findById(data.parent);
199
+ if (!parent) throw new Error("Parent category not found");
200
+ path = [...parent.path, data.parent];
201
+ level = parent.level + 1;
202
+ url = `${parent.url}/${slug}`;
131
203
  }
132
- const highestOrder = await Category.findOne().sort("-order");
133
- const order = highestOrder ? highestOrder.order + 1 : 1;
134
- const category = new Category({
135
- ...categoryData,
204
+ const maxOrder = await Category.findOne({ parent: data.parent || null }).sort("-order").select("order");
205
+ const order = (maxOrder?.order || 0) + 1;
206
+ const category = await Category.create({
207
+ ...data,
208
+ slug,
209
+ url,
210
+ path,
211
+ level,
136
212
  order
137
213
  });
138
- if (categoryData.parent) {
139
- const parent = await Category.findByIdAndUpdate(categoryData.parent, { $push: { children: category._id } }, { new: true });
140
- if (!parent) throw new Error("Parent category not found");
141
- category.parent = parent._id;
142
- }
143
- if (categoryData.children && categoryData.children.length > 0) {
144
- await Category.updateMany({ _id: { $in: categoryData.children } }, { $set: { parent: category._id } });
145
- }
146
- await category.save();
147
214
  await cache.delByTags(["categories"]);
148
215
  if (category.owner.type === "organization") {
149
216
  await cache.delByTag(`organization_${category.owner.target}`);
@@ -152,23 +219,30 @@ const controllerFactory$1 = (db) => {
152
219
  res.status(201).json(category);
153
220
  } catch (err) {
154
221
  logger.error(`Error creating category: ${err.message}`);
155
- res.status(err.message === "Parent category not found" ? 404 : 500).json({ message: err.message });
222
+ res.status(err.message.includes("not found") ? 404 : 500).json({ message: err.message });
156
223
  }
157
224
  },
158
225
  async update(req, res) {
159
226
  try {
160
- const category = req.verifiedBody;
161
- const updatedCategory = await Category.findByIdAndUpdate(category._id, { $set: category }, { new: true }).lean();
162
- if (!updatedCategory) {
227
+ const data = req.verifiedBody;
228
+ const oldCategory = await Category.findById(data._id);
229
+ if (!oldCategory) {
163
230
  return res.status(404).json({ message: "Category not found" });
164
231
  }
165
- await cache.delByTag(`category_${category._id}`);
232
+ if (data.parent !== void 0 && data.parent != oldCategory.parent) {
233
+ await updateCategoryPaths(data._id, data.parent);
234
+ }
235
+ const updated = await Category.findByIdAndUpdate(
236
+ data._id,
237
+ { $set: data },
238
+ { new: true }
239
+ ).lean();
166
240
  await cache.delByTags(["categories"]);
167
- if (updatedCategory.owner && updatedCategory.owner.type === "organization") {
168
- await cache.delByTag(`organization_${updatedCategory.owner.target}`);
241
+ if (updated.owner?.type === "organization") {
242
+ await cache.delByTag(`organization_${updated.owner.target}`);
169
243
  }
170
- logger.info(`Category updated: ${category._id}`);
171
- res.status(200).json(updatedCategory);
244
+ logger.info(`Category updated: ${data._id}`);
245
+ res.json(updated);
172
246
  } catch (err) {
173
247
  logger.error(`Category update error: ${err.message}`);
174
248
  res.status(500).json({ message: "Failed to update category" });
@@ -177,45 +251,20 @@ const controllerFactory$1 = (db) => {
177
251
  async updateOrder(req, res) {
178
252
  try {
179
253
  const { categories } = req.verifiedBody;
180
- const bulkOps = categories.map((category) => ({
254
+ const bulkOps = categories.map((cat) => ({
181
255
  updateOne: {
182
- filter: { _id: category._id },
183
- update: {
184
- $set: {
185
- order: category.order,
186
- parent: category.parent ? new db.mongoose.Types.ObjectId(category.parent) : null
187
- }
188
- }
256
+ filter: { _id: cat._id },
257
+ update: { $set: { order: cat.order } }
189
258
  }
190
259
  }));
260
+ const movedCategories = categories.filter((cat) => cat.parent !== void 0);
261
+ for (const cat of movedCategories) {
262
+ await updateCategoryPaths(cat._id, cat.parent);
263
+ }
191
264
  await Category.bulkWrite(bulkOps);
192
- const categoryIds = categories.map((cat) => cat._id);
193
- const organizationIds = /* @__PURE__ */ new Set();
194
- const updatedCategories = await Category.find({ _id: { $in: categoryIds } }).lean();
195
- updatedCategories.forEach((cat) => {
196
- if (cat.owner && cat.owner.type === "organization") {
197
- organizationIds.add(cat.owner.target.toString());
198
- }
199
- });
200
265
  await cache.delByTags(["categories"]);
201
- for (const catId of categoryIds) {
202
- await cache.delByTag(`category_${catId}`);
203
- }
204
- for (const orgId of organizationIds) {
205
- await cache.delByTag(`organization_${orgId}`);
206
- }
207
- let query = {};
208
- if (req.query.type === "platform") {
209
- query = { "owner.type": "platform" };
210
- } else if (req.query.type === "organization" && req.query.organizationId) {
211
- query = {
212
- "owner.type": "organization",
213
- "owner.target": new db.mongoose.Types.ObjectId(req.query.organizationId)
214
- };
215
- }
216
- const result = await Category.find(query).sort({ order: "asc" }).lean();
217
- logger.info(`Categories order updated: ${categoryIds.join(", ")}`);
218
- res.status(200).json(result);
266
+ logger.info(`Categories order updated: ${categories.map((c) => c._id).join(", ")}`);
267
+ res.json({ message: "Order updated successfully" });
219
268
  } catch (err) {
220
269
  logger.error(`Category order update error: ${err.message}`);
221
270
  res.status(500).json({ message: "Failed to update categories order" });
@@ -224,83 +273,33 @@ const controllerFactory$1 = (db) => {
224
273
  async delete(req, res) {
225
274
  try {
226
275
  const category = req.currentResource;
227
- let ownerOrgId = null;
228
- if (category.owner && category.owner.type === "organization") {
229
- ownerOrgId = category.owner.target;
230
- }
231
- const result = await Category.aggregate([
232
- { $match: { _id: category._id } },
233
- {
234
- $graphLookup: {
235
- from: "categories",
236
- startWith: "$_id",
237
- connectFromField: "_id",
238
- connectToField: "parent",
239
- as: "descendants"
240
- }
241
- },
276
+ await Category.updateMany(
277
+ { parent: category._id },
242
278
  {
243
- $project: { descendants: 1 }
279
+ $set: { parent: category.parent },
280
+ $inc: { level: -1 }
244
281
  }
245
- ]);
246
- const idsToDelete = [category._id, ...(result[0]?.descendants || []).map(({ _id }) => _id)];
247
- const categoryIdsTags = idsToDelete.map((id) => `category_${id}`);
248
- await Category.deleteMany({ _id: { $in: idsToDelete } });
282
+ );
283
+ if (category.parent) {
284
+ const parent = await Category.findById(category.parent);
285
+ const children = await Category.find({ parent: category.parent });
286
+ for (const child of children) {
287
+ await updateCategoryPaths(child._id, category.parent);
288
+ }
289
+ }
290
+ await Category.deleteOne({ _id: category._id });
249
291
  await cache.delByTags(["categories"]);
250
- await cache.delByTags(categoryIdsTags);
251
- if (ownerOrgId) {
252
- await cache.delByTag(`organization_${ownerOrgId}`);
292
+ if (category.owner?.type === "organization") {
293
+ await cache.delByTag(`organization_${category.owner.target}`);
253
294
  }
254
- logger.info(`Category and its subcategories deleted: ${category.url}`);
255
- res.status(200).json({ message: "Category and its subcategories deleted successfully" });
295
+ logger.info(`Category deleted: ${category.slug}`);
296
+ res.json({ message: "Category deleted successfully" });
256
297
  } catch (err) {
257
298
  logger.error(`Error deleting category: ${err.message}`);
258
- res.status(500).json({ message: err.message || "Internal server error" });
299
+ res.status(500).json({ message: err.message });
259
300
  }
260
301
  }
261
302
  };
262
- function buildAdjacencyTree(categories, sortParam, sortOrder) {
263
- const categoryMap = /* @__PURE__ */ new Map();
264
- categories.forEach((category) => {
265
- categoryMap.set(category._id.toString(), {
266
- ...category,
267
- children: []
268
- });
269
- });
270
- const rootCategories = [];
271
- categories.forEach((category) => {
272
- const categoryWithChildren = categoryMap.get(category._id.toString());
273
- if (category.parent && categoryMap.has(category.parent.toString())) {
274
- const parentCategory = categoryMap.get(category.parent.toString());
275
- parentCategory.children.push(categoryWithChildren);
276
- } else if (!category.parent) {
277
- rootCategories.push(categoryWithChildren);
278
- }
279
- });
280
- function sortCategories(nodes) {
281
- if (!nodes || nodes.length === 0) {
282
- return nodes;
283
- }
284
- nodes.sort((a, b) => {
285
- const valueA = a[sortParam] ?? (sortParam === "order" ? Number.MAX_SAFE_INTEGER : "");
286
- const valueB = b[sortParam] ?? (sortParam === "order" ? Number.MAX_SAFE_INTEGER : "");
287
- if (typeof valueA === "number" && typeof valueB === "number") {
288
- return sortOrder === "asc" ? valueA - valueB : valueB - valueA;
289
- } else {
290
- const stringA = String(valueA);
291
- const stringB = String(valueB);
292
- return sortOrder === "asc" ? stringA.localeCompare(stringB) : stringB.localeCompare(stringA);
293
- }
294
- });
295
- nodes.forEach((node) => {
296
- if (node.children && node.children.length > 0) {
297
- sortCategories(node.children);
298
- }
299
- });
300
- return nodes;
301
- }
302
- return sortCategories(rootCategories);
303
- }
304
303
  };
305
304
  class OpenAIGlobal {
306
305
  constructor() {
@@ -391,15 +390,42 @@ const openaiGlobal = new OpenAIGlobal();
391
390
  const ObjectId = mongoose.Types.ObjectId;
392
391
  function getCategoriesFilterStage(categories) {
393
392
  if (!categories) return [];
394
- const categoryIds = categories.split(",").filter(Boolean);
395
- if (categoryIds.length === 0) return [];
396
- return [{
397
- $match: {
398
- category: {
399
- $in: categoryIds.map((id) => new ObjectId(id))
393
+ if (typeof categories === "string") {
394
+ return [
395
+ {
396
+ $lookup: {
397
+ from: "categories",
398
+ localField: "category",
399
+ foreignField: "_id",
400
+ as: "categoryData"
401
+ }
402
+ },
403
+ {
404
+ $match: {
405
+ "categoryData.url": {
406
+ $regex: `^${categories}(/|$)`
407
+ }
408
+ }
409
+ },
410
+ {
411
+ $project: {
412
+ categoryData: 0
413
+ }
400
414
  }
401
- }
402
- }];
415
+ ];
416
+ }
417
+ if (Array.isArray(categories)) {
418
+ const categoryIds = categories.filter(Boolean);
419
+ if (categoryIds.length === 0) return [];
420
+ return [{
421
+ $match: {
422
+ category: {
423
+ $in: categoryIds.map((id) => new ObjectId(id))
424
+ }
425
+ }
426
+ }];
427
+ }
428
+ return [];
403
429
  }
404
430
  function getDeliveryFilterStage(delivery) {
405
431
  if (!delivery) return [];
@@ -441,13 +467,134 @@ function getAttributeFiltersStage(filtersString) {
441
467
  return [];
442
468
  }
443
469
  }
470
+ function getVariantPriceFilterStage(prices) {
471
+ if (!prices) return [];
472
+ try {
473
+ const priceRanges = prices.split(",");
474
+ const priceConditions = [];
475
+ priceRanges.forEach((priceRange) => {
476
+ if (priceRange.startsWith("<")) {
477
+ priceConditions.push({
478
+ variants: {
479
+ $elemMatch: {
480
+ price: { $lt: parseFloat(priceRange.slice(1)) }
481
+ }
482
+ }
483
+ });
484
+ } else if (priceRange.startsWith(">")) {
485
+ priceConditions.push({
486
+ variants: {
487
+ $elemMatch: {
488
+ price: { $gt: parseFloat(priceRange.slice(1)) }
489
+ }
490
+ }
491
+ });
492
+ } else {
493
+ const [min, max] = priceRange.split("-").map(Number);
494
+ if (!isNaN(min) && !isNaN(max)) {
495
+ priceConditions.push({
496
+ variants: {
497
+ $elemMatch: {
498
+ price: { $gte: min, $lte: max }
499
+ }
500
+ }
501
+ });
502
+ }
503
+ }
504
+ });
505
+ return priceConditions.length > 0 ? [{ $match: { $or: priceConditions } }] : [];
506
+ } catch (error) {
507
+ console.error("Error parsing price filters:", error);
508
+ return [];
509
+ }
510
+ }
511
+ function getAvailabilityFilterStage(dateStart, dateEnd) {
512
+ if (!dateStart || !dateEnd) return [];
513
+ const startDate = new Date(dateStart);
514
+ const endDate = new Date(dateEnd);
515
+ return [
516
+ {
517
+ $lookup: {
518
+ from: "rents",
519
+ let: { productId: "$_id" },
520
+ pipeline: [
521
+ {
522
+ $match: {
523
+ $expr: {
524
+ $and: [
525
+ { $eq: ["$product", "$$productId"] },
526
+ { $in: ["$status", ["confirmed", "active"]] },
527
+ {
528
+ $or: [
529
+ {
530
+ $and: [
531
+ { $gte: ["$startDate", startDate] },
532
+ { $lte: ["$startDate", endDate] }
533
+ ]
534
+ },
535
+ {
536
+ $and: [
537
+ { $gte: ["$endDate", startDate] },
538
+ { $lte: ["$endDate", endDate] }
539
+ ]
540
+ },
541
+ {
542
+ $and: [
543
+ { $lte: ["$startDate", startDate] },
544
+ { $gte: ["$endDate", endDate] }
545
+ ]
546
+ }
547
+ ]
548
+ }
549
+ ]
550
+ }
551
+ }
552
+ },
553
+ {
554
+ $group: {
555
+ _id: null,
556
+ totalRented: { $sum: { $ifNull: ["$quantity", 1] } }
557
+ }
558
+ }
559
+ ],
560
+ as: "rentInfo"
561
+ }
562
+ },
563
+ {
564
+ $addFields: {
565
+ rentedQuantity: {
566
+ $ifNull: [{ $arrayElemAt: ["$rentInfo.totalRented", 0] }, 0]
567
+ },
568
+ availableQuantity: {
569
+ $subtract: [
570
+ { $ifNull: ["$quantity", 1] },
571
+ { $ifNull: [{ $arrayElemAt: ["$rentInfo.totalRented", 0] }, 0] }
572
+ ]
573
+ }
574
+ }
575
+ },
576
+ {
577
+ $match: {
578
+ availableQuantity: { $gt: 0 }
579
+ }
580
+ },
581
+ {
582
+ $project: {
583
+ rentInfo: 0,
584
+ rentedQuantity: 0
585
+ }
586
+ }
587
+ ];
588
+ }
444
589
  function escapeRegex(string) {
445
590
  return string.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&");
446
591
  }
447
592
  const queryProcessorProducts = {
448
593
  getAttributeFiltersStage,
449
594
  getCategoriesFilterStage,
450
- getDeliveryFilterStage
595
+ getDeliveryFilterStage,
596
+ getVariantPriceFilterStage,
597
+ getAvailabilityFilterStage
451
598
  };
452
599
  const productLookupConfigs = {
453
600
  // NEW: Лукап для availability продуктов из inventory модуля
@@ -558,6 +705,15 @@ const productLookupConfigs = {
558
705
  }
559
706
  }
560
707
  }]
708
+ },
709
+ // Лукап для аренд продукта
710
+ rents: {
711
+ lookup: {
712
+ from: "rents",
713
+ localField: "_id",
714
+ foreignField: "product",
715
+ as: "rents"
716
+ }
561
717
  }
562
718
  };
563
719
  const controllerFactory = (db) => {
@@ -587,10 +743,11 @@ const controllerFactory = (db) => {
587
743
  start: "startDate",
588
744
  end: "endDate"
589
745
  }),
590
- ...queryProcessor.queryProcessorGlobals.getPriceConditions(req.query.prices),
591
746
  ...queryProcessorProducts.getCategoriesFilterStage(req.query.categories),
592
747
  ...queryProcessorProducts.getDeliveryFilterStage(req.query.delivery),
593
748
  ...queryProcessorProducts.getAttributeFiltersStage(req.query.filters),
749
+ ...queryProcessorProducts.getVariantPriceFilterStage(req.query.prices),
750
+ ...queryProcessorProducts.getAvailabilityFilterStage(req.query.dateStart, req.query.dateEnd),
594
751
  ...queryProcessor.queryProcessorGlobals.getLookupStages(requestedLookups, productLookupConfigs),
595
752
  queryProcessor.queryProcessorGlobals.getCreatorUserLookupStage(),
596
753
  queryProcessor.queryProcessorGlobals.getCreatorOrganizationLookupStage(),
@@ -706,8 +863,10 @@ const CategoryModel = (db) => {
706
863
  description: { type: String, trim: true },
707
864
  photo: { type: String },
708
865
  order: { type: Number, required: true },
866
+ slug: { type: String, required: true, trim: true },
709
867
  url: { type: String, required: true, trim: true, unique: true },
710
868
  parent: { type: db.mongoose.Schema.Types.ObjectId, ref: "Category" },
869
+ level: { type: Number, required: true, default: 0 },
711
870
  localization: { type: Array },
712
871
  filters: { type: Array }
713
872
  },
@@ -719,23 +878,12 @@ const CategoryModel = (db) => {
719
878
  ownership_schema.applyOwnershipSchema(CategorySchema, db);
720
879
  metadata_schema.applyMetadataSchema(CategorySchema);
721
880
  engagement_schema.applyEngagementSchema(CategorySchema);
722
- CategorySchema.index({ name: 1 });
723
881
  CategorySchema.index({ name: "text", description: "text" });
724
- CategorySchema.index({ "owner.type": 1, "owner.target": 1, status: 1, parent: 1 });
725
- CategorySchema.index({ "owner.type": 1, "owner.target": 1, order: 1 });
882
+ CategorySchema.index({ url: 1, "owner.target": 1, status: 1, level: 1 });
883
+ CategorySchema.index({ "owner.type": 1, "owner.target": 1, status: 1, level: 1 });
726
884
  CategorySchema.index({ parent: 1, status: 1, order: 1 });
727
- CategorySchema.index({ parent: 1, status: 1, "owner.type": 1 });
728
- CategorySchema.index({ parent: 1, name: 1 });
729
- CategorySchema.index({ parent: 1, createdAt: -1 });
730
- CategorySchema.index({ parent: 1, updatedAt: -1 });
885
+ CategorySchema.index({ level: 1, status: 1, order: 1 });
731
886
  CategorySchema.index({ status: 1, order: 1 });
732
- CategorySchema.index({ status: 1, name: 1 });
733
- CategorySchema.index({ status: 1, createdAt: -1 });
734
- CategorySchema.index({ status: 1, updatedAt: -1 });
735
- CategorySchema.index({ _id: 1, parent: 1 });
736
- CategorySchema.index({ order: 1 });
737
- CategorySchema.index({ createdAt: -1 });
738
- CategorySchema.index({ updatedAt: -1 });
739
887
  const Category = db.mongoose.model("Category", CategorySchema, "categories");
740
888
  return Category;
741
889
  };
@@ -972,9 +1120,21 @@ const VariantModel = (db) => {
972
1120
  return Variant;
973
1121
  };
974
1122
  const verifierFactory$1 = function(db) {
1123
+ const generateSlug = (name, existingSlugs = []) => {
1124
+ let baseSlug = name.toLowerCase().replace(/[^a-z0-9\s-]/g, "").replace(/\s+/g, "-").replace(/-+/g, "-").trim("-");
1125
+ let slug = baseSlug;
1126
+ let counter = 1;
1127
+ while (existingSlugs.includes(slug)) {
1128
+ slug = `${baseSlug}-${counter}`;
1129
+ counter++;
1130
+ }
1131
+ return slug;
1132
+ };
975
1133
  const queryValidatorConfig = {
976
1134
  parent: { rule: "optional", validator: globals_verifier.Validator.schema().string() },
1135
+ slug: { rule: "optional", validator: globals_verifier.Validator.schema().string() },
977
1136
  url: { rule: "optional", validator: globals_verifier.Validator.schema().string() },
1137
+ parentUrl: { rule: "optional", validator: globals_verifier.Validator.schema().string() },
978
1138
  search: { rule: "optional", validator: globals_verifier.Validator.schema().string() },
979
1139
  sortParam: {
980
1140
  rule: "optional",
@@ -1023,7 +1183,7 @@ const verifierFactory$1 = function(db) {
1023
1183
  validator: globals_verifier.Validator.schema().string().oneOf(["draft", "internal", "published", "removed"]),
1024
1184
  default: "draft"
1025
1185
  },
1026
- url: { rule: "optional", validator: globals_verifier.Validator.schema().string().required() },
1186
+ slug: { rule: "optional", validator: globals_verifier.Validator.schema().string() },
1027
1187
  parent: { rule: "optional", validator: globals_verifier.Validator.schema().oneOfTypes(["string", "null"]) },
1028
1188
  localization: { rule: "optional" },
1029
1189
  filters: { rule: "optional" },
@@ -1052,7 +1212,7 @@ const verifierFactory$1 = function(db) {
1052
1212
  }
1053
1213
  };
1054
1214
  const deleteBodyValidatorConfig = {
1055
- url: {
1215
+ _id: {
1056
1216
  rule: "optional",
1057
1217
  validator: globals_verifier.Validator.schema().string().required()
1058
1218
  }
@@ -1111,18 +1271,31 @@ const verifierFactory$1 = function(db) {
1111
1271
  req.verifiedBody = verification.verifiedData;
1112
1272
  next();
1113
1273
  },
1114
- // Проверка на существование категории с тем же URL (для создания)
1274
+ // Проверка на существование категории с тем же slug в рамках parent
1115
1275
  async checkCategoryExistOrNot(req, res, next) {
1116
1276
  try {
1117
- if (!req.verifiedBody.url) {
1118
- return res.status(400).json({ message: "URL is required" });
1277
+ const { name, parent, slug } = req.verifiedBody;
1278
+ if (!name) {
1279
+ return res.status(400).json({ message: "Name is required" });
1119
1280
  }
1120
- const existingCategory = await db.category.findOne({ url: req.verifiedBody.url });
1121
- if (existingCategory) {
1122
- return res.status(409).json({
1123
- message: "Category with this URL already exists",
1124
- category: existingCategory
1281
+ let categorySlug = slug;
1282
+ if (!categorySlug) {
1283
+ const existingSlugs = await db.category.find({
1284
+ parent: parent || null
1285
+ }).distinct("slug");
1286
+ categorySlug = generateSlug(name, existingSlugs);
1287
+ req.verifiedBody.slug = categorySlug;
1288
+ } else {
1289
+ const existingCategory = await db.category.findOne({
1290
+ slug: categorySlug,
1291
+ parent: parent || null
1125
1292
  });
1293
+ if (existingCategory) {
1294
+ return res.status(409).json({
1295
+ message: "Category with this slug already exists in this parent",
1296
+ category: existingCategory
1297
+ });
1298
+ }
1126
1299
  }
1127
1300
  next();
1128
1301
  } catch (error) {
@@ -1146,14 +1319,14 @@ const verifierFactory$1 = function(db) {
1146
1319
  res.status(500).json({ message: error.message });
1147
1320
  }
1148
1321
  },
1149
- // Загрузка категории по URL для удаления
1322
+ // Загрузка категории по _id для удаления
1150
1323
  async loadCategoryForDelete(req, res, next) {
1151
1324
  try {
1152
- const url = req.verifiedBody.url;
1153
- if (!url) {
1154
- return res.status(400).json({ message: "Category URL is required" });
1325
+ const _id = req.verifiedBody._id;
1326
+ if (!_id) {
1327
+ return res.status(400).json({ message: "Category _id is required" });
1155
1328
  }
1156
- const category = await db.category.findOne({ url }).lean();
1329
+ const category = await db.category.findById(_id).lean();
1157
1330
  if (!category) {
1158
1331
  return res.status(404).json({ message: "Category not found" });
1159
1332
  }