using System;

namespace XLAB
{
    public sealed class PrdspvDirectoryItem
    {
        public int EmploymentId { get; set; }

        public int Id { get; set; }

        public string Notes { get; set; }

        public DateTime? ReceivedOn { get; set; }

        public string StampCode { get; set; }

        public int StampTypeId { get; set; }

        public string StampTypeName { get; set; }
    }

    public sealed class PrfrDirectoryItem
    {
        public string ActivityNames { get; set; }

        public DateTime? DismissalDate { get; set; }

        public int EmploymentId { get; set; }

        public int Id
        {
            get { return EmploymentId; }
            set { EmploymentId = value; }
        }

        public string Guid { get; set; }

        public DateTime? HireDate { get; set; }

        public bool? IsPinAuth { get; set; }

        public DateTime? LastVacationEndDate { get; set; }

        public DateTime? LastVacationStartDate { get; set; }

        public DateTime? NextVacationEndDate { get; set; }

        public DateTime? NextVacationStartDate { get; set; }

        public int OrganizationId { get; set; }

        public string OrganizationName { get; set; }

        public int PersonId { get; set; }

        public string PersonnelNumber { get; set; }

        public DateTime? PinChangedAt { get; set; }

        public string PinHash { get; set; }

        public int? PositionId { get; set; }

        public string PositionName { get; set; }

        public DateTime? PositionStartDate { get; set; }

        public DateTime? QualificationPlanDate { get; set; }

        public string StampNames { get; set; }
    }

    public sealed class PrfrvdDirectoryItem
    {
        public int ActivityId { get; set; }

        public string ActivityName { get; set; }

        public int EmploymentId { get; set; }

        public int Id { get; set; }
    }

    public sealed class PrsnDirectoryItem
    {
        public string ActivityNames { get; set; }

        public string Email { get; set; }

        public string ExternalId { get; set; }

        public string FirstName { get; set; }

        public string FullName { get; set; }

        public string Guid { get; set; }

        public int Id { get; set; }

        public string LastName { get; set; }

        public string Notes { get; set; }

        public string OrganizationNames { get; set; }

        public string Patronymic { get; set; }

        public string Phone { get; set; }

        public string StampNames { get; set; }
    }

    internal static class PrdspvDirectoryRules
    {
        public const int NotesMaxLength = 200;

        public const int StampCodeMaxLength = 20;
    }

    internal static class PrfrDirectoryRules
    {
        public const int GuidMaxLength = 50;

        public const int PersonnelNumberMaxLength = 25;
    }

    internal static class PrsnDirectoryRules
    {
        public const int EmailMaxLength = 50;

        public const int ExternalIdMaxLength = 50;

        public const int FirstNameMaxLength = 25;

        public const int FullNameMaxLength = 35;

        public const int GuidMaxLength = 50;

        public const int LastNameMaxLength = 30;

        public const int NotesMaxLength = 2000;

        public const int PatronymicMaxLength = 25;

        public const int PhoneMaxLength = 50;
    }
}
