protected function getDatatableActions($entityType)
 {
     return [[trans('texts.apply_credit'), function ($model) {
         return URL::to("payments/create/{$model->client_public_id}") . '?paymentTypeId=1';
     }, function ($model) {
         return Payment::canCreate();
     }]];
 }
 /**
  * Display the specified resource.
  *
  * @param  int      $id
  * @return Response
  */
 public function show($publicId)
 {
     $client = Client::withTrashed()->scope($publicId)->with('contacts', 'size', 'industry')->firstOrFail();
     if (!$this->checkViewPermission($client, $response)) {
         return $response;
     }
     Utils::trackViewed($client->getDisplayName(), ENTITY_CLIENT);
     $actionLinks = [];
     if (Task::canCreate()) {
         $actionLinks[] = ['label' => trans('texts.new_task'), 'url' => '/tasks/create/' . $client->public_id];
     }
     if (Utils::isPro() && Invoice::canCreate()) {
         $actionLinks[] = ['label' => trans('texts.new_quote'), 'url' => '/quotes/create/' . $client->public_id];
     }
     if (!empty($actionLinks)) {
         $actionLinks[] = \DropdownButton::DIVIDER;
     }
     if (Payment::canCreate()) {
         $actionLinks[] = ['label' => trans('texts.enter_payment'), 'url' => '/payments/create/' . $client->public_id];
     }
     if (Credit::canCreate()) {
         $actionLinks[] = ['label' => trans('texts.enter_credit'), 'url' => '/credits/create/' . $client->public_id];
     }
     if (Expense::canCreate()) {
         $actionLinks[] = ['label' => trans('texts.enter_expense'), 'url' => '/expenses/create/0/' . $client->public_id];
     }
     $data = array('actionLinks' => $actionLinks, 'showBreadcrumbs' => false, 'client' => $client, 'credit' => $client->getTotalCredit(), 'title' => trans('texts.view_client'), 'hasRecurringInvoices' => Invoice::scope()->where('is_recurring', '=', true)->whereClientId($client->id)->count() > 0, 'hasQuotes' => Invoice::scope()->where('is_quote', '=', true)->whereClientId($client->id)->count() > 0, 'hasTasks' => Task::scope()->whereClientId($client->id)->count() > 0, 'gatewayLink' => $client->getGatewayLink());
     return View::make('clients.show', $data);
 }
 protected function getDatatableActions($entityType)
 {
     return [[trans("texts.edit_{$entityType}"), function ($model) use($entityType) {
         return URL::to("{$entityType}s/{$model->public_id}/edit");
     }, function ($model) {
         return Invoice::canEditItem($model);
     }], [trans("texts.clone_{$entityType}"), function ($model) use($entityType) {
         return URL::to("{$entityType}s/{$model->public_id}/clone");
     }, function ($model) {
         return Invoice::canCreate();
     }], [trans("texts.view_history"), function ($model) use($entityType) {
         return URL::to("{$entityType}s/{$entityType}_history/{$model->public_id}");
     }], ['--divider--', function () {
         return false;
     }, function ($model) {
         return Invoice::canEditItem($model) || Payment::canCreate();
     }], [trans("texts.mark_sent"), function ($model) {
         return "javascript:markEntity({$model->public_id})";
     }, function ($model) {
         return $model->invoice_status_id < INVOICE_STATUS_SENT && Invoice::canEditItem($model);
     }], [trans('texts.enter_payment'), function ($model) {
         return URL::to("payments/create/{$model->client_public_id}/{$model->public_id}");
     }, function ($model) use($entityType) {
         return $entityType == ENTITY_INVOICE && $model->balance > 0 && Payment::canCreate();
     }], [trans("texts.view_quote"), function ($model) {
         return URL::to("quotes/{$model->quote_id}/edit");
     }, function ($model) use($entityType) {
         return $entityType == ENTITY_INVOICE && $model->quote_id && Invoice::canEditItem($model);
     }], [trans("texts.view_invoice"), function ($model) {
         return URL::to("invoices/{$model->quote_invoice_id}/edit");
     }, function ($model) use($entityType) {
         return $entityType == ENTITY_QUOTE && $model->quote_invoice_id && Invoice::canEditItem($model);
     }], [trans("texts.convert_to_invoice"), function ($model) {
         return "javascript:convertEntity({$model->public_id})";
     }, function ($model) use($entityType) {
         return $entityType == ENTITY_QUOTE && !$model->quote_invoice_id && Invoice::canEditItem($model);
     }]];
 }
 protected function getDatatableActions($entityType)
 {
     return [[trans('texts.edit_client'), function ($model) {
         return URL::to("clients/{$model->public_id}/edit");
     }, function ($model) {
         return Client::canEditItem($model);
     }], ['--divider--', function () {
         return false;
     }, function ($model) {
         return Client::canEditItem($model) && (Task::canCreate() || Invoice::canCreate());
     }], [trans('texts.new_task'), function ($model) {
         return URL::to("tasks/create/{$model->public_id}");
     }, function ($model) {
         return Task::canCreate();
     }], [trans('texts.new_invoice'), function ($model) {
         return URL::to("invoices/create/{$model->public_id}");
     }, function ($model) {
         return Invoice::canCreate();
     }], [trans('texts.new_quote'), function ($model) {
         return URL::to("quotes/create/{$model->public_id}");
     }, function ($model) {
         return Auth::user()->isPro() && Invoice::canCreate();
     }], ['--divider--', function () {
         return false;
     }, function ($model) {
         return (Task::canCreate() || Invoice::canCreate()) && (Payment::canCreate() || Credit::canCreate() || Expense::canCreate());
     }], [trans('texts.enter_payment'), function ($model) {
         return URL::to("payments/create/{$model->public_id}");
     }, function ($model) {
         return Payment::canCreate();
     }], [trans('texts.enter_credit'), function ($model) {
         return URL::to("credits/create/{$model->public_id}");
     }, function ($model) {
         return Credit::canCreate();
     }], [trans('texts.enter_expense'), function ($model) {
         return URL::to("expenses/create/0/{$model->public_id}");
     }, function ($model) {
         return Expense::canCreate();
     }]];
 }