﻿// MIT License. Copyright (c) 2016 Maxim Kuzmin. Contacts: https://github.com/maxim-kuzmin

// Author: Maxim Kuzmin

using Makc2017.Core.Extensions.Converting.OfNumeric;
using Makc2017.Core.Module.Filters;
using System.Linq;

namespace Makc2017.Modules.Dummy.Filters
{
    /// <summary>
    /// Модули. Модуль "Dummy". Фильтры. Фильтр списка.
    /// </summary>
    public class ModuleDummyFilterList : CoreModuleFilterList
    {
        #region Properties

        /// <summary>
        /// Имя объекта, где хранятся данные сущности "DummyOneToMany".
        /// </summary>
        public string ObjectDummyOneToManyName { get; set; }

        /// <summary>
        /// Идентификатор объекта, где хранятся данные сущности "DummyOneToMany".
        /// </summary>
        public long ObjectDummyOneToManyId { get; set; }

        /// <summary>
        /// Строка идентификаторов объектов, где хранятся данные сущности "DummyOneToMany".
        /// </summary>
        public string ObjectDummyOneToManyIdsString { get; set; }

        /// <summary>
        /// Идентификаторы объектов, где хранятся данные сущности "DummyOneToMany".
        /// </summary>
        public long[] ObjectDummyOneToManyIds { get; set; }

        /// <summary>
        /// Имя.
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// Строка идентификаторов.
        /// </summary>
        public string IdsString { get; set; }

        /// <summary>
        /// Идентификаторы.
        /// </summary>
        public long[] Ids { get; set; }

        /// <summary>
        /// Сортировка.
        /// </summary>
        public int Sorting { get; set; }

        #endregion Properties

        #region Public methods

        /// <summary>
        /// Нормализовать.
        /// </summary>
        public sealed override void Normalize()
        {
            base.Normalize();

            if (string.IsNullOrWhiteSpace(SortField))
            {
                SortField = "id";
            }

            if (string.IsNullOrWhiteSpace(SortDirection))
            {
                SortDirection = "desc";
            }

            if (!string.IsNullOrWhiteSpace(ObjectDummyOneToManyIdsString) && (ObjectDummyOneToManyIds == null || !ObjectDummyOneToManyIds.Any()))
            {
                ObjectDummyOneToManyIds = ObjectDummyOneToManyIdsString.FromStringToNumericInt64Array();
            }

            if (!string.IsNullOrWhiteSpace(IdsString) && (Ids == null || !Ids.Any()))
            {
                Ids = IdsString.FromStringToNumericInt64Array();
            }
        }

        #endregion Public methods
    }
}