Exemplo n.º 1
0
        private static void ConfigureMyWorkViews()
        {
            SPWeb configWeb = Utils.GetConfigWeb();

            List <MyWorkGridView> myWorkGridViews = MyWork.GetGlobalViews(configWeb).ToList();

            MyWorkGridView defaultView = myWorkGridViews.FirstOrDefault(view => view.Id.Equals("dv"));

            if (defaultView != null)
            {
                if (!defaultView.Cols.Split(',').Any(col => col.Split(':')[0].ToLower().Equals("workingon")))
                {
                    defaultView.Cols = defaultView.Cols + ",WorkingOn:95";

                    MyWork.SaveGlobalViews(defaultView, configWeb);
                }
            }

            myWorkGridViews = MyWork.GetGlobalViews(configWeb).ToList();

            bool workingOnViewExists = myWorkGridViews.Any(view => view.Name.Trim().ToLower().Equals("working on it"));

            if (!workingOnViewExists)
            {
                MyWorkGridView workingOnView = myWorkGridViews.FirstOrDefault(view => view.Id.Equals("dv"));

                if (workingOnView != null)
                {
                    workingOnView.Name    = "Working On It";
                    workingOnView.Id      = workingOnView.Name.Md5().ToLower();
                    workingOnView.Filters = "0|WorkingOn:1:11";
                    workingOnView.Default = false;

                    MyWork.SaveGlobalViews(workingOnView, configWeb);
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Configures the default columns.
        /// </summary>
        /// <param name="spList">The sp list.</param>
        /// <param name="datePattern">The date pattern.</param>
        /// <param name="currencyFormat">The currency format.</param>
        /// <param name="spWeb">The sp web.</param>
        /// <param name="workDayStartHour">The work day start hour.</param>
        /// <param name="workDayEndHour">The work day end hour.</param>
        /// <param name="ganttExclude">The gantt exclude.</param>
        /// <param name="layoutXml">The layout XML.</param>
        /// <param name="defaultColumns">The default columns.</param>
        private static void ConfigureDefaultColumns(SPList spList, string datePattern, string currencyFormat,
                                                    SPWeb spWeb, short workDayStartHour, short workDayEndHour,
                                                    string ganttExclude, ref XDocument layoutXml,
                                                    ref List <string> defaultColumns)
        {
            try
            {
                foreach (string col in new[] { "LeftCols", "Cols", "RightCols" })
                {
                    XElement colElement = layoutXml.Root.Element(col);
                    if (colElement == null)
                    {
                        continue;
                    }

                    foreach (XElement cElement in colElement.Elements("C"))
                    {
                        XAttribute nameAttribute = cElement.Attribute("Name");
                        if (nameAttribute == null)
                        {
                            continue;
                        }

                        string colName = nameAttribute.Value;
                        if (defaultColumns.Contains(colName))
                        {
                            continue;
                        }

                        defaultColumns.Add(colName);

                        if (!spList.Fields.ContainsFieldWithInternalName(colName))
                        {
                            continue;
                        }

                        SPField spField = spList.Fields.GetFieldByInternalName(colName);

                        string relatedGridType = Utils.GetRelatedGridType(spField);

                        string format = Utils.GetFormat(spField);
                        format = MyWork.GetRelatedGridFormat(relatedGridType, format, spField, spWeb);

                        if (spField.Type == SPFieldType.Number)
                        {
                            if (((SPFieldNumber)spField).ShowAsPercentage)
                            {
                                format = ",#0%";
                            }
                        }

                        if (spField.Type == SPFieldType.Currency)
                        {
                            cElement.Add(new XAttribute("Format", currencyFormat));
                        }
                        else if (relatedGridType.Equals("Date"))
                        {
                            cElement.Add(new XAttribute("Format", datePattern));
                        }
                        else if (!string.IsNullOrEmpty(format))
                        {
                            cElement.Add(new XAttribute("Format", format));
                        }
                    }

                    if (col.Equals("RightCols"))
                    {
                        colElement.Add(new XElement("C", new XAttribute("Name", "G"),
                                                    new XAttribute("GanttExclude", ganttExclude),
                                                    new XAttribute("GanttNewStart",
                                                                   string.Format("1/1/2000 {0}:00", workDayStartHour)),
                                                    new XAttribute("GanttNewEnd",
                                                                   string.Format("1/1/2000 {0}:00", workDayEndHour))));
                    }
                }
            }
            catch (Exception exception)
            {
                throw new APIException((int)Errors.ConfigureDefaultColumns, exception.GetBaseException().Message);
            }
        }
Exemplo n.º 3
0
        // Private Methods (5) 

        /// <summary>
        /// Configures the columns.
        /// </summary>
        /// <param name="spWeb">The sp web.</param>
        /// <param name="currencyFormat">The currency format.</param>
        /// <param name="headerElement">The header element.</param>
        /// <param name="colsElement">The cols element.</param>
        /// <param name="datePattern">The date pattern.</param>
        /// <param name="defaultColumns">The default columns.</param>
        /// <param name="fields">The fields.</param>
        /// <param name="spList">The sp list.</param>
        private static void ConfigureColumns(SPWeb spWeb, string currencyFormat, ref XElement headerElement,
                                             ref XElement colsElement,
                                             string datePattern, List <string> defaultColumns,
                                             IEnumerable <string> fields, SPList spList)
        {
            try
            {
                foreach (string field in fields)
                {
                    if (defaultColumns.Contains(field))
                    {
                        continue;
                    }
                    if (!spList.Fields.ContainsFieldWithInternalName(field))
                    {
                        continue;
                    }

                    SPField spField = spList.Fields.GetFieldByInternalName(field);

                    if (spField.InternalName.Equals("Title"))
                    {
                        continue;
                    }

                    string relatedGridType = Utils.GetRelatedGridType(spField);

                    string format = Utils.GetFormat(spField);
                    format = MyWork.GetRelatedGridFormat(relatedGridType, format, spField, spWeb);

                    var cElement = new XElement("C");

                    string gridSafeFieldName = Utils.ToGridSafeFieldName(spField.InternalName);

                    switch (spField.Type)
                    {
                    case SPFieldType.User:
                    case SPFieldType.Lookup:
                        gridSafeFieldName += "Text";
                        break;

                    case SPFieldType.Choice:
                        relatedGridType = "Html";
                        break;
                    }

                    if (defaultColumns.Contains(gridSafeFieldName))
                    {
                        continue;
                    }

                    cElement.Add(new XAttribute("Name", gridSafeFieldName));
                    cElement.Add(new XAttribute("Type", relatedGridType));

                    if (relatedGridType.Equals("Icon"))
                    {
                        cElement.Add(new XAttribute("IconAlign", "Center"));
                    }

                    if (spField.Type == SPFieldType.Number)
                    {
                        if (((SPFieldNumber)spField).ShowAsPercentage)
                        {
                            format = ",#0%";
                        }
                    }

                    if (spField.Type == SPFieldType.Currency)
                    {
                        cElement.Add(new XAttribute("Format", currencyFormat));
                    }
                    else if (relatedGridType.Equals("Date"))
                    {
                        cElement.Add(new XAttribute("Format", datePattern));
                    }
                    else if (!string.IsNullOrEmpty(format))
                    {
                        cElement.Add(new XAttribute("Format", format));
                    }

                    cElement.Add(new XAttribute("Visible", 0));

                    colsElement.Add(cElement);

                    headerElement.Add(new XAttribute(gridSafeFieldName, spField.Title));
                }
            }
            catch (Exception exception)
            {
                throw new APIException((int)Errors.ConfigureColumns, exception.GetBaseException().Message);
            }
        }
        // Protected Methods (1) 

        /// <summary>
        ///     Sends the tool part content to the specified HtmlTextWriter object, which writes the content to be rendered on the client.
        /// </summary>
        /// <param name="output">The HtmlTextWriter object that receives the tool part content.</param>
        protected override void RenderToolPart(HtmlTextWriter output)
        {
            var myWorkWebPart = (MyWorkWebPart)ParentToolPane.SelectedWebPart;

            string myWorkWebPartHtmlCode = Resources.MyWorkToolPart.Replace("_ID__", UniqueID.Md5());

            #region Get Settings

            string selectedLists = string.Empty;

            if (myWorkWebPart.SelectedLists != null)
            {
                IOrderedEnumerable <string> selLists = (myWorkWebPart.SelectedLists.Where(
                                                            selectedList => !string.IsNullOrEmpty(selectedList))
                                                        .Select(
                                                            selectedList =>
                                                            string.Format(@"'{0}'", selectedList))).ToList()
                                                       .OrderBy(
                    l =>
                    l);

                selectedLists = string.Join(",", selLists.ToArray());
            }

            string selectedFields = string.Empty;

            if (myWorkWebPart.SelectedFields != null)
            {
                IOrderedEnumerable <string> selFields = (myWorkWebPart.SelectedFields.Where(
                                                             selectedField => !string.IsNullOrEmpty(selectedField))
                                                         .Select(
                                                             selectedField =>
                                                             string.Format(
                                                                 @"{{InternalName:'{0}',PrettyName:'{1}'}}",
                                                                 selectedField,
                                                                 selectedField.ToPrettierName()))).ToList().
                                                        OrderBy(
                    f =>
                    f);

                selectedFields = string.Join(",", selFields.ToArray());
            }

            List <myworksettings.MWList> myWorkLists = myworksettings.GetMyWorkListsFromDb(_web,
                                                                                           MyWork.GetArchivedWebs(
                                                                                               _web.Site.ID));

            var includedMWLists = new List <string>();
            List <myworksettings.MWList> excludedMWLists = myWorkLists.ToList();

            if (myWorkWebPart.MyWorkSelectedLists.Count() > 0)
            {
                foreach (
                    myworksettings.MWList myWorkList in
                    myWorkLists.Where(myWorkList => myWorkWebPart.MyWorkSelectedLists.Contains(myWorkList.Name)))
                {
                    includedMWLists.Add(string.Format(@"{{Id:'{0}',Name:'{1}'}}", myWorkList.Id, myWorkList.Name));
                    excludedMWLists.Remove(myWorkList);
                }
            }
            else
            {
                includedMWLists = excludedMWLists.Select(excludedMWList => string.Format(@"{{Id:'{0}',Name:'{1}'}}",
                                                                                         excludedMWList.Id,
                                                                                         excludedMWList.Name)).ToList();

                excludedMWLists = new List <myworksettings.MWList>();
            }

            string includedMyWorkLists = string.Join(",", includedMWLists.ToArray());

            IEnumerable <string> excludedLists =
                excludedMWLists.Select(
                    excludedMWList =>
                    string.Format(@"{{Id:'{0}',Name:'{1}'}}", excludedMWList.Id,
                                  SPHttpUtility.HtmlEncode(excludedMWList.Name)));
            string excludedMyWorkLists = string.Join(",", excludedLists.ToArray());

            string crossSiteUrls = string.Empty;

            if (myWorkWebPart.CrossSiteUrls != null)
            {
                IOrderedEnumerable <string> crossSites = myWorkWebPart.CrossSiteUrls.Where(
                    crossSiteUrl => !string.IsNullOrEmpty(crossSiteUrl))
                                                         .Select(
                    crossSiteUrl =>
                    string.Format(@"'{0}'", crossSiteUrl))
                                                         .OrderBy(s => s);
                crossSiteUrls = string.Join(",", crossSites.ToArray());
            }

            var defaultGlobalViews = new List <string>();

            bool defaultViewFound = false;

            List <MyWorkGridView> myWorkGridViews =
                MyWork.GetGlobalViews(Utils.GetConfigWeb()).OrderBy(v => v.Name).ToList();

            foreach (MyWorkGridView myWorkGridView in myWorkGridViews)
            {
                bool defaultView = myWorkWebPart.DefaultGlobalView.Equals(myWorkGridView.Id);
                if (defaultView)
                {
                    defaultViewFound = true;
                }

                defaultGlobalViews.Add(string.Format(@"{{Id:'{0}',Name:'{1}',Default:{2}}}", myWorkGridView.Id,
                                                     myWorkGridView.Name, defaultView.Lc()));
            }

            defaultGlobalViews.Insert(0,
                                      string.Format(@"{{Id:'',Name:'Do Not Set View',Default:{0}}}",
                                                    (!defaultViewFound).Lc()));

            string objDefaultGlobalViews = string.Join(",", defaultGlobalViews.ToArray());

            bool agoFilterEnabled   = false;
            int  agoFilterDays      = 0;
            bool afterFilterEnabled = false;
            int  afterFilterDays    = 0;

            bool indicatorActive = true;
            int  indicatorDays   = 2;

            if (!string.IsNullOrEmpty(myWorkWebPart.DueDayFilter))
            {
                string[] filters = myWorkWebPart.DueDayFilter.Split('|');

                bool.TryParse(filters[0], out agoFilterEnabled);
                int.TryParse(filters[1], out agoFilterDays);
                bool.TryParse(filters[2], out afterFilterEnabled);
                int.TryParse(filters[3], out afterFilterDays);
            }

            if (!string.IsNullOrEmpty(myWorkWebPart.NewItemIndicator))
            {
                string[] settings = myWorkWebPart.NewItemIndicator.Split('|');

                bool.TryParse(settings[0], out indicatorActive);
                int.TryParse(settings[1], out indicatorDays);
            }

            string myWorkObjString =
                string.Format(
                    @"useCentralizedSettings:{0}, selectedLists:[{1}], selectedFields:[{2}], crossSiteUrls:[{3}], performanceMode:{4}, hideNewButton:{5}, allowEditToggle:{6}, defaultToEditMode:{7}, defaultGlobalViews:[{8}], includedMyWorkLists:[{9}], excludedMyWorkLists:[{10}], daysAgoEnabled:{11}, daysAfterEnabled:{12}, newItemIndicatorEnabled:{13}, daysAgo:'{14}', daysAfter:'{15}', newItemIndicator:'{16}', showToolbar:{17}",
                    myWorkWebPart.UseCentralizedSettings.Lc(), selectedLists, selectedFields, crossSiteUrls,
                    myWorkWebPart.PerformanceMode.Lc(), myWorkWebPart.HideNewButton.Lc(),
                    myWorkWebPart.AllowEditToggle.Lc(), myWorkWebPart.DefaultToEditMode.Lc(), objDefaultGlobalViews,
                    includedMyWorkLists, excludedMyWorkLists, agoFilterEnabled.Lc(),
                    afterFilterEnabled.Lc(), indicatorActive.Lc(),
                    agoFilterDays, afterFilterDays, indicatorDays, myWorkWebPart.ShowToolbar.Lc());

            myWorkWebPartHtmlCode = myWorkWebPartHtmlCode.Replace("objMyWork__VAL__", myWorkObjString);

            #endregion

            #region Get All Lists and Fields

            var listsAndFields = new Dictionary <string, List <string> >();
            foreach (SPList list in _web.Lists)
            {
                try
                {
                    listsAndFields.Add(list.Title,
                                       (list.Fields.Cast <SPField>()
                                        .Where(spField => !spField.Hidden && spField.Reorderable)
                                        .Select(spField => spField.InternalName)).ToList());
                }
                catch { }
            }

            string allListsAndFieldsString =
                string.Format(@"{0}",
                              string.Join(",", listsAndFields.Select(listAndFields =>
                                                                     string.Format(@"{{List:'{0}',Fields:[{1}]}}",
                                                                                   listAndFields.Key,
                                                                                   string.Join(",",
                                                                                               listAndFields.Value.
                                                                                               Select(
                                                                                                   field
                                                                                                   =>
                                                                                                   string
                                                                                                   .Format
                                                                                                   (
                                                                                                       @"{{InternalName:'{0}',PrettyName:'{1}'}}",
                                                                                                       field,
                                                                                                       field
                                                                                                       .
                                                                                                       ToPrettierName
                                                                                                           ()))
                                                                                               .
                                                                                               ToArray())))
                                          .ToArray()));

            myWorkWebPartHtmlCode = myWorkWebPartHtmlCode.Replace("allListsAndFields__VAL__", allListsAndFieldsString);

            #endregion

            #region Get Field Lists

            var fieldLists = new Dictionary <string, List <string> >();

            foreach (var listAndFields in listsAndFields)
            {
                foreach (string field in listAndFields.Value)
                {
                    if (!fieldLists.ContainsKey(field))
                    {
                        fieldLists.Add(field, new List <string>());
                    }
                    fieldLists[field].Add(listAndFields.Key);
                }
            }

            List <string> fields = fieldLists.Select(fieldList => string.Format(@"{0}:[{1}]", fieldList.Key,
                                                                                string.Join(",",
                                                                                            fieldList.Value.Select(
                                                                                                list =>
                                                                                                string.Format(@"'{0}'",
                                                                                                              list)).
                                                                                            ToArray())))
                                   .ToList();

            string fieldListsString = string.Join(",", fields.ToArray());

            myWorkWebPartHtmlCode = myWorkWebPartHtmlCode.Replace("fieldLists__VAL__", fieldListsString);

            string listWebsString = string.Join(",", (from myWorkList in myWorkLists
                                                      let webs =
                                                          myWorkList.Webs.Select(web => string.Format(@"'{0}'", web))
                                                          select
                                                          string.Format(@"{0}:[{1}]", myWorkList.Id,
                                                                        string.Join(",", webs.ToArray()))).ToArray());

            myWorkWebPartHtmlCode = myWorkWebPartHtmlCode.Replace("listWebs__VAL__", listWebsString);

            #endregion

            output.Write(myWorkWebPartHtmlCode);
        }
        async Task ExecuteLoadItemsCommand()
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;


            try
            {
                Common.Instance.CreateTable <MyWorkItem>();
                Projects.Clear();
                bool refresh = Common.RefreshProjectsList;
                if (LoadLocalContent && !refresh)
                {
                    //getting from local storage
                    SQLiteConnection connection = Common.Instance.InitializeDatabase();
                    Common.Instance.CreateTable <MyWorkItem>();

                    List <MyWorkItem> userWork = Common.Instance.GetUserWork().Where(x => x.WorkspaceId == Common.CurrentWorkspace.Id && x.ObjectType == "Project").OrderByDescending(x => x.IsActive).ToList();
                    if (userWork == null || userWork.Count == 0)
                    {
                        LoadLocalContent = false;
                    }
                    else
                    {
                        var orderedUserWork = GroupProjectsByStatus(userWork);

                        foreach (var item in orderedUserWork)
                        {
                            Projects.Add(item);
                        }
                    }
                }
                if (!LoadLocalContent || refresh)
                {
                    //getting new data


                    //Clear local storage
                    var listWork = Common.Instance.GetUserWork().Where(x => x.WorkspaceId == Common.CurrentWorkspace.Id && x.ObjectType == "Project");

                    if (listWork != null && listWork.ToList().Count > 0)
                    {
                        foreach (var item in listWork)
                        {
                            Common.Instance._sqlconnection.Delete(item);
                        }
                    }

                    MyWork myItems = await UsersService.GetMyWorkAsync(Common.CurrentWorkspace.UserID);

                    //MyWork myItems = await UsersService.GetMyProjectsAsync(Common.CurrentWorkspace.UserID);

                    if (myItems.Projects != null)
                    {
                        List <MyWorkItem> MyProjects = new List <MyWorkItem>();
                        foreach (var item in myItems.Projects)
                        {
                            try
                            {
                                if (Common.Filter.CompanyId != null && Common.Filter.CompanyId.HasValue)
                                {
                                    if (item.Companies != null && item.Companies.Count > 0)
                                    {
                                        if (!item.Companies.Any(x => x.Id == Common.Filter.CompanyId))
                                        {
                                            continue;
                                        }
                                    }
                                    else
                                    {
                                        continue;
                                    }
                                }

                                ProjectInsight.Models.Projects.Project project = (ProjectInsight.Models.Projects.Project)item;
                                MyWorkItem newItem = new MyWorkItem();
                                newItem.Id    = project.Id.Value;
                                newItem.Title = project.ItemNumberFullAndNameDisplayPreference; // project.ItemNumberFull + " - " + project.Name;

                                bool endDateIsPast = false;
                                //string displayDate = string.Empty;
                                string startDate = string.Empty;
                                string endDate   = string.Empty;
                                if (project.StartDateTimeUTC.HasValue && project.EndDateTimeUTC.HasValue)
                                {
                                    if (project.StartDateTimeUTC.Value.Date == project.EndDateTimeUTC.Value.Date)
                                    {
                                        startDate = string.Empty;
                                        endDate   = project.EndDateTimeUTC.Value.Date.ToString("M/d/yy");
                                    }
                                    else
                                    {
                                        startDate = project.StartDateTimeUTC.Value.Date.ToString("M/d/yy") + " - ";
                                        endDate   = project.EndDateTimeUTC.Value.Date.ToString("M/d/yy");
                                    }
                                    if (project.EndDateTimeUTC.Value.Date < DateTime.Now.Date)
                                    {
                                        endDateIsPast = true;
                                    }
                                }
                                else
                                {
                                    if (project.StartDateTimeUTC.HasValue)
                                    {
                                        startDate = project.StartDateTimeUTC.Value.Date.ToString("M/d/yy");
                                    }
                                    if (project.EndDateTimeUTC.HasValue)
                                    {
                                        endDate = project.EndDateTimeUTC.Value.Date.ToString("M/d/yy");

                                        if (project.EndDateTimeUTC.Value.Date < DateTime.Now.Date)
                                        {
                                            endDateIsPast = true;
                                        }
                                    }
                                }

                                //newItem.Line2a = displayDate;
                                newItem.Line2s = startDate;
                                newItem.Line2e = endDate;

                                newItem.Line2Color = endDateIsPast ? ConvertColorToHex((Color)Application.Current.Resources["RedTextColor"]) : ConvertColorToHex((Color)Application.Current.Resources["BlackTextColor"]);


                                newItem.Line3 = project.ProjectStatus != null ? project.ProjectStatus.Name : "";
                                newItem.Line4 = project.PrimaryProjectManager != null ? project.PrimaryProjectManager.FirstName + " " + project.PrimaryProjectManager.LastName : "";

                                newItem.Icon     = "item_project.png";
                                newItem.ItemType = ItemType.Projects;
                                newItem.Url      = item.UrlFull;

                                newItem.WorkspaceId = Common.CurrentWorkspace.Id;
                                newItem.ProjectId   = Guid.Empty;
                                newItem.ObjectType  = project.Type;
                                newItem.isItem      = true;
                                //string color = ExtensionMethods.GetHexString((Color)Application.Current.Resources["BlackTextColor"]);
                                newItem.TitleColor = ConvertColorToHex((Color)Application.Current.Resources["BlackTextColor"]);
                                // Remarks:
                                //     Possible Values: 0 - Active 1 - Archive 2 - Planning 3 - Template 4 - Project
                                //     Baseline 5 - To Be Deleted 6 - Change Order

                                //newItem.ProjectState = project.ProjectState ?? 0;
                                newItem.IsActive = project.ProjectStatus != null ? project.ProjectStatus.IsActive.Value : false;

                                var userWork = Common.Instance.GetUserWork().Where(x => x.WorkspaceId == Common.CurrentWorkspace.Id && x.ProjectId == project.Id);
                                if (userWork != null && userWork.Count() > 0)
                                {
                                    newItem.TasksCount = userWork.Count();
                                }


                                MyProjects.Add(newItem);
                            }
                            catch (Exception ex)
                            {
                            }
                        }


                        var orderedUserWork = GroupProjectsByStatus(MyProjects.OrderByDescending(x => x.IsActive).ToList());

                        foreach (var item in orderedUserWork)
                        {
                            Projects.Add(item);
                            Common.Instance._sqlconnection.Insert(item);
                        }
                    }
                }



                if (Projects == null || Projects.Count == 0)
                {
                    IsProjectsEmpty = true;
                }
                else
                {
                    IsProjectsEmpty = false;
                }

                Common.Instance.bottomNavigationViewModel.NumberProjectItems = (Projects == null ? 0 : Projects.Where(x => x.isItem).Count());
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
            finally
            {
                IsBusy = false;
            }
        }
Exemplo n.º 6
0
        async Task ExecuteLoadItemsCommand(Guid?parentId, String ObjectType)
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;

            bool isFilteredList = true;

            if ((parentId == null || parentId == Guid.Empty) && ObjectType == null)
            {
                isFilteredList = false;
            }

            try
            {
                Common.Instance.CreateTable <MyWorkItem>();
                Items.Clear();
                bool refresh = Common.RefreshWorkList;
                if (LoadLocalContent && !refresh)
                {
                    //getting from local storage
                    SQLiteConnection connection = Common.Instance.InitializeDatabase();
                    Common.Instance.CreateTable <MyWorkItem>();

                    var userWork = Common.Instance.GetUserWork().Where(x => x.WorkspaceId == Common.CurrentWorkspace.Id && x.ObjectType != "Project");

                    if (userWork == null || userWork.Count() == 0)
                    {
                        LoadLocalContent = false;
                    }
                    else
                    {
                        if (isFilteredList)
                        {
                            var filteredList = userWork.Where(x => (x.ObjectType == ObjectType || ObjectType == "All") && x.ProjectId == parentId);
                            foreach (var item in filteredList)
                            {
                                Items.Add(item);
                            }
                        }
                        else
                        {
                            foreach (var item in userWork)
                            {
                                Items.Add(item);
                            }
                        }
                    }
                }
                if (!LoadLocalContent || refresh)
                {
                    //getting new data


                    MyWork myItems = await UsersService.GetMyWorkAsync(Common.CurrentWorkspace.UserID);

                    Common.Instance.bottomNavigationViewModel.NumberProjectItems = (myItems.Projects == null || Common.Filter.CompanyId != null ? 0 : myItems.Projects.Count());

                    List <ApiModelBase> items;


                    items = myItems.ItemsInOrder;

                    if (items != null)
                    {
                        foreach (var item in items)
                        {
                            try
                            {
                                if (isFilteredList)
                                {
                                    if (!(item.Type == ObjectType || ObjectType == "All"))
                                    {
                                        continue;
                                    }
                                }

                                if (item.Type == "Task")
                                {
                                    MyWorkItem newItem = new MyWorkItem();
                                    ProjectInsight.Models.Tasks.Task task = (ProjectInsight.Models.Tasks.Task)item;

                                    if (isFilteredList)
                                    {
                                        if (task.Project_Id == null || task.Project_Id.Value != parentId)
                                        {
                                            continue;
                                        }
                                    }


                                    if (Common.Filter.CompanyId != null && Common.Filter.CompanyId.HasValue)
                                    {
                                        if (task.Project.Companies != null && task.Project.Companies.Count > 0)
                                        {
                                            if (!task.Project.Companies.Any(x => x.Id == Common.Filter.CompanyId))
                                            {
                                                continue;
                                            }
                                        }
                                        else
                                        {
                                            continue;
                                        }
                                    }


                                    newItem.Id    = task.Id.Value;
                                    newItem.Title = task.Name;

                                    bool endDateIsPast = false;
                                    //string displayDate = string.Empty;
                                    string startDate = string.Empty;
                                    string endDate   = string.Empty;

                                    if (task.StartDateTimeUTC.HasValue && task.EndDateTimeUTC.HasValue)
                                    {
                                        if (task.StartDateTimeUTC.Value.Date == task.EndDateTimeUTC.Value.Date)
                                        {
                                            startDate = string.Empty;
                                            endDate   = task.EndDateTimeUTC.Value.Date.ToString("M/d/yy");
                                        }
                                        else
                                        {
                                            startDate = task.StartDateTimeUTC.Value.Date.ToString("M/d/yy") + " - ";
                                            endDate   = task.EndDateTimeUTC.Value.Date.ToString("M/d/yy");
                                        }
                                        if (task.EndDateTimeUTC.Value.Date < DateTime.Now.Date)
                                        {
                                            endDateIsPast = true;
                                        }
                                    }
                                    else
                                    {
                                        if (task.StartDateTimeUTC.HasValue)
                                        {
                                            startDate = task.StartDateTimeUTC.Value.Date.ToString("M/d/yy") + " - ";
                                        }
                                        if (task.EndDateTimeUTC.HasValue)
                                        {
                                            endDate = task.EndDateTimeUTC.Value.Date.ToString("M/d/yy");

                                            if (task.EndDateTimeUTC.Value.Date < DateTime.Now.Date)
                                            {
                                                endDateIsPast = true;
                                            }
                                        }
                                    }

                                    //newItem.Line2a = displayDate;
                                    newItem.Line2s = startDate;
                                    newItem.Line2e = endDate;

                                    newItem.Line2Color = endDateIsPast ? ExtensionMethods.ConvertColorToHex((Color)Application.Current.Resources["RedTextColor"]) : ExtensionMethods.ConvertColorToHex((Color)Application.Current.Resources["BlackTextColor"]);

                                    if (task.Project != null)
                                    {
                                        newItem.Line3 = task.Project.ItemNumberFullAndNameDisplayPreference;
                                    }
                                    //newItem.Line3 = task.ItemNumberFull + " - " + task.Project.Name;

                                    newItem.Icon     = "item_task.png";
                                    newItem.ItemType = ItemType.Task;

                                    newItem.WorkspaceId = Common.CurrentWorkspace.Id;
                                    newItem.ProjectId   = task.Project_Id != null ? task.Project_Id.Value : Guid.Empty;
                                    newItem.ObjectType  = task.Type;
                                    newItem.TitleColor  = "#000000";
                                    Items.Add(newItem);
                                }
                                else if (item.Type == "Issue")
                                {
                                    MyWorkItem newItem = new MyWorkItem();
                                    ProjectInsight.Models.Issues.Issue issue = (ProjectInsight.Models.Issues.Issue)item;

                                    if (issue.ProjectAffiliation != null)
                                    {
                                    }
                                    if (isFilteredList)
                                    {
                                        if (issue.ProjectAffiliation_Id == null || issue.ProjectAffiliation_Id.Value != parentId)
                                        {
                                            continue;
                                        }
                                    }

                                    if (Common.Filter.CompanyId != null && Common.Filter.CompanyId.HasValue)
                                    {
                                        if (issue.ProjectAffiliation.Companies != null && issue.ProjectAffiliation.Companies.Count > 0)
                                        {
                                            if (!issue.ProjectAffiliation.Companies.Any(x => x.Id == Common.Filter.CompanyId))
                                            {
                                                continue;
                                            }
                                        }
                                        else
                                        {
                                            continue;
                                        }
                                    }
                                    newItem.Id    = issue.Id.Value;
                                    newItem.Title = issue.Name;

                                    bool endDateIsPast = false;
                                    //string displayDate = string.Empty;
                                    string startDate = string.Empty;
                                    string endDate   = string.Empty;
                                    if (issue.StartDateTimeUTC.HasValue && issue.EndDateTimeUTC.HasValue)
                                    {
                                        if (issue.StartDateTimeUTC.Value.Date == issue.EndDateTimeUTC.Value.Date)
                                        {
                                            startDate = string.Empty;
                                            endDate   = issue.EndDateTimeUTC.Value.Date.ToString("M/d/yy");
                                        }
                                        else
                                        {
                                            startDate = issue.StartDateTimeUTC.Value.Date.ToString("M/d/yy") + " - ";
                                            endDate   = issue.EndDateTimeUTC.Value.Date.ToString("M/d/yy");
                                        }
                                        if (issue.EndDateTimeUTC.Value.Date < DateTime.Now.Date)
                                        {
                                            endDateIsPast = true;
                                        }
                                    }
                                    else
                                    {
                                        if (issue.StartDateTimeUTC.HasValue)
                                        {
                                            startDate = issue.StartDateTimeUTC.Value.Date.ToString("M/d/yy");
                                        }
                                        if (issue.EndDateTimeUTC.HasValue)
                                        {
                                            endDate = issue.EndDateTimeUTC.Value.Date.ToString("M/d/yy");

                                            if (issue.EndDateTimeUTC.Value.Date < DateTime.Now.Date)
                                            {
                                                endDateIsPast = true;
                                            }
                                        }
                                    }

                                    //newItem.Line2a = displayDate;
                                    newItem.Line2s = startDate;
                                    //newItem.Line2e = endDate;

                                    newItem.Line2Color = endDateIsPast ? ExtensionMethods.ConvertColorToHex((Color)Application.Current.Resources["RedTextColor"]) : ExtensionMethods.ConvertColorToHex((Color)Application.Current.Resources["BlackTextColor"]);

                                    string priority  = issue.IssuePriority != null ? issue.IssuePriority.Name : "";
                                    string status    = issue.IssueStatusType != null ? issue.IssueStatusType.Name : "";
                                    string separator = " - ";
                                    if (String.IsNullOrEmpty(priority))
                                    {
                                        separator = "";
                                    }

                                    newItem.Line2e = String.Format("{0}{1}{2}", endDate, separator, priority);

                                    //newItem.Line3 = String.Format("{0}{1}{2}", prority, separator, status);
                                    newItem.Line3 = status;

                                    //newItem.Line4 = issue.ItemNumberFull + " - " + issue.ProjectAffiliation.Name;
                                    if (issue.ProjectAffiliation != null)
                                    {
                                        newItem.Line4 = issue.ProjectAffiliation.ItemNumberFullAndNameDisplayPreference;
                                    }
                                    newItem.Icon     = "item_issue.png";
                                    newItem.ItemType = ItemType.Issue;

                                    newItem.WorkspaceId = Common.CurrentWorkspace.Id;
                                    newItem.ProjectId   = issue.ProjectAffiliation_Id != null ? issue.ProjectAffiliation_Id.Value : Guid.Empty;
                                    newItem.ObjectType  = issue.Type;
                                    newItem.TitleColor  = "#000000";
                                    Items.Add(newItem);
                                }
                                else if (item.Type == "ToDo")
                                {
                                    MyWorkItem newItem = new MyWorkItem();
                                    ProjectInsight.Models.ToDos.ToDo toDo = (ProjectInsight.Models.ToDos.ToDo)item;
                                    if (isFilteredList)
                                    {
                                        if (toDo.ProjectAffiliation_Id == null || toDo.ProjectAffiliation_Id.Value != parentId)
                                        {
                                            continue;
                                        }
                                    }

                                    if (Common.Filter.CompanyId != null && Common.Filter.CompanyId.HasValue)
                                    {
                                        if (toDo.ProjectAffiliation.Companies != null && toDo.ProjectAffiliation.Companies.Count > 0)
                                        {
                                            if (!toDo.ProjectAffiliation.Companies.Any(x => x.Id == Common.Filter.CompanyId))
                                            {
                                                continue;
                                            }
                                        }
                                        else
                                        {
                                            continue;
                                        }
                                    }

                                    newItem.Id    = toDo.Id.Value;
                                    newItem.Title = toDo.Name;
                                    bool endDateIsPast = false;
                                    //string displayDate = string.Empty;
                                    string startDate = string.Empty;
                                    string endDate   = string.Empty;
                                    if (toDo.StartDateTimeUTC.HasValue && toDo.EndDateTimeUTC.HasValue)
                                    {
                                        if (toDo.StartDateTimeUTC.Value.Date == toDo.EndDateTimeUTC.Value.Date)
                                        {
                                            startDate = string.Empty;
                                            endDate   = toDo.EndDateTimeUTC.Value.Date.ToString("M/d/yy");
                                        }
                                        else
                                        {
                                            startDate = toDo.StartDateTimeUTC.Value.Date.ToString("M/d/yy") + " - ";
                                            endDate   = toDo.EndDateTimeUTC.Value.Date.ToString("M/d/yy");
                                        }
                                        if (toDo.EndDateTimeUTC.Value.Date < DateTime.Now.Date)
                                        {
                                            endDateIsPast = true;
                                        }
                                    }
                                    else
                                    {
                                        if (toDo.StartDateTimeUTC.HasValue)
                                        {
                                            startDate = toDo.StartDateTimeUTC.Value.Date.ToString("M/d/yy");
                                        }
                                        if (toDo.EndDateTimeUTC.HasValue)
                                        {
                                            endDate = toDo.EndDateTimeUTC.Value.Date.ToString("M/d/yy");

                                            if (toDo.EndDateTimeUTC.Value.Date < DateTime.Now.Date)
                                            {
                                                endDateIsPast = true;
                                            }
                                        }
                                    }

                                    //newItem.Line2a = displayDate;
                                    newItem.Line2s = startDate;
                                    newItem.Line2e = endDate;

                                    newItem.Line2Color = endDateIsPast ? ExtensionMethods.ConvertColorToHex((Color)Application.Current.Resources["RedTextColor"]) : ExtensionMethods.ConvertColorToHex((Color)Application.Current.Resources["BlackTextColor"]);

                                    //newItem.Line3 = toDo.ItemNumberFull + " - " + toDo.ProjectAffiliation.Name;
                                    if (toDo.ProjectAffiliation != null)
                                    {
                                        newItem.Line3 = toDo.ProjectAffiliation != null ? toDo.ProjectAffiliation.ItemNumberFullAndNameDisplayPreference : String.Empty;
                                    }

                                    newItem.Icon     = "item_todo.png";
                                    newItem.ItemType = ItemType.Todo;

                                    newItem.WorkspaceId = Common.CurrentWorkspace.Id;
                                    newItem.ProjectId   = toDo.ProjectAffiliation_Id != null ? toDo.ProjectAffiliation_Id.Value : Guid.Empty;
                                    newItem.ObjectType  = toDo.Type;
                                    newItem.TitleColor  = "#000000";
                                    Items.Add(newItem);
                                }
                                else if (item.Type == "ApprovalRequest")
                                {
                                    if (isFilteredList)
                                    {
                                        continue;
                                    }

                                    if (Common.Filter.CompanyId != null && Common.Filter.CompanyId.HasValue)
                                    {
                                        continue;
                                    }



                                    MyWorkItem newItem = new MyWorkItem();
                                    ProjectInsight.Models.ApprovalRequests.ApprovalRequest approval = (ProjectInsight.Models.ApprovalRequests.ApprovalRequest)item;

                                    newItem.Id    = approval.Id.Value;
                                    newItem.Title = approval.Name;

                                    //string Approvers = string.Empty;
                                    //if (approval.ApprovalRequestApprovals != null && approval.ApprovalRequestApprovals.Count > 0)
                                    //{

                                    //    if (approval.ApprovalRequestApprovals.Count > 1)
                                    //        Approvers = "Approvers: ";
                                    //    else
                                    //        Approvers = "Approver: ";

                                    //    foreach (ApprovalRequestApproval app in approval.ApprovalRequestApprovals)
                                    //    {
                                    //        if (app.Approver == null) continue;
                                    //        string approver = app.Approver.FirstName + " " + app.Approver.LastName + ", ";
                                    //        Approvers += approver;

                                    //    }

                                    //    Approvers = Approvers.Substring(0, Approvers.Length - 2);

                                    //}
                                    //newItem.Line2s = Approvers;

                                    string deadLine = string.Empty;
                                    if (approval.DeadlineDateTimeUTC != null)
                                    {
                                        //if (approval.DeadlineDateTimeUTC.Value.Date < DateTime.Now.Date)
                                        //    newItem.Line2Color =ExtensionMethods.ConvertColorToHex((Color)Application.Current.Resources["RedTextColor"]);
                                        //else
                                        //    newItem.Line2Color = ExtensionMethods.ConvertColorToHex((Color)Application.Current.Resources["BlackTextColor"]);

                                        deadLine = approval.DeadlineDateTimeUTC.Value.Date.ToString("M/d/yy");
                                    }

                                    //Not Active, Pending, Approved, Denied
                                    switch (approval.ApprovalRequestStateType.Value)
                                    {
                                    case 0:
                                        newItem.Line3 = "Not Active ";
                                        break;

                                    case 1:
                                        newItem.Line3 = "Pending ";
                                        break;

                                    case 2:
                                        newItem.Line3 = "Approved ";
                                        break;

                                    case 3:
                                        newItem.Line3 = "Denied ";
                                        break;
                                    }

                                    newItem.Line2s = deadLine;
                                    newItem.Line3  = ((Enums.ApprovalRequestStateType)approval.ApprovalRequestStateType).ToString();

                                    newItem.Icon     = "item_approval_request.png";
                                    newItem.ItemType = ItemType.ApprovalRequests;

                                    newItem.WorkspaceId = Common.CurrentWorkspace.Id;
                                    newItem.ProjectId   = Guid.Empty;
                                    newItem.ObjectType  = approval.Type;
                                    newItem.TitleColor  = "#000000";
                                    Items.Add(newItem);
                                }
                                else if (item.Type == "TimeSheet")
                                {
                                    MyWorkItem newItem = new MyWorkItem();
                                    ProjectInsight.Models.TimeAndExpense.TimeSheet timeSheet = (ProjectInsight.Models.TimeAndExpense.TimeSheet)item;

                                    if (isFilteredList)
                                    {
                                        continue;
                                    }
                                    if (Common.Filter.CompanyId != null && Common.Filter.CompanyId.HasValue)
                                    {
                                        continue;
                                    }

                                    newItem.Id    = timeSheet.Id.Value;
                                    newItem.Title = timeSheet.Name;
                                    if (timeSheet.StartDate.HasValue)
                                    {
                                        newItem.Line2s = "Dates: " + timeSheet.StartDate.Value.ToString("M/d/yy") + " - ";
                                    }

                                    if (timeSheet.EndDate.HasValue)
                                    {
                                        newItem.Line2e = timeSheet.EndDate.Value.ToString("M/d/yy");
                                    }
                                    bool endDateIsPast = false;
                                    newItem.Line2Color = endDateIsPast ? ExtensionMethods.ConvertColorToHex((Color)Application.Current.Resources["RedTextColor"]) : ExtensionMethods.ConvertColorToHex((Color)Application.Current.Resources["BlackTextColor"]);

                                    if (!string.IsNullOrEmpty(timeSheet.Status))
                                    {
                                        newItem.Line3 = "Status: " + timeSheet.Status;
                                    }
                                    newItem.Icon        = "item_timesheet.png";
                                    newItem.ItemType    = ItemType.TimeSheet;
                                    newItem.WorkspaceId = Common.CurrentWorkspace.Id;
                                    newItem.ProjectId   = Guid.Empty;
                                    newItem.ObjectType  = timeSheet.Type;
                                    newItem.TitleColor  = "#000000";
                                    Items.Add(newItem);
                                }
                                else
                                {
                                }
                            }
                            catch (Exception ex)
                            {
                            }
                        }
                    }

                    if (!isFilteredList)
                    {
                        var listWork = Common.Instance.GetUserWork().Where(x => x.WorkspaceId == Common.CurrentWorkspace.Id && x.ObjectType != "Project");
                        if (listWork != null && listWork.ToList().Count > 0)
                        {
                            foreach (var item in listWork)
                            {
                                Common.Instance._sqlconnection.Delete(item);
                            }
                        }

                        if (Items != null)
                        {
                            foreach (MyWorkItem item in Items)
                            {
                                Common.Instance._sqlconnection.Insert(item);
                            }
                        }
                    }
                }



                if (Items == null || Items.Count == 0)
                {
                    IsItemsEmpty = true;
                }
                else
                {
                    IsItemsEmpty = false;
                }

                if (!isFilteredList)
                {
                    Common.Instance.bottomNavigationViewModel.NumberWorkListItems = (Items == null ? 0 : Items.Count());
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
            finally
            {
                IsBusy = false;
            }
        }
        // Public Methods (1) 

        public static List <MWList> GetMyWorkListsFromDb(SPWeb web, List <Guid> archivedWebs)
        {
            var lists = new List <MWList>();

            using (SqlConnection sqlConnection = MyWork.GetSpContentDbSqlConnection(web))
            {
                string webUrl = web.ServerRelativeUrl;
                webUrl = webUrl.Equals("/") ? string.Empty : webUrl.Substring(1);

                string archivedWebString = string.Join(",",
                                                       archivedWebs.Select(
                                                           archivedWeb => string.Format("'{0}'", archivedWeb)).
                                                       ToArray());

                string queryString =
                    @"
                            SELECT     dbo.AllLists.tp_Id, dbo.AllLists.tp_Title, dbo.Webs.FullUrl
                            FROM        dbo.Webs 
                            INNER JOIN  dbo.AllLists ON dbo.Webs.Id = dbo.AllLists.tp_WebId 
                            WHERE ";

                queryString += string.IsNullOrEmpty(webUrl)
                                   ? string.Format(@"(dbo.Webs.SiteId = '{0}')", web.Site.ID)
                                   : string.Format(
                    @"(dbo.Webs.FullUrl LIKE '{0}/%' OR dbo.Webs.FullUrl = '{0}')", webUrl);

                if (archivedWebs.Count > 0)
                {
                    queryString += string.Format(@" AND (dbo.AllLists.tp_WebId NOT IN ({0}))", archivedWebString);
                }

                queryString += string.Format(@" AND (dbo.AllLists.tp_ServerTemplate = {0})",
                                             MyWorkListServerTemplateId);

                using (var sqlCommand = new SqlCommand(queryString, sqlConnection))
                {
                    SPSecurity.RunWithElevatedPrivileges(sqlConnection.Open);

                    SqlDataReader sqlDataReader = sqlCommand.ExecuteReader();
                    while (sqlDataReader.Read())
                    {
                        string listId = string.Format("MW_{0}",
                                                      sqlDataReader.GetGuid(0).ToString().Replace("-", string.Empty));
                        string listName = sqlDataReader.GetString(1);
                        string listWeb  = sqlDataReader.GetString(2);

                        if (!lists.Exists(l => l.Name.Equals(listName)))
                        {
                            lists.Add(new MWList
                            {
                                Id   = listId,
                                Name = listName,
                                Webs = new List <string> {
                                    listWeb
                                }
                            });
                        }
                        else
                        {
                            foreach (
                                MWList mwList in
                                lists.Where(mwList => mwList.Name.Equals(listName)).Where(
                                    mwList => !mwList.Webs.Contains(listWeb)))
                            {
                                mwList.Webs.Add(listWeb);
                            }
                        }
                    }

                    sqlConnection.Close();
                }
            }

            return(lists);
        }
        /// <summary>
        ///     Loads the general settings.
        /// </summary>
        private void LoadGeneralSettings()
        {
            #region All Lists and Fields

            Dictionary <string, List <string> > listsAndFields       = GetListsAndFields();
            Dictionary <string, List <string> > myWorkListsAndFields = GetMyWorkListsAndFields();

            #endregion

            #region Selected Lists

            MyWorkLists = GetMyWorkListsFromDb(_web, MyWork.GetArchivedWebs(_web.Site.ID));

            if (!NewSetup())
            {
                if (!IncludeFixApplied())
                {
                    List <string> selectedMyWorkLists =
                        CoreFunctions.getConfigSetting(_web, GeneralSettingsSelectedMyWorkLists).Split(new[] { ',' }).
                        ToList();

                    var excludedLists = new List <string>();
                    var includedLists = new List <string>();

                    foreach (MWList myWorkList in MyWorkLists)
                    {
                        if (DoesListExist(myWorkList.Name))
                        {
                            if (!selectedMyWorkLists.Contains(myWorkList.Name))
                            {
                                excludedLists.Add(myWorkList.Name);
                            }
                            else
                            {
                                includedLists.Add(myWorkList.Name);
                            }
                        }
                    }

                    CoreFunctions.setConfigSetting(_web, GeneralSettingsExcludedMyWorkLists,
                                                   excludedLists.Count > 0
                                                       ? string.Join(",", excludedLists.ToArray())
                                                       : string.Empty);

                    CoreFunctions.setConfigSetting(_web, GeneralSettingsSelectedMyWorkLists,
                                                   includedLists.Count > 0
                                                       ? string.Join(",", includedLists.ToArray())
                                                       : string.Empty);

                    CoreFunctions.setConfigSetting(_web, GeneralSettingsMyWorkIncludeFixApplied,
                                                   true.ToString(CultureInfo.InvariantCulture));
                }
            }

            List <string> excludedMyWorkLists =
                CoreFunctions.getConfigSetting(_web, GeneralSettingsExcludedMyWorkLists).Split(new[] { ',' }).ToList();

            foreach (MWList myWorkList in MyWorkLists)
            {
                if (DoesListExist(myWorkList.Name))
                {
                    var listItem = new ListItem(myWorkList.Name, myWorkList.Id);

                    if (excludedMyWorkLists.Contains(myWorkList.Name))
                    {
                        lstExcludedMyWorkLists.Items.Add(listItem);
                    }
                    else
                    {
                        lstIncludedMyWorkLists.Items.Add(listItem);
                    }
                }
            }

            List <string> selectedLists =
                CoreFunctions.getConfigSetting(_web, GeneralSettingsSelectedLists).Split(new[] { ',' }).ToList();
            List <string> listSelected = new List <string>();
            selectedLists.RemoveAll(string.IsNullOrEmpty);

            foreach (string selectedList in selectedLists)
            {
                if (DoesListExist(selectedList))
                {
                    listSelected.Add(selectedList);
                    tbSelectedLists.Text += selectedList + Environment.NewLine;
                }
            }
            CoreFunctions.setConfigSetting(_web, GeneralSettingsSelectedLists,
                                           listSelected.Count > 0
                                               ? string.Join(",", listSelected.ToArray())
                                               : string.Empty);
            #endregion

            #region Selected Fields

            List <string> selectedFields =
                CoreFunctions.getConfigSetting(_web, GeneralSettingsSelectedFields).Split(new[] { ',' }).ToList();

            var sFields = new List <ListItem>();

            sFields.AddRange((selectedLists.Count > 0
                                          ? (from selectedList in selectedLists
                                             where listsAndFields.ContainsKey(selectedList)
                                             from field in listsAndFields[selectedList]
                                             where selectedFields.Exists(f => f.Equals(field))
                                             let theField = field
                                                            select new ListItem(theField.ToPrettierName(selectedList, _web), field))
                                          : (from listAndFields in listsAndFields
                                             from field in listAndFields.Value
                                             where selectedFields.Exists(f => f.Equals(field))
                                             let theField = field
                                                            select new ListItem(theField.ToPrettierName(listAndFields.Key, _web), field))));

            sFields.AddRange(from myWorkListsAndField in myWorkListsAndFields
                             from field in myWorkListsAndField.Value
                             where selectedFields.Contains(field)
                             select new ListItem(field.ToPrettierName(myWorkListsAndField.Key, _web), field));

            lstSelectedFields.DataSource = sFields.Distinct().ToList();

            lstSelectedFields.DataTextField  = "Text";
            lstSelectedFields.DataValueField = "Value";
            lstSelectedFields.DataBind();
            lstSelectedFields.Sort();

            #endregion

            #region Available Fields

            var availableFields = new List <ListItem>();

            availableFields.AddRange((selectedLists.Count > 0
                                          ? (from selectedList in selectedLists
                                             where listsAndFields.ContainsKey(selectedList)
                                             from field in listsAndFields[selectedList]
                                             where !selectedFields.Exists(f => f.Equals(field))
                                             let theField = field
                                                            select new ListItem(theField.ToPrettierName(selectedList, _web), field))
                                          : (from listAndFields in listsAndFields
                                             from field in listAndFields.Value
                                             where !selectedFields.Exists(f => f.Equals(field))
                                             let theField = field
                                                            select new ListItem(theField.ToPrettierName(listAndFields.Key, _web), field))));

            availableFields.AddRange(from myWorkListsAndField in myWorkListsAndFields
                                     from field in myWorkListsAndField.Value
                                     where !selectedFields.Contains(field)
                                     select new ListItem(field.ToPrettierName(myWorkListsAndField.Key, _web), field));

            lstAllFields.DataTextField  = "Text";
            lstAllFields.DataValueField = "Value";
            lstAllFields.DataSource     = availableFields.Distinct().OrderBy(f => f.Text);
            lstAllFields.DataBind();

            #endregion

            #region Cross Site Urls

            string crossSiteUrls = CoreFunctions.getConfigSetting(_web, GeneralSettingsCrossSiteUrls);

            if (!string.IsNullOrEmpty(crossSiteUrls))
            {
                tbCrossSiteUrls.Text = crossSiteUrls.Replace("|", Environment.NewLine);
            }

            #endregion

            #region Performance Mode

            string performanceMode = CoreFunctions.getConfigSetting(_web, GeneralSettingsPerformanceMode);
            cbPerformanceMode.Checked = string.IsNullOrEmpty(performanceMode) || performanceMode.Equals("on");

            #endregion

            #region My Work Grid Settings

            bool agoFilterEnabled   = false;
            int  agoFilterDays      = 0;
            bool afterFilterEnabled = false;
            int  afterFilterDays    = 0;

            var dayFilters = CoreFunctions.getConfigSetting(_web, GENERAL_SETTINGS_WORK_DAY_FILTERS);

            if (!string.IsNullOrEmpty(dayFilters))
            {
                string[] filters = dayFilters.Split('|');

                bool.TryParse(filters[0], out agoFilterEnabled);
                int.TryParse(filters[1], out agoFilterDays);
                bool.TryParse(filters[2], out afterFilterEnabled);
                int.TryParse(filters[3], out afterFilterDays);
            }

            cbDaysAgo.Checked   = agoFilterEnabled;
            cbDaysAfter.Checked = afterFilterEnabled;

            if (agoFilterDays > 0)
            {
                tbDaysAgo.Text = agoFilterDays.ToString(CultureInfo.InvariantCulture);
            }
            if (afterFilterDays > 0)
            {
                tbDaysAfter.Text = afterFilterDays.ToString(CultureInfo.InvariantCulture);
            }

            tbDaysAgo.Enabled   = agoFilterEnabled;
            tbDaysAfter.Enabled = afterFilterEnabled;

            hfDaysAgo.Value   = tbDaysAgo.Text;
            hfDaysAfter.Value = tbDaysAfter.Text;

            bool indicatorActive = true;
            int  indicatorDays   = 2;

            var newItemIndicator = CoreFunctions.getConfigSetting(_web, GENERAL_SETTINGS_NEW_ITEM_INDICATOR);

            if (!string.IsNullOrEmpty(newItemIndicator))
            {
                var settings = newItemIndicator.Split('|');

                bool.TryParse(settings[0], out indicatorActive);
                int.TryParse(settings[1], out indicatorDays);
            }

            cbNewItemIndicator.Checked = indicatorActive;
            if (indicatorDays > 0)
            {
                tbNewItemIndicator.Text = indicatorDays.ToString(CultureInfo.InvariantCulture);
            }
            tbNewItemIndicator.Enabled = indicatorActive;
            hfNewItemIndicator.Value   = tbNewItemIndicator.Text;

            #endregion
        }