✨ Feat: Dashboard accuracy, Staff & Settings modules, and File Auth fix
This commit is contained in:
@@ -18,7 +18,12 @@ export class JwtStrategy extends PassportStrategy(Strategy) {
|
||||
private dataSource: DataSource,
|
||||
) {
|
||||
super({
|
||||
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
|
||||
jwtFromRequest: ExtractJwt.fromExtractors([
|
||||
ExtractJwt.fromAuthHeaderAsBearerToken(),
|
||||
(req) => {
|
||||
return req.query ? (req.query as any).token : null;
|
||||
},
|
||||
]),
|
||||
ignoreExpiration: false,
|
||||
secretOrKey: configService.getOrThrow<string>('JWT_SECRET'),
|
||||
});
|
||||
|
||||
@@ -25,9 +25,23 @@ export class DashboardService {
|
||||
const pendingInvoices = await this.invoiceRepository.count({
|
||||
where: {
|
||||
tenant_id: tenantId,
|
||||
status: InvoiceStatus.EXTRACTING // or any non-final state
|
||||
status: Buffer.from('approved').toString() === InvoiceStatus.APPROVED ? InvoiceStatus.UPLOADED : InvoiceStatus.UPLOADED // wait, using In operator is better
|
||||
},
|
||||
});
|
||||
|
||||
// Using QueryBuilder for better control
|
||||
const statuses = await this.invoiceRepository
|
||||
.createQueryBuilder('invoice')
|
||||
.select('status')
|
||||
.addSelect('COUNT(*)', 'count')
|
||||
.where('invoice.tenant_id = :tenantId', { tenantId })
|
||||
.groupBy('status')
|
||||
.getRawMany();
|
||||
|
||||
const statusMap = statuses.reduce((acc, curr) => {
|
||||
acc[curr.status] = parseInt(curr.count);
|
||||
return acc;
|
||||
}, {});
|
||||
|
||||
const companiesCount = await this.companyRepository.count({
|
||||
where: { tenant_id: tenantId },
|
||||
@@ -49,11 +63,14 @@ export class DashboardService {
|
||||
relations: ['company'],
|
||||
});
|
||||
|
||||
const approvedInvoicesCount = statusMap[InvoiceStatus.APPROVED] || 0;
|
||||
const processingInvoices = totalInvoices - approvedInvoicesCount;
|
||||
|
||||
return {
|
||||
stats: {
|
||||
totalInvoices,
|
||||
approvedInvoices,
|
||||
pendingInvoices,
|
||||
approvedInvoices: approvedInvoicesCount,
|
||||
pendingInvoices: processingInvoices,
|
||||
companiesCount,
|
||||
totalTax,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user