using System;
using System.Collections.Generic;
using System.Globalization;
using System.Text;

namespace Dfs.WayneChina.SpsDbManager.ResultSet
{
    /// <summary>
    /// Result of the calling sps_db routine "Versioninfo"
    /// </summary>
    public class VersionInfo
    {
        #region Fields

        private string format = "yyyyMMddHHmmss";

        #endregion

        #region Properties

        public int VersionId { get; set; }

        public byte VerNo { get; set; }

        public string EffTime { get; set; }

        public string LoseEffTime { get; set; }

        public string Remark { get; set; }

        #endregion

        public DateTime GetEffectiveTime()
        {
            return DateTime.ParseExact(EffTime, format, CultureInfo.InvariantCulture);
        }

        public DateTime GetExpiredTime()
        {
            //DB Field 'loseefftime' filled with 14 '0', convert it to a more meanful time.
            if (LoseEffTime.Equals("00000000000000"))
            {
                return DateTime.ParseExact("99991231235959", format, CultureInfo.InvariantCulture);
            }

            return DateTime.ParseExact(LoseEffTime, format, CultureInfo.InvariantCulture);
        }
    }

    /// <summary>
    /// POCO used in the business logic.
    /// </summary>
    public class DataVersion
    {
        public VersionType VersionType { get; set; }

        public byte VersionNo { get; set; }

        public DateTime Effectivetime { get; set; }

        public DateTime ExpiredTime { get; set; }

        public string Remark { get; set; }
    }

    /// <summary>
    /// Type of the 'version' stored in db.
    /// </summary>
    public enum VersionType
    {
        /// <summary>
        /// [Sta_VER], Station general info version.
        /// 通用信息版本
        /// </summary>
        GeneralInfoVersion = 1,

        /// <summary>
        /// [PRC_VER], Fuel price change version.
        /// 油价变更版本
        /// </summary>
        FuelPriceChangeVersion = 2,

        /// <summary>
        /// [BL_VER], base blacklist version.
        /// 基础黑名单版本
        /// </summary>
        BaseBlacklistVersion = 3,

        /// <summary>
        /// [ADD_BL_VER], Newly added blacklist version.
        /// 新增黑名单版本
        /// </summary>
        NewlyAddedBlacklistVersion = 4,

        /// <summary>
        /// [DEL_BL_VER], Newly deleted blacklist version.
        /// 新删黑名单版本
        /// </summary>
        NewlyDeletedBlacklistVersion = 5,

        /// <summary>
        /// [WH_VER], whitelist version.
        /// 白名单版本
        /// </summary>
        WhitelistVersion = 6
    }
}