Ngiler SH3LL 360
Home
Information
Create File
Create Folder
:
/
home
/
tbf
/
membrubackend
/
app
/
Repositories
/
Information Server
MySQL :
OFF
Perl :
OFF
CURL :
ON
WGET :
OFF
PKEXEC :
OFF
Directive
Local Value
IP Address
89.40.16.97
System
Linux server.atelieruldeit.ro 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64
User
tbf
PHP Version
7.3.33
Software
Apache
Doc root
Writable
close
Edit File :
InvoiceRepository.php
| Size :
5.60
KB
Copy
<?php namespace App\Repositories; use App\Models\Invoice; use App\Models\Instance; use Carbon\Carbon; /** * Invoice repository * * Implements search and create helper functions for Invoice entity */ class InvoiceRepository extends Invoice { /** * Find invoice based on transaction id * * @param string transactionId The braintree transaction id * * @return Invoice || Null */ public static function findByTransactionId($transactionId) { return Invoice::where([ 'stripe_payment_id' => $transactionId ])->first(); } /** * Find invoice based on instance id * * @param int $instanceId * * @return Invoice || Null */ public static function findByInstanceId($instanceId) { return Invoice::where(['instance_id' => $instanceId])->first(); } /** * Find all invoices based on instance id * * @param int $instanceId * * @return array */ public static function findAllByInstanceId($instanceId) { return Invoice::where([ 'instance_id' => $instanceId ])->get(); } /** * Find all invoices based on instance id and status * * @param int $instanceId * @param string $status * * @return array */ public static function findAllByInstanceIdAndStatus($instanceId, $status) { return Invoice::where([ 'instance_id' => $instanceId, 'status' => $status ])->get(); } /** * Generates an invoice based on requested parameters * * @param int $instanceId * @param string $amount * @param string $status * * @return Invoice */ public static function generateInvoice($instanceId, $amount, $status, $stripe_payment_id, $currency, $email) { $instance = Instance::find($instanceId); $user = $instance->users->first(); $full_name = $user->first_name." ".$user->last_name; $invoice = new Invoice; $invoice->instance_id = $instanceId; $invoice->amount = $amount; $invoice->status = $status; $invoice->stripe_payment_id = $stripe_payment_id; // Set the instance details for the current invoice $invoice->currency = $currency; $invoice->email = $email; $invoice->bank_name = $instance->bank_name; $invoice->nr_reg = $instance->reg_no; $invoice->address = $instance->address; $invoice->company_name = $instance->company_name; $invoice->cui = $instance->cui; $invoice->cnp = $instance->cnp; $invoice->billing_name = $instance->name ? $instance->name : $full_name; // Generate automaticly the number and series $invoice->number = self::generateNumber($currency); $invoice->series = self::generateSeries($currency); $invoice->save(); return $invoice; } /** * Generates an proforma based on requested parameters * * @param int $instanceId * @param string $amount * @param string $status * * @return Invoice */ public static function generateProforma($instanceId, $amount, $status, $stripe_payment_id, $currency, $email) { $instance = Instance::find($instanceId); $user = $instance->users->first(); $full_name = $user->first_name." ".$user->last_name; $invoice = new Invoice; $invoice->instance_id = $instanceId; $invoice->amount = $amount; $invoice->status = 'unpaid'; $invoice->stripe_payment_id = "-"; // Set the instance details for the current invoice $invoice->currency = $currency; $invoice->sent_to_client = true; $invoice->email = $email; $invoice->bank_name = $instance->bank_name; $invoice->nr_reg = $instance->reg_no; $invoice->address = $instance->address; $invoice->company_name = $instance->company_name; $invoice->cui = $instance->cui; $invoice->cnp = $instance->cnp; $invoice->billing_name = $instance->name ? $instance->name : $full_name; // Generate automaticly the number and series $invoice->number = (Invoice::where('series','SM')->count() > 0 ? Invoice::where('series','SM')->max('number')+1 : 1010); $invoice->series = "SM"; $invoice->save(); $filename = $instanceId.Carbon::parse($invoice->created_at)->timestamp.'.pdf'; $pdf = \PDF::loadView('invoices.proforma', compact('invoice'))->save(public_path('proforma/'.$filename))->stream(); return [ 'public_path' => public_path('proforma/'.$filename), 'url' => config('app.url').'/proforma/'.$filename ]; } /** * Generates an invoice number * * @todo Add logic for number */ public static function generateNumber($currency) { $number = 0; if($currency == 'RON'){ $number = (Invoice::where('series','MB')->count() > 0 ? Invoice::where('series','MB')->max('number')+1 : 2325); }else{ $number = (Invoice::where('series','MB')->count() > 0 ? Invoice::where('series','MB')->max('number')+1 : 2325); } return $number; } /** * Generates an invoice serial number * * @todo Add logic for series */ public static function generateSeries($currency) { $name = ""; if($currency == 'RON'){ $name = "MB"; }else{ $name = "MB"; } return $name; } /** * Returns the current exchange value from api * * @return string */ public static function getExchangeValue($valuta) { $exchangeXmlLink = "http://www.bnro.ro/nbrfxrates.xml"; /** * Multiple agents judy_version()t to be sure that we are not banned */ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $exchangeXmlLink); curl_setopt($ch, CURLOPT_FAILONERROR,1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_TIMEOUT, 15); $data = curl_exec($ch); // Preia continutul returnat intrun sir curl_close($ch); // Inchide resursa curl $regex = '/<Rate currency="' . $valuta . '">([0-9.,]+)<\/Rate>/'; if (preg_match($regex, $data, $out)) { return $out[1]; }else{ return 4.6; } } }
Back