private List <Vehicule> m_vehiculesDuDossier; // Liste de véhicules impliqués dans le dossier, pouvant figurer dans le rapport.

        /// <summary>
        /// COnstructeur du dialogue du rapport.
        /// </summary>
        /// <param name="p_vehiculesDuDossier">Liste des véhicules impliqués au dossier.</param>
        /// <param name="p_typeDeSaisie">Ajout, Affichage, Modification ou Suppression.</param>
        /// <param name="p_rapportAccident">Rapport à modifier, afficher ou supprimer.</param>
        public DlgRapportAccident(List <Vehicule> p_vehiculesDuDossier, TypeDeSaisie p_typeDeSaisie = TypeDeSaisie.Ajout, RapportAccident p_rapportAccident = null)
        {
            TypeDeSaisie = p_typeDeSaisie;
            InitializeComponent();
            m_rapportAccident = p_rapportAccident;
            CreerColonnesDesDataGrids();
            textBoxRemarques.AcceptsReturn = true;
            InitialiserDatePicker();
            Province.AjouterChoixDeProvince(comboBoxProvince);
            m_vehiculesDuDossier = p_vehiculesDuDossier;
            RemplirLesControles(m_vehiculesDuDossier);

            // Si on affiche ou supprime le rapport, les champs sont désactivés afin d'éviter les changements.
            if (TypeDeSaisie == TypeDeSaisie.Affichage || TypeDeSaisie == TypeDeSaisie.Suppression)
            {
                DesactiverTousLesChamps();
            }
            else // On tente de créer ou modifier un rapport d'accident.
            {
                if (dataGridViewVehiculesExclusDuRapport.Rows.Count == 0)
                {
                    buttonAjouterVehicule.Enabled = false;
                }

                if (dataGridViewVehiculesInclusDansRapport.Rows.Count == 0)
                {
                    buttonRetirerVehicule.Enabled = false;
                }
            }
        }
 public Dossier(string p_numero, Statut p_statut, RapportAccident p_rapportAccident, RapportEvenement p_rapportEvenement, RapportEnquete p_rapportEnquete, Destination p_destination, List <Vehicule> p_vehicule, List <Personne> p_personnes)
 {
     Numero           = p_numero;
     Statut           = p_statut;
     RapportAccident  = p_rapportAccident;
     RapportEvenement = p_rapportEvenement;
     RapportEnquete   = p_rapportEnquete;
     Destination      = p_destination;
     Vehicules        = p_vehicule;
     Personnes        = p_personnes;
 }
        /// <summary>
        /// Détermine si les informations saisies sont valides.
        /// </summary>
        /// <returns>True si les informations sont valides, false sinon.</returns>
        protected override bool ChampsValides()
        {
            List <Vehicule> vehiculesImpliques = new List <Vehicule>();

            foreach (DataGridViewRow ligneCourante in dataGridViewVehiculesInclusDansRapport.Rows)
            {
                Vehicule vehiculeCourant = m_vehiculesDuDossier.Find(v =>
                                                                     v.Marque == ligneCourante.Cells[(int)ColonneVoiture.Marque].Value &&
                                                                     v.Modele == ligneCourante.Cells[(int)ColonneVoiture.Modele].Value &&
                                                                     v.NoVehicule == (int)ligneCourante.Cells[(int)ColonneVoiture.NoVehicule].Value &&
                                                                     v.Annee == (int)ligneCourante.Cells[(int)ColonneVoiture.Annee].Value &&
                                                                     v.CodeVehicule == (CodeVehicule)ligneCourante.Cells[(int)ColonneVoiture.Statut].Value /*&&
                                                                                                                                                            * v.Proprietaire ==     (Personne)ligneCourante.Cells[(int)IndexColonnes.Proprietaire].Value*/);

                Debug.Assert(vehiculeCourant != null, "Le véhicule sélectionné n'existe pas.");

                if (vehiculeCourant != null)
                {
                    vehiculesImpliques.Add(vehiculeCourant);
                }
            }

            if (vehiculesImpliques.Count < 1)
            {
                MB.Avertir("Il doit y avoir au moins un véhicule impliqué dans le rapport d'accident.");
                return(false);
            }

            try
            {
                string noCivique       = StringNonVide(textBoxNoCivique, "numéro civique");
                string rue             = StringNonVide(textBoxRue, "rue");
                string codePostal      = StringNonVide(textBoxCodePostal, "code postal").Trim().ToUpper();
                Regex  regexCodePostal = new Regex("^[A-Z][0-9][A-Z][ ]?[0-9][A-Z][0-9]$");

                if (!regexCodePostal.IsMatch(codePostal))
                {
                    MB.Avertir("Le code postal doit avoir le format suivant « A1A1A1 » ou « A1A 1A1 ».");
                    return(false);
                }

                string ville    = StringNonVide(textBoxVille, "ville");
                string province = StringNonVide(comboBoxProvince, "province");
                string pays     = StringNonVide(textBoxPays, "pays");

                Adresse adresse = new Adresse(rue, ville, province, codePostal, pays, noCivique);

                if (dateTimePicker.Value > DateTime.Now)
                {
                    MB.Avertir("La date et heure doit être inférieur à la date et heure actuelle.");
                    return(false);
                }

                DateTime dateEtHeure = dateTimePicker.Value;
                string   remarques   = StringNonVide(textBoxRemarques, "remarques");
                m_rapportAccident = new RapportAccident(Document.Instance.NumProchainRapport(), vehiculesImpliques, adresse, dateEtHeure, remarques);

                return(true);
            }
            catch (ErreurExtraction p_erreurEntreeUtilisateur)
            {
                // L'utilisateur n'a pas bien rempli le formulaire.
                return(false);
            }
        }
 public void SetRapportAccident(RapportAccident p_rapportAccident)
 {
     RapportAccident = p_rapportAccident;
 }