using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace Elecciones.Database.Entities;

public class CandidatoOverride
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [Required]
    public string AgrupacionPoliticaId { get; set; } = null!;

    [ForeignKey("AgrupacionPoliticaId")]
    public AgrupacionPolitica AgrupacionPolitica { get; set; } = null!;

    [Required]
    public int CategoriaId { get; set; }

    [ForeignKey("CategoriaId")]
    public CategoriaElectoral CategoriaElectoral { get; set; } = null!;

    // El AmbitoGeograficoId es opcional. Si es null, el override es general.
    public int? AmbitoGeograficoId { get; set; }

    [ForeignKey("AmbitoGeograficoId")]
    public AmbitoGeografico? AmbitoGeografico { get; set; }

    // El nombre del candidato que queremos mostrar.
    [Required]
    [MaxLength(255)]
    public string NombreCandidato { get; set; } = null!;
    public int EleccionId { get; set; }    
}