Alimentalos/Backend

View on GitHub
app/Http/Controllers/Users/Groups/RejectController.php

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
<?php

namespace App\Http\Controllers\Users\Groups;

use App\Models\Group;
use App\Models\User;
use App\Http\Controllers\Controller;
use App\Http\Requests\Users\Groups\RejectRequest;
use Illuminate\Http\JsonResponse;

class RejectController extends Controller
{
    /**
     * @OA\Post(
     *      path="/users/{user}/groups/{group}/reject",
     *      operationId="rejectUserGroup",
     *      tags={"Users"},
     *      summary="Reject user invitation to join group.",
     *      description="Update the user relationship status of group by setting as REJECTED only when user is the authenticated and has one PENDING invitation.",
     *      @OA\Parameter(
     *          name="user",
     *          description="User identifier",
     *          required=true,
     *          in="path",
     *          @OA\Schema(
     *              type="string"
     *          )
     *      ),
     *      @OA\Parameter(
     *          name="group",
     *          description="Group identifier",
     *          required=true,
     *          in="path",
     *          @OA\Schema(
     *              type="string"
     *          )
     *      ),
     *      @OA\Response(
     *          response=200,
     *          description="User instance reject to group successfully"
     *       ),
     *      @OA\Response(response=400, description="Bad request"),
     * )
     * Reject user group invitation.
     *
     * @param RejectRequest $request
     * @param User $user
     * @param Group $group
     * @return JsonResponse
     */
    public function __invoke(RejectRequest $request, User $user, Group $group)
    {
        $user->groups()->updateExistingPivot($group->uuid, ['status' => Group::REJECTED_STATUS]);
        return response()->json([], 200);
    }
}