using System.ComponentModel.DataAnnotations;

namespace LocationTrackerApp.Models;

/// <summary>
/// Represents a location data point stored in the database
/// </summary>
public class LocationData
{
    /// <summary>
    /// Unique identifier for the location data point
    /// </summary>
    [Key]
    public int Id { get; set; }

    /// <summary>
    /// Latitude coordinate of the location
    /// </summary>
    [Required]
    public double Latitude { get; set; }

    /// <summary>
    /// Longitude coordinate of the location
    /// </summary>
    [Required]
    public double Longitude { get; set; }

    /// <summary>
    /// Accuracy of the location reading in meters
    /// </summary>
    public double Accuracy { get; set; }

    /// <summary>
    /// Altitude of the location in meters above sea level
    /// </summary>
    public double? Altitude { get; set; }

    /// <summary>
    /// Speed of the device at the time of recording in meters per second
    /// </summary>
    public double? Speed { get; set; }

    /// <summary>
    /// Timestamp when the location was recorded
    /// </summary>
    [Required]
    public DateTime Timestamp { get; set; }

    /// <summary>
    /// Session identifier to group related location points
    /// </summary>
    public string? SessionId { get; set; }

    /// <summary>
    /// Additional metadata or notes for this location point
    /// </summary>
    public string? Notes { get; set; }
}
