/// <summary>
        /// Get purge log status
        /// </summary>
        /// <param name="cond"></param>
        /// <returns></returns>
        public ActionResult CMS240_GetStatus(CMS240_ScreenParameter cond)
        {
            ObjectResultData res = new ObjectResultData();

            res.MessageType = MessageModel.MESSAGE_TYPE.WARNING;

            List <CMS240_PurgeLogDataDetail> listPurgeLogFailDetail = new List <CMS240_PurgeLogDataDetail>();

            CMS240_Status status = new CMS240_Status();

            try
            {
                if (ModelState.IsValid == false)
                {
                    ValidatorUtil.BuildErrorMessage(res, this);
                    if (res.IsError)
                    {
                        return(Json(res));
                    }
                }

                ICommonHandler hand = ServiceContainer.GetService <ICommonHandler>() as ICommonHandler;
                List <DataEntity.Common.doSystemStatus> lstSystemStatus = hand.GetSystemStatus();
                bool bSuspendFlag = false;
                if (lstSystemStatus.Count > 0)
                {
                    bSuspendFlag = (lstSystemStatus[0].SuspendFlag == FlagType.C_FLAG_ON);
                }

                status.SuspendFlag = bSuspendFlag;
                status.MonthYear   = cond.MonthYear;


                ILogHandler  logHandler   = ServiceContainer.GetService <ILogHandler>() as ILogHandler;
                List <dtTPL> lstLogHeader = logHandler.GetTbt_Purgelog(cond.MonthYear);


                List <dtMonthYear> lstLogMonthYear = logHandler.GetLogMonthYear();
                status.IsExistInTransLog = true;
                if (lstLogMonthYear.Count > 0)
                {
                    List <dtMonthYear> t = (from p in lstLogMonthYear where p.MonthYear.Value.CompareTo(cond.MonthYear.Value) == 0
                                            select p).ToList <dtMonthYear>();

                    if (t.Count == 0) // 0 mean not exist
                    {
                        status.IsExistInTransLog = false;
                    }
                }


                if (lstLogHeader.Count > 0)
                {
                    //// Misc Mapping (#1)
                    //MiscTypeMappingList miscList = new MiscTypeMappingList();
                    //miscList.AddMiscType(lstLogHeader.ToArray());
                    //ICommonHandler comHandler = ServiceContainer.GetService<ICommonHandler>() as ICommonHandler;
                    //comHandler.MiscTypeMappingList(miscList);

                    // Misc Mapping (#2)
                    ICommonHandler        handlerComm  = ServiceContainer.GetService <ICommonHandler>() as ICommonHandler;
                    List <doMiscTypeCode> MiscTypeCode = new List <doMiscTypeCode>();
                    List <string>         lsFieldNames = new List <string>();
                    lsFieldNames.Add(MiscType.C_BATCH_STATUS);
                    List <doMiscTypeCode> MiscTypeList = handlerComm.GetMiscTypeCodeListByFieldName(lsFieldNames);

                    lstLogHeader[0].PurgeStatusName = handlerComm.GetMiscDisplayValue(MiscTypeList, MiscType.C_BATCH_STATUS, lstLogHeader[0].PurgeStatus);

                    // 1. Keep purge status , fail****
                    // 2. Create data list (PurgeLogDataDetail) from xml (column ErrorDescription)

                    bool isShowPurgeLogDataDetail = (lstLogHeader[0].PurgeStatus == BatchStatus.C_BATCH_STATUS_FAILED);

                    status.isShowPurgeLogDataDetail = isShowPurgeLogDataDetail;
                    status.PurgeStatusName          = lstLogHeader[0].PurgeStatusName;
                    status.PurgeStatus = lstLogHeader[0].PurgeStatus;
                    status.xml         = lstLogHeader[0].ErrorDescription;
                }

                UpdateScreenObject(status);
            }
            catch (Exception ex)
            {
                res.AddErrorMessage(ex);
            }

            res.ResultData = status;

            return(Json(res));
        }