Exemplo n.º 1
0
 /// <summary>
 /// 判斷轉檔紀錄是否有存在
 /// </summary>
 /// <param name="fileNames">檔案名稱(這次要轉檔的名稱)</param>
 /// <param name="checkName">要判斷的檔案名稱(執行這次轉檔前要完成的動作的檔案名稱)</param>
 /// <param name="reportDate">基準日</param>
 /// <param name="version">版本</param>
 /// <returns></returns>
 public bool checkTransferCheck(
     string fileName,
     string checkName,
     DateTime reportDate,
     int version)
 {
     if (fileName.IsNullOrWhiteSpace() || checkName.IsNullOrWhiteSpace())
     {
         return(false);
     }
     using (IFRS9Entities db = new IFRS9Entities())
     {
         var checkTable = db.Transfer_CheckTable.AsNoTracking();
         //須符合有一筆"Y"(上一部完成),前置動作檢查檔案為A53版本只會有一版
         if (checkTable.Any(x => x.ReportDate == reportDate &&
                            ((checkName == "A53" &&
                              x.Version == 1) ||
                             (x.File_Name == checkName &&
                              x.Version == version)) &&
                            x.TransferType == "Y") &&
             //自己沒有"Y"(重複做) 才算符合,轉檔為A53不用判斷
             (fileName == "A53" ||
              !checkTable.Any(x => x.File_Name == fileName &&
                              x.ReportDate == reportDate &&
                              x.Version == version &&
                              x.TransferType == "Y")))
         {
             return(true);
         }
     }
     return(false);
 }
