public void ReLoad(List <int> listVakmannen2, DateTime datum) { dbRepository dbrep = new dbRepository(); dbOriginalRepository dbo = new dbOriginalRepository(); DbTools dbtools = new DbTools(); // haal alle mandegen van deze week //Logfile.Log("Haal alle mandagen op (database)"); // risky business, idem zie projectoverzicht List <Mandagen> listMandagenTotal = dbrep.datacontext.Mandagens.Where(m => m.Begintijd >= datum && m.Eindtijd <= datum.AddDays(1) && m.Begintijd != m.Eindtijd).ToList(); foreach (Control control in spUren.Children) { if (control.GetType() == typeof(Button)) { // per dag extra tooltip informatie: //string strTooltip = string.Empty; StackPanel strTooltip = new StackPanel(); //Logfile.Log("volgende dag, dag " + i.ToString()); // filter alleen de mandagen voor vandaag, // van de huidige vakman waar we naar kijken //Logfile.Log("filter mandagen"); Button lblDag = (Button)control; vwVakman objVakman = ((vwVakman)((List <object>)lblDag.Tag)[0]); DateTime objDatum = ((DateTime)((List <object>)lblDag.Tag)[1]); if (objDatum == datum && listVakmannen2.Contains(objVakman.VakmanId)) { // EXPERIMENT uitzetten LET OP: Juraci List <Mandagen> listMandagen = listMandagenTotal.Where(m => m.VakmanId == objVakman.VakmanId && m.Begintijd >= objDatum && m.Eindtijd <= objDatum.AddDays(1)).ToList(); // als in deze pool van mandagen een aanvraag zit: // vandaag, ander project, geen projectleider, niet bevestigd (dus aanvraag) //Logfile.Log("filter aanvragen"); //List<Mandagen> listAanvragen = listMandagenTotal.Where(m => m.VakmanId == objVakman.VakmanId && m.Begintijd >= dtDag.AddDays(i) && m.Eindtijd <= dtDag.AddDays(i + 1) && !m.Status).ToList(); //long totalTicks = 0; bool hasAanvraag = false; int totalHours = 0; int totalMinutes = 0; // extra stukje als experiment LET OP: Juraci //totalHours = listMandagenTotal.Where(m => m.Status && m.VakmanId == objVakman.VakmanId && m.Begintijd >= dtDag.AddDays(i) && m.Eindtijd <= dtDag.AddDays(i + 1)).Sum(m => m.Uren); //totalMinutes = listMandagenTotal.Where(m => m.Status && m.VakmanId == objVakman.VakmanId && m.Begintijd >= dtDag.AddDays(i) && m.Eindtijd <= dtDag.AddDays(i + 1)).Sum(m => m.Minuten); //hasAanvraag = listMandagenTotal.Any(m => !m.Status && m.VakmanId == objVakman.VakmanId && m.Begintijd >= dtDag.AddDays(i) && m.Eindtijd <= dtDag.AddDays(i + 1)); strTooltip = dbtools.AddTooltipAanvraagAll(dbtools.GetVakman(objVakman), new Project(), objDatum, false, true); hasAanvraag = listMandagen.Any(a => !a.Status); totalHours = listMandagen.Sum(a => a.Uren); totalMinutes = listMandagen.Sum(a => a.Minuten); //foreach (Mandagen mandag in listMandagen) //{ // //Logfile.Log("volgende mandag"); // // bereken de som der uren // //ALLEEN ALS HET EEN BEVESTIGD UUR IS // if (mandag.Status) // { // //long lnMandagTicks = (mandag.Eindtijd.Ticks - mandag.Begintijd.Ticks); // //totalTicks += lnMandagTicks; // //TimeSpan tsMandag = TimeSpan.FromTicks(lnMandagTicks); // //Logfile.Log("haal project titel bij daan (database)"); // MDRproject objProject = dbo.GetProject((int)mandag.Project.ProjectNr, true); // //Logfile.Log("bereken uren"); // totalHours += mandag.Uren; // totalMinutes += mandag.Minuten; // //Logfile.Log("set tooltip"); // if (objProject != null) // { // strTooltip += Environment.NewLine; // //strTooltip += "(" + ((int)Math.Ceiling(tsMandag.TotalHours)).ToString() + "u) " + objProject.project_NR.ToString(5) + " " + objProject.naam_project; // strTooltip += "(" + mandag.Uren.ToString() + ":" + (mandag.Minuten < 10 ? "0" : "") + mandag.Minuten.ToString() + ") " + objProject.project_NR.ToString(5) + " " + objProject.naam_project; // } // } // // als de betreffende mandag een aanvraag is // // OF er een aanvraag is die deze overlapt qua tijden, voor een ander project is, maar voor dezelfde vakman, en nog niet geannulleerd dus lopende aanvraag // //if ((!mandag.Status && !mandag.Geannulleerd) || listAanvragen.Any(a => a.Eindtijd > mandag.Begintijd && a.Begintijd < mandag.Eindtijd && a.ProjectId != mandag.ProjectId && a.VakmanId == mandag.VakmanId && !a.Geannulleerd)) // //if ((!mandag.Status && mandag.ProjectleiderId == ApplicationState.GetValue<Gebruiker>(ApplicationVariables.objGebruiker).ProjectleiderId) || (!mandag.Status && !mandag.Geannulleerd && mandag.ProjectleiderId != ApplicationState.GetValue<Gebruiker>(ApplicationVariables.objGebruiker).ProjectleiderId)) // if (!mandag.Status) // { // hasAanvraag = true; // } //} //// CHECKECN //Logfile.Log("klaar met loopje mandagen"); //TimeSpan totalTimespan = TimeSpan.FromTicks(totalTicks); lblDag.Width = 24; lblDag.Height = 17; lblDag.Margin = new Thickness(2, 2, 2, 2); lblDag.FontSize = 11; lblDag.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Right; lblDag.Padding = new Thickness(0, -1, 2, 0); //Logfile.Log("haal contact bij daan (database)"); MDRpersoon objPersoon = dbo.GetContact(objVakman.ContactIdOrigineel, true); //Logfile.Log("toon naam"); lblDag.ToolTip = ToonNaam(objPersoon) + strTooltip; int totalHoursRounded = 0; //totalHoursRounded = (int)Math.Ceiling(totalTimespan.TotalHours); int minutesRemainder = totalMinutes % 60; //Logfile.Log("bereken totaal uren om te tonen"); totalHoursRounded = totalHours + (int)((totalMinutes - minutesRemainder) / 60) + (minutesRemainder == 0 ? 0 : 1); //Logfile.Log("bereken kleuren en andere toon opties"); lblDag.Content = totalHoursRounded == 0 ? "" : totalHoursRounded.ToString(); bool blnUseInvisibleColorsAKASwitchColors = false; // 0 niet tonen if (totalHoursRounded == 0 && !hasAanvraag) { blnUseInvisibleColorsAKASwitchColors = true; //lblDag.Visibility = System.Windows.Visibility.Hidden; } else { HasHours = true; } List <object> tag = new List <object>(); tag.Add(objVakman); tag.Add(objDatum); lblDag.Tag = tag; // END CHECKEN // standaard kleuren van de border if (weeknummer % 2 == 0) { if (blnUseInvisibleColorsAKASwitchColors) { // use this color to make it invisible (same color as background) lblDag.BorderBrush = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFD8E4BC")); } else { // original color lblDag.BorderBrush = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFFFFFFF")); } } else { if (blnUseInvisibleColorsAKASwitchColors) { // use this color to make it invisible (same color as background) lblDag.BorderBrush = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFFFFFFF")); } else { lblDag.BorderBrush = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFD8E4BC")); } } // zwarte rand maken bij een aanvraag if (hasAanvraag) { double[] dimensions = new double[] { 2, 2 }; Rectangle dottedRectangle = new Rectangle(); dottedRectangle.Stroke = new SolidColorBrush(Colors.Gray); dottedRectangle.SnapsToDevicePixels = true; dottedRectangle.Height = 2; dottedRectangle.StrokeThickness = 2; dottedRectangle.Height = 24; dottedRectangle.Width = 45; dottedRectangle.StrokeDashArray = new DoubleCollection(dimensions); VisualBrush vb = new VisualBrush(); vb.Visual = dottedRectangle; lblDag.BorderBrush = vb; // new SolidColorBrush(Colors.Black); // (SolidColorBrush)(new BrushConverter().ConvertFrom("#00000000")); } //Logfile.Log("voeg de dag toe"); } } } //Logfile.Log("klaar met vakmannen"); }
public void Load() { DbTools dbtools = new DbTools(); // datums onder tooltip lblMa.ToolTip = GetDagTooltip(dtDag); lblDi.ToolTip = GetDagTooltip(dtDag.AddDays(1)); lblWo.ToolTip = GetDagTooltip(dtDag.AddDays(2)); lblDo.ToolTip = GetDagTooltip(dtDag.AddDays(3)); lblVr.ToolTip = GetDagTooltip(dtDag.AddDays(4)); lblZa.ToolTip = GetDagTooltip(dtDag.AddDays(5)); lblZo.ToolTip = GetDagTooltip(dtDag.AddDays(6)); if (!IsWeekVisible) { // datums onder tooltip lblMa.Visibility = System.Windows.Visibility.Collapsed; lblDi.Visibility = System.Windows.Visibility.Collapsed; lblWo.Visibility = System.Windows.Visibility.Collapsed; lblDo.Visibility = System.Windows.Visibility.Collapsed; lblVr.Visibility = System.Windows.Visibility.Collapsed; lblZa.Visibility = System.Windows.Visibility.Collapsed; lblZo.Visibility = System.Windows.Visibility.Collapsed; bbDivider.Visibility = System.Windows.Visibility.Collapsed; } if (weeknummer % 2 == 0) { bbDivider.BorderBrush = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFFFFFFF")); } else { bbDivider.BorderBrush = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFD8E4BC")); } dbRepository dbrep = new dbRepository(); dbOriginalRepository dbo = new dbOriginalRepository(); // haal alle mandegen van deze week //Logfile.Log("Haal alle mandagen op (database)"); //listMandagenTotal = listMandagenTotal.Where(m => m.Begintijd >= dtDag && m.Eindtijd <= dtDag.AddDays(7) && m.Begintijd != m.Eindtijd).ToList(); foreach (vwVakman objVwVakman in listVwVakmannen) { // //Logfile.Log("volgende vakman"); Vakman objVakman = listVakmannen.FirstOrDefault(a => a.VakmanId == objVwVakman.VakmanId); MDRpersoon objPersoon = listMDRpersoons.FirstOrDefault(a => a.persoon_ID == objVwVakman.ContactIdOrigineel); for (int i = 0; i < 7; i++) { // per dag extra tooltip informatie: StackPanel strTooltip = new StackPanel(); //StackPanel strTooltipAanvraag = new StackPanel(); //Logfile.Log("volgende dag, dag " + i.ToString()); //strTooltip.AddText(ToonNaam(objPersoon)); // filter alleen de mandagen voor vandaag, // van de huidige vakman waar we naar kijken //Logfile.Log("filter mandagen"); // EXPERIMENT uitzetten LET OP: Juraci List <Mandagen> listMandagen = listMandagenTotal.Where(m => m.VakmanId == objVwVakman.VakmanId && m.Begintijd >= dtDag.AddDays(i) && m.Eindtijd <= dtDag.AddDays(i + 1)).OrderBy(m => m.Begintijd).ToList(); // als in deze pool van mandagen een aanvraag zit: // vandaag, ander project, geen projectleider, niet bevestigd (dus aanvraag) //Logfile.Log("filter aanvragen"); //List<Mandagen> listAanvragen = listMandagenTotal.Where(m => m.VakmanId == objVakman.VakmanId && m.Begintijd >= dtDag.AddDays(i) && m.Eindtijd <= dtDag.AddDays(i + 1) && !m.Status).ToList(); // als in deze pool van mandagen een aanvraag zit: // vandaag, ander project, geen projectleider, wel bevestigd (dus waar dit de aanvraag van is) //List<Mandagen> listMandagenWaarDitDeAanvraagVanIs = listMandagenTotal.Where(m => m.ProjectleiderId != ApplicationState.GetValue<Gebruiker>(ApplicationVariables.objGebruiker).ProjectleiderId && m.VakmanId == objVakman.VakmanId && m.Begintijd >= dtDag.AddDays(i) && m.Eindtijd <= dtDag.AddDays(i + 1) && m.Status).OrderBy(m => m.Begintijd).ToList(); //long totalTicks = 0; bool hasAanvraag = false; int totalHours = 0; int totalMinutes = 0; // extra stukje als experiment LET OP: Juraci //totalHours = listMandagenTotal.Where(m => m.Status && m.VakmanId == objVakman.VakmanId && m.Begintijd >= dtDag.AddDays(i) && m.Eindtijd <= dtDag.AddDays(i + 1)).Sum(m => m.Uren); //totalMinutes = listMandagenTotal.Where(m => m.Status && m.VakmanId == objVakman.VakmanId && m.Begintijd >= dtDag.AddDays(i) && m.Eindtijd <= dtDag.AddDays(i + 1)).Sum(m => m.Minuten); //hasAanvraag = listMandagenTotal.Any(m => !m.Status && m.VakmanId == objVakman.VakmanId && m.Begintijd >= dtDag.AddDays(i) && m.Eindtijd <= dtDag.AddDays(i + 1)); int vakmanId = -1; hasAanvraag = listMandagen.Any(a => !a.Status); totalHours = listMandagen.Where(a => a.Status).Sum(a => a.Uren); totalMinutes = listMandagen.Where(a => a.Status).Sum(a => a.Minuten); bool hasUren = totalHours > 0 || totalMinutes > 0; strTooltip = dbtools.AddTooltipAanvraagAll(objVakman, new Project(), dtDag.AddDays(i), false, true, listMandagenTotal.Where(m => m.Begintijd >= dtDag.AddDays(i) && m.Eindtijd <= dtDag.AddDays(i + 1)).ToList(), hasAanvraag, hasUren); //TimeSpan totalTimespan = TimeSpan.FromTicks(totalTicks); Button lblDag = new Button(); lblDag.Width = 24; lblDag.Height = 17; lblDag.Margin = new Thickness(2, 2, 2, 2); lblDag.FontSize = 11; lblDag.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Right; lblDag.Padding = new Thickness(0, -1, 2, 0); ToolTipService.SetShowDuration(lblDag, 20000); lblDag.ToolTip = strTooltip; int totalHoursRounded = 0; //totalHoursRounded = (int)Math.Ceiling(totalTimespan.TotalHours); int minutesRemainder = totalMinutes % 60; //Logfile.Log("bereken totaal uren om te tonen"); totalHoursRounded = totalHours + (int)((totalMinutes - minutesRemainder) / 60) + (minutesRemainder == 0 ? 0 : 1); //if (totalTimespan.Minutes > 0) //{ // totalHoursRounded ++; //} //Logfile.Log("bereken kleuren en andere toon opties"); lblDag.Content = totalHoursRounded == 0 ? "" : totalHoursRounded.ToString(); bool blnUseInvisibleColorsAKASwitchColors = false; // 0 niet tonen if (totalHoursRounded == 0 && !hasAanvraag) { blnUseInvisibleColorsAKASwitchColors = true; //lblDag.Visibility = System.Windows.Visibility.Hidden; } else { HasHours = true; } List <object> tag = new List <object>(); tag.Add(objVwVakman); tag.Add(dtDag.AddDays(i)); lblDag.Tag = tag; // standaard kleuren van de border if (weeknummer % 2 == 0) { if (blnUseInvisibleColorsAKASwitchColors) { // use this color to make it invisible (same color as background) lblDag.BorderBrush = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFD8E4BC")); } else { // original color lblDag.BorderBrush = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFFFFFFF")); } } else { if (blnUseInvisibleColorsAKASwitchColors) { // use this color to make it invisible (same color as background) lblDag.BorderBrush = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFFFFFFF")); } else { lblDag.BorderBrush = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFD8E4BC")); } } // zwarte rand maken bij een aanvraag if (hasAanvraag) { double[] dimensions = new double[] { 2, 2 }; Rectangle dottedRectangle = new Rectangle(); dottedRectangle.Stroke = new SolidColorBrush(Colors.Gray); dottedRectangle.SnapsToDevicePixels = true; dottedRectangle.Height = 2; dottedRectangle.StrokeThickness = 2; dottedRectangle.Height = 24; dottedRectangle.Width = 45; dottedRectangle.StrokeDashArray = new DoubleCollection(dimensions); VisualBrush vb = new VisualBrush(); vb.Visual = dottedRectangle; lblDag.BorderBrush = vb; // new SolidColorBrush(Colors.Black); // (SolidColorBrush)(new BrushConverter().ConvertFrom("#00000000")); } // standaard achtergrondkleuren van de dagen if (weeknummer % 2 == 0) { lblDag.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFD8E4BC")); } else { lblDag.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFFFFFFF")); } lblDag.BorderThickness = new Thickness(2); //lblDag.MouseLeftButtonDown += lblDag_Click; lblDag.Click += lblDag_Click; spUren.Children.Add(lblDag); //Logfile.Log("voeg de dag toe"); } } //Logfile.Log("klaar met vakmannen"); }
protected virtual void OnPropertyChanged(string propertyName) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(propertyName)); } switch (propertyName) { case "Project": dbRepository dbrep = new dbRepository(); DateTime dtSelectedDay = ApplicationState.GetValue <DateTime>(ApplicationVariables.dtSelectedDay); DbTools dbtools = new DbTools(); StackPanel strTooltip = new StackPanel(); StackPanel strTooltipAanvraag = new StackPanel(); dbOriginalRepository dbreporiginal = new dbOriginalRepository(); MDRpersoon pp = dbreporiginal.GetContact(dbrep.GetProjectleider(project.ProjectleiderId, project.ProjectId, dtSelectedDay).ContactIdOrigineel); lblHeader.Content = ToonNaam(pp); lblHeader.VerticalAlignment = System.Windows.VerticalAlignment.Top; //lblHeader.BorderThickness = new Thickness(1); //lblHeader.BorderBrush = new SolidColorBrush(Colors.Black); btnHeader.Style = this.FindResource("LinkButton") as Style; MDRproject pr = dbreporiginal.GetProject((int)project.ProjectNr); double ww = 400; if (btnHeader.Width > 0) { ww = btnHeader.Width; } if (btnHeader.FontSize > 11) { ww = ww * 0.8; } // TOOLTIP // TOOLTIP // TOOLTIP DateTime dtdag = ApplicationState.GetValue <DateTime>(ApplicationVariables.dtSelectedDay); Vakman vakman = dbrep.GetVakman(ApplicationState.GetValue <int>(ApplicationVariables.intVakmanId)); strTooltipAanvraag.Children.Add(dbtools.AddTooltipAanvraagAll(vakman, project, dtdag, true, true)); if (pr != null) { btnHeader.Content = pr.project_NR.ToString(5) + " " + pr.naam_project.ToString(ww); // de naam van het project ook tonen in de tooltip bovenaan //strTooltip.AddText(pr.naam_project.ToString() + " (Project " + pr.project_NR + ")"); } else { btnHeader.Content = " " + project.Naam.ToString(ww); // de naam van het project ook tonen in de tooltip bovenaan //strTooltip.AddText(project.Naam.ToString() + " (Project --)"); } //List<Mandagen> listMandagenTotal = dbrep.datacontext.Mandagens.Where(m => m.Begintijd != m.Eindtijd && m.Begintijd >= ApplicationState.GetValue<DateTime>(ApplicationVariables.dtSelectedDay) && m.Eindtijd <= ApplicationState.GetValue<DateTime>(ApplicationVariables.dtSelectedDay).AddDays(1)).ToList(); //List<Mandagen> listMandagen = listMandagenTotal.Where(m => m.ProjectId == project.ProjectId).ToList(); //// als in deze pool van mandagen een aanvraag zit: //// vandaag, ander project, geen projectleider, niet bevestigd (dus aanvraag) //List<Mandagen> listAanvragen = listMandagenTotal.Where(m => m.ProjectleiderId != ApplicationState.GetValue<Gebruiker>(ApplicationVariables.objGebruiker).ProjectleiderId && m.ProjectId != project.ProjectId && m.Begintijd >= ApplicationState.GetValue<DateTime>(ApplicationVariables.dtSelectedDay) && m.Eindtijd <= ApplicationState.GetValue<DateTime>(ApplicationVariables.dtSelectedDay).AddDays(1) && !m.Status).ToList(); //// als in deze pool van mandagen een aanvraag zit: //// vandaag, ander project, geen projectleider, wel bevestigd (dus waar dit de aanvraag van is) //List<Mandagen> listMandagenWaarDitDeAanvraagVanIs = listMandagenTotal.Where(m => m.ProjectId != project.ProjectId && m.ProjectleiderId != ApplicationState.GetValue<Gebruiker>(ApplicationVariables.objGebruiker).ProjectleiderId && m.ProjectId != project.ProjectId && m.Begintijd >= dtSelectedDay && m.Eindtijd <= dtSelectedDay.AddDays(1) && m.Status).ToList(); //int previousVakmanId = -1; //foreach (Mandagen mandag in listMandagen) //{ // if (mandag.Status) // { // bool isBold = mandag.VakmanId == ApplicationState.GetValue<int>(ApplicationVariables.intVakmanId); // //strTooltip.AddText("(" + ToonTijd(mandag) + ")" + " " + ToonNaam(dbreporiginal.GetContact(mandag.Vakman.ContactIdOrigineel, true)), isBold); // // OF we hebben te maken met externe aanvragen // Mandagen aanvraag = listAanvragen.FirstOrDefault(m => m.Begintijd < mandag.Eindtijd && m.Eindtijd > mandag.Begintijd && m.VakmanId == mandag.VakmanId); // if (aanvraag != null) // { // List<Mandagen> listIngeplandeMandagen = new List<Mandagen>(); // listIngeplandeMandagen.Add(mandag); // if (previousVakmanId == mandag.VakmanId) // { // //strTooltipAanvraag.Children.Add(dbtools.AddTooltipAanvraagMinOnly(listIngeplandeMandagen, aanvraag, false)); // //strTooltipAanvraag.Children.Add(dbtools.AddTooltipAanvraagAll(mandag.Vakman, mandag.Project, dbtools.GetHeleDag(mandag.Begintijd))); // } // else // { // //strTooltipAanvraag.Children.Add(dbtools.AddTooltipAanvraag(listIngeplandeMandagen, aanvraag, false)); // //strTooltipAanvraag.Children.Add(dbtools.AddTooltipAanvraagAll(mandag.Vakman, mandag.Project, dbtools.GetHeleDag(mandag.Begintijd))); // } // previousVakmanId = mandag.VakmanId; // } // } // else // { // if (previousVakmanId == mandag.VakmanId) // { // //strTooltipAanvraag.Children.Add(dbtools.AddTooltipAanvraagMinOnly(listMandagenWaarDitDeAanvraagVanIs, mandag, true)); // //strTooltipAanvraag.Children.Add(dbtools.AddTooltipAanvraagAll(mandag.Vakman, mandag.Project, dbtools.GetHeleDag(mandag.Begintijd), true, false)); // } // else // { // // OF het is zelf de aanvraag // //strTooltipAanvraag.Children.Add(dbtools.AddTooltipAanvraag(listMandagenWaarDitDeAanvraagVanIs, mandag, true)); // //strTooltipAanvraag.Children.Add(dbtools.AddTooltipAanvraagAll(mandag.Vakman, mandag.Project, dbtools.GetHeleDag(mandag.Begintijd), true, false)); // } // previousVakmanId = mandag.VakmanId; // } //} //foreach (Mandagen mandag in listAanvragen) //{ // if (!mandag.Status) // { // // OF dit project heeft een andere aanvraag lopen die de vakman VAN het project af wil halen // listMandagenWaarDitDeAanvraagVanIs = listMandagenTotal.Where(m => m.VakmanId == mandag.VakmanId && m.ProjectId != mandag.ProjectId && m.ProjectleiderId != ApplicationState.GetValue<Gebruiker>(ApplicationVariables.objGebruiker).ProjectleiderId && m.Begintijd >= dtSelectedDay && m.Eindtijd <= dtSelectedDay.AddDays(1) && m.Status).ToList(); // strTooltipAanvraag += AddTooltipAanvraag(listMandagenWaarDitDeAanvraagVanIs, mandag, false); // } //} ToolTipService.SetShowDuration(btnHeader, 20000); strTooltip.Children.Add(strTooltipAanvraag); btnHeader.ToolTip = strTooltip; btnHeader.Margin = new Thickness(0, 0, 0, -8); if (ApplicationState.GetValue <int>("intProjectId") == project.ProjectId) { // make bold //btnHeader.FontWeight = FontWeights.ExtraBold; } break; default: break; } }
public void Load() { DbTools dbtools = new DbTools(); // datums onder tooltip lblMa.ToolTip = GetDagTooltip(dtDag); lblDi.ToolTip = GetDagTooltip(dtDag.AddDays(1)); lblWo.ToolTip = GetDagTooltip(dtDag.AddDays(2)); lblDo.ToolTip = GetDagTooltip(dtDag.AddDays(3)); lblVr.ToolTip = GetDagTooltip(dtDag.AddDays(4)); lblZa.ToolTip = GetDagTooltip(dtDag.AddDays(5)); lblZo.ToolTip = GetDagTooltip(dtDag.AddDays(6)); if (!IsWeekVisible) { // datums onder tooltip lblMa.Visibility = System.Windows.Visibility.Hidden; lblDi.Visibility = System.Windows.Visibility.Hidden; lblWo.Visibility = System.Windows.Visibility.Hidden; lblDo.Visibility = System.Windows.Visibility.Hidden; lblVr.Visibility = System.Windows.Visibility.Hidden; lblZa.Visibility = System.Windows.Visibility.Hidden; lblZo.Visibility = System.Windows.Visibility.Hidden; bbDivider.Visibility = System.Windows.Visibility.Collapsed; } if (weeknummer % 2 == 0) { bbDivider.BorderBrush = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFFFFFFF")); } else { bbDivider.BorderBrush = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFC5D9F1")); } int intProjectleider = ApplicationState.GetValue <int>(ApplicationVariables.intProjectleider); blnOwner = objProjectleider.ProjectleiderId == intProjectleider; dbRepository dbrep = new dbRepository(); dbOriginalRepository dbo = new dbOriginalRepository(); // haal alle mandegen van deze week //List<Mandagen> listMandagenTotal = dbrep.datacontext.Mandagens.Where(m => m.Begintijd >= dtDag && m.Eindtijd <= dtDag.AddDays(7) && m.Begintijd != m.Eindtijd).ToList(); foreach (Project objProject in listProjecten) { // for (int i = 0; i < 7; i++) { // per dag extra tooltip informatie: StackPanel strTooltip = new StackPanel(); StackPanel strTooltipAanvraag = new StackPanel(); // filter alleen de mandagen voor vandaag, waarvan de ingelogde kijker projectleider is, // van het huidige project waar we naar kijken List <Mandagen> listMandagen = listMandagenTotal.Where(m => m.ProjectleiderId == objProjectleider.ProjectleiderId && m.ProjectId == objProject.ProjectId && m.Begintijd >= dtDag.AddDays(i) && m.Eindtijd <= dtDag.AddDays(i + 1)).OrderBy(m => dbo.GetContact(m.Vakman.ContactIdOrigineel, true) == null ? "" : dbo.GetContact(m.Vakman.ContactIdOrigineel, true).voornaam).ThenByDescending(m => m.Status).ToList(); // als in deze pool van mandagen een aanvraag zit: // vandaag, ander project, geen projectleider, niet bevestigd (dus aanvraag) List <Mandagen> listAanvragen = listMandagenTotal.Where(m => m.ProjectleiderId != objProjectleider.ProjectleiderId && m.ProjectId != objProject.ProjectId && m.Begintijd >= dtDag.AddDays(i) && m.Eindtijd <= dtDag.AddDays(i + 1) && !m.Status).ToList(); // als in deze pool van mandagen een aanvraag zit: // vandaag, ander project, geen projectleider, wel bevestigd (dus waar dit de aanvraag van is) List <Mandagen> listMandagenWaarDitDeAanvraagVanIs = listMandagenTotal.Where(m => m.Begintijd != m.Eindtijd && m.ProjectleiderId != objProjectleider.ProjectleiderId && m.ProjectId != objProject.ProjectId && m.Begintijd >= dtDag.AddDays(i) && m.Eindtijd <= dtDag.AddDays(i + 1) && m.Status).ToList(); //long totalTicks = 0; bool hasAanvraag = false; int totalHours = 0; int totalMinutes = 0; int previousVakmanId = -1; //if ((listMandagen.Any(m=> !m.Status) || listAanvragen.Any(a => !a.Geannulleerd && a.Eindtijd > listMandagen.Min(m=>m.Begintijd) && a.Begintijd < listMandagen.Max(m=>m.Eindtijd && a.ProjectId != mandag.ProjectId && a.VakmanId == mandag.VakmanId)) //{ // hasAanvraag = true; //} // TODO: WEER AANZETTEN, CACHE TEST foreach (Mandagen mandag in listMandagen) { // bereken de som der uren //ALLEEN ALS HET EEN BEVESTIGD UUR IS if (mandag.Status) { totalHours += mandag.Uren; totalMinutes += mandag.Minuten; ////long lnMandagTicks = (mandag.Eindtijd.Ticks - mandag.Begintijd.Ticks); ////totalTicks += lnMandagTicks; ////TimeSpan tsMandag = TimeSpan.FromTicks(lnMandagTicks); //MDRpersoon persoon = dbo.GetContact(mandag.Vakman.ContactIdOrigineel, true); //if (persoon != null) //{ // strTooltip += "(" + ((int)Math.Ceiling(tsMandag.TotalHours)).ToString() + "u) " + (persoon.voornaam + " " + persoon.tussenvoegsel + " " + persoon.achternaam).ToStringTrimmed(); // strTooltip.AddText("(" + mandag.Uren.ToString() + ":" + (mandag.Minuten < 10 ? "0" : "") + mandag.Minuten.ToString() + ") " + (persoon.voornaam + " " + persoon.tussenvoegsel + " " + persoon.achternaam).ToStringTrimmed()); //} //// //bool blnToonAanvraagtext = listAanvragen.Any(m => m.Begintijd < mandag.Eindtijd && m.Eindtijd > mandag.Begintijd && m.VakmanId == mandag.VakmanId && !m.Geannulleerd); //if (blnToonAanvraagtext) //{ // strTooltipAanvraag.AddText("Aanvraag " + (persoon.voornaam + " " + persoon.tussenvoegsel + " " + persoon.achternaam).ToStringTrimmed(), true); // // OF we hebben te maken met een externe aanvraag voor deze mandag // foreach (Mandagen aanvraag in listAanvragen.Where(m => m.Begintijd < mandag.Eindtijd && m.Eindtijd > mandag.Begintijd && m.VakmanId == mandag.VakmanId)) // { // if (aanvraag != null && !aanvraag.Geannulleerd) // { // MDRpersoon persoonAanvraag = dbo.GetContact(aanvraag.Vakman.ContactIdOrigineel, true); // if (persoonAanvraag != null) // { // strTooltipAanvraag.AddText("(" + dbtools.GetIngeplandeTijd(objProject, aanvraag.Vakman, dbtools.GetHeleDag(aanvraag.Begintijd)) + ") \u2212 (" + aanvraag.Uren.ToString() + ":" + (aanvraag.Minuten < 10 ? "0" : "") + aanvraag.Minuten.ToString() + ") " + objProject.Naam + " (Project " + objProject.ProjectNr.ToString() + ")", true); // strTooltipAanvraag.AddText("(" + dbtools.GetIngeplandeTijd(aanvraag.Project, aanvraag.Vakman, dbtools.GetHeleDag(aanvraag.Begintijd)) + ") + (" + aanvraag.Uren.ToString() + ":" + (aanvraag.Minuten < 10 ? "0" : "") + aanvraag.Minuten.ToString() + ") " + aanvraag.Project.Naam + " (Project " + aanvraag.Project.ProjectNr.ToString() + ")", true); // } // } // } //} } //else //{ // // OF dit is zelf de aanvraag // MDRpersoon persoon = dbo.GetContact(mandag.Vakman.ContactIdOrigineel, true); // if (persoon != null && (listAanvragen.Any(m => m.VakmanId == mandag.VakmanId) || listMandagenWaarDitDeAanvraagVanIs.Any(m => m.VakmanId == mandag.VakmanId))) // { // // dit hoeft niet dubbel te worden weergegeven als de vakman al is ingepland, of als er meerdere aanvragen lopen // if (previousVakmanId != mandag.VakmanId) // { // // INDIEN ER EEN AANVRAAG IS, DEZE PERSOON OOK WEERGEVEN ALS ZOGENAAMD 0:00 INGEVULD OP HET PROJECT // // strTooltip += "(" + ((int)Math.Ceiling(tsMandag.TotalHours)).ToString() + "u) " + (persoon.voornaam + " " + persoon.tussenvoegsel + " " + persoon.achternaam).ToStringTrimmed(); // // strTooltip.AddText("(" + dbtools.GetIngeplandeTijd(mandag.Project, mandag.Vakman, dbtools.GetHeleDag(mandag.Begintijd)) + ")" + (persoon.voornaam + " " + persoon.tussenvoegsel + " " + persoon.achternaam).ToStringTrimmed()); // } // if (previousVakmanId == mandag.VakmanId) // { // // dezelfde vakman, alleen de minnen toevoegen // //strTooltipAanvraag.Children.Add(dbtools.AddTooltipAanvraagMinOnly(listMandagenWaarDitDeAanvraagVanIs, mandag, true)); // //strTooltipAanvraag.Children.Add(dbtools.AddTooltipAanvraagAll(mandag.Vakman, mandag.Project, dbtools.GetHeleDag(mandag.Begintijd), true, true)); // } // else // { // //strTooltipAanvraag.Children.Add(dbtools.AddTooltipAanvraag(listMandagenWaarDitDeAanvraagVanIs, mandag, true)); // //strTooltipAanvraag.Children.Add(dbtools.AddTooltipAanvraagAll(mandag.Vakman, mandag.Project, dbtools.GetHeleDag(mandag.Begintijd))); // } // //strTooltipAanvraag += Environment.NewLine; // //strTooltipAanvraag += Environment.NewLine; // //strTooltipAanvraag += "Aanvraag test2" + (persoon.voornaam + " " + persoon.tussenvoegsel + " " + persoon.achternaam).ToStringTrimmed(); // //if (mandag.Geannulleerd) // //{ // // strTooltipAanvraag += " AFGEWEZEN"; // //} // //// plustext is cumulatief // //strTooltipAanvraag += Environment.NewLine; // //strTooltipAanvraag += dbtools.GetIngeplandeTijd(mandag.Project, mandag.Vakman, dbtools.GetHeleDag(mandag.Begintijd)) + " + (" + dbtools.GetAangevraagdeTijd(mandag.Project, mandag.Vakman, dbtools.GetHeleDag(mandag.Begintijd)) + ") " + mandag.Project.Naam + " (Project " + mandag.Project.ProjectNr.ToString() + ")"; // //// minus text is een opsomming van alle mandagen die beinvloed worden door de aanvraag // //foreach (Mandagen origineel in listMandagenWaarDitDeAanvraagVanIs.Where(m => m.Begintijd <= mandag.Eindtijd && m.Eindtijd >= mandag.Begintijd && m.VakmanId == mandag.VakmanId)) // //{ // // Project objProject2 = origineel.Project; // // // minustext // // strTooltipAanvraag += Environment.NewLine; // // strTooltipAanvraag += dbtools.GetIngeplandeTijd(objProject2, mandag.Vakman, dbtools.GetHeleDag(mandag.Begintijd)) + " \u2212 (" + mandag.Uren.ToString() + ":" + (mandag.Minuten < 10 ? "0" : "") + mandag.Minuten.ToString() + ") " + objProject2.Naam + " (Project " + objProject2.ProjectNr.ToString() + ")"; // //} // } // previousVakmanId = mandag.VakmanId; //} // zwart randje tonen als: een van de vakmannen een aanvraag is, // of er voor een van de vakmannen een aanvraag is gedaan die invloed heeft op dit project // en nog niet geannuleerd is als die door iemand anders is gedaan, of wel geannuleerd als die door mij is gedaan // // DUS: // als de betreffende mandag een aanvraag is // OF er een aanvraag is die deze overlapt qua tijden, voor een ander project is, maar voor dezelfde vakman, en nog niet geannulleerd dus lopende aanvraag //if ((!mandag.Status && !mandag.Geannulleerd) || listAanvragen.Any(a => a.Eindtijd > mandag.Begintijd && a.Begintijd < mandag.Eindtijd && a.ProjectId != mandag.ProjectId && a.VakmanId == mandag.VakmanId && !a.Geannulleerd)) if ((!mandag.Status) || listAanvragen.Any(a => !a.Geannulleerd && a.Eindtijd > mandag.Begintijd && a.Begintijd < mandag.Eindtijd && a.ProjectId != mandag.ProjectId && a.VakmanId == mandag.VakmanId)) { hasAanvraag = true; } } // END TODO: WEER AANZETTEN, CACHE TEST //foreach (Mandagen mandag in listAanvragen) //{ // // OF dit is het originele project, waarop is aangevraagd // // bereken de som der uren // //ALLEEN ALS HET EEN BEVESTIGD UUR IS // if (!mandag.Status) // { // MDRpersoon persoon = dbo.GetContact(mandag.Vakman.ContactIdOrigineel, true); // Mandagen temp = listMandagenWaarDitDeAanvraagVanIs.FirstOrDefault(m => m.Begintijd <= mandag.Eindtijd && m.Eindtijd >= mandag.Begintijd && m.VakmanId == mandag.VakmanId); // if (persoon != null && temp != null && temp.VakmanId == mandag.VakmanId && objProject.ProjectId == temp.ProjectId) // { // strTooltipAanvraag += Environment.NewLine; // strTooltipAanvraag += Environment.NewLine; // strTooltipAanvraag += "Aanvraag " + (persoon.voornaam + " " + persoon.tussenvoegsel + " " + persoon.achternaam).ToStringTrimmed(); // if (mandag.Geannulleerd) // { // strTooltipAanvraag += " AFGEWEZEN"; // } // strTooltipAanvraag += Environment.NewLine; // strTooltipAanvraag += "\u2212 (" + mandag.Uren.ToString() + ":" + (mandag.Minuten < 10 ? "0" : "") + mandag.Minuten.ToString() + ") " + objProject.Naam + " (Project " + objProject.ProjectNr.ToString() + ")"; // strTooltipAanvraag += Environment.NewLine; // strTooltipAanvraag += "+ (" + mandag.Uren.ToString() + ":" + (mandag.Minuten < 10 ? "0" : "") + mandag.Minuten.ToString() + ") " + mandag.Project.Naam + " (Project " + mandag.Project.ProjectNr.ToString() + ")"; // } // } //} bool hasUren = totalHours > 0 || totalMinutes > 0; //strTooltip.AddText(objProject.Naam + " (Project " + objProject.ProjectNr.ToString() + ")"); strTooltipAanvraag.Children.Add(dbtools.AddTooltipAanvraagAll(new Vakman(), objProject, dbtools.GetHeleDag(dtDag.AddDays(i)), true, true, listMandagenTotal.Where(m => m.Begintijd >= dtDag.AddDays(i) && m.Eindtijd <= dtDag.AddDays(i + 1)).ToList(), hasAanvraag, hasUren)); //TimeSpan totalTimespan = TimeSpan.FromTicks(totalTicks); Button lblDag = new Button(); lblDag.Width = 24; lblDag.Height = 17; lblDag.Margin = new Thickness(2, 2, 2, 2); lblDag.FontSize = 11; lblDag.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Right; lblDag.Padding = new Thickness(0, -1, 2, 0); ToolTipService.SetShowDuration(lblDag, 20000); strTooltip.Children.Add(strTooltipAanvraag); lblDag.ToolTip = strTooltip; // test //lblDag.ToolTip = objProject.Naam + " (Project " + objProject.ProjectNr.ToString() + ")" + strTooltip + strTooltipAanvraag; int totalHoursRounded = 0; //totalHoursRounded = (int)Math.Ceiling(totalTimespan.TotalHours); int minutesRemainder = totalMinutes % 60; totalHoursRounded = totalHours + (int)((totalMinutes - minutesRemainder) / 60) + (minutesRemainder == 0 ? 0 : 1); //if (totalTimespan.Minutes > 0) //{ // totalHoursRounded ++; //} lblDag.Content = totalHoursRounded == 0 ? "" : totalHoursRounded.ToString(); bool blnUseInvisibleColorsAKASwitchColors = false; // 0 niet tonen if (totalHoursRounded == 0 && !hasAanvraag) { blnUseInvisibleColorsAKASwitchColors = true; //lblDag.Visibility = System.Windows.Visibility.Hidden; } else { HasHours = true; } List <object> tag = new List <object>(); tag.Add(objProject); tag.Add(dtDag.AddDays(i)); lblDag.Tag = tag; // standaard kleuren van de border if (weeknummer % 2 == 0) { if (blnUseInvisibleColorsAKASwitchColors) { // use this color to make it invisible (same color as background) lblDag.BorderBrush = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFC5D9F1")); } else { // original color lblDag.BorderBrush = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFFFFFFF")); } } else { if (blnUseInvisibleColorsAKASwitchColors) { // use this color to make it invisible (same color as background) lblDag.BorderBrush = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFFFFFFF")); } else { lblDag.BorderBrush = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFC5D9F1")); } } // zwarte rand maken bij een aanvraag if (hasAanvraag) { double[] dimensions = new double[] { 2, 2 }; Rectangle dottedRectangle = new Rectangle(); dottedRectangle.Stroke = blnOwner ? new SolidColorBrush(Colors.Black) : new SolidColorBrush(Colors.Gray); dottedRectangle.SnapsToDevicePixels = true; dottedRectangle.Height = 2; dottedRectangle.StrokeThickness = 2; dottedRectangle.Height = 24; dottedRectangle.Width = 45; dottedRectangle.StrokeDashArray = new DoubleCollection(dimensions); VisualBrush vb = new VisualBrush(); vb.Visual = dottedRectangle; lblDag.BorderBrush = vb; // new SolidColorBrush(Colors.Black); // (SolidColorBrush)(new BrushConverter().ConvertFrom("#00000000")); } // standaard achtergrondkleuren van de dagen if (weeknummer % 2 == 0) { lblDag.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFC5D9F1")); } else { lblDag.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFFFFFFF")); } lblDag.BorderThickness = new Thickness(2); lblDag.Click += lblDag_Click; spUren.Children.Add(lblDag); } } }
protected virtual void OnPropertyChanged(string propertyName) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(propertyName)); } switch (propertyName) { case "Vakman": try { StackPanel strTooltip = new StackPanel(); StackPanel strTooltipAanvraag = new StackPanel(); btnHeader.Style = this.FindResource("LinkButton") as Style; //btnHeader.Style = Tools.FindVisualParent<PageContainer>(this).FindResource("LinkButton") as Style; dbOriginalRepository dbRepOriginal = new dbOriginalRepository(); dbRepository dbrep = new dbRepository(); DbTools dbtools = new DbTools(); MDRpersoon p = dbRepOriginal.GetContact(vakman.ContactIdOrigineel); // TOOLTIP // TOOLTIP // TOOLTIP DateTime dtdag = ApplicationState.GetValue <DateTime>(ApplicationVariables.dtSelectedDay); Project project = dbrep.GetProject(ApplicationState.GetValue <int>(ApplicationVariables.intProjectId)); Vakman objVakman = dbrep.GetVakman(vakman.VakmanId); strTooltipAanvraag.Children.Add(dbtools.AddTooltipAanvraagAll(objVakman, project, dtdag, false, false)); if (p != null) { btnHeader.Content = (p.voornaam + " " + (p.tussenvoegsel == null ? "" : p.tussenvoegsel) + " " + p.achternaam).ToStringTrimmed(); bool isBold = vakman.VakmanId == ApplicationState.GetValue <int>(ApplicationVariables.intVakmanId); //strTooltip.AddText((p.voornaam + " " + (p.tussenvoegsel == null ? "" : p.tussenvoegsel) + " " + p.achternaam).ToStringTrimmed(), isBold); } //List<Mandagen> listMandagenTotal = dbrep.GetMandagen(vakman.VakmanId, ApplicationState.GetValue<DateTime>(ApplicationVariables.dtSelectedDay)).Where(m => m.Begintijd != m.Eindtijd).OrderBy(m => m.Status).ToList(); //int previousVakmanId = -1; //foreach (Mandagen mandag in listMandagenTotal) //{ // // als in deze pool van mandagen een aanvraag zit: // // vandaag, ander project, geen projectleider, wel bevestigd (dus waar dit de aanvraag van is) // List<Mandagen> listMandagenWaarDitDeAanvraagVanIs = listMandagenTotal.Where(m => m.ProjectId != mandag.ProjectId && m.ProjectleiderId != ApplicationState.GetValue<Gebruiker>(ApplicationVariables.objGebruiker).ProjectleiderId && m.ProjectId != mandag.ProjectId && m.Begintijd >= ApplicationState.GetValue<DateTime>(ApplicationVariables.dtSelectedDay) && m.Eindtijd <= ApplicationState.GetValue<DateTime>(ApplicationVariables.dtSelectedDay).AddDays(1) && m.Status).ToList(); // if (mandag.Status) // { // bool isBold = (ApplicationState.GetValue<int>(ApplicationVariables.intProjectId) == mandag.ProjectId); // strTooltip.AddText("(" + ToonTijd(mandag) + ")" + " " + dbRepOriginal.GetProject((int)mandag.Project.ProjectNr).naam_project, isBold); // } // if (!mandag.Status) // { // bool reverse = false; // if (ApplicationState.GetValue<int>(ApplicationVariables.intProjectId) == mandag.ProjectId) // { // reverse = true; // } // if (previousVakmanId == mandag.VakmanId) // { // //strTooltipAanvraag.Children.Add(dbtools.AddTooltipAanvraagMinOnly(listMandagenWaarDitDeAanvraagVanIs, mandag, reverse)); // //strTooltipAanvraag.Children.Add(dbtools.AddTooltipAanvraagAll(mandag.Vakman, mandag.Project, dbtools.GetHeleDag(mandag.Begintijd))); // } // else // { // //strTooltipAanvraag.Children.Add(dbtools.AddTooltipAanvraag(listMandagenWaarDitDeAanvraagVanIs, mandag, reverse)); // //strTooltipAanvraag.Children.Add(dbtools.AddTooltipAanvraagAll(mandag.Vakman, mandag.Project, dbtools.GetHeleDag(mandag.Begintijd))); // } // } // previousVakmanId = mandag.VakmanId; //} ToolTipService.SetShowDuration(btnHeader, 20000); strTooltip.Children.Add(strTooltipAanvraag); btnHeader.ToolTip = strTooltip; if (ApplicationState.GetValue <int>(ApplicationVariables.intVakmanId) == vakman.VakmanId) { // make bold //btnHeader.FontWeight = FontWeights.ExtraBold; } } catch (Exception ex) { MessageBox.Show(ex.Message); } break; default: break; } }