import { APP_ID } from '~/constants/api.constants';
import { BaseInput } from '~/core/entities/input/baseInput';
import { BaseOutput } from '~/core/entities/output/baseOutput';

export class CandidateDetail extends BaseInput {
    constructor(
        /* tslint:disable: variable-name */
        public ID_Login: string = '',
        public ID: number = 0,
        public ConvertToRtf: boolean = false,
        /* tslint:enable: variable-name */
    ) {
        super(APP_ID);
    }
}
export class CandidateDetailPerson extends BaseInput {
    constructor(
        /* tslint:disable: variable-name */
        public ID_Login: string = '',
        public ID: number = 0,
        // public Size: string = '',
        // public ID_EventCongressFunction: number = 0,
        // public ID_Person: number = 0,
        // public ReturnPhoto: boolean = false,
        /* tslint:enable: variable-name */
    ) {
        super(APP_ID);
        // if (!this.ID_EventCongressFunction) {
        //     this.ID_EventCongressFunction = undefined;
        // }
    }
}
export class CandidateQualificationAll extends BaseInput {
    constructor(
        /* tslint:disable: variable-name */
        public ID_Login: string = '',
        public ID_Candidate: number = 0,
        // public ID_Qualification: number = 0,

        /* tslint:enable: variable-name */
    ) {
        super(APP_ID);

    }
}
export class CandidateRecommendationAll extends BaseInput {
    constructor(
        /* tslint:disable: variable-name */
        public ID_Login: string = '',
        public ID_Candidate: number = 0,
        // public ID_Recommendation: number = 0,

        /* tslint:enable: variable-name */
    ) {
        super(APP_ID);
    }
}
export class CandidateFunctionAll extends BaseInput {
    constructor(
        /* tslint:disable: variable-name */
        public ID_Login: string = '',
        public ID_Candidate: number = 0,
        // public ID_Function: number = 0,

        /* tslint:enable: variable-name */
    ) {
        super(APP_ID);
    }
}

export class CandidateEducationSeminaryAll extends BaseInput {
    constructor(
        /* tslint:disable: variable-name */
        public ID_Login: string = '',
        public ID_Candidate: number = 0,
        // public ID_EducationSeminary: number = 0,

        /* tslint:enable: variable-name */
    ) {
        super(APP_ID);

    }
}
export class CandidateContactAll extends BaseInput {
    constructor(
        /* tslint:disable: variable-name */
        public ID_Login: string = '',
        public ID_Candidate: number = 0,
        // public ID_PersonContact: number = 0,
        /* tslint:enable: variable-name */
    ) {
        super(APP_ID);

    }
}


export class CongCandidateDetailOutput extends BaseOutput {
    constructor(
        /* tslint:disable: variable-name */
        public ID_Login: string = '',
        public ID: number = 0,
        public DisplayName: string = '',
        public ID_EventCongress: number = 0,
        public EventCongress: string = '',
        public ID_CandidateState: string = '',
        public CandidateState: string = '',
        public StateDecision: string = '',
        public ID_UserCreate: number = 0,
        public ID_PersonCreate: number = 0,
        public PersonCreate: string = '',
        public DateCreate: string = '',
        public ID_Person: number = 0,
        public Person: string = '',
        public ID_CandidateWith: number = 0,
        public PersonWith: string = '',
        public ID_EventCongressFunction: number = 0,
        public EventCongressFunction: string = '',
        public FunctionType: string = '',
        public IsCandidateWith: boolean = false,
        public ID_TempFile: string = '',
        public ID_Document: number = 0,
        public AttachmentExtension: string = '',
        public AttachmentContent: string = '',
        public Career: string = '',
        public SuggesterName: string = '',
        public SuggesterFunction: string = '',
        public SuggesterDescription: string = '',
        public Presentation: string = '',
        public Success: string = '',
        public Agenda: string = '',
        public Problems: string = '',
        public MainTask: string = '',
        public VotesCount: number = 0,
        public Order: number = 0,
        public IsElected: boolean = false,
        public Unit: string = '',
        public ID_UnitType: string = '',

        /* tslint:enable: variable-name */
    ) {
        super();
    }
}

