private IInterviewStrategy GetStrategyForManager(InterviewedPerson person)
        {
            switch (person.Experience)
            {
            case Experience.Junior:
                return(new JuniorManagerStrategy());

            case Experience.Medium:
                if (person.HiringType == HiringType.FullTime)
                {
                    return(new MediumFullTimeManagerStrategy());
                }
                else
                {
                    return(new MediumNonFullTimeManagerStrategy());
                }

            case Experience.Senior:
            case Experience.RockStar:
                return(new SeniorAndRockstarManagerStrategy());

            default:
                throw new NotImplementedException("What kind of experience is this?");
            }
        }
 public void Arrange(InterviewedPerson person)
 {
     Console.WriteLine("Give him a complex program to develop before he comes here");
     Console.WriteLine("Prepare senior tester interview questions");
     Console.WriteLine("Reserve a meeting with any 2 senior developers");
     Console.WriteLine("Reserver a meeting with one of the managers");
 }
        private IInterviewStrategy GetStrategyForDevOp(InterviewedPerson person)
        {
            //It could get more complex, if we decide we want different process for different positions(part time/full time)
            switch (person.Experience)
            {
            case Experience.Junior:
                return(new JuniorDevOpStrategy());

            case Experience.Medium:
                return(new MediumDevOpStrategy());

            case Experience.Senior:
                return(new SeniorDevOpStrategy());

            case Experience.RockStar:
                return(new RockstarDevOpStrategy());

            default:
                throw new NotImplementedException("hiring for " + person.Experience + " is not implemented");
            }
        }
        public IInterviewStrategy GetInterviewStrategy(InterviewedPerson person)
        {
            Console.WriteLine("Reserve a meeting with one from HR");
            switch (person.Role)
            {
            case Role.Devloper:
                return(GetDeveloperStrategy(person));

            case Role.Designer:
                return(GetStrategyFOrDesigner(person));

            case Role.Tester:
                return(GetStrategyForTester(person));

            case Role.Manager:
                return(GetStrategyForManager(person));

            case Role.DevOp:
                return(GetStrategyForDevOp(person));

            default:
                throw new NotImplementedException("not implemented how to arrange interview for:" + person.Role);
            }
        }
 public void Arrange(InterviewedPerson person)
 {
     Console.WriteLine("Prepare senior tester interview questions");
     Console.WriteLine("Reserve a meeting with any 2 senior testers");
     Console.WriteLine("Reserver a meeting with one of the managers");
 }
 public void Arrange(InterviewedPerson person)
 {
     Console.WriteLine("We don't hire rockstar developers, because they are too cocky, this title was a trap");
 }
 public void Arrange(InterviewedPerson person)
 {
     Console.WriteLine("Prepare medium developer interview questions");
     Console.WriteLine("Give him a small program to develop before he comes here");
     Console.WriteLine("Reserve a meeting with any senior developer");
 }
 public void Arrange(InterviewedPerson person)
 {
     Console.WriteLine("Reserve a meeting with any medium/senior designer");
 }
 public void Arrange(InterviewedPerson person)
 {
     Console.WriteLine("Give him a website to design");
     Console.WriteLine("Reserve a meeting with best senior designers");
     Console.WriteLine("Reserver a meeting with one of the managers");
 }
 public void Arrange(InterviewedPerson person)
 {
     Console.WriteLine("Reserve a meeting with best senior DevOps");
     Console.WriteLine("Reserver a meeting with one of the managers");
 }
 public void Arrange(InterviewedPerson person)
 {
     Console.WriteLine("We don't hire junior managers");
 }
 public void Arrange(InterviewedPerson person)
 {
     Console.WriteLine("Reserver a meeting with all the managers");
 }
 public void Arrange(InterviewedPerson person)
 {
     Console.WriteLine("We dont hire Medium managers only full time");
 }
 public void Arrange(InterviewedPerson person)
 {
     Console.WriteLine("get third party rockstar testers to test him out");
     Console.WriteLine("Reserver a meeting with one of the managers");
 }
 public void Arrange(InterviewedPerson person)
 {
     Console.WriteLine("Give him medium designer test");
     Console.WriteLine("Reserve a meeting with any senior designer");
 }
 public void Arrange(InterviewedPerson person)
 {
     Console.WriteLine("Prepare junior tester interview questions");
     Console.WriteLine("Reserve a meeting with any medium/senior tester");;
 }
 public void Arrange(InterviewedPerson person)
 {
     Console.WriteLine("Reserve a meeting with any senior DevOps");
 }