refactor(nestjs): contacts module

This commit is contained in:
Ahmed Bouhuolia
2025-05-20 23:55:39 +02:00
parent 99fe5a6b0d
commit 0823bfc4e9
15 changed files with 195 additions and 9 deletions

View File

@@ -0,0 +1,39 @@
import { TenantModelProxy } from '@/modules/System/models/TenantBaseModel';
import { Contact } from '../models/Contact';
import { Inject, Injectable } from '@nestjs/common';
import { IContactsAutoCompleteFilter } from '../Contacts.types';
import { GetContactsAutoCompleteQuery } from '../dtos/GetContactsAutoCompleteQuery.dto';
@Injectable()
export class GetAutoCompleteContactsService {
constructor(
@Inject(Contact.name)
private readonly contactModel: TenantModelProxy<typeof Contact>,
) {}
/**
* Retrieve auto-complete contacts list.
* @param {number} tenantId -
* @param {IContactsAutoCompleteFilter} contactsFilter -
* @return {IContactAutoCompleteItem}
*/
async autocompleteContacts(queryDto: GetContactsAutoCompleteQuery) {
const _queryDto = {
filterRoles: [],
sortOrder: 'asc',
columnSortBy: 'display_name',
limit: 10,
...queryDto,
};
// Retrieve contacts list by the given query.
const contacts = await this.contactModel()
.query()
.onBuild((builder) => {
if (_queryDto.keyword) {
builder.where('display_name', 'LIKE', `%${_queryDto.keyword}%`);
}
builder.limit(_queryDto.limit);
});
return contacts;
}
}