Files
bigcapital/packages/server/src/services/InviteUsers/SyncTenantAcceptInvite.ts
2023-05-05 00:28:57 +02:00

40 lines
1.0 KiB
TypeScript

import { Service, Inject } from 'typedi';
import { omit } from 'lodash';
import moment from 'moment';
import events from '@/subscribers/events';
import HasTenancyService from '@/services/Tenancy/TenancyService';
import { IAcceptInviteEventPayload } from '@/interfaces';
@Service()
export default class SyncTenantAcceptInvite {
@Inject()
private tenancy: HasTenancyService;
/**
* Attaches events with handlers.
* @param bus
*/
public attach(bus) {
bus.subscribe(events.inviteUser.acceptInvite, this.syncTenantAcceptInvite);
}
/**
* Syncs accept invite to tenant user.
* @param {IAcceptInviteEventPayload} payload -
*/
private syncTenantAcceptInvite = async ({
inviteToken,
user,
inviteUserDTO,
}: IAcceptInviteEventPayload) => {
const { User } = this.tenancy.models(inviteToken.tenantId);
await User.query()
.where('systemUserId', inviteToken.userId)
.update({
...omit(inviteUserDTO, ['password']),
inviteAcceptedAt: moment().format('YYYY-MM-DD'),
});
};
}