Пример #1
0
        /// <summary>
        ///     Gets the left cols.
        /// </summary>
        /// <param name="myWorkGridView">My work grid view.</param>
        /// <returns></returns>
        private static string GetLeftCols(MyWorkGridView myWorkGridView)
        {
            Guard.ArgumentIsNotNull(myWorkGridView, nameof(myWorkGridView));

            var leftCols = new List <string>();

            foreach (var col in myWorkGridView.LeftCols.Split(CharComma))
            {
                var split = col.Split(CharColon);
                var width = split[1];

                switch (split[0])
                {
                case Complete:
                    width = CompleteColWidth;
                    break;

                case CommentCount:
                    width = CommentColWidth;
                    break;

                case Priority:
                    width = PriorityColWidth;
                    break;

                default:
                    Trace.WriteLine($"Unexpected value: {split[0]}");
                    break;
                }

                leftCols.Add($"{split[0]}:{width}");
            }

            return(string.Join(Comma, leftCols.ToArray()));
        }
        /// <summary>
        ///     Saves the global views.
        /// </summary>
        /// <param name="myWorkGridView">My work grid view.</param>
        /// <param name="configWeb">The config web.</param>
        public static void SaveGlobalViews(MyWorkGridView myWorkGridView, SPWeb configWeb)
        {
            Guard.ArgumentIsNotNull(myWorkGridView, nameof(myWorkGridView));
            Guard.ArgumentIsNotNull(configWeb, nameof(configWeb));

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

            myWorkGridViews.RemoveAll(v => v.Id.Equals(myWorkGridView.Id));

            if (myWorkGridView.Default)
            {
                foreach (var gridView in myWorkGridViews)
                {
                    gridView.Default = false;
                }
            }

            myWorkGridViews.Add(myWorkGridView);
            SaveGlobalViews(myWorkGridViews, configWeb);
        }
        /// <summary>
        ///     Gets my work grid views.
        /// </summary>
        /// <param name="spWeb">The sp web.</param>
        /// <returns></returns>
        internal static string GetMyWorkGridViews(SPWeb spWeb)
        {
            Guard.ArgumentIsNotNull(spWeb, nameof(spWeb));

            try
            {
                var result = new XDocument();
                result.Add(new XElement(nameof(MyWork)));
                result.Element(nameof(MyWork)).Add(new XElement(Views));

                var viewsElement    = result.Element(nameof(MyWork)).Element(Views);
                var configWeb       = Utils.GetConfigWeb();
                var myWorkGridViews = GetGlobalViews(configWeb).ToList();

                if (!myWorkGridViews.ToList().Exists(v => v.Id.Equals(Dv)))
                {
                    var cols = $"Flag:{FlagColWidth},DueDate:{DueDateColWidth},DueDay:{DueDayColWidth}";

                    var myWorkGridView = new MyWorkGridView
                    {
                        Id       = Dv,
                        Name     = DefaultView,
                        Default  = true,
                        Personal = false,
                        LeftCols =
                            $"Complete:{CompleteColWidth},CommentCount:{CommentColWidth},Priority:{PriorityColWidth}Title:{TitleColWidth}",
                        Cols      = cols,
                        RightCols = string.Empty,
                        Filters   = ZeroVerBar,
                        Grouping  = ZeroVerBar,
                        Sorting   = DueDate
                    };

                    SaveGlobalViews(myWorkGridView, Utils.GetConfigWeb());
                    myWorkGridViews.Insert(0, myWorkGridView);
                }

                Action <IEnumerable <MyWorkGridView>, string> addViewElements = (workGridViews, typeValue) =>
                {
                    foreach (var myWorkGridView in workGridViews)
                    {
                        var xElement = new XElement(View);

                        xElement.Add(new XAttribute(IdText, myWorkGridView.Id));
                        xElement.Add(new XAttribute(Name, myWorkGridView.Name));
                        xElement.Add(new XAttribute(LeftCols, GetLeftCols(myWorkGridView)));
                        xElement.Add(new XAttribute(Cols, myWorkGridView.Cols));
                        xElement.Add(new XAttribute(RightCols, myWorkGridView.RightCols));
                        xElement.Add(new XAttribute(Grouping, myWorkGridView.Grouping));
                        xElement.Add(new XAttribute(Filters, myWorkGridView.Filters));
                        xElement.Add(new XAttribute(Sorting, myWorkGridView.Sorting));
                        xElement.Add(new XAttribute(DefaultText, myWorkGridView.Default));
                        xElement.Add(new XAttribute(Type, typeValue));

                        viewsElement.Add(xElement);
                    }
                };

                addViewElements(myWorkGridViews, GlobalText);
                addViewElements(GetPersonalViews(configWeb), Personal);

                return(result.ToString());
            }
            catch (APIException apiException)
            {
                Trace.WriteLine(apiException);
                throw;
            }
            catch (Exception exception)
            {
                Trace.WriteLine(exception);
                throw new APIException(2080, exception.Message);
            }
        }