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 { const cylinder = await this.cylinderRepository.findOne({ where: { id: id, system: { managers: { id: user.id } } }, relations: relations, }); return cylinder; } async getUsersKeys(user: User): Promise { const keys = await this.keyRepo.find({ where: { cylinder: { system: { managers: { id: user.id } } } }, relations: ['cylinder', 'cylinder.system', 'customer'], }); return keys; } }