//ajouter dates /// <summary> /// Constructeur de la classe Task /// </summary> /// <param name="Tactivity">Activité relative à la tâche</param> /// <param name="Tastronauts">Liste des astronautes qui effectue la tâche</param> /// <param name="DureeMinute">Durée de la tâche</param> /// <param name="StartHour">Début de la tâche</param> /// <param name="X">Position X</param> /// <param name="Y">Position Y</param> public Task(Activity Tactivity, List<Astronaut> Tastronauts, int DureeMinute, int StartHour, int X, int Y) { Name = Tactivity.Name; Activity = Tactivity; this.DurationMinute = DureeMinute; this.StartHour = StartHour; Astronauts = Tastronauts; this.Xposition = X; this.Yposition = Y; }
public void TaskInfoTest() { int NumberDay = 0; // TODO: initialisez à une valeur appropriée Day target = new Day(NumberDay); // TODO: initialisez à une valeur appropriée List<Astronaut> a = new List<Astronaut>(); Activity act = new Activity("Test"); Task task = new Task(act,a,50,50,10,10); // TODO: initialisez à une valeur appropriée string[] expected = { "", target.ToString(), "0H50", "1H40", task.Name }; // TODO: initialisez à une valeur appropriée string[] actual; actual = target.TaskInfo(task); CollectionAssert.AreEqual(expected, actual); }
public void getInfoTest() { Activity Tactivity = new Activity("Test"); List<Astronaut> Tastronauts = new List<Astronaut>(); int DureeMinute = 120; // TODO: initialisez à une valeur appropriée int StartHour = 130; // TODO: initialisez à une valeur appropriée int X = 0; // TODO: initialisez à une valeur appropriée int Y = 0; // TODO: initialisez à une valeur appropriée Task target = new Task(Tactivity, Tastronauts, DureeMinute, StartHour, X, Y); string[] expected = { "", target.FormatHour(StartHour), target.FormatHour(DureeMinute + StartHour), target.Name }; string[] actual; actual = target.getInfo(); CollectionAssert.AreEqual(expected, actual); }
public void FormatHourTest() { Activity Tactivity = new Activity("Test"); // TODO: initialisez à une valeur appropriée List<Astronaut> Tastronauts = new List<Astronaut>(); // TODO: initialisez à une valeur appropriée int DureeMinute = 130; // TODO: initialisez à une valeur appropriée int StartHour = 150; // TODO: initialisez à une valeur appropriée int X = 0; // TODO: initialisez à une valeur appropriée int Y = 0; // TODO: initialisez à une valeur appropriée Task target = new Task(Tactivity, Tastronauts, DureeMinute, StartHour, X, Y); // TODO: initialisez à une valeur appropriée int Time = DureeMinute+StartHour ; // TODO: initialisez à une valeur appropriée string expected = "4H40"; // TODO: initialisez à une valeur appropriée string actual; actual = target.FormatHour(Time); Assert.AreEqual(expected, actual); }
/// <summary> /// Ajoute une nouvelle Activity à la Category /// </summary> /// <param name="activity">Activity : Activité que l'on souhaite ajouter</param> public void addActivity(Activity activity) { Activities.Add(activity); }
/// <summary> /// Va lire le fichier Xml lancé par l'utilisateur pour une nouvelle mission /// </summary> /// <returns>Un booléen indiquant si le chargement c'est bien passé</returns> private bool NewMission() { this.Astronauts.Clear(); this.Categories.Clear(); this.AstronautList.Items.Clear(); saveToolStripMenuItem.Enabled = true; XmlDocument file = new XmlDocument(); OpenFileDialog openFileDialog1 = new OpenFileDialog(); // Set filter options and filter index. openFileDialog1.Filter = "Text Files (.xml)|*.xml|All Files (*.*)|*.*"; openFileDialog1.FilterIndex = 1; openFileDialog1.Multiselect = false; if (openFileDialog1.ShowDialog() == DialogResult.OK) { try { this.StartMission = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0); file.Load(openFileDialog1.OpenFile()); XmlNode noeud = file.DocumentElement; XmlNodeList nomMission = noeud.SelectNodes("Name"); this.Text = nomMission[0].InnerText; XmlNodeList MapMars = noeud.SelectNodes("Map"); this.Map = MapMars[0].InnerText; try { Image.FromFile(this.Map); } catch (Exception) { MessageBox.Show("Unable to find Map picture : " + this.Map); return false; } XmlNodeList XMap = noeud.SelectNodes("X"); this.xOrigin = int.Parse(XMap[0].InnerText); XmlNodeList YMap = noeud.SelectNodes("Y"); this.yOrigin = int.Parse(YMap[0].InnerText); XmlNode AstronautXml = noeud.SelectSingleNode("Astronauts"); XmlNodeList AstronautsXml = AstronautXml.SelectNodes("Astronaut"); foreach (XmlNode nodeAstro in AstronautsXml) { Astronaut A = new Astronaut(nodeAstro.InnerText); Astronauts.Add(A); } XmlNode ActivityXml = noeud.SelectSingleNode("Activities"); XmlNodeList ActivitiesXml = ActivityXml.ChildNodes; foreach (XmlNode category in ActivitiesXml) { Category c = new Category(category.LocalName); Categories.Add(c); XmlNodeList Activities = category.ChildNodes; foreach (XmlNode activity in Activities) { if (activity.LocalName == "Activity") { Activity a = new Activity(activity.InnerText); c.addActivity(a); } else { Category c2 = new Category(activity.Name); c.addActivity(c2); XmlNodeList SecondaryActivity = activity.ChildNodes; foreach (XmlNode SubActivity in SecondaryActivity) { Activity a2 = new Activity(SubActivity.InnerText); c2.addActivity(a2); } } } } return true; } catch (Exception ex) { MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message); return false; } } else return false; }
/// <summary> /// Va lire un fichier Xml décrivant la mission (Activité, Map...) /// </summary> /// <param name="Path">Le chemin vers un fichier Xml</param> /// <returns>Un booléen indiquant si le chargement c'est bien passé</returns> private bool LoadMissionXml(string Path) { XmlDocument file = new XmlDocument(); try { file.Load(Path); XmlNode noeud = file.DocumentElement; XmlNodeList nomMission = noeud.SelectNodes("Name"); this.Text = nomMission[0].InnerText; XmlNodeList MapMars = noeud.SelectNodes("Map"); this.Map = MapMars[0].InnerText; try { Image.FromFile(this.Map); } catch (Exception) { MessageBox.Show("Unable to find Map picture : " + this.Map); return false; } XmlNodeList XMap = noeud.SelectNodes("X"); this.xOrigin = int.Parse(XMap[0].InnerText); XmlNodeList YMap = noeud.SelectNodes("Y"); this.yOrigin = int.Parse(YMap[0].InnerText); XmlNode AstronautXml = noeud.SelectSingleNode("Astronauts"); XmlNodeList AstronautsXml = AstronautXml.SelectNodes("Astronaut"); foreach (XmlNode nodeAstro in AstronautsXml) { Astronaut A = new Astronaut(nodeAstro.InnerText); Astronauts.Add(A); } XmlNode ActivityXml = noeud.SelectSingleNode("Activities"); XmlNodeList ActivitiesXml = ActivityXml.ChildNodes; foreach (XmlNode category in ActivitiesXml) { Category c = new Category(category.LocalName); Categories.Add(c); XmlNodeList Activities = category.ChildNodes; foreach (XmlNode activity in Activities) { if (activity.LocalName == "Activity") { Activity a = new Activity(activity.InnerText); c.addActivity(a); } else { Category c2 = new Category(activity.Name); c.addActivity(c2); XmlNodeList SecondaryActivity = activity.ChildNodes; foreach (XmlNode SubActivity in SecondaryActivity) { Activity a2 = new Activity(SubActivity.InnerText); c2.addActivity(a2); } } } } return true; } catch (Exception ex) { MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message); return false; } }
/// <summary> /// Action qui se déclenche après le clique sur le bouton Add /// Va ajouter la tâche à l'emploi du temps de la journée /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void buttonAddActivity_Click(object sender, EventArgs e) { if (TypeForm == "adding") //Le if est ici pour l'instant si le traitement diffère entre chaque possibilité { DialogResult result = MessageBox.Show("Do you want to add this task ?", "Confirmation", MessageBoxButtons.YesNo); bool AllAstroFree = true; if (ActivityView.SelectedNode == null || ActivityView.SelectedNode.Parent == null) MessageBox.Show("Select a correct activity"); else if ((int)DurationHour.Value == 0 && (int)DurationMinute.Value==0) { MessageBox.Show("Select a correct duration for this Task"); } else if(AstronautView.CheckedIndices.Count == 0) { MessageBox.Show("Select at least one astronaut"); } else if (richTextBoxDescription.Text.Length > 400) { MessageBox.Show("Error : The description is too long"); } else { if (result == DialogResult.Yes && ActivityView.SelectedNode != null) { MinuteStartSend = (int)StartHour.Value * 60 + (int)MinutesStart.Value; MinuteDurationSend = (int)DurationHour.Value * 60 + (int)DurationMinute.Value; if (MinuteStartSend + MinuteDurationSend <= 1480) { String NodeCategory = ActivityView.SelectedNode.Parent.Text; Category category = Categories.Find(x => x.Name == NodeCategory); ActivitySend = category.Activities.Find(x => x.Name == ActivityView.SelectedNode.Text); SelectedAstronaut = new List<Astronaut>(); foreach (int indice in AstronautView.CheckedIndices) { Astronaut A = Astronauts.Find(x => x.Name == AstronautView.Items[indice].Text); if (AstronautIsFree(A)) SelectedAstronaut.Add(A); else { MessageBox.Show(A.Name + " is not available for this task on this period"); AllAstroFree = false; } } Description = richTextBoxDescription.Text; if (AllAstroFree) { DialogResult = DialogResult.OK; this.Close(); } } else { MessageBox.Show("Error : End of the task exceed 24h40, you can't add a task on 2 days."); } } } } else if (TypeForm == "editing") { DialogResult result = MessageBox.Show("Do you want to edit this task ?", "Confirmation", MessageBoxButtons.YesNo); if (result == DialogResult.Yes) { this.Close(); //Ajouter la tâche sur l'emploi } } }