private void SetLaneGroupValues(Models.Approach Appr, Models.LaneGroup lg, DetectorConverter dc, int movementID, int lanetypeID) { Models.MovementType mt = (from r in db.MovementTypes where r.MovementTypeID == movementID select r).FirstOrDefault(); lg.Description = Appr.Description + mt.Abbreviation; lg.MovementTypeID = movementID; lg.LaneGroupTypeID = lanetypeID; lg.ProtectedPhaseNumber = dc.ProtectedPhase; lg.IsProtectedPhaseOverlap = dc.IsOverlap; if (dc.PermissivePhase > 0) { lg.PermissivePhaseNumber = dc.PermissivePhase; lg.IsPermissivePhaseOverlap = false; } }
public static Models.Graph_Detectors GetDetectorByLaneByDetectionType(Models.LaneGroup laneGroup, int detectionTypeID) { List <Models.Graph_Detectors> dets = new List <Models.Graph_Detectors>(); foreach (Models.Graph_Detectors d in laneGroup.Detectors) { foreach (Models.DetectionType m in d.DetectionTypes) { if (m.DetectionTypeID == detectionTypeID) { dets.Add(d); } } } if (dets.Count > 0) { return(dets[0]); } else { return(null); } }
public void CreateLaneGroupsAndLanes(List <DetectorConverter> CDetectorsForADirection, Models.Approach Appr) { Models.Approach.AddDefaultObjectsToApproach(Appr, db); //Update defaults based on values in DB for (int lanetypeID = 1; lanetypeID < 8; lanetypeID++) { var LanesByType = from d in CDetectorsForADirection where d.LaneTypeID == lanetypeID select d; if (LanesByType.Count() > 0) { for (int movementID = 1; movementID < 6; movementID++) { Models.LaneGroup LaneGroupByTypeAndMovement; LaneGroupByTypeAndMovement = (from r in Appr.LaneGroups where r.LaneGroupTypeID == lanetypeID && r.MovementTypeID == movementID select r).FirstOrDefault(); List <DetectorConverter> detectorsforMovement = (from l in LanesByType where l.MovementTypeID == movementID select l).ToList(); if (LaneGroupByTypeAndMovement == null && detectorsforMovement.Count > 0) { LaneGroupByTypeAndMovement = new Models.LaneGroup(); SetLaneGroupValues(Appr, LaneGroupByTypeAndMovement, detectorsforMovement.FirstOrDefault(), movementID, lanetypeID); Appr.LaneGroups.Add(LaneGroupByTypeAndMovement); LaneGroupByTypeAndMovement = (from r in Appr.LaneGroups where r.LaneGroupTypeID == lanetypeID && r.MovementTypeID == movementID select r).FirstOrDefault(); } else if (LaneGroupByTypeAndMovement != null && detectorsforMovement.Count > 0) { SetLaneGroupValues(Appr, LaneGroupByTypeAndMovement, detectorsforMovement.FirstOrDefault(), movementID, lanetypeID); } else if (LaneGroupByTypeAndMovement == null && detectorsforMovement.Count == 0) { return; } for (int lanenumber = 1; lanenumber < 5; lanenumber++) { List <DetectorConverter> detConvertersByLaneNumber = (from d in detectorsforMovement where d.LaneNumber == lanenumber select d).ToList(); //Models.Graph_Detectors graphDetector = (from r in LaneGroupByTypeAndMovement.Detectors // where r.LaneNumber == lanenumber // select r).FirstOrDefault(); if (detConvertersByLaneNumber != null) { foreach (DetectorConverter d in detConvertersByLaneNumber) { //detConverterByLaneNumber.GraphDetectorModel.LaneGroupID = LaneGroupByTypeAndMovement.LaneGroupID; d.GraphDetectorModel.LaneNumber = lanenumber; if (LaneGroupByTypeAndMovement.Detectors == null) { LaneGroupByTypeAndMovement.Detectors = new List <MOE.Common.Models.Graph_Detectors>(); } LaneGroupByTypeAndMovement.Detectors.Add(d.GraphDetectorModel); } } //else if (detConverterByLaneNumber != null && lane != null) //{ // lane.Detectors.Add(detConverterByLaneNumber.GraphDetectorModel); //} else if (detConvertersByLaneNumber == null) { return; } } } } } }
public LaneGroupModelHelper(Models.LaneGroup laneGroup) { //MOE.Common.Models.Repositories.ILaneGroupRepository laneGroups = MOE.Common.Models.Repositories.LaneGroupRepositoryFactory.CreateLaneGroupRepository(); LaneGroup = laneGroup; }