using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;

namespace AsbCloudApp.Data;

/// <summary>
/// DTO состояния формирования программы бурения
/// </summary>
public class DrillingProgramStateDto
{
    /// <summary>
    /// 0 - не инициировано
    /// 1 - загрузка и согласование
    /// 2 - формируется (несколько минут)
    /// 3 - готова
    /// </summary>
    [Required]
    public int IdState { get; set; }

    /// <summary>
    /// Ошибка при формировании
    /// </summary>
    public DrillingProgramCreateError? Error { get; set; }

    /// <summary>
    /// Файл сформированной программы бурения
    /// </summary>
    public FileInfoDto? Program { get; set; }

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

    /// <summary>
    /// Список частей программы бурения
    /// </summary>
    [Required]
    public IEnumerable<DrillingProgramPartDto> Parts { get; set; } = Enumerable.Empty<DrillingProgramPartDto>();
}

/// <summary>
/// DTO ошибки при создании программы бурения
/// </summary>
public class DrillingProgramCreateError
{
    /// <summary>
    /// Текст ошибки для отображения пользователю
    /// </summary>
    [Required]
    public string Message { get; set; } = string.Empty;

    /// <summary>
    /// Текст ошибки для разработчика
    /// </summary>
    [Required]
    public string Exception { get; set; } = string.Empty;
}