예제 #1
0
파일: Converter.cs 프로젝트: zfx1982/ATSPM
        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;
            }
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
파일: Converter.cs 프로젝트: zfx1982/ATSPM
        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;
                            }
                        }
                    }
                }
            }
        }
예제 #4
0
        public LaneGroupModelHelper(Models.LaneGroup laneGroup)
        {
            //MOE.Common.Models.Repositories.ILaneGroupRepository laneGroups = MOE.Common.Models.Repositories.LaneGroupRepositoryFactory.CreateLaneGroupRepository();

            LaneGroup = laneGroup;
        }