Recent leads table widget
ui/src/components/adminDashboard/widgets/RecentLeadsTableWidget
RecentLeadsTableWidget displaying 5 most recent leads for selected businesses and for choosen date range. It works like other widget and written like default table.
Table displays next information about lead:
Full name
Email
Photo
State
Status
Date added (createdAt)
Date updated (updatedAt)
Backend
On backend we have findFiveRecentLeads
function which return us 5 entities which were created recently:
async findFiveRecentLeads(startDate: string, endDate: string, businessesIds: number[], teamId: string) {
const start = dayjs(startDate);
const end = dayjs(endDate);
if (!start.isValid() || !end.isValid()) {
throw new BadRequestException('Invalid date format');
}
const startOfDay = start.startOf('day').toDate();
const endOfDay = end.endOf('day').toDate();
const query = this.leadsRepository
.createQueryBuilder('lead')
.leftJoinAndSelect('lead.business', 'business')
.leftJoinAndSelect('lead.status', 'status');
query.andWhere('lead.teamId = :teamId', { teamId });
query.andWhere('lead.createdAt BETWEEN :startOfDay AND :endOfDay', { startOfDay, endOfDay });
query
.andWhere('business.id IN (:...businessesIds)', { businessesIds })
.orderBy('lead.createdAt', 'DESC')
.take(5);
const recentLeads = await query.getMany();
return recentLeads;
}
To achieve required result we filter leads createdAt
, teamId
, business
columns and then we sort records by createdAt
and take 5 top records.
Last updated