diff --git a/app/Http/Controllers/ActivityController.php b/app/Http/Controllers/ActivityController.php new file mode 100644 index 000000000..ca24f947b --- /dev/null +++ b/app/Http/Controllers/ActivityController.php @@ -0,0 +1,47 @@ +user()->company()->id) + ->orderBy('created_at', 'DESC') + ->take(50); + + return $this->listResponse($activities); + + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/BaseController.php b/app/Http/Controllers/BaseController.php index 6eeaa13e1..1b448f55c 100644 --- a/app/Http/Controllers/BaseController.php +++ b/app/Http/Controllers/BaseController.php @@ -11,12 +11,13 @@ namespace App\Http\Controllers; +use App\Models\User; use App\Transformers\ArraySerializer; use App\Transformers\EntityTransformer; use App\Utils\Statics; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Request as Input; use Illuminate\Support\Facades\Log; +use Illuminate\Support\Facades\Request as Input; use League\Fractal\Manager; use League\Fractal\Pagination\IlluminatePaginatorAdapter; use League\Fractal\Resource\Collection; @@ -145,6 +146,16 @@ class BaseController extends Controller $query->with($includes); + + if (auth()->user()->cannot('view_'.$this->entity_type)) + { + if ($this->entity_type == User::class) { + $query->where('id', '=', auth()->user()->id); + } else { + $query->where('user_id', '=', auth()->user()->id); + } + } + $data = $this->createCollection($query, $transformer, $this->entity_type); return $this->response($data); diff --git a/app/Http/Requests/Activity/ShowActivityRequest.php b/app/Http/Requests/Activity/ShowActivityRequest.php new file mode 100644 index 000000000..525be51ac --- /dev/null +++ b/app/Http/Requests/Activity/ShowActivityRequest.php @@ -0,0 +1,30 @@ +user()->can('view', Activity::class); + } + +} \ No newline at end of file diff --git a/app/Models/Activity.php b/app/Models/Activity.php index 614bf7df5..b90a89576 100644 --- a/app/Models/Activity.php +++ b/app/Models/Activity.php @@ -130,4 +130,8 @@ class Activity extends StaticModel return $this->belongsTo(Expense::class)->withTrashed(); } + public function company() + { + return $this->belongsTo(Company::class)->withTrashed(); + } } diff --git a/app/Models/StaticModel.php b/app/Models/StaticModel.php index e3784fca6..6eb46c56f 100644 --- a/app/Models/StaticModel.php +++ b/app/Models/StaticModel.php @@ -22,6 +22,8 @@ class StaticModel extends Model 'deleted_at' => 'timestamp', ]; + protected $dateFormat = 'Y-m-d H:i:s.u'; + public function getIdAttribute() { return (string)$this->attributes['id']; diff --git a/app/Policies/ActivityPolicy.php b/app/Policies/ActivityPolicy.php new file mode 100644 index 000000000..b535a76d9 --- /dev/null +++ b/app/Policies/ActivityPolicy.php @@ -0,0 +1,24 @@ + ActivityPolicy::class, Client::class => ClientPolicy::class, Company::class => CompanyPolicy::class, Product::class => ProductPolicy::class, diff --git a/app/Transformers/ActivityTransformer.php b/app/Transformers/ActivityTransformer.php new file mode 100644 index 000000000..ea72b7528 --- /dev/null +++ b/app/Transformers/ActivityTransformer.php @@ -0,0 +1,46 @@ + (string) $this->encodePrimaryKey($activity->id), + 'activity_type_id' => (string) $activity->activity_type_id, + 'client_id' => $activity->client ? (string) $activity->client->id : '', + 'company_id' => $activity->company ? (string) $activity->company->id : '', + 'user_id' => (string) $activity->user_id, + 'invoice_id' => $activity->invoice ? (string) $activity->invoice->id : '', + 'payment_id' => $activity->payment ? (string) $activity->payment->id : '', + 'credit_id' => $activity->credit ? (string) $activity->credit->id : '', + 'updated_at' => $activity->updated_at, + 'expense_id' => $activity->expense_id ? (string) $activity->expense->id : '', + 'is_system' => (bool) $activity->is_system, + 'contact_id' => $activity->contact_id ? (string) $activity->contact->id : '', + 'task_id' => $activity->task_id ? (string) $activity->task->id : '', + 'notes' => $activity->notes ? (string) $activity->notes : '', + 'ip' => (string) $activity->ip, + + ]; + } +} diff --git a/routes/api.php b/routes/api.php index 87d078e10..f1f95af80 100644 --- a/routes/api.php +++ b/routes/api.php @@ -34,6 +34,8 @@ Route::group(['api_secret_check','domain_db'], function () { Route::group(['middleware' => ['api_db','api_secret_check','token_auth'], 'prefix' =>'api/v1', 'as' => 'api.'], function () { + Route::resource('activities', 'ActivityController'); // name = (clients. index / create / show / update / destroy / edit + Route::resource('clients', 'ClientController'); // name = (clients. index / create / show / update / destroy / edit Route::post('clients/bulk', 'ClientController@bulk')->name('clients.bulk');