openstackid-resources/app/Http/Controllers/apis/protected/marketplace/OAuth2CompanyServiceApiCont...

143 lines
3.9 KiB
PHP

<?php namespace App\Http\Controllers;
/**
* Copyright 2015 OpenStack Foundation
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**/
use models\oauth2\IResourceServerContext;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Log;
use models\marketplace\ICompanyServiceRepository;
use Illuminate\Support\Facades\Input;
/**
* Class OAuth2CompanyServiceApiController
*/
abstract class OAuth2CompanyServiceApiController extends OAuth2ProtectedController
{
/**
* @var ICompanyServiceRepository
*/
protected $repository;
public function __construct(IResourceServerContext $resource_server_context)
{
parent::__construct($resource_server_context);
Validator::extend('status', function ($attribute, $value, $parameters) {
return $value == ICompanyServiceRepository::Status_All ||
$value == ICompanyServiceRepository::Status_non_active ||
$value == ICompanyServiceRepository::Status_active;
});
Validator::extend('order', function ($attribute, $value, $parameters) {
return $value == ICompanyServiceRepository::Order_date ||
$value == ICompanyServiceRepository::Order_name ;
});
Validator::extend('order_dir', function ($attribute, $value, $parameters) {
return $value == 'desc' ||
$value == 'asc';
});
}
/**
* query string params:
* page: You can specify further pages
* per_page: custom page size up to 100 ( min 10)
* status: cloud status ( active , not active, all)
* order_by: order by field
* order_dir: order direction
* @return mixed
*/
public function getCompanyServices()
{
try
{
//default params
$page = 1;
$per_page = 10;
$status = ICompanyServiceRepository::Status_All;
$order_by = ICompanyServiceRepository::Order_date;
$order_dir = 'asc';
//validation of optional parameters
$values = Input::all();
$messages = array(
'status' => 'The :attribute field is does not has a valid value (all, active, non_active).',
'order' => 'The :attribute field is does not has a valid value (date, name).',
'order_dir' => 'The :attribute field is does not has a valid value (desc, asc).',
);
$rules = array(
'page' => 'integer|min:1',
'per_page' => 'required_with:page|integer|min:10|max:100',
'status' => 'status',
'order_by' => 'order',
'order_dir' => 'required_with:order_by|order_dir',
);
// Creates a Validator instance and validates the data.
$validation = Validator::make($values, $rules, $messages);
if ($validation->fails())
{
$messages = $validation->messages()->toArray();
return $this->error412($messages);
}
if (Input::has('page'))
{
$page = intval(Input::get('page'));
$per_page = intval(Input::get('per_page'));
}
if (Input::has('status'))
{
$status = Input::get('status');
}
if (Input::has('order_by'))
{
$order_by = Input::get('order_by');
$order_dir = Input::get('order_dir');
}
$data = $this->repository->getAll($page, $per_page, $status, $order_by, $order_dir);
return $this->ok($data);
}
catch (Exception $ex)
{
Log::error($ex);
return $this->error500($ex);
}
}
/**
* @param $id
* @return mixed
*/
public function getCompanyService($id)
{
try
{
$data = $this->repository->getById($id);
return ($data)? $this->ok($data) : $this->error404();
}
catch (Exception $ex)
{
Log::error($ex);
return $this->error500($ex);
}
}
}