public TMCInfo CreateMetric() { base.CreateMetric(); var repository = SignalsRepositoryFactory.Create(); var signal = repository.GetVersionOfSignalByDate(SignalID, StartDate); TmcInfo = new TMCInfo(); var plans = PlanFactory.GetBasicPlans(StartDate, EndDate, SignalID); var ltr = LaneTypeRepositoryFactory.Create(); var laneTypes = ltr.GetAllLaneTypes(); var mtr = MovementTypeRepositoryFactory.Create(); var movementTypes = mtr.GetAllMovementTypes(); var dtr = DirectionTypeRepositoryFactory.Create(); var directions = dtr.GetAllDirections(); CreateLaneTypeCharts(signal, "Vehicle", laneTypes, movementTypes, directions, plans, TmcInfo); CreateLaneTypeCharts(signal, "Exit", laneTypes, movementTypes, directions, plans, TmcInfo); CreateLaneTypeCharts(signal, "Bike", laneTypes, movementTypes, directions, plans, TmcInfo); return(TmcInfo); }
private void CreateLaneTypeCharts(Models.Signal signal, string laneTypeDescription, List <LaneType> laneTypes, List <MovementType> movementTypes, List <DirectionType> directions, List <Plan> plans, TMCInfo tmcInfo) { foreach (var direction in directions) { var approaches = (from r in signal.Approaches where r.DirectionType.DirectionTypeID == direction.DirectionTypeID select r).ToList(); var DetectorsByDirection = new List <Models.Detector>(); foreach (var a in approaches) { foreach (var d in a.Detectors) { if (d.DetectorSupportsThisMetric(5)) { DetectorsByDirection.Add(d); } } } //Loop through the major movement types var movementTypeIdsSorted = new List <int> { 3, 1, 2 }; foreach (var x in movementTypeIdsSorted) { var lanetype = (from r in laneTypes where r.Description == laneTypeDescription select r).FirstOrDefault(); var movementType = (from r in movementTypes where r.MovementTypeID == x select r).FirstOrDefault(); var DetectorsForChart = (from r in DetectorsByDirection where r.MovementType.MovementTypeID == movementType.MovementTypeID && r.LaneType.LaneTypeID == lanetype.LaneTypeID select r).ToList(); //movement type 1 is the thru movement. We have to add the thru/turn lanes to the thru movment count. if (x == 1) { var turnthrudetectors = (from r in DetectorsByDirection where (r.MovementType.MovementTypeID == 4 || r.MovementType.MovementTypeID == 5) && r.LaneType.LaneTypeID == lanetype.LaneTypeID select r).ToList(); if (turnthrudetectors != null && turnthrudetectors.Count > 0) { DetectorsForChart.AddRange(turnthrudetectors); } } if (DetectorsForChart.Count > 0) { var TMCchart = new TMCMetric(StartDate, EndDate, signal, direction, DetectorsForChart, lanetype, movementType, this, tmcInfo); var chart = TMCchart.chart; SetSimplePlanStrips(plans, chart, StartDate); //Create the File Name var chartName = CreateFileName(); //Save an image of the chart chart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg); //ReturnList.Add(MetricWebPath + chartName); tmcInfo.ImageLocations.Add(MetricWebPath + chartName); } } } }