$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()));