From b4826cab2cc94f64ecbf59d46ab08337f95a58cd Mon Sep 17 00:00:00 2001 From: Bastian Wagner Date: Mon, 16 Feb 2026 13:07:31 +0100 Subject: [PATCH] mods --- api/.env.skeleton | 3 +++ api/src/modules/cylinder/cylinder.module.ts | 3 ++- api/src/modules/cylinder/cylinder.service.ts | 14 +++++++++++-- api/src/modules/key/key.module.ts | 3 ++- api/src/modules/key/key.service.ts | 20 ++++++++++++++++--- api/src/modules/system/system.module.ts | 3 ++- api/src/modules/system/system.service.ts | 18 ++++++++++++++--- .../lost-key/lost-key.component.html | 4 ++-- client/src/app/modules/keys/keys.component.ts | 4 +--- .../ag-delete-key/ag-delete-key.component.ts | 13 ++++++++---- 10 files changed, 65 insertions(+), 20 deletions(-) diff --git a/api/.env.skeleton b/api/.env.skeleton index df74b3f..56b8b3f 100644 --- a/api/.env.skeleton +++ b/api/.env.skeleton @@ -1,3 +1,6 @@ +# Application +DEVELOP_MODE=false + # Database MYSQL_USER=db_user MYSQL_PASSWORD=PAssword123 diff --git a/api/src/modules/cylinder/cylinder.module.ts b/api/src/modules/cylinder/cylinder.module.ts index b9eef54..2d83994 100644 --- a/api/src/modules/cylinder/cylinder.module.ts +++ b/api/src/modules/cylinder/cylinder.module.ts @@ -4,10 +4,11 @@ import { CylinderService } from './cylinder.service'; import { AuthModule } from '../auth/auth.module'; import { DatabaseModule } from 'src/shared/database/database.module'; import { SharedServiceModule } from 'src/shared/service/shared.service.module'; +import { ConfigService } from '@nestjs/config'; @Module({ controllers: [CylinderController], - providers: [CylinderService], + providers: [CylinderService, ConfigService], imports: [AuthModule, DatabaseModule, SharedServiceModule], }) export class CylinderModule {} diff --git a/api/src/modules/cylinder/cylinder.service.ts b/api/src/modules/cylinder/cylinder.service.ts index 3ae2af8..6571328 100644 --- a/api/src/modules/cylinder/cylinder.service.ts +++ b/api/src/modules/cylinder/cylinder.service.ts @@ -1,4 +1,5 @@ import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; import { Cylinder, User } from 'src/model/entitites'; import { ActivityRepository, CylinderRepository, KeyRepository } from 'src/model/repositories'; import { HelperService } from 'src/shared/service/system.helper.service'; @@ -9,15 +10,24 @@ export class CylinderService { private readonly cylinderRepo: CylinderRepository, private readonly keyRepo: KeyRepository, private systemActivityRepo: ActivityRepository, - private readonly helper: HelperService + private readonly helper: HelperService, + private readonly configService: ConfigService ) {} + get isDevelopMode(): boolean { + return (this.configService.get('DEVELOP_MODE') || '').toLowerCase() == 'true'; + } + async getCylinders(user: User): Promise { - const c = await this.cylinderRepo.find({ + let c = await this.cylinderRepo.find({ where: { system: { managers: { id: user.id } } }, order: { name: { direction: 'ASC' } }, relations: ['system', 'keys'], }); + + if (this.isDevelopMode) { + c = c.filter(c => c.name.toLowerCase().includes('develop') || c.system.name.toLocaleLowerCase().includes('develop')) + } return c; } diff --git a/api/src/modules/key/key.module.ts b/api/src/modules/key/key.module.ts index cd87c38..ac2fe59 100644 --- a/api/src/modules/key/key.module.ts +++ b/api/src/modules/key/key.module.ts @@ -4,10 +4,11 @@ import { KeyService } from './key.service'; import { DatabaseModule } from 'src/shared/database/database.module'; import { AuthModule } from '../auth/auth.module'; import { SharedServiceModule } from 'src/shared/service/shared.service.module'; +import { ConfigService } from '@nestjs/config'; @Module({ controllers: [KeyController], - providers: [KeyService], + providers: [KeyService, ConfigService], imports: [DatabaseModule, AuthModule, SharedServiceModule], }) export class KeyModule {} diff --git a/api/src/modules/key/key.service.ts b/api/src/modules/key/key.service.ts index 14044a2..8b46a3c 100644 --- a/api/src/modules/key/key.service.ts +++ b/api/src/modules/key/key.service.ts @@ -8,7 +8,9 @@ import { import { KeyHandoutRepository } from 'src/model/repositories/key-handout.repository'; import { ActivityHelperService } from 'src/shared/service/activity.logger.service'; import { HelperService } from 'src/shared/service/system.helper.service'; -import { IsNull, Not } from 'typeorm'; +import { FindOperator, IsNull, Not } from 'typeorm'; +import { faker } from '@faker-js/faker'; +import { ConfigService } from '@nestjs/config'; @Injectable() export class KeyService { @@ -18,27 +20,39 @@ export class KeyService { private readonly handoverRepo: KeyHandoutRepository, private readonly activityService: ActivityHelperService, private readonly helper: HelperService, + private readonly configService: ConfigService ) {} + get isDevelopMode(): boolean { + return (this.configService.get('DEVELOP_MODE') || '').toLowerCase() == 'true'; + } + async getUsersKeys(user: User): Promise { - const keys = await this.keyrepository.find({ + let keys = await this.keyrepository.find({ where: { cylinder: { system: { managers: { id: user.id } } }, keyLost: IsNull() }, relations: ['cylinder', 'cylinder.system', 'customer'], }); for (let k of keys) { k.customer = await this.getCustomerOfLastHandout(user, k.id); } + + if (this.isDevelopMode) { + keys = keys.filter(k => k.cylinder.some(c => c.name.toLowerCase().includes('develop') || c.system.name.toLowerCase().includes('develop'))) + } return keys; } async getLostKeys(user: User): Promise { - const keys = await this.keyrepository.find({ + let keys = await this.keyrepository.find({ where: { cylinder: { system: { managers: { id: user.id } } }, keyLost: Not(IsNull()) }, relations: ['cylinder', 'cylinder.system', 'customer'], }); for (let k of keys) { k.customer = await this.getCustomerOfLastHandout(user, k.id); } + if (this.isDevelopMode) { + keys = keys.filter(k => k.cylinder.some(c => c.name.toLowerCase().includes('develop') || c.system.name.toLowerCase().includes('develop'))) + } return keys; } diff --git a/api/src/modules/system/system.module.ts b/api/src/modules/system/system.module.ts index f4a4c1c..0aaaebe 100644 --- a/api/src/modules/system/system.module.ts +++ b/api/src/modules/system/system.module.ts @@ -4,10 +4,11 @@ import { SystemController } from './system.controller'; import { AuthModule } from '../auth/auth.module'; import { DatabaseModule } from 'src/shared/database/database.module'; import { MailModule } from '../mail/mail.module'; +import { ConfigService } from '@nestjs/config'; @Module({ controllers: [SystemController], - providers: [SystemService], + providers: [SystemService, ConfigService], imports: [AuthModule, DatabaseModule, MailModule], }) export class SystemModule {} diff --git a/api/src/modules/system/system.service.ts b/api/src/modules/system/system.service.ts index 23a9a7d..607cd0c 100644 --- a/api/src/modules/system/system.service.ts +++ b/api/src/modules/system/system.service.ts @@ -5,6 +5,7 @@ import { ActivityRepository, KeySystemRepository, UserRepository } from 'src/mod import { User } from 'src/model/entitites'; import { IUser } from 'src/model/interface'; import { MailService } from '../mail/mail.service'; +import { ConfigService } from '@nestjs/config'; @Injectable() export class SystemService { @@ -12,8 +13,13 @@ export class SystemService { private systemRepo: KeySystemRepository, private userRepo: UserRepository, private systemActivityRepo: ActivityRepository, - private mailService: MailService + private mailService: MailService, + private readonly configService: ConfigService ) {} + + get isDevelopMode(): boolean { + return (this.configService.get('DEVELOP_MODE') || '').toLowerCase() == 'true'; + } async create(user: User, createSystemDto: CreateSystemDto) { const sys = this.systemRepo.create(createSystemDto); @@ -34,11 +40,17 @@ export class SystemService { } } - findAll(user: User) { - return this.systemRepo.find({ + async findAll(user: User) { + let systems = await this.systemRepo.find({ where: { managers: { id: user.id } }, order: { name: { direction: 'ASC' } }, }); + + if (this.isDevelopMode) { + systems = systems.filter(s => s.name.toLocaleLowerCase().includes('develop')); + } + + return systems; } findOne(id: string) { diff --git a/client/src/app/modules/keys/components/lost-key/lost-key.component.html b/client/src/app/modules/keys/components/lost-key/lost-key.component.html index 0641aa2..d6f9271 100644 --- a/client/src/app/modules/keys/components/lost-key/lost-key.component.html +++ b/client/src/app/modules/keys/components/lost-key/lost-key.component.html @@ -28,12 +28,12 @@ @if(key.keyLost != null) { - } @else { - diff --git a/client/src/app/modules/keys/keys.component.ts b/client/src/app/modules/keys/keys.component.ts index 6b9a4cf..b898078 100644 --- a/client/src/app/modules/keys/keys.component.ts +++ b/client/src/app/modules/keys/keys.component.ts @@ -47,9 +47,7 @@ export class KeysComponent { valueFormatter: (data: any) => { return data; }, cellRenderer: (data: any) => {return data.value?.map((m: ICylinder) => m.name).join(', ')}, tooltipValueGetter: (data: any) => data.value?.map((m: ICylinder) => m.name).join(','), - onCellDoubleClicked(event) { - - }, + onCellDoubleClicked(event) {}, cellEditorPopup: true, filterValueGetter: (params: any) => {return params.data.cylinder?.map((m: ICylinder) => m.name).join(', ')}, }, diff --git a/client/src/app/shared/ag-grid/components/ag-delete-key/ag-delete-key.component.ts b/client/src/app/shared/ag-grid/components/ag-delete-key/ag-delete-key.component.ts index 36e2e5d..7ba468f 100644 --- a/client/src/app/shared/ag-grid/components/ag-delete-key/ag-delete-key.component.ts +++ b/client/src/app/shared/ag-grid/components/ag-delete-key/ag-delete-key.component.ts @@ -79,10 +79,7 @@ export class AgDeleteKeyComponent implements ICellRendererAngularComp { }) ).subscribe({ next: () => { - let data = this.params.api.getGridOption("rowData"); - data = data?.filter(d => d.id != this.key.id); - this.params.api.setGridOption("rowData", data); - this.params.api.setGridOption("loading", false); + this.setData(); }, error: () => { this.params.api.setGridOption("loading", false); @@ -122,8 +119,16 @@ export class AgDeleteKeyComponent implements ICellRendererAngularComp { this.key.keyLost = n; this.params.api.refreshCells(); this.api.updateKey(this.key).subscribe(); + this.setData(); } } }) } + + private setData() { + let data = this.params.api.getGridOption("rowData"); + data = data?.filter(d => d.id != this.key.id); + this.params.api.setGridOption("rowData", data); + this.params.api.setGridOption("loading", false); + } }