validateProjectCreate($request))) { $response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val); return; } $project = $this->createProjectFromRequest($request); $this->createModel($request->header->account, $project, ProjectMapper::class, 'card', $request->getOrigin()); $this->createStandardCreateResponse($request, $response, $project); } /** * Method to create card from request. * * @param RequestAbstract $request Request * * @return Project * * @since 1.0.0 */ public function createProjectFromRequest(RequestAbstract $request) : Project { $project = new Project(); $project->name = $request->getDataString('name') ?? ''; $project->descriptionRaw = $request->getDataString('plain') ?? ''; $project->description = Markdown::parse($request->getDataString('plain') ?? ''); $project->start = $request->getDataDateTime('start') ?? $project->start; $project->end = $request->getDataDateTime('end') ?? $project->end; $project->createdBy = new NullAccount($request->header->account); $project->progressType = ProgressType::tryFromValue($request->getDataInt('progresstype')) ?? ProgressType::MANUAL; $project->progress = $request->getDataInt('progress') ?? 0; $project->budgetCosts->value = $request->getDataInt('budgetcosts') ?? 0; $project->actualCosts->value = $request->getDataInt('actualcosts') ?? 0; // @todo implement unit //$project->unit = $this->app->unitId; if (!empty($uploadedFiles = $request->files)) { $uploaded = $this->app->moduleManager->get('Media', 'Api')->uploadFiles( [], [], $uploadedFiles, $request->header->account, __DIR__ . '/../../../Modules/Media/Files/Modules/ProjectManagement', '/Modules/ProjectManagement', ); foreach ($uploaded as $media) { $project->files[] = $media; } } $mediaFiles = $request->getDataJson('media'); foreach ($mediaFiles as $media) { $project->files[] = new NullMedia($media); } return $project; } /** * Validate card create request * * @param RequestAbstract $request Request * * @return array * * @since 1.0.0 */ private function validateProjectCreate(RequestAbstract $request) : array { $val = []; if (($val['name'] = !$request->hasData('name'))) { return $val; } return []; } }