using System.Collections.Generic;

namespace Hitsuji.Framework.DataClient.Model
{
    public interface IContentModel
    {
        /// <summary>
        /// インスタンスの完全複製
        /// </summary>
        /// <returns></returns>
        IContentModel DeepCopy();

        /// <summary>
        /// データの正当性を取得する。
        /// ※DB登録時に必要な最低限以上のプロパティ値が設定されているか否かの確認結果
        /// </summary>
        /// <returns></returns>
        List<AbsoluteDataResult> IsAbsoluteData();

    }

    #region データの正当性を検証

    public enum ResultCodes
    {
        /// <summary>
        /// 完全なデータの場合
        /// </summary>
        IsAbsoluteData,
        /// <summary>
        /// 不完全なデータの場合
        /// </summary>
        IsIrregular
    }

    public interface IAbsoluteDataResult
    {
        /// <summary>
        /// 結果
        /// </summary>
        ResultCodes Result { get; set; }

        /// <summary>
        /// ID（何にでも使って）
        /// </summary>
        string id { get; set; }
        /// <summary>
        /// モデル名（どうにでもなれ）
        /// </summary>
        string name { get; set; }
        /// <summary>
        /// 不完全な理由など
        /// </summary>
        string Content { get; set; }
        /// <summary>
        /// オリジナルデータ
        /// </summary>
        object org { get; set; }
    }
    
    #endregion
}
