From 410dc2d04dbecf019129cd8cd65a3be2c62b4d0c Mon Sep 17 00:00:00 2001
From: ulysseskao <ulysseskao@gmail.com>
Date: Tue, 03 May 2016 18:36:41 +0800
Subject: [PATCH] refator code

---
 CCSTrace/CCS/ProcessEvent.cs |  366 +++++++++++++++++++++++++--------------------------
 1 files changed, 180 insertions(+), 186 deletions(-)

diff --git a/CCSTrace/CCS/ProcessEvent.cs b/CCSTrace/CCS/ProcessEvent.cs
index 6dad3c0..e4bbbde 100644
--- a/CCSTrace/CCS/ProcessEvent.cs
+++ b/CCSTrace/CCS/ProcessEvent.cs
@@ -1,4 +1,6 @@
 using System;
+using System.Collections.Generic;
+using System.Data;
 using System.Data.OracleClient;
 using System.Text;
 using CCSTrace.CCS.Domain;
@@ -15,15 +17,15 @@
         private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
 
         private readonly OracleConnection _connectionTpc;
-        private readonly CcsRecord _mCcsRecord;
+        private readonly CCSEventRecord _mCcsEventRecord;
 
-        private EventRecord _mEventRecord;
-        private readonly string _traceConnectionString = string.Empty;
+        private EOSEventRecord _eosEventRecord;
+        private readonly string _traceConnectionString;
         private OracleTransaction _trx;
 
-        public ProcessEvent(CcsRecord record, OracleConnection conn, string traceConnection)
+        public ProcessEvent(CCSEventRecord eventRecord, OracleConnection conn, string traceConnection)
         {
-            _mCcsRecord = record;
+            _mCcsEventRecord = eventRecord;
             _connectionTpc = conn;
             _traceConnectionString = traceConnection;
         }
