Readdy Write  
0,00 €
Your View Money
Views: Count
Self 20% 0
Your Content 60% 0

Users by Links 0
u1*(Content+Views) 10% 0
Follow-Follower 0
s2*(Income) 5% 0

Count
Followers 0
Login Register as User

Kalender Fehltage für Mitarbeiter

10.02.2019 (👁14396)

Kalender Fehltage fĂźr Mitarbeiter

Basis-Code zum Erstellen des Kalender Grids fßr Mitarbeiter Einträge

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

 

 

    }

}