ZKuP/ZKuP/ArrivalsOverview.xaml.cs
2025-07-28 08:20:11 +02:00

132 lines
6.8 KiB
C#

using MahApps.Metro.Controls;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace ZKuP
{
/// <summary>
/// Interaktionslogik für ArrivalsOverview.xaml
/// </summary>
public partial class ArrivalsOverview : MetroWindow
{
Roles LoggedInRole = Roles.None;
DataTable overv = new DataTable("Overview");
DataTable todayFirm = new DataTable("TodayFirm");
DataTable todayBesuch = new DataTable("TodayBesuch");
public ArrivalsOverview(Roles role)
{
InitializeComponent();
LoggedInRole = role;
dPOverviewVon.SelectedDate = DateTime.Now.Date;
dPOverviewBis.SelectedDate = DateTime.Now.Date.AddDays(14);
FillDataGrid(DateTime.Now.Date, DateTime.Now.Date.AddDays(14));
}
private async void FillDataGrid(DateTime von, DateTime bis)
{
if (LoggedInRole == Roles.Admin || LoggedInRole == Roles.Pförtner || LoggedInRole == Roles.M2_AM)
{
todayFirm = await SQL.ReadSQL($"Select * From {MainWindow.table}.firmen where (Arbeitsbeginn >= '{von.ToString("yyyy-MM-dd")}' AND Arbeitsende <= '{bis.ToString("yyyy-MM-dd")}') OR '{von.ToString("yyyy-MM-dd")}' BETWEEN Arbeitsbeginn AND Arbeitsende", todayFirm);
todayBesuch = await SQL.ReadSQL($"SELECT idbesucher, concat('Besucher: ', Name) AS Name, Verantwortlicher_MA AS Verantwortlicher_MA_Firma,Tel_Nr_Besucher AS Tel_Nr_Verantwortlicher_Firma,Besuchstag AS Arbeitsbeginn,Grund_des_Besuchs AS Beauftragte_Leistung,Ansprechpartner_Intern from {MainWindow.table}.besucher WHERE (Besuchstag >= '{von.ToString("yyyy-MM-dd")}' AND Besuchstag <= '{bis.ToString("yyyy-MM-dd")}')", todayBesuch);
}
else
{
todayFirm = await SQL.ReadSQL($"Select * From {MainWindow.table}.firmen where ((Arbeitsbeginn >= '{von.ToString("yyyy-MM-dd")}' AND Arbeitsende <= '{bis.ToString("yyyy-MM-dd")}') OR '{von.ToString("yyyy-MM-dd")}' BETWEEN Arbeitsbeginn AND Arbeitsende) AND (Ersteller = '{Environment.UserName}' " +
$"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
$"OR Ersteller = '{SQL.ReadSingleValue($"SELECT Vertreter FROM {MainWindow.table}.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'")}' " +
$"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}')", todayFirm);
todayBesuch = await SQL.ReadSQL($"SELECT idbesucher, concat('Besucher: ', Name) AS Name, Verantwortlicher_MA AS Verantwortlicher_MA_Firma,Tel_Nr_Besucher AS Tel_Nr_Verantwortlicher_Firma,Besuchstag AS Arbeitsbeginn,Grund_des_Besuchs AS Beauftragte_Leistung,Ansprechpartner_Intern from {MainWindow.table}.besucher WHERE (Besuchstag >= '{von.ToString("yyyy-MM-dd")}' AND Besuchstag <= '{bis.ToString("yyyy-MM-dd")}') AND (Ersteller = '{Environment.UserName}' " +
$"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
$"OR Ersteller = '{SQL.ReadSingleValue($"SELECT Vertreter FROM {MainWindow.table}.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'")}' " +
$"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}')", todayBesuch);
}
var firmview = todayFirm.DefaultView;
firmview.Sort = "Name";
todayFirm = firmview.ToTable();
var besuchview = todayBesuch.DefaultView;
besuchview.Sort = "Name";
todayBesuch = besuchview.ToTable();
todayFirm.Merge(todayBesuch);
dgArrivalsOverview.DataContext = todayFirm;
}
private void btnOK_Click(object sender, RoutedEventArgs e)
{
FillDataGrid(dPOverviewVon.SelectedDate.Value, dPOverviewBis.SelectedDate.Value);
}
private void dPOverviewVon_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
if (dPOverviewVon.SelectedDate.HasValue && dPOverviewBis.SelectedDate.HasValue && dPOverviewBis.SelectedDate.Value >= dPOverviewVon.SelectedDate.Value)
{
//btnOK.IsEnabled = true;
FillDataGrid(dPOverviewVon.SelectedDate.Value, dPOverviewBis.SelectedDate.Value);
lblAnwesend.Text = $"Ihre anwesenden Firmen/Besucher zwischen dem {dPOverviewVon.SelectedDate.Value.ToString("dd.MM.yy")} und {dPOverviewBis.SelectedDate.Value.ToString("dd.MM.yy")}:";
dPOverviewVon.ClearValue(DatePicker.BackgroundProperty);
dPOverviewBis.ClearValue(DatePicker.BackgroundProperty);
}
else
dPOverviewVon.Background = new SolidColorBrush(Colors.Red);
}
private void dPOverviewBis_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
if (dPOverviewVon.SelectedDate.HasValue && dPOverviewBis.SelectedDate.HasValue && dPOverviewBis.SelectedDate.Value >= dPOverviewVon.SelectedDate.Value)
{
//btnOK.IsEnabled = true;
FillDataGrid(dPOverviewVon.SelectedDate.Value, dPOverviewBis.SelectedDate.Value);
lblAnwesend.Text = $"Ihre anwesenden Firmen/Besucher zwischen dem {dPOverviewVon.SelectedDate.Value.ToString("dd.MM.yy")} und {dPOverviewBis.SelectedDate.Value.ToString("dd.MM.yy")}:";
dPOverviewBis.ClearValue(DatePicker.BackgroundProperty);
dPOverviewVon.ClearValue(DatePicker.BackgroundProperty);
}
else
dPOverviewBis.Background = new SolidColorBrush(Colors.Red);
}
private void dPOverviewVon_DateValidationError(object sender, DatePickerDateValidationErrorEventArgs e)
{
MessageBox.Show("Kein gültiges Datumsformat in Feld 'von'", "Fehler", MessageBoxButton.OK, MessageBoxImage.Warning);
}
private void dPOverviewBis_DateValidationError(object sender, DatePickerDateValidationErrorEventArgs e)
{
MessageBox.Show("Kein gültiges Datumsformat in Feld 'bis'", "Fehler", MessageBoxButton.OK, MessageBoxImage.Warning);
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
Helper.CheckWindowIsInScreenSpace(this);
}
private void Window_LocationChanged(object sender, EventArgs e)
{
Helper.CheckWindowIsInScreenSpace(this);
}
}
}