diff --git a/idp/src/application/user/user.service.ts b/idp/src/application/user/user.service.ts index f2fe25b..1d9c7bf 100644 --- a/idp/src/application/user/user.service.ts +++ b/idp/src/application/user/user.service.ts @@ -8,8 +8,7 @@ export class UserService { constructor( private clientRepository: ClientRepository, private logRepository: LogRepository, - ) { - } + ) {} getUserClients(user: User): Promise { return this.clientRepository.find({ @@ -22,21 +21,35 @@ export class UserService { async getUserLogins() { const logs = await this.logRepository.find({ where: [{ type: 'login' }, { type: 'systemlogin' }], + order: { timestamp: 'asc' }, }); - const res = logs.reduce((acc, succ) => { - let ob = acc[succ.timestamp.toISOString().substring(0, 10)]; - if (!ob) { - ob = { logins: 0, systemLogins: 0 }; + const first = logs[0].timestamp; + const last = logs[logs.length - 1].timestamp; + + const res = {}; + + res[first.toISOString().substring(0, 10)] = { + logins: 0, + systemLogins: 0, + }; + + const current = first; + while (current <= last) { + current.setDate(current.getDate() + 1); + res[current.toISOString().substring(0, 10)] = { + logins: 0, + systemLogins: 0, + }; + } + + logs.forEach((l) => { + if (l.type == 'login') { + res[l.timestamp.toISOString().substring(0, 10)].logins += 1; + } else if (l.type == 'systemlogin') { + res[l.timestamp.toISOString().substring(0, 10)].systemLogins += 1; } - if (succ.type == 'login') { - ob.logins += 1; - } else if (succ.type == 'systemlogin') { - ob.systemLogins += 1; - } - acc[succ.timestamp.toISOString().substring(0, 10)] = ob; - return acc; - }, {}); + }); return Object.entries(res).map(([date, count]) => ({ date: new Date(date), diff --git a/idp_client/src/app/dashboard/components/charts/login/login.component.html b/idp_client/src/app/dashboard/components/charts/login/login.chart.component.html similarity index 100% rename from idp_client/src/app/dashboard/components/charts/login/login.component.html rename to idp_client/src/app/dashboard/components/charts/login/login.chart.component.html diff --git a/idp_client/src/app/dashboard/components/charts/login/login.component.scss b/idp_client/src/app/dashboard/components/charts/login/login.chart.component.scss similarity index 100% rename from idp_client/src/app/dashboard/components/charts/login/login.component.scss rename to idp_client/src/app/dashboard/components/charts/login/login.chart.component.scss diff --git a/idp_client/src/app/dashboard/components/charts/login/login.chart.component.ts b/idp_client/src/app/dashboard/components/charts/login/login.chart.component.ts index 077c2ab..ee9ba8b 100644 --- a/idp_client/src/app/dashboard/components/charts/login/login.chart.component.ts +++ b/idp_client/src/app/dashboard/components/charts/login/login.chart.component.ts @@ -6,8 +6,8 @@ import Chart from 'chart.js/auto'; selector: 'app-chart-login', standalone: true, imports: [], - templateUrl: './login.component.html', - styleUrl: './login.component.scss' + templateUrl: './login.chart.component.html', + styleUrl: './login.chart.component.scss' }) export class LoginChartComponent { chart: any = []; diff --git a/idp_client/src/app/dashboard/components/charts/login/login.component.spec.ts b/idp_client/src/app/dashboard/components/charts/login/login.component.spec.ts deleted file mode 100644 index 18f3685..0000000 --- a/idp_client/src/app/dashboard/components/charts/login/login.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { LoginComponent } from './login.component'; - -describe('LoginComponent', () => { - let component: LoginComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [LoginComponent] - }) - .compileComponents(); - - fixture = TestBed.createComponent(LoginComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -});