public void Update(time_table param)
        {
            var timePoint = db.time_table.SingleOrDefault(
                x => x.user_id == param.user_id &&
                x.start_date.Year == param.start_date.Year &&
                x.start_date.Month == param.start_date.Month &&
                x.start_date.Day == param.start_date.Day
                );

            if (timePoint != null)
            {
                //TODO: Módosítás szebben?
                //db.Entry(timePoint).CurrentValues.SetValues(param);
                if (timePoint.start_date.Hour != param.start_date.Hour || timePoint.end_date.Hour != param.end_date.Hour)
                {
                    timePoint.user_id    = param.user_id;
                    timePoint.start_date = param.start_date;
                    timePoint.end_date   = param.end_date;
                    timePoint.paid_leave = param.paid_leave;
                    timePoint.sick_leave = param.sick_leave;
                    timePoint.update_at  = param.update_at;
                    Debug.Write("update");
                }
            }
        }
 public void Insert(time_table param)
 {
     if (Exists(param))
     {
         throw new Exception("Már létezik ilyen id!");
     }
     db.time_table.Add(param);
 }
 public bool Exists(time_table param)
 {
     return(db.time_table.Any(x => x.user_id == param.user_id &&
                              x.start_date.Year == param.start_date.Year &&
                              x.start_date.Month == param.start_date.Month &&
                              x.start_date.Day == param.start_date.Day
                              ));
 }
        public void Delete(time_table param)
        {
            var timePoint = db.time_table.SingleOrDefault(
                x => x.user_id == param.user_id &&
                x.start_date.Year == param.start_date.Year &&
                x.start_date.Month == param.start_date.Month &&
                x.start_date.Day == param.start_date.Day
                );

            db.time_table.Remove(timePoint);
        }
        public void GetGlobalTimeTable()
        {
            using (PositionsRepository repoPositions = new PositionsRepository())
            {
                int       selectedYear   = selectedDate.Year;
                int       selectedMonth  = selectedDate.Month;
                DataTable dt             = new DataTable();
                int       lastDayOfMonth = DateTime.DaysInMonth(selectedDate.Year, selectedDate.Month);

                //Oszlopok kialakítása
                dt.Columns.Add(new DataColumn(("Név"), typeof(string)));
                for (int i = 1; i <= lastDayOfMonth; i++)
                {
                    dt.Columns.Add(new DataColumn(("" + i), typeof(string)));
                }
                dt.Columns.Add(new DataColumn(("Id"), typeof(int)));

                BindingList <position> posList = repoPositions.getAllPositions();

                //Sorok kialakítása
                foreach (var positionItem in posList)
                {
                    dt.Rows.Add(positionItem.position_name);
                    foreach (var item in positionItem.user_data)
                    {
                        //A kiválasztott dátumkor már állományban volt
                        if ((item.first_working_day.Value.Year <= selectedYear && item.first_working_day.Value.Month <= selectedMonth) &&
                            //aktív állományban van vagy a kiválasztott hónapban lépett ki vagy attól régebben
                            (item.last_working_day == null || (item.last_working_day.Value.Year >= selectedYear && item.last_working_day.Value.Month >= selectedMonth)))
                        {
                            //Első oszlopban név kiíratása
                            dt.Rows.Add(item.personal_data.first_name + " " + item.personal_data.last_name);
                            //Utolsó oszlopba Névhez tartozó user_data ID kiíratása
                            dt.Rows[dt.Rows.Count - 1][dt.Columns.Count - 1] = item.id;
                            //Adott userhez tartozó beosztás lekérés (kiválasztott időszakra)
                            List <time_table> userTimeTable = new List <time_table>();
                            userTimeTable = item.time_table.Where(x => x.start_date.Year == selectedYear && x.start_date.Month == selectedMonth).ToList();
                            //Ha van a kiválasztott időszakra beosztása a neki létrehozott sorba kiíratás
                            if (userTimeTable.Count > 0)
                            {
                                //Oszlop index megfelel dátumnak(nap) (1 es oszlop indexbe kell hogy kerüljön elseje...)
                                for (int i = 1; i <= dt.Columns.Count - 2; i++)
                                {
                                    string cell = "";
                                    if (userTimeTable.Any(x => x.start_date.Day == i))
                                    {
                                        time_table dayTime = userTimeTable.SingleOrDefault(x => x.start_date.Day == i);
                                        if ((bool)dayTime.paid_leave)
                                        {
                                            cell = "FSZ";
                                        }
                                        else if ((bool)dayTime.sick_leave)
                                        {
                                            cell = "B";
                                        }
                                        else
                                        {
                                            int      startTime = dayTime.start_date.Hour;
                                            DateTime stopTime  = (DateTime)dayTime.end_date;
                                            cell = startTime + "-" + stopTime.Hour;
                                        }
                                    }

                                    dt.Rows[dt.Rows.Count - 1][i] = cell;
                                }
                            }
                        }
                    }
                }
                view.globalTimeTable = dt;
            }
        }