diff --git a/app/DataMapper/Transactions/MarkPaidTransaction.php b/app/DataMapper/Transactions/MarkPaidTransaction.php index 8e97cca00808..a82522304357 100644 --- a/app/DataMapper/Transactions/MarkPaidTransaction.php +++ b/app/DataMapper/Transactions/MarkPaidTransaction.php @@ -11,12 +11,20 @@ namespace App\DataMapper\Transactions; +use App\Models\Client; +use App\Models\Credit; +use App\Models\Invoice; +use App\Models\Payment; +use App\Models\TransactionEvent; + /** * MarkPaidTransaction. */ -class MarkPaidTransaction +class MarkPaidTransaction implements TransactionInterface { + public $event_id = TransactionEvent::INVOICE_MARK_PAID; + public array $model = [ 'client_id', 'invoice_id', @@ -44,6 +52,41 @@ class MarkPaidTransaction 'credit_status', ]; + public function transform(array $data) :array + { + $invoice = $data['invoice']; + $payment = $data['payment']; + $client = $data['client']; + $credit = $data['credit']; + $payment_request = $data['payment_request']; + $metadata = $data['metadata']; + return [ + 'event_id' => $this->event_id, + 'client_id' => $client?->id, + 'invoice_id' => $invoice?->id, + 'payment_id' => $payment?->id, + 'credit_id' => $credit?->id, + 'client_balance' => $client?->balance, + 'client_paid_to_date' => $client?->paid_to_date, + 'client_credit_balance' => $client?->credit_balance, + 'invoice_balance' => $invoice?->balance, + 'invoice_amount' => $invoice?->amount, + 'invoice_partial' => $invoice?->partial, + 'invoice_paid_to_date' => $invoice?->paid_to_date, + 'invoice_status' => $invoice?->status_id, + 'payment_amount' => $payment?->amount, + 'payment_applied' => $payment?->applied, + 'payment_refunded' => $payment?->refunded, + 'payment_status' => $payment?->status_id, + 'paymentables' => $payment?->paymentables, + 'payment_request' => $payment_request, + 'metadata' => $metadata, + 'credit_balance' => $credit?->balance, + 'credit_amount' => $credit?->amount, + 'credit_status' => $credit?->status_id, + 'timestamp' => time(), + ]; + } } diff --git a/app/DataMapper/Transactions/TransactionInterface.php b/app/DataMapper/Transactions/TransactionInterface.php new file mode 100644 index 000000000000..e8267a4ae8ac --- /dev/null +++ b/app/DataMapper/Transactions/TransactionInterface.php @@ -0,0 +1,17 @@ +replace($input); } diff --git a/app/Http/Requests/Request.php b/app/Http/Requests/Request.php index 74764d51b136..5329888672ca 100644 --- a/app/Http/Requests/Request.php +++ b/app/Http/Requests/Request.php @@ -123,6 +123,17 @@ class Request extends FormRequest } } + if(request()->has('file')) + { + + request()->merge(['documents' => request()->file('file')]); + + // $requestFile = request()->files->get('file'); + + // request()->files->add(['documents' => $requestFile]); + + } + if (isset($input['invitations'])) { foreach ($input['invitations'] as $key => $value) { if (isset($input['invitations'][$key]['id']) && is_numeric($input['invitations'][$key]['id'])) { diff --git a/app/Jobs/Ninja/TransactionLog.php b/app/Jobs/Ninja/TransactionLog.php index 15269cc53989..a304cbc54f15 100644 --- a/app/Jobs/Ninja/TransactionLog.php +++ b/app/Jobs/Ninja/TransactionLog.php @@ -11,6 +11,7 @@ namespace App\Jobs\Ninja; +use App\DataMapper\Transactions\MarkPaidTransaction; use App\Libraries\MultiDB; use App\Models\TransactionEvent; use App\Utils\Ninja; @@ -29,14 +30,35 @@ class TransactionLog implements ShouldQueue private string $db; + private array $data; + + private $event; + + private $event_transformer; + + private array $transformer_array = [ + TransactionEvent::INVOICE_MARK_PAID => MarkPaidTransaction::class, + TransactionEvent::INVOICE_UPDATED => MarkPaidTransaction::class, + TransactionEvent::INVOICE_DELETED => MarkPaidTransaction::class, + TransactionEvent::INVOICE_PAYMENT_APPLIED => MarkPaidTransaction::class, + TransactionEvent::INVOICE_CANCELLED => MarkPaidTransaction::class, + TransactionEvent::INVOICE_FEE_APPLIED => MarkPaidTransaction::class, + TransactionEvent::PAYMENT_MADE => MarkPaidTransaction::class, + TransactionEvent::PAYMENT_APPLIED => MarkPaidTransaction::class, + TransactionEvent::PAYMENT_REFUND => MarkPaidTransaction::class, + TransactionEvent::PAYMENT_FAILED => MarkPaidTransaction::class, + ]; + /** * Create a new job instance. * * @return void */ - public function __construct() + public function __construct($event, $data, $db) { $this->db = $db; + $this->event = $event; + $this->data = $data; } @@ -50,7 +72,21 @@ class TransactionLog implements ShouldQueue if(!Ninja::isHosted()) return; - + $this->setTransformer(); + + $this->payload = $this->event_transformer->transform($this->data); + + $this->persist(); + } + + + private function setTransformer() + { + $class = $this->transformer_array[$this->event]; + + $this->event_transformer = new $class(); + + return $this; } diff --git a/app/Models/TransactionEvent.php b/app/Models/TransactionEvent.php index 2ef5a971d8f1..15aee6827e99 100644 --- a/app/Models/TransactionEvent.php +++ b/app/Models/TransactionEvent.php @@ -27,4 +27,17 @@ class TransactionEvent extends StaticModel 'paymentables' => 'array', ]; + public const INVOICE_MARK_PAID = 1; + public const INVOICE_UPDATED = 2; + public const INVOICE_DELETED = 3; + public const INVOICE_PAYMENT_APPLIED = 4; + public const INVOICE_CANCELLED = 5; + public const INVOICE_FEE_APPLIED = 6; + + public const PAYMENT_MADE = 100; + public const PAYMENT_APPLIED = 101; + public const PAYMENT_REFUND = 102; + public const PAYMENT_FAILED = 103; + + }