export class CandidatePersonOutput extends BaseOutput {
    constructor(
        public ID: number = 0,
        public DisplayName: string = '',
        public DegreeInFrontOf: string = '',
        public DegreeBehind: string = '',
        public FirstName: string = '',
        public LastName: string = '',
        public NickName: string = '',
        public Birthday: string = '',
        public City: string = '',
        public YearFrom: number = 0,
        public PhotoExtension: string = '',
        public MaidenName: string = '',
        public ID_DistrictBirth: number = 0,
        public BirthCity: string = '',
        public Citizenship: string = '',
        public CitizenshipCustom: string = '',
        public ID_Citizenship: string = '',
        public DistrictBirth: string = '',
        public CollectBirthInfoData: boolean = false,
    ) {
        super()

    }
}

export class RegistrationOutput extends BaseOutput {

    constructor(
        public Unit: string = '',
        public RegistrationNumber: string = '',
    ) {
        super()

    }
}
export class EducationOutput extends BaseOutput {
    constructor(
        public EducationType: string = '',
        public Note: string = '',
    ) {
        super()

    }
}


export class CongCandidateDetailPersonOutput extends BaseOutput {
    constructor(
        /* tslint:disable: variable-name */
        public Person: CandidatePersonOutput = new CandidatePersonOutput(),
        public Registration: RegistrationOutput = new RegistrationOutput(),
        public Education: (typeof EducationOutput | [])[] = [EducationOutput, []],

        /* tslint:enable: variable-name */
    ) {
        super();
    }

}
export class CongCandidateContactOutput extends BaseOutput {
    constructor(
        /* tslint:disable: variable-name */
        public ID: number = 0,
        public ID_Candidate: number = 0,
        public ID_PersonContact: number = 0,
        public ID_ContactType: string = '',
        public ContactType: string = '',
        public Value: string = '',
        public Note: string = '',
        /* tslint:enable: variable-name */
    ) {
        super();
    }
}
export class CongCandidateQualificationOutput extends BaseOutput {
    constructor(
        /* tslint:disable: variable-name */
        public ID: number = 0,
        public ID_Candidate: number = 0,
        public ID_Qualification: number = 0,
        public ID_QualificationType: number = 0,
        public QualificationType: string = '',
        public ValidFrom: string = '',
        public Note: string = '',
        /* tslint:enable: variable-name */
    ) {
        super();
    }
}
export class CongCandidateFunctionOutput extends BaseOutput {
    constructor(
        /* tslint:disable: variable-name */
        public ID: number = 0,
        public ID_Candidate: number = 0,
        public ID_Function: number = 0,
        public ID_Unit: number = 0,
        public Unit: string = '',
        public ID_FunctionType: number = 0,
        public FunctionType: string = '',
        public ValidFrom: string = '',
        public ValidTo: string = '',
        /* tslint:enable: variable-name */
    ) {
        super();
    }
}
export class CongCandidateRecommendationOutput extends BaseOutput {
    constructor(
        /* tslint:disable: variable-name */
        public ID: number = 0,
        public ID_Candidate: number = 0,
        public DisplayName: string = '',
        public Relation: string = '',
        public Description: string = '',
        /* tslint:enable: variable-name */
    ) {
        super();
    }
}
export class CongCandidateEducationSeminaryOutput extends BaseOutput {
    constructor(
        /* tslint:disable: variable-name */
        public ID: number = 0,
        public ID_Candidate: number = 0,
        public ID_EducationSeminary: number = 0,
        public EducationSeminary: string = '',
        public YearFrom: number = 0,
        /* tslint:enable: variable-name */
    ) {
        super();
    }
}
