/**
  * Display the specified resource.
  *
  * @param  int  $id
  * @return Response
  */
 public function show($id)
 {
     if (!$this->checkProjectPermissions($id)) {
         return ['error' => 'Access forbidden'];
     }
     return $this->repository->find($id);
 }
 /**
  * Remove the specified resource from storage.
  *
  * @param  int  $id
  * @return Response
  */
 public function destroy($id)
 {
     $p = $this->repository->find($id)->delete();
     if ($p) {
         return "O projeto {$id} foi deletado com sucesso!";
     }
 }
 public function createFile(array $data)
 {
     $project = $this->repository->skipPresenter()->find($data['project_id']);
     //dd($project);
     $projectFile = $project->files()->create($data);
     $this->storage->put($projectFile->id . "." . $data['extension'], $this->filesystem->get($data['file']));
 }
 public function createFile(array $data)
 {
     $project = $this->repository->skipPresenter()->find($data['project_id']);
     $projectFile = $project->files()->create($data);
     $arquivo = $projectFile->id . "." . $data['extension'];
     \Storage::put($arquivo, \File::get($data['file']));
 }
 public function delete($id)
 {
     try {
         $this->repository->delete($id);
     } catch (ModelNotFoundException $e) {
         return response()->json(['error' => true, 'message' => "Project id {$id} not found"]);
     }
 }
 public function destroy($id)
 {
     try {
         return $this->repository->delete($id);
     } catch (ModelNotFoundException $e) {
         return ['error' => true, 'message' => 'Projeto não encontrado'];
     }
 }
 public function update(array $data, $id)
 {
     try {
         $this->validator->with($data)->passesOrFail();
         return $this->repository->update($data, $id);
     } catch (ValidatorException $e) {
         return ['error' => true, 'message' => $e->getMessageBag()];
     }
 }
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     $userId = Authorizer::getResourceOwnerId();
     $projectId = $request->project;
     if ($this->repository->isOwner($projectId, $userId) == false) {
         return ['success' => false, 'userId' => 'Forbidden'];
     }
     return $next($request);
 }
 private function checkProjectPermissions($projectId)
 {
     $this->repository->skipPresenter(true);
     if ($this->checkProjectOwner($projectId) or $this->checkProjectMember($projectId)) {
         $this->repository->skipPresenter(false);
         return true;
     }
     return false;
 }
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     $userId = Authorizer::getResourceOwnerId();
     $projectId = $request->projects;
     if (!$this->repository->isOwner($projectId, $userId)) {
         return ['error' => 'Access forbidden'];
     }
     return $next($request);
 }
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     $userId = Authorizer::getResourceOwnerId();
     $projectId = $request->project;
     if ($this->repository->isOwner($projectId, $userId) == false) {
         return ['error' => 'Access Denied!'];
     }
     return $next($request);
 }
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request $request
  * @param  \Closure $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     $userId = \Authorizer::getResourceOwnerId();
     $projectId = $request->projects;
     if ($this->repository->isOwner($projectId, $userId) == false) {
         return ['error' => 'Access denied! You must be the project owner to access this resource'];
     }
     return $next($request);
 }
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     $userId = \Authorizer::getResourceOwnerId();
     $projectId = $request->id;
     if ($this->repository->isOwner($projectId, $userId) == false) {
         return ['error' => true, 'message' => 'Access forbidden'];
     }
     return $next($request);
 }
 public function removeMember($projectId, $memberId)
 {
     try {
         $result = $this->projectRepository->removeMember($projectId, $memberId);
         return ['success' => $result, "message" => 'Remover membro do projeto.'];
     } catch (\Exception $e) {
         return ["error" => true, "message" => 'Falha ao remover membro do projeto.', "messageDev" => $e->getMessage()];
     }
 }
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     $user_id = \Authorizer::getResourceOwnerId();
     $project_id = $request->project;
     $projects = $this->repository->skipPresenter()->findWhere(['id' => $project_id, 'owner_id' => $user_id]);
     if (count($projects) == false) {
         return ['error' => 'Access forbidden'];
     }
     return $next($request);
 }
 public function show($id)
 {
     try {
         // return $this->repository->find($id);
         // return $this->repository->with(['owner', 'client'])->find($id);
         return $this->repository->with(['owner', 'client'])->find($id);
     } catch (Exception $e) {
         return ['error' => true, 'message' => $e->getMessage()];
     }
 }
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     $userId = Authorizer::getResourceOwnerId();
     $projectId = $request->project;
     $isOwner = $this->repository->isOwner($projectId, $userId);
     $isMember = $this->repository->hasMember($projectId, $userId);
     if ($isOwner || $isMember) {
         return $next($request);
     }
     return ['error' => 'Access Forbiden'];
 }
 public function create(array $data)
 {
     try {
         $this->validator->with($data)->passesOrFail();
         $project = $this->projectRepository->skipPresenter()->find($data['project_id']);
         $projectTask = $project->tasks()->create($data);
         return $projectTask;
     } catch (ValidatorException $e) {
         return ['error' => true, 'message' => $e->getMessageBag()];
     }
 }
 public function indexAsMember(Request $request)
 {
     #return $this->repository->hidden(['owner_id', 'client_id'])->with(['owner', 'client'])->all();
     /*return $this->repository->
       with(['client', 'tasks', 'notes', 'members'])->
       all()->members()->where(['user_id' => Authorizer::getResourceOwnerId()]);*/
     #return $this->service->index();
     $rtrn = $this->repository->findMember(Authorizer::getResourceOwnerId(), $request->query->get('limit'));
     //dd($rtrn);
     return $rtrn;
 }
 /**
  * Remove the specified resource from storage.
  *
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function destroy($id)
 {
     try {
         $this->repository->delete($id);
         return ['status' => 'success', 'message' => 'Project removed'];
     } catch (ModelNotFoundException $e) {
         return ['error' => true, 'message' => 'Project not Found'];
     } catch (QueryException $e) {
         return ['error' => true, 'message' => 'This project has related project notes'];
     }
 }
 public function destroy($id)
 {
     try {
         if ($this->repository->find($id)->destroy()) {
             return ['error' => false, 'message' => 'Projeto deletado.'];
         }
     } catch (ModelNotFoundException $e) {
         return ['error' => true, 'message' => 'Projeto não encontrado.'];
     } catch (\PDOException $e) {
         return ['success' => false, 'message' => 'Existem projetos cadastrados a este cliente!'];
     }
 }
 /**
  * @param array $data
  *
  * @return array
  * @throws \Prettus\Validator\Exceptions\ValidatorException
  */
 public function create(array $data)
 {
     try {
         $this->validator->with($data)->passesOrFail(ValidatorInterface::RULE_CREATE);
         $project = $this->projectRepository->skipPresenter()->find($data['project_id']);
         $projectFile = $project->files()->create($data);
         $this->storage->put($projectFile->id . '.' . $data['extension'], $this->filesystem->get($data['file']));
         return $projectFile;
     } catch (ValidatorException $e) {
         return ['error' => true, 'message' => $e->getMessageBag()];
     }
 }
 public function delete($id)
 {
     $projects = $this->projectRepository->findByField('client_id', $id);
     foreach ($projects as $project) {
         $this->projectRepository->delete($project->id);
     }
     $response = $this->repository->delete($id);
     if ($response === true) {
         return ['success' => true];
     }
     return $response;
 }
 public function update(array $data, $id)
 {
     try {
         $this->validator->with($data)->passesOrFail(ValidatorInterface::RULE_UPDATE);
         return $this->repository->setPresenter($this->presenter)->update($data, $id);
     } catch (ValidatorException $e) {
         return ['error' => true, 'message' => $e->getMessageBag(), "messageDev" => 'ValidatorException'];
     } catch (ModelNotFoundException $e) {
         return ['error' => true, 'message' => 'Registro não encontrado.', "messageDev" => $e->getMessage()];
     } catch (\Exception $e) {
         return ["error" => true, "message" => 'Falha ao atualizar dados.', "messageDev" => $e->getMessage()];
     }
 }
 public function deleteFile($project_id, $file_id)
 {
     $project = $this->repository->skipPresenter()->find($project_id);
     if ($project) {
         $projectFile = $project->files->find($file_id);
         if ($projectFile) {
             $this->storage->delete($projectFile->id . '.' . $projectFile->extension);
             $projectFile->delete($file_id);
         } else {
             return ['error' => true, 'message' => 'Arquivo não encontrado'];
         }
     }
 }
 public function create(array $data)
 {
     try {
         $this->fileValidator->with($data)->passesOrFail(ValidatorInterface::RULE_CREATE);
         $project = $this->projectRepository->skipPresenter()->find($data['project_id']);
         $projectFile = $project->files()->create($data);
         $this->storage->put($projectFile->getFileName(), $this->fileSystem->get($data['file']));
         return ['error' => false, 'message' => 'Arquivo inserido com sucesso!'];
     } catch (ValidatorException $e) {
         $error = $e->getMessageBag();
         return ['error' => true, 'message' => "Erro ao enviar o arquivo, alguns campos são obrigatórios!", 'messages' => $error->getMessages()];
     }
 }
 public function create($projectId, $file, array $data)
 {
     try {
         $this->validator->with($data)->passesOrFail();
         $data['extension'] = $file->getClientOriginalExtension();
         $data['file'] = md5(date('Y-m-d H:i:s')) . "." . $data['extension'];
         $this->storage->put($data['file'], $this->filesystem->get($file));
         $project = $this->projectRepository->find($projectId);
         $file = $project->files()->create($data);
         return $this->find($projectId, $file->id);
     } catch (ValidatorException $e) {
         return ['error' => true, 'message' => $e->getMessageBag()];
     } catch (\Exception $e) {
         return ['error' => true, 'message' => $e->getMessage()];
     }
 }
 public function deleteFile($idProject, $idFile)
 {
     try {
         // $projectFile = $this->repository->skipPresenter()->with(['files'])->find($idFile);
         /*
          * Busco o File do project e acesso o files que está relacionando no Project buscando o file
          */
         $projectFile = $this->repository->skipPresenter()->find($idProject)->files()->find($idFile);
         //pega no nome do arquivo e extensão para deletar da pasta
         $nomeFile = $idFile . "." . $projectFile->extension;
         //deleta da pasta
         $this->filesystem->delete($nomeFile);
         //return response()->json(['error' => false,'message' => "ProjectFile {$idFile} deleted"]);
     } catch (ModelNotFoundException $ex) {
         return $this->notFound($idFile);
     }
     //deleta o file da tabela
     try {
         $this->repository->skipPresenter()->find($idProject)->files()->detach($idFile);
     } catch (ModelNotFoundException $e) {
         try {
             $this->repository->skipPresenter()->find($idProject)->files()->detach($idFile);
             return response()->json(['error' => false, 'message' => "ProjectFile {$idFile} deleted"]);
         } catch (ModelNotFoundException $e) {
             return response()->json(['error' => true, 'message' => "ProjectFile {$idFile} not found"]);
         }
     }
 }
 public function create(array $data)
 {
     // diversos serviços
     // enviar email
     // disparar notificacao
     try {
         //dd($data);
         $this->validator->with($data)->passesOrFail(ValidatorInterface::RULE_CREATE);
         $project = $this->projectRepository->skipPresenter()->find($data['project_id']);
         $projectFile = $project->files()->create($data);
         $this->storage->put($projectFile->getFileName(), $this->filesystem->get($data['file']));
         return $projectFile;
     } catch (ValidatorException $e) {
         return ['error' => true, 'message' => $e->getMessageBag()];
     }
 }
 /**
  * Remove the specified resource from storage.
  *
  * @param  int $id
  * @return Response
  */
 public function destroy($id)
 {
     if ($this->service->checkProjectPermissions($id) == false) {
         return ['error' => 'Access Forbidden'];
     }
     //$this->repository->find($id)->delete();
     $this->repository->delete($id);
 }