Archive
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user