keys
This commit is contained in:
77
api/src/modules/key/key.service.ts
Normal file
77
api/src/modules/key/key.service.ts
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user