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