using System.ComponentModel.DataAnnotations;
using FoodsharingSiegen.Contracts.Enums;

namespace FoodsharingSiegen.Contracts.Entity
{
    /// <summary>
    ///     The interaction class (a. beging, 21.05.2022)
    /// </summary>
    public class Interaction
    {
        #region Public Properties

        /// <summary>
        ///     Gets or sets the value of the alert (ab)
        /// </summary>
        public bool Alert { get; set; }

        /// <summary>
        ///     Gets or sets the value of the created (ab)
        /// </summary>
        public DateTime Created { get; set; }

        /// <summary>
        ///     Gets or sets the value of the date (ab)
        /// </summary>
        public DateTime Date { get; set; }

        /// <summary>
        ///     Gets or sets the feedback associated with the interaction.
        /// </summary>
        public InteractionFeedback Feedback { get; set; } = InteractionFeedback.Neutral;

        /// <summary>
        ///     Gets or sets additional information related to feedback for the interaction.
        /// </summary>
        public string? FeedbackInfo { get; set; }

        /// <summary>
        ///     Gets or sets the value of the id (ab)
        /// </summary>
        [Key]
        public Guid Id { get; set; }

        /// <summary>
        ///     Gets or sets additional information associated with the interaction.
        /// </summary>
        public string? Info1 { get; set; }

        /// <summary>
        ///     Gets or sets the additional information (Info2) associated with the interaction.
        /// </summary>
        public string? Info2 { get; set; }

        /// <summary>
        ///     Gets or sets the value of the not needed (ab)
        /// </summary>
        public bool NotNeeded { get; set; }

        /// <summary>
        ///     Gets or sets the value of the prospect (ab)
        /// </summary>
        public Prospect Prospect { get; set; } = null!;

        /// <summary>
        ///     Gets or sets the value of the prospect id (ab)
        /// </summary>
        public Guid ProspectID { get; set; }

        /// <summary>
        ///     Gets or sets the value of the type (ab)
        /// </summary>
        public InteractionType Type { get; set; }

        /// <summary>
        ///     Gets or sets the value of the user (ab)
        /// </summary>
        public User User { get; set; } = null!;

        /// <summary>
        ///     Gets or sets the value of the user id (ab)
        /// </summary>
        public Guid UserID { get; set; }

        #endregion
    }
}