UNPKG

@tomei/rental

Version:
135 lines (122 loc) 4.22 kB
import { ClassError, ObjectBase } from '@tomei/general'; import { LoginUser } from '@tomei/sso'; import { ActionEnum, Activity } from '@tomei/activity-history'; import { IHirerChangeRequestRemoveHirerAttr } from '../../interfaces/hirer-change-request-remove-hirer-attr.interface'; import { HirerChangeRequestRemoveHirerRepository } from './hirer-change-request-remove-hirer.repository'; import { JointHirer } from '../../components/joint-hirer/joint-hirer'; export class HirerChangeRequestRemoveHirer extends ObjectBase implements IHirerChangeRequestRemoveHirerAttr { ObjectId: string; ObjectName: string; ObjectType: string = 'HirerChangeRequestRemoveHirer'; TableName: string = 'hirerChangeRequest_RemoveHirer'; RequestId: string; TargetHirerId: string; get RemoveHirerId(): string { return this.ObjectId; } set RemoveHirerId(value: string) { this.ObjectId = value; } protected static _Repository = new HirerChangeRequestRemoveHirerRepository(); protected constructor(attr?: IHirerChangeRequestRemoveHirerAttr) { super(); if (attr) { this.RemoveHirerId = attr.RemoveHirerId; this.RequestId = attr.RequestId; this.TargetHirerId = attr.TargetHirerId; } } public static async init(removeHirerId?: string, dbTransaction?: any) { try { if (removeHirerId) { const hirerChangeReqRemoveHirer = await HirerChangeRequestRemoveHirer._Repository.findByPk( removeHirerId, dbTransaction, ); if (hirerChangeReqRemoveHirer) { return new HirerChangeRequestRemoveHirer( hirerChangeReqRemoveHirer.get({ plain: true }), ); } else { throw new ClassError( 'HirerChangeRequestRemoveHirer', 'HirerChangeRequestRemoveHirerErrMsg00', 'HirerChangeRequestRemoveHirer not found', ); } } return new HirerChangeRequestRemoveHirer(); } catch (error) { throw error; } } public static async findAll( search: { RequestId?: string; }, dbTransaction?: any, ): Promise<HirerChangeRequestRemoveHirer[]> { try { const results = await HirerChangeRequestRemoveHirer._Repository.findAll({ where: { ...search, }, transaction: dbTransaction, }); return results.map( (result) => new HirerChangeRequestRemoveHirer(result.get({ plain: true })), ); } catch (error) { console.error('Error finding all HirerChangeRequestRemoveHirer:', error); throw error; } } toJSON(): IHirerChangeRequestRemoveHirerAttr { return { RemoveHirerId: this.RemoveHirerId, RequestId: this.RequestId, TargetHirerId: this.TargetHirerId, }; } public async create(loginUser: LoginUser, dbTransaction?: any) { //This method will create a new Hirer Change Request Remove Hirer. try { //Make sure targetHirerId and requestId is not empty if (!this.TargetHirerId && !this.RequestId) { throw new ClassError( 'HirerChangeRequestRemoveHirer', 'HirerChangeRequestRemoveHirerErrMsg01', 'TargetHirerId and RequestId are required', ); } //Insert record into the database this.ObjectId = this.createId(); const entityValueAfter = this.toJSON(); const removeHirer = await HirerChangeRequestRemoveHirer._Repository.create( entityValueAfter, { transaction: dbTransaction, }, ); //Create activity log const activity = new Activity(); activity.ObjectId = this._createId(); activity.Action = ActionEnum.CREATE; activity.Description = `Created new Hirer Change Request Remove Hirer`; activity.EntityId = removeHirer.RemoveHirerId; activity.EntityType = this.ObjectType; activity.EntityValueBefore = JSON.stringify({}); activity.EntityValueAfter = JSON.stringify(removeHirer); await activity.create(loginUser.ObjectId, dbTransaction); } catch (error) { console.error('Error creating HirerChangeRequestRemoveHirer:', error); throw error; } } }