using Hcs.Service.Async.HouseManagement;
using System;
using System.Collections.Generic;

namespace Hcs.Client.Api.Payload.HouseManagement
{
    // http://open-gkh.ru/HouseManagement/importNotificationRequest/notification/Create.html
    public class ImportNotificationDataPayload
    {
        /// <summary>
        /// Выборочное. Строковое представление темы, вместо ссылки на справочник. Максимальная длина
        /// текста равно 200 символам.
        /// </summary>
        public string topic;

        /// <summary>
        /// Выборочное. Тема из справочника 364, заместо строкового представления темы.
        /// </summary>
        public nsiRef topicFromRegistry;

        /// <summary>
        /// Необязательное. Показывает высокую важность новости.
        /// </summary>
        public bool isImportant;

        /// <summary>
        /// Необязательное. Текст новости с максимальной длиной в 5000 символов.
        /// </summary>
        public string content;

        /// <summary>
        /// Адресаты. Подходящие типы для значения:
        /// <see cref="string"/>, если это глобальный уникальный идентификатор дома по ФИАС,
        /// <see cref="importNotificationRequestNotificationCreateRoomOwners"/>,
        /// <see cref="RegOrgType"/> либо true, если все дома.
        /// </summary>
        public List<Tuple<ItemsChoiceType29, object>> destinations;

        /// <summary>
        /// Выборочное. Если true, то новость всегда актуальна. Иначе период актуальности берется из
        /// <see cref="startDate"/> и <see cref="endDate"/>.
        /// </summary>
        public bool isNotLimit;

        /// <summary>
        /// Условное. Период актуальности "С". Обязательно задается в случае <see cref="isNotLimit"/> = false.
        /// </summary>
        public DateTime? startDate;

        /// <summary>
        /// Условное. Период актуальности "ДО". Обязательно задается в случае <see cref="isNotLimit"/> = false.
        /// </summary>
        public DateTime? endDate;

        /// <summary>
        /// Необязательное. Документы новостей.
        /// </summary>
        public AttachmentType[] attachment;

        /// <summary>
        /// Необязательное. Если true, то новость отправляется адресатам.
        /// </summary>
        public bool isShipOff;

        /// <summary>
        /// Необязательное. Признак "Для публикации в мобильном приложении".
        /// </summary>
        public bool isForPublishToMobileApp;

        /// <summary>
        /// Необязательное. Информация для новости, публикуемой в мобильном приложении.
        /// </summary>
        public importNotificationRequestNotificationCreateMobileAppData mobileAppData;
    }
}
