﻿using System.Collections.Generic;
using Composite.C1Console.Security;
using Composite.Plugins.Elements.ElementProviders.PageElementProvider;

namespace Composite.Samples.CustomTreeControl.ElementProvider
{
	[SecurityAncestorProvider(typeof(SubsiteManagerEntityTokenAncestorProvider))]
	public class SampleEntityToken : EntityToken
	{
		private string _id;
        private string _type;
		private string _source;


		public SampleEntityToken(string id, string type, string source = "")
		{
			_id = id;
			_type = type;
			_source = source;
		}

		public override string Id
		{
			get { return _id; }
		}

		public override string Serialize()
		{
			return DoSerialize();    
		}

		public override string Source
		{
			get { return _source; }
		}

		public override string Type
		{
			get { return _type; }
		}

		public static EntityToken Deserialize(string serializedData)
		{
			string type, source, id;

			DoDeserialize(serializedData, out type, out source, out id);

			return new SampleEntityToken(id, type, source);
		}
	}


	internal sealed class SubsiteManagerEntityTokenAncestorProvider : ISecurityAncestorProvider
	{
		public IEnumerable<EntityToken> GetParents(EntityToken entityToken)
		{
			return new[] { new PageElementProviderEntityToken("PageElementProvider") }; 
		}
	}

}
