From f048e943f8523fea871b10a1a41d4ee43d19c508 Mon Sep 17 00:00:00 2001 From: James Cole Date: Fri, 29 Jun 2018 08:06:17 +0200 Subject: [PATCH] Implement piggy bank API. --- app/Api/V1/Controllers/PiggyBankController.php | 16 ++++++++++++---- app/Api/V1/Requests/PiggyBankRequest.php | 4 ++-- .../PiggyBank/PiggyBankRepository.php | 8 ++++---- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/app/Api/V1/Controllers/PiggyBankController.php b/app/Api/V1/Controllers/PiggyBankController.php index 080aa676f2..a79f0da7ae 100644 --- a/app/Api/V1/Controllers/PiggyBankController.php +++ b/app/Api/V1/Controllers/PiggyBankController.php @@ -160,14 +160,22 @@ class PiggyBankController extends Controller } /** - * @param Request $request - * @param string $object + * @param PiggyBankRequest $request + * @param PiggyBank $piggyBank * * @return JsonResponse */ - public function update(Request $request, string $object): JsonResponse + public function update(PiggyBankRequest $request, PiggyBank $piggyBank): JsonResponse { - // todo replace code and replace request object. + $data = $request->getAll(); + $budget = $this->repository->update($piggyBank, $data); + $manager = new Manager(); + $baseUrl = $request->getSchemeAndHttpHost() . '/api/v1'; + $manager->setSerializer(new JsonApiSerializer($baseUrl)); + + $resource = new Item($budget, new PiggyBankTransformer($this->parameters), 'piggy_banks'); + + return response()->json($manager->createData($resource)->toArray())->header('Content-Type', 'application/vnd.api+json'); } } \ No newline at end of file diff --git a/app/Api/V1/Requests/PiggyBankRequest.php b/app/Api/V1/Requests/PiggyBankRequest.php index 15a41bda01..0e87661073 100644 --- a/app/Api/V1/Requests/PiggyBankRequest.php +++ b/app/Api/V1/Requests/PiggyBankRequest.php @@ -78,8 +78,8 @@ class PiggyBankRequest extends Request case 'PUT': case 'PATCH': /** @var PiggyBank $piggyBank */ - $piggyBank = $this->route()->parameter('piggyBank'); - $rules['name'] = 'required|between:1,255|uniquePiggyBankForUser:' . $piggyBank->id; + $piggyBank = $this->route()->parameter('piggyBank'); + $rules['name'] = 'required|between:1,255|uniquePiggyBankForUser:' . $piggyBank->id; break; } diff --git a/app/Repositories/PiggyBank/PiggyBankRepository.php b/app/Repositories/PiggyBank/PiggyBankRepository.php index f2043a11a6..cacf70be61 100644 --- a/app/Repositories/PiggyBank/PiggyBankRepository.php +++ b/app/Repositories/PiggyBank/PiggyBankRepository.php @@ -478,7 +478,7 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface /** @var PiggyBank $piggyBank */ $piggyBank = PiggyBank::create($data); - $this->updateNote($piggyBank, $data['note']); + $this->updateNote($piggyBank, $data['note']); // todo rename to 'notes' // repetition is auto created. $repetition = $this->getRepetition($piggyBank); @@ -500,9 +500,9 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface { $piggyBank->name = $data['name']; $piggyBank->account_id = (int)$data['account_id']; - $piggyBank->targetamount = round($data['targetamount'], 2); - $piggyBank->targetdate = $data['targetdate']; - $piggyBank->startdate = $data['startdate']; + $piggyBank->targetamount = $data['targetamount']; + $piggyBank->targetdate = $data['targetdate'] ?? $piggyBank->targetdate; + $piggyBank->startdate = $data['startdate'] ?? $piggyBank->startdate; $piggyBank->save();