public void Save() { try { Mouse.OverrideCursor = Cursors.Wait; int projectId = ApplicationState.GetValue <int>(ApplicationVariables.intProjectId); int projectleiderId = ApplicationState.GetValue <Gebruiker>(ApplicationVariables.objGebruiker).ProjectleiderId; dbRepository dbrep = new dbRepository(); dbOriginalRepository dbrepOriginal = new dbOriginalRepository(); MandagenRegistratieDomain.Project project = dbrep.datacontext.Projects.Where(p => p.ProjectId == projectId).FirstOrDefault(); MandagenRegistratieDomain.MDRproject dboproject = dbrepOriginal.datacontext.MDRprojects.Where(p => p.project_NR == project.ProjectNr).FirstOrDefault(); MandagenRegistratieDomain.MDRadressen dboadres = dbrepOriginal.datacontext.MDRadressens.Where(a => a.adres_id == dboproject.adres_id_bouw).FirstOrDefault(); project.Naam = txtProjectnaam.Text; project.Postcode = txtPostcodeCijfers.Text; // +txtPostcodeLetters.Text; project.Huisnummer = txtHuisnummer.Text; project.Adres = txtAdres.Text; // loggen dat het gewijzigd is Logging logging = new Logging(); // projecteigenaarschap wijzigen, if wanted if ((int)cbProjectleiders2.SelectedValue != projectleiderId && projectleiderId == project.ProjectleiderId) { // waarschuwen en alleen doorvoeren als akkoord MessageBoxResult mr = MessageBox.Show("Na wijziging eigenaarschap kunt u geen aanpassingen meer doen!", "Let op!", MessageBoxButton.OKCancel); if (mr == MessageBoxResult.OK) { string logregel1 = string.Empty; logregel1 += "Projectleider overdracht|Van:" + project.ProjectleiderId + "," + dbrep.GetProjectleider(project.ProjectleiderId).Gebruikersnaam; logregel1 += "|Naar:" + cbProjectleiders2.SelectedValue.ToString() + "," + dbrep.GetProjectleider((int)cbProjectleiders2.SelectedValue).Gebruikersnaam; logging.Log(logregel1); project.ProjectleiderId = (int)cbProjectleiders2.SelectedValue; } } // alleen eigen mandagenrecords wijzigen, if wanted if (dtSelectedDate != DateTime.MinValue && dtSelectedDateEnd != DateTime.MinValue) { // voeg 24 uur aan de einddatum toe dtSelectedDateEnd = dtSelectedDateEnd.AddHours(24); string logregel1 = string.Empty; logregel1 += "Uren overdracht"; logregel1 += "|Aan:" + cbProjectleiders.SelectedValue.ToString() + "," + dbrep.GetProjectleider((int)cbProjectleiders.SelectedValue).Gebruikersnaam; logregel1 += "|Periode:" + dtSelectedDate.ToString("yyyy-MM-dd") + "-" + dtSelectedDateEnd.ToString("yyyy-MM-dd"); List <Mandagen> listMandagen = dbrep.datacontext.Mandagens.Where(m => m.ProjectId == projectId).ToList(); string urengewijzigd = Functies.CalculateUrenExact(listMandagen.Where(m => m.Begintijd >= dtSelectedDate && m.Eindtijd <= dtSelectedDateEnd && m.ProjectleiderId == projectleiderId).ToList()); if (dtSelectedDateEnd >= dtSelectedDate) { foreach (Mandagen mandag in dbrep.datacontext.Mandagens.Where(m => m.ProjectId == projectId && m.Begintijd >= dtSelectedDate && m.Eindtijd <= dtSelectedDateEnd && m.ProjectleiderId == projectleiderId)) { mandag.ProjectleiderId = (int)cbProjectleiders.SelectedValue; } } logregel1 += "|Uren gewijzigd:" + (string.IsNullOrEmpty(urengewijzigd) ? "0" : urengewijzigd); logging.Log(logregel1); } //dbrep.SaveProject(project); dbrep.datacontext.SubmitChanges(); if (dboadres != null) { // postcode if (!string.IsNullOrWhiteSpace(txtPostcodeCijfers.Text)) { try { if (txtPostcodeCijfers.Text.Length >= 6) { dboadres.postcode_cijfers = Convert.ToInt32(txtPostcodeCijfers.Text.Substring(0, 4)); dboadres.postcode_letters = txtPostcodeCijfers.Text.Substring(4).Trim(); } else { MessageBox.Show("Postcode heeft een onjuiste format. Gegevens worden opgeslagen zonder de postcode"); } } catch { MessageBox.Show("Postcode heeft een onjuiste format. Gegevens worden opgeslagen zonder de postcode"); } } else { dboadres.postcode_cijfers = null; dboadres.postcode_letters = string.Empty; } dboadres.straat_1 = txtAdres.Text; dboadres.huis_postbus_nummer = txtHuisnummer.Text; dboadres.plaats = txtPlaats.Text; dboadres.land = txtLand.Text; } if (dboproject != null) { dboproject.aannemer_projectnummer = txtProjectcodeExtern.Text; dboproject.aannemer_contractnummer = txtProjectContractnummer.Text; dboproject.nacalculatiecode = txtProjectNacalculatiecode.Text; } dbrepOriginal.datacontext.SubmitChanges(); // na het saven terug in history PageGoBack(); Mouse.OverrideCursor = null; } catch (Exception ex) { MessageBox.Show(ex.Message); } }
/// <summary> /// /// </summary> public void Load() { Mouse.OverrideCursor = Cursors.Wait; int projectId = ApplicationState.GetValue <int>(ApplicationVariables.intProjectId); int projectleiderId = ApplicationState.GetValue <Gebruiker>(ApplicationVariables.objGebruiker).ProjectleiderId; dbRepository dbrep = new dbRepository(); MandagenRegistratieDomain.Project project = dbrep.GetProject(ApplicationState.GetValue <int>(ApplicationVariables.intProjectId)); dbOriginalRepository dbrepOriginal = new dbOriginalRepository(); MDRpersoon persoon = dbrepOriginal.GetContact(dbrep.GetProjectleider(project.ProjectleiderId).ContactIdOrigineel); MandagenRegistratieDomain.MDRproject dboproject = dbrepOriginal.datacontext.MDRprojects.Where(p => p.project_NR == project.ProjectNr).FirstOrDefault(); MandagenRegistratieDomain.MDRadressen dboadres = dbrepOriginal.datacontext.MDRadressens.Where(a => a.adres_id == dboproject.adres_id_bouw).FirstOrDefault(); lblProjectNr.Content = project.ProjectNr.ToString(); // dbrepOriginal.GetProject((int)project.ProjectNr).project_NR.ToString(); if (dboadres != null) { txtPostcodeCijfers.Text = (dboadres.postcode_cijfers.HasValue ? dboadres.postcode_cijfers.Value.ToString() : "") + dboadres.postcode_letters; //txtPostcodeLetters.Text = ; txtHuisnummer.Text = dboadres.huis_postbus_nummer + dboadres.huisnummer_toevoeging; txtAdres.Text = dboadres.straat_1; if (dboadres.straat_1.Length - txtHuisnummer.Text.Length > 0) { AdresLookup = dboadres.straat_1.Substring(0, dboadres.straat_1.Length - txtHuisnummer.Text.Length).Trim(); } else { AdresLookup = ""; } txtPlaats.Text = dboadres.plaats; txtLand.Text = dboadres.land; } txtProjectnaam.Text = dboproject.naam_project; if (persoon != null) { lblProjectleider.Content = (persoon.voornaam + " " + persoon.tussenvoegsel + " " + persoon.achternaam).ToStringTrimmed(); } else { lblProjectleider.Content = ""; } txtProjectcodeExtern.Text = dboproject.aannemer_projectnummer; txtProjectContractnummer.Text = dboproject.aannemer_contractnummer; txtProjectNacalculatiecode.Text = dboproject.nacalculatiecode; // set dropdownlist List <Gebruiker> listProjectleiders = new List <Gebruiker>(); listProjectleiders = dbrep.GetProjectleiders().Where(g => g.IsProjectleider).ToList(); cbProjectleiders.ItemsSource = listProjectleiders; cbProjectleiders.DisplayMemberPath = "Gebruikersnaam"; cbProjectleiders.SelectedValuePath = "ProjectleiderId"; cbProjectleiders.SelectedValue = ApplicationState.GetValue <Gebruiker>(ApplicationVariables.objGebruiker).ProjectleiderId; // set projectleiders voor eigenaarschap cbProjectleiders2.ItemsSource = listProjectleiders; cbProjectleiders2.DisplayMemberPath = "Gebruikersnaam"; cbProjectleiders2.SelectedValuePath = "ProjectleiderId"; cbProjectleiders2.SelectedValue = project.ProjectleiderId; // set zichtbaarheid if (project.ProjectleiderId == projectleiderId) { cbProjectleiders2.IsEnabled = true; } // set periodes List <cPeriode> listPeriodes = new List <cPeriode>(); List <Mandagen> listMandagen = dbrep.datacontext.Mandagens.Where(m => m.ProjectId == projectId).ToList(); List <Gebruiker> listProjectleiders2 = dbrep.GetProjectleiders(); // set huidige projectleider lblHuidigeProjectEigenaar.Content = listProjectleiders2.Where(p => p.ProjectleiderId == project.ProjectleiderId).FirstOrDefault().Gebruikersnaam; // default het scherm onzichtbaar maken // wpUrenOverdragen.Visibility = System.Windows.Visibility.Collapsed; // greyen in plaats van onzichtbaar maken lblBeginDatum.IsEnabled = false; cbProjectleiders.IsEnabled = false; // standaard zo imgCalendarOn.Visibility = System.Windows.Visibility.Collapsed; imgCalendar.Visibility = System.Windows.Visibility.Visible; if (listMandagen.Where(m => m.Begintijd != m.Eindtijd).Count() > 0) { } cPeriode cp = new cPeriode(); int previousProjectleiderId = 0; int counter = 0; List <Mandagen> listMandagenByDate = listMandagen.Where(m => m.Begintijd != m.Eindtijd).OrderBy(m => m.Begintijd).ToList(); foreach (Mandagen mandag in listMandagenByDate) { // count the loop counter++; int currentProjectleiderId = mandag.ProjectleiderId; //alleen de eerste keer startdatum standaard instellen if (previousProjectleiderId == 0) { cp.periodeVan = mandag.Begintijd.ToString("dd-MM-yyyy"); cp.periodeStart = mandag.Begintijd; } // als de huidige projectleider een andere is dan de vorige // dan vorige opslaan, en verder gaan met een nieuwe if (currentProjectleiderId != previousProjectleiderId && previousProjectleiderId != 0) { listPeriodes.Add(cp); cp = new cPeriode(); cp.periodeVan = mandag.Begintijd.ToString("dd-MM-yyyy"); cp.periodeStart = mandag.Begintijd; cp.periodeTot = mandag.Eindtijd.ToString("dd-MM-yyyy"); cp.periodeProjectleider = listProjectleiders2.FirstOrDefault(pl => pl.ProjectleiderId == mandag.ProjectleiderId).Gebruikersnaam; cp.periodeStop = mandag.Eindtijd; } // anders alleen verder gaan met de einddatum else { cp.periodeTot = mandag.Eindtijd.ToString("dd-MM-yyyy"); cp.periodeProjectleider = listProjectleiders2.FirstOrDefault(pl => pl.ProjectleiderId == mandag.ProjectleiderId).Gebruikersnaam; cp.periodeStop = mandag.Eindtijd; } // als het de laatste is, dan sowieso opslaaan if (listMandagenByDate.Count == counter) { listPeriodes.Add(cp); } // sla de previousProjectleiderID op previousProjectleiderId = mandag.ProjectleiderId; // als ik een periode heb, kan ik uren overzetten, anders heeft dat scherm uberhaupt geen nut if (mandag.ProjectleiderId == projectleiderId) { wpUrenOverdragen.Visibility = System.Windows.Visibility.Visible; // niet meer ge-greyd lblBeginDatum.IsEnabled = true; cbProjectleiders.IsEnabled = true; // calendar plaatjes verwisselen imgCalendarOn.Visibility = System.Windows.Visibility.Visible; imgCalendar.Visibility = System.Windows.Visibility.Collapsed; dtFirstPossibleDate = listMandagen.Where(m => m.ProjectleiderId == projectleiderId && m.Begintijd != m.Eindtijd).OrderBy(m => m.Begintijd).FirstOrDefault().Begintijd; dtLastPossibleDate = listMandagen.Where(m => m.ProjectleiderId == projectleiderId && m.Begintijd != m.Eindtijd).OrderByDescending(m => m.Eindtijd).FirstOrDefault().Eindtijd; // reset selected date on Load dtSelectedDate = dtFirstPossibleDate; dpBeginDatum.SelectedDate = dtSelectedDate; lblBeginDatum.Content = dtSelectedDate.ToString("dd-MM-yyyy"); } } //foreach (Gebruiker pl in listProjectleiders2.Where(p => listMandagen.Any(m => m.ProjectleiderId == p.ProjectleiderId))) //{ // cPeriode cp = new cPeriode(); // cp.periodeVan = listMandagen.Where(m => m.ProjectleiderId == pl.ProjectleiderId && m.Begintijd != m.Eindtijd).OrderBy(m => m.Begintijd).FirstOrDefault().Begintijd.ToString("dd-MM-yyyy"); // cp.periodeTot = listMandagen.Where(m => m.ProjectleiderId == pl.ProjectleiderId && m.Begintijd != m.Eindtijd).OrderByDescending(m => m.Eindtijd).FirstOrDefault().Eindtijd.ToString("dd-MM-yyyy"); // cp.periodeProjectleider = pl.Gebruikersnaam; // cp.periodeStart = listMandagen.Where(m => m.ProjectleiderId == pl.ProjectleiderId && m.Begintijd != m.Eindtijd).OrderBy(m => m.Begintijd).FirstOrDefault().Begintijd; // cp.periodeStop = listMandagen.Where(m => m.ProjectleiderId == pl.ProjectleiderId && m.Begintijd != m.Eindtijd).OrderByDescending(m => m.Eindtijd).FirstOrDefault().Eindtijd; // listPeriodes.Add(cp); // // als ik een periode heb, kan ik uren overzetten, anders heeft dat scherm uberhaupt geen nut // if (pl.ProjectleiderId == projectleiderId) // { // wpUrenOverdragen.Visibility = System.Windows.Visibility.Visible; // // niet meer ge-greyd // lblBeginDatum.IsEnabled = true; // cbProjectleiders.IsEnabled = true; // // calendar plaatjes verwisselen // imgCalendarOn.Visibility = System.Windows.Visibility.Visible; // imgCalendar.Visibility = System.Windows.Visibility.Collapsed; // dtFirstPossibleDate = listMandagen.Where(m => m.ProjectleiderId == pl.ProjectleiderId && m.Begintijd != m.Eindtijd).OrderBy(m => m.Begintijd).FirstOrDefault().Begintijd; // dtLastPossibleDate = listMandagen.Where(m => m.ProjectleiderId == pl.ProjectleiderId && m.Begintijd != m.Eindtijd).OrderByDescending(m => m.Eindtijd).FirstOrDefault().Eindtijd; // // reset selected date on Load // dtSelectedDate = dtFirstPossibleDate; // dpBeginDatum.SelectedDate = dtSelectedDate; // lblBeginDatum.Content = dtSelectedDate.ToString("dd-MM-yyyy"); // } //} itemsPeriodes.ItemsSource = listPeriodes.OrderBy(p => p.periodeStart).ThenBy(p => p.periodeStop).ToList(); Mouse.OverrideCursor = null; }