36 lines
1.1 KiB
PHP
36 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api\V4;
|
|
|
|
use App\Exceptions\Api\V4\CrmException;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\Api\V4\SendClaimRequest;
|
|
use App\Models\Claim;
|
|
use App\Models\Service;
|
|
use Illuminate\Support\Arr;
|
|
|
|
class ClaimController extends Controller
|
|
{
|
|
/**
|
|
* Just returns HTTP 200 response.
|
|
*
|
|
* @param \App\Http\Requests\Api\V4\SendClaimRequest $request
|
|
* @param \App\Models\Service $service
|
|
* @return \Illuminate\Http\JsonResponse
|
|
* @throws \App\Exceptions\Api\V4\CrmException If the single optin could not be added or removed.
|
|
*/
|
|
public function store(SendClaimRequest $request, Service $service): \Illuminate\Http\JsonResponse
|
|
{
|
|
$claimModel = (new Claim())->fill(Arr::except($request->validated(), 'file'));
|
|
if ($request->hasFile('file')) {
|
|
$claimModel->file = $request->file('file')->store('claims/files');
|
|
}
|
|
|
|
if (!$claimModel->saveOrFail()) {
|
|
throw new CrmException('Api failed to store claim.');
|
|
}
|
|
$claimModel->brand()->associate($service->brand);
|
|
|
|
return response()->json();
|
|
}
|
|
}
|