/// <summary>
        /// Populates the EntityViewModel object's properties from the given ContentsView object's properties.
        /// </summary>
        /// <param name="thisObject">Current entity view model on which the extension method is called</param>
        /// <param name="content">ContentsView model from which values to be read</param>
        /// <returns>Values populated EntityViewModel instance</returns>
        public static DeepZoomViewModel SetValuesFrom(this DeepZoomViewModel thisObject, ContentsView content)
        {
            if (content != null)
            {
                if (thisObject == null)
                {
                    thisObject = new DeepZoomViewModel();
                }

                thisObject.Id = content.ContentID;
                thisObject.Description = content.Description;
                thisObject.LastUpdated = Convert.ToDateTime(content.LastUpdatedDatetime, CultureInfo.CurrentCulture).ToString("s", CultureInfo.CurrentCulture);
                thisObject.DistributedBy = content.DistributedBy;

                thisObject.Tags = content.Tags != null ? content.Tags : string.Empty;
                thisObject.Citation = content.Citation;
                thisObject.FileType = content.TypeID.ToEnum<int, ContentTypes>(ContentTypes.Generic);
                thisObject.ContentLink = thisObject.FileType == ContentTypes.Link ? content.ContentUrl : string.Empty;
                thisObject.ContentAzureID = thisObject.FileType == ContentTypes.Link ? Guid.Empty : content.ContentAzureID;

                thisObject.Name = content.Title;
                thisObject.Category = content.CategoryID.ToEnum<int, CategoryType>(CategoryType.All);
                thisObject.Entity = EntityType.Content;

                thisObject.Rating = content.AverageRating.HasValue ? (double)content.AverageRating : 0;
                thisObject.ThumbnailID = content.ThumbnailID;
                thisObject.ContentAzureID = content.ContentAzureID;
                thisObject.FileName = content.Filename;
            }

            return thisObject;
        }
        /// <summary>
        /// Populates the Place object's properties from the given content view.
        /// </summary>
        /// <param name="thisObject">Place object</param>
        /// <param name="contentsView">content view object</param>
        /// <returns>Place instance</returns>
        public static Place SetValuesFrom(this Place thisObject, ContentsView contentsView)
        {
            if (contentsView != null)
            {
                if (thisObject == null)
                {
                    thisObject = new Place();
                }

                thisObject.Name = contentsView.Title;
                thisObject.MSRComponentId = contentsView.ContentID;

                thisObject.FileType = contentsView.TypeID.ToEnum<int, ContentTypes>(ContentTypes.Generic);
                thisObject.ContentLink = thisObject.FileType == ContentTypes.Link ? contentsView.ContentUrl : string.Empty;
                thisObject.ContentAzureID = thisObject.FileType == ContentTypes.Link ? string.Empty : contentsView.ContentAzureID.ToString();

                thisObject.Url = contentsView.Filename;
                thisObject.Thumbnail = (contentsView.ThumbnailID.HasValue && contentsView.ThumbnailID != Guid.Empty) ? contentsView.ThumbnailID.ToString() : null;

                // Permissions for Content view are hard-coded to Read as it is used for browse
                thisObject.Permission = Permission.Reader;
            }

            return thisObject;
        }
        /// <summary>
        /// Populates the Tour object's properties from the given content view.
        /// </summary>
        /// <param name="thisObject">Tour object</param>
        /// <param name="contentsView">content view object</param>
        /// <returns>Tour instance</returns>
        public static TourModel SetValuesFrom(this TourModel thisObject, ContentsView contentsView)
        {
            if (contentsView != null)
            {
                if (thisObject == null)
                {
                    thisObject = new TourModel();
                }

                thisObject.Title = contentsView.Title;
                thisObject.TourUrl = contentsView.ContentAzureID.ToString();
                thisObject.ID = contentsView.ContentAzureID.ToString();
                thisObject.MSRComponentId = contentsView.ContentID;
                thisObject.Description = contentsView.Description;
                thisObject.Author = contentsView.DistributedBy;
                thisObject.ThumbnailUrl = (contentsView.ThumbnailID.HasValue && contentsView.ThumbnailID != Guid.Empty) ? contentsView.ThumbnailID.ToString() : null;
                thisObject.LengthInSecs = contentsView.TourRunLength;
                thisObject.AverageRating = contentsView.AverageRating.HasValue ? contentsView.AverageRating.ToString() : "0";

                // Permissions for Content view are hard-coded to Read as it is used for browse
                thisObject.Permission = Permission.Reader;
            }

            return thisObject;
        }