private WidgetViewModel CreateWidgetViewModel(Root.Models.Widget widget, Root.Models.Widget draft)
        {
            WidgetViewModel result;

            if (widget is HtmlContentWidget)
            {
                HtmlContentWidget htmlContentWidget = (HtmlContentWidget)widget;
                result = new HtmlContentWidgetViewModel
                {
                    Name            = htmlContentWidget.Name,
                    PageContent     = htmlContentWidget.Html,
                    CustomCSS       = htmlContentWidget.CustomCss,
                    EnableCustomCSS = htmlContentWidget.UseCustomCss,
                    CustomJS        = htmlContentWidget.CustomJs,
                    EnableCustomJS  = htmlContentWidget.UseCustomJs,
                    WidgetType      = WidgetType.HtmlContent
                };
            }
            else if (widget is ServerControlWidget)
            {
                ServerControlWidget serverControlWidget = (ServerControlWidget)widget;
                result = new ServerControlWidgetViewModel
                {
                    Url        = serverControlWidget.Url,
                    WidgetType = WidgetType.ServerControl
                };
            }
            else
            {
                result = new WidgetViewModel
                {
                    WidgetType = null
                };
            }

            result.PreviewImageUrl = widget.PreviewUrl;
            result.Status          = Status(widget, draft);
            result.OriginalId      = widget.Id;
            result.OriginalVersion = widget.Version;

            if (draft != null && !result.Status.Equals(ContentStatus.Published.ToString()))
            {
                result.Name       = draft.Name;
                result.CategoryId = draft.Category != null ? draft.Category.Id : (Guid?)null;
                result.Id         = draft.Id;
                result.Version    = draft.Version;
            }
            else
            {
                result.Name       = widget.Name;
                result.CategoryId = widget.Category != null ? widget.Category.Id : (Guid?)null;
                result.Id         = widget.Id;
                result.Version    = widget.Version;
            }

            return(result);
        }
        private string Status(Root.Models.Widget widget, Root.Models.Widget draft)
        {
            if (widget.Status == ContentStatus.Published && draft != null)
            {
                return(ContentStatus.Published.ToString() + "/" + ContentStatus.Draft.ToString());
            }

            if (widget.Status == ContentStatus.Draft)
            {
                return(ContentStatus.Draft.ToString());
            }

            return(ContentStatus.Published.ToString());
        }
        private WidgetViewModel CreateWidgetViewModel(Root.Models.Widget widget, Root.Models.Widget draft)
        {
            WidgetViewModel result;

            if (widget is HtmlContentWidget)
            {
                var htmlContentWidget = (HtmlContentWidget)widget;
                result = new HtmlContentWidgetViewModel
                {
                    Name            = htmlContentWidget.Name,
                    PageContent     = htmlContentWidget.Html,
                    CustomCSS       = htmlContentWidget.CustomCss,
                    EnableCustomCSS = htmlContentWidget.UseCustomCss,
                    CustomJS        = htmlContentWidget.CustomJs,
                    EnableCustomJS  = htmlContentWidget.UseCustomJs,
                    WidgetType      = WidgetType.HtmlContent
                };
            }
            else if (widget is ServerControlWidget)
            {
                var serverControlWidget = (ServerControlWidget)widget;
                result = new ServerControlWidgetViewModel
                {
                    Url        = serverControlWidget.Url,
                    WidgetType = WidgetType.ServerControl
                };
            }
            else
            {
                result = new WidgetViewModel
                {
                    WidgetType = null
                };
            }

            result.PreviewImageUrl = widget.PreviewUrl;
            result.Status          = Status(widget, draft);
            result.OriginalId      = widget.Id;
            result.OriginalVersion = widget.Version;

            if (draft != null && !result.Status.Equals(ContentStatus.Published.ToString()))
            {
                result.Name       = draft.Name;
                result.Categories = draft.Categories != null?draft.Categories.Select(c => new LookupKeyValue()
                {
                    Key   = c.Category.Id.ToLowerInvariantString(),
                    Value = c.Category.Name
                }).ToList() : new List <LookupKeyValue>();

                result.Id      = draft.Id;
                result.Version = draft.Version;
            }
            else
            {
                result.Name       = widget.Name;
                result.Categories = widget.Categories != null?widget.Categories.Select(c => new LookupKeyValue()
                {
                    Key   = c.Category.Id.ToLowerInvariantString(),
                    Value = c.Category.Name
                }).ToList() : new List <LookupKeyValue>();

                result.Id      = widget.Id;
                result.Version = widget.Version;
            }

            return(result);
        }