client_repo = $client_repo; } /** */ public function index(ClientFilters $filters) { $clients = Client::filter($filters); return $this->listResponse($clients); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show(ShowClientRequest $request, Client $client) { return $this->itemResponse($client); } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit(EditClientRequest $request, Client $client) { return $this->itemResponse($client); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param App\Models\Client $client * @return \Illuminate\Http\Response */ public function update(UpdateClientRequest $request, Client $client) { $client = $this->client_repo->save($request->all(), $client); return $this->itemResponse($client); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create(CreateClientRequest $request) { $client = ClientFactory::create(auth()->user()->company()->id, auth()->user()->id); return $this->itemResponse($client); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(StoreClientRequest $request) { $client = $this->client_repo->save($request->all(), ClientFactory::create(auth()->user()->company()->id, auth()->user()->id)); $client->load('contacts', 'primary_contact'); return $this->itemResponse($client); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy(DestroyClientRequest $request, Client $client) { //may not need these destroy routes as we are using actions to 'archive/delete' $client->delete(); return response()->json([], 200); } /** * Perform bulk actions on the list view * * @return Collection */ public function bulk() { $action = request()->input('action'); $ids = request()->input('ids'); $clients = Client::withTrashed()->find($ids); $clients->each(function ($client, $key) use($action){ if(auth()->user()->can('edit', $client)) $this->client_repo->{$action}($invoice); }); return $this->listResponse(Client::withTrashed()->whereIn('id', $ids)); } /** * Returns a client statement * * @return [type] [description] */ public function statement() { //todo } }