UNPKG

@tomei/rental

Version:
139 lines 6.44 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Agreement = void 0; const general_1 = require("@tomei/general"); const agreement_repository_1 = require("./agreement.repository"); const config_1 = require("@tomei/config"); const agreement_signature_repository_1 = require("../agreement-signature/agreement-signature.repository"); const rentalDb = require("../../database"); const sequelize_1 = require("sequelize"); const agreement_history_repository_1 = require("../agreement-history/agreement-history.repository"); const activity_history_1 = require("@tomei/activity-history"); class Agreement extends general_1.ObjectBase { get AgreementNo() { return this.ObjectId; } set AgreementNo(value) { this.ObjectId = value; } constructor(agreementAttr) { super(); this.ObjectType = 'Agreement'; this.TableName = 'rental_Agreement'; if (agreementAttr) { this.ObjectId = agreementAttr.AgreementNo; this.Status = agreementAttr.Status; this.DateSigned = agreementAttr.DateSigned; this.MediaId = agreementAttr.MediaId; } } static init(agreementNo, dbTransaction) { return __awaiter(this, void 0, void 0, function* () { try { if (agreementNo) { const agreement = yield this._Repo.findByPk(agreementNo, dbTransaction); return new Agreement(agreement === null || agreement === void 0 ? void 0 : agreement.get({ plain: true })); } return new Agreement(); } catch (error) { throw error; } }); } static getSignatureList(loginUser, agreementNo, dbTransaction) { return __awaiter(this, void 0, void 0, function* () { try { const systemCode = config_1.ApplicationConfig.getComponentConfigValue('system-code'); const isPrivileged = loginUser.checkPrivileges(systemCode, 'AGREEMENT_SIGNATURE_LIST'); if (!isPrivileged) { throw new general_1.ClassError('Agreement', 'AgreementErrMsg01', "You do not have 'AGREEMENT_SIGNATURE_LIST' privilege."); } if (!agreementNo) { throw new general_1.ClassError('AgreementNo', 'AgreementNoErrMsg01', 'AgreementNo is missing'); } const query = ` SELECT hs.* FROM rental_AgreementSignature hs WHERE hs.AgreementNo = '${agreementNo}' ORDER BY hs.CreatedAt ASC `; const db = rentalDb.getConnection(); const signatures = yield db.query(query, { type: sequelize_1.QueryTypes.SELECT, transaction: dbTransaction, }); return signatures; } catch (error) { throw error; } }); } getAllActivities(loginUser, dbTransaction) { return __awaiter(this, void 0, void 0, function* () { try { const systemCode = config_1.ApplicationConfig.getComponentConfigValue('system-code'); const isPrivileged = loginUser.checkPrivileges(systemCode, 'RENTAL_AGREEMENT_VIEW'); if (!isPrivileged) { throw new general_1.ClassError('Agreement', 'AgreementErrMsg02', "You do not have 'RENTAL_AGREEMENT_VIEW' privilege."); } const activities = yield Agreement._AgreementHistoryRepo.findAll({ where: { AgreementNo: this.ObjectId }, order: [['CreatedAt', 'DESC']], transaction: dbTransaction, }); return activities; } catch (error) { throw error; } }); } createActivity(activityCompleted, MediaId, dbTransaction, loginUser) { return __awaiter(this, void 0, void 0, function* () { try { const activity = yield Agreement._AgreementHistoryRepo.create({ AgreementNo: this.ObjectId, MediaId: MediaId, ActivityCompleted: activityCompleted, CreatedAt: new Date(), }, { transaction: dbTransaction, }); const entityValueAfter = activity.get({ plain: true }); const activityHistory = new activity_history_1.Activity(); activityHistory.ActivityId = entityValueAfter.HistoryId; activityHistory.Action = activity_history_1.ActionEnum.CREATE; activityHistory.Description = activityCompleted; activityHistory.EntityId = activity.HistoryId.toString(); activityHistory.EntityType = 'RentalAgreementHistory'; activityHistory.EntityValueBefore = JSON.stringify({}); activityHistory.EntityValueAfter = JSON.stringify(entityValueAfter); yield activityHistory.create(loginUser.ObjectId, dbTransaction); return activity; } catch (error) { throw error; } }); } } exports.Agreement = Agreement; Agreement._Repo = new agreement_repository_1.AgreementRepository(); Agreement._AgreementSignatureRepo = new agreement_signature_repository_1.AgreementSignatureRepository(); Agreement._AgreementHistoryRepo = new agreement_history_repository_1.AgreementHistoryRepository(); //# sourceMappingURL=agreement.js.map