using MMoneyCoderSharp.DB;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static MMoneyCoderSharp.DBDefine;

namespace MMoneyCoderSharp.Data
{

    /// <summary>
    /// 데이터의 입/출력에 관한 정의를 위해 만든 추상화 빌더객체.
    /// 필요한 데이터를 순서대로 빌드 할 수 있도록 리턴값으로 유도하고,
    /// 모든 데이터가 있다면 최종적인 객체를 Struct형태로 리턴이 가능하도록 유도한다.
    /// 
    /// 내부의 데이터에 관련된 내용은 enum으로 정의하고 Int로 최종적으로 리턴받아 멤버변수로 보유한다.
    /// 
    /// 20210207 규합할수 없는 부분(지수와 종목의 쿼리합)에 대한 정의가 불가능하여 버린다.
    /// 데이터를 기반으로 씬에 접근하려는 계획은 포기해야겠다. 이미 쿼리 자체가 그래픽에 파편화되어있어서 데이터를 기반으로 추상화 하기 불가능하다.
    /// </summary>
    public class DataDefineBuilder
    {

        //        protected int mBuildedIntValue = 0;

        //        public static DataDefineBuilder setDefine(요구데이터분류 requestDataType)
        //        {

        //            switch (requestDataType)
        //            {
        //                case 요구데이터분류.환율 :
        //                    return new 환율분류();

        //                case 요구데이터분류.종목:
        //                    return new 종목();

        //                case 요구데이터분류.지수:
        //                    return new 지수();

        //                default:
        //                    return null;

        //            }

        //        }

        //#region "환율"

        //        public class 환율분류 : DataDefineBuilder, IBuilderDefined
        //        {

        //            private Exchange mRequestInstance = null;

        //            private 원환율? mExchangeValueWON;

        //            private 달러환율? mExchangeValueDOLLOR;

        //            private bool mIsLastDataRequest = false;

        //            public void build()
        //            {

        //                if (mExchangeValueWON.HasValue)
        //                {
        //                    //this.mBuildedIntValue = (int)mRecvEnum;
        //                }
        //                else
        //                {
        //                    throw new Exception("환율분류 잘못된 빌드시도");
        //                }

        //            }

        //            public static DataDefineBuilder setDefine(원환율 requestDataType)
        //            {
        //                switch(requestDataType)
        //                {
        //                    case 원환율.원달러:
        //                        return new Exchange();
        //                    case 환율기준통화.달러:
        //                        return new 달러기준환율();
        //                    default:
        //                        return null;
        //                }

        //            }

        //            public static DataDefineBuilder setDefine(달러환율 requestDataType)
        //            {


        //            }

        //            public DataDefineBuilder IsNeedLastDataList(bool recvNeedLastData)
        //            {
        //                this.mIsLastDataRequest = recvNeedLastData;
        //            }

        //        }


        //#endregion

        //        public class 지수빌더 : DataDefineBuilder
        //        {

        //        }

        //        public class 종목빌더 : DataDefineBuilder
        //        {

        //        }

        //        public class 업종과동향빌더 : DataDefineBuilder
        //        {

        //        }


        //    }

        //    public interface IBuilderDefined
        //    {
        //        void build();
        //    }


    }

}
