예제 #1
0
        public ParkApplicationService(IParkingBoyRepository parkingBoyRepository, ITicketRepository ticketRepository)
        {
            _ticketRepository = ticketRepository;
            var boy = parkingBoyRepository.GetBoy(new BoyId("26C3719E-984E-4E47-B5D4-D7A5633FEE72"));

            _parkable = boy;
        }
예제 #2
0
 public static string HighVacancyRatePark(Car car, IParkable[] parkables)
 {
     var parkinglotFilter =
         ((Parkinglot[]) parkables).OrderByDescending(
             parkinglot => parkinglot.GetVacancyRate()).First();
     return parkinglotFilter == null ? null : parkinglotFilter.Park(car);
 }
예제 #3
0
 public static string MoreAvailableStallsPark(Car car, IParkable[] parkables)
 {
     var parkinglotFilter =
         ((Parkinglot[]) parkables).OrderByDescending(
             parkinglot => parkinglot.GetAvailableStallsCount())
             .First();
     return parkinglotFilter == null ? null : parkinglotFilter.Park(car);
 }
예제 #4
0
 public static Car SequencePick(string value, IParkable[] parkers)
 {
     foreach (var parkable in parkers)
     {
         var result = parkable.Pick(value);
         if (result != null) return result;
     }
     return null;
 }
예제 #5
0
 public static ReportData[] GenerateReportDatas(IParkable[] parkables, string style)
 {
     var reportDatas = new List<ReportData>();
     var summary = new ReportData()
     {
         AvailableStalls = 0,
         CarsParked = 0,
         Level = 0,
         Style = style
     };
     reportDatas.Add(summary);
     foreach (var parkable in parkables)
     {
         var datas = parkable.GenerateReportDatas();
         UpdateLevelFor(datas);
         UpdateSummaryData(summary, datas.First());
         reportDatas.AddRange(datas);
     }
     return reportDatas.ToArray();
 }
예제 #6
0
 private static void AppendParkable(StringBuilder stringBuilder, string prefix, IParkable parkinglot, string flag)
 {
     stringBuilder.AppendFormat("{2}{3} {0} {1}\r\n", parkinglot.GetParkedNumber(), parkinglot.GetTotalsize(), prefix, flag);
 }
예제 #7
0
 protected ParkingBoyBase(List <ParkingLot> parkingLots, ParkerType type)
 {
     pickerParkers.AddRange(parkingLots);
     parkable = ParkableFactory.CreateParkable(type);
 }
예제 #8
0
 public Manager(List <IPickerParker> pickerParkers)
 {
     this.pickerParkers = pickerParkers;
     parkable           = ParkableFactory.CreateParkable(ParkerType.Commen);
 }
예제 #9
0
 public void SetParkBehavior(IParkable park)
 {
     _parkBehavior = park;
 }
예제 #10
0
 public Car()
 {
     _brakeBehavior = new NormalBrake();
     _rideBehavior  = new NormalRide();
     _parkBehavior  = new NormalPark();
 }
예제 #11
0
 public static string SequencePark(Car car, IParkable[] parkables)
 {
     return
         parkables.Select(parkable => parkable.Park(car))
             .FirstOrDefault(token => token != null);
 }