private List <object> PopulateAnsatteToViewList(List <object> sfoReportViewList, IEnumerable <Ansatt> ansatte, TimeSpan time, TimeSpan endTime, TimeSpan interval, string description, bool startTid)
        {
            description = string.Empty; // INFO: not in use at the moment...

            IEnumerable <Ansatt> ansatteMandag;
            IEnumerable <Ansatt> ansatteTirsdag;
            IEnumerable <Ansatt> ansatteOnsdag;
            IEnumerable <Ansatt> ansatteTorsdag;
            IEnumerable <Ansatt> ansatteFredag;

            var numberOfAddedListViewRows = 0;

            while (time < endTime)
            {
                // INFO: used to make propertyname typesafe/statically typed
                var ansattTilstede = new AnsattTilstede();

                if (startTid)
                {
                    ansatteMandag  = ansatte.Where(ansatt => AnsattTilstedePåTid(ansatt, time, typeof(AnsattTilstede).GetProperty(Utilities.GetPropertyName(() => ansattTilstede.MandagStart))));
                    ansatteTirsdag = ansatte.Where(ansatt => AnsattTilstedePåTid(ansatt, time, typeof(AnsattTilstede).GetProperty(Utilities.GetPropertyName(() => ansattTilstede.TirsdagStart))));
                    ansatteOnsdag  = ansatte.Where(ansatt => AnsattTilstedePåTid(ansatt, time, typeof(AnsattTilstede).GetProperty(Utilities.GetPropertyName(() => ansattTilstede.OnsdagStart))));
                    ansatteTorsdag = ansatte.Where(ansatt => AnsattTilstedePåTid(ansatt, time, typeof(AnsattTilstede).GetProperty(Utilities.GetPropertyName(() => ansattTilstede.TorsdagStart))));
                    ansatteFredag  = ansatte.Where(ansatt => AnsattTilstedePåTid(ansatt, time, typeof(AnsattTilstede).GetProperty(Utilities.GetPropertyName(() => ansattTilstede.FredagStart))));
                }
                else
                {
                    ansatteMandag  = ansatte.Where(ansatt => AnsattTilstedePåTid(ansatt, time, typeof(AnsattTilstede).GetProperty(Utilities.GetPropertyName(() => ansattTilstede.MandagSlutt))));
                    ansatteTirsdag = ansatte.Where(ansatt => AnsattTilstedePåTid(ansatt, time, typeof(AnsattTilstede).GetProperty(Utilities.GetPropertyName(() => ansattTilstede.TirsdagSlutt))));
                    ansatteOnsdag  = ansatte.Where(ansatt => AnsattTilstedePåTid(ansatt, time, typeof(AnsattTilstede).GetProperty(Utilities.GetPropertyName(() => ansattTilstede.OnsdagSlutt))));
                    ansatteTorsdag = ansatte.Where(ansatt => AnsattTilstedePåTid(ansatt, time, typeof(AnsattTilstede).GetProperty(Utilities.GetPropertyName(() => ansattTilstede.TorsdagSlutt))));
                    ansatteFredag  = ansatte.Where(ansatt => AnsattTilstedePåTid(ansatt, time, typeof(AnsattTilstede).GetProperty(Utilities.GetPropertyName(() => ansattTilstede.FredagSlutt))));
                }

                if (ansatteMandag.Count() > 0 ||
                    ansatteTirsdag.Count() > 0 ||
                    ansatteOnsdag.Count() > 0 ||
                    ansatteTorsdag.Count() > 0 ||
                    ansatteFredag.Count() > 0)
                {
                    var formattedTime = time.ToString(@"hh\:mm");

                    sfoReportViewList.Add(new
                    {
                        Description   = description,
                        MandagTid     = FormatTime(ansatteMandag, formattedTime),
                        MandagElever  = FormatAnsatte(ansatteMandag),
                        TirsdagTid    = FormatTime(ansatteTirsdag, formattedTime),
                        TirsdagElever = FormatAnsatte(ansatteTirsdag),
                        OnsdagTid     = FormatTime(ansatteOnsdag, formattedTime),
                        OnsdagElever  = FormatAnsatte(ansatteOnsdag),
                        TorsdagTid    = FormatTime(ansatteTorsdag, formattedTime),
                        TorsdagElever = FormatAnsatte(ansatteTorsdag),
                        FredagTid     = FormatTime(ansatteFredag, formattedTime),
                        FredagElever  = FormatAnsatte(ansatteFredag),
                        CSSClass      = numberOfAddedListViewRows == 0 ? "row-standard line-dashed" : "row-standard"
                    });

                    numberOfAddedListViewRows++;

                    // INFO: to make sure only distinct descriptions are added to list
                    description = string.Empty;
                }

                time = time.Add(interval);
            }

            return(sfoReportViewList);
        }
        private Ansatt UpdateDataSource()
        {
            var ansatt   = (Ansatt)Session["currentAnsatt"];
            var ansattId = ansatt.Id;

            ICollection <AnsattTilstede> ansattTilstedes = new List <AnsattTilstede>();

            foreach (var item in AnsattTilstedeListView.Items)
            {
                if (item.ItemType == ListViewItemType.DataItem)
                {
                    var idButton            = (Button)item.FindControl("IdButton");
                    var mandagStartTextBox  = (TextBox)item.FindControl("MandagStartTextBox");
                    var mandagSluttTextBox  = (TextBox)item.FindControl("MandagSluttTextBox");
                    var mandagFriCheckBox   = (CheckBox)item.FindControl("MandagFriCheckBox");
                    var tirsdagStartTextBox = (TextBox)item.FindControl("TirsdagStartTextBox");
                    var tirsdagSluttTextBox = (TextBox)item.FindControl("TirsdagSluttTextBox");
                    var tirsdagFriCheckBox  = (CheckBox)item.FindControl("TirsdagFriCheckBox");

                    var onsdagStartTextBox = (TextBox)item.FindControl("OnsdagStartTextBox");
                    var onsdagSluttTextBox = (TextBox)item.FindControl("OnsdagSluttTextBox");
                    var onsdagFriCheckBox  = (CheckBox)item.FindControl("OnsdagFriCheckBox");

                    var torsdagStartTextBox = (TextBox)item.FindControl("TorsdagStartTextBox");
                    var torsdagSluttTextBox = (TextBox)item.FindControl("TorsdagSluttTextBox");
                    var torsdagFriCheckBox  = (CheckBox)item.FindControl("TorsdagFriCheckBox");

                    var fredagStartTextBox = (TextBox)item.FindControl("FredagStartTextBox");
                    var fredagSluttTextBox = (TextBox)item.FindControl("FredagSluttTextBox");
                    var fredagFriCheckBox  = (CheckBox)item.FindControl("FredagFriCheckBox");

                    var skoleCheckBox = (CheckBox)item.FindControl("SkoleCheckBox");

                    var ukeTypeDropDown = (DropDownList)item.FindControl("UkeTypeDropDown");

                    var ansattTilstedeId = Convert.ToInt32(idButton.Text);

                    var ansattTilstede = new AnsattTilstede
                    {
                        Id           = ansattTilstedeId,
                        MandagStart  = string.IsNullOrWhiteSpace(mandagStartTextBox.Text) ? (TimeSpan?)null : TimeSpan.Parse(mandagStartTextBox.Text),
                        MandagSlutt  = string.IsNullOrWhiteSpace(mandagSluttTextBox.Text) ? (TimeSpan?)null : TimeSpan.Parse(mandagSluttTextBox.Text),
                        MandagFri    = mandagFriCheckBox.Checked,
                        TirsdagStart = string.IsNullOrWhiteSpace(tirsdagStartTextBox.Text) ? (TimeSpan?)null : TimeSpan.Parse(tirsdagStartTextBox.Text),
                        TirsdagSlutt = string.IsNullOrWhiteSpace(tirsdagSluttTextBox.Text) ? (TimeSpan?)null : TimeSpan.Parse(tirsdagSluttTextBox.Text),
                        TirsdagFri   = tirsdagFriCheckBox.Checked,
                        OnsdagStart  = string.IsNullOrWhiteSpace(onsdagStartTextBox.Text) ? (TimeSpan?)null : TimeSpan.Parse(onsdagStartTextBox.Text),
                        OnsdagSlutt  = string.IsNullOrWhiteSpace(onsdagSluttTextBox.Text) ? (TimeSpan?)null : TimeSpan.Parse(onsdagSluttTextBox.Text),
                        OnsdagFri    = onsdagFriCheckBox.Checked,
                        TorsdagStart = string.IsNullOrWhiteSpace(torsdagStartTextBox.Text) ? (TimeSpan?)null : TimeSpan.Parse(torsdagStartTextBox.Text),
                        TorsdagSlutt = string.IsNullOrWhiteSpace(torsdagSluttTextBox.Text) ? (TimeSpan?)null : TimeSpan.Parse(torsdagSluttTextBox.Text),
                        TorsdagFri   = torsdagFriCheckBox.Checked,
                        FredagStart  = string.IsNullOrWhiteSpace(fredagStartTextBox.Text) ? (TimeSpan?)null : TimeSpan.Parse(fredagStartTextBox.Text),
                        FredagSlutt  = string.IsNullOrWhiteSpace(fredagSluttTextBox.Text) ? (TimeSpan?)null : TimeSpan.Parse(fredagSluttTextBox.Text),
                        FredagFri    = fredagFriCheckBox.Checked,
                        Skole        = skoleCheckBox.Checked,
                        Ansatt       = ansatt,
                        UkeType      = UkeType.GetById(Convert.ToInt32(ukeTypeDropDown.SelectedValue))
                    };

                    ansattTilstedes.Add(ansattTilstede);
                }
            }

            IList <int> jobberIKlasserIds =
                (from ListItem listItem in JobberIKlasserListBox.Items
                 where listItem.Selected
                 select Convert.ToInt32(listItem.Value)).ToList();

            IList <int> jobberISfoIds =
                (from ListItem listItem in JobberISfosListBox.Items
                 where listItem.Selected
                 select Convert.ToInt32(listItem.Value)).ToList();

            ansatt.Update(
                NavnTextBox.Text,
                Convert.ToDecimal(StillingsStørrelseTextBox.Text),
                TlfNrTextBox.Text,
                Convert.ToInt32(AvdelingDropDown.SelectedValue),
                Convert.ToInt32(StillingsTypeDropDown.SelectedValue),
                jobberIKlasserIds,
                jobberISfoIds,
                ansattTilstedes);

            return(ansatt);
        }