using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Entities
{
    /// <summary>
    /// represent a mathematical question
    /// properties :
    ///     Id : identifier of the question in the database
    ///     Content : the content of the question
    ///     Difficulty : difficulty (between 1 and 3 included) of the question
    ///     NbFails : number of time that people fail on this question
    ///     IdChapter : identifier of the chapter of the question
    ///     IdAnswerGood : identifier of the right answer to this question
    ///     Chapter : the chapter of the question
    ///     AnswerGood : the right answer to this question
    /// </summary>
    [Table("Question")]
    public class QuestionEntity
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }
        [Required]
        public string Content { get; set; } = null!;
        [AllowedValues(1, 2, 3)]
        public byte Difficulty { get; set; }
        public int NbFalls { get; set; }

        [ForeignKey(nameof(Chapter))]
        public int IdChapter { get; set; }

        [ForeignKey(nameof(AnswerGood))]
        public int? IdAnswerGood { get; set; }

        public ChapterEntity? Chapter { get; set; }

        public AnswerEntity? AnswerGood { get; set; }
    }
}
