public ActionResult AutoCompleteSearchProduct(string keyword, int?productGroupId, int?campaignServiceId, bool?isAllStatus)
        {
            Logger.Info(_logMsg.Clear().SetPrefixMsg("Auto Complete :: Search Product").Add("Keyword", keyword)
                        .Add("ProductGroupId", productGroupId).Add("CampaignServiceId", campaignServiceId).Add("IsAllStatus", isAllStatus).ToInputLogString());

            try
            {
                _srFacade = new ServiceRequestFacade();
                List <ProductEntity> result = _srFacade.AutoCompleteSearchProduct(keyword, productGroupId, AutoCompleteMaxResult, campaignServiceId, isAllStatus);
                return(Json(result.Select(r => new
                {
                    r.ProductId,
                    r.ProductName,
                    r.ProductGroupId,
                    r.ProductGroupName
                })));
            }
            catch (Exception ex)
            {
                Logger.Error("Exception occur:\n", ex);
                Logger.Info(_logMsg.Clear().SetPrefixMsg("Auto Complete :: Search Product").Add("Error Message", ex.Message).ToFailLogString());
                return(Error(new HandleErrorInfo(ex, this.ControllerContext.RouteData.Values["controller"].ToString(),
                                                 this.ControllerContext.RouteData.Values["action"].ToString())));
            }
        }
 public ActionResult AutoCompleteSearchProductWithExceptions(AutoCompleteSearchProductInputModel model)
 {
     Logger.Info(_logMsg.Clear().SetPrefixMsg("Auto Complete :: Search Product")
                 .Add("Keyword", model.Keyword)
                 .Add("ExceptionIds", string.Join(", ", model.ExceptProductIds)));
     try
     {
         _srFacade = new ServiceRequestFacade();
         List <ProductEntity> result = _srFacade.AutoCompleteSearchProduct(model.Keyword, model.ExceptProductIds, AutoCompleteMaxResult);
         return(Json(result.Select(r => new
         {
             r.ProductId,
             r.ProductName,
         })));
     }
     catch (Exception ex)
     {
         Logger.Error("Exception occur:\n", ex);
         Logger.Info(_logMsg.Clear().SetPrefixMsg("Auto Complete :: Search Product").Add("Error Message", ex.Message).ToFailLogString());
         return(Error(new HandleErrorInfo(ex, this.ControllerContext.RouteData.Values["controller"].ToString(),
                                          this.ControllerContext.RouteData.Values["action"].ToString())));
     }
 }