@@ -36,45 +38,46 @@
 
             try
             {
-                var fdrid = GetFdrid(_mCcsRecord.Meter);
+                var fdrid = GetFdrid(_mCcsEventRecord.Meter);
 
                 if (fdrid != 0) //有饋線代號資料的案件才需比對同饋線上有無案件正在處理
                 {
-                    if (CcsMain.ProcessFdr.ContainsKey(fdrid.ToString()))
+                    if (CcsMain.Instance.ProcessingFdr.Contains(fdrid))
                     {
-                        CcsMain.WaitingCases.Add(new[] {_mCcsRecord.CcsId, fdrid.ToString()});
+                        CcsMain.Instance.WaitingCases.Add(new KeyValuePair<string, int>(_mCcsEventRecord.CcsId, fdrid));
                         return;
                     }
                     else
-                        CcsMain.ProcessFdr.Add(fdrid.ToString(), null); //將要處理的案件的饋線別加入處理中饋線集合
+                        CcsMain.Instance.ProcessingFdr.Add(fdrid); //將要處理的案件的饋線別加入處理中饋線集合
                 }
 
-                /*                int TraceCount = this.getTraceCount(m_CCSRecord.CcsId);
-                                bool TraceError = false;    //追蹤次數超過3次,改為非A類不追蹤合併
+                /* 
+                int TraceCount = this.getTraceCount(m_CCSRecord.CcsId);
+                bool TraceError = false;    //追蹤次數超過3次,改為非A類不追蹤合併
 
-                                switch (TraceCount)
-                                {
-                                    case 0:
-                                        UpdateTraceCount(m_CCSRecord.CcsId,true);
-                                        TraceError = false;
-                                        break;
+                switch (TraceCount)
+                {
+                    case 0:
+                        UpdateTraceCount(m_CCSRecord.CcsId,true);
+                        TraceError = false;
+                        break;
 
-                                    case 2:
-                                        UpdateTraceCount(m_CCSRecord.CcsId,false);
-                                        TraceError = true;
-                                        break;
+                    case 2:
+                        UpdateTraceCount(m_CCSRecord.CcsId,false);
+                        TraceError = true;
+                        break;
 
-                                    default:
-                                        UpdateTraceCount(m_CCSRecord.CcsId,false);
-                                        TraceError = false;
-                                        break;
-                                }
+                    default:
+                        UpdateTraceCount(m_CCSRecord.CcsId,false);
+                        TraceError = false;
+                        break;
+                }
                 */
-                if (InitialEventRecord(_mCcsRecord.CcsId))
+                if (InitialEventRecord(_mCcsEventRecord.CcsId))
                 {
                     var mLeach = new Leach(_connectionTpc, _trx, _traceConnectionString); // 案件過濾與合併
                     Logger.Info("過濾案件...");
-                    var returnStatus = mLeach.LeachCase(_mEventRecord);
+                    var returnStatus = mLeach.LeachCase(_eosEventRecord);
 
                     switch (returnStatus)
                     {
@@ -85,24 +88,24 @@
 
                         case GlobalVariable.NoMeter:
                             Logger.Info("案件過濾完畢,用戶無電號....");
-                            _mEventRecord.TraceFinish = GlobalVariable.TraceFinish;
+                            _eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
                             Process(GlobalVariable.NoMeter);
                             break;
 
                         case GlobalVariable.SameCustomer:
                             Logger.Info("相同用戶重複來電....");
-                            ProcessSameCustomer(_mCcsRecord, _mEventRecord);
+                            ProcessSameCustomer(_mCcsEventRecord, _eosEventRecord);
                             break;
 
                         case GlobalVariable.NoSupplyElc:
                             Logger.Warn("該饋線未供電,無法作事故案件追蹤合併....");
-                            _mEventRecord.TraceFinish = GlobalVariable.TraceFinish;
+                            _eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
                             Process(GlobalVariable.NoMeter);
                             break;
 
                         case GlobalVariable.NoSxfmr:
                             Logger.Warn("該案件無變壓器....");
-                            _mEventRecord.TraceFinish = GlobalVariable.TraceFinish;
+                            _eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
                             Process(GlobalVariable.NoMeter);
                             break;
 
@@ -113,16 +116,16 @@
 
                         case GlobalVariable.TraceFailure:
                             Logger.Error("故障追蹤錯誤,以一般無電號案件方式受理....");
-                            _mEventRecord.TraceFinish = GlobalVariable.TraceFinish;
+                            _eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
                             Process(GlobalVariable.NoMeter);
                             break;
 
                         default:
-                            var traceCount = GetTraceCount(_mCcsRecord.CcsId);
+                            var traceCount = GetTraceCount(_mCcsEventRecord.CcsId);
 
                             if (traceCount < 2)
                             {
-                                if (_trx.Connection.State.ToString().Equals("Open"))
+                                if (_trx.Connection.State == ConnectionState.Open)
                                     _trx.Rollback();
 
                                 _trx.Dispose();
@@ -137,18 +140,18 @@
                                     Logger.Error("發生非預期錯誤,此事故案件暫不被受理....");
 
                                 if (traceCount == 0)
-                                    UpdateTraceCount(_mCcsRecord.CcsId, true);
+                                    UpdateTraceCount(_mCcsEventRecord.CcsId, true);
                                 else
-                                    UpdateTraceCount(_mCcsRecord.CcsId, false);
+                                    UpdateTraceCount(_mCcsEventRecord.CcsId, false);
                             }
                             else
                             {
-                                UpdateTraceCount(_mCcsRecord.CcsId, false);
+                                UpdateTraceCount(_mCcsEventRecord.CcsId, false);
                                 if (returnStatus == GlobalVariable.TraceCounts3)
-                                    _mEventRecord.Note = _mEventRecord.Note+ "(本案用戶供電資料追蹤失敗)";
+                                    _eosEventRecord.Note = _eosEventRecord.Note+ "(本案用戶供電資料追蹤失敗)";
 
                                 Logger.Error("事故案件處理次數3次,仍無法正常處理,以一般無電號案件方式受理....");
-                                _mEventRecord.TraceFinish = GlobalVariable.TraceFinish;
+                                _eosEventRecord.TraceFinish = GlobalVariable.TraceFinish;
                                 Process(GlobalVariable.NoMeter);
                                 sendMail = true;
                             }
@@ -156,7 +159,7 @@
                         /*                        switch (TraceCount)
                                                         {
                                                             case 0:
-                                                                if (_Trx.Connection.State.ToString().Equals("Open"))
+                                                                if (_Trx.Connection.State == ConnectionState.Open)
                                                                     _Trx.Rollback();
 
                                                                 _Trx.Dispose();
@@ -174,7 +177,7 @@
                                                                 break;
 
                                                             case 1:
-                                                                if (_Trx.Connection.State.ToString().Equals("Open"))
+                                                                if (_Trx.Connection.State == ConnectionState.Open)
                                                                     _Trx.Rollback();
 
                                                                 _Trx.Dispose();
@@ -198,7 +201,7 @@
                                                         break;
 
                                                     case CCS.GlobalVariable.CaseTransfer:
-                                                        if (_Trx.Connection.State.ToString().Equals("Open"))
+                                                        if (_Trx.Connection.State == ConnectionState.Open)
                                                             _Trx.Rollback();
 
                                                         _Trx.Dispose();
@@ -206,7 +209,7 @@
                                                         break;
 
                                                     case CCS.GlobalVariable.FDRLocked:
-                                                        if (_Trx.Connection.State.ToString().Equals("Open"))
+                                                        if (_Trx.Connection.State == ConnectionState.Open)
                                                             _Trx.Rollback();
 
                                                         _Trx.Dispose();
@@ -214,7 +217,7 @@
                                                         break;
 
                                                     case CCS.GlobalVariable.Failure_By_DB:
-                                                        if (_Trx.Connection.State.ToString().Equals("Open"))
+                                                        if (_Trx.Connection.State == ConnectionState.Open)
                                                             _Trx.Rollback();
 
                                                         _Trx.Dispose();
@@ -222,7 +225,7 @@
                                                         break;
 
                                                     default:
-                                                        if (_Trx.Connection.State.ToString().Equals("Open"))
+                                                        if (_Trx.Connection.State == ConnectionState.Open)
                                                             _Trx.Rollback();
 
                                                         _Trx.Dispose();
@@ -233,32 +236,32 @@
                 }
 
                 if (fdrid != 0)
-                    CcsMain.ProcessFdr.Remove(fdrid.ToString()); //將處理完的案件的饋線別從處理中饋線集合中移除
+                    CcsMain.Instance.ProcessingFdr.Remove(fdrid); //將處理完的案件的饋線別從處理中饋線集合中移除
             }
             catch (Exception e)
             {
-                Logger.Error(e, e.Message + ". CCSID = " + _mCcsRecord.CcsId);
+                Logger.Error(e, e.Message + ". CCSID = " + _mCcsEventRecord.CcsId);
 
                 if (_trx != null)
                 {
-                    if (_trx.Connection.State.ToString().Equals("Open"))
+                    if (_trx.Connection.State == ConnectionState.Open)
                         _trx.Rollback();
 
                     _trx.Dispose();
                 }
 
-                if (_mEventRecord != null && _mEventRecord.FdrId!= 0)
-                    CcsMain.ProcessFdr.Remove(_mEventRecord.FdrId.ToString()); //將處理完的案件的饋線別從處理中饋線集合中移除
+                if (_eosEventRecord != null && _eosEventRecord.FdrId!= 0)
+                    CcsMain.Instance.ProcessingFdr.Remove(_eosEventRecord.FdrId); //將處理完的案件的饋線別從處理中饋線集合中移除
                 //throw e;
             }
             finally
             {
-                CcsMain.ProcessCases.Remove(_mCcsRecord.CcsId);
+                CcsMain.Instance.ProcessingCases.Remove(_mCcsEventRecord.CcsId);
                 OnThreadFinish(new ThreadEndEvent(_connectionTpc));
             }
 
             if (sendMail)
-                new MailService(_connectionTpc).SendMail(_mCcsRecord.CcsId);
+                new MailService(_connectionTpc).SendMail(_mCcsEventRecord.CcsId);
         }
 
         private void Process(int kind)
@@ -267,16 +270,16 @@
 
             try
             {
-                if (finishEvent.Finish(kind, _mEventRecord, _connectionTpc, _trx))
+                if (finishEvent.Finish(kind, _eosEventRecord, _connectionTpc, _trx))
                 {
                     Logger.Info("OMS資料更新成功!");
-                    if (UpdateCcsData(_mEventRecord, _mCcsRecord, (int) CCSCaseState.WaitForDespatch))
+                    if (UpdateCcsData(_eosEventRecord, _mCcsEventRecord, (int) CCSCaseState.WaitForDespatch))
                     {
                         Logger.Info("CCS資料更新成功!");
                     }
                     else
                     {
-                        if (_trx.Connection.State.ToString().Equals("Open"))
+                        if (_trx.Connection.State == ConnectionState.Open)
                             _trx.Rollback();
 
                         _trx.Dispose();
@@ -287,14 +290,13 @@
                     // 須等全部動作都正確做完才可作commit的動作
                     _trx.Commit();
                     _trx.Dispose();
-                    ;
                     var alarmClient = new AlarmData(_connectionTpc, _trx);
-                    alarmClient.Alarm(_mEventRecord.AcceptNum, _mEventRecord.Dept);
+                    alarmClient.Alarm(_eosEventRecord.AcceptNum, _eosEventRecord.Dept);
                 }
                 else
                 {
                     // 有錯誤需要RollBack
-                    if (_trx.Connection.State.ToString().Equals("Open"))
+                    if (_trx.Connection.State == ConnectionState.Open)
                         _trx.Rollback();
 
                     _trx.Dispose();
@@ -305,62 +307,60 @@
             }
             catch (Exception e)
             {
-                throw e;
+                Logger.Warn(e, e.Message);
+                throw;
             }
         }
 
         protected virtual void OnThreadFinish(ThreadEndEvent e)
         {
-            if (ThreadFinish != null)
-            {
-                ThreadFinish(this, e);
-            }
+            ThreadFinish?.Invoke(this, e);
         }
 
-        private bool UpdateCcsData(EventRecord mRecord, CcsRecord mCcsRecord, int caseStatus)
+        private bool UpdateCcsData(EOSEventRecord eosEventRecord, CCSEventRecord ccsEventRecord, int caseStatus)
         {
             Logger.Info("進行CCS資料更新程序...");
-            var eventQuery = new EventQuery();
+            var ccsEventQuery = new CCSEventQuery();
             var status = caseStatus;
             // 設定CCSID
-            eventQuery.CcsId = mCcsRecord.CcsId;
+            ccsEventQuery.CcsId = ccsEventRecord.CcsId;
             // 設定受理時間
-            eventQuery.ChangeTime = mCcsRecord.AcceptTime;
+            ccsEventQuery.ChangeTime = ccsEventRecord.AcceptTime;
             // 設定用戶電號
-            if (mCcsRecord.Meter != null)
+            if (ccsEventRecord.Meter != null)
             {
-                eventQuery.Meter = mCcsRecord.Meter;
+                ccsEventQuery.Meter = ccsEventRecord.Meter;
             }
             // 如果該案件為子案件,需找出母案件的casestatus來insert eos.eventquery
             // 若母案件已派工,需一併紀錄預計復電時間等資訊
-            if (mRecord.ParentId!= 0)
+            if (eosEventRecord.ParentId!= 0)
             {
-                status = GetRealCaseStatus(mRecord.ParentId) == (int) CCSCaseState.WaitForSponsor
+                status = GetRealCaseStatus(eosEventRecord.ParentId) == (int) CCSCaseState.WaitForSponsor
                     ? (int) CCSCaseState.EventDespatched
                     : (int) CCSCaseState.WaitForDespatch;
                 if (status == (int) CCSCaseState.EventDespatched)
                 {
-                    SetDespatchInfo(mRecord.ParentId, eventQuery);
+                    SetDespatchInfo(eosEventRecord.ParentId, ccsEventQuery);
                 }
             }
             // 若此案件為專案案件升級為母案件,則必須判斷原先案件是否已經派工
-            if ((mCcsRecord.ImportCase == GlobalVariable.IsImportCase) && mRecord.IsDespatched)
+            if ((ccsEventRecord.ImportCase == GlobalVariable.IsImportCase) && eosEventRecord.IsDespatched)
             {
                 status = (int) CCSCaseState.EventDespatched;
-                SetDespatchInfo(mRecord.CaseId, eventQuery);
+                SetDespatchInfo(eosEventRecord.CaseId, ccsEventQuery);
             }
-            eventQuery.CaseStatus = status;
-            // 更新CCS.EventQuery
-            if (!eventQuery.Update(_connectionTpc, _trx))
+            ccsEventQuery.CaseStatus = status;
+            // 更新CCS.CCSEventQuery
+            if (!ccsEventQuery.Update(_connectionTpc, _trx))
             {
                 Logger.Error("更新ccs.eventquery失敗!");
                 return false;
             }
             Logger.Info("更新ccs.eventquery成功!");
             var numberContrast = new NumberContrast();
-            numberContrast.SetAcceptNum(mRecord.AcceptNum);
-            numberContrast.SetCaseId(mRecord.CaseId);
-            numberContrast.SetCcsid(mCcsRecord.CcsId);
+            numberContrast.SetAcceptNum(eosEventRecord.AcceptNum);
+            numberContrast.SetCaseId(eosEventRecord.CaseId);
+            numberContrast.SetCcsid(ccsEventRecord.CcsId);
             // 更新CCS.Num_Contrast
             if (!numberContrast.Update(_connectionTpc, _trx))
             {
@@ -381,71 +381,73 @@
             _trx = _connectionTpc.BeginTransaction();
 
             deptContrast = new DeptContrast(_connectionTpc, _trx);
-            _mEventRecord = new EventRecord(initialData.GetNewCaseId(), _connectionTpc, _trx);
-            _mEventRecord.AcceptNum = initialData.GetNewAcceptNum();
+            _eosEventRecord = new EOSEventRecord(initialData.GetNewCaseId(), _connectionTpc, _trx)
+            {
+                AcceptNum = initialData.GetNewAcceptNum()
+            };
 
-            mContrast.SetAcceptNum(_mEventRecord.AcceptNum);
-            mContrast.SetCaseId(_mEventRecord.CaseId);
-            mContrast.SetCcsid(_mCcsRecord.CcsId);
+            mContrast.SetAcceptNum(_eosEventRecord.AcceptNum);
+            mContrast.SetCaseId(_eosEventRecord.CaseId);
+            mContrast.SetCcsid(_mCcsEventRecord.CcsId);
 
             if (!mContrast.Insert(_connectionTpc, _trx))
             {
                 Logger.Error("初始化寫入CCS.Num_Contrast時發生錯誤!");
 
-                if (_trx.Connection.State.ToString().Equals("Open"))
+                if (_trx.Connection.State == ConnectionState.Open)
                     _trx.Rollback();
 
                 return false;
             }
 
             // 設定用戶姓名
-            _mEventRecord.Name = _mCcsRecord.CustomerName;
+            _eosEventRecord.Name = _mCcsEventRecord.CustomerName;
 
-            if (_mCcsRecord.Meter != null && _mCcsRecord.Meter.Length != 0)
+            if (_mCcsEventRecord.Meter != null && _mCcsEventRecord.Meter.Length != 0)
             {
                 // 需先找出部門代號,再找到該部門屬於哪一個巡修單位
-                _mEventRecord.Meter = _mCcsRecord.Meter;
-                var tmp = deptContrast.getDept_Code(_mCcsRecord.Meter);
+                _eosEventRecord.Meter = _mCcsEventRecord.Meter;
+                var tmp = deptContrast.getDept_Code(_mCcsEventRecord.Meter);
 
                 if (tmp == -1)
-                    _mEventRecord.Dept = FindoutDeptByAddr(_mCcsRecord, _trx);
+                    _eosEventRecord.Dept = FindoutDeptByAddr(_mCcsEventRecord, _trx);
                 else
-                    _mEventRecord.Dept = tmp;
+                    _eosEventRecord.Dept = tmp;
 
-                _mEventRecord.FdrId = GetFdrid(_mCcsRecord.Meter);
+                _eosEventRecord.FdrId = GetFdrid(_mCcsEventRecord.Meter);
             }
             else
             {
                 // 當無用戶電號時,所找出的部門別不需再去找出屬於哪一個巡修股(findoutDeptByAddr會直接找到相對應的巡修股)
-                var dept = FindoutDeptByAddr(_mCcsRecord, _trx);
-                _mEventRecord.Dept = dept;
+                var dept = FindoutDeptByAddr(_mCcsEventRecord, _trx);
+                _eosEventRecord.Dept = dept;
             }
             // 設定用戶電話號碼
-            if (_mCcsRecord.CustomerTel != null)
+            if (_mCcsEventRecord.CustomerTel != null)
             {
-                _mEventRecord.Tel = _mCcsRecord.CustomerTel;
+                _eosEventRecord.Tel = _mCcsEventRecord.CustomerTel;
             }
             // 檢查並設定用戶地址
-            var mAddr = _mCcsRecord.AddressCity + _mCcsRecord.AddressTown + _mCcsRecord.AddressRoad +
-                        _mCcsRecord.AddressOther;
+            var mAddr = _mCcsEventRecord.AddressCity + _mCcsEventRecord.AddressTown + _mCcsEventRecord.AddressRoad +
+                        _mCcsEventRecord.AddressOther;
 
             if (mAddr.Trim().Length == 0)
             {
                 Logger.Error("CCS 案件受理程序初始化失敗...地址為空白");
 
-                if (_trx.Connection.State.ToString().Equals("Open"))
+                if (_trx.Connection.State == ConnectionState.Open)
                     _trx.Rollback();
 
                 return false;
             }
 
-            _mEventRecord.Addr = mAddr;
+            _eosEventRecord.Addr = mAddr;
             // 設定事故原因
-            _mEventRecord.Brief = TransferEventBrief(_mCcsRecord.EventBrief);
+            _eosEventRecord.Brief = TransferEventBrief(_mCcsEventRecord.EventBrief);
             try
             {
                 var encoding = new ASCIIEncoding();
-                var source = encoding.GetBytes(_mEventRecord.Brief);
+                var source = encoding.GetBytes(_eosEventRecord.Brief);
 
                 if (source.Length > 24)
                 {
@@ -456,57 +458,57 @@
                     }
 
                     var enc = Encoding.ASCII;
-                    _mEventRecord.Brief = enc.GetString(dest);
+                    _eosEventRecord.Brief = enc.GetString(dest);
                     source = dest = null;
                 }
             }
             catch (Exception)
             {
-                _mEventRecord.Brief = "其他";
+                _eosEventRecord.Brief = "其他";
             }
 
-            if (_mCcsRecord.CcsId.StartsWith("A"))
-                _mEventRecord.Log = "APP";
-            else if (_mCcsRecord.CcsId.StartsWith("W"))
-                _mEventRecord.Log = "WEB";
+            if (_mCcsEventRecord.CcsId.StartsWith("A"))
+                _eosEventRecord.Log = "APP";
+            else if (_mCcsEventRecord.CcsId.StartsWith("W"))
+                _eosEventRecord.Log = "WEB";
             else
-                _mEventRecord.Log = "CCS";
+                _eosEventRecord.Log = "CCS";
 
-            _mEventRecord.AcceptDate = _mCcsRecord.AcceptTime;
+            _eosEventRecord.AcceptDate = _mCcsEventRecord.AcceptTime;
 
             // 設定用戶種類
-            if (_mCcsRecord.ImportCase == GlobalVariable.IsImportCase)
+            if (_mCcsEventRecord.ImportCase == GlobalVariable.IsImportCase)
             {
-                _mEventRecord.ImportCase = GlobalVariable.IsImportCase;
-                _mEventRecord.Level = GlobalVariable.ALevel; // default set A level
+                _eosEventRecord.ImportCase = GlobalVariable.IsImportCase;
+                _eosEventRecord.Level = GlobalVariable.ALevel; // default set A level
             }
             else
             {
-                _mEventRecord.ImportCase = GlobalVariable.NotImportCase;
-                _mEventRecord.Level = GlobalVariable.NoLevel;
+                _eosEventRecord.ImportCase = GlobalVariable.NotImportCase;
+                _eosEventRecord.Level = GlobalVariable.NoLevel;
             }
 
             // 檢查字串中有無特殊字元' ,若有則取代為"
-            if (_mCcsRecord.Note != null)
-                _mEventRecord.Note = _mCcsRecord.Note.Replace('\'', '\"');
+            if (_mCcsEventRecord.Note != null)
+                _eosEventRecord.Note = _mCcsEventRecord.Note.Replace('\'', '\"');
 
             // 設定回覆姓名及電話
-            if (_mCcsRecord.RecallName != null)
+            if (_mCcsEventRecord.RecallName != null)
             {
-                _mEventRecord.IsReCall = GlobalVariable.IsReCall;
-                _mEventRecord.ReCallName = _mCcsRecord.RecallName.Replace('\'', '\"');
-                _mEventRecord.ReCallTel = _mCcsRecord.RecallTel;
+                _eosEventRecord.IsReCall = GlobalVariable.IsReCall;
+                _eosEventRecord.ReCallName = _mCcsEventRecord.RecallName.Replace('\'', '\"');
+                _eosEventRecord.ReCallTel = _mCcsEventRecord.RecallTel;
             }
             else
             {
-                _mEventRecord.IsReCall = GlobalVariable.NotReCall;
+                _eosEventRecord.IsReCall = GlobalVariable.NotReCall;
             }
 
             Logger.Info("初始化EOS.EVENTRECORD成功!");
             return true;
         }
 
-        //private bool initialCCSInfo(CCS.Object.EventQuery m_EventQuery, CCS.Object.NumberContrast m_Contrast)
+        //private bool initialCCSInfo(CCS.Object.CCSEventQuery m_EventQuery, CCS.Object.NumberContrast m_Contrast)
         //{
         //    checkCaseAlreadyExits(m_EventQuery);
         //    if (!m_EventQuery.Insert(_PLog, _ConnectionTPC, _Trx))
@@ -522,9 +524,9 @@
         //    return true;
         //}
 
-        private void CheckCaseAlreadyExits(EventQuery mEventQuery)
+        private void CheckCaseAlreadyExits(CCSEventQuery ccsEventQuery)
         {
-            var sqlStmt = "select ccsid from ccs.eventquery where ccsid='" + mEventQuery.CcsId + "'";
+            var sqlStmt = "select ccsid from ccs.eventquery where ccsid='" + ccsEventQuery.CcsId + "'";
 
             var command = new OracleCommand(sqlStmt, _connectionTpc, _trx);
             var reader = command.ExecuteReader();
@@ -533,10 +535,10 @@
             {
                 if (reader.Read())
                 {
-                    command.CommandText = "delete from ccs.eventquery where ccsid='" + mEventQuery.CcsId + "'";
+                    command.CommandText = "delete from ccs.eventquery where ccsid='" + ccsEventQuery.CcsId + "'";
                     command.ExecuteNonQuery();
 
-                    command.CommandText = "delete from ccs.num_contrast where ccsid='" + mEventQuery.CcsId + "'";
+                    command.CommandText = "delete from ccs.num_contrast where ccsid='" + ccsEventQuery.CcsId + "'";
                     command.ExecuteNonQuery();
                 }
             }
@@ -551,16 +553,14 @@
             }
         }
 
-        private int FindoutDeptByAddr(CcsRecord ccsRecord, OracleTransaction trx)
+        private int FindoutDeptByAddr(CCSEventRecord ccsEventRecord, OracleTransaction trx)
         {
-            var addrContrast = new AddrContrast(_connectionTpc, trx);
-            return addrContrast.FindDeptId(ccsRecord.AddressCity, ccsRecord.AddressTown, ccsRecord.AddressRoad);
+            return AddrContrast.Instance.FindDeptId(ccsEventRecord.AddressCity, ccsEventRecord.AddressTown, ccsEventRecord.AddressRoad);
         }
 
         private string TransferEventBrief(int code)
         {
-            var result = "";
-            result = GlobalVariable.CcsCodelist.GetContent(GlobalVariable.CcsEventBrief, code);
+            var result = GlobalVariable.CcsCodelist.GetContent(GlobalVariable.CcsEventBrief, code);
 
             //            int MaxLength = this.getFieldLength("EOS", "EVENTRECORD", "EVENTBRIEF");
 
@@ -578,10 +578,9 @@
 
         private int GetRealCaseStatus(int parentId)
         {
-            string sqlStmt;
             var status = (int) CCSCaseState.WaitForDespatch;
 
-            sqlStmt = "SELECT CASESTATUS FROM EOS.EVENTS WHERE CASEID = " + parentId;
+            var sqlStmt = "SELECT CASESTATUS FROM EOS.EVENTS WHERE CASEID = " + parentId;
             var command = new OracleCommand(sqlStmt, _connectionTpc, _trx);
             var reader = command.ExecuteReader();
 
@@ -605,10 +604,10 @@
             return status;
         }
 
-        private void SetDespatchInfo(int mCaseId, EventQuery mEventQry)
+        private void SetDespatchInfo(int caseId, CCSEventQuery ccsEventQry)
         {
-            var sqlStmt = "select despatchtime,assumefixtime,assumedtime_nth,delaytime,reason,eventlocation from eos.eventdespatch where caseid="
-                          + mCaseId;
+            var sqlStmt = "SELECT DESPATCHTIME,ASSUMEFIXTIME,ASSUMEDTIME_NTH,DELAYTIME,REASON,EVENTLOCATION FROM EOS.EVENTDESPATCH WHERE CASEID="
+                          + caseId;
 
             OracleCommand command = null;
             OracleDataReader reader = null;
@@ -620,13 +619,13 @@
 
                 if (reader.Read())
                 {
-                    mEventQry.ChangeTime = Convert.ToDateTime(reader["despatchtime"]).ToString("yyy/MM/dd HH:mm:ss");
-                    mEventQry.AssumedTime = Convert.ToDateTime(reader["assumefixtime"]).ToString("yyy/MM/dd HH:mm:ss");
-                    mEventQry.AssumedTimeNth =
+                    ccsEventQry.ChangeTime = Convert.ToDateTime(reader["despatchtime"]).ToString("yyy/MM/dd HH:mm:ss");
+                    ccsEventQry.AssumedTime = Convert.ToDateTime(reader["assumefixtime"]).ToString("yyy/MM/dd HH:mm:ss");
+                    ccsEventQry.AssumedTimeNth =
                         Convert.ToDateTime(reader["assumedtime_nth"]).ToString("yyy/MM/dd HH:mm:ss");
-                    mEventQry.DelayTimes = Convert.ToInt32(reader["delaytime"].ToString());
-                    mEventQry.Reason = reader["reason"].ToString();
-                    mEventQry.EventLocation = reader["eventlocation"].ToString();
+                    ccsEventQry.DelayTimes = Convert.ToInt32(reader["delaytime"].ToString());
+                    ccsEventQry.Reason = reader["reason"].ToString();
+                    ccsEventQry.EventLocation = reader["eventlocation"].ToString();
                 }
             }
             catch (Exception e)
@@ -636,27 +635,24 @@
             }
             finally
             {
-                if (reader != null)
-                    reader.Close();
-
-                if (command != null)
-                    command.Dispose();
+                reader?.Close();
+                command?.Dispose();
             }
         }
 
-        private void ProcessSameCustomer(CcsRecord mCcsRecord, EventRecord mEventRec)
+        private void ProcessSameCustomer(CCSEventRecord ccsEventRecord, EOSEventRecord eosEventRec)
         {
             Logger.Info("處理相同用戶重複來電...");
             StringBuilder note = null;
 
-            var sqlStmt = "select note from eos.eventrecord where caseid = " + mEventRec.TmpCaseId;
+            var sqlStmt = "select note from eos.eventrecord where caseid = " + eosEventRec.TmpCaseId;
             var command = new OracleCommand(sqlStmt, _connectionTpc, _trx);
             var reader = command.ExecuteReader();
 
             try
             {
                 if (reader.Read())
-                    note = new StringBuilder(reader["note"] == null ? "" : reader["note"].ToString().Trim());
+                    note = new StringBuilder(reader["note"]?.ToString().Trim() ?? "");
             }
             catch (Exception e)
             {
@@ -671,16 +667,16 @@
             if (!note.ToString().EndsWith("|") && !note.ToString().Trim().Equals(""))
                 note.Append(" | ");
 
-            if ((mEventRec.Note!= null) && (mEventRec.Note.Length != 0))
-                note.Append(mEventRec.AcceptDate+ " " + mEventRec.Note);
+            if (!string.IsNullOrEmpty(eosEventRec.Note))
+                note.Append(eosEventRec.AcceptDate+ " " + eosEventRec.Note);
             else
-                note.Append(mEventRec.AcceptDate+ " 用戶再次報案");
+                note.Append(eosEventRec.AcceptDate+ " 用戶再次報案");
 
             // 判斷重複來電的用戶最初成立的案件是否是由CCS受理
             var acceptByCcs = false;
 
             var sqlStmt1 = "select count(*) as count from ccs.num_contrast c,ccs.eventquery q where c.ccsid=q.ccsid and caseid="
-                           + mEventRec.TmpCaseId;
+                           + eosEventRec.TmpCaseId;
             var command1 = new OracleCommand(sqlStmt1, _connectionTpc, _trx);
             var reader1 = command1.ExecuteReader();
 
@@ -694,8 +690,9 @@
                     }
                 }
             }
-            catch (Exception)
+            catch (Exception e)
             {
+                Logger.Warn(e, e.Message);
             }
             finally
             {
@@ -707,8 +704,8 @@
             // 若先前案件由CCS受理,則直接從ccs.eventquery取出先前的案件狀態資料寫入
             if (acceptByCcs)
             {
-                updCcsEventQuery = "update ccs.eventquery set (casestatus,changetime,handlingsummary,assumedtime,assumedtime_nth,delaytimes,reason,eventlocation) = (select casestatus,changetime,handlingsummary,assumedtime,assumedtime_nth,delaytimes,reason,eventlocation from ccs.eventquery where ccsid=(select ccsid from ccs.num_contrast where caseid="
-                                   + mEventRec.TmpCaseId+ " and rownum<2)) where CCSID='" + mCcsRecord.CcsId + "'";
+                updCcsEventQuery = "UPDATE CCS.EVENTQUERY SET (CASESTATUS,CHANGETIME,HANDLINGSUMMARY,ASSUMEDTIME,ASSUMEDTIME_NTH,DELAYTIMES,REASON,EVENTLOCATION) = (select casestatus,changetime,handlingsummary,assumedtime,assumedtime_nth,delaytimes,reason,eventlocation from ccs.eventquery where ccsid=(select ccsid from ccs.num_contrast where caseid="
+                                   + eosEventRec.TmpCaseId+ " AND ROWNUM<2)) WHERE CCSID='" + ccsEventRecord.CcsId + "'";
                 // 若非由CCS受理(OMS,Web)則從EOS的table中尋找先前案件的狀態資料
             }
             else
@@ -729,11 +726,10 @@
 
                 try
                 {
-                    var sqlStmt2 = "select  1,to_char(r.accepttime,'YYYY/MM/DD HH24:MI:SS') as ACCEPTTIME,to_char(d.despatchtime,'YYYY/MM/DD HH24:MI:SS') as DESPATCHTIME,to_char(s.reconditiontime,'YYYY/MM/DD HH24:MI:SS')SPONSORTIME,e.casestatus,s.handling,to_char(d.assumefixtime,'YYYY/MM/DD HH24:MI:SS') as assumefixtime,to_char(d.assumedtime_nth,'YYYY/MM/DD HH24:MI:SS') as assumedtime_nth,d.delaytime,d.reason,d.eventlocation from eos.eventrecord r,eos.events e,eos.eventdespatch d,eos.eventsponsor s where (r.caseid=e.caseid) and (r.caseid=d.caseid(+)) and (r.caseid=s.caseid(+)) and r.caseid="
-                                   + mEventRec.TmpCaseId                                   + " union "
-                                   +
-                                   "select  2,to_char(r.accepttime,'YYYY/MM/DD HH24:MI:SS') as ACCEPTTIME,to_char(d.despatchtime,'YYYY/MM/DD HH24:MI:SS') as DESPATCHTIME,to_char(s.reconditiontime,'YYYY/MM/DD HH24:MI:SS')SPONSORTIME,e.casestatus,s.handling,to_char(d.assumefixtime,'YYYY/MM/DD HH24:MI:SS') as assumefixtime,to_char(d.assumedtime_nth,'YYYY/MM/DD HH24:MI:SS') as assumedtime_nth,d.delaytime,d.reason,d.eventlocation from eos.eventrecord r,eos.events e,eos.eventdespatch d,eos.eventsponsor s where (r.caseid=e.caseid) and (r.caseid=d.caseid(+)) and (r.caseid=s.caseid(+)) and r.caseid= (select parentid from eos.mergecase where caseid="
-                                   + mEventRec.TmpCaseId+ ")";
+                    var sqlStmt2 = "SELECT  1,TO_CHAR(R.ACCEPTTIME,'YYYY/MM/DD HH24:MI:SS') AS ACCEPTTIME,TO_CHAR(D.DESPATCHTIME,'YYYY/MM/DD HH24:MI:SS') AS DESPATCHTIME,to_char(s.reconditiontime,'YYYY/MM/DD HH24:MI:SS')SPONSORTIME,e.casestatus,s.handling,to_char(d.assumefixtime,'YYYY/MM/DD HH24:MI:SS') as assumefixtime,to_char(d.assumedtime_nth,'YYYY/MM/DD HH24:MI:SS') as assumedtime_nth,d.delaytime,d.reason,d.eventlocation from eos.eventrecord r,eos.events e,eos.eventdespatch d,eos.eventsponsor s where (r.caseid=e.caseid) and (r.caseid=d.caseid(+)) and (r.caseid=s.caseid(+)) and r.caseid="
+                                   + eosEventRec.TmpCaseId                                   + " union "
+                                   +"SELECT  2,TO_CHAR(R.ACCEPTTIME,'YYYY/MM/DD HH24:MI:SS') AS ACCEPTTIME,TO_CHAR(D.DESPATCHTIME,'YYYY/MM/DD HH24:MI:SS') AS DESPATCHTIME,to_char(s.reconditiontime,'YYYY/MM/DD HH24:MI:SS')SPONSORTIME,e.casestatus,s.handling,to_char(d.assumefixtime,'YYYY/MM/DD HH24:MI:SS') as assumefixtime,to_char(d.assumedtime_nth,'YYYY/MM/DD HH24:MI:SS') as assumedtime_nth,d.delaytime,d.reason,d.eventlocation from eos.eventrecord r,eos.events e,eos.eventdespatch d,eos.eventsponsor s where (r.caseid=e.caseid) and (r.caseid=d.caseid(+)) and (r.caseid=s.caseid(+)) and r.caseid= (select parentid from eos.mergecase where caseid="
+                                   + eosEventRec.TmpCaseId+ ")";
 
                     command2 = new OracleCommand(sqlStmt2, _connectionTpc, _trx);
                     reader2 = command2.ExecuteReader();
@@ -743,15 +739,15 @@
                         accepttime = reader2["ACCEPTTIME"].ToString();
                         despatchtime = reader2["DESPATCHTIME"].ToString();
                         sponsortime = reader2["SPONSORTIME"].ToString();
-                        assumefixtime = reader2["ASSUMEFIXTIME"] == null ? "" : reader2["ASSUMEFIXTIME"].ToString();
-                        assumedtimeNth = reader2["ASSUMEDTIME_NTH"] == null ? "" : reader2["ASSUMEDTIME_NTH"].ToString();
-                        handling = reader2["HANDLING"] == null ? "" : reader2["HANDLING"].ToString();
-                        reason = reader2["REASON"] == null ? "" : reader2["REASON"].ToString();
+                        assumefixtime = reader2["ASSUMEFIXTIME"]?.ToString() ?? "";
+                        assumedtimeNth = reader2["ASSUMEDTIME_NTH"]?.ToString() ?? "";
+                        handling = reader2["HANDLING"]?.ToString() ?? "";
+                        reason = reader2["REASON"]?.ToString() ?? "";
                         casestatus = Convert.ToInt32(reader2["CASESTATUS"].ToString());
                         delaytime = reader2["DELAYTIME"].ToString().Length == 0
                             ? 0
                             : Convert.ToInt32(reader2["DELAYTIME"].ToString());
-                        eventlocation = reader2["EVENTLOCATION"] == null ? "" : reader2["EVENTLOCATION"].ToString();
+                        eventlocation = reader2["EVENTLOCATION"]?.ToString() ?? "";
                     }
 
                     if (accepttime != null)
@@ -766,14 +762,14 @@
                     {
                         changetime = sponsortime;
                     }
-                    updCcsEventQuery = "update ccs.eventquery set casestatus=" + casestatus + ",changetime=to_date('" +
+                    updCcsEventQuery = "UPDATE CCS.EVENTQUERY SET CASESTATUS=" + casestatus + ",changetime=to_date('" +
                                        changetime
                                        + "','YYYY/MM/DD HH24:MI:SS'),handlingsummary='" + handling +
                                        "',assumedtime=to_date('" + assumefixtime
                                        + "','YYYY/MM/DD HH24:MI:SS'),assumedtime_nth=to_date('" + assumedtimeNth +
                                        "','YYYY/MM/DD HH24:MI:SS'),delaytimes="
-                                       + delaytime + ",reason='" + reason + "',eventlocation='" + eventlocation +
-                                       "' where ccsid='" + mCcsRecord.CcsId + "'";
+                                       + delaytime + ",REASON='" + reason + "',EVENTLOCATION='" + eventlocation +
+                                       "' WHERE CCSID='" + ccsEventRecord.CcsId + "'";
                 }
                 catch (Exception e)
                 {
@@ -781,27 +777,25 @@
                 }
                 finally
                 {
-                    if (reader2 != null)
-                        reader2.Close();
-
-                    if (command2 != null)
-                        command2.Dispose();
+                    reader2?.Close();
+                    command2?.Dispose();
                 }
             }
 
             var updEosEventRecord = "UPDATE EOS.EVENTRECORD SET NOTE = '" + TrimToLimit(note.ToString(), 127)
-                                    + "' where caseid = " + _mEventRecord.TmpCaseId;
+                                    + "' WHERE CASEID = " + _eosEventRecord.TmpCaseId;
             var updCcsNumContrast = "UPDATE CCS.NUM_CONTRAST SET(acceptnum,caseid) = (SELECT acceptnum," +
-                                    mEventRec.TmpCaseId                                    + " FROM eos.eventrecord WHERE caseid = " + mEventRec.TmpCaseId+
-                                    ") where ccsid='" + mCcsRecord.CcsId + "'";
+                                    eosEventRec.TmpCaseId                                    
+                                    + " FROM EOS.EVENTRECORD WHERE CASEID = " + eosEventRec.TmpCaseId +
+                                    ") where ccsid='" + ccsEventRecord.CcsId + "'";
 
             var exeCommand = new OracleCommand(updCcsEventQuery, _connectionTpc, _trx);
-            // 將用戶重複來電案件資料寫回CCS.EventQuery
+            // 將用戶重複來電案件資料寫回CCS.CCSEventQuery
             if (exeCommand.ExecuteNonQuery() <= 0)
             {
                 exeCommand.Dispose();
 
-                if (_trx.Connection.State.ToString().Equals("Open"))
+                if (_trx.Connection.State == ConnectionState.Open)
                     _trx.Rollback();
 
                 _trx.Dispose();
@@ -810,12 +804,12 @@
             }
 
             exeCommand.CommandText = updEosEventRecord;
-            // 將CCS案件備註資料Append到EOS.EventRecord
+            // 將CCS案件備註資料Append到EOS.EOSEventRecord
             if (exeCommand.ExecuteNonQuery() <= 0)
             {
                 exeCommand.Dispose();
 
-                if (_trx.Connection.State.ToString().Equals("Open"))
+                if (_trx.Connection.State == ConnectionState.Open)
                     _trx.Rollback();
 
                 _trx.Dispose();
@@ -828,7 +822,7 @@
             if (exeCommand.ExecuteNonQuery() <= 0)
             {
                 exeCommand.Dispose();
-                if (_trx.Connection.State.ToString().Equals("Open"))
+                if (_trx.Connection.State == ConnectionState.Open)
                     _trx.Rollback();
 
                 _trx.Dispose();

--
Gitblit v0.0.0-SNAPSHOT