diff --git a/app/Http/Controllers/CreditController.php b/app/Http/Controllers/CreditController.php index 74b46011fea4..4974cbb875fc 100644 --- a/app/Http/Controllers/CreditController.php +++ b/app/Http/Controllers/CreditController.php @@ -59,7 +59,7 @@ class CreditController extends BaseController * @OA\Get( * path="/api/v1/credits", * operationId="getCredits", - * tags={"invoices"}, + * tags={"credits"}, * summary="Gets a list of credits", * description="Lists credits, search and filters allow fine grained lists to be generated. * diff --git a/app/Http/Controllers/ExpenseController.php b/app/Http/Controllers/ExpenseController.php index c2c2fede38a8..9b7b74939a33 100644 --- a/app/Http/Controllers/ExpenseController.php +++ b/app/Http/Controllers/ExpenseController.php @@ -21,12 +21,14 @@ use App\Http\Requests\Expense\EditExpenseRequest; use App\Http\Requests\Expense\ShowExpenseRequest; use App\Http\Requests\Expense\StoreExpenseRequest; use App\Http\Requests\Expense\UpdateExpenseRequest; +use App\Http\Requests\Expense\UploadExpenseRequest; use App\Models\Expense; use App\Repositories\ExpenseRepository; use App\Transformers\ExpenseTransformer; use App\Utils\Ninja; use App\Utils\Traits\BulkOptions; use App\Utils\Traits\MakesHash; +use App\Utils\Traits\SavesDocuments; use App\Utils\Traits\Uploadable; use Illuminate\Http\Request; use Illuminate\Http\Response; @@ -40,7 +42,8 @@ class ExpenseController extends BaseController use MakesHash; use Uploadable; use BulkOptions; - + use SavesDocuments; + protected $entity_type = Expense::class; protected $entity_transformer = ExpenseTransformer::class; @@ -507,4 +510,65 @@ class ExpenseController extends BaseController { //todo } + + /** + * Update the specified resource in storage. + * + * @param UploadExpenseRequest $request + * @param Expense $expense + * @return Response + * + * + * + * @OA\Put( + * path="/api/v1/expenses/{id}/upload", + * operationId="uploadExpense", + * tags={"expense"}, + * summary="Uploads a document to a expense", + * description="Handles the uploading of a document to a expense", + * @OA\Parameter(ref="#/components/parameters/X-Api-Secret"), + * @OA\Parameter(ref="#/components/parameters/X-Api-Token"), + * @OA\Parameter(ref="#/components/parameters/X-Requested-With"), + * @OA\Parameter(ref="#/components/parameters/include"), + * @OA\Parameter( + * name="id", + * in="path", + * description="The Expense Hashed ID", + * example="D2J234DFA", + * required=true, + * @OA\Schema( + * type="string", + * format="string", + * ), + * ), + * @OA\Response( + * response=200, + * description="Returns the Expense object", + * @OA\Header(header="X-MINIMUM-CLIENT-VERSION", ref="#/components/headers/X-MINIMUM-CLIENT-VERSION"), + * @OA\Header(header="X-RateLimit-Remaining", ref="#/components/headers/X-RateLimit-Remaining"), + * @OA\Header(header="X-RateLimit-Limit", ref="#/components/headers/X-RateLimit-Limit"), + * @OA\JsonContent(ref="#/components/schemas/Expense"), + * ), + * @OA\Response( + * response=422, + * description="Validation error", + * @OA\JsonContent(ref="#/components/schemas/ValidationError"), + * + * ), + * @OA\Response( + * response="default", + * description="Unexpected Error", + * @OA\JsonContent(ref="#/components/schemas/Error"), + * ), + * ) + */ + public function upload(UploadExpenseRequest $request, Expense $expense) + { + + if ($request->has('documents')) + $this->saveDocuments($request->file('documents'), $expense); + + return $this->itemResponse($expense->fresh()); + + } } diff --git a/app/Http/Requests/Expense/UploadExpenseRequest.php b/app/Http/Requests/Expense/UploadExpenseRequest.php new file mode 100644 index 000000000000..e52c13a8050d --- /dev/null +++ b/app/Http/Requests/Expense/UploadExpenseRequest.php @@ -0,0 +1,39 @@ +user()->can('edit', $this->expense); + } + + public function rules() + { + + $rules = []; + + if($this->input('documents')) + $rules['documents'] = 'file|mimes:html,csv,png,ai,svg,jpeg,tiff,pdf,gif,psd,txt,doc,xls,ppt,xlsx,docx,pptx|max:2000000'; + + return $rules; + + } +} diff --git a/routes/api.php b/routes/api.php index c54b9c6ffae3..ac70201cbacf 100644 --- a/routes/api.php +++ b/routes/api.php @@ -72,6 +72,7 @@ Route::group(['middleware' => ['api_db', 'token_auth', 'locale'], 'prefix' => 'a Route::post('recurring_quotes/bulk', 'RecurringQuoteController@bulk')->name('recurring_quotes.bulk'); Route::resource('expenses', 'ExpenseController'); // name = (expenses. index / create / show / update / destroy / edit + Route::put('expenses/{expense}/upload', 'ExpenseController@upload'); Route::post('expenses/bulk', 'ExpenseController@bulk')->name('expenses.bulk');