using System;
using System.ComponentModel.DataAnnotations;
using AsbCloudApp.Data.User;

namespace AsbCloudApp.Data
{
    /// <summary>
    /// Îòìåòêà äëÿ ôàéëà
    /// </summary>
    public class FileMarkDto: IId
    {
        /// <inheritdoc/>
        [Required]
        public int Id { get; set; }

        /// <summary>
        /// id ôàéëà
        /// </summary>
        [Required]
        [Range(1, int.MaxValue, ErrorMessage = "Id ôàéëà íå ìîæåò áûòü ìåíüøå 1")]
        public int IdFile { get; set; }

        /// <summary>
        /// 0 - îòêëîíåí
        /// 1 - ñîãëàñîâàí
        /// </summary>
        [Required]
        [Range(0, int.MaxValue, ErrorMessage = "Id êàòåãîðèè äåéñòâèÿ ñ ôàéëîì íå ìîæåò áûòü ìåíüøå 1")]
        public int IdMarkType { get; set; }

        /// <summary>
        /// äàòà/âðåìÿ äîáàâëåíèÿ.
        /// Íåîáÿçàòåëüíî óêàçûâàòü â çàïðîñå íà ñîçäàíèå.
        /// </summary>
        [Required]
        public DateTime DateCreated { get; set; }

        /// <summary>
        /// Ïîëåçíûé êîììåíòàðèé 
        /// </summary>
        [StringLength(4096, MinimumLength = 1, ErrorMessage = "Äîïóñòèìîå èìÿ êîìïàíèè îò 1 äî 4096 ñèìâîëîâ")]
        public string? Comment { get; set; }

        /// <summary>
        /// ïðèçíàê óäàëåíèÿ îòìåòêè
        /// </summary>
        [Required]
        public bool IsDeleted { get; set; }

        /// <summary>
        /// Ïîëüçîâàòåëü ñîçäàþùèé îòìåòêó.
        /// Íåîáÿçàòåëüíî óêàçûâàòü â çàïðîñå íà ñîçäàíèå.
        /// </summary>
        public UserDto? User { get; set; }
    }
}