goldstars-services 1.0.62 → 1.0.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -3,6 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "EventRegistrationService", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _eventRegistration.default;
10
+ }
11
+ });
6
12
  Object.defineProperty(exports, "ReservationService", {
7
13
  enumerable: true,
8
14
  get: function get() {
@@ -66,4 +72,5 @@ var _bank = _interopRequireDefault(require("./services/bank.service"));
66
72
  var _bike = _interopRequireDefault(require("./services/bike.service"));
67
73
  var _report = _interopRequireDefault(require("./services/report.service"));
68
74
  var _reservation = _interopRequireDefault(require("./services/reservation.service"));
75
+ var _eventRegistration = _interopRequireDefault(require("./services/eventRegistration.service"));
69
76
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _mongoose = _interopRequireDefault(require("mongoose"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ var EventRegistrationSchema = new _mongoose.default.Schema({
10
+ name: {
11
+ type: String,
12
+ required: true,
13
+ trim: true
14
+ },
15
+ email: {
16
+ type: String,
17
+ required: true,
18
+ lowercase: true,
19
+ trim: true
20
+ },
21
+ phone: {
22
+ type: String,
23
+ required: true,
24
+ trim: true
25
+ },
26
+ age: {
27
+ type: Number,
28
+ required: true,
29
+ min: 0
30
+ },
31
+ dorsalNumber: {
32
+ type: Number,
33
+ required: true,
34
+ min: 0,
35
+ max: 1000,
36
+ unique: true
37
+ }
38
+ }, {
39
+ timestamps: true
40
+ });
41
+ EventRegistrationSchema.index({
42
+ email: 1,
43
+ createdAt: -1
44
+ });
45
+ EventRegistrationSchema.index({
46
+ dorsalNumber: 1
47
+ });
48
+ var _default = exports.default = _mongoose.default.model('EventRegistration', EventRegistrationSchema);
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _eventRegistration = _interopRequireDefault(require("../models/eventRegistration.model"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
10
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
11
+ var MAX_DORSAL = 1000;
12
+ var getUsedDorsals = /*#__PURE__*/function () {
13
+ var _ref = _asyncToGenerator(function* () {
14
+ var regs = yield _eventRegistration.default.find({}, {
15
+ dorsalNumber: 1,
16
+ _id: 0
17
+ }).lean();
18
+ return new Set(regs.map(r => r.dorsalNumber));
19
+ });
20
+ return function getUsedDorsals() {
21
+ return _ref.apply(this, arguments);
22
+ };
23
+ }();
24
+ var getNextAvailableDorsal = /*#__PURE__*/function () {
25
+ var _ref2 = _asyncToGenerator(function* () {
26
+ var used = yield getUsedDorsals();
27
+ // Try random distribution first
28
+ for (var i = 0; i < 50; i++) {
29
+ var candidate = Math.floor(Math.random() * (MAX_DORSAL + 1));
30
+ if (!used.has(candidate)) return candidate;
31
+ }
32
+ // Fallback sequential
33
+ for (var d = 0; d <= MAX_DORSAL; d++) {
34
+ if (!used.has(d)) return d;
35
+ }
36
+ throw new Error('No hay dorsales disponibles. Cupo lleno.');
37
+ });
38
+ return function getNextAvailableDorsal() {
39
+ return _ref2.apply(this, arguments);
40
+ };
41
+ }();
42
+ var createRegistration = /*#__PURE__*/function () {
43
+ var _ref4 = _asyncToGenerator(function* (_ref3) {
44
+ var {
45
+ name,
46
+ email,
47
+ phone,
48
+ age
49
+ } = _ref3;
50
+ if (!name || !email || !phone || age === undefined || age === null) {
51
+ throw new Error('Faltan campos requeridos');
52
+ }
53
+ var lastErr;
54
+ for (var attempt = 0; attempt < 3; attempt++) {
55
+ try {
56
+ var dorsalNumber = yield getNextAvailableDorsal();
57
+ var reg = yield _eventRegistration.default.create({
58
+ name,
59
+ email,
60
+ phone,
61
+ age,
62
+ dorsalNumber
63
+ });
64
+ return reg.toObject();
65
+ } catch (e) {
66
+ lastErr = e;
67
+ // Retry if duplicate key error on dorsalNumber
68
+ if (e && e.code === 11000) continue;
69
+ throw e;
70
+ }
71
+ }
72
+ throw lastErr || new Error('No se pudo crear el registro');
73
+ });
74
+ return function createRegistration(_x) {
75
+ return _ref4.apply(this, arguments);
76
+ };
77
+ }();
78
+ var listRegistrations = /*#__PURE__*/function () {
79
+ var _ref5 = _asyncToGenerator(function* () {
80
+ return _eventRegistration.default.find({}).sort({
81
+ createdAt: -1
82
+ }).lean();
83
+ });
84
+ return function listRegistrations() {
85
+ return _ref5.apply(this, arguments);
86
+ };
87
+ }();
88
+ var getRegistrationById = /*#__PURE__*/function () {
89
+ var _ref6 = _asyncToGenerator(function* (id) {
90
+ return _eventRegistration.default.findById(id).lean();
91
+ });
92
+ return function getRegistrationById(_x2) {
93
+ return _ref6.apply(this, arguments);
94
+ };
95
+ }();
96
+ var getRegistrationByDorsal = /*#__PURE__*/function () {
97
+ var _ref7 = _asyncToGenerator(function* (dorsalNumber) {
98
+ return _eventRegistration.default.findOne({
99
+ dorsalNumber
100
+ }).lean();
101
+ });
102
+ return function getRegistrationByDorsal(_x3) {
103
+ return _ref7.apply(this, arguments);
104
+ };
105
+ }();
106
+ var updateRegistration = /*#__PURE__*/function () {
107
+ var _ref8 = _asyncToGenerator(function* (id, updateData) {
108
+ return _eventRegistration.default.findByIdAndUpdate(id, updateData, {
109
+ new: true
110
+ }).lean();
111
+ });
112
+ return function updateRegistration(_x4, _x5) {
113
+ return _ref8.apply(this, arguments);
114
+ };
115
+ }();
116
+ var deleteRegistration = /*#__PURE__*/function () {
117
+ var _ref9 = _asyncToGenerator(function* (id) {
118
+ return _eventRegistration.default.findByIdAndDelete(id).lean();
119
+ });
120
+ return function deleteRegistration(_x6) {
121
+ return _ref9.apply(this, arguments);
122
+ };
123
+ }();
124
+ var getRegistrationStats = /*#__PURE__*/function () {
125
+ var _ref10 = _asyncToGenerator(function* () {
126
+ var total = yield _eventRegistration.default.countDocuments();
127
+ var ageGroups = yield _eventRegistration.default.aggregate([{
128
+ $group: {
129
+ _id: {
130
+ $switch: {
131
+ branches: [{
132
+ case: {
133
+ $lt: ['$age', 18]
134
+ },
135
+ then: 'Menor de 18'
136
+ }, {
137
+ case: {
138
+ $and: [{
139
+ $gte: ['$age', 18]
140
+ }, {
141
+ $lt: ['$age', 30]
142
+ }]
143
+ },
144
+ then: '18-29'
145
+ }, {
146
+ case: {
147
+ $and: [{
148
+ $gte: ['$age', 30]
149
+ }, {
150
+ $lt: ['$age', 50]
151
+ }]
152
+ },
153
+ then: '30-49'
154
+ }, {
155
+ case: {
156
+ $gte: ['$age', 50]
157
+ },
158
+ then: '50+'
159
+ }],
160
+ default: 'Sin especificar'
161
+ }
162
+ },
163
+ count: {
164
+ $sum: 1
165
+ }
166
+ }
167
+ }]);
168
+ return {
169
+ total,
170
+ available: MAX_DORSAL + 1 - total,
171
+ ageGroups
172
+ };
173
+ });
174
+ return function getRegistrationStats() {
175
+ return _ref10.apply(this, arguments);
176
+ };
177
+ }();
178
+ var _default = exports.default = {
179
+ createRegistration,
180
+ listRegistrations,
181
+ getRegistrationById,
182
+ getRegistrationByDorsal,
183
+ updateRegistration,
184
+ deleteRegistration,
185
+ getRegistrationStats,
186
+ getNextAvailableDorsal
187
+ };
@@ -172,12 +172,18 @@ var checkIfUserIsTrainer = /*#__PURE__*/function () {
172
172
  */
173
173
  var getUsers = function getUsers(queryParams) {
174
174
  var populate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
175
+ console.log('=== DEBUG getUsers UserService ===');
176
+ console.log('queryParams:', queryParams);
177
+ console.log('populate:', populate);
178
+
175
179
  // Añadir el filtro para isDeleted
176
- var query = _user.default.find(_objectSpread(_objectSpread({}, queryParams), {}, {
180
+ var finalQuery = _objectSpread(_objectSpread({}, queryParams), {}, {
177
181
  isDeleted: {
178
182
  $ne: true
179
183
  }
180
- }));
184
+ });
185
+ console.log('Final query:', finalQuery);
186
+ var query = _user.default.find(finalQuery);
181
187
  return populate ? populateQueryUserData(query) : query;
182
188
  };
183
189
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "goldstars-services",
3
- "version": "1.0.62",
3
+ "version": "1.0.64",
4
4
  "description": "This is the services layer for GoldStars",
5
5
  "main": "./dist/index.js",
6
6
  "scripts": {