$application->abort(400, 'repository name exists already'); } $storage->resetRuntimeProperties(); //end of validation //begin of process $createdId = $storage->createFrom($repositoryRequest); return $application->json(array('id' => $createdId)); //end of process }); $application->post('/unique-number-repository/{name}', function (Application $application, Request $request, $name) use($locator) { //begin of runtime parameters $name = urldecode($name); $user = urldecode($request->get('applicant_name')); //end of runtime parameters //begin of dependencies $numberEnumerator = $locator->getUniqueNumberEnumerator(); $repositoryStorage = $locator->getRepositoryStorage(); $uniqueNumberStorage = $locator->getUniqueNumberStorage(); //end of dependencies //begin of validation $repositoryStorage->filterByName($name); $repositoryNameDoesNotExist = !$repositoryStorage->has(); if ($repositoryNameDoesNotExist) { $application->abort(400, 'repository name does not exist'); } $repositoryStorage->resetRuntimeProperties(); //end of validation //begin of process $uniqueNumberRequest = new UniqueNumberRequest($user, $numberEnumerator->increment($name), new DateTime(), $name); $uniqueNumberStorage->createFrom($uniqueNumberRequest); return $application->json(array('number' => $uniqueNumberRequest->number()));