/**
  * Get setting value and cache the value for a day
  * @param string $settingObject
  * @return mixed
  * @throws Exception
  * @since 19-01-2016
  * @author Dinanath Thakur <*****@*****.**>
  */
 function getSetting($settingObject)
 {
     switch ($settingObject) {
         case 'price_symbol':
             $objCurrencyModel = \FlashSale\Http\Modules\Admin\Models\Currency::getInstance();
             $whereForPrice = ['rawQuery' => 'is_primary=? AND status=?', 'bindParams' => ['Y', 1]];
             $selectedColumns = ['symbol'];
             $cacheKey = "settings_objects::" . implode('-', array_flatten($whereForPrice));
             if (cacheGet($cacheKey)) {
                 $priceSymbol = cacheGet($cacheKey);
             } else {
                 $priceSymbol = $objCurrencyModel->getCurrencyWhere($whereForPrice, $selectedColumns);
                 cachePut($cacheKey, $priceSymbol, 86400);
             }
             $settingValue = $priceSymbol->symbol;
             break;
         default:
             $objSettingObject = \FlashSale\Http\Modules\Admin\Models\SettingsObject::getInstance();
             $whereForSettingObject = ['rawQuery' => 'name=?', 'bindParams' => [$settingObject]];
             $selectedColumns = ['value'];
             $cacheKey = "settings_objects::" . implode('-', array_flatten($whereForSettingObject));
             if (cacheGet($cacheKey)) {
                 $settingValue = cacheGet($cacheKey);
             } else {
                 $settingValue = $objSettingObject->getSettingObjectWhere($whereForSettingObject, $selectedColumns);
                 cachePut($cacheKey, $settingValue, 86400);
             }
             $settingValue = $settingValue->value;
             break;
     }
     return $settingValue;
 }
 /**
  * Handle ajax calls
  * @param Request $request
  * @throws \Exception
  * @since 20-01-2016
  * @author Dinanath Thakur <*****@*****.**>
  */
 public function currencyAjaxHandler(Request $request)
 {
     $objCurrencyModel = Currency::getInstance();
     $inputData = $request->input();
     $method = $inputData['method'];
     try {
         switch ($method) {
             case 'changePosition':
                 $positionData = $inputData['position'];
                 $case = implode(' ', array_map(function ($v, $k) {
                     return ' WHEN ' . $v . ' THEN ' . $k;
                 }, $positionData, array_keys($positionData)));
                 echo json_encode($objCurrencyModel->updateCurrencyWhere(['position' => DB::raw("(CASE currency_id {$case} END)")], ['rawQuery' => 'currency_id IN(' . implode(',', $positionData) . ')']) > 0 ? ['status' => 'success', 'msg' => 'Positions of currencies were updated.'] : ['status' => 'error', 'msg' => 'Something went wrong, please reload the page and try again.']);
                 break;
             case 'deleteCurrency':
                 echo json_encode($objCurrencyModel->deleteCurrencyWhere(['rawQuery' => 'currency_id =? AND is_primary !=?', 'bindParams' => [$inputData['currencyId'], 'Y']]) == 1 ? ['status' => 'success', 'msg' => 'The currency has been deleted successfully.'] : ['status' => 'error', 'msg' => 'Something went wrong, please reload the page and try again.']);
                 break;
             case 'changeCurrencyStatus':
                 echo json_encode($objCurrencyModel->updateCurrencyWhere(['status' => $inputData['status']], ['rawQuery' => 'currency_id =? ', 'bindParams' => [$inputData['currencyId']]]) == 1 ? ['status' => 'success', 'msg' => 'Status has been changed.'] : ['status' => 'error', 'msg' => 'Something went wrong, please reload the page and try again.']);
                 break;
             default:
                 break;
         }
     } catch (\Exception $e) {
         //            echo json_encode(['status' => 'error', 'msg' => 'An exception occurred, please reload the page and try again.']);
         echo json_encode(['status' => 'error', 'msg' => $e->getMessage()]);
     }
 }
 /**
  * Get setting value
  * @param string $settingObject
  * @return mixed
  * @throws Exception
  * @since 19-01-2016
  * @author Dinanath Thakur <*****@*****.**>
  */
 function getSetting($settingObject)
 {
     switch ($settingObject) {
         case 'price_symbol':
             $objCurrencyModel = \FlashSale\Http\Modules\Admin\Models\Currency::getInstance();
             $whereForPrice = ['rawQuery' => 'is_primary=? AND status=?', 'bindParams' => ['Y', 1]];
             $selectedColumns = ['symbol'];
             $priceSymbol = $objCurrencyModel->getCurrencyWhere($whereForPrice, $selectedColumns);
             $settingValue = $priceSymbol->symbol;
             break;
         default:
             $objSettingObject = \FlashSale\Http\Modules\Admin\Models\SettingsObject::getInstance();
             $whereForSettingObject = ['rawQuery' => 'name=?', 'bindParams' => [$settingObject]];
             $selectedColumns = ['value'];
             $settingValue = $objSettingObject->getSettingObjectWhere($whereForSettingObject, $selectedColumns);
             $settingValue = $settingValue->value;
             break;
     }
     return $settingValue;
 }