1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 101 102 103 104 
<?php
/* --------------------------------------------------------------
   UserConfigurationController.inc.php 2015-08-25 gm
   Gambio GmbH
   http://www.gambio.de
   Copyright (c) 2015 Gambio GmbH
   Released under the GNU General Public License (Version 2)
   [http://www.gnu.org/licenses/gpl-2.0.html]
   --------------------------------------------------------------
*/


/**
 * Class UserConfigurationController
 * 
 * @extends    AdminHttpViewController
 * @category   System
 * @package    AdminHttpViewControllers
 */
class UserConfigurationController extends AdminHttpViewController
{
    /**
     * @var array
     */
    protected $postDataArray;

    /**
     * @var array
     */
    protected $queryParametersArray;

    /**
     * @var UserConfigurationService
     */
    protected $userConfigurationService;


    /**
     * Initialize the controller.
     *
     * Perform the common operations before the parent class proceeds with the controller
     * method execution. In this case every method needs the EmailService so it is loaded
     * once before every method.
     *
     * @param HttpContextInterface $httpContext
     */
    public function proceed(HttpContextInterface $httpContext)
    {
        $this->userConfigurationService = StaticGXCoreLoader::getService('UserConfiguration');
        parent::proceed($httpContext); // proceed http context from parent class
    }


    /**
     * @return HttpControllerResponse|RedirectHttpControllerResponse
     */
    public function actionDefault()
    {
        return MainFactory::create('JsonHttpControllerResponse', array());
    }


    /**
     * Sets a user configuration (to DB table user_configuration)
     *
     * @return \JsonHttpControllerResponse
     */
    public function actionSet()
    {
        if(!isset($this->postDataArray['userId']) || !isset($this->postDataArray['configurationKey'])
           || !isset($this->postDataArray['configurationValue'])
        )
        {
            return MainFactory::create('JsonHttpControllerResponse', array('success' => false));
        }

        $this->userConfigurationService->setUserConfiguration(new IdType(
                                                                                  (int)$this->postDataArray['userId']),
                                                              $this->postDataArray['configurationKey'],
                                                              $this->postDataArray['configurationValue']);

        return MainFactory::create('JsonHttpControllerResponse', array('success' => true));
    }


    /**
     * Gets a user configuration (from DB table user_configuration)
     *
     * @return \JsonHttpControllerResponse
     */
    public function actionGet()
    {
        if(!isset($this->queryParametersArray['userId']) || !isset($this->queryParametersArray['configurationKey']))
        {
            return MainFactory::create('JsonHttpControllerResponse', array('success' => false));
        }

        $configurationValue = $this->userConfigurationService->getUserConfiguration(new IdType(
                                                                                                        (int)$this->queryParametersArray['userId']),
                                                                                    $this->queryParametersArray['configurationKey']);

        return MainFactory::create('JsonHttpControllerResponse', array('success' => true, 'configurationValue' => $configurationValue));
    }
}