UNPKG

amocrm-client

Version:
25 lines (21 loc) 1.34 kB
import { ICriteria, IEntityWithResponsibleUser, IResourceFactory } from "../../../interfaces/api"; import { TConstructor } from "../../../types"; import { IRequestOptions } from "../../../interfaces/common"; import { IUser } from "../User"; import { UserFactory } from "../../factories/UserFactory"; import { UserCriteria } from "../../../interfaces/user"; export interface IHasResponsibleUserEntity<T extends IResourceFactory<IEntityWithResponsibleUser<T>>> extends IEntityWithResponsibleUser<T> { responsibleUser(criteria?: Pick<UserCriteria, "with">, options?: IRequestOptions): Promise<IUser | false>; } export function hasResoinsibleUser<T extends IResourceFactory<IEntityWithResponsibleUser<T>>>(Base: TConstructor<IHasResponsibleUserEntity<T>>): TConstructor<IHasResponsibleUserEntity<T>> { return class HasContacts extends Base { async responsibleUser(criteria?: ICriteria<any, any>, options?: IRequestOptions) { const responsibleUserId = this.responsible_user_id; if (!responsibleUserId) return false; const factory: T = this.getFactory(); const userFactory = new UserFactory(factory.getRequest()); const entity = await userFactory.getById(responsibleUserId, criteria, options); return entity; } }; }