/// <summary>
        /// Search and get sub contractor detail
        /// </summary>
        /// <param name="SubcontractorCode"></param>
        /// <returns></returns>
        public ActionResult MAS110_SearchDetail(string SubcontractorCode)
        {
            ObjectResultData res = new ObjectResultData();

            try
            {
                ISubcontractorMasterHandler hand = ServiceContainer.GetService <ISubcontractorMasterHandler>() as ISubcontractorMasterHandler;
                List <doSubcontractor>      list = hand.GetSubcontractorDetail(SubcontractorCode);

                doSubcontractor data = null;
                if (list.Count > 0)
                {
                    data = list[0];

                    MAS110_ScreenParameter MAS110Param = GetScreenObject <MAS110_ScreenParameter>();
                    MAS110Param.currentSubcontractor = data;
                }

                res.ResultData = data;
                return(Json(res));
            }
            catch (Exception ex)
            {
                res.AddErrorMessage(ex);
                return(Json(res));
            }
        }
        /// <summary>
        /// Update sub contractor in case duplicate
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public ActionResult MAS110_UpdateCaseDuplicate(MAS110_SubcontractorData data)
        {
            ObjectResultData res = new ObjectResultData();

            try
            {
                ICommonHandler commonHandler = ServiceContainer.GetService <ICommonHandler>() as ICommonHandler;
                if (commonHandler.IsSystemSuspending())
                {
                    res.MessageType = MessageModel.MESSAGE_TYPE.INFORMATION;
                    res.AddErrorMessage(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0049);
                    return(Json(res));
                }

                if (!(CheckUserPermission(ScreenID.C_SCREEN_ID_MAINTAIN_SUBCONTRACTOR_INFO, FunctionID.C_FUNC_ID_VIEW) == true ||
                      CheckUserPermission(ScreenID.C_SCREEN_ID_MAINTAIN_SUBCONTRACTOR_INFO, FunctionID.C_FUNC_ID_ADD) == true ||
                      CheckUserPermission(ScreenID.C_SCREEN_ID_MAINTAIN_SUBCONTRACTOR_INFO, FunctionID.C_FUNC_ID_EDIT) == true ||
                      CheckUserPermission(ScreenID.C_SCREEN_ID_MAINTAIN_SUBCONTRACTOR_INFO, FunctionID.C_FUNC_ID_DEL) == true
                      ))
                {
                    res.MessageType = MessageModel.MESSAGE_TYPE.INFORMATION;
                    res.AddErrorMessage(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0053);
                    return(Json(res));
                }
                ISubcontractorMasterHandler hand = ServiceContainer.GetService <ISubcontractorMasterHandler>() as ISubcontractorMasterHandler;
                // Check required field.
                if (ModelState.IsValid == false)
                {
                    ValidatorUtil.BuildErrorMessage(res, this);
                    if (res.IsError)
                    {
                        return(Json(res));
                    }
                }
                data.SubContractorCode = data.COCompanyCode + data.InstallationTeam;
                data.DeleteFlag        = (data.DeleteFlag == null ? false : true);
                List <doSubcontractor> curSubcontractor = hand.GetSubcontractor(data.SubContractorCode, null, null, null);
                if (curSubcontractor.Count > 0)
                {
                    data.UpdateBy   = curSubcontractor[0].UpdateBy;
                    data.UpdateDate = curSubcontractor[0].UpdateDate;
                }


                if (CommonUtil.IsNullOrEmpty(data.SubInstallationFlag))
                {
                    data.SubInstallationFlag = false;
                }
                if (CommonUtil.IsNullOrEmpty(data.SubMaintenanceFlag))
                {
                    data.SubMaintenanceFlag = false;
                }
                List <doSubcontractor> list = hand.UpdateSubcontractor(data);

                doSubcontractor result = null;
                if (list.Count > 0)
                {
                    result = list[0];
                }

                res.ResultData = result;
                return(Json(res));
            }
            catch (Exception ex)
            {
                res.AddErrorMessage(ex);
                return(Json(res));
            }
        }
        /// <summary>
        /// Insert sub contractor
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public ActionResult MAS110_Insert(MAS110_SubcontractorData data)
        {
            ObjectResultData res = new ObjectResultData();

            try
            {
                ICommonHandler commonHandler = ServiceContainer.GetService <ICommonHandler>() as ICommonHandler;
                if (commonHandler.IsSystemSuspending())
                {
                    res.MessageType = MessageModel.MESSAGE_TYPE.INFORMATION;
                    res.AddErrorMessage(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0049);
                    return(Json(res));
                }

                if (!(CheckUserPermission(ScreenID.C_SCREEN_ID_MAINTAIN_SUBCONTRACTOR_INFO, FunctionID.C_FUNC_ID_VIEW) == true ||
                      CheckUserPermission(ScreenID.C_SCREEN_ID_MAINTAIN_SUBCONTRACTOR_INFO, FunctionID.C_FUNC_ID_ADD) == true ||
                      CheckUserPermission(ScreenID.C_SCREEN_ID_MAINTAIN_SUBCONTRACTOR_INFO, FunctionID.C_FUNC_ID_EDIT) == true ||
                      CheckUserPermission(ScreenID.C_SCREEN_ID_MAINTAIN_SUBCONTRACTOR_INFO, FunctionID.C_FUNC_ID_DEL) == true
                      ))
                {
                    res.MessageType = MessageModel.MESSAGE_TYPE.INFORMATION;
                    res.AddErrorMessage(MessageUtil.MODULE_COMMON, MessageUtil.MessageList.MSG0053);
                    return(Json(res));
                }
                ISubcontractorMasterHandler hand = ServiceContainer.GetService <ISubcontractorMasterHandler>() as ISubcontractorMasterHandler;
                // Check required field.
                if (ModelState.IsValid == false)
                {
                    ValidatorUtil.BuildErrorMessage(res, this);
                    if (res.IsError)
                    {
                        res.MessageType = MessageModel.MESSAGE_TYPE.WARNING;
                    }
                    return(Json(res));
                }


                data.DeleteFlag = false;
                data.CreateBy   = data.UpdateBy = CommonUtil.dsTransData.dtUserData.EmpNo;
                data.CreateDate = data.UpdateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime;

                //================= Change DDS SubContractorCode generate by companycode + teamcode =========
                List <doSubcontractor> list = new List <doSubcontractor>();
                data.SubContractorCode = data.COCompanyCode + data.InstallationTeam;
                //======= check duplicate
                List <doSubcontractor> doSubcon = hand.GetSubcontractor(data.SubContractorCode, null, null, null);
                if (doSubcon != null && doSubcon.Count > 0)
                {
                    if (doSubcon[0].DeleteFlag == false)
                    {
                        res.AddErrorMessage(MessageUtil.MODULE_MASTER, MessageUtil.MessageList.MSG1056);
                    }
                    else
                    {
                        res.ResultData = "ConfirmUpdate";
                        return(Json(res));
                    }
                }
                else
                {
                    if (CommonUtil.IsNullOrEmpty(data.SubInstallationFlag))
                    {
                        data.SubInstallationFlag = false;
                    }
                    if (CommonUtil.IsNullOrEmpty(data.SubMaintenanceFlag))
                    {
                        data.SubMaintenanceFlag = false;
                    }
                    list = hand.InsertSubcontractor(data);
                }
                //===========================================================================================



                doSubcontractor result = null;
                if (list.Count > 0)
                {
                    result = list[0];
                }

                res.ResultData = result;
                return(Json(res));
            }
            catch (Exception ex)
            {
                res.AddErrorMessage(ex);
                return(Json(res));
            }
        }