using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using LeafWeb.Core.Services;

namespace LeafWeb.Core.Models
{
	/// <summary>
	/// Descriptive information about the investigator, 
	/// contact information, the site,the sample leaf and its general environmental condition
	/// </summary>
	public class LeafInput
	{
		[Key]
		public string LeafInputId { get; set; }

		public string FileName { get; set; }

		[ParseInfo(1, exampleValue: "First and last name")]
		public string InvestigatorName { get; set; }

		[ParseInfo(2, exampleValue: "Your email / mail addresses")]
		public string ContactInformation { get; set; }

		[ParseInfo(3, alternateTitle: "Site name in full", exampleValue: "Your site's identifier / name")]
		public string SiteName { get; set; }

		[ParseInfo(4, exampleValue: "Mixed forest / grasslands / croplands/ etc")]
		public string VegetationType { get; set; }

		[ParseInfo(5, exampleValue: "Soil type at your site")]
		public string SoilType { get; set; }

		[ParseInfo(6, exampleValue: "List of major species at the site")]
		public string MajorSpecies { get; set; }

		[ParseInfo(7, 
			alternateTitle: "Sample leaf light environment",
			exampleValue: "The general light environment in which the leaf is in (e.g. heavily shaded from above)")]
		public string SampleLeafLightEnv { get; set; }

		[ParseInfo(8, exampleValue: "Indicate whether there is water stress at the time of sampling")]
		public string WaterStressAssessment { get; set; }

		[ParseInfo(9, exampleValue: "For example - Licor-6400")]
		public string InstrumentUsed { get; set; }

		[ParseInfo(10, exampleValue: "Any extra information you feel would be helpful to put the sampled leaf in context")]
		public string ExtraInfo { get; set; }

		public virtual LeafInputSite Site { get; set; }
		public virtual LeafInputPhotosynthetic Photosynthetic { get; set; }
		public virtual IEnumerable<LeafInputData> Data { get; set; }
	}
}