repeat === null) { $task = new Task(); $task->setName($req->name); $task->setDate($req->date); $task->setStatus($req->taskStatus); $this->em->persist($task); $this->em->flush(); return; } $schema = new TaskSchema(); $schema->setName($req->name); $schema->setStatus($req->status); $schema->setTaskStatus($req->taskStatus); $schema->setDate($req->date); $schema->setRepeat($req->repeat); $schema->setStart($req->start); $schema->setEnd($req->end); $this->em->persist($schema); $this->em->flush(); if ($schema->getStatus() === TaskSchemaStatus::Inactive) { return; } $this->generator->generateTasks($schema); $this->em->flush(); } public function update(TaskSchema $schema, TaskSchemaRequest $req): void { $schema->setName($req->name); $schema->setStatus($req->status); $schema->setTaskStatus($req->taskStatus); $schema->setDate($req->date); $schema->setRepeat($req->repeat); $schema->setStart($req->start); $schema->setEnd($req->end); if ($schema->getStatus() === TaskSchemaStatus::Inactive) { $this->em->flush(); return; } $this->generator->removeTasks($schema); $this->generator->generateTasks($schema); $this->em->flush(); } public function delete(TaskSchema $schema): void { $this->generator->removeTasks($schema); $this->em->remove($schema); $this->em->flush(); } }