using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using AsbCloudApp.Data.User;

namespace AsbCloudApp.Data
{
    /// <summary>
    /// Часть программы бурения
    /// </summary>
    public class DrillingProgramPartDto
    {
        /// <summary>
        /// Название
        /// </summary>
        [Required]
        public string Name { get; set; } = string.Empty;

        /// <summary>
        /// ИД категории файла
        /// </summary>
        [Required]
        public int IdFileCategory { get; set; }

        /// <summary>
        /// 0 - NoFile
        /// 1 - approving
        /// 2 - completely approved
        /// </summary>
        [Required]
        public int IdState { get; set; }

        /// <summary>
        /// Публикаторы. Могут загружать файл этой категории
        /// </summary>
        [Required]
        public IEnumerable<UserDto> Publishers { get; set; } = Enumerable.Empty<UserDto>();

        /// <summary>
        /// Согласованты. Могут согласовывать загруженные файлы этой категории
        /// </summary>
        [Required]
        public IEnumerable<UserDto> Approvers { get; set; } = Enumerable.Empty<UserDto>();

        /// <summary>
        /// Разрешение для текущего пользователя согласовывать документ
        /// </summary>
        [Required]
        public bool PermissionToApprove { get; set; }

        /// <summary>
        /// Разрешение для текущего пользователя загружать документ
        /// </summary>
        [Required]
        public bool PermissionToUpload { get; set; }

        /// <summary>
        /// Ссылка на документ.
        /// </summary>
        public FileInfoDto? File { get; set; }
    }
}