﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Composite.Data;
using Composite.Data.Types;
using Composite.C1Console.Security;
using Composite.C1Console.Elements;
using Composite.Data.Types.StoreIdFilter;
using Composite.Plugins.Elements.ElementProviders.MediaFileProviderElementProvider;

public partial class Composite_InstalledPackages_Media_List : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
		var serializedEntityToken = Request["EntityToken"];
		if (serializedEntityToken != null)
		{
			
			var entityToken = EntityTokenSerializer.Deserialize(serializedEntityToken);

			if (entityToken is MediaRootFolderProviderEntityToken)
			{
				Repeater1.DataSource = GetChildrenOnPath("/", entityToken.Id, null);
				Repeater1.DataBind();
				MediaFolder.Visible = true;
				return;
			}
			if (entityToken is DataEntityToken)
			{
				DataEntityToken token = (DataEntityToken)entityToken;
				if (token.Data == null)
				{
					return;
				}

				if (token.Data is IMediaFileFolder)
				{
					IMediaFileFolder folder = (IMediaFileFolder)token.Data;
					Repeater1.DataSource = GetChildrenOnPath(folder.Path, folder.StoreId, null);
					Repeater1.DataBind();
					MediaFolder.Visible = true;
				}

				if (token.Data is IMediaFile)
				{
					var mediaFile = (IMediaFile)token.Data;
					MediaFile.Visible = true;
					Image.ImageUrl = "/media(" + mediaFile.Id + ")?mw=400&mh=400";
				}
			}
		}
    }

	private IEnumerable<IMediaFile> GetChildrenOnPath(string parentPath, string storeId, SearchToken searchToken)
	{
		var fileQueryable = new StoreIdFilterQueryable<IMediaFile>(DataFacade.GetData<IMediaFile>(), storeId);

		List<IMediaFile> mediaFiles = (from item in fileQueryable
									   where item.StoreId == storeId
									   && item.FolderPath == parentPath
									   select item).ToList();

		return mediaFiles;
	}
}