HEX
Server: nginx/1.24.0
System: Linux nowruzgan 6.8.0-57-generic #59-Ubuntu SMP PREEMPT_DYNAMIC Sat Mar 15 17:40:59 UTC 2025 x86_64
User: babak (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /var/dev/shahnamag/back-end/dist/verse/verse.controller.js
"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.VerseController = void 0;
const common_1 = require("@nestjs/common");
const verse_service_1 = require("./verse.service");
const create_verse_dto_1 = require("./dto/create-verse.dto");
const update_verse_dto_1 = require("./dto/update-verse.dto");
const auth_guard_1 = require("../user/auth.guard");
const update_verse_keyword_dto_1 = require("./dto/update-verse-keyword.dto");
const verse_keyword_service_1 = require("./verse-keyword.service");
const verse_person_service_1 = require("./verse-person.service");
const keyword_service_1 = require("../keyword/keyword.service");
const typeorm_1 = require("typeorm");
const person_service_1 = require("../person/person.service");
let VerseController = class VerseController {
    keywordService;
    verseService;
    personService;
    verseKeywordService;
    versePersonService;
    constructor(keywordService, verseService, personService, verseKeywordService, versePersonService) {
        this.keywordService = keywordService;
        this.verseService = verseService;
        this.personService = personService;
        this.verseKeywordService = verseKeywordService;
        this.versePersonService = versePersonService;
    }
    create(createVerseDto) {
        return this.verseService.create(createVerseDto);
    }
    async findAll(page, size, fromVerse, toVerse, keywordId, personId, onlyPublished) {
        if (keywordId)
            return this.findAllByKeyword(page, size, fromVerse, toVerse, keywordId, !!onlyPublished);
        if (personId)
            return this.findAllByPerson(page, size, fromVerse, toVerse, personId, !!onlyPublished);
        let where = {};
        if (fromVerse !== undefined)
            where.id = (0, typeorm_1.MoreThanOrEqual)(fromVerse);
        if (toVerse !== undefined) {
            if (where.id)
                where.id = (0, typeorm_1.Between)(fromVerse, toVerse);
            else
                where.id = (0, typeorm_1.LessThanOrEqual)(toVerse);
        }
        let result = await this.verseService.findAll(size, page * size, where).catch(error => error);
        if (result instanceof Error)
            throw new common_1.HttpException({ error: 500, message: result.message }, common_1.HttpStatus.INTERNAL_SERVER_ERROR);
        let [list, sum] = result;
        for (let verse of list)
            for (let triplet of verse.triplets)
                if (triplet.predicate) {
                    triplet.predicate.label = { fa: triplet.predicate.label, en: triplet.predicate.translation };
                    delete triplet.predicate.translation;
                }
        for (let i = 0; i < list.length; i++) {
            if (!i || list[i - 1].id < list[i].id - 1)
                list[i].prevs = await this.verseService.findNeighbours(list[i].id, -3).catch(error => false);
            if (i == list.length - 1 || list[i + 1].id > list[i].id + 1)
                list[i].nexts = await this.verseService.findNeighbours(list[i].id, 3).catch(error => false);
        }
        return {
            error: 0,
            data: { list, sum }
        };
    }
    async findAllByPerson(page, size, fromVerse, toVerse, personId, onlyPublished) {
        let person = await this.personService.findOne(personId, false).catch(error => error);
        if (!person)
            throw new common_1.HttpException({ error: 404, message: 'person not found' }, common_1.HttpStatus.NOT_FOUND);
        if (person instanceof Error)
            throw new common_1.HttpException({ error: 500, message: person.message }, common_1.HttpStatus.INTERNAL_SERVER_ERROR);
        let where = { person };
        if (onlyPublished)
            where.state = 'accepted';
        if (fromVerse !== undefined)
            where.verseId = (0, typeorm_1.MoreThanOrEqual)(fromVerse);
        if (toVerse !== undefined)
            where.verseId = (0, typeorm_1.LessThanOrEqual)(toVerse);
        let [versePersons, sum] = await this.versePersonService.findAll(size, page * size, true, where).catch(error => error);
        let verseIds = versePersons.map(record => record.verse.id);
        let list = await this.verseService.findById(verseIds).catch(error => error);
        if (list instanceof Error)
            throw new common_1.HttpException({ error: 500, message: list.message }, common_1.HttpStatus.INTERNAL_SERVER_ERROR);
        for (let i = 0; i < list.length; i++) {
            if (!i || list[i - 1].id < list[i].id - 1)
                list[i].prevs = await this.verseService.findNeighbours(list[i].id, -3).catch(error => false);
            if (i == list.length - 1 || list[i + 1].id > list[i].id + 1)
                list[i].nexts = await this.verseService.findNeighbours(list[i].id, 3).catch(error => false);
        }
        return {
            error: 0,
            data: { list, sum }
        };
    }
    async findAllByKeyword(page, size, fromVerse, toVerse, keywordId, onlyPublished) {
        let keyword = await this.keywordService.findOne(keywordId, false).catch(error => error);
        if (!keyword)
            throw new common_1.HttpException({ error: 404, message: 'keyword not found' }, common_1.HttpStatus.NOT_FOUND);
        if (keyword instanceof Error)
            throw new common_1.HttpException({ error: 500, message: keyword.message }, common_1.HttpStatus.INTERNAL_SERVER_ERROR);
        let where = { keyword };
        if (onlyPublished)
            where.state = 'accepted';
        if (fromVerse !== undefined)
            where.verseId = (0, typeorm_1.MoreThanOrEqual)(fromVerse);
        if (toVerse !== undefined)
            where.verseId = (0, typeorm_1.LessThanOrEqual)(toVerse);
        let [verseKeywords, sum] = await this.verseKeywordService.findAll(size, page * size, true, where).catch(error => error);
        let verseIds = verseKeywords.map(record => record.verse.id);
        let list = await this.verseService.findById(verseIds).catch(error => error);
        if (list instanceof Error)
            throw new common_1.HttpException({ error: 500, message: list.message }, common_1.HttpStatus.INTERNAL_SERVER_ERROR);
        for (let i = 0; i < list.length; i++) {
            if (!i || list[i - 1].id < list[i].id - 1)
                list[i].prevs = await this.verseService.findNeighbours(list[i].id, -3).catch(error => false);
            if (i == list.length - 1 || list[i + 1].id > list[i].id + 1)
                list[i].nexts = await this.verseService.findNeighbours(list[i].id, 3).catch(error => false);
        }
        return {
            error: 0,
            data: { list, sum }
        };
    }
    findOne(id) {
        return this.verseService.findOne(+id);
    }
    update(id, updateVerseDto) {
        return this.verseService.update(+id, updateVerseDto);
    }
    remove(id) {
        return this.verseService.remove(+id);
    }
    async updateVerseKeyword(id, updateVerseKeywordDto) {
        let record = await this.verseKeywordService.findOne(id).catch(error => error);
        if (!record)
            throw new common_1.HttpException({ error: 'not found' }, common_1.HttpStatus.NOT_FOUND);
        if (record instanceof Error)
            throw new common_1.HttpException({ error: record }, common_1.HttpStatus.INTERNAL_SERVER_ERROR);
        if (updateVerseKeywordDto.state != 'accepted' && updateVerseKeywordDto.state != 'rejected')
            throw new common_1.HttpException({ error: 'invalid state field' }, common_1.HttpStatus.BAD_REQUEST);
        let result = await this.verseKeywordService.update(id, { state: updateVerseKeywordDto.state }).catch(error => error);
        if (result instanceof Error)
            throw new common_1.HttpException({ error: result }, common_1.HttpStatus.INTERNAL_SERVER_ERROR);
        return { error: 0, data: true };
    }
    async addVersePerson(record) {
        record.verse = await this.verseService.findOne(record.verse).catch(error => error);
        if (!record.verse)
            throw new common_1.HttpException({}, common_1.HttpStatus.NOT_FOUND);
        if (record.verse instanceof Error)
            throw new common_1.HttpException({}, common_1.HttpStatus.INTERNAL_SERVER_ERROR);
        record.person = await this.personService.findOne(record.person).catch(error => error);
        if (!record.person)
            throw new common_1.HttpException({}, common_1.HttpStatus.NOT_FOUND);
        if (record.person instanceof Error)
            throw new common_1.HttpException({}, common_1.HttpStatus.INTERNAL_SERVER_ERROR);
        let result = await this.versePersonService.create(record).catch(error => error);
        if (result instanceof Error)
            throw new common_1.HttpException({}, common_1.HttpStatus.INTERNAL_SERVER_ERROR);
        return result;
    }
    async removeVersePerson(id) {
        let record = await this.versePersonService.findOne(id).catch(error => error);
        if (!record)
            throw new common_1.HttpException({}, common_1.HttpStatus.NOT_FOUND);
        if (record instanceof Error)
            throw new common_1.HttpException({}, common_1.HttpStatus.INTERNAL_SERVER_ERROR);
        let result = await this.versePersonService.remove(record).catch(error => error);
        if (result instanceof Error)
            throw new common_1.HttpException({ error: result }, common_1.HttpStatus.INTERNAL_SERVER_ERROR);
        return true;
    }
};
exports.VerseController = VerseController;
__decorate([
    (0, common_1.Post)(),
    __param(0, (0, common_1.Body)()),
    __metadata("design:type", Function),
    __metadata("design:paramtypes", [create_verse_dto_1.CreateVerseDto]),
    __metadata("design:returntype", void 0)
], VerseController.prototype, "create", null);
__decorate([
    (0, common_1.Get)(),
    (0, auth_guard_1.Public)(),
    __param(0, (0, common_1.Query)('page')),
    __param(1, (0, common_1.Query)('size')),
    __param(2, (0, common_1.Query)('fromVerse')),
    __param(3, (0, common_1.Query)('toVerse')),
    __param(4, (0, common_1.Query)('keyword')),
    __param(5, (0, common_1.Query)('person')),
    __param(6, (0, common_1.Query)('onlyPublished')),
    __metadata("design:type", Function),
    __metadata("design:paramtypes", [Number, Number, Number, Number, Number, Number, Number]),
    __metadata("design:returntype", Promise)
], VerseController.prototype, "findAll", null);
__decorate([
    (0, common_1.Get)(':id'),
    __param(0, (0, common_1.Param)('id')),
    __metadata("design:type", Function),
    __metadata("design:paramtypes", [String]),
    __metadata("design:returntype", void 0)
], VerseController.prototype, "findOne", null);
__decorate([
    (0, common_1.Patch)(':id'),
    __param(0, (0, common_1.Param)('id')),
    __param(1, (0, common_1.Body)()),
    __metadata("design:type", Function),
    __metadata("design:paramtypes", [String, update_verse_dto_1.UpdateVerseDto]),
    __metadata("design:returntype", void 0)
], VerseController.prototype, "update", null);
__decorate([
    (0, common_1.Delete)(':id'),
    __param(0, (0, common_1.Param)('id')),
    __metadata("design:type", Function),
    __metadata("design:paramtypes", [String]),
    __metadata("design:returntype", void 0)
], VerseController.prototype, "remove", null);
__decorate([
    (0, common_1.Patch)('keyword/:id'),
    __param(0, (0, common_1.Param)('id')),
    __param(1, (0, common_1.Body)()),
    __metadata("design:type", Function),
    __metadata("design:paramtypes", [Number, update_verse_keyword_dto_1.UpdateVerseKeywordDto]),
    __metadata("design:returntype", Promise)
], VerseController.prototype, "updateVerseKeyword", null);
__decorate([
    (0, common_1.Post)('person'),
    __param(0, (0, common_1.Body)()),
    __metadata("design:type", Function),
    __metadata("design:paramtypes", [Object]),
    __metadata("design:returntype", Promise)
], VerseController.prototype, "addVersePerson", null);
__decorate([
    (0, common_1.Delete)('person/:id'),
    __param(0, (0, common_1.Param)('id')),
    __metadata("design:type", Function),
    __metadata("design:paramtypes", [Number]),
    __metadata("design:returntype", Promise)
], VerseController.prototype, "removeVersePerson", null);
exports.VerseController = VerseController = __decorate([
    (0, common_1.Controller)('verse'),
    __metadata("design:paramtypes", [keyword_service_1.KeywordService,
        verse_service_1.VerseService,
        person_service_1.PersonService,
        verse_keyword_service_1.VerseKeywordService,
        verse_person_service_1.VersePersonService])
], VerseController);
//# sourceMappingURL=verse.controller.js.map