public ActionResult MAS040()
        {
            try
            {
                ViewBag.IsHideSiteCode     = false;
                ViewBag.CallValidateMethod = false;

                MAS040_ScreenParameter siteData = GetScreenObject <MAS040_ScreenParameter>();
                if (siteData != null)
                {
                    if (siteData.CallerScreenID == SECOM_AJIS.Common.Util.ConstantValue.ScreenID.C_SCREEN_ID_QTN_TARGET)
                    {
                        ViewBag.IsHideSiteCode = true;
                    }

                    doSite doSite = siteData.doSite;
                    if (doSite != null)
                    {
                        ViewBag.SiteCode           = doSite.SiteCodeShort;
                        ViewBag.SiteNameEN         = doSite.SiteNameEN;
                        ViewBag.SiteNameLC         = doSite.SiteNameLC;
                        ViewBag.SECOMContactPerson = doSite.SECOMContactPerson;
                        ViewBag.PersonInCharge     = doSite.PersonInCharge;
                        ViewBag.PhoneNo            = doSite.PhoneNo;
                        ViewBag.UsageCode          = doSite.BuildingUsageCode;
                        ViewBag.AddressEN          = doSite.AddressEN;
                        ViewBag.AddressLC          = doSite.AddressLC;
                        ViewBag.AlleyEN            = doSite.AlleyEN;
                        ViewBag.AlleyLC            = doSite.AlleyLC;
                        ViewBag.RoadEN             = doSite.RoadEN;
                        ViewBag.RoadLC             = doSite.RoadLC;
                        ViewBag.SubDistrictEN      = doSite.SubDistrictEN;
                        ViewBag.SubDistrictLC      = doSite.SubDistrictLC;
                        ViewBag.ProvinceEN         = doSite.ProvinceCode;
                        ViewBag.ProvinceLC         = doSite.ProvinceCode;
                        ViewBag.DistrictEN         = doSite.DistrictCode;
                        ViewBag.DistrictLC         = doSite.DistrictCode;
                        ViewBag.ZipCode            = doSite.ZipCode;

                        if (doSite.ValidateSiteData == false)
                        {
                            ViewBag.CallValidateMethod = true;
                        }
                    }
                }
            }
            catch (Exception)
            {
            }

            return(View());
        }
        ///<summary>
        ///Purpose:
        ///     Get site data
        ///
        ///Parameters:
        ///     siteCode: S0000000014-0001
        ///
        ///Expected:
        ///     Refer to : "SECOM-AJIS-STC.MAP022-GetSite" sheet 'Expectation'
        ///</summary>
        public string Case3()
        {
            ISiteMasterHandler target   = ServiceContainer.GetService <ISiteMasterHandler>() as ISiteMasterHandler;
            string             siteCode = "S0000000014-0001";
            string             custCode = null;

            List <doSite> expected = new List <doSite>();
            List <doSite> actual   = null;
            //00007	001	10700	NULL	440065	NULL	440065
            doSite site = new doSite();

            site.SiteCode           = "S0000000014-0001";
            site.CustCode           = "C0000000014";
            site.SiteNo             = "0001";
            site.SiteNameEN         = "B-QUIK CO.,LTD.  (CARREFOUR RAMA 2 ROAD BRANCH)";
            site.SiteNameLC         = "บริษัท บี-ควิค จำกัด (สาขาคาร์ฟูร์ พระราม2)";
            site.SECOMContactPerson = null;
            site.PersonInCharge     = null;
            site.PhoneNo            = null;
            site.BuildingUsageCode  = "023";
            site.AddressEN          = "189/1 MOO 6";
            site.AlleyEN            = null;
            site.RoadEN             = "RAMA 2";
            site.SubDistrictEN      = "SAMAE-DAM";
            site.AddressFullEN      = "189/1 MOO 6, RAMA 2, SAMAE-DAM, BANGKHUNTIEN, BANGKOK 10700";
            site.AddressLC          = "189/1 หมู่ 6";
            site.AlleyLC            = null;
            site.RoadLC             = "พระราม 2";
            site.SubDistrictLC      = "แสมดำ";
            site.AddressFullLC      = "189/1 หมู่ 6 ถ.พระราม 2 แขวงแสมดำ เขตบางขุนเทียน จ.กรุงเทพมหานคร 10700";
            site.DistrictCode       = "00007";
            site.ProvinceCode       = "001";
            site.ZipCode            = "10700";
            site.CreateDate         = null;
            site.CreateBy           = "440065";
            site.UpdateDate         = null;
            site.UpdateBy           = "440065";
            expected.Add(site);

            try {
                actual = target.GetSite(siteCode, custCode);
            } catch (ApplicationErrorException ex) {
                actual = null;
            } catch (Exception ex) {
                actual = null;
            }

            return(string.Format(RESULT_FORMAT, 3, expected[0].SiteCode, actual[0].SiteCode, CompareObjectList <doSite>(expected, actual, SITE_FIELD) ? "Pass" : "Fail"));
        }
        private bool MAS040_IsSiteChanged(doSite siteDo)
        {
            try
            {
                doSite oSiteDo = null;
                MAS040_ScreenParameter siteData = GetScreenObject <MAS040_ScreenParameter>();
                if (siteData != null)
                {
                    if (siteData.doSite != null)
                    {
                        oSiteDo = siteData.doSite;
                    }
                }

                if (oSiteDo != null)
                {
                    if (CommonUtil.IsNullOrEmpty(oSiteDo.SiteCode))
                    {
                        return(true);
                    }
                }
                if (oSiteDo != null && siteDo != null)
                {
                    bool          isSame     = true;
                    List <string> chkPropLst = new List <string>()
                    {
                        "SiteNameEN",
                        "SiteNameLC",
                        "SECOMContactPerson",
                        "PersonInCharge",
                        "PhoneNo",
                        "UsageCode",
                        "AddressEN",
                        "AlleyEN",
                        "RoadEN",
                        "SubDistrictEN",
                        "ProvinceEN",
                        "DistrictEN",
                        "AddressLC",
                        "AlleyLC",
                        "RoadLC",
                        "SubDistrictLC",
                        "ProvinceLC",
                        "DistrictLC",
                        "Zipcode"
                    };
                    PropertyInfo[] props = typeof(doSite).GetProperties();
                    foreach (PropertyInfo prop in props)
                    {
                        if (prop.CanWrite == false)
                        {
                            continue;
                        }
                        if (chkPropLst.IndexOf(prop.Name) < 0)
                        {
                            continue;
                        }

                        object obj1 = prop.GetValue(oSiteDo, null);
                        object obj2 = prop.GetValue(siteDo, null);

                        if (CommonUtil.IsNullOrEmpty(obj1) == false || CommonUtil.IsNullOrEmpty(obj2) == false)
                        {
                            isSame = false;
                            if (CommonUtil.IsNullOrEmpty(obj1) == false && CommonUtil.IsNullOrEmpty(obj2) == false)
                            {
                                if (obj1.ToString() == obj2.ToString())
                                {
                                    isSame = true;
                                }
                            }

                            if (isSame == false)
                            {
                                break;
                            }
                        }
                    }

                    if (isSame == false)
                    {
                        return(true);
                    }
                }

                return(false);
            }
            catch (Exception)
            {
                throw;
            }
        }
        /// <summary>
        /// Validate user inputed data.<br />
        /// - Set usage.<br />
        /// - Set province.<br />
        /// - Set district.<br />
        /// - Check require field.
        /// </summary>
        /// <returns></returns>
        public ActionResult MAS040_ValidateData()
        {
            ObjectResultData res = new ObjectResultData();

            res.MessageType = MessageModel.MESSAGE_TYPE.WARNING;

            try
            {
                doSite doSite = null;

                MAS040_ScreenParameter siteData = GetScreenObject <MAS040_ScreenParameter>();
                if (siteData != null)
                {
                    if (siteData.doSite != null)
                    {
                        doSite = siteData.doSite;
                    }
                }

                if (doSite != null)
                {
                    IMasterHandler mhandler = ServiceContainer.GetService <IMasterHandler>() as IMasterHandler;

                    #region Usage

                    if (CommonUtil.IsNullOrEmpty(doSite.BuildingUsageCode) == false)
                    {
                        List <tbm_BuildingUsage> ulst = mhandler.GetTbm_BiuldingUsage();
                        if (ulst.Count > 0)
                        {
                            foreach (tbm_BuildingUsage u in ulst)
                            {
                                if (doSite.BuildingUsageCode == u.BuildingUsageCode)
                                {
                                    doSite.BuildingUsageName = u.BuildingUsageName;
                                    break;
                                }
                            }
                        }
                    }

                    #endregion
                    #region Province Data

                    if (CommonUtil.IsNullOrEmpty(doSite.ProvinceCode) == false)
                    {
                        List <tbm_Province> plst = mhandler.GetTbm_Province();
                        if (plst.Count > 0)
                        {
                            foreach (tbm_Province pv in plst)
                            {
                                if (doSite.ProvinceCode == pv.ProvinceCode)
                                {
                                    doSite.ProvinceNameEN = pv.ProvinceNameEN;
                                    doSite.ProvinceNameLC = pv.ProvinceNameLC;
                                    break;
                                }
                            }
                        }
                    }

                    #endregion
                    #region District

                    if (CommonUtil.IsNullOrEmpty(doSite.DistrictCode) == false)
                    {
                        List <tbm_District> dlst = mhandler.GetTbm_District(doSite.ProvinceCode);
                        if (dlst.Count > 0)
                        {
                            foreach (tbm_District d in dlst)
                            {
                                if (doSite.ProvinceCode == d.ProvinceCode &&
                                    doSite.DistrictCode == d.DistrictCode)
                                {
                                    doSite.DistrictNameEN = d.DistrictNameEN;
                                    doSite.DistrictNameLC = d.DistrictNameLC;
                                    break;
                                }
                            }
                        }
                    }

                    #endregion
                }

                MAS040_ValidateCombo validate = CommonUtil.CloneObject <doSite, MAS040_ValidateCombo>(doSite);
                ValidatorUtil.BuildErrorMessage(res, new object[] { validate });

                if (doSite != null)
                {
                    if (doSite.ValidateSiteData == false)
                    {
                        MAS040_CheckRequiredField cSiteDo = CommonUtil.CloneObject <doSite, MAS040_CheckRequiredField>(doSite);

                        /*
                         * if (CommonUtil.IsNullOrEmpty(cSiteDo.BuildingUsageName))
                         *  cSiteDo.BuildingUsageCode = null;
                         */
                        if ((CommonUtil.IsNullOrEmpty(cSiteDo.ProvinceCode) == false) &&
                            (CommonUtil.IsNullOrEmpty(cSiteDo.ProvinceNameEN)) &&
                            (CommonUtil.IsNullOrEmpty(cSiteDo.ProvinceNameLC)))
                        {
                            cSiteDo.ProvinceNameEN = cSiteDo.ProvinceCode;
                            cSiteDo.ProvinceNameLC = cSiteDo.ProvinceCode;
                        }

                        if ((CommonUtil.IsNullOrEmpty(cSiteDo.DistrictCode) == false) &&
                            (CommonUtil.IsNullOrEmpty(cSiteDo.DistrictNameEN)) &&
                            (CommonUtil.IsNullOrEmpty(cSiteDo.DistrictNameLC)))
                        {
                            cSiteDo.DistrictNameEN = cSiteDo.DistrictCode;
                            cSiteDo.DistrictNameLC = cSiteDo.DistrictCode;
                        }

                        ValidatorUtil.BuildErrorMessage(res, new object[] { cSiteDo });
                    }
                }
            }
            catch (Exception ex)
            {
                res.AddErrorMessage(ex);
            }

            return(Json(res));
        }