| @@ -14,6 +14,7 @@ import {ContactsDetailComponent} from "@app/contacts/contacts-detail/contacts-de | |||||
| import {TasksComponent} from "@app/tasks/tasks.component"; | import {TasksComponent} from "@app/tasks/tasks.component"; | ||||
| import {SalesComponent} from "@app/sales/sales.component"; | import {SalesComponent} from "@app/sales/sales.component"; | ||||
| import {SalesDetailComponent} from "@app/sales/sales-detail/sales-detail.component"; | import {SalesDetailComponent} from "@app/sales/sales-detail/sales-detail.component"; | ||||
| import {ProfileComponent} from "@app/profile/profile.component"; | |||||
| const accountModule = () => import('./account/account.module').then(x => x.AccountModule); | const accountModule = () => import('./account/account.module').then(x => x.AccountModule); | ||||
| const usersModule = () => import('./users/users.module').then(x => x.UsersModule); | const usersModule = () => import('./users/users.module').then(x => x.UsersModule); | ||||
| @@ -63,8 +64,8 @@ const routes: Routes = [ | |||||
| component: TwoColumnComponent, | component: TwoColumnComponent, | ||||
| canActivate: [AuthGuard], | canActivate: [AuthGuard], | ||||
| children: [ | children: [ | ||||
| {path: '', component: ProductsComponent, data: {dataType: 'product'}}, | |||||
| {path: ':id', component: ProductsDetailComponent, data: {dataType: 'product-detail'}}, | |||||
| {path: '', component: ProductsComponent}, | |||||
| {path: ':id', component: ProductsDetailComponent}, | |||||
| ] | ] | ||||
| }, | }, | ||||
| { | { | ||||
| @@ -72,7 +73,7 @@ const routes: Routes = [ | |||||
| component: TwoColumnComponent, | component: TwoColumnComponent, | ||||
| canActivate: [AuthGuard], | canActivate: [AuthGuard], | ||||
| children: [ | children: [ | ||||
| {path: '', component: TasksComponent, data: {dataType: 'task'}}, | |||||
| {path: '', component: TasksComponent}, | |||||
| ] | ] | ||||
| }, | }, | ||||
| { | { | ||||
| @@ -80,7 +81,7 @@ const routes: Routes = [ | |||||
| component: TwoColumnComponent, | component: TwoColumnComponent, | ||||
| canActivate: [AuthGuard], | canActivate: [AuthGuard], | ||||
| children: [ | children: [ | ||||
| {path: '', component: DocumentsComponent, data: {dataType: 'document'}}, | |||||
| {path: '', component: DocumentsComponent}, | |||||
| ] | ] | ||||
| }, | }, | ||||
| { | { | ||||
| @@ -88,11 +89,18 @@ const routes: Routes = [ | |||||
| component: TwoColumnComponent, | component: TwoColumnComponent, | ||||
| canActivate: [AuthGuard], | canActivate: [AuthGuard], | ||||
| children: [ | children: [ | ||||
| {path: '', component: SalesComponent, data: {dataType: 'sales'}}, | |||||
| {path: ':id', component: SalesDetailComponent, data: {dataType: 'sales-detail'}}, | |||||
| {path: '', component: SalesComponent}, | |||||
| {path: ':id', component: SalesDetailComponent}, | |||||
| ] | |||||
| }, | |||||
| { | |||||
| path: 'profile', | |||||
| component: TwoColumnComponent, | |||||
| canActivate: [AuthGuard], | |||||
| children: [ | |||||
| {path: '', component: ProfileComponent}, | |||||
| ] | ] | ||||
| }, | }, | ||||
| // otherwise redirect to home | // otherwise redirect to home | ||||
| {path: '**', redirectTo: ''} | {path: '**', redirectTo: ''} | ||||
| ]; | ]; | ||||
| @@ -47,6 +47,7 @@ import { SalesComponent } from './sales/sales.component'; | |||||
| import { SalesDetailComponent } from './sales/sales-detail/sales-detail.component'; | import { SalesDetailComponent } from './sales/sales-detail/sales-detail.component'; | ||||
| import { NewSaleComponent } from './sales/new-sale/new-sale.component'; | import { NewSaleComponent } from './sales/new-sale/new-sale.component'; | ||||
| import { ToggleComponent } from './_components/toggle/toggle.component'; | import { ToggleComponent } from './_components/toggle/toggle.component'; | ||||
| import { ProfileComponent } from './profile/profile.component'; | |||||
| export function apiConfigFactory(): Configuration { | export function apiConfigFactory(): Configuration { | ||||
| const params: ConfigurationParameters = { | const params: ConfigurationParameters = { | ||||
| @@ -114,7 +115,8 @@ export function HttpLoaderFactory(http: HttpClient) { | |||||
| SalesComponent, | SalesComponent, | ||||
| SalesDetailComponent, | SalesDetailComponent, | ||||
| NewSaleComponent, | NewSaleComponent, | ||||
| ToggleComponent | |||||
| ToggleComponent, | |||||
| ProfileComponent | |||||
| ], | ], | ||||
| providers: [ | providers: [ | ||||
| {provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true}, | {provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true}, | ||||
| @@ -50,6 +50,13 @@ | |||||
| </div> | </div> | ||||
| </a> | </a> | ||||
| </li> | </li> | ||||
| <li class="nav-item mb-3"> | |||||
| <a class="card" routerLink="/profile" routerLinkActive="active"> | |||||
| <div class="card-body position-relative bi bi-journals"> | |||||
| <h3 class="position-absolute m-0">{{'basic.profile' | translate}}</h3> | |||||
| </div> | |||||
| </a> | |||||
| </li> | |||||
| </ul> | </ul> | ||||
| </div> | </div> | ||||
| <div class="col-10 pb-5"> | <div class="col-10 pb-5"> | ||||
| @@ -0,0 +1,13 @@ | |||||
| <div class="spt-container"> | |||||
| <div class="card"> | |||||
| <div class="card-body row"> | |||||
| <div class="col-4"> | |||||
| <h1>{{ user.firstName }} {{ user.lastName }}</h1> | |||||
| <dl> | |||||
| <dt>Email:</dt> | |||||
| <dd>{{ user.email }}</dd> | |||||
| </dl> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| @@ -0,0 +1,23 @@ | |||||
| import { ComponentFixture, TestBed } from '@angular/core/testing'; | |||||
| import { ProfileComponent } from './profile.component'; | |||||
| describe('ProfileComponent', () => { | |||||
| let component: ProfileComponent; | |||||
| let fixture: ComponentFixture<ProfileComponent>; | |||||
| beforeEach(async () => { | |||||
| await TestBed.configureTestingModule({ | |||||
| declarations: [ProfileComponent] | |||||
| }) | |||||
| .compileComponents(); | |||||
| fixture = TestBed.createComponent(ProfileComponent); | |||||
| component = fixture.componentInstance; | |||||
| fixture.detectChanges(); | |||||
| }); | |||||
| it('should create', () => { | |||||
| expect(component).toBeTruthy(); | |||||
| }); | |||||
| }); | |||||
| @@ -0,0 +1,46 @@ | |||||
| import {AfterViewInit, Component, OnInit} from '@angular/core'; | |||||
| import {User} from "@app/_models"; | |||||
| import {Router} from "@angular/router"; | |||||
| import {AccountService} from "@app/_services"; | |||||
| import {Subscription} from "rxjs"; | |||||
| import {PartnerJsonld, UserJsonld, UserService} from "@app/core/api/v1"; | |||||
| import {ApiConverter} from "@app/_helpers/api.converter"; | |||||
| @Component({ | |||||
| selector: 'app-profile', | |||||
| templateUrl: './profile.component.html', | |||||
| styleUrl: './profile.component.scss' | |||||
| }) | |||||
| export class ProfileComponent implements OnInit { | |||||
| protected userSub: Subscription; | |||||
| protected user: UserJsonld; | |||||
| constructor( | |||||
| private router: Router, | |||||
| private accountService: AccountService, | |||||
| private userService: UserService, | |||||
| protected apiConverter: ApiConverter | |||||
| ) { | |||||
| this.userSub = new Subscription(); | |||||
| this.user = {} as UserJsonld; | |||||
| } | |||||
| ngOnInit() { | |||||
| this.getUserData(); | |||||
| } | |||||
| getUserData() { | |||||
| const user = this.accountService.userValue; | |||||
| if (user?.id !== null && user?.id !== undefined) { | |||||
| this.userSub = this.userService.usersIdGet( | |||||
| this.apiConverter.extractId(user.id) | |||||
| ).subscribe( | |||||
| data => { | |||||
| this.user = data; | |||||
| } | |||||
| ); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -20,6 +20,7 @@ | |||||
| "products": "Produkte", | "products": "Produkte", | ||||
| "documents": "Dokumente", | "documents": "Dokumente", | ||||
| "sales": "Verkäufe", | "sales": "Verkäufe", | ||||
| "profile": "Profil", | |||||
| "tasks": "Aufgaben", | "tasks": "Aufgaben", | ||||
| "contacts": "Kontakte", | "contacts": "Kontakte", | ||||
| "posts": "Notizen", | "posts": "Notizen", | ||||