/// <summary>
        /// Validate search condition before proceed search incident
        /// </summary>
        /// <param name="condition"></param>
        /// <returns></returns>
        public ActionResult CTS310_ValidateSearch(SearchIncidentCondition condition)
        {
            ObjectResultData res = new ObjectResultData();

            try {
                res.MessageType = MessageModel.MESSAGE_TYPE.WARNING;
                ValidatorUtil.BuildErrorMessage(res, this, new object[] { condition });

                if (condition.SpecfyPeriod == null && (condition.SpecifyPeriodFrom.HasValue || condition.SpecifyPeriodTo.HasValue))
                {
                    res.AddErrorMessage(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0116, null, new string[] { "cboSpecifiedPeriod" });
                }

                if (condition.SpecfyPeriod != null &&
                    condition.SpecifyPeriodFrom.HasValue && condition.SpecifyPeriodTo.HasValue &&
                    condition.SpecifyPeriodFrom.Value.CompareTo(condition.SpecifyPeriodTo.Value) > 0)
                {
                    res.AddErrorMessage(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0090, null, new string[] { "datePeriodFrom", "datePeriodTo" });
                }

                if (!res.IsError)
                {
                    res.ResultData = condition;
                }
            } catch (Exception ex) {
                res.AddErrorMessage(ex);
            }

            return(Json(res));
        }
        /// <summary>
        /// Search incident by criteria when click [Search] button on Incident list by role section
        /// </summary>
        /// <param name="condition"></param>
        /// <returns></returns>
        public ActionResult CTS310_searchIncidentList(SearchIncidentCondition condition)
        {
            ObjectResultData res = new ObjectResultData();

            try {
                CommonUtil c = new CommonUtil();
                condition.ContractCode = c.ConvertContractCode(condition.ContractCode, CommonUtil.CONVERT_TYPE.TO_LONG);

                IIncidentHandler      hand         = ServiceContainer.GetService <IIncidentHandler>() as IIncidentHandler;
                List <dtIncidentList> incidentList = hand.SearchIncidentList(condition);

                foreach (var item in incidentList)
                {
                    // Set default
                    if (item.DueDateDeadLine.HasValue)
                    {
                        item.DueDateDeadLine = new DateTime(item.DueDateDeadLine.Value.Year,
                                                            item.DueDateDeadLine.Value.Month,
                                                            item.DueDateDeadLine.Value.Day,
                                                            23, 59, 59);

                        if (item.DueDateTime.HasValue)
                        {
                            item.DueDateDeadLine = new DateTime(item.DueDateDeadLine.Value.Year,
                                                                item.DueDateDeadLine.Value.Month,
                                                                item.DueDateDeadLine.Value.Day,
                                                                item.DueDateTime.Value.Hours,
                                                                item.DueDateTime.Value.Minutes,
                                                                item.DueDateTime.Value.Seconds);
                        }
                    }

                    item.IncidentNo = (String.IsNullOrEmpty(item.IncidentNo)) ? CommonUtil.GetLabelFromResource("Contract", "CTS310", "lblNA") : item.IncidentNo;
                }

                CommonUtil.MappingObjectLanguage <dtIncidentList>(incidentList);

                MiscTypeMappingList miscMapList = new MiscTypeMappingList();
                miscMapList.AddMiscType(incidentList.ToArray());
                ICommonHandler comh = ServiceContainer.GetService <ICommonHandler>() as ICommonHandler;
                comh.MiscTypeMappingList(miscMapList);

                CTS310_ScreenParameter param = GetScreenObject <CTS310_ScreenParameter>();
                foreach (var incident in incidentList)
                {
                    if (CommonUtil.IsNullOrEmpty(incident.IncidentNo))
                    {
                        incident.IncidentNo = incident.IncidentID.ToString();
                    }
                    doHasIncidentPermission hasPermission = hand.HasIncidentPermission(incident.IncidentID);
                    incident.canViewConfidential = param.isAdmin || (!incident.ConfidentialFlag.Value) || hasPermission.ViewConfidentialIncidentFlag;
                    setColStyle(incident);
                }

                string xml = CommonUtil.ConvertToXml <dtIncidentList>(incidentList, "Contract\\CTS310", CommonUtil.GRID_EMPTY_TYPE.SEARCH);
                res.ResultData = xml;
            } catch (Exception ex) {
                res.AddErrorMessage(ex);
            }

            return(Json(res));
        }