"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.CustomVariablesService = void 0;
const common_1 = require("@nestjs/common");
const typeorm_1 = require("@nestjs/typeorm");
const typeorm_2 = require("typeorm");
const core_entities_1 = require("../core-entities");
let CustomVariablesService = class CustomVariablesService {
    constructor(customVariablesRepository) {
        this.customVariablesRepository = customVariablesRepository;
    }
    async create(createCustomVariableDto) {
        const variable = this.customVariablesRepository.create(createCustomVariableDto);
        return this.customVariablesRepository.save(variable);
    }
    async findAll() {
        return this.customVariablesRepository.find({
            order: { order_number: 'ASC', key: 'ASC' },
        });
    }
    async findAllEnabled() {
        return this.customVariablesRepository.find({
            where: { enabled: true },
            order: { order_number: 'ASC', key: 'ASC' },
        });
    }
    async findOne(id) {
        const variable = await this.customVariablesRepository.findOneBy({ id });
        if (!variable) {
            throw new common_1.NotFoundException(`CustomVariable with ID "${id}" not found`);
        }
        return variable;
    }
    async update(id, updateCustomVariableDto) {
        const variable = await this.findOne(id);
        this.customVariablesRepository.merge(variable, updateCustomVariableDto);
        return this.customVariablesRepository.save(variable);
    }
    async remove(id) {
        const variable = await this.findOne(id);
        await this.customVariablesRepository.remove(variable);
    }
    async reorder(orderedIds) {
        await this.customVariablesRepository.manager.transaction(async (transactionalEntityManager) => {
            for (let i = 0; i < orderedIds.length; i++) {
                await transactionalEntityManager.update(core_entities_1.CustomVariable, orderedIds[i], { order_number: i });
            }
        });
    }
};
exports.CustomVariablesService = CustomVariablesService;
exports.CustomVariablesService = CustomVariablesService = __decorate([
    (0, common_1.Injectable)(),
    __param(0, (0, typeorm_1.InjectRepository)(core_entities_1.CustomVariable)),
    __metadata("design:paramtypes", [typeorm_2.Repository])
], CustomVariablesService);
//# sourceMappingURL=custom-variables.service.js.map