38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import { Injectable } from "@nestjs/common";
|
|
import { User, Cylinder, Key } from "src/model/entitites";
|
|
import { KeySystemRepository, CylinderRepository, KeyRepository } from "src/model/repositories";
|
|
|
|
@Injectable()
|
|
export class ManageHelperService {
|
|
|
|
constructor(
|
|
private readonly systemRepository: KeySystemRepository,
|
|
private readonly cylinderRepository: CylinderRepository,
|
|
private readonly keyRepo: KeyRepository,
|
|
) {}
|
|
|
|
|
|
/**
|
|
* Gibt den Cylinder zurück wenn der user ein Manager ist. Gibt null zurück wenn er nicht existiert oder der
|
|
* User den Cylinder nicht managen darf.
|
|
* @param user User
|
|
* @param id ID vom Cylinder
|
|
* @returns Cylinder | null
|
|
*/
|
|
async getCylinderIfUserCanManage(user: User, id: string, relations: string[] = ['keys', 'system']): Promise<Cylinder> {
|
|
const cylinder = await this.cylinderRepository.findOne({
|
|
where: { id: id, system: { managers: { id: user.id } } },
|
|
relations: relations,
|
|
});
|
|
return cylinder;
|
|
}
|
|
|
|
|
|
async getUsersKeys(user: User): Promise<Key[]> {
|
|
const keys = await this.keyRepo.find({
|
|
where: { cylinder: { system: { managers: { id: user.id } } } },
|
|
relations: ['cylinder', 'cylinder.system', 'customer'],
|
|
});
|
|
return keys;
|
|
}
|
|
} |