using System.ComponentModel.DataAnnotations;

namespace LEA.Models;

public class Application
{
    public int Id { get; set; }

    [Required(ErrorMessage = "Bitte geben Sie eine Rolle oder Position an.")]
    [StringLength(150, ErrorMessage = "Der Titel darf maximal {1} Zeichen lang sein.")]
    [Display(Name = "Rolle / Position")]
    public string Role { get; set; } = string.Empty;

    [Required(ErrorMessage = "Bitte geben Sie ein Unternehmen an.")]
    [StringLength(150, ErrorMessage = "Der Firmenname darf maximal {1} Zeichen lang sein.")]
    [Display(Name = "Unternehmen")]
    public string Company { get; set; } = string.Empty;

    [StringLength(200, ErrorMessage = "Die Quelle darf maximal {1} Zeichen lang sein.")]
    [Display(Name = "Quelle")]
    public string? Source { get; set; }

    [Display(Name = "Status")]
    public ApplicationStatus Status { get; set; } = ApplicationStatus.Applied;

    [DataType(DataType.Date)]
    [Display(Name = "Beworben am")]
    public DateTime AppliedOn { get; set; } = DateTime.Today;

    [Display(Name = "Notizen")]
    [DataType(DataType.MultilineText)]
    public string? Notes { get; set; }

    [Display(Name = "Letzte Aktualisierung")]
    public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;

    [Required]
    public string UserId { get; set; } = string.Empty;

    [Display(Name = "Benutzer")]
    public ApplicationUser? User { get; set; }

    [Display(Name = "Ansprechpartner")]
    public Contact? Contact { get; set; }
}
