
export class Resume {
    public id: number | null = null;
    public accountID: number | null = null;

    public title: string = "";
    public name: string = "";
    public field: string = "";
    public email: string = "";
    public phoneNumber: string = "";
    public postalCode: string = "";
    public country: string = "";
    public stateOrRegion: string = "";
    public city: string = "";
    public isActive: boolean = false;
    public military: ResumeMilitary | null = null;
    public experiences: ResumeExperience[] = [];
    public educations: ResumeEducation[] = [];
    public skills: ResumeSkill[] = [];
    public languages: ResumeLanguage[] = [];
    public certifications: ResumeCertification[] = [];
    public projects: ResumeProject[] = [];
    public trackUUID: string = crypto.randomUUID();
}

export class ResumeExperience {
    public id: number | null = null;
    public resumeID: number | null = null;

    public jobTitle: string = "";
    public company: string = "";
    public postalCode: string = "";
    public country: string = "";
    public stateOrRegion: string = "";
    public city: string = "";
    public dateStarted: Date = new Date();
    public stillEmployed: boolean = false;
    public dateEnded: Date = new Date();
    public experienceBullets: ResumeExperienceBullet[] = [];
    public trackUUID: string = crypto.randomUUID();
}

export class ResumeExperienceBullet {
    public id: number | null = null;
    public resumeID: number | null = null;
    public resumeExperienceID: number | null = null;

    public jobFunction: string = "";
    public trackUUID: string = crypto.randomUUID();
}

export class ResumeMilitary {
    public id: number | null = null;
    public resumeID: number | null = null;

    public country: string = "";
    public rank: string = "";
    public dateStarted: Date = new Date();
    public stillServing: boolean = false;
    public dateEnded: Date = new Date();
    public militaryBullets: ResumeMilitaryBullet[] = [];
    public trackUUID: string = crypto.randomUUID();
}

export class ResumeMilitaryBullet {
    public id: number | null = null;
    public resumeID: number | null = null;
    public resumeMilitaryID: number | null = null;

    public achievement: string = "";
    public description: string = "";
    public trackUUID: string = crypto.randomUUID();
}

export class ResumeEducation {
    public id: number | null = null;
    public resumeID: number | null = null;

    public degreeType: string = "";
    public degreeField: string = "";
    public school: string = "";
    public postalCode: string = "";
    public country: string = "";
    public stateOrRegion: string = "";
    public city: string = "";
    public dateStarted: Date = new Date();
    public stillStudying: boolean = false;
    public dateEnded: Date = new Date();
    public trackUUID: string = crypto.randomUUID();
}

export class ResumeSkill {
    public id: number | null = null;
    public resumeID: number | null = null;

    public name: string = "";
    public description: string = "";
    public trackUUID: string = crypto.randomUUID();
}

export class ResumeLanguage {
    public id: number | null = null;
    public resumeID: number | null = null;

    public language: string = "";
    public proficiency: string = "";
    public trackUUID: string = crypto.randomUUID();
}

export class ResumeCertification {
    public id: number | null = null;
    public resumeID: number | null = null;

    public name: string = "";
    public verificationURL: string = "";
    public description: string = "";
    public trackUUID: string = crypto.randomUUID();
}

export class ResumeProject {
    public id: number | null = null;
    public resumeID: number | null = null;
    
    public name: string = "";
    public url: string = "";
    public description: string = "";
    public trackUUID: string = crypto.randomUUID();
}