import type {OccupationInterface} from "./occupation.interface";
import type {SchoolInterface} from "./school.interface";
import type {EducationSearchInterface} from "./education-search.interface";
import type {TranslationInterface} from "./translation.interface";

export interface CandidateInterface{
  accountClosed: boolean;
  address: LatLngInterface | undefined;
  birthday: Date | string;
  // unknown
  certificates: CertificationInterface[];
  // unknown, but guessing
  closedAt: Date;
  // unknown
  courses: [];
  createdAt: Date;
  cvTipsEnabled: true;
  driversLicenses: DriversLicenseInterface[];
  // unknown
  educations: EducationInterface[];
  email: string;
  experiences: ExperienceInterface[];
  firstName: string;
  gender: string;
  hasCertificates: boolean;
  hasDriversLicenses: boolean;
  hasEducations: boolean;
  hasExperiences: boolean;
  hasLanguages: boolean;
  hasSkills: boolean;
  hasStreetAddress: boolean;
  id: string;
  image: string;
  isActive: boolean;
  isAnonymized: boolean;
  // unknown
  jobApplications: [];
  // unknown
  languages: LanguageInterface[];
  lastLogin: Date;
  lastName: string;
  name: string;
  password: string;
  personalDescription: string;
  personalDescriptions: TranslationInterface[];
  // unknown but guessing
  phoneNumber: string;
  setToInactiveAutomatically: boolean;
  signupStage: number;
  // unknown
  skills: SkillInterface[];
  useOwnCar: boolean;
  yearsOld: string;
  newImage: boolean;
  imageUrl: string;
  generatedCv: boolean;
  isGeneratingCv: boolean;
  cvs: CvInterface[];
}

export interface CvInterface{
  language: string;
  generatedCv: boolean;
  isGeneratingCv: boolean;
}

export interface SkillInterface{
  levelName?: string;
  level: number;
  id?: string;
  editMode?: boolean;
  qualification: QualificationInterface;
}

export interface QualificationInterface{
  id: string;
  reviewed?: boolean;
  // unknown
  dateAdded?: object;
  candidateCourses?: object;
  candidateCertificates?: object;
  candidateSkills?: object;
  jobCertificates?: object;
  jobSkills?: object;
  occupations?: object;
  jobnetSkills?: [];
  jobnetCertificate?: [];
  type: number;
  name: string;
}

export interface EducationInterface{
  editMode?: boolean;
  comments: string;
  education: EducationSearchInterface;
  educationDisced15: number;
  fromDate: Date;
  id: string;
  institution: SchoolInterface;
  institutionNumber: number;
  isCurrent: boolean;
  toDate: Date;
  translationComments?: TranslationInterface[];
}



export interface LanguageInterface{
  id: string;
  level: number;
  levelName: string;
  language: CandidateLanguageInterface;
  editMode?: boolean;
}

export interface CandidateLanguageInterface{
  // unknown, guess
  candidateLanguage: string;
  id: string;
  isO639: string;
  // unknown
  jobLanguages: [];
  // unknown
  jobnetLanguage: []
  name: string;
  ownName: string;
  priority: number,

}

export interface LatLngInterface{
  latitude: number;
  longitude: number;
  additionalCityName?: string;
  awsId: string;
  awsUrl: string;
  houseNum: string;
  road: string;
  zip: string;
  zipName: string;

}

export interface DriversLicenseInterface{
  driversLicenseId: string;
  id: string;
  level: number;
  levelName: string;
  driversLicense: DriverLicenseCandidateInterface;
  editMode: boolean;
}

export interface DriverLicenseCandidateInterface{
  // unknown guessing
  candidateDriversLicense: string;
  code: string;
  id: string;
  // unknown guessing
  jobDriversLicense: string;
  jobnetDriversLicense: string;
  name: string;
  priority: number;
  special: boolean;
}

export interface ExperienceInterface{
  // unknown but guessing
  comments: string;
  translationComments?: TranslationInterface[];
  companyName: string;
  fromDate: Date;
  id?: string;
  isCurrent: boolean;
  toDate: Date;
  occupation: OccupationInterface;
  editMode?: boolean;
}

export interface CertificationInterface{
  levelName: string;
  origin: string;
  validTo: Date;
  level: number;
  id: string;
  qualification: QualificationInterface;
  editMode?: boolean;
}

