using System;
using System.Runtime.Serialization;
using System.Collections.Generic;
using DebriefingSoftware.Common.Business;

namespace DebriefingSoftware.Web.PresentationObjects
{
	public enum GridEntitySessionData
	{
		Master,
		Distributor,
		Partner,
		Client
	}

	[KnownType(typeof(GridInfo))]
	//[KnownType(typeof(GridData))]
	public class Distributor
	{
		[DataContract]
		[Serializable]
		public class GridInfo
		{
			[DataMember(Name = "ID")]
			public int? ID { get; set; }

			[Export(DSExportType.Excel)]
			[DataMember(Name = "Name")]
			public string Name { get; set; }

			[Export(DSExportType.Html)]
			[DataMember(Name = "ZZZName")]
			public string ZZZName { get; set; }

			[Export(DSExportType.Excel)]
			[DataMember(Name = "ContactName")]
			public string ContactName { get; set; }

			[Export(DSExportType.Excel)]
			[DataMember(Name = "Property01")]
			public string Property01
			{
				get { return Dummy(); }
				set { }
			}

			[Export(DSExportType.Excel)]
			[DataMember(Name = "Property02")]
			public string Property02
			{
				get { return Dummy(); }
				set { }
			}

			[Export(DSExportType.Excel)]
			[DataMember(Name = "Property03")]
			public string Property03
			{
				get { return Dummy(); }
				set { }
			}

			[Export(DSExportType.Excel)]
			[DataMember(Name = "Property04")]
			public string Property04
			{
				get { return Dummy(); }
				set { }
			}

			[Export(DSExportType.Excel)]
			[DataMember(Name = "Property05")]
			public string Property05
			{
				get { return Dummy(); }
				set { }
			}

			[Export(DSExportType.Excel)]
			[DataMember(Name = "Property06")]
			public string Property06
			{
				get { return Dummy(); }
				set { }
			}

			private static string Dummy()
			{
				return Guid.NewGuid().ToString() + Guid.NewGuid();
			}

			[Export(DSExportType.Excel)]
			[DataMember(Name = "Property07")]
			public string Property07
			{
				get { return Dummy(); }
				set { }
			}

			[Export(DSExportType.Excel)]
			[DataMember(Name = "Property08")]
			public string Property08
			{
				get { return Dummy(); }
				set { }
			}

			[Export(DSExportType.Excel)]
			[DataMember(Name = "Property09")]
			public string Property09
			{
				get { return Dummy(); }
				set { }
			}

			[Export(DSExportType.Excel)]
			[DataMember(Name = "Property10")]
			public string Property10
			{
				get { return Dummy(); }
				set { }
			}

			[Export(DSExportType.Excel)]
			[DataMember(Name = "Property11")]
			public string Property11
			{
				get { return Dummy(); }
				set { }
			}

			[Export(DSExportType.Excel)]
			[DataMember(Name = "Property12")]
			public string Property12
			{
				get { return Dummy(); }
				set { }
			}

			[Export(DSExportType.Excel)]
			[DataMember(Name = "Property13")]
			public string Property13
			{
				get { return Dummy(); }
				set { }
			}

			[Export(DSExportType.Excel)]
			[DataMember(Name = "Property14")]
			public string Property14
			{
				get { return Dummy(); }
				set { }
			}

			[Export(DSExportType.Excel)]
			[DataMember(Name = "Property15")]
			public string Property15
			{
				get { return Dummy(); }
				set { }
			}

			[Export(DSExportType.Excel)]
			[DataMember(Name = "Property16")]
			public string Property16
			{
				get { return Dummy(); }
				set { }
			}

			[Export(DSExportType.Excel)]
			[DataMember(Name = "Property17")]
			public string Property17
			{
				get { return Dummy(); }
				set { }
			}

			[Export(DSExportType.Excel)]
			[DataMember(Name = "Property18")]
			public string Property18
			{
				get { return Dummy(); }
				set { }
			}

			[Export(DSExportType.Excel)]
			[DataMember(Name = "Property19")]
			public string Property19
			{
				get { return Dummy(); }
				set { }
			}

			[Export(DSExportType.Excel)]
			[DataMember(Name = "Property20")]
			public string Property20
			{
				get { return Dummy(); }
				set { }
			}
		}

		public class GridData
		{
			public List<GridInfo> Data { get; set; }
			public int Count { get; set; }
		}
	}	  

	public class JavascriptAttribute : Attribute
	{
	}

	public class ExportAttribute : Attribute
	{
		public DSExportType[] ExportTypes { get; set; }

		public ExportAttribute(params DSExportType[] exportTypes)
		{
			this.ExportTypes = exportTypes;
		}
	}
}
