whereAccountId(Auth::user()->account_id); } public function account() { return $this->belongsTo('Account'); } private static function getBlank($entity = false) { $activity = new Activity; if (Auth::check()) { $activity->user_id = Auth::user()->id; $activity->account_id = Auth::user()->account_id; } else if ($entity) { $activity->user_id = $entity->user_id; $activity->account_id = $entity->account_id; } else { Utils::fatalError(); } return $activity; } public static function createClient($client) { $activity = Activity::getBlank(); $activity->client_id = $client->id; $activity->activity_type_id = ACTIVITY_TYPE_CREATE_CLIENT; $activity->message = Auth::user()->getFullName() . ' created client ' . link_to('clients/'.$client->public_id, $client->name); $activity->save(); } public static function archiveClient($client) { $activity = Activity::getBlank(); $activity->client_id = $client->id; $activity->activity_type_id = ACTIVITY_TYPE_ARCHIVE_CLIENT; $activity->message = Auth::user()->getFullName() . ' archived client ' . $client->name; $activity->balance = $client->balance; $activity->save(); } public static function createInvoice($invoice) { $userName = Auth::check() ? Auth::user()->getFullName() : 'System'; if ($invoice->is_recurring) { $message = $userName . ' created ' . link_to('invoices/'.$invoice->public_id, 'recuring invoice'); } else { $message = $userName . ' created invoice ' . link_to('invoices/'.$invoice->public_id, $invoice->invoice_number); } $activity = Activity::getBlank($invoice); $activity->invoice_id = $invoice->id; $activity->client_id = $invoice->client_id; $activity->currency_id = $invoice->currency_id; $activity->activity_type_id = ACTIVITY_TYPE_CREATE_INVOICE; $activity->message = $message; $activity->balance = $invoice->client->balance; $activity->save(); } public static function archiveInvoice($invoice) { $activity = Activity::getBlank(); $activity->invoice_id = $invoice->id; $activity->client_id = $invoice->client_id; $activity->activity_type_id = ACTIVITY_TYPE_ARCHIVE_INVOICE; $activity->message = Auth::user()->getFullName() . ' archived invoice ' . $invoice->invoice_number; $activity->balance = $invoice->client->balance; $activity->save(); } public static function emailInvoice($invitation) { $adjustment = 0; $client = $invitation->invoice->client; if (!$invitation->invoice->isSent()) { $adjustment = $invitation->invoice->amount; $client->balance = $client->balance + $adjustment; $client->save(); } $userName = Auth::check() ? Auth::user()->getFullName() : 'System'; $activity = Activity::getBlank($invitation); $activity->client_id = $invitation->invoice->client_id; $activity->invoice_id = $invitation->invoice_id; $activity->contact_id = $invitation->contact_id; $activity->activity_type_id = ACTIVITY_TYPE_EMAIL_INVOICE; $activity->message = $userName . ' emailed invoice ' . link_to('invoices/'.$invitation->invoice->public_id, $invitation->invoice->invoice_number) . ' to ' . $invitation->contact->getDisplayName(); $activity->balance = $client->balance; $activity->adjustment = $adjustment; $activity->save(); } public static function updateInvoice($invoice) { if ($invoice->invoice_status_id < INVOICE_STATUS_SENT) { return; } $diff = floatval($invoice->amount) - floatval($invoice->getOriginal('amount')); if ($diff == 0) { return; } $backupInvoice = Invoice::with('invoice_items', 'client.account', 'client.contacts')->find($invoice->id); //dd($backupInvoice->hidePrivateFields()->toJSON()); $client = $invoice->client; $client->balance = $client->balance + $diff; $client->save(); $activity = Activity::getBlank($invoice); $activity->client_id = $invoice->client_id; $activity->invoice_id = $invoice->id; $activity->activity_type_id = ACTIVITY_TYPE_UPDATE_INVOICE; $activity->message = Auth::user()->getFullName() . ' updated invoice ' . link_to('invoices/'.$invoice->public_id, $invoice->invoice_number); $activity->balance = $client->balance; $activity->adjustment = $diff; $activity->json_backup = $backupInvoice->hidePrivateFields()->toJSON(); $activity->save(); } public static function createPayment($payment) { $client = $payment->client; $client->balance = $client->balance - $payment->amount; $client->save(); if (Auth::check()) { $activity = Activity::getBlank(); $activity->message = Auth::user()->getFullName() . ' created payment ' . $payment->transaction_reference; } else { $activity = new Activity; $activity->contact_id = $payment->contact_id; //$activity->message = $contact->getFullName() . ' created payment ' . $payment->transaction_reference; } $activity->payment_id = $payment->id; if ($payment->invoice_id) { $activity->invoice_id = $payment->invoice_id; $invoice = $payment->invoice; $invoice->balance = $invoice->balance - $payment->amount; $invoice->save(); } $activity->client_id = $payment->client_id; $activity->currency_id = $payment->currency_id; $activity->activity_type_id = ACTIVITY_TYPE_CREATE_PAYMENT; $activity->balance = $client->balance; $activity->adjustment = $payment->amount * -1; $activity->save(); } public static function createCredit($credit) { $client = $credit->client; $client->balance = $client->balance - $credit->amount; $client->save(); $activity = Activity::getBlank(); $activity->message = Auth::user()->getFullName() . ' created credit'; $activity->credit_id = $credit->id; $activity->client_id = $credit->client_id; if ($credit->invoice_id) { $activity->invoice_id = $credit->invoice_id; $invoice = $credit->invoice; $invoice->balance = $invoice->amount - $credit->amount; $invoice->save(); } $activity->currency_id = $credit->currency_id; $activity->activity_type_id = ACTIVITY_TYPE_CREATE_CREDIT; $activity->balance = $client->balance; $activity->adjustment = $credit->amount * -1; $activity->save(); } public static function archivePayment($payment) { $activity = Activity::getBlank(); $activity->invoice_id = $invoice->id; $activity->client_id = $invoice->client_id; $activity->activity_type_id = ACTIVITY_TYPE_ARCHIVE_PAYMENT; $activity->message = Auth::user()->getFullName() . ' archived payment'; $activity->balance = $payment->client->balance; $activity->save(); } public static function viewInvoice($invitation) { $invoice = $invitation->invoice; if (!$invoice->isViewed()) { $invoice->invoice_status_id = INVOICE_STATUS_VIEWED; $invoice->save(); } $now = Carbon::now()->toDateTimeString(); $invitation->viewed_date = $now; $invitation->save(); $client = $invoice->client; $client->last_login = $now; $client->save(); $activity = new Activity; $activity->user_id = $invitation->user_id; $activity->account_id = $invitation->user->account_id; $activity->client_id = $invitation->invoice->client_id; $activity->invitation_id = $invitation->id; $activity->contact_id = $invitation->contact_id; $activity->invoice_id = $invitation->invoice_id; $activity->activity_type_id = ACTIVITY_TYPE_VIEW_INVOICE; $activity->message = $invitation->contact->getFullName() . ' viewed invoice ' . link_to('invoices/'.$invitation->invoice->public_id, $invitation->invoice->invoice_number); $activity->balance = $invitation->invoice->client->balance; $activity->save(); } }