/**
  * @param int $id
  * @param Request $request
  * @return Illuminate\Http\JsonResponse
  */
 public function putIndex($id, Request $request)
 {
     $useCase = $this->useCase->find($id);
     if ($useCase) {
         $useCase->id_sistema = $request->input('id_sistema');
         $useCase->descricao = $request->input('descricao');
         $useCase->status = $request->input('status');
         $useCase->save();
         $id_revisao = $request->input('id_revisao');
         $findRevision = $this->revision->find($id_revisao);
         $findRevision->id_dados_revisao = $request->input('id_dados_revisao');
         $findRevision->id_caso_de_uso = $id;
         $findRevision->save();
         $findActor = $this->revisionActors->findByRevision($request->input('id_revisao'));
         $findActor->delete();
         foreach ($request->input('id_ator', []) as $id) {
             $r = new RevisionActors();
             $r->id_dados_revisao = $request->input('id_dados_revisao');
             $r->id_ator = $id;
             $r->id_revisao = $id_revisao;
             $r->save();
         }
     }
     return $this->getJsonResponse($id);
 }
 /**
  * @param int $id
  * @return Illuminate\Http\JsonResponse
  */
 public function deleteIndex($id)
 {
     try {
         $count = $this->revision->findByRevision($id)->count();
         if ($count > 0) {
             throw new \Exception('COULD_NOT_DELETE_REVISION');
         }
         $version = $this->version->find($id);
         if ($version) {
             $version->delete();
         }
         return $this->getJsonResponse($id);
     } catch (\Exception $exception) {
         return $this->getJsonResponse(['data' => $exception->getMessage(), 'error' => true], false);
     }
 }
 /**
  * @param Request $request
  * @return Illuminate\Http\JsonResponse
  */
 public function postIndex(Request $request)
 {
     $useCase = new UseCase();
     $useCase->id_sistema = $request->input('application');
     $useCase->descricao = $request->input('description');
     $useCase->status = $request->input('status');
     $useCase->save();
     $idUseCase = $useCase->id_caso_de_uso;
     $revision = new Revision();
     $revision->id_dados_revisao = $request->input('version');
     $revision->id_caso_de_uso = $idUseCase;
     $revision->save();
     $id_revisao = $revision->id_revisao;
     foreach ($request->input('actor', []) as $actor) {
         $revisionActors = new RevisionActors();
         $revisionActors->id_revisao = $id_revisao;
         $revisionActors->id_ator = $actor;
         $revisionActors->id_dados_revisao = $request->input('version');
         $revisionActors->save();
     }
     return $this->getJsonResponse($idUseCase);
 }
 /**
  * @param int $id
  * @return Illuminate\Http\JsonResponse
  */
 public function getPreview($id, UseCaseRepository $useCaseRepository)
 {
     $revision = new Revision();
     $revisionActors = new RevisionActors();
     $complementary = new \Modules\Api\Models\ComplementarySteps();
     $business = new \Modules\Api\Models\BusinessSteps();
     $reference = new \Modules\Api\Models\ReferenceSteps();
     $result = [];
     $app = new Application();
     $array = $app->where('id_sistema', $id)->get();
     foreach ($array as $application) {
         $u = $useCaseRepository->findByIdSistema($application->id_sistema);
         $a = $u->get()->toArray();
         $result['app'] = $application->toArray();
         foreach ($a as $useCaseMaroto) {
             $arrayU = $u->get()->toArray();
             foreach ($arrayU as $key => $singleUseCase) {
                 $result['app']['useCase'][$key] = $singleUseCase;
                 $revisionA = $revision->findByUseCase($singleUseCase['id_caso_de_uso'])->get()->toArray();
                 foreach ($revisionA as $revisionData) {
                     $result['app']['useCase'][$key]['revision'] = $revisionData;
                     $result['app']['useCase'][$key]['revision']['actors'] = $revisionActors->findActorByRevision($revisionData['id_revisao'])->get()->toArray();
                     $flow = $this->flow->where('id_revisao', $revisionData['id_revisao'])->get()->toArray();
                     $compl = $complementary->findByUseCase($singleUseCase['id_caso_de_uso']);
                     $bus = $business->findByUseCase($singleUseCase['id_caso_de_uso']);
                     $ref = $reference->findByUseCase($singleUseCase['id_caso_de_uso']);
                     $result['app']['useCase'][$key]['revision']['flow'][] = ['complementary' => $compl, 'business' => $bus, 'reference' => $ref];
                 }
             }
         }
     }
     return $this->getJsonResponse($result, false);
 }