using System;
using System.ComponentModel.DataAnnotations;

namespace AsbCloudApp.Data.User;

/// <summary>
/// Контакт
/// </summary>
public class ContactDto : IId
{
    /// <inheritdoc/>
    public int Id { get; set; }

    /// <summary>
    /// ключ типа компании
    /// </summary>
    [Required]
    [Range(1, int.MaxValue)]
    public int IdCompanyType { get; set; }

    /// <summary>
    /// ключ скважины
    /// </summary>
    [Required]
    [Range(1,int.MaxValue)]
    public int IdWell { get; set; }

    /// <summary>
    /// ФИО
    /// </summary>
    [Required]
    [StringLength(260, MinimumLength = 0, ErrorMessage = "Допустимая длина ФИО от 1 до 260 символов")]
    public string FullName { get; set; } = null!;

    /// <summary>
    /// Email
    /// </summary>
    [RegularExpression(@"^[a-zA-Z0-9_\-\.]{3,128}@[a-zA-Z0-9_\-\.]{2,128}\.[a-zA-Z]{1,32}$", ErrorMessage = "Некорректный email")]
    public string? Email { get; set; }

    /// <summary>
    /// Phone
    /// </summary>
    [RegularExpression(@"^(?:\+7|8)\s?(?:\(\d{3}\)|\d{3})\s?\d{3}-?\d{2}-?\d{2}$", ErrorMessage = "Некорректный номер телефона")]
    public string? Phone { get; set; }

    /// <summary>
    /// Должность
    /// </summary>
    [Required]
    [StringLength(260, MinimumLength = 1, ErrorMessage = "Допустимая длина должности от 1 до 260 символов")]
    public string Position { get; set; } = null!;

    /// <summary>
    /// Компания
    /// </summary>
    [Required]
    [StringLength(260, MinimumLength = 3, ErrorMessage = "Допустимая длина названия компании от 3 до 260 символов")]
    public string Company { get; set; } = null!;
}