template-saas/apps/backend/dist/modules/notifications/controllers/devices.controller.js
rckrdmrd 50a821a415
Some checks failed
CI / Backend CI (push) Has been cancelled
CI / Frontend CI (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / CI Summary (push) Has been cancelled
[SIMCO-V38] feat: Actualizar a SIMCO v3.8.0
- HERENCIA-SIMCO.md actualizado con directivas v3.7 y v3.8
- Actualizaciones de configuracion

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 08:53:08 -06:00

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