//primeste tabela cu toate planificarile si le salveaza doar pe celea care sunt intre cele 2 date selectate
        public static DataTable Fill(DataTable table, DateTime datastart, DateTime datastop)
        {
            List <DayModel> Rows = table.AsEnumerable().ToList().Select(x => DayModel.Parse(x)).ToList();

            table.Clear();

            foreach (DayModel day in Rows)
            {
                DataRow  row    = table.NewRow();
                DayModel newDay = new DayModel();
                newDay.Nume      = day.Nume;
                newDay.Frecvneta = day.Frecvneta;

                //daca este ocazional atunci o adauga cu modificar a.i. sa se incadreze intre cele 2 date
                if (day.Frecvneta == "ocazional")
                {
                    //daca planificarea are cel putin 1 zi favorabila atunci o adauga
                    if (day.DataStart <= datastop && day.DataStart >= datastart || day.DataStop >= datastart && day.DataStop <= datastop)
                    {
                        //modifica planificarea a.i. sa corespunda intervalului ales
                        newDay.DataStart = new DateTime(Math.Max(day.DataStart.Ticks, datastart.Ticks));
                        newDay.DataStop  = new DateTime(Math.Min(day.DataStop.Ticks, datastop.Ticks));

                        //creeaza randul respectiv
                        row = FillRow(row, newDay);
                        //adauga randul
                        table.Rows.Add(row);
                    }
                }
                //daca este anual
                else if (day.Frecvneta == "anual")
                {
                    //daca ziua data se incadreaza intre zilele anului corespunzatoare intervalului ales
                    if (datastart.DayOfYear <= day.Ziua && datastop.DayOfYear >= day.Ziua)
                    {
                        //creeaza data corespunzatoare zilei din an
                        DateTime date = new DateTime(datastart.Year, 1, 1).AddDays(day.Ziua - 1);

                        newDay.DataStart = newDay.DataStop = date;

                        //creeeaz si adauga randul
                        row = FillRow(row, newDay);
                        table.Rows.Add(row);
                    }
                }
                //daca este lunal
                else
                {
                    //creeaza data corespunzatoare zilei din luna
                    DateTime date = new DateTime(datastart.Year, datastart.Month, day.Ziua);

                    //verifica toate zilele care se afla intre luni intervalului
                    while (date <= datastop)
                    {
                        if (date >= datastart)
                        {
                            newDay.DataStart = newDay.DataStop = date;

                            row = table.NewRow();
                            row = FillRow(row, newDay);
                            table.Rows.Add(row);
                        }

                        date = date.AddMonths(1);
                    }
                }
            }

            return(table);
        }