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; }
}