Schließanlagen können gelöscht werden

This commit is contained in:
Bastian Wagner
2026-02-20 16:44:59 +01:00
parent 955faa5cd5
commit 6797b73eb1
17 changed files with 302 additions and 14 deletions

View File

@@ -1,6 +1,7 @@
import {
Column,
CreateDateColumn,
DeleteDateColumn,
Entity,
JoinTable,
ManyToMany,
@@ -32,4 +33,7 @@ export class KeySystem implements IKeySystem {
@UpdateDateColumn({ name: 'updatet_at' })
updatedAt: Date;
@DeleteDateColumn()
deletedAt: Date;
}

View File

@@ -33,6 +33,11 @@ export class SystemController {
findAll(@Req() req: AuthenticatedRequest) {
return this.systemService.findAll(req.user);
}
@Get('archive')
findDeleted(@Req() req: AuthenticatedRequest) {
return this.systemService.findDeleted(req.user);
}
@Get(':id/manager')
getManagers(@Param('id') id: string) {
@@ -57,4 +62,9 @@ export class SystemController {
remove(@Param('id') id: string) {
return this.systemService.remove(id);
}
@Put(':id/restore')
restoreKey(@Req() req: AuthenticatedRequest, @Param('id') id: string) {
return this.systemService.restore(req.user, id);
}
}

View File

@@ -7,6 +7,7 @@ import { IUser } from 'src/model/interface';
import { MailService } from '../mail/mail.service';
import { ConfigService } from '@nestjs/config';
import { ActivityHelperService } from 'src/shared/service/activity.logger.service';
import { IsNull, Not } from 'typeorm';
@Injectable()
export class SystemService {
@@ -56,6 +57,20 @@ export class SystemService {
return systems;
}
async findDeleted(user: User) {
let systems = await this.systemRepo.find({
where: { managers: { id: user.id }, deletedAt: Not(IsNull()) },
order: { name: { direction: 'ASC' } },
withDeleted: true,
});
if (this.isDevelopMode) {
systems = systems.filter(s => s.name.toLocaleLowerCase().includes('develop'));
}
return systems;
}
findOne(id: string) {
return this.systemRepo.findOne({ where: { id: id } });
}
@@ -136,4 +151,15 @@ export class SystemService {
return sys.managers;
}
async restore(user: User, id: string) {
const key = await this.systemRepo.findOneOrFail({
where: { id: id, managers: { id: user.id } },
withDeleted: true,
});
key.deletedAt = null;
// await this.activityService.logKeyRestored(user, key);
// await this.helper.deleteKeyArchiveCache();
return this.systemRepo.save(key);
}
}