@tomei/rental
Version:
Tomei Rental Package
139 lines • 6.44 kB
JavaScript
;
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