Skip to content

Commit

Permalink
Merge develop and PR review fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
jaureguivictoria committed May 24, 2018
2 parents 5fc09af + 608f42b commit cc4cddf
Show file tree
Hide file tree
Showing 21 changed files with 640 additions and 100 deletions.
119 changes: 119 additions & 0 deletions app/Http/Controllers/OrganizationBudgetsController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
<?php

namespace App\Http\Controllers;

use App\Http\Requests\OrganizationBudgets\CreateOrganizationBudgetRequest;
use App\Http\Requests\OrganizationBudgets\DeleteOrganizationBudgetRequest;
use App\Organizations\Budgets\Commands\CreateOrganizationBudget;
use App\Organizations\Budgets\Commands\DeleteOrganizationBudget;
use App\Organizations\Budgets\Commands\UpdateOrganizationBudget;
use App\Organizations\Budgets\Repositories\ReadRepository;
use App\Organizations\Budgets\Transformers\OrganizationBudgetTransformer;
use App\Organizations\Repositories\ReadRepository as OrganizationReadRepository;

class OrganizationBudgetsController extends ApiController
{
/**
* @var ReadRepository
*/
protected $readRepository;

/**
* @var OrganizationReadRepository
*/
protected $organizationReadRepository;

/**
* OrganizationBudgetsController constructor.
*
* @param OrganizationBudgetTransformer $organizationBudgetTransformer
* @param ReadRepository $readRepository
* @param OrganizationReadRepository $organizationReadRepository
*/
public function __construct(
OrganizationBudgetTransformer $organizationBudgetTransformer,
ReadRepository $readRepository,
OrganizationReadRepository $organizationReadRepository)
{
$this->setTransformer($organizationBudgetTransformer);
$this->readRepository = $readRepository;
$this->organizationReadRepository = $organizationReadRepository;
}

/**
* @param string $organizationId
*
* @return \Psr\Http\Message\ResponseInterface
*/
public function all(string $organizationId)
{
$budgets = $this->readRepository->allForOrganization($organizationId);

return $this->responsePaginator($budgets);
}

/**
* @param string $organizationId
* @param string $organizationBudgetId
* @param CreateOrganizationBudgetRequest $request
*
* @return \Psr\Http\Message\ResponseInterface
*/
public function update(string $organizationId, string $organizationBudgetId, CreateOrganizationBudgetRequest $request)
{
$organizationBudget = $this->readRepository->findForOrganization($organizationId, $organizationBudgetId);

$budget = $this->dispatch(new UpdateOrganizationBudget(
$organizationBudget,
$request->get('name'),
$request->get('maxAmount'),
$request->get('reference'),
$request->get('approverEmail'),
$request->get('autoApproveAmountLimit'),
$request->get('autoApproveMonthlyLimit'),
$request->get('autoApproveAfter')
));

return $this->responseItem($budget);
}

/**
* @param string $organizationId
* @param CreateOrganizationBudgetRequest $request
*
* @return \Psr\Http\Message\ResponseInterface
*/
public function create(string $organizationId, CreateOrganizationBudgetRequest $request)
{
$organization = $this->organizationReadRepository->find($organizationId);

$budget = $this->dispatch(new CreateOrganizationBudget(
$organization,
$request->get('name'),
$request->get('maxAmount'),
$request->get('reference'),
$request->get('approverEmail'),
$request->get('autoApproveAmountLimit'),
$request->get('autoApproveMonthlyLimit'),
$request->get('autoApproveAfter')
));

return $this->responseCreated($budget);
}

/**
* @param string $organizationId
* @param string $organizationBudgetId
* @param DeleteOrganizationBudgetRequest $request
*
* @return \Zend\Diactoros\Response\JsonResponse
*/
public function delete(string $organizationId, string $organizationBudgetId, DeleteOrganizationBudgetRequest $request)
{
$organizationBudget = $this->readRepository->findForOrganization($organizationId, $organizationBudgetId);

$this->dispatch(new DeleteOrganizationBudget($organizationBudget));

return $this->responseNoContent();
}
}
28 changes: 9 additions & 19 deletions app/Http/Controllers/OrganizationRolesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
namespace App\Http\Controllers;

use App\Http\Requests\Organizations\OrganizationRoleRequest;
use App\Organizations\Repositories\ReadRepository;
use App\Models\Organization;
use App\Organizations\Roles\Commands\CreateOrganizationRole;
use App\Organizations\Roles\Commands\DeleteOrganizationRole;
use App\Organizations\Roles\Commands\UpdateOrganizationRole;
Expand All @@ -17,35 +17,26 @@ class OrganizationRolesController extends ApiController
*/
private $rolesReadRepository;

/**
* @var ReadRepository
*/
private $readRepository;

/**
* @param OrganizationRoleTransformer $roleTransformer
* @param ReadRepository $readRepository
* @param RolesReadRepository $rolesReadRepository
*/
public function __construct(
OrganizationRoleTransformer $roleTransformer,
ReadRepository $readRepository,
RolesReadRepository $rolesReadRepository
) {
$this->setTransformer($roleTransformer);
$this->readRepository = $readRepository;
$this->rolesReadRepository = $rolesReadRepository;
}

