コード例 #1
0
 public RulesManager(IBoardingArea boardingArea)
 {
     _rules = new List <IRule>()
     {
         new FlightOfficerRule(), new PrisonerRule(), new StewardessRule()
     };
     _boardingArea = boardingArea;
 }
コード例 #2
0
        private void CheckIfPrisonerIsAloneWithPassengers(IBoardingArea boardingArea)
        {
            var prisonerIsAlone = boardingArea.GetBoardingAreaManager().PrisonerIsPresent() &&
                                  !boardingArea.GetBoardingAreaManager().CoopIsPresent() &&
                                  boardingArea.GetBoardingAreaManager().CountPassengers() > 1;

            if (prisonerIsAlone)
            {
                AddError(ErrorMessages.PrisonerNotAloneWithPassengers);
            }
        }
コード例 #3
0
        private void CheckIfFlightOfficerIsNotAloneWithCabinChief(IBoardingArea boardingArea)
        {
            var thereAreNotFlightOfficers = boardingArea.GetBoardingAreaManager().CountFlightOfficers() == 0;
            var thereAreMoreThanTwoPeople = boardingArea.GetBoardingAreaManager().CountPassengers() > 2;

            var FlightOfficersNotAlone = thereAreMoreThanTwoPeople || thereAreNotFlightOfficers ||
                                         !boardingArea.GetBoardingAreaManager().CabinChiefIsPresent();

            if (!FlightOfficersNotAlone)
            {
                AddError(ErrorMessages.FlightOfficersNotAloneWithCabinChief);
            }
        }
コード例 #4
0
        private void CheckIfStewardessIsNotAloneWithPilot(IBoardingArea boardingArea)
        {
            var thereAreNotStewardess     = boardingArea.GetBoardingAreaManager().CountStewardesses() == 0;
            var thereAreMoreThanTwoPeople = boardingArea.GetBoardingAreaManager().CountPassengers() > 2;

            var stewardessIsAlone = thereAreMoreThanTwoPeople || thereAreNotStewardess ||
                                    !boardingArea.GetBoardingAreaManager().PilotIsPresent();

            if (!stewardessIsAlone)
            {
                AddError(ErrorMessages.StewardessesNotAloneWithPilot);
            }
        }
コード例 #5
0
        public ApplicationManager()
        {
            _airplane      = new Airplane();
            _departureGate = new DepartureGate(InitializePassengers());
            _smarthFortwo  = new SmartFortwo(_departureGate, _airplane);
            TypeTranslator = new PassengerTypeTranslator();

            _rulesManager = new List <IRulesManager>
            {
                new RulesManager(_airplane),
                new RulesManager(_departureGate),
                new RulesManager(_smarthFortwo)
            };
        }
コード例 #6
0
 public RulesManager(IBoardingArea boardingArea, params IRule[] rules)
 {
     _boardingArea = boardingArea;
     _rules        = new List <IRule>(rules);
 }
コード例 #7
0
 public void CheckRules(IBoardingArea boardingArea)
 {
     CheckIfFlightOfficerIsNotAloneWithCabinChief(boardingArea);
 }
コード例 #8
0
 public SmartFortwo(IBoardingArea departurGate, IBoardingArea airplane)
 {
     _departurGate        = departurGate;
     _airplane            = airplane;
     _boardingAreaManager = new BoardingAreaManager();
 }
コード例 #9
0
 public void CheckRules(IBoardingArea boardingArea)
 {
     CheckIfStewardessIsNotAloneWithPilot(boardingArea);
 }
コード例 #10
0
 public void CheckRules(IBoardingArea boardingArea)
 {
     CheckIfPrisonerIsAloneWithPassengers(boardingArea);
 }