UNPKG

@tomei/rental

Version:
120 lines 5.15 kB
"use strict"; 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 async init(agreementNo, dbTransaction) { try { if (agreementNo) { const agreement = await 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 async getSignatureList(loginUser, agreementNo, dbTransaction) { 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}' `; const db = rentalDb.getConnection(); const signatures = await db.query(query, { type: sequelize_1.QueryTypes.SELECT, transaction: dbTransaction, }); return signatures; } catch (error) { throw error; } } async getAllActivities(loginUser, dbTransaction) { 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 = await Agreement._AgreementHistoryRepo.findAll({ where: { AgreementNo: this.ObjectId }, order: [['CreatedAt', 'DESC']], transaction: dbTransaction, }); return activities; } catch (error) { throw error; } } async createActivity(activityCompleted, MediaId, dbTransaction, loginUser) { try { const activity = await 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); await 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