using System;
using System.Collections.Generic;
using System.Globalization; //*Kalenderwoche
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.Navigation;
using System.Windows.Shapes;
namespace Schichtplaner
{
/// <summary>
/// Kaldender, in welchem man die Fehltage wie Urlaub oder Gleitzeit eintraegt
/// </summary>
public partial class Page_Kalender_Fehltage : Page
{
#region Variablen
//=============< region: Variablen >=============
private dbConnectionString db;
DateTime _Date_Start;
int _Breite_Tag = 30;
int _Breite_Mitarbeiter = 100;
int _row_Height = 30;
int _Button_Height = 30;
string _Color_Header_Days = "#55ffdd38";
string _sColor_Header_Mitarbeiter = "#55F0F0F0";
string _sColor_Cell = "#55999999";
//private int iDay;
//=============</ region: Variablen >=============
#endregion
#region Form
//=============< region: Form >=============
public Page_Kalender_Fehltage()
{
InitializeComponent();
db = new dbConnectionString();
if (db.Database.Connection.State == System.Data.ConnectionState.Closed || db.Database.Connection.State == System.Data.ConnectionState.Broken)
db.Database.Connection.Open();
//--< init >--
_Date_Start = DateTime.Today.AddDays(-1 * DateTime.Today.Day).AddDays(1);
Show_Kalender();
//--</ init >--
}
//=============</ region: Form >=============
#endregion
#region Buttons
//=============< region: Buttons >=============
private void BtnPrevious_Click(object sender, RoutedEventArgs e)
{
_Date_Start = _Date_Start.AddMonths(-1);
Show_Kalender();
}
private void BtnNext_Click(object sender, RoutedEventArgs e)
{
_Date_Start = _Date_Start.AddMonths(1);
Show_Kalender();
}
//=============</ region: Buttons >=============
#endregion
#region Methoden
//=============< region: Methoden >=============
private void Show_Kalender()
{
Kalender_Textfeld_anzeigen();
Grid_Plan_laden();
Grid_Plan_Eintraege_fuellen();
//</ planungen >
}
private void Kalender_Textfeld_anzeigen()
{
TbxMonat.Text = _Date_Start.ToString("MMMM yyyy");
}
public void Set_Position_of_Element_in_a_Grid(UIElement element, int rowNr, int colNr, int rowSpan = 1, int colSpan = 1)
{
Grid.SetRow(element, rowNr);
Grid.SetRowSpan(element, rowSpan);
Grid.SetColumn(element, colNr);
Grid.SetColumnSpan(element, colSpan);
}
public void Insert_Label_in_Grid_Plan(string sLabel, int rowNr, int colNr, int rowSpan = 1, int colSpan = 1, string sColor = "#F0F0F0F0", HorizontalAlignment align_Horizontal = HorizontalAlignment.Center)
{
Insert_Label_in_Grid(Grid_Plan, sLabel, rowNr, colNr, rowSpan, colSpan, sColor, align_Horizontal);
}
public void Insert_Label_in_Grid(Grid grid, string sLabel, int rowNr, int colNr, int rowSpan = 1, int colSpan = 1, string sColor = "#F0F0F0F0", HorizontalAlignment align_Horizontal = HorizontalAlignment.Center)
{
//-------------< Insert_Label_in_Grid() >-------------
//-< day_background >-
Border pnlBackground = new Border();
Color color = (Color)ColorConverter.ConvertFromString(sColor);
pnlBackground.Background = new SolidColorBrush(color);
pnlBackground.Margin = new Thickness(1);
Set_Position_of_Element_in_a_Grid(pnlBackground, rowNr, colNr, rowSpan, colSpan);
grid.Children.Add(pnlBackground);
//-< day_background >-
Label lblSchicht = new Label();
lblSchicht.Content = sLabel;
lblSchicht.HorizontalAlignment = align_Horizontal;
Set_Position_of_Element_in_a_Grid(lblSchicht, rowNr, colNr, rowSpan, colSpan);
grid.Children.Add(lblSchicht);
//-</ day_label >-
//-------------</ Insert_Label_in_Grid() >-------------
}
public void Add_Row_Grid_Plan()
{
RowDefinition row = new RowDefinition();
row.Height = new GridLength(_row_Height);
Grid_Plan.RowDefinitions.Add(row);
}
//=============</ region: Methoden >=============
#endregion
#region Grid_Plan
//=============< region: Grid_Plan >=============
private void Grid_Plan_laden()
{
//---------------------< Grid_Plan_laden() >---------------------
Grid_Plan_Clear_Children();
//Grid_Plan_Panels_einfuegen();
Grid_Plan_Column0_laden();
Grid_Plan_Row_Header_fuellen();
Grid_Plan_Mitarbeiter_fuellen();
//---------------------</ Grid_Plan_laden() >---------------------
}
private void Grid_Plan_Clear_Children()
{
//---------------------< Grid_Plan_clear() >---------------------
Grid_Plan.Children.Clear();
Grid_Plan.RowDefinitions.Clear();
Grid_Plan.ColumnDefinitions.Clear();
//---------------------</ Grid_Plan_clear() >---------------------
}
private void Grid_Plan_Column0_laden()
{
//---------------------< Grid_Plan_Columns_laden() >---------------------
//--------< Columns >--------
//< column_Maschinen >
ColumnDefinition column = new ColumnDefinition();
column.Name = "col_Mitarbeiter";
column.Width = new GridLength(_Breite_Mitarbeiter);
Grid_Plan.ColumnDefinitions.Add(column);
//</ column_Maschinen >
//---------------------</ Grid_Plan_Columns_laden() >---------------------
}
private void Grid_Plan_Row_Header_fuellen()
{
//--------< Grid_Plan_Row1_fuellen() >------------
Add_Row_Grid_Plan(); //Tag rowNr=0
Add_Row_Grid_Plan(); //Schicht rowNr=1
//------< Header_Tage_fuellen >------
int iDaysMonth = (int) (_Date_Start.AddMonths(1) - _Date_Start).TotalDays ;
for (int iDay = 0; iDay < iDaysMonth; iDay++)
{
DateTime day = _Date_Start.AddDays(iDay);
//-< day_Header >-
Insert_Label_in_Grid_Plan(day.ToString("dd"), 0, 1 + iDay , 1, 1, _Color_Header_Days);
int intSpalteDay = iDay ;
string sDatePlan = day.ToString("yyyyMMdd");
//-</ day_Header >-
//< column >
ColumnDefinition column = new ColumnDefinition();
column = new ColumnDefinition();
column.Width = new GridLength(_Breite_Tag);
column.Name = "col_DatePlan_" + sDatePlan ;
column.ToolTip = column.Name;
Grid_Plan.ColumnDefinitions.Add(column);
//</ column >
//---</ Schicht >---
//----</ day_TagesSchichten >----
}
//------</ Header_Tage_fuellen >------
//--------</ Grid_Plan_Row1_fuellen() >------------
}
private void Grid_Plan_Mitarbeiter_fuellen()
{
//--------< Grid_Plan_Mitarbeiter_fuellen() >------------
//< Header_Maschinen >
Insert_Label_in_Grid_Plan("Tage:", 0, 0, 1, 1,_Color_Header_Days, HorizontalAlignment.Right);
Insert_Label_in_Grid_Plan("Mitarbeiter",1, 0, 1, 1);
//</ Header_Maschinen >
int rowNr = Grid_Plan.RowDefinitions.Count - 1;
//--< Maschinen_holen >--
var query_Mitarbeiter = (from tbl in db.tblBase_Mitarbeiter orderby tbl.SortierNr ascending select tbl);
//--</ Maschinen_holen >--
//------< Loop@: Maschinen >------
foreach (var mitarabeiter in query_Mitarbeiter)
{
//----< Maschine >----
rowNr++;
//< Label_Mitarbeiter >
Add_Row_Grid_Plan();
Insert_Label_in_Grid_Plan(mitarabeiter.Nachname, rowNr, 0, 1, 1, _sColor_Header_Mitarbeiter);
//</ Label_Mitarbeiter >
int nColumns = Grid_Plan.ColumnDefinitions.Count();
for (int iColNr = 1; iColNr < nColumns; iColNr++) //0=maschinen
{
//----< insert_CellBorder >----
//--< Spalte_berechnen >--
string sColumnName = Grid_Plan.ColumnDefinitions[iColNr].Name;
string sDatePlan = clsSchichtplan.berechne_DatePlan_aus_ColumnName(sColumnName);
//--</ Spalte_berechnen >--
//-< panel >-
Border cellBorder = new Border();
Color color = (Color)ColorConverter.ConvertFromString(_sColor_Cell);
cellBorder.Background = new SolidColorBrush(color);
cellBorder.Margin = new Thickness(1);
//cellBorder.MouseDown += CellBorder_Clicked;
//--< Cell_name >--
string sCellBorder_Name = "cellBorder_IDMitarbeiter_" + mitarabeiter.IDMitarbeiter + "_DatePlan_" + sDatePlan ;
cellBorder.Name = sCellBorder_Name;
//--</ Cell_name >--
Set_Position_of_Element_in_a_Grid(cellBorder, rowNr, iColNr);
Grid_Plan.Children.Add(cellBorder);
//-</ panel >-
//----</ insert_CellBorder >----
}
}
//--</ @Loop: Mitarbeiter >--
//--------</ Grid_Plan_Mitarbeiter_fuellen() >------------
}
private void Grid_Plan_Eintraege_fuellen()
{
//--------< Grid_Plan_Eintraege_fuellen() >------------
////--< Maschinen_holen >--
//var query_Eintraege = (from tbl in db.tbl_Schichtplan orderby tbl.IDSchichtplan descending select tbl);
////--</ Maschinen_holen >--
////------< Loop@: Eintraege >------
//foreach (var eintrag in query_Eintraege)
//{
// //------< MaschinenGruppen >------
// //< get_Eintrag >
// int IDSchichtplan = eintrag.IDSchichtplan;
// int IDMaschine = eintrag.IDMaschine ?? 0;
// int IDSchicht = eintrag.IDSchicht ?? 0;
// int IDMitarbeiter = eintrag.IDMitarbeiter ?? 0;
// int PosBesetzung = eintrag.PosBesetzung ?? 0;
// DateTime DatePlan = eintrag.Date_Plan ?? DateTime.Today;
// string sDatePlan = DatePlan.ToString("yyyyMMdd");
// //< get_Eintrag >
// string sCellBorder_Name = "cellBorder_IDMaschine_" + IDMaschine + "_DatePlan_" + sDatePlan + "_IDSchicht_" + IDSchicht + "_PosBesetzung_" + PosBesetzung ;
// //Test: cellBorder_IDMaschine_6_IDSchicht_1_PosBesetzung_1_DatePlan_20190117
// //Test: var element = Grid_Plan.FindName("cellBorder_IDMaschine_6_IDSchicht_1_PosBesetzung_2_DatePlan_20190119");
// Border target_panel = find_Element(Grid_Plan, sCellBorder_Name);
// //----< insert_CellBorder >----
// if (target_panel != null)
// {
// var mitarbeiter = db.tblBase_Mitarbeiter.FirstOrDefault(tbl => tbl.IDMitarbeiter == IDMitarbeiter);
// if (mitarbeiter!=null)
// {
// string sMitarbeitername = mitarbeiter.Nachname;
// Button btnMitarbeiter_Schicht = new Button();
// string sColor = "#FFFF0000";
// btnMitarbeiter_Schicht.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString(sColor));
// btnMitarbeiter_Schicht.Content = sMitarbeitername;
// btnMitarbeiter_Schicht.Name = "button_IDSchichtplan_" + IDSchichtplan;
// //btnMitarbeiter_Schicht.PreviewMouseLeftButtonDown += new MouseButtonEventHandler(Start_Drag_Event);
// target_panel.Child = btnMitarbeiter_Schicht;
// }
// }
// //------</ Eintrag >------
//}
////------</ Loop@: Eintraege >------
//--------</ Grid_Plan_Eintraege_fuellen() >------------
}
private Border find_Element(Grid parent, string name_of_ChildControl)
{
//----------------< find_UserControl() >----------------
foreach (FrameworkElement element in parent.Children)
{
if (element.Name == name_of_ChildControl)
{
//--< found >--
//*return and break
return element as Border;
//--</ found >--
}
}
return null;
//----------------</ find_UserControl() >----------------
}
//=============</ region: Grid_Plan >=============
#endregion /Grid_Plan
}
}
|