This commit is contained in:
Bastian Wagner
2024-10-18 16:52:58 +02:00
parent ed6b2b9c45
commit 76e54cfaa0
32 changed files with 552 additions and 7 deletions

View File

@@ -0,0 +1,77 @@
import { HttpException, HttpStatus, Injectable } from '@nestjs/common';
import { CreateKeySystemDto } from 'src/model/dto';
import { Cylinder, Key, User } from 'src/model/entitites';
import {
CylinderRepository,
KeyActivityRepository,
KeyRepository,
KeySystemRepository,
} from 'src/model/repositories';
@Injectable()
export class KeyService {
constructor(
private readonly keyrepository: KeyRepository,
private readonly cylinderRepository: CylinderRepository,
private readonly systemRepo: KeySystemRepository,
private activityRepo: KeyActivityRepository,
) {}
async getUsersKeys(user: User): Promise<Key[]> {
return this.keyrepository.find({
where: { cylinder: { system: { managers: { id: user.id } } } },
relations: ['cylinder', 'cylinder.system'],
});
}
async updateKey(user: User, key: Key) {
if (!user || !user.id) {
throw new HttpException('forbidden', HttpStatus.FORBIDDEN);
}
await this.keyrepository.findOneOrFail({
where: { cylinder: { system: { managers: { id: user.id } } } },
});
const original = await this.keyrepository.findOne({
where: { id: key.id },
relations: ['cylinder'],
});
this.saveLog(original, user);
return this.keyrepository.save(this.keyrepository.create(key));
}
private saveLog(key: Key, user: User) {
const l = this.activityRepo.create({
cylinder: key.cylinder,
handedOut: key.handedOut,
name: key.name,
id: key.id,
nr: key.nr,
user: user,
});
this.activityRepo.save(l);
}
async getUsersCylinders(user: User): Promise<Cylinder[]> {
if (!user || !user.id) {
throw new HttpException('forbidden', HttpStatus.FORBIDDEN);
}
return this.cylinderRepository.find({
where: { system: { managers: { id: user.id } } },
order: { name: { direction: 'ASC' } },
relations: ['system'],
});
}
async createKeySystem(user: User, systemDTO: CreateKeySystemDto) {
const sys = this.systemRepo.create(systemDTO);
sys.managers = [user];
try {
const res = await this.systemRepo.save(sys);
return res;
} catch (e) {
throw new HttpException(e.code, HttpStatus.UNPROCESSABLE_ENTITY);
}
}
}