private bool IsThereAnInteraction(MissionVM m1)
        {
            Mission m = new Mission();

            m.Id = m1.Code;
            return(!(missionsInteractionsBL.GetNextMissions(m).Count == 0 && missionsInteractionsBL.GetPreviousMissions(m).Count == 0));
        }
        private bool IsThereAnInteraction(MissionVM m1, MissionVM m2)
        {
            Mission m = new Mission();

            m.Id = m1.Code;
            foreach (var mission in missionsInteractionsBL.GetNextMissions(m))
            {
                if (mission.Id == m2.Code)
                {
                    return(true);
                }
            }
            foreach (var mission2 in missionsInteractionsBL.GetPreviousMissions(m))
            {
                if (mission2.Id == m2.Code)
                {
                    return(true);
                }
            }
            return(false);
        }
예제 #3
0
        private Activity[] Convert(List <Mission> list)
        {
            Activity[] activityArr = new Activity[list.Count + 2];
            Dictionary <String, List <Mission> > missionInteractions = new Dictionary <string, List <Mission> >();
            List <Mission> prevMissions;
            List <Mission> nextMissions;

            List <int> startActivityIndexes = new List <int>();
            List <int> endActivityIndexes   = new List <int>();


            int i = 0, index;

            activityArr[list.Count + 1]          = new Activity(); //the final mission
            activityArr[list.Count + 1].Duration = 1;
            activityArr[list.Count + 1].Id       = "-1";

            activityArr[list.Count]          = new Activity(); //the start mission
            activityArr[list.Count].Duration = 1;
            activityArr[list.Count].Id       = "-2";


            foreach (var mission in list)
            {
                Activity temp = new Activity();
                temp.Duration    = mission.Duration;
                temp.Description = mission.Description;
                temp.Id          = mission.Id.ToString();

                prevMissions = missionsInteractionsBL.GetPreviousMissions(mission);
                missionInteractions.Add(temp.Id, prevMissions);
                if (prevMissions.Count == 0)//connect the start missions to the global start mission
                {
                    startActivityIndexes.Add(i);
                }

                nextMissions = missionsInteractionsBL.GetNextMissions(mission);
                if (nextMissions.Count == 0)//connect the end missions to the global end mission
                {
                    endActivityIndexes.Add(i);
                }
                activityArr[i] = temp;
                i++;
            }
            activityArr[list.Count].Predecessors = new Activity[0];
            foreach (int startIndex in startActivityIndexes)
            {
                activityArr[startIndex].Predecessors    = new Activity[1];
                activityArr[startIndex].Predecessors[0] = activityArr[list.Count];
                activityArr[list.Count] = activityArr[list.Count].SetSuccessors(activityArr[list.Count], activityArr[startIndex]);
            }

            activityArr[list.Count + 1].Predecessors = new Activity[endActivityIndexes.Count];
            i = 0;
            foreach (int endIndex in endActivityIndexes)
            {
                activityArr[list.Count + 1].Predecessors[i] = activityArr[endIndex];
                i++;
                activityArr[endIndex] = activityArr[endIndex].SetSuccessors(activityArr[endIndex], activityArr[list.Count + 1]);
            }

            foreach (var mission in list)
            {
                List <Mission> Predecessors = missionInteractions[mission.Id.ToString()];
                //missionsInteractionsBL.GetPreviousMissions(mission);
                int activityIndex = GetIndexWhereIdEquals(activityArr, mission.Id.ToString());
                if (!startActivityIndexes.Contains(activityIndex))
                {
                    activityArr[activityIndex].Predecessors = new Activity[Predecessors.Count];
                    for (i = 0; i < Predecessors.Count; i++)
                    {
                        index = GetIndexWhereIdEquals(activityArr, Predecessors[i].Id.ToString());
                        activityArr[activityIndex].Predecessors[i] = activityArr[index];
                        activityArr[index] = activityArr[index].SetSuccessors(activityArr[index], activityArr[activityIndex]);
                    }
                }
            }

            Activity first = activityArr[list.Count];

            activityArr[list.Count] = activityArr[0];
            activityArr[0]          = first;


            return(activityArr);
        }