/**
* @param string $organizationId
* @param Organization $organization
*
* @return \Psr\Http\Message\ResponseInterface
*/
public function all($organizationId)
public function all($organizationId, Organization $organization)
{
$organization = $this->readRepository->find($organizationId);

$roles = $this->rolesReadRepository->allForOrganization($organization->id);

return $this->responsePaginator($roles);
Expand All @@ -54,13 +45,12 @@ public function all($organizationId)
/**
* @param OrganizationRoleRequest $request
* @param string $organizationId
* @param Organization $organization
*
* @return \Psr\Http\Message\ResponseInterface
*/
public function create(OrganizationRoleRequest $request, $organizationId)
public function create(OrganizationRoleRequest $request, $organizationId, Organization $organization)
{
$organization = $this->readRepository->find($organizationId);

$role = $this->dispatch(new CreateOrganizationRole(
$organization,
$request->get('name'),
Expand All @@ -74,12 +64,12 @@ public function create(OrganizationRoleRequest $request, $organizationId)
* @param OrganizationRoleRequest $request
* @param string $organizationId
* @param string $roleId
* @param Organization $organization
*
* @return \Psr\Http\Message\ResponseInterface
*/
public function update(OrganizationRoleRequest $request, $organizationId, $roleId)
public function update(OrganizationRoleRequest $request, $organizationId, $roleId, Organization $organization)
{
$organization = $this->readRepository->find($organizationId);
$role = $this->rolesReadRepository->findForOrganization($roleId, $organizationId);

$role = $this->dispatch(new UpdateOrganizationRole(
Expand All @@ -95,12 +85,12 @@ public function update(OrganizationRoleRequest $request, $organizationId, $roleI
/**
* @param string $organizationId
* @param string $roleId
* @param Organization $organization
*
* @return \Psr\Http\Message\ResponseInterface
*/
public function delete($organizationId, $roleId)
public function delete($organizationId, $roleId, Organization $organization)
{
$organization = $this->readRepository->find($organizationId);
$role = $this->rolesReadRepository->findForOrganization($roleId, $organizationId);

$this->dispatch(new DeleteOrganizationRole($organization, $role));
Expand Down
31 changes: 12 additions & 19 deletions app/Http/Controllers/OrganizationsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,45 +4,38 @@

use App\Http\Requests\Organizations\CreateOrganizationRequest;
use App\Http\Requests\Organizations\UpdateOrganizationRequest;
use App\Models\Organization;
use App\Organizations\Commands\CreateOrganization;
use App\Organizations\Commands\DeleteOrganization;
use App\Organizations\Commands\UpdateOrganization;
use App\Organizations\Repositories\ReadRepository;
use App\Organizations\Transformers\OrganizationTransformer;

class OrganizationsController extends ApiController
{
/**
* @var ReadRepository
*/
private $organizationsReadRepository;

/**
* @param OrganizationTransformer $organizationTransformer
* @param ReadRepository $organizationsReadRepository
*/
public function __construct(
OrganizationTransformer $organizationTransformer,
ReadRepository $organizationsReadRepository
OrganizationTransformer $organizationTransformer
) {
$this->setTransformer($organizationTransformer);
$this->organizationsReadRepository = $organizationsReadRepository;
}

/**
* @param string $organizationId
* @param Organization $organization
*
* @return \Psr\Http\Message\ResponseInterface
*/
public function show(string $organizationId)
public function show($organizationId, Organization $organization)
{
$organization = $this->organizationsReadRepository->find($organizationId);

return $this->responseItem($organization);
}

/**
* @param CreateOrganizationRequest $request
*
* @return \Psr\Http\Message\ResponseInterface
*/
public function create(CreateOrganizationRequest $request)
{
Expand All @@ -57,14 +50,13 @@ public function create(CreateOrganizationRequest $request)

/**
* @param string $organizationId
* @param Organization $organization
* @param UpdateOrganizationRequest $request
*
* @return \Psr\Http\Message\ResponseInterface
*/
public function update(string $organizationId, UpdateOrganizationRequest $request)
public function update(string $organizationId, Organization $organization, UpdateOrganizationRequest $request)
{
$organization = $this->organizationsReadRepository->find($organizationId);

$organization = $this->dispatch(new UpdateOrganization(
$organization,
$request->get('name'),
Expand All @@ -78,11 +70,12 @@ public function update(string $organizationId, UpdateOrganizationRequest $reques

/**
* @param string $organizationId
* @param Organization $organization
*
* @return \Zend\Diactoros\Response\JsonResponse
*/
public function delete(string $organizationId)
public function delete(string $organizationId, Organization $organization)
{
$organization = $this->organizationsReadRepository->find($organizationId);

$this->dispatch(new DeleteOrganization($organization));

return $this->responseNoContent();
Expand Down
3 changes: 3 additions & 0 deletions app/Http/Middleware/AuthorizeOrganization.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ public function handle($request, Closure $next)
abort(404);
}

$organization = $this->readRepository->find($organizationId);
$request->route()->setParameter('organization', $organization);

return $next($request);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<?php

namespace App\Http\Requests\OrganizationBudgets;

use App\Http\Requests\FormRequest;
use App\Organizations\Rules\IsOrganizationBudget;

class CreateOrganizationBudgetRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}

/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'string|required',
'approverEmail' => 'string|email',
'maxAmount' => 'numeric|required',
'autoApproveAmountLimit' => 'numeric',
'autoApproveMonthlyLimit' => 'numeric',
'autoApproveAfter' => 'string',
'defaultBudgetId' => [new IsOrganizationBudget($this->route('organizationId'))],
];
}

protected function validationData()
{
return array_merge($this->request->all(), [
'defaultBudgetId' => $this->route('organizationBudgetId'),
]);
}
}
Loading

0 comments on commit cc4cddf

Please sign in to comment.