- HERENCIA-SIMCO.md actualizado con directivas v3.7 y v3.8 - Actualizaciones de configuracion Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
176 lines
7.9 KiB
JavaScript
176 lines
7.9 KiB
JavaScript
"use strict";
|
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
};
|
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
};
|
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.DevicesController = void 0;
|
|
const common_1 = require("@nestjs/common");
|
|
const swagger_1 = require("@nestjs/swagger");
|
|
const services_1 = require("../services");
|
|
const dto_1 = require("../dto");
|
|
const CurrentUser = () => (target, key, index) => { };
|
|
const CurrentTenant = () => (target, key, index) => { };
|
|
const JwtAuthGuard = class {
|
|
};
|
|
const TenantGuard = class {
|
|
};
|
|
const Public = () => (target, key, descriptor) => { };
|
|
let DevicesController = class DevicesController {
|
|
constructor(devicesService, pushService) {
|
|
this.devicesService = devicesService;
|
|
this.pushService = pushService;
|
|
}
|
|
getVapidKey() {
|
|
const vapidPublicKey = this.pushService.getVapidPublicKey();
|
|
return {
|
|
vapidPublicKey,
|
|
isEnabled: this.pushService.isEnabled(),
|
|
};
|
|
}
|
|
async getDevices(user, tenantId) {
|
|
const userId = user?.id || '';
|
|
const tenant = tenantId || user?.tenant_id || '';
|
|
return this.devicesService.findByUser(userId, tenant);
|
|
}
|
|
async registerDevice(user, tenantId, dto) {
|
|
const userId = user?.id || '';
|
|
const tenant = tenantId || user?.tenant_id || '';
|
|
if (!this.pushService.validateSubscription(dto.deviceToken)) {
|
|
return {
|
|
success: false,
|
|
error: 'Invalid push subscription format',
|
|
};
|
|
}
|
|
const device = await this.devicesService.register(userId, tenant, dto);
|
|
return {
|
|
success: true,
|
|
device: {
|
|
id: device.id,
|
|
device_type: device.device_type,
|
|
device_name: device.device_name,
|
|
browser: device.browser,
|
|
os: device.os,
|
|
created_at: device.created_at,
|
|
},
|
|
};
|
|
}
|
|
async updateDevice(user, tenantId, deviceId, dto) {
|
|
const userId = user?.id || '';
|
|
const tenant = tenantId || user?.tenant_id || '';
|
|
return this.devicesService.update(deviceId, userId, tenant, dto);
|
|
}
|
|
async unregisterDevice(user, tenantId, deviceId) {
|
|
const userId = user?.id || '';
|
|
const tenant = tenantId || user?.tenant_id || '';
|
|
await this.devicesService.unregister(deviceId, userId, tenant);
|
|
}
|
|
async getStats(user, tenantId) {
|
|
const userId = user?.id || '';
|
|
const tenant = tenantId || user?.tenant_id || '';
|
|
const activeCount = await this.devicesService.countActiveDevices(userId, tenant);
|
|
const devices = await this.devicesService.findByUser(userId, tenant);
|
|
return {
|
|
total: devices.length,
|
|
active: activeCount,
|
|
inactive: devices.length - activeCount,
|
|
byType: {
|
|
web: devices.filter((d) => d.device_type === 'web').length,
|
|
mobile: devices.filter((d) => d.device_type === 'mobile').length,
|
|
desktop: devices.filter((d) => d.device_type === 'desktop').length,
|
|
},
|
|
};
|
|
}
|
|
};
|
|
exports.DevicesController = DevicesController;
|
|
__decorate([
|
|
(0, common_1.Get)('vapid-key'),
|
|
(0, swagger_1.ApiOperation)({ summary: 'Get VAPID public key for push subscription' }),
|
|
(0, swagger_1.ApiResponse)({ status: 200, description: 'Returns VAPID public key' }),
|
|
__metadata("design:type", Function),
|
|
__metadata("design:paramtypes", []),
|
|
__metadata("design:returntype", void 0)
|
|
], DevicesController.prototype, "getVapidKey", null);
|
|
__decorate([
|
|
(0, common_1.Get)(),
|
|
(0, common_1.UseGuards)(JwtAuthGuard, TenantGuard),
|
|
(0, swagger_1.ApiBearerAuth)(),
|
|
(0, swagger_1.ApiOperation)({ summary: 'List my registered devices' }),
|
|
(0, swagger_1.ApiResponse)({ status: 200, description: 'Returns list of devices' }),
|
|
__param(0, CurrentUser()),
|
|
__param(1, CurrentTenant()),
|
|
__metadata("design:type", Function),
|
|
__metadata("design:paramtypes", [Object, String]),
|
|
__metadata("design:returntype", Promise)
|
|
], DevicesController.prototype, "getDevices", null);
|
|
__decorate([
|
|
(0, common_1.Post)(),
|
|
(0, common_1.UseGuards)(JwtAuthGuard, TenantGuard),
|
|
(0, swagger_1.ApiBearerAuth)(),
|
|
(0, swagger_1.ApiOperation)({ summary: 'Register device for push notifications' }),
|
|
(0, swagger_1.ApiResponse)({ status: 201, description: 'Device registered' }),
|
|
(0, swagger_1.ApiResponse)({ status: 400, description: 'Invalid subscription' }),
|
|
__param(0, CurrentUser()),
|
|
__param(1, CurrentTenant()),
|
|
__param(2, (0, common_1.Body)()),
|
|
__metadata("design:type", Function),
|
|
__metadata("design:paramtypes", [Object, String, dto_1.RegisterDeviceDto]),
|
|
__metadata("design:returntype", Promise)
|
|
], DevicesController.prototype, "registerDevice", null);
|
|
__decorate([
|
|
(0, common_1.Patch)(':id'),
|
|
(0, common_1.UseGuards)(JwtAuthGuard, TenantGuard),
|
|
(0, swagger_1.ApiBearerAuth)(),
|
|
(0, swagger_1.ApiOperation)({ summary: 'Update device' }),
|
|
(0, swagger_1.ApiResponse)({ status: 200, description: 'Device updated' }),
|
|
(0, swagger_1.ApiResponse)({ status: 404, description: 'Device not found' }),
|
|
__param(0, CurrentUser()),
|
|
__param(1, CurrentTenant()),
|
|
__param(2, (0, common_1.Param)('id')),
|
|
__param(3, (0, common_1.Body)()),
|
|
__metadata("design:type", Function),
|
|
__metadata("design:paramtypes", [Object, String, String, dto_1.UpdateDeviceDto]),
|
|
__metadata("design:returntype", Promise)
|
|
], DevicesController.prototype, "updateDevice", null);
|
|
__decorate([
|
|
(0, common_1.Delete)(':id'),
|
|
(0, common_1.UseGuards)(JwtAuthGuard, TenantGuard),
|
|
(0, swagger_1.ApiBearerAuth)(),
|
|
(0, common_1.HttpCode)(common_1.HttpStatus.NO_CONTENT),
|
|
(0, swagger_1.ApiOperation)({ summary: 'Unregister device' }),
|
|
(0, swagger_1.ApiResponse)({ status: 204, description: 'Device unregistered' }),
|
|
(0, swagger_1.ApiResponse)({ status: 404, description: 'Device not found' }),
|
|
__param(0, CurrentUser()),
|
|
__param(1, CurrentTenant()),
|
|
__param(2, (0, common_1.Param)('id')),
|
|
__metadata("design:type", Function),
|
|
__metadata("design:paramtypes", [Object, String, String]),
|
|
__metadata("design:returntype", Promise)
|
|
], DevicesController.prototype, "unregisterDevice", null);
|
|
__decorate([
|
|
(0, common_1.Get)('stats'),
|
|
(0, common_1.UseGuards)(JwtAuthGuard, TenantGuard),
|
|
(0, swagger_1.ApiBearerAuth)(),
|
|
(0, swagger_1.ApiOperation)({ summary: 'Get device stats for current user' }),
|
|
(0, swagger_1.ApiResponse)({ status: 200, description: 'Returns device statistics' }),
|
|
__param(0, CurrentUser()),
|
|
__param(1, CurrentTenant()),
|
|
__metadata("design:type", Function),
|
|
__metadata("design:paramtypes", [Object, String]),
|
|
__metadata("design:returntype", Promise)
|
|
], DevicesController.prototype, "getStats", null);
|
|
exports.DevicesController = DevicesController = __decorate([
|
|
(0, swagger_1.ApiTags)('Notification Devices'),
|
|
(0, common_1.Controller)('notifications/devices'),
|
|
__metadata("design:paramtypes", [services_1.DevicesService,
|
|
services_1.PushNotificationService])
|
|
], DevicesController);
|
|
//# sourceMappingURL=devices.controller.js.map
|