diff --git a/app/Http/Controllers/ClientApiController.php b/app/Http/Controllers/ClientApiController.php index 663c772d667b..00d271feb72b 100644 --- a/app/Http/Controllers/ClientApiController.php +++ b/app/Http/Controllers/ClientApiController.php @@ -6,8 +6,6 @@ use App\Http\Requests\ClientRequest; use App\Http\Requests\CreateClientRequest; use App\Http\Requests\UpdateClientRequest; use App\Models\Client; -use App\Models\Activity; -use App\Ninja\Transformers\ActivityTransformer; use App\Ninja\Repositories\ClientRepository; use Input; use Response; @@ -59,29 +57,6 @@ class ClientApiController extends BaseAPIController return $this->listResponse($clients); } - public function activity(ClientRequest $request) - { - $client = $request->entity(); - - $activities = Activity::where('activities.account_id', '=', $client->account_id) - ->where('activities.client_id', '=', $client->id) - ->where('activities.activity_type_id', '>', 0); - - if (! auth()->user()->hasPermission('view_all')) { - $activities = $activities->where('activities.user_id', '=', auth()->user()->id); - } - - $activities->orderBy('activities.created_at', 'desc') - ->with('client.contacts', 'user', 'invoice', 'payment', 'credit', 'account', 'task', 'expense', 'contact') - ->take(500) - ->get(); - - $transformer = new ActivityTransformer(auth()->user()->account, $request->serializer); - $data = $this->createCollection($activities, $transformer, ENTITY_ACTIVITY); - - return $this->response($data); - } - /** * @SWG\Get( * path="/clients/{client_id}", @@ -107,7 +82,13 @@ class ClientApiController extends BaseAPIController */ public function show(ClientRequest $request) { - return $this->itemResponse($request->entity()); + $client = $request->entity(); + + if (strpos(request()->include, 'activities') !== false) { + $client->load('activities.client.contacts', 'activities.user', 'activities.invoice', 'activities.payment', 'activities.credit', 'activities.account', 'activities.task', 'activities.expense', 'activities.contact'); + } + + return $this->itemResponse($client); } /** diff --git a/app/Models/Client.php b/app/Models/Client.php index e39bcd4f21b7..7f890f4cdddb 100644 --- a/app/Models/Client.php +++ b/app/Models/Client.php @@ -252,6 +252,14 @@ class Client extends EntityModel return $this->hasMany('App\Models\Expense', 'client_id', 'id')->withTrashed(); } + /** + * @return mixed + */ + public function activities() + { + return $this->hasMany('App\Models\Activity', 'client_id', 'id')->orderBy('id', 'desc'); + } + /** * @param $data * @param bool $isPrimary diff --git a/app/Ninja/Transformers/ClientTransformer.php b/app/Ninja/Transformers/ClientTransformer.php index 74504b63918c..70fcd2ab1cf2 100644 --- a/app/Ninja/Transformers/ClientTransformer.php +++ b/app/Ninja/Transformers/ClientTransformer.php @@ -3,6 +3,8 @@ namespace App\Ninja\Transformers; use App\Models\Client; +use App\Models\Activity; +use App\Ninja\Transformers\ActivityTransformer; /** * @SWG\Definition(definition="Client", @SWG\Xml(name="Client")) @@ -58,8 +60,21 @@ class ClientTransformer extends EntityTransformer protected $availableIncludes = [ 'invoices', 'credits', + 'activities', ]; + /** + * @param Client $client + * + * @return \League\Fractal\Resource\Collection + */ + public function includeActivities(Client $client) + { + $transformer = new ActivityTransformer($this->account, $this->serializer); + + return $this->includeCollection($client->activities, $transformer, ENTITY_ACTIVITY); + } + /** * @param Client $client * diff --git a/routes/api.php b/routes/api.php index d75b01b0a9da..3c675c1767c4 100644 --- a/routes/api.php +++ b/routes/api.php @@ -10,7 +10,6 @@ Route::put('accounts', 'AccountApiController@update'); Route::post('refresh', 'AccountApiController@refresh'); Route::resource('clients', 'ClientApiController'); -Route::get('client_activity/{client_id}', 'ClientApiController@activity'); Route::resource('contacts', 'ContactApiController'); Route::get('quotes', 'QuoteApiController@index'); Route::get('download/{invoice_id}', 'InvoiceApiController@download');