Exemplo n.º 2
0
        /// <summary>
        /// start Transfer
        /// </summary>
        /// <param name="dateTime"></param>
        public void startTransfer(string dateTime)
        {
            logPath = log.txtLocation(type);

            IFRS9Entities db = new IFRS9Entities();

            startTime = DateTime.Now;

            if (dateTime.Length != 8 ||
                !DateTime.TryParseExact(dateTime, "yyyyMMdd", null,
                                        System.Globalization.DateTimeStyles.AllowWhiteSpaces,
                                        out reportDateDt))
            {
                db.Dispose();
                log.txtLog(
                    type,
                    false,
                    startTime,
                    logPath,
                    MessageType.DateTime_Format_Fail.GetDescription()
                    );
            }
            else
            {
                new CompleteEvent().saveC03Mortgage(dateTime);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 判斷轉檔紀錄是否有存在
        /// </summary>
        /// <param name="fileNames">檔案名稱</param>
        /// <param name="checkName">要判斷的檔案名稱</param>
        /// <param name="reportDate">基準日</param>
        /// <param name="version">版本</param>
        /// <returns></returns>
        public bool checkTransferCheck(
            string fileName,
            string checkName,
            DateTime reportDate,
            int version)
        {
            IFRS9Entities db = new IFRS9Entities();

            if (fileName.IsNullOrWhiteSpace() || checkName.IsNullOrWhiteSpace())
            {
                return(false);
            }
            //須符合有一筆"Y"(上一部完成) 自己沒有"Y"(重複做) 才算符合
            if (db.Transfer_CheckTable.Any(x => x.ReportDate == reportDate &&
                                           ((checkName == "A53" &&
                                             x.Version == 1) ||
                                            (x.File_Name == checkName &&
                                             x.Version == version)) &&
                                           x.TransferType == "Y") &&
                (fileName == "A53" ||
                 !db.Transfer_CheckTable.Any(x => x.File_Name == fileName &&
                                             x.ReportDate == reportDate &&
                                             x.Version == version &&
                                             x.TransferType == "Y")))
            {
                db.Dispose();
                return(true);
            }
            return(false);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 轉檔紀錄存到Sql(Transfer_CheckTable)
        /// </summary>
        /// <param name="fileName">檔案名稱 A41,A42...</param>
        /// <param name="flag">成功失敗</param>
        /// <param name="reportDate">基準日</param>
        /// <param name="version">版本</param>
        /// <param name="start">轉檔開始時間</param>
        /// <param name="end">轉檔結束時間</param>
        /// <returns></returns>
        public bool saveTransferCheck(
            string fileName,
            bool flag,
            DateTime reportDate,
            int version,
            DateTime start,
            DateTime end)
        {
            IFRS9Entities db = new IFRS9Entities();

            if (flag && db.Transfer_CheckTable.Any(x =>
                                                   fileName != TableType.A53.ToString() &&
                                                   x.ReportDate == reportDate &&
                                                   x.Version == version &&
                                                   x.File_Name == fileName &&
                                                   x.TransferType == "Y"))
            {
                return(false);
            }
            if (EnumUtil.GetValues <TableType>()
                .Select(x => x.ToString()).ToList().Contains(fileName))
            {
                if (fileName.Equals("A53"))
                {
                    var A53 = db.Transfer_CheckTable
                              .Where(x => x.File_Name == "A53" &&
                                     x.ReportDate == reportDate).FirstOrDefault();
                    if (A53 != null)
                    {
                        db.Transfer_CheckTable.Remove(A53);
                    }
                }
                db.Transfer_CheckTable.Add(new Transfer_CheckTable()
                {
                    File_Name    = fileName,
                    ReportDate   = reportDate,
                    Version      = version,
                    TransferType = flag ? "Y" : "N",
                    Create_date  = start.ToString("yyyyMMdd"),
                    Create_time  = start.ToString("HH:mm:ss"),
                    End_date     = end.ToString("yyyyMMdd"),
                    End_time     = end.ToString("HH:mm:ss"),
                });
                try
                {
                    db.SaveChanges();
                    return(true);
                }
                catch
                {
                    return(false);
                }
                finally
                {
                    db.Dispose();
                }
            }
            return(false);
        }
Exemplo n.º 5
0
        /// <summary>
        /// start Transfer
        /// </summary>
        /// <param name="dateTime"></param>
        public void startTransfer(string dateTime)
        {
            logPath = log.txtLocation(type);

            IFRS9Entities db = new IFRS9Entities();

            startTime = DateTime.Now;

            if (dateTime.Length != 8 ||
                !DateTime.TryParseExact(dateTime, "yyyyMMdd", null,
                                        System.Globalization.DateTimeStyles.AllowWhiteSpaces,
                                        out reportDateDt))
            {
                db.Dispose();
                log.txtLog(
                    type,
                    false,
                    startTime,
                    logPath,
                    MessageType.DateTime_Format_Fail.GetDescription()
                    );
            }
            else
            {
                string yearString = dateTime.Substring(0, 4);

                switch (dateTime.Substring(4, 2))
                {
                case "04":
                    new CompleteEvent().saveC03Mortgage(yearString + "Q1");
                    break;

                case "07":
                    new CompleteEvent().saveC03Mortgage(yearString + "Q2");
                    break;

                case "10":
                    new CompleteEvent().saveC03Mortgage(yearString + "Q3");
                    break;

                case "01":
                    new CompleteEvent().saveC03Mortgage((int.Parse(yearString) - 1).ToString() + "Q4");
                    break;

                default:
                    db.Dispose();
                    log.txtLog(
                        type,
                        false,
                        startTime,
                        logPath,
                        "排程執行月份必須是 04,07,10,01 月"
                        );
                    break;
                }
            }
        }
 protected virtual void Dispose(bool disposing)
 {
     if (disposing)
     {
         if (this.db != null)
         {
             this.db.Dispose();
             this.db = null;
         }
     }
 }
Exemplo n.º 7
0
        /// <summary>
        /// start Transfer
        /// </summary>
        /// <param name="dateTime"></param>
        public override void startTransfer(string dateTime)
        {
            IFRS9Entities db = new IFRS9Entities();

            startTime = DateTime.Now;

            if (dateTime.Length != 8 ||
                !DateTime.TryParseExact(dateTime, "yyyyMMdd", null,
                                        System.Globalization.DateTimeStyles.AllowWhiteSpaces,
                                        out reportDateDt))
            {
                db.Dispose();
                log.txtLog(
                    type,
                    false,
                    startTime,
                    logPath,
                    MessageType.DateTime_Format_Fail.GetDescription()
                    );
                log.saveTransferCheck(
                    type,
                    false,
                    reportDateDt,
                    1, //A53無版本 (default為1)
                    startTime,
                    DateTime.Now);
            }

            var A41 = db.Bond_Account_Info
                      .Any(x => x.Report_Date == reportDateDt);

            verInt = db.Bond_Account_Info
                     .Where(x => x.Report_Date == reportDateDt && x.Version != null)
                     .DefaultIfEmpty().Max(x => x.Version == null ? 0 : x.Version.Value);
            var check = log.checkTransferCheck(TableType.A53.ToString(), "A41", reportDateDt, verInt);

            logPath = log.txtLocation(type);
            if (!A41 ||
                !check || verInt == 0)
            {
                db.Dispose();
                log.saveTransferCheck(
                    type,
                    false,
                    reportDateDt,
                    1, //A53只有一版 (default為1)
                    startTime,
                    DateTime.Now);
                List <string> errs = new List <string>();
                if (!A41)
                {
                    errs.Add(MessageType.not_Find_Any.GetDescription());
                }
                if (!check || verInt == 0)
                {
                    errs.Add(MessageType.transferError.GetDescription());
                }
                log.txtLog(
                    type,
                    false,
                    startTime,
                    logPath,
                    string.Join(",", errs)
                    );
            }
            else
            {
                db.Dispose();
                reportDateStr = dateTime;
                setFile       = new SetFile(tableType, dateTime);
                createSampleFile();
            }
        }
Exemplo n.º 8
0
        /// <summary>
        /// Db save
        /// </summary>
        protected override void DataToDb()
        {
            IFRS9Entities      db           = new IFRS9Entities();
            List <Rating_Info> sampleData   = new List <Rating_Info>();
            List <Rating_Info> commpanyData = new List <Rating_Info>();
            List <sampleInfo>  sampleInfos  = new List <sampleInfo>();
            A53Sample          a53Sample    = new A53Sample();
            A53Commpany        a53Commpany  = new A53Commpany();

            #region sample Data

            using (StreamReader sr = new StreamReader(Path.Combine(
                                                          setFile.getSampleFilePath(), setFile.getSampleFileName())))
            {
                bool   flag = false; //判斷是否為要讀取的資料行數
                string line = string.Empty;
                while ((line = sr.ReadLine()) != null)
                {
                    if ("END-OF-DATA".Equals(line))
                    {
                        flag = false;
                    }
                    if (flag) //找到的資料
                    {
                        var arr = line.Split('|');
                        //arr[0]  ex: US00206RDH21 (債券編號)
                        //arr[1]  ex: 0
                        //arr[2]  ex: 20
                        //arr[3]  ISSUER_EQUITY_TICKER (發行人)
                        //arr[4]  ISSUE_DT (債券評等日期)
                        //arr[5]  ISSUER (債券名稱)
                        //arr[6]  GUARANTOR_EQY_TICKER (擔保人)
                        //arr[7]  GUARANTOR_NAME (擔保人名稱)
                        //--標普(S&P)
                        //arr[8]  (國外)RTG_SP (SP國外評等)
                        //arr[9] (國外)SP_EFF_DT (SP國外評等日期)
                        //--穆迪(Moody's)
                        //arr[10] (國外)RTG_MOODY (Moody's國外評等)
                        //arr[11] (國外)MOODY_EFF_DT (Moody's國外評等日期)
                        //--惠譽台灣(Fitch(twn))
                        //arr[12] (國內)RTG_FITCH_NATIONAL (惠譽國內評等)
                        //arr[13] (國內)RTG_FITCH_NATIONAL_DT (惠譽國內評等日期)
                        //--惠譽(Fitch)
                        //arr[14] (國外)RTG_FITCH (惠譽評等)
                        //arr[15] (國外)FITCH_EFF_DT (惠譽評等日期)
                        //--TRC(中華信評)
                        //arr[16] (國內)RTG_TRC (TRC 評等)
                        //arr[17] (國內)TRC_EFF_DT (TRC 評等日期)
                        if (arr.Length >= 18)
                        {
                            //S&P國外評等
                            validateSample(
                                arr[8],
                                arr[9],
                                arr[0],
                                A53SampleBloombergField.RTG_SP.ToString(),
                                RatingOrg.SP,
                                sampleData);
                            //Moody's國外評等
                            validateSample(
                                arr[10],
                                arr[11],
                                arr[0],
                                A53SampleBloombergField.RTG_MOODY.ToString(),
                                RatingOrg.Moody,
                                sampleData);
                            //惠譽台灣
                            validateSample(
                                arr[12],
                                arr[13],
                                arr[0],
                                A53SampleBloombergField.RTG_FITCH_NATIONAL.ToString(),
                                RatingOrg.FitchTwn,
                                sampleData);
                            //惠譽
                            validateSample(
                                arr[14],
                                arr[15],
                                arr[0],
                                A53SampleBloombergField.RTG_FITCH.ToString(),
                                RatingOrg.Fitch,
                                sampleData);
                            //TRC(中華信評)
                            validateSample(
                                arr[16],
                                arr[17],
                                arr[0],
                                A53SampleBloombergField.RTG_TRC.ToString(),
                                RatingOrg.CW,
                                sampleData);
                            sampleInfos.Add(new sampleInfo()
                            {
                                Bond_Number          = arr[0],
                                ISSUER_TICKER        = arr[3],
                                GUARANTOR_EQY_TICKER = arr[6],
                                GUARANTOR_NAME       = arr[7]
                            });
                        }
                    }
                    if ("START-OF-DATA".Equals(line))
                    {
                        flag = true;
                    }
                }
            }

            #endregion sample Data

            #region commpany Data

            using (StreamReader sr = new StreamReader(Path.Combine(
                                                          setFile.getCommpanyFilePath(), setFile.getCommpanyFileName())))
            {
                bool   flag = false; //判斷是否為要讀取的資料行數
                string line = string.Empty;
                while ((line = sr.ReadLine()) != null)
                {
                    if ("END-OF-DATA".Equals(line))
                    {
                        flag = false;
                    }
                    if (flag) //找到的資料
                    {
                        var arr = line.Split('|');
                        //arr[0]  ex: T US Equity (發行人or擔保人)
                        //arr[1]  ex: 0
                        //arr[2]  ex: 38
                        //arr[3]  ID_BB_COMPANY  公司ID
                        //arr[4]  LONG_COMP_NAME  公司名稱
                        //arr[5]  COUNTRY_ISO  城市(國家)
                        //arr[6]  INDUSTRY_GROUP
                        //arr[7]  INDUSTRY_SECTOR
                        //--標普(S&P)
                        //arr[8]  (國外)RTG_SP_LT_LC_ISSUER_CREDIT (標普本國貨幣長期發行人信用評等)
                        //arr[9]  (國外)RTG_SP_LT_LC_ISS_CRED_RTG_DT (標普本國貨幣長期發行人信用評等日期)
                        //arr[10] (國外)RTG_SP_LT_FC_ISSUER_CREDIT (標普長期外幣發行人信用評等)
                        //arr[11] (國外)RTG_SP_LT_FC_ISS_CRED_RTG_DT (標普長期外幣發行人信用評等日期)
                        //--穆迪(Moody's)
                        //arr[12] (國內)RTG_MDY_LOCAL_LT_BANK_DEPOSITS (穆迪長期本國銀行存款評等)
                        //arr[13] (國內)RTG_MDY_LT_LC_BANK_DEP_RTG_DT (穆迪長期本國銀行存款評等日期)
                        //arr[14] (國外)RTG_MDY_FC_CURR_ISSUER_RATING (穆迪外幣發行人評等)
                        //arr[15] (國外)RTG_MDY_FC_CURR_ISSUER_RTG_DT (穆迪外幣發行人評等日期)
                        //arr[16] (國外)RTG_MDY_ISSUER (穆迪發行人評等)
                        //arr[17] (國外)RTG_MDY_ISSUER_RTG_DT (穆迪發行人評等日期)
                        //arr[18] (國外)RTG_MOODY_LONG_TERM (穆迪長期評等)
                        //arr[19] (國外)RTG_MOODY_LONG_TERM_DATE (穆迪長期評等日期)
                        //arr[20] (國外)RTG_MDY_SEN_UNSECURED_DEBT (穆迪優先無擔保債務評等)
                        //arr[21] (國外)RTG_MDY_SEN_UNSEC_RTG_DT (穆迪優先無擔保債務評等日期)
                        //--惠譽(Fitch)
                        //arr[22] (國外)RTG_FITCH_LT_ISSUER_DEFAULT (惠譽長期發行人違約評等)
                        //arr[23] (國外)RTG_FITCH_LT_ISSUER_DFLT_RTG_DT (惠譽長期發行人違約評等日期)
                        //arr[24] (國外)RTG_FITCH_LT_FC_ISSUER_DEFAULT (惠譽長期外幣發行人違約評等)
                        //arr[25] (國外)RTG_FITCH_LT_FC_ISS_DFLT_RTG_DT (惠譽長期外幣發行人違約評等日期)
                        //arr[26] (國外)RTG_FITCH_LT_LC_ISSUER_DEFAULT (惠譽長期本國貨幣發行人違約評等)
                        //arr[27] (國外)RTG_FITCH_LT_LC_ISS_DFLT_RTG_DT (惠譽長期本國貨幣發行人違約評等日期)
                        //arr[28] (國外)RTG_FITCH_SEN_UNSECURED (惠譽優先無擔保債務評等)
                        //arr[29] (國外)RTG_FITCH_SEN_UNSEC_RTG_DT (惠譽優先無擔保債務評等日期)
                        //--惠譽台灣(Fitch(twn))
                        //arr[30] (國內)RTG_FITCH_NATIONAL_LT (惠譽國內長期評等)
                        //arr[31] (國內)RTG_FITCH_NATIONAL_LT_DT (惠譽國內長期評等日期)
                        //--TRC(中華信評)
                        //arr[32] (國內)RTG_TRC_LONG_TERM (TRC 長期評等)
                        //arr[33] (國內)RTG_TRC_LONG_TERM_RTG_DT (TRC 長期評等日期)
                        if (arr.Length >= 34)
                        {
                            //RTG_SP_LT_LC_ISSUER_CREDIT 標普本國貨幣長期發行人信用評等
                            validateCommpany(
                                arr[8],
                                arr[9],
                                arr[0],
                                A53CommpanyBloombergField.RTG_SP_LT_LC_ISSUER_CREDIT.ToString(),
                                RatingOrg.SP,
                                commpanyData);
                            //RTG_SP_LT_FC_ISSUER_CREDIT 標普長期外幣發行人信用評等
                            validateCommpany(
                                arr[10],
                                arr[11],
                                arr[0],
                                A53CommpanyBloombergField.RTG_SP_LT_FC_ISSUER_CREDIT.ToString(),
                                RatingOrg.SP,
                                commpanyData);
                            //RTG_MDY_LOCAL_LT_BANK_DEPOSITS 穆迪長期本國銀行存款評等
                            validateCommpany(
                                arr[12],
                                arr[13],
                                arr[0],
                                A53CommpanyBloombergField.RTG_MDY_LOCAL_LT_BANK_DEPOSITS.ToString(),
                                RatingOrg.Moody,
                                commpanyData);
                            //RTG_MDY_FC_CURR_ISSUER_RATING  穆迪外幣發行人評等
                            validateCommpany(
                                arr[14],
                                arr[15],
                                arr[0],
                                A53CommpanyBloombergField.RTG_MDY_FC_CURR_ISSUER_RATING.ToString(),
                                RatingOrg.Moody,
                                commpanyData
                                );
                            //RTG_MDY_ISSUER  穆迪發行人評等
                            validateCommpany(
                                arr[16],
                                arr[17],
                                arr[0],
                                A53CommpanyBloombergField.RTG_MDY_ISSUER.ToString(),
                                RatingOrg.Moody,
                                commpanyData);
                            //RTG_MOODY_LONG_TERM  穆迪長期評等
                            validateCommpany(
                                arr[18],
                                arr[19],
                                arr[0],
                                A53CommpanyBloombergField.RTG_MOODY_LONG_TERM.ToString(),
                                RatingOrg.Moody,
                                commpanyData);
                            //RTG_MDY_SEN_UNSECURED_DEBT  穆迪優先無擔保債務評等
                            validateCommpany(
                                arr[20],
                                arr[21],
                                arr[0],
                                A53CommpanyBloombergField.RTG_MDY_SEN_UNSECURED_DEBT.ToString(),
                                RatingOrg.Moody,
                                commpanyData);
                            //RTG_FITCH_LT_ISSUER_DEFAULT 惠譽長期發行人違約評等
                            validateCommpany(
                                arr[22],
                                arr[23],
                                arr[0],
                                A53CommpanyBloombergField.RTG_FITCH_LT_ISSUER_DEFAULT.ToString(),
                                RatingOrg.Fitch,
                                commpanyData);

                            //RTG_FITCH_LT_FC_ISSUER_DEFAULT  惠譽長期外幣發行人違約評等
                            validateCommpany(
                                arr[24],
                                arr[25],
                                arr[0],
                                A53CommpanyBloombergField.RTG_FITCH_LT_FC_ISSUER_DEFAULT.ToString(),
                                RatingOrg.Fitch,
                                commpanyData);
                            //RTG_FITCH_LT_LC_ISSUER_DEFAULT  惠譽長期本國貨幣發行人違約評等
                            validateCommpany(
                                arr[26],
                                arr[27],
                                arr[0],
                                A53CommpanyBloombergField.RTG_FITCH_LT_LC_ISSUER_DEFAULT.ToString(),
                                RatingOrg.Fitch,
                                commpanyData);
                            //RTG_FITCH_SEN_UNSECURED  惠譽優先無擔保債務評等
                            validateCommpany(
                                arr[28],
                                arr[29],
                                arr[0],
                                A53CommpanyBloombergField.RTG_FITCH_SEN_UNSECURED.ToString(),
                                RatingOrg.Fitch,
                                commpanyData);
                            //RTG_FITCH_NATIONAL_LT 惠譽國內長期評等
                            validateCommpany(
                                arr[30],
                                arr[31],
                                arr[0],
                                A53CommpanyBloombergField.RTG_FITCH_NATIONAL_LT.ToString(),
                                RatingOrg.FitchTwn,
                                commpanyData);
                            //RTG_TRC_LONG_TERM  (國內)TRC 長期評等
                            validateCommpany(
                                arr[32],
                                arr[33],
                                arr[0],
                                A53CommpanyBloombergField.RTG_TRC_LONG_TERM.ToString(),
                                RatingOrg.CW,
                                commpanyData);
                        }
                    }
                    if ("START-OF-DATA".Equals(line))
                    {
                        flag = true;
                    }
                }
            }

            #endregion commpany Data

            #region saveDb
            db.Rating_Info.RemoveRange(
                db.Rating_Info.Where(x => x.Report_Date == reportDateDt));
            db.Rating_Info.AddRange(sampleData);
            db.Rating_Info.AddRange(commpanyData);
            db.Rating_Info_SampleInfo.RemoveRange(
                db.Rating_Info_SampleInfo.Where(x => x.Report_Date == reportDateDt));
            db.Rating_Info_SampleInfo.AddRange(
                sampleInfos.Select(x => new Rating_Info_SampleInfo()
            {
                Bond_Number          = x.Bond_Number,
                GUARANTOR_EQY_TICKER = x.GUARANTOR_EQY_TICKER,
                GUARANTOR_NAME       = x.GUARANTOR_NAME,
                ISSUER_TICKER        = x.ISSUER_TICKER,
                Report_Date          = reportDateDt
            }));
            try
            {
                db.SaveChanges();
                db.Dispose();
                log.saveTransferCheck(
                    type,
                    true,
                    reportDateDt,
                    1,
                    startTime,
                    DateTime.Now);
                log.txtLog(
                    type,
                    true,
                    startTime,
                    logPath,
                    MessageType.Success.GetDescription());
                sampleData.AddRange(commpanyData);
                new CompleteEvent().saveDb(reportDateDt, verInt);
            }
            catch (DbUpdateException ex)
            {
                log.saveTransferCheck(
                    type,
                    false,
                    reportDateDt,
                    1,
                    startTime,
                    DateTime.Now);
                log.txtLog(
                    type,
                    false,
                    startTime,
                    logPath,
                    $"message: {ex.Message}" +
                    $", inner message {ex.InnerException?.InnerException?.Message}");
            }

            #endregion saveDb
        }
 public UserAuthAttribute(string href)
 {
     _href = href;
     db    = new IFRS9Entities();
 }
Exemplo n.º 10
0
        /// <summary>
        /// create Put Sample File
        /// </summary>
        /// <param name="type"></param>
        /// <param name="dateTime"></param>
        /// <param name="ver"></param>
        public bool create(TableType type, string dateTime, int ver)
        {
            bool flag = false;

            try
            {
                List <string> data = new List <string>();

                SetFile f = new SetFile(type, dateTime);

                //ex: sampleA53_20170803
                string getFileName = f.getSampleFileName();

                #region File

                data.Add("START-OF-FILE");

                #region Title

                data.Add($"REPLYFILENAME={getFileName}");
                data.Add("PROGRAMNAME=getdata");
                data.Add("PROGRAMFLAG=" + f.getPROGRAMFLAG());
                data.Add("FIRMNAME=" + f.getFIRMNAME()); //確認是否提出來?
                data.Add("SECMASTER=YES");
                data.Add("OUTPUTFORMAT=bulklist");
                data.Add("DELIMITER=,");
                data.Add("FUNDAMENTALS=yes");

                #endregion Title

                //空一行
                data.Add(string.Empty);

                #region START-OF-FIELDS

                data.Add("START-OF-FIELDS");
                object obj      = null;
                bool   findFlag = false;
                if (TableType.A53.ToString().Equals(type.ToString()))
                {
                    obj      = new A53Sample();
                    findFlag = true;
                }
                if (findFlag)
                {
                    obj.GetType()
                    .GetProperties()
                    //.OrderBy(x => x.Name)
                    .ToList()
                    .ForEach(x => data.Add(x.Name));
                }
                data.Add("END-OF-FIELDS");

                #endregion START-OF-FIELDS

                //空一行
                data.Add(string.Empty);

                #region START-OF-DATA

                data.Add("START-OF-DATA");
                int           year  = Int32.Parse(dateTime.Substring(0, 4));
                int           month = Int32.Parse(dateTime.Substring(4, 2));
                int           day   = Int32.Parse(dateTime.Substring(6, 2));
                DateTime      date  = new DateTime(year, month, day);
                IFRS9Entities db    = new IFRS9Entities();
                db.Bond_Account_Info.AsNoTracking()
                .Where(x => x.Report_Date.HasValue &&
                       x.Report_Date.Value == date &&
                       x.Version.HasValue && x.Version == ver)
                .Select(x => x.Bond_Number).Distinct()
                .OrderBy(x => x)
                .ToList().ForEach(x =>
                {
                    if (!x.IsNullOrWhiteSpace())
                    {
                        data.Add(string.Format("{0}|ISIN", x));
                    }
                });
                db.Dispose();
                data.Add("END-OF-DATA");

                #endregion START-OF-DATA

                data.Add("END-OF-FILE");

                #endregion File

                //ex: ../samplePut 資料夾
                //f.putCommpanyFilePath();
                //ex: sampleA53_20170803
                //f.putSampleFileName();
                //建立 scv 檔案
                flag = new CreatePutFile().create(
                    f.putSampleFilePath(),
                    f.putSampleFileName(),
                    data);
            }
            catch
            {
                flag = false;
            }
            return(flag);
        }
Exemplo n.º 11
0
        /// <summary>
        /// start Transfer
        /// </summary>
        /// <param name="year"></param>
        public void startTransfer(string year)
        {
            logPath = log.txtLocation(type);
            IFRS9Entities db      = new IFRS9Entities();
            DateTime      dt      = DateTime.Now;
            List <string> notParm = new List <string>()
            {
                "Year_Quartly", "Date"
            };

            if (!year.IsNullOrWhiteSpace())
            {
                var A84datas = db.Econ_Foreign.AsNoTracking()
                               .Where(x => x.Year_Quartly.StartsWith(year));
                if (A84datas.Any())
                {
                    List <Econ_F_YYYYMMDD> C04s         = new List <Econ_F_YYYYMMDD>();
                    List <string>          yearQuartlys = A84datas.Select(x => x.Year_Quartly).ToList();
                    var A82Datas = db.Moody_Quartly_PD_Info.AsNoTracking().Where(x => yearQuartlys.Contains(x.Year_Quartly)).ToList();
                    A84datas.ToList().ForEach(x =>
                    {
                        Econ_F_YYYYMMDD C04Data = new Econ_F_YYYYMMDD();
                        C04Data = db.Econ_F_YYYYMMDD.FirstOrDefault(i => i.Year_Quartly == x.Year_Quartly);
                        if (C04Data != null)
                        {
                            C04Data.Processing_Date = dt.ToString("yyyyMMdd");
                            var A82Data             = A82Datas.FirstOrDefault(z => z.Year_Quartly == x.Year_Quartly);
                            if (A82Data != null)
                            {
                                C04Data.PD_Quartly = A82Data.PD;
                            }
                            x.GetType().GetProperties().Where(z => !notParm.Contains(z.Name)).ToList().ForEach(
                                y =>
                            {
                                var p = C04Data.GetType().GetProperties().FirstOrDefault(i => i.Name == y.Name);
                                if (p != null)
                                {
                                    p.SetValue(C04Data, y.GetValue(x));
                                }
                            });
                        }
                        else
                        {
                            C04Data = new Econ_F_YYYYMMDD();
                            C04Data.Processing_Date = dt.ToString("yyyyMMdd");
                            C04Data.Year_Quartly    = x.Year_Quartly;
                            var A82Data             = A82Datas.FirstOrDefault(z => z.Year_Quartly == x.Year_Quartly);
                            if (A82Data != null)
                            {
                                C04Data.PD_Quartly = A82Data.PD;
                            }
                            x.GetType().GetProperties().Where(z => !notParm.Contains(z.Name)).ToList().ForEach(
                                y =>
                            {
                                var p = C04Data.GetType().GetProperties().FirstOrDefault(i => i.Name == y.Name);
                                if (p != null)
                                {
                                    p.SetValue(C04Data, y.GetValue(x));
                                }
                            });
                            C04s.Add(C04Data);
                        }
                    });
                    db.Econ_F_YYYYMMDD.AddRange(C04s);
                    try
                    {
                        db.SaveChanges();
                        db.Dispose();
                        log.txtLog(
                            type,
                            true,
                            dt,
                            logPath,
                            MessageType.Success.GetDescription());
                    }
                    catch (DbUpdateException ex)
                    {
                        log.txtLog(
                            type,
                            false,
                            dt,
                            logPath,
                            $"message: {ex.Message}" +
                            $", inner message {ex.InnerException?.InnerException?.Message}");
                    }
                }
                else
                {
                    log.txtLog(
                        type,
                        false,
                        dt,
                        logPath,
                        "找不到A84符合的資料(Econ_Foreign)");
                }
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// Db save
        /// </summary>
        protected void DataToDb()
        {
            IFRS9Entities        db       = new IFRS9Entities();
            List <Econ_Domestic> A07Datas = new List <Econ_Domestic>();
            string date = startTime.ToString("yyyyMMdd");

            #region A07 Data
            using (StreamReader sr = new StreamReader(Path.Combine(
                                                          setFile.getA07FilePath(), setFile.getFileName())))
            {
                bool   flag = false; //判斷是否為要讀取的資料行數
                string line = string.Empty;
                while ((line = sr.ReadLine()) != null)
                {
                    if ("END-OF-DATA".Equals(line))
                    {
                        flag = false;
                    }

                    if (flag) //找到的資料
                    {
                        var arr = line.Split('|');
                        //arr[0]  ex: TWSE Index
                        //arr[1]  ex: 03/31/2016
                        //arr[2]  ex: 8744.83

                        if (arr.Length >= 3 && !arr[0].IsNullOrWhiteSpace() &&
                            !arr[0].StartsWith("START") && !arr[0].StartsWith("END"))
                        {
                            Econ_Domestic ef = new Econ_Domestic();

                            DateTime dt    = DateTime.MinValue;
                            double   d     = 0d;
                            string   index = arr[0].Trim();

                            if (arr[2] != null && double.TryParse(arr[2], out d) &&
                                DateTime.TryParseExact(arr[1], "MM/dd/yyyy", null,
                                                       System.Globalization.DateTimeStyles.AllowWhiteSpaces,
                                                       out dt) && !index.IsNullOrWhiteSpace())
                            {
                                var YQ      = dt.Year.ToString() + dt.Month.IntToYearQuartly();
                                var A07     = db.Econ_Domestic.Where(x => x.Year_Quartly == YQ).FirstOrDefault();
                                var A07Data = A07Datas.FirstOrDefault(x => x.Year_Quartly == YQ);
                                if (A07 != null)
                                {
                                    var A07pro = A07.GetType().GetProperties()
                                                 .Where(x => x.Name.Replace("_", " ") == index.Replace("_", " ")).FirstOrDefault();
                                    if (A07pro != null)
                                    {
                                        A07pro.SetValue(A07, d);
                                        A07.Date = date;
                                    }
                                }
                                else if (A07Data != null)
                                {
                                    var A07pro = A07Data.GetType().GetProperties()
                                                 .Where(x => x.Name.Replace("_", " ") == index.Replace("_", " ")).FirstOrDefault();
                                    if (A07pro != null)
                                    {
                                        A07pro.SetValue(A07Data, d);
                                        A07Data.Date = date;
                                    }
                                }
                                else
                                {
                                    Econ_Domestic newData = new Econ_Domestic();
                                    newData.Year_Quartly = YQ;
                                    var A07pro = newData.GetType().GetProperties()
                                                 .Where(x => x.Name.Replace("_", " ") == index.Replace("_", " ")).FirstOrDefault();
                                    if (A07pro != null)
                                    {
                                        A07pro.SetValue(newData, d);
                                        newData.Date = date;
                                    }

                                    A07Datas.Add(newData);
                                }
                            }
                        }
                    }

                    if ("START-OF-DATA".Equals(line))
                    {
                        flag = true;
                    }
                }
            }
            #endregion A07 Data

            #region saveDb
            try
            {
                db.Econ_Domestic.AddRange(A07Datas);
                db.SaveChanges();
                db.Dispose();
                log.txtLog(
                    type,
                    true,
                    startTime,
                    logPath,
                    MessageType.Success.GetDescription());
            }
            catch (DbUpdateException ex)
            {
                log.txtLog(
                    type,
                    false,
                    startTime,
                    logPath,
                    $"message: {ex.Message}" +
                    $", inner message {ex.InnerException?.InnerException?.Message}");
            }
            #endregion saveDb
        }
Exemplo n.º 13
0
 public C0Repository()
 {
     this.db = new IFRS9Entities();
 }