/**
  * Manage settings action
  * @param Request $request
  * @param string $section_id Section name
  * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  * @throws \FlashSale\Http\Modules\Admin\Models\Exception
  * @since 07-01-2016
  * @author Dinanath Thakur <*****@*****.**>
  */
 public function manageSettings(Request $request, $section_id)
 {
     $time_start = microtime(true);
     $objSettingsObject = SettingsObject::getInstance();
     $objSettingsSection = SettingsSection::getInstance();
     if ($request->isMethod('post')) {
         $inputData = $request->input('update');
         if (isset($inputData) && !empty($inputData)) {
             try {
                 $updateFlag = false;
                 foreach ($inputData as $objectId => $value) {
                     $whereForUpdate = ['rawQuery' => 'object_id =?', 'bindParams' => [$objectId]];
                     if (is_array($value)) {
                         $tempValue = '#M#';
                         foreach ($value as $checkBoxKey => $checkBoxValue) {
                             if ($checkBoxValue == 'on') {
                                 $tempValue .= $checkBoxKey . '=Y&';
                             }
                         }
                         $tempValue = rtrim($tempValue, '&');
                         $updateData['value'] = $tempValue;
                     } else {
                         $updateData['value'] = $value == 'on' ? 'Y' : $value;
                     }
                     $updatedObjectResult = $objSettingsObject->updateObjectWhere($updateData, $whereForUpdate);
                     if ($updatedObjectResult) {
                         $updateFlag = true;
                     }
                     $whereForUpdate = $updateData = '';
                 }
                 return Redirect::back()->with($updateFlag ? ['status' => 'success', 'msg' => 'Your changes have been saved.'] : ['status' => 'info', 'msg' => 'Nothing to update.']);
             } catch (\Exception $e) {
                 return Redirect::back()->with(['status' => 'error', 'msg' => 'Sorry, an error occurred. Please reload the page and try again.']);
             }
         }
     }
     $whereForSetting = ['rawQuery' => 'parent_id =? AND type =? AND status =?', 'bindParams' => [0, 'CORE', 1]];
     $allSection = $objSettingsSection->getAllSectionWhere($whereForSetting);
     $whereForSetting = ['rawQuery' => 'settings_sections.name =? AND settings_descriptions.object_type=? AND settings_descriptions.status=? AND settings_objects.status=?', 'bindParams' => [$section_id, 'O', 1, 1]];
     $allObjectsOfSection = $objSettingsObject->getAllObjectsAndVariantsOfASectionWhere($whereForSetting);
     //        die("Execution time in sec: " . (microtime(true) - $time_start));
     return view('Admin/Views/setting/manageSettings', ['allObjectsOfSection' => $allObjectsOfSection, 'allSection' => $allSection]);
 }
 /**
  * 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;
 }
 /**
  * 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;
 }