allow to query other users timesheets via api (#563)

This commit is contained in:
Kevin Papst
2019-02-14 00:04:27 +01:00
committed by GitHub
parent ef33233624
commit 8005679e60
13 changed files with 153 additions and 72 deletions

View File

@@ -53,7 +53,10 @@ class ActivityController extends BaseApiController
* @SWG\Response(
* response=200,
* description="Returns the collection of all existing activities",
* @SWG\Schema(ref="#/definitions/ActivityCollection"),
* @SWG\Schema(
* type="array",
* @SWG\Items(ref="#/definitions/ActivityEntity")
* )
* )
* @Rest\QueryParam(name="project", requirements="\d+", strict=true, nullable=true, description="Project ID to filter activities. If none is provided, only global activities will be returned.")
* @Rest\QueryParam(name="visible", requirements="\d+", strict=true, nullable=true, description="Visibility status to filter activities (1=visible, 2=hidden, 3=both)")

View File

@@ -53,7 +53,10 @@ class CustomerController extends BaseApiController
* @SWG\Response(
* response=200,
* description="Returns the collection of all existing customer",
* @SWG\Schema(ref="#/definitions/CustomerCollection"),
* @SWG\Schema(
* type="array",
* @SWG\Items(ref="#/definitions/CustomerEntity")
* )
* )
* @Rest\QueryParam(name="visible", requirements="\d+", strict=true, nullable=true, description="Visibility status to filter activities (1=visible, 2=hidden, 3=both)")
* @Rest\QueryParam(name="order", requirements="ASC|DESC", strict=true, nullable=true, description="The result order (allowed values: 'ASC', 'DESC')")

View File

@@ -53,7 +53,10 @@ class ProjectController extends BaseApiController
* @SWG\Response(
* response=200,
* description="Returns the collection of all existing projects",
* @SWG\Schema(ref="#/definitions/ProjectCollection"),
* @SWG\Schema(
* type="array",
* @SWG\Items(ref="#/definitions/ProjectEntity")
* )
* )
* @Rest\QueryParam(name="customer", requirements="\d+", strict=true, nullable=true, description="Customer ID to filter projects")
* @Rest\QueryParam(name="visible", requirements="\d+", strict=true, nullable=true, description="Visibility status to filter projects (1=visible, 2=hidden, 3=both)")

View File

@@ -70,8 +70,13 @@ class TimesheetController extends BaseApiController
* @SWG\Response(
* response=200,
* description="Returns the collection of all existing timesheets for the user",
* @SWG\Schema(ref="#/definitions/TimesheetCollection"),
* @SWG\Schema(
* type="array",
* @SWG\Items(ref="#/definitions/TimesheetEntity")
* )
* )
*
* @Rest\QueryParam(name="user", requirements="\d+|all", strict=true, nullable=true, description="User ID to filter timesheets (needs permission 'view_other_timesheet', pass 'all' to fetch data for all user)")
* @Rest\QueryParam(name="customer", requirements="\d+", strict=true, nullable=true, description="Customer ID to filter timesheets")
* @Rest\QueryParam(name="project", requirements="\d+", strict=true, nullable=true, description="Project ID to filter timesheets")
* @Rest\QueryParam(name="activity", requirements="\d+", strict=true, nullable=true, description="Activity ID to filter timesheets")
@@ -80,7 +85,7 @@ class TimesheetController extends BaseApiController
* @Rest\QueryParam(name="order", requirements="ASC|DESC", strict=true, nullable=true, description="The result order (allowed values: 'ASC', 'DESC')")
* @Rest\QueryParam(name="orderBy", requirements="id|begin|end|rate", strict=true, nullable=true, description="The field by which results will be ordered (allowed values: 'id', 'begin', 'end', 'rate')")
*
* @Security("is_granted('view_own_timesheet')")
* @Security("is_granted('view_own_timesheet') or is_granted('view_other_timesheet')")
*
* @return Response
*/
@@ -90,6 +95,13 @@ class TimesheetController extends BaseApiController
$query->setUser($this->getUser());
$query->setResultType(TimesheetQuery::RESULT_TYPE_PAGER);
if ($this->isGranted('view_other_timesheet') && null !== ($user = $paramFetcher->get('user'))) {
if ('all' === $user) {
$user = null;
}
$query->setUser($user);
}
if (null !== ($customer = $paramFetcher->get('customer'))) {
$query->setCustomer($customer);
}
@@ -155,18 +167,26 @@ class TimesheetController extends BaseApiController
/**
* @SWG\Post(
* description="Creates a new timesheet entry and returns it afterwards",
* @SWG\Schema(ref="#/definitions/TimesheetFormEntity"),
* @SWG\Response(
* response=200,
* description="Returns the new created timesheet entry",
* @SWG\Schema(ref="#/definitions/TimesheetEntity"),
* )
* )
* @SWG\Parameter(
* name="body",
* in="body",
* required=true,
* @SWG\Schema(ref="#/definitions/TimesheetEditForm")
* )
*
* @Security("is_granted('create_own_timesheet')")
*
* @param Request $request
* @return Response
* @throws \App\Repository\RepositoryException
* @throws \Doctrine\ORM\ORMException
* @throws \Doctrine\ORM\OptimisticLockException
*/
public function postAction(Request $request)
{
@@ -180,7 +200,6 @@ class TimesheetController extends BaseApiController
'include_exported' => $this->isGranted('edit_export', $timesheet),
]);
$form->setData($timesheet);
$form->submit($request->request->all());
if ($form->isValid()) {
@@ -227,15 +246,20 @@ class TimesheetController extends BaseApiController
}
/**
* @SWG\Post(
* @SWG\Patch(
* description="Update an existing timesheet entry, you can pass all or just a subset of all attributes",
* @SWG\Schema(ref="#/definitions/TimesheetFormEntity"),
* @SWG\Response(
* response=200,
* description="Returns the updated timesheet entry",
* @SWG\Schema(ref="#/definitions/TimesheetEntity"),
* @SWG\Schema(ref="#/definitions/TimesheetEntity")
* )
* )
* @SWG\Parameter(
* name="body",
* in="body",
* required=true,
* @SWG\Schema(ref="#/definitions/TimesheetEditForm")
* )
*
* @param Request $request
* @param string $id

View File

@@ -49,7 +49,10 @@ class UserController extends BaseApiController
* @SWG\Response(
* response=200,
* description="Returns the collection of all registered users",
* @SWG\Schema(ref="#/definitions/UserCollection"),
* @SWG\Schema(
* type="array",
* @SWG\Items(ref="#/definitions/UserEntity")
* )
* )
*
* @Security("is_granted('view_user')")