mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-24 02:14:21 -04:00
Refactor for entity paths
This commit is contained in:
parent
edf2dfcc80
commit
afdfddd7e9
@ -164,8 +164,9 @@ class InvoiceController extends Controller
|
||||
|
||||
//if only 1 pdf, output to buffer for download
|
||||
if ($invoices->count() == 1) {
|
||||
|
||||
$file = $invoices->first()->pdf_file_path();
|
||||
$invoice = $invoices->first();
|
||||
$invitation = $invoice->invitations->first();
|
||||
$file = $invoice->pdf_file_path($invitation);
|
||||
return response()->download($file, basename($file), ['Cache-Control:' => 'no-cache'])->deleteFileAfterSend(true);;
|
||||
|
||||
}
|
||||
|
@ -114,16 +114,16 @@ class CreateEntityPdf implements ShouldQueue
|
||||
$entity_design_id = '';
|
||||
|
||||
if ($this->entity instanceof Invoice) {
|
||||
$path = $this->entity->client->invoice_filepath();
|
||||
$path = $this->entity->client->invoice_filepath($this->invitation);
|
||||
$entity_design_id = 'invoice_design_id';
|
||||
} elseif ($this->entity instanceof Quote) {
|
||||
$path = $this->entity->client->quote_filepath();
|
||||
$path = $this->entity->client->quote_filepath($this->invitation);
|
||||
$entity_design_id = 'quote_design_id';
|
||||
} elseif ($this->entity instanceof Credit) {
|
||||
$path = $this->entity->client->credit_filepath();
|
||||
$path = $this->entity->client->credit_filepath($this->invitation);
|
||||
$entity_design_id = 'credit_design_id';
|
||||
} elseif ($this->entity instanceof RecurringInvoice) {
|
||||
$path = $this->entity->client->recurring_invoice_filepath();
|
||||
$path = $this->entity->client->recurring_invoice_filepath($this->invitation);
|
||||
$entity_design_id = 'invoice_design_id';
|
||||
}
|
||||
|
||||
|
@ -78,13 +78,16 @@ class ZipInvoices implements ShouldQueue
|
||||
// create a new zipstream object
|
||||
$file_name = date('Y-m-d').'_'.str_replace(' ', '_', trans('texts.invoices')).'.zip';
|
||||
|
||||
$path = $this->invoices->first()->client->invoice_filepath();
|
||||
$invoice = $this->invoices->first();
|
||||
$invitation = $invoice->invitations->first();
|
||||
|
||||
$path = $invoice->client->invoice_filepath($invitation);
|
||||
|
||||
$zip = new ZipStream($file_name, $options);
|
||||
|
||||
foreach ($this->invoices as $invoice) {
|
||||
//$zip->addFileFromPath(basename($invoice->pdf_file_path()), TempFile::path($invoice->pdf_file_path()));
|
||||
$zip->addFileFromPath(basename($invoice->pdf_file_path()), $invoice->pdf_file_path());
|
||||
$zip->addFileFromPath(basename($invoice->pdf_file_path($invitation)), $invoice->pdf_file_path());
|
||||
}
|
||||
|
||||
$zip->finish();
|
||||
|
@ -101,9 +101,9 @@ class CreditEmailEngine extends BaseEmailEngine
|
||||
if ($this->client->getSetting('pdf_email_attachment') !== false && $this->credit->company->account->hasFeature(Account::FEATURE_PDF_ATTACHMENT)) {
|
||||
|
||||
if(Ninja::isHosted())
|
||||
$this->setAttachments([$this->credit->pdf_file_path(null, 'url', true)]);
|
||||
$this->setAttachments([$this->credit->pdf_file_path($this->invitation, 'url', true)]);
|
||||
else
|
||||
$this->setAttachments([$this->credit->pdf_file_path()]);
|
||||
$this->setAttachments([$this->credit->pdf_file_path($this->invitation)]);
|
||||
|
||||
}
|
||||
|
||||
|
@ -112,9 +112,9 @@ class InvoiceEmailEngine extends BaseEmailEngine
|
||||
if ($this->client->getSetting('pdf_email_attachment') !== false && $this->invoice->company->account->hasFeature(Account::FEATURE_PDF_ATTACHMENT)) {
|
||||
|
||||
if(Ninja::isHosted())
|
||||
$this->setAttachments([$this->invoice->pdf_file_path(null, 'url', true)]);
|
||||
$this->setAttachments([$this->invoice->pdf_file_path($this->invitation, 'url', true)]);
|
||||
else
|
||||
$this->setAttachments([$this->invoice->pdf_file_path()]);
|
||||
$this->setAttachments([$this->invoice->pdf_file_path($this->invitation)]);
|
||||
|
||||
// $this->setAttachments(['path' => $this->invoice->pdf_file_path(), 'name' => basename($this->invoice->pdf_file_path())]);
|
||||
|
||||
|
@ -77,7 +77,7 @@ class PaymentEmailEngine extends BaseEmailEngine
|
||||
|
||||
$this->payment->invoices->each(function ($invoice){
|
||||
|
||||
$this->setAttachments([$invoice->pdf_file_path()]);
|
||||
$this->setAttachments([$invoice->pdf_file_path($invoice->invitations->first())]);
|
||||
|
||||
});
|
||||
|
||||
|
@ -103,9 +103,9 @@ class QuoteEmailEngine extends BaseEmailEngine
|
||||
if ($this->client->getSetting('pdf_email_attachment') !== false && $this->quote->company->account->hasFeature(Account::FEATURE_PDF_ATTACHMENT)) {
|
||||
|
||||
if(Ninja::isHosted())
|
||||
$this->setAttachments([$this->quote->pdf_file_path(null, 'url', true)]);
|
||||
$this->setAttachments([$this->quote->pdf_file_path($this->invitation, 'url', true)]);
|
||||
else
|
||||
$this->setAttachments([$this->quote->pdf_file_path()]);
|
||||
$this->setAttachments([$this->quote->pdf_file_path($this->invitation)]);
|
||||
|
||||
}
|
||||
|
||||
|
@ -41,9 +41,6 @@ class MigrationCompleted extends Mailable
|
||||
$result = $this->from(config('mail.from.address'), config('mail.from.name'))
|
||||
->view('email.import.completed', $data);
|
||||
|
||||
// if($this->company->invoices->count() >=1)
|
||||
// $result->attach($this->company->invoices->first()->pdf_file_path());
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
@ -638,24 +638,28 @@ class Client extends BaseModel implements HasLocalePreference
|
||||
})->first()->locale;
|
||||
}
|
||||
|
||||
public function invoice_filepath()
|
||||
{
|
||||
return $this->company->company_key.'/'.$this->client_hash.'/invoices/';
|
||||
public function invoice_filepath($invitation)
|
||||
{
|
||||
$contact_key = $invitation->contact->contact_key;
|
||||
return $this->company->company_key.'/'.$this->client_hash.'/'.$contact_key.'/invoices/';
|
||||
}
|
||||
|
||||
public function quote_filepath()
|
||||
public function quote_filepath($invitation)
|
||||
{
|
||||
return $this->company->company_key.'/'.$this->client_hash.'/quotes/';
|
||||
$contact_key = $invitation->contact->contact_key;
|
||||
return $this->company->company_key.'/'.$this->client_hash.'/'.$contact_key.'/quotes/';
|
||||
}
|
||||
|
||||
public function credit_filepath()
|
||||
public function credit_filepath($invitation)
|
||||
{
|
||||
return $this->company->company_key.'/'.$this->client_hash.'/credits/';
|
||||
$contact_key = $invitation->contact->contact_key;
|
||||
return $this->company->company_key.'/'.$this->client_hash.'/'.$contact_key.'/credits/';
|
||||
}
|
||||
|
||||
public function recurring_invoice_filepath()
|
||||
public function recurring_invoice_filepath($invitation)
|
||||
{
|
||||
return $this->company->company_key.'/'.$this->client_hash.'/recurring_invoices/';
|
||||
$contact_key = $invitation->contact->contact_key;
|
||||
return $this->company->company_key.'/'.$this->client_hash.'/'.$contact_key.'/recurring_invoices/';
|
||||
}
|
||||
|
||||
public function company_filepath()
|
||||
|
@ -267,7 +267,7 @@ class Credit extends BaseModel
|
||||
if(!$invitation)
|
||||
throw new \Exception('Hard fail, could not create an invitation - is there a valid contact?');
|
||||
|
||||
$file_path = $this->client->credit_filepath().$this->numberFormatter().'.pdf';
|
||||
$file_path = $this->client->credit_filepath($invitation).$this->numberFormatter().'.pdf';
|
||||
|
||||
if(Ninja::isHosted() && $portal && Storage::disk(config('filesystems.default'))->exists($file_path)){
|
||||
return Storage::disk(config('filesystems.default'))->{$type}($file_path);
|
||||
|
@ -126,9 +126,9 @@ class CreditInvitation extends BaseModel
|
||||
|
||||
public function pdf_file_path()
|
||||
{
|
||||
$storage_path = Storage::url($this->credit->client->quote_filepath().$this->credit->numberFormatter().'.pdf');
|
||||
$storage_path = Storage::url($this->credit->client->quote_filepath($this).$this->credit->numberFormatter().'.pdf');
|
||||
|
||||
if (! Storage::exists($this->credit->client->credit_filepath().$this->credit->numberFormatter().'.pdf')) {
|
||||
if (! Storage::exists($this->credit->client->credit_filepath($this).$this->credit->numberFormatter().'.pdf')) {
|
||||
event(new CreditWasUpdated($this, $this->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null)));
|
||||
CreateEntityPdf::dispatchNow($this);
|
||||
}
|
||||
|
@ -409,7 +409,7 @@ class Invoice extends BaseModel
|
||||
if(!$invitation)
|
||||
throw new \Exception('Hard fail, could not create an invitation - is there a valid contact?');
|
||||
|
||||
$file_path = $this->client->invoice_filepath().$this->numberFormatter().'.pdf';
|
||||
$file_path = $this->client->invoice_filepath($invitation).$this->numberFormatter().'.pdf';
|
||||
|
||||
if(Ninja::isHosted() && $portal && Storage::disk(config('filesystems.default'))->exists($file_path)){
|
||||
return Storage::disk(config('filesystems.default'))->{$type}($file_path);
|
||||
|
@ -142,7 +142,7 @@ class InvoiceInvitation extends BaseModel
|
||||
{
|
||||
$storage_path = Storage::url($this->invoice->client->invoice_filepath().$this->invoice->numberFormatter().'.pdf');
|
||||
|
||||
if (! Storage::exists($this->invoice->client->invoice_filepath().$this->invoice->numberFormatter().'.pdf')) {
|
||||
if (! Storage::exists($this->invoice->client->invoice_filepath($this).$this->invoice->numberFormatter().'.pdf')) {
|
||||
event(new InvoiceWasUpdated($this->invoice, $this->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null)));
|
||||
CreateEntityPdf::dispatchNow($this);
|
||||
}
|
||||
|
@ -219,7 +219,7 @@ class Quote extends BaseModel
|
||||
if(!$invitation)
|
||||
throw new \Exception('Hard fail, could not create an invitation - is there a valid contact?');
|
||||
|
||||
$file_path = $this->client->quote_filepath().$this->numberFormatter().'.pdf';
|
||||
$file_path = $this->client->quote_filepath($invitation).$this->numberFormatter().'.pdf';
|
||||
|
||||
if(Ninja::isHosted() && $portal && Storage::disk(config('filesystems.default'))->exists($file_path)){
|
||||
return Storage::disk(config('filesystems.default'))->{$type}($file_path);
|
||||
|
@ -130,9 +130,9 @@ class QuoteInvitation extends BaseModel
|
||||
|
||||
public function pdf_file_path()
|
||||
{
|
||||
$storage_path = Storage::url($this->quote->client->quote_filepath().$this->quote->numberFormatter().'.pdf');
|
||||
$storage_path = Storage::url($this->quote->client->quote_filepath($this).$this->quote->numberFormatter().'.pdf');
|
||||
|
||||
if (! Storage::exists($this->quote->client->quote_filepath().$this->quote->numberFormatter().'.pdf')) {
|
||||
if (! Storage::exists($this->quote->client->quote_filepath($this).$this->quote->numberFormatter().'.pdf')) {
|
||||
event(new QuoteWasUpdated($this->quote, $this->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null)));
|
||||
CreateEntityPdf::dispatchNow($this);
|
||||
}
|
||||
|
@ -51,11 +51,6 @@ class InvoiceObserver
|
||||
if ($subscriptions) {
|
||||
WebhookHandler::dispatch(Webhook::EVENT_UPDATE_INVOICE, $invoice, $invoice->company);
|
||||
}
|
||||
|
||||
// if($invoice->isDirty('date') || $invoice->isDirty('due_date'))
|
||||
// $invoice->service()->setReminder()->save();
|
||||
|
||||
// UnlinkFile::dispatchNow(config('filesystems.default'), $invoice->client->invoice_filepath() . $invoice->numberFormatter().'.pdf');
|
||||
|
||||
}
|
||||
|
||||
|
@ -140,7 +140,11 @@ class CreditService
|
||||
|
||||
public function deletePdf()
|
||||
{
|
||||
UnlinkFile::dispatchNow(config('filesystems.default'), $this->credit->client->credit_filepath() . $this->credit->numberFormatter().'.pdf');
|
||||
$this->credit->invitations->each(function ($invitation){
|
||||
|
||||
UnlinkFile::dispatchNow(config('filesystems.default'), $this->credit->client->credit_filepath($invitation) . $this->credit->numberFormatter().'.pdf');
|
||||
|
||||
});
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ class GetCreditPdf extends AbstractService
|
||||
$this->contact = $this->credit->client->primary_contact()->first();
|
||||
}
|
||||
|
||||
$path = $this->credit->client->credit_filepath();
|
||||
$path = $this->credit->client->credit_filepath($this->invitation);
|
||||
|
||||
$file_path = $path.$this->credit->numberFormatter().'.pdf';
|
||||
|
||||
|
@ -60,14 +60,15 @@ class GenerateDeliveryNote
|
||||
? $this->invoice->design_id
|
||||
: $this->decodePrimaryKey($this->invoice->client->getSetting('invoice_design_id'));
|
||||
|
||||
$file_path = sprintf('%s%s_delivery_note.pdf', $this->invoice->client->invoice_filepath(), $this->invoice->number);
|
||||
$invitation = $this->invoice->invitations->first();
|
||||
$file_path = sprintf('%s%s_delivery_note.pdf', $this->invoice->client->invoice_filepath($invitation), $this->invoice->number);
|
||||
|
||||
if (config('ninja.phantomjs_pdf_generation') || config('ninja.pdf_generator') == 'phantom') {
|
||||
return (new Phantom)->generate($this->invoice->invitations->first());
|
||||
}
|
||||
|
||||
$design = Design::find($design_id);
|
||||
$html = new HtmlEngine($this->invoice->invitations->first());
|
||||
$html = new HtmlEngine($invitation);
|
||||
|
||||
if ($design->is_custom) {
|
||||
$options = ['custom_partials' => json_decode(json_encode($design->design), true)];
|
||||
|
@ -35,7 +35,7 @@ class GetInvoicePdf extends AbstractService
|
||||
|
||||
$invitation = $this->invoice->invitations->where('client_contact_id', $this->contact->id)->first();
|
||||
|
||||
$path = $this->invoice->client->invoice_filepath();
|
||||
$path = $this->invoice->client->invoice_filepath($invitation);
|
||||
|
||||
$file_path = $path.$this->invoice->numberFormatter().'.pdf';
|
||||
|
||||
|
@ -307,12 +307,15 @@ class InvoiceService
|
||||
|
||||
public function deletePdf()
|
||||
{
|
||||
$this->invoice->invitations->each(function ($invitation){
|
||||
|
||||
Storage::disk(config('filesystems.default'))->delete($this->invoice->client->invoice_filepath() . $this->invoice->numberFormatter().'.pdf');
|
||||
|
||||
if(Ninja::isHosted()) {
|
||||
Storage::disk('public')->delete($this->invoice->client->invoice_filepath() . $this->invoice->numberFormatter().'.pdf');
|
||||
}
|
||||
Storage::disk(config('filesystems.default'))->delete($this->invoice->client->invoice_filepath($invitation) . $this->invoice->numberFormatter().'.pdf');
|
||||
|
||||
if(Ninja::isHosted()) {
|
||||
Storage::disk('public')->delete($this->invoice->client->invoice_filepath($invitation) . $this->invoice->numberFormatter().'.pdf');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ class GetQuotePdf extends AbstractService
|
||||
|
||||
$invitation = $this->quote->invitations->where('client_contact_id', $this->contact->id)->first();
|
||||
|
||||
$path = $this->quote->client->quote_filepath();
|
||||
$path = $this->quote->client->quote_filepath($invitation);
|
||||
|
||||
$file_path = $path.$this->quote->numberFormatter().'.pdf';
|
||||
|
||||
|
@ -178,7 +178,11 @@ class QuoteService
|
||||
|
||||
public function deletePdf()
|
||||
{
|
||||
UnlinkFile::dispatchNow(config('filesystems.default'), $this->quote->client->quote_filepath() . $this->quote->numberFormatter().'.pdf');
|
||||
$this->quote->invitations->each(function ($invitation){
|
||||
|
||||
UnlinkFile::dispatchNow(config('filesystems.default'), $this->quote->client->quote_filepath($invitation) . $this->quote->numberFormatter().'.pdf');
|
||||
|
||||
});
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ class GetInvoicePdf extends AbstractService
|
||||
|
||||
$invitation = $this->entity->invitations->where('client_contact_id', $this->contact->id)->first();
|
||||
|
||||
$path = $this->entity->client->recurring_invoice_filepath();
|
||||
$path = $this->entity->client->recurring_invoice_filepath($invitation);
|
||||
|
||||
$file_path = $path.$this->entity->hashed_id.'.pdf';
|
||||
|
||||
|
@ -87,7 +87,13 @@ class RecurringService
|
||||
|
||||
public function deletePdf()
|
||||
{
|
||||
UnlinkFile::dispatchNow(config('filesystems.default'), $this->recurring_entity->client->recurring_invoice_filepath() . $this->recurring_entity->numberFormatter().'.pdf');
|
||||
|
||||
$this->recurring_entity->invitations->each(function ($invitation){
|
||||
|
||||
UnlinkFile::dispatchNow(config('filesystems.default'), $this->recurring_entity->client->recurring_invoice_filepath($invitation) . $this->recurring_entity->numberFormatter().'.pdf');
|
||||
|
||||
});
|
||||
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
@ -62,19 +62,19 @@ class Phantom
|
||||
$entity_obj = $invitation->{$entity};
|
||||
|
||||
if ($entity == 'invoice') {
|
||||
$path = $entity_obj->client->invoice_filepath();
|
||||
$path = $entity_obj->client->invoice_filepath($invitation);
|
||||
}
|
||||
|
||||
if ($entity == 'quote') {
|
||||
$path = $entity_obj->client->quote_filepath();
|
||||
$path = $entity_obj->client->quote_filepath($invitation);
|
||||
}
|
||||
|
||||
if ($entity == 'credit') {
|
||||
$path = $entity_obj->client->credit_filepath();
|
||||
$path = $entity_obj->client->credit_filepath($invitation);
|
||||
}
|
||||
|
||||
if ($entity == 'recurring_invoice') {
|
||||
$path = $entity_obj->client->recurring_invoice_filepath();
|
||||
$path = $entity_obj->client->recurring_invoice_filepath($invitation);
|
||||
}
|
||||
|
||||
$file_path = $path.$entity_obj->numberFormatter().'.pdf';
|
||||
|
Loading…
x
Reference in New Issue
Block a user