Exemplo n.º 1
0
        public void InterventionAddInterveningTeamTest()
        {
            Team         t = new Team("TestTeam");
            Intervention a = new Intervention();

            a.AddInterveningTeam(t);
            Assert.IsTrue(a.getInterveningTeamList().Contains(t));
        }
Exemplo n.º 2
0
        public void StatisticsSetInterventionsPerTeam()
        {
            Statistics   statistics = new Statistics();
            Intervention i          = new Intervention();
            Team         t          = new Team("A");

            i.AddInterveningTeam(t);
            i.setCode(1);
            statistics.setInterventionsPerTeam();
            Assert.AreEqual(0, t.getCode1Count());
        }
Exemplo n.º 3
0
        public void InterventionInterveningTeamArrivedTest()
        {
            Team         t = new Team("TestTeam");
            Intervention a = new Intervention();

            a.AddInterveningTeam(t);
            a.InterveningTeamArrived(t);
            TimeSpan ts        = new TimeSpan(0);
            int      threshold = 1;

            foreach (Resource r in a.getResourceList())
            {
                if (r.getTeam().Equals(t))
                {
                    ts = DateTime.Now - r.getArrivalTime();
                }
            }
            Assert.IsTrue(ts.TotalSeconds <= threshold);
        }
Exemplo n.º 4
0
        //Override the default DragStop method to add functionality to it
        public override void DragStop(Canvas Canvas_map, MouseButtonEventArgs e)
        {
            //Merging teams
            if (parentPin != null && SufficientOverlap(parentPin)) //Want to merge
            {
                Team.removeSplitTeam(team);                        //Delete the fragment
                if (gpsLocation != null)
                {
                    gpsLocation.setTeamSplit(false);                     //Reactivationg gps
                }

                //Removing rogue arrows that might appear by movement of the teams or interventions while teams where split
                RemoveArrow();
                parentPin.RemoveArrow();
                if (interventionPin != null)
                {
                    interventionPin.RemoveArrow();
                }

                mapSection.Update();
            }

            //Identifying whether the user wants to split the team
            Intervention splitIntervention = null;

            if (team.getStatus().ToString().Equals("intervening"))
            {
                foreach (Pin pin in pinList)
                {
                    if (SufficientOverlap(pin) && pin.IsOfType("InterventionPin") && pin != interventionPin)
                    {
                        splitIntervention = ((InterventionPin)pin).getIntervention();
                        break;
                    }
                }
            }

            bool accidentalDrag = false;

            if (splitIntervention != null)
            {
                //Disabling GPS because of its unreliability when the team is split
                if (gpsLocation != null)
                {
                    gpsLocation.setTeamSplit(true);
                }

                //Creating team as a duplicate of the initial team, name it using the number of the intervention it is assigned to
                Team team2 = new Team(team);
                team2.setName(team.getName() + splitIntervention.getInterventionNumber());
                splitIntervention.AddInterveningTeam(team2); //Assigning split team onto the second intervention
                mapSection.Update();                         //Redrawing map so that the split team pin gets recreated with a pointer to the interventionPin it is assigned to
                return;
            }
            else if (interventionPin != null && interventionPin.getInterventionContainer() != null) //Handling the case when the team was in an intervention, choose between keeping it on the intervention (for an accidental drag-and-drop) or removing it from the intervention
            {
                if (SufficientOverlap(interventionPin.getInterventionContainer()))                  //Considered accidental drag-and-drop
                {
                    accidentalDrag = true;
                    interventionPin.getInterventionContainer().PlaceAll();
                }
                else //Remove team from intervention
                {
                    interventionPin.getIntervention().RemoveInterveningTeam(team);
                    interventionPin.SelectGPSLocation();
                    team.setStatus("unavailable");

                    //If it was the last team on that intervention and it has been removed, force redrawing of the map so that the InterventionContainer is removed
                    if (interventionPin.getInterveningTeamsPin().Count == 0)
                    {
                        mapSection.Update();
                        return;
                    }

                    interventionPin = null;
                }
            }
            else if (team.getStatus().ToString().Equals("available"))            //If the team was available and has been moved, set the team as moving
            {
                team.setStatus("moving");
            }

            base.DragStop(Canvas_map, e);

            //Handle situation when the TeamPin is tracked by GPS and the user moves it
            if (gpsLocation != null && GPSLocation.gpsConfigured == true && !accidentalDrag)
            {
                //Create and draw the arrow to the destination point and replace pin at current GPS position
                GPSPinDrop(GPSServices.connectedToServer && gpsLocation.PhoneOnline());
            }
        }