package ovh.cybuch.helloworld;

import static java.time.LocalDate.of;
import static java.time.Month.APRIL;
import static java.time.Month.AUGUST;
import static java.time.Month.JULY;
import static java.time.Month.OCTOBER;
import static ovh.cybuch.helloworld.Skill.HIBERNATE;
import static ovh.cybuch.helloworld.Skill.JAVA;
import static ovh.cybuch.helloworld.Skill.JUNIT;
import static ovh.cybuch.helloworld.Skill.MOCKITO;
import static ovh.cybuch.helloworld.Skill.OOP;

import java.time.Duration;
import java.time.Month;

public class HelloWorld {

	public static void main(String... args) {
		EmployeeBuilder employeeBuilder = new EmployeeBuilder();

		employeeBuilder.withName("PaweĊ‚ Nowak");
		employeeBuilder.withEmail("nowakpdev at gmail.com");
		employeeBuilder.withSkills(JAVA, OOP, HIBERNATE, JUNIT, MOCKITO);

		ExperienceBuilder experienceBuilder = new ExperienceBuilder();

		experienceBuilder.withExperience(Duration.between(of(2015, OCTOBER, 1), of(2016, OCTOBER, 31)),
				"Business Online Services sp. z o.o.", "Java Developer (Hibernate, JBPM, Internal tools)");

		experienceBuilder.withExperience(Duration.between(of(2015, APRIL, 1), of(2015, AUGUST, 25)),
				"Google Summer of Code - Eclipse Foundation", "Java Intern (JUnit, Mockito, Eclipse tools)");

		experienceBuilder.withExperience(Duration.between(of(2014, Month.JUNE, 1), of(2014, JULY, 17)),
				"Bazy i Systemy Bankowe Sp. z o.o.", "Java Intern (JSF, Hibernate)");

		experienceBuilder.withExperience(Duration.between(of(2013, JULY, 1), of(2013, JULY, 31)), "Szpital Jurasza",
				"Java Intern (Hibernate, smsapi.pl)");

		employeeBuilder.withExperience(experienceBuilder.build());

		employeeBuilder.withEducation(Duration.between(of(2012, OCTOBER, 1), of(2015, OCTOBER, 1)), 
				"BSc of ICT at University of Technology and Life Sciences, Bydgoszcz");
		
		employeeBuilder.withHobby("Stand-up fighting - muay thai adept");
		
		Employee javaDevToHire = employeeBuilder.build();
		javaDevToHire.hire();
	}

}