import { InputType, Field, ID } from "@nestjs/graphql";
import { ExpiryBaseInput } from "@/models/base.model";

@InputType()
export class UpdateResponsibleInput {

    @Field(() => ID, { nullable: true })
    company?: string;

    @Field(() => ID, { nullable: true })
    person?: string;

}

@InputType()
export class UpdateBuildAttributeInput {

    @Field(() => ID, { nullable: true })
    site?: string;

    @Field(() => ID, { nullable: true })
    address?: string;

    @Field(() => [ID], { nullable: true })
    areas?: string[];

    @Field(() => [ID], { nullable: true })
    ibans?: string[];

    @Field(() => [UpdateResponsibleInput], { nullable: true })
    responsibles?: UpdateResponsibleInput[];

}

@InputType()
export class UpdateBuildResponsibleInput {

    @Field(() => ID, { nullable: true })
    company?: string;

    @Field(() => ID, { nullable: true })
    person?: string;

}

@InputType()
export class UpdateBuildInfoInput {

    @Field({ nullable: true })
    govAddressCode?: string;

    @Field({ nullable: true })
    buildName?: string;

    @Field({ nullable: true })
    buildNo?: string;

    @Field({ nullable: true })
    maxFloor?: number;

    @Field({ nullable: true })
    undergroundFloor?: number;

    @Field({ nullable: true })
    buildDate?: Date;

    @Field({ nullable: true })
    decisionPeriodDate?: Date;

    @Field({ nullable: true })
    taxNo?: string;

    @Field({ nullable: true })
    liftCount?: number;

    @Field({ nullable: true })
    heatingSystem?: boolean;

    @Field({ nullable: true })
    coolingSystem?: boolean;

    @Field({ nullable: true })
    hotWaterSystem?: boolean;

    @Field({ nullable: true })
    blockServiceManCount?: number;

    @Field({ nullable: true })
    securityServiceManCount?: number;

    @Field({ nullable: true })
    garageCount?: number;

    @Field({ nullable: true })
    managementRoomId?: number;

}

@InputType()
export class UpdateBuildInput extends ExpiryBaseInput {

    @Field({ nullable: true })
    buildType?: string;

    @Field(() => UpdateBuildInfoInput, { nullable: true })
    info?: UpdateBuildInfoInput;

}
