This commit is contained in:
Bastian Wagner
2024-10-23 13:58:14 +02:00
parent d4ddcafd2b
commit b453945183
33 changed files with 570 additions and 19 deletions

View File

@@ -1,6 +1,7 @@
import {
Column,
CreateDateColumn,
DeleteDateColumn,
Entity,
ManyToOne,
PrimaryGeneratedColumn,
@@ -18,7 +19,7 @@ export class Key implements IKey {
@Column({ nullable: true })
name: string;
@Column({ name: 'key_number', unique: true })
@Column({ name: 'key_number', unique: false })
nr: number;
@Column({ name: 'handed_out', default: false })
@@ -35,4 +36,7 @@ export class Key implements IKey {
@UpdateDateColumn({ name: 'updatet_at' })
updatedAt: Date;
@DeleteDateColumn()
deletedAt: Date;
}

View File

@@ -1,7 +1,10 @@
import {
Body,
Controller,
Delete,
Get,
HttpException,
HttpStatus,
Param,
Post,
Put,
@@ -13,7 +16,6 @@ import { AuthenticatedRequest } from 'src/model/interface/authenticated-request.
import { AuthGuard } from 'src/core/guards/auth.guard';
import { Key } from 'src/model/entitites';
import { CreateKeySystemDto } from 'src/model/dto/create-key-system.dto';
import { HandoverKeyDto } from 'src/model/dto';
@UseGuards(AuthGuard)
@Controller('key')
@@ -25,11 +27,26 @@ export class KeyController {
return this.service.getUsersKeys(req.user);
}
@Post()
postKey(@Req() req: AuthenticatedRequest, @Body() key: Key) {
return this.service.createKey(req.user, key);
}
@Put()
updateKey(@Req() req: AuthenticatedRequest, @Body() key: Key) {
return this.service.updateKey(req.user, key);
}
@Put(':id/restore')
restoreKey(@Req() req: AuthenticatedRequest, @Param('id') id: string) {
return this.service.restoreKey(req.user, id);
}
@Delete(':id')
deleteKey(@Req() req: AuthenticatedRequest, @Param('id') id: string) {
return this.service.deleteKey(req.user, id);
}
@Get('cylinder')
getCylinders(@Req() req: AuthenticatedRequest) {
return this.service.getUsersCylinders(req.user);
@@ -56,4 +73,9 @@ export class KeyController {
getKeyHandouts(@Req() req: AuthenticatedRequest, @Param('id') id: string) {
return this.service.getKeyHandovers(req.user, id);
}
@Get('Archive')
getArchive(@Req() req: AuthenticatedRequest) {
return this.service.getDeletedKeys(req.user);
}
}

View File

@@ -9,6 +9,7 @@ import {
KeySystemRepository,
} from 'src/model/repositories';
import { KeyHandoutRepository } from 'src/model/repositories/key-handout.repository';
import { IsNull, Not } from 'typeorm';
@Injectable()
export class KeyService {
@@ -108,4 +109,35 @@ export class KeyService {
relations: ['customer'],
});
}
createKey(user: User, key: any) {
return this.keyrepository.save(this.keyrepository.create(key));
}
async deleteKey(user: User, id: string) {
const key = await this.keyrepository.findOneOrFail({
where: { id, cylinder: { system: { managers: { id: user.id } } } },
});
return this.keyrepository.softRemove(key);
}
getDeletedKeys(user: User) {
return this.keyrepository.find({
where: {
cylinder: { system: { managers: { id: user.id } } },
deletedAt: Not(IsNull()),
},
withDeleted: true,
order: { deletedAt: { direction: 'DESC' } },
});
}
async restoreKey(user: User, keyID: string) {
const key = await this.keyrepository.findOneOrFail({
where: { cylinder: { system: { managers: { id: user.id } } }, id: keyID },
withDeleted: true,
});
key.deletedAt = null;
return this.keyrepository.save(key);
}
}