/// <summary> /// Controleert of de opmerking niet al werd gemaakt. En indien deze al gemaakt werd of dit door een andere chauffeur wordt gedaan of door dezelfde chauffeur /// </summary> /// <param name="nieuwCommentaar">Opmerking die gecontroleerd moet worden van het type Comment</param> /// <returns>Task</returns> private async Task ControleerOpmerking() { List <Comment> opmerkingen = await OverzichtOpmerkingen.GetOverzichtComments(); IEnumerable <Comment> dubbeleOpmerkingen = from evtOpmerking in opmerkingen where (evtOpmerking.ObjectCode.Equals(nieuwCommentaar.ObjectCode) && evtOpmerking.DefectCode.Equals(nieuwCommentaar.DefectCode)) select evtOpmerking; List <Comment> dubbeleOpmerkingenlijst = dubbeleOpmerkingen.ToList <Comment>(); bool doorgaanMetBewerken = false; if (dubbeleOpmerkingenlijst.Count == 0) { doorgaanMetBewerken = !await CommentaarToevoegen(nieuwCommentaar); } else { foreach (Comment dubbele in dubbeleOpmerkingenlijst) { string bericht; if (dubbele.Chauffeur == nieuwCommentaar.Chauffeur) { bericht = String.Format("U heeft eerder al een rijbericht aangemaakt voor dit onderdeel. Wilt u deze rijberichten samenvoegen?\nObjectcode: {0}, Defectcode: {1}\nOmschrijving: {2}.", dubbele.ObjectCode, dubbele.DefectCode, dubbele.Omschrijving); } else { bericht = String.Format("Chauffeur {0} heeft eerder een rijbericht gemaakt voor dit onderdeel. Wilt u deze rijberichten samenvoegen?\nObjectcode: {1}, Defectcode: {2}\nOmschrijving: {3}.", dubbele.Chauffeur, dubbele.ObjectCode, dubbele.DefectCode, dubbele.Omschrijving); } //Melding weergeven indien er dubbele commentaren gevonden zijn MessageDialog okAnnuleer = new MessageDialog(bericht, "Dubbele rijberichten"); okAnnuleer.Commands.Add(new UICommand("Samenvoegen")); okAnnuleer.Commands.Add(new UICommand("Doorgaan met bewerken")); okAnnuleer.Commands.Add(new UICommand("Annuleren")); var resultaat = await okAnnuleer.ShowAsync(); if (resultaat.Label.Equals("Samenvoegen")) { dubbele.Omschrijving += String.Format("{0}Toevoeging chauffeur {1}: {2}.", Environment.NewLine, nieuwCommentaar.Chauffeur, nieuwCommentaar.Omschrijving); await CommentaarAanpassen(dubbele); } else if (resultaat.Label.Equals("Opmerking aanmaken annuleren")) { doorgaanMetBewerken = true; } } } if (!doorgaanMetBewerken) { this.Frame.Navigate(typeof(OverzichtOpmerkingen)); } }
/// <summary> /// Deze constructor vult een GridView op. /// Daarnaast laad deze constructor een User Control in en toont deze op het scherm. /// </summary> public Hoofdscherm() { this.InitializeComponent(); VulInspectieGridView(); UserControls.VisueleAuto ucWagen = new UserControls.VisueleAuto(); grUserControl.Children.Add(ucWagen); OverzichtOpmerkingen.HaalCommentsOp(); ProblemenTest.HaalCodesOp(); }
/// <summary> /// Het updaten van een opmerking /// </summary> /// <param name="commentaar">De opmerking die geupdate moet worden van het type comment</param> private async Task CommentaarAanpassen(Comment commentaar) { if (await LocalDB.database.UpdateComment(commentaar)) { // String boodschap = "Uw probleem werd aangepast"; OverzichtOpmerkingen.UpdateComment(commentaar); } else { lblError.Foreground = (SolidColorBrush)Application.Current.Resources["DefaultTextErrorColor"]; lblError.Text = "Er heeft zich een fout voorgedaan. Probeer later opnieuw of neem contact op met een beheerder."; } }
/// <summary> /// Het aanmaken van een nieuwe opmerking /// </summary> /// <param name="commentaar">De opmerking die aangemaakt moet worden van het type comment</param> private async Task <bool> CommentaarToevoegen(Comment commentaar) { Comment toegevoegdeCommentaar = await LocalDB.database.AddComment(commentaar); if (toegevoegdeCommentaar != null) { OverzichtOpmerkingen.AddComment(toegevoegdeCommentaar); return(true); } else { lblError.Foreground = (SolidColorBrush)Application.Current.Resources["DefaultTextErrorColor"]; lblError.Text = "Er heeft zich een fout voorgedaan. Probeer later opnieuw of neem contact op met een beheerder."; } return(false); }
/// <summary> /// Deze methode maakt het mogelijk om foto's te nemen. Deze foto's zullen van PNG formaat zijn met een medium resolutie. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void BtnMaakFoto_Click(object sender, RoutedEventArgs e) { await GetphotoFolder(); CameraCaptureUI fotoScherm = new CameraCaptureUI(); fotoScherm.PhotoSettings.Format = CameraCaptureUIPhotoFormat.Png; //.png is veel lichter fotoScherm.PhotoSettings.MaxResolution = CameraCaptureUIMaxPhotoResolution.HighestAvailable; fotoScherm.PhotoSettings.AllowCropping = false; var foto = await fotoScherm.CaptureFileAsync(CameraCaptureUIMode.Photo); //Enkel een foto maken if (foto != null) { int messageID; if (OverzichtOpmerkingen.getSelectedIndex() == 0) { messageID = OverzichtOpmerkingen.getSelectedIndex(); } else { messageID = await LocalDB.database.getAantalCommentaren(); } CompleteAuto ca = await LocalDB.database.GetToegewezenAuto(); User gebruiker = LocalDB.database.GetIngelogdeGebruiker(); // if-structuur werkt niet, als er te snel foto's genomen worden doet hij het nog altijd if (photoFolder.GetFileAsync(ca.Number + "_" + messageID + "_" + foto.DateCreated.ToString("ddMMyyyy-HHmmss") + "_" + gebruiker.Username + ".png").Equals(true)) { await foto.RenameAsync(ca.Number + "_" + messageID + "_" + foto.DateCreated.ToString("ddMMyyyy-HHmmss") + "_" + gebruiker.Username + "(" + photoCounter + ").png"); photoCounter++; var fileStream = await foto.OpenAsync(Windows.Storage.FileAccessMode.Read); await foto.MoveAsync(photoFolder); } else { await foto.RenameAsync(ca.Number + "_" + messageID + "_" + foto.DateCreated.ToString("ddMMyyyy-HHmmss") + "_" + gebruiker.Username + ".png"); photoCounter = 0; var fileStream = await foto.OpenAsync(Windows.Storage.FileAccessMode.Read); await foto.MoveAsync(photoFolder); } } }
/// <summary> /// Deze methode maakt het mogelijk om video's te nemen. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void BtnMaakVideo_Click(object sender, RoutedEventArgs e) { await GetVideoFolder(); var videoScherm = new CameraCaptureUI(); videoScherm.VideoSettings.Format = CameraCaptureUIVideoFormat.Mp4; videoScherm.VideoSettings.MaxResolution = CameraCaptureUIMaxVideoResolution.HighestAvailable; var video = await videoScherm.CaptureFileAsync(CameraCaptureUIMode.Video); //Video opnemen if (video != null) { int messageID; if (OverzichtOpmerkingen.getSelectedIndex() == 0) { messageID = OverzichtOpmerkingen.getSelectedIndex(); } else { messageID = await LocalDB.database.getAantalCommentaren(); } User gebruiker = LocalDB.database.GetIngelogdeGebruiker(); CompleteAuto toegewezenWagen = await LocalDB.database.GetToegewezenAuto(); // if-structuur werkt niet, als er te snel foto's genomen worden doet hij het nog altijd if (videoFolder.GetFileAsync(toegewezenWagen.Number + "_" + messageID + "_" + video.DateCreated.ToString("ddMMyyyy-HHmmss") + "_" + gebruiker.Username + ".mp4").Equals(true)) { await video.RenameAsync(toegewezenWagen.Number + "_" + messageID + "_" + video.DateCreated.ToString("ddMMyyyy-HHmmss") + "_" + gebruiker.Username + "(" + videoCounter + ").mp4"); videoCounter++; } else { await video.RenameAsync(toegewezenWagen.Number + "_" + messageID + "_" + video.DateCreated.ToString("ddMMyyyy-HHmmss") + "_" + gebruiker.Username + ".mp4"); videoCounter = 0; } var fileStream = await video.OpenAsync(Windows.Storage.FileAccessMode.Read); await video.MoveAsync(videoFolder); } }
/// <summary> /// Haalt een lijst met opmerkingen op en geeft de 5 meest recente opmerkingen weer op het bijlagenscherm. /// </summary> /// <returns></returns> private async Task VulRecenteCommentaren() { List <Comment> opmerkingen = await OverzichtOpmerkingen.GetOverzichtComments(); if (opmerkingen.Count >= 5) { gvwOpmerkingen.ItemsSource = opmerkingen.GetRange(0, 5); } else { if (opmerkingen.Count > 0) { gvwOpmerkingen.ItemsSource = opmerkingen; } else { lblOpmerkingen.Text = "Er zijn geen rijberichten aanwezig voor de toegekende wagen."; } } }
/// <summary> /// Deze methode kan een opmerking verwijderd worden /// Dit gebeurd enkel als Ja gekozen wordt in de messagedialog /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void BtnVerwijderen_Click(object sender, RoutedEventArgs e) { bool? result = null; MessageDialog okAnnuleer = new MessageDialog("Weet u zeker dat u dit rijbericht wil verwijderen?", "Rijbericht Verwijderen"); okAnnuleer.Commands.Add(new UICommand("Ja", new UICommandInvokedHandler((cmd) => result = true))); okAnnuleer.Commands.Add(new UICommand("Nee")); await okAnnuleer.ShowAsync(); if (result == true) { if (await LocalDB.database.DeleteComment(opmerking)) { OverzichtOpmerkingen.DeleteComment(); this.Frame.Navigate(typeof(OverzichtOpmerkingen)); } else { lblError.Foreground = (SolidColorBrush)Application.Current.Resources["DefaultTextErrorColor"]; lblError.Text = "Er heeft zich een fout voorgedaan. Probeer later opnieuw of neem contact op met een beheerder."; } } }
/// <summary> /// Deze methode geeft een lijst van opmerkingen door naar de web service. /// De web service gebruikt deze gegevens om een .CSV-bestand te maken /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void BtnOpslaan_Click(object sender, RoutedEventArgs e) { btnSynchroniseren.IsEnabled = false; prSynchroniseren.IsActive = true; lblBoodschap.Text = "Even geduld. Gegevens worden op dit moment verstuurd..."; lblBoodschap.Visibility = Windows.UI.Xaml.Visibility.Visible; if (!swtManierOpslag.IsOn) { try { await CopyFiles.copyPhotosToUSB(); await CopyFiles.copyVideosToUSB(); if (await LocalDB.database.SynchroniseerNaarUSB()) { lblBoodschap.Text = "De gegevens zijn met succes verstuurd naar de USB!"; } else { lblBoodschap.Text = "Er is iets fout gelopen. Controleer of u een opslagmedium ingestoken heeft..."; } } catch (Exception) { lblBoodschap.Text = "Er is iets fout gelopen. Controleer of u een opslagmedium ingestoken heeft..."; } } else { await CopyFiles.copyPhotosViaNetwork(); await CopyFiles.copyVideosViaNetwork(); List <String> lijstGegevens = new List <String>(); List <Comment> opmerkingen = await OverzichtOpmerkingen.GetOverzichtComments(); List <string> lijstStringGegevens = new List <string>(); foreach (Comment opmerking in opmerkingen) { lijstStringGegevens.Add("Chauffeur: " + opmerking.Chauffeur + ", OpmperkingID: " + opmerking.Id.ToString() + ", Aangemaakt op: " + opmerking.Datum.ToString("dd/MM/yyyy HH:mm") + ", Objectcode: " + opmerking.ObjectCode + ", Defectcode: " + opmerking.DefectCode + ", Omschrijving: " + opmerking.Omschrijving); } ArrayOfString aosGegevens = new ArrayOfString(); //Een ArrayOfString is nodig voor de web service aosGegevens.AddRange(lijstStringGegevens); var avAuto = await LocalDB.database.GetToegewezenAuto(); string datum = String.Format("Wagen {0} - {1}-{2}-{3} {4}h{5}m", avAuto.Number, DateTime.Now.Day, DateTime.Now.Month, DateTime.Now.Year, DateTime.Now.Hour, DateTime.Now.Minute); string bestandsNaam = String.Format("{0} opmerkingen.csv", datum); //await CopyFiles.copyVideosViaNetwork(); lblBoodschap.Text = "Videos uploaden"; if (await LocalDB.database.SetMaakSVCvoorWebSync(aosGegevens, bestandsNaam)) { lblBoodschap.Text = "De gegevens zijn met succes verstuurd naar de server!"; } else { lblBoodschap.Text = "Er is iets fout gelopen. Controleer of u met het juiste netwerk verbonden bent..."; } } btnSynchroniseren.IsEnabled = true; prSynchroniseren.IsActive = false; }