using System.ComponentModel.DataAnnotations.Schema;
using LeafWeb.Core.Utility;

namespace LeafWeb.Core.Entities
{
	/// <summary>
	/// Contains info about the site such as elevation, canopy height, site ID, etc
    /// </summary>
    public class LeafInputDataSite
    {
		[ForeignKey("LeafInputData")]
		public int Id { get; set; }

		public virtual LeafInputData LeafInputData { get; set; }

		/// <summary>Site identifier</summary>
		/// <remarks>do not leave blank between letters</remarks>
		[ParseInfo(1)]
		public string SiteId { get; set; }

		/// <summary>Site latitude, northern hermisphere positive</summary>
		[ParseInfo(2, units:"degrees")]
		public double? Latitude { get; set; }

		/// <summary>Site longitude, east positive</summary>
		[ParseInfo(3, units: "degrees")]
		public double? Longitude { get; set; }

		/// <summary>site elevation</summary>
		[ParseInfo(4, units: "m")]
		public double? Elevation { get; set; }

		/// <summary>the year when the A/Ci data is taken</summary>
		[ParseInfo(5, units: "year")]
		public int? SampleYear { get; set; }

		/// <summary>the day of year (since 1 Jan) when the A/Ci data is taken</summary>
		[ParseInfo(6, units: "day")]
		public int? SampleDayOfYear { get; set; }

		/// <summary>the approximate start day (since 1 Jan) of growing season</summary>
		[ParseInfo(7, units: "day")]
		public int? GrowSeasonStart { get; set; }

		/// <summary>the approximate end day (since 1 Jan) of growing season</summary>
		[ParseInfo(8, units: "day")]
		public int? GrowSeasonEnd { get; set; }

		/// <summary>stand age since the last disturbance</summary>
		[ParseInfo(9, units: "year")]
		public double? StandAge { get; set; }

		/// <summary>the height of the canopy</summary>
		[ParseInfo(10, units: "m")]
		public double? CanopyHeight { get; set; }

		/// <summary>the leaf area index in the middle of growing season</summary>
		[ParseInfo(11, units: "m2/m2")]
		public double? LeafAreaIndex { get; set; }

		/// <summary>the species of the leaf sample</summary>
		/// <remarks>don't leave blank between letters</remarks>
		[ParseInfo(12, units: "dimensionless")]
		public string SpeciesSampled { get; set; }

		/// <summary>the average time interval between two consecutive A/Ci data points</summary>
		[ParseInfo(13, alternateTitle: "AveTimeResolution", units: "minutes")]
		public double? AverageTimeResolution { get; set; }

		/// <summary>the height at which the leaf is located</summary>
		[ParseInfo(14, units: "m")]
		public double? SampleHeight { get; set; }

		/// <summary>the age of the leaf</summary>
		[ParseInfo(15, units: "day")]
		public int? LeafAge { get; set; }

		/// <summary>specific leaf area of the sample</summary>
		[ParseInfo(16, units: "cm2/g")]
		public double? SpecificLeafArea { get; set; }

		/// <summary>dry leaf nitrogen content of the sample</summary>
		[ParseInfo(17, units: "%")]
		public double? LfNitrogenContent { get; set; }

		/// <summary>dry leaf carbon content of the sample</summary>
		[ParseInfo(18, units: "%")]
		public double? LfCarbonContent { get; set; }

		/// <summary>dry leaf phosphorus content of the sample</summary>
		[ParseInfo(19, units: "%")]
		public double? LfPhosphContent { get; set; }

		// WoodPorosity

		// SapWoodDensity

		// DataType,TissueArea,TissueMass,Fo'_or_Fo,Fm'_or_Fm,Fs,MeasLight

	}
}
