goldstars-services 1.0.63 → 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.
|
@@ -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
|
+
};
|