diff --git a/app/Http/Controllers/Reports/ClientContactReportController.php b/app/Http/Controllers/Reports/ClientContactReportController.php index 5b3a20683b58..acabe86ff8f3 100644 --- a/app/Http/Controllers/Reports/ClientContactReportController.php +++ b/app/Http/Controllers/Reports/ClientContactReportController.php @@ -14,6 +14,7 @@ namespace App\Http\Controllers\Reports; use App\Export\CSV\ContactExport; use App\Http\Controllers\BaseController; use App\Http\Requests\Report\GenericReportRequest; +use App\Jobs\Report\SendToAdmin; use App\Utils\Traits\MakesHash; use Illuminate\Http\Response; @@ -62,8 +63,11 @@ class ClientContactReportController extends BaseController */ public function __invoke(GenericReportRequest $request) { + if ($request->has('send_email') && $request->get('send_email')) { + SendToAdmin::dispatch(auth()->user()->company(), $request->all(), ContactExport::class, $this->filename); + return response()->json(['message' => 'working...'], 200); + } // expect a list of visible fields, or use the default - $export = new ContactExport(auth()->user()->company(), $request->all()); $csv = $export->run(); @@ -76,9 +80,8 @@ class ClientContactReportController extends BaseController return response()->streamDownload(function () use ($csv) { echo $csv; }, $this->filename, $headers); - + } - } diff --git a/app/Http/Controllers/Reports/ClientReportController.php b/app/Http/Controllers/Reports/ClientReportController.php index e65a59b5cb10..e2b780477264 100644 --- a/app/Http/Controllers/Reports/ClientReportController.php +++ b/app/Http/Controllers/Reports/ClientReportController.php @@ -14,6 +14,7 @@ namespace App\Http\Controllers\Reports; use App\Export\CSV\ClientExport; use App\Http\Controllers\BaseController; use App\Http\Requests\Report\GenericReportRequest; +use App\Jobs\Report\SendToAdmin; use App\Models\Client; use App\Utils\Traits\MakesHash; use Illuminate\Http\Response; @@ -63,6 +64,10 @@ class ClientReportController extends BaseController */ public function __invoke(GenericReportRequest $request) { + if ($request->has('send_email') && $request->get('send_email')) { + SendToAdmin::dispatch(auth()->user()->company(),$request->all(),ClientExport::class,$this->filename); + return response()->json(['message' => 'working...'], 200); + } // expect a list of visible fields, or use the default $export = new ClientExport(auth()->user()->company(), $request->all()); @@ -77,7 +82,7 @@ class ClientReportController extends BaseController return response()->streamDownload(function () use ($csv) { echo $csv; }, $this->filename, $headers); - + } diff --git a/app/Http/Controllers/Reports/CreditReportController.php b/app/Http/Controllers/Reports/CreditReportController.php index cc6fdd36e2ed..87087ed5f545 100644 --- a/app/Http/Controllers/Reports/CreditReportController.php +++ b/app/Http/Controllers/Reports/CreditReportController.php @@ -14,6 +14,7 @@ namespace App\Http\Controllers\Reports; use App\Export\CSV\CreditExport; use App\Http\Controllers\BaseController; use App\Http\Requests\Report\GenericReportRequest; +use App\Jobs\Report\SendToAdmin; use App\Utils\Traits\MakesHash; use Illuminate\Http\Response; @@ -62,6 +63,10 @@ class CreditReportController extends BaseController */ public function __invoke(GenericReportRequest $request) { + if ($request->has('send_email') && $request->get('send_email')) { + SendToAdmin::dispatch(auth()->user()->company(),$request->all(),CreditExport::class,$this->filename); + return response()->json(['message' => 'working...'], 200); + } // expect a list of visible fields, or use the default $export = new CreditExport(auth()->user()->company(), $request->all()); @@ -76,7 +81,7 @@ class CreditReportController extends BaseController return response()->streamDownload(function () use ($csv) { echo $csv; }, $this->filename, $headers); - + } diff --git a/app/Http/Controllers/Reports/DocumentReportController.php b/app/Http/Controllers/Reports/DocumentReportController.php index d0f4d3801715..4bbe243277a5 100644 --- a/app/Http/Controllers/Reports/DocumentReportController.php +++ b/app/Http/Controllers/Reports/DocumentReportController.php @@ -14,6 +14,7 @@ namespace App\Http\Controllers\Reports; use App\Export\CSV\DocumentExport; use App\Http\Controllers\BaseController; use App\Http\Requests\Report\GenericReportRequest; +use App\Jobs\Report\SendToAdmin; use App\Utils\Traits\MakesHash; use Illuminate\Http\Response; @@ -62,6 +63,10 @@ class DocumentReportController extends BaseController */ public function __invoke(GenericReportRequest $request) { + if ($request->has('send_email') && $request->get('send_email')) { + SendToAdmin::dispatch(auth()->user()->company(),$request->all(),DocumentExport::class,$this->filename); + return response()->json(['message' => 'working...'], 200); + } // expect a list of visible fields, or use the default $export = new DocumentExport(auth()->user()->company(), $request->all()); @@ -76,7 +81,7 @@ class DocumentReportController extends BaseController return response()->streamDownload(function () use ($csv) { echo $csv; }, $this->filename, $headers); - + } diff --git a/app/Http/Controllers/Reports/ExpenseReportController.php b/app/Http/Controllers/Reports/ExpenseReportController.php index e797437fe37f..7617c9cee85f 100644 --- a/app/Http/Controllers/Reports/ExpenseReportController.php +++ b/app/Http/Controllers/Reports/ExpenseReportController.php @@ -14,6 +14,7 @@ namespace App\Http\Controllers\Reports; use App\Export\CSV\ExpenseExport; use App\Http\Controllers\BaseController; use App\Http\Requests\Report\GenericReportRequest; +use App\Jobs\Report\SendToAdmin; use App\Models\Client; use App\Utils\Traits\MakesHash; use Illuminate\Http\Response; @@ -63,6 +64,10 @@ class ExpenseReportController extends BaseController */ public function __invoke(GenericReportRequest $request) { + if ($request->has('send_email') && $request->get('send_email')) { + SendToAdmin::dispatch(auth()->user()->company(),$request->all(),ExpenseExport::class,$this->filename); + return response()->json(['message' => 'working...'], 200); + } // expect a list of visible fields, or use the default $export = new ExpenseExport(auth()->user()->company(), $request->all()); @@ -77,7 +82,7 @@ class ExpenseReportController extends BaseController return response()->streamDownload(function () use ($csv) { echo $csv; }, $this->filename, $headers); - + } diff --git a/app/Http/Controllers/Reports/InvoiceItemReportController.php b/app/Http/Controllers/Reports/InvoiceItemReportController.php index 2bba0e0694ff..727077ccace1 100644 --- a/app/Http/Controllers/Reports/InvoiceItemReportController.php +++ b/app/Http/Controllers/Reports/InvoiceItemReportController.php @@ -14,6 +14,7 @@ namespace App\Http\Controllers\Reports; use App\Export\CSV\InvoiceItemExport; use App\Http\Controllers\BaseController; use App\Http\Requests\Report\GenericReportRequest; +use App\Jobs\Report\SendToAdmin; use App\Utils\Traits\MakesHash; use Illuminate\Http\Response; @@ -62,6 +63,10 @@ class InvoiceItemReportController extends BaseController */ public function __invoke(GenericReportRequest $request) { + if ($request->has('send_email') && $request->get('send_email')) { + SendToAdmin::dispatch(auth()->user()->company(),$request->all(),InvoiceItemExport::class,$this->filename); + return response()->json(['message' => 'working...'], 200); + } // expect a list of visible fields, or use the default $export = new InvoiceItemExport(auth()->user()->company(), $request->all()); @@ -76,7 +81,7 @@ class InvoiceItemReportController extends BaseController return response()->streamDownload(function () use ($csv) { echo $csv; }, $this->filename, $headers); - + } diff --git a/app/Http/Controllers/Reports/InvoiceReportController.php b/app/Http/Controllers/Reports/InvoiceReportController.php index b493bd3609a7..499c7ee85226 100644 --- a/app/Http/Controllers/Reports/InvoiceReportController.php +++ b/app/Http/Controllers/Reports/InvoiceReportController.php @@ -14,6 +14,7 @@ namespace App\Http\Controllers\Reports; use App\Export\CSV\InvoiceExport; use App\Http\Controllers\BaseController; use App\Http\Requests\Report\GenericReportRequest; +use App\Jobs\Report\SendToAdmin; use App\Utils\Traits\MakesHash; use Illuminate\Http\Response; @@ -62,6 +63,10 @@ class InvoiceReportController extends BaseController */ public function __invoke(GenericReportRequest $request) { + if ($request->has('send_email') && $request->get('send_email')) { + SendToAdmin::dispatch(auth()->user()->company(),$request->all(),InvoiceExport::class,$this->filename); + return response()->json(['message' => 'working...'], 200); + } // expect a list of visible fields, or use the default $export = new InvoiceExport(auth()->user()->company(), $request->all()); @@ -76,9 +81,8 @@ class InvoiceReportController extends BaseController return response()->streamDownload(function () use ($csv) { echo $csv; }, $this->filename, $headers); - + } - } diff --git a/app/Http/Controllers/Reports/PaymentReportController.php b/app/Http/Controllers/Reports/PaymentReportController.php index 35e83bf60322..ec7dac8a4b73 100644 --- a/app/Http/Controllers/Reports/PaymentReportController.php +++ b/app/Http/Controllers/Reports/PaymentReportController.php @@ -14,6 +14,7 @@ namespace App\Http\Controllers\Reports; use App\Export\CSV\PaymentExport; use App\Http\Controllers\BaseController; use App\Http\Requests\Report\GenericReportRequest; +use App\Jobs\Report\SendToAdmin; use App\Models\Client; use App\Utils\Traits\MakesHash; use Illuminate\Http\Response; @@ -63,6 +64,10 @@ class PaymentReportController extends BaseController */ public function __invoke(GenericReportRequest $request) { + if ($request->has('send_email') && $request->get('send_email')) { + SendToAdmin::dispatch(auth()->user()->company(), $request->all(), PaymentExport::class, $this->filename); + return response()->json(['message' => 'working...'], 200); + } // expect a list of visible fields, or use the default $export = new PaymentExport(auth()->user()->company(), $request->all()); @@ -77,9 +82,8 @@ class PaymentReportController extends BaseController return response()->streamDownload(function () use ($csv) { echo $csv; }, $this->filename, $headers); - + } - } diff --git a/app/Http/Controllers/Reports/ProductReportController.php b/app/Http/Controllers/Reports/ProductReportController.php index 1de907c127e9..c9fa7c9f2b27 100644 --- a/app/Http/Controllers/Reports/ProductReportController.php +++ b/app/Http/Controllers/Reports/ProductReportController.php @@ -14,6 +14,7 @@ namespace App\Http\Controllers\Reports; use App\Export\CSV\ProductExport; use App\Http\Controllers\BaseController; use App\Http\Requests\Report\GenericReportRequest; +use App\Jobs\Report\SendToAdmin; use App\Models\Client; use App\Utils\Traits\MakesHash; use Illuminate\Http\Response; @@ -63,6 +64,10 @@ class ProductReportController extends BaseController */ public function __invoke(GenericReportRequest $request) { + if ($request->has('send_email') && $request->get('send_email')) { + SendToAdmin::dispatch(auth()->user()->company(),$request->all(),ProductExport::class,$this->filename); + return response()->json(['message' => 'working...'], 200); + } // expect a list of visible fields, or use the default $export = new ProductExport(auth()->user()->company(), $request->all()); @@ -77,7 +82,7 @@ class ProductReportController extends BaseController return response()->streamDownload(function () use ($csv) { echo $csv; }, $this->filename, $headers); - + } diff --git a/app/Http/Controllers/Reports/ProfitAndLossController.php b/app/Http/Controllers/Reports/ProfitAndLossController.php index 7c2ea81ef56b..6aa31c72f2d1 100644 --- a/app/Http/Controllers/Reports/ProfitAndLossController.php +++ b/app/Http/Controllers/Reports/ProfitAndLossController.php @@ -14,6 +14,7 @@ namespace App\Http\Controllers\Reports; use App\Export\CSV\PaymentExport; use App\Http\Controllers\BaseController; use App\Http\Requests\Report\ProfitLossRequest; +use App\Jobs\Report\SendToAdmin; use App\Models\Client; use App\Services\Report\ProfitLoss; use App\Utils\Traits\MakesHash; @@ -64,13 +65,17 @@ class ProfitAndLossController extends BaseController */ public function __invoke(ProfitLossRequest $request) { + if ($request->has('send_email') && $request->get('send_email')) { + SendToAdmin::dispatch(auth()->user()->company(),$request->all(),ProfitLoss::class,$this->filename); + return response()->json(['message' => 'working...'], 200); + } // expect a list of visible fields, or use the default $pnl = new ProfitLoss(auth()->user()->company(), $request->all()); $pnl->build(); $csv = $pnl->getCsv(); - + $headers = array( 'Content-Disposition' => 'attachment', 'Content-Type' => 'text/csv', @@ -79,7 +84,7 @@ class ProfitAndLossController extends BaseController return response()->streamDownload(function () use ($csv) { echo $csv; }, $this->filename, $headers); - + } diff --git a/app/Http/Controllers/Reports/QuoteItemReportController.php b/app/Http/Controllers/Reports/QuoteItemReportController.php index f1700bf9dff8..91abb4d7d299 100644 --- a/app/Http/Controllers/Reports/QuoteItemReportController.php +++ b/app/Http/Controllers/Reports/QuoteItemReportController.php @@ -14,6 +14,7 @@ namespace App\Http\Controllers\Reports; use App\Export\CSV\QuoteItemExport; use App\Http\Controllers\BaseController; use App\Http\Requests\Report\GenericReportRequest; +use App\Jobs\Report\SendToAdmin; use App\Utils\Traits\MakesHash; use Illuminate\Http\Response; @@ -62,6 +63,10 @@ class QuoteItemReportController extends BaseController */ public function __invoke(GenericReportRequest $request) { + if ($request->has('send_email') && $request->get('send_email')) { + SendToAdmin::dispatch(auth()->user()->company(),$request->all(),QuoteItemExport::class,$this->filename); + return response()->json(['message' => 'working...'], 200); + } // expect a list of visible fields, or use the default $export = new QuoteItemExport(auth()->user()->company(), $request->all()); @@ -76,7 +81,7 @@ class QuoteItemReportController extends BaseController return response()->streamDownload(function () use ($csv) { echo $csv; }, $this->filename, $headers); - + } diff --git a/app/Http/Controllers/Reports/QuoteReportController.php b/app/Http/Controllers/Reports/QuoteReportController.php index 7b07d58a0004..49d36cf90410 100644 --- a/app/Http/Controllers/Reports/QuoteReportController.php +++ b/app/Http/Controllers/Reports/QuoteReportController.php @@ -14,6 +14,7 @@ namespace App\Http\Controllers\Reports; use App\Export\CSV\QuoteExport; use App\Http\Controllers\BaseController; use App\Http\Requests\Report\GenericReportRequest; +use App\Jobs\Report\SendToAdmin; use App\Utils\Traits\MakesHash; use Illuminate\Http\Response; @@ -62,6 +63,10 @@ class QuoteReportController extends BaseController */ public function __invoke(GenericReportRequest $request) { + if ($request->has('send_email') && $request->get('send_email')) { + SendToAdmin::dispatch(auth()->user()->company(),$request->all(),QuoteExport::class,$this->filename); + return response()->json(['message' => 'working...'], 200); + } // expect a list of visible fields, or use the default $export = new QuoteExport(auth()->user()->company(), $request->all()); @@ -76,7 +81,7 @@ class QuoteReportController extends BaseController return response()->streamDownload(function () use ($csv) { echo $csv; }, $this->filename, $headers); - + } diff --git a/app/Http/Controllers/Reports/RecurringInvoiceReportController.php b/app/Http/Controllers/Reports/RecurringInvoiceReportController.php index bfafa677ecfe..aa170d73c2ad 100644 --- a/app/Http/Controllers/Reports/RecurringInvoiceReportController.php +++ b/app/Http/Controllers/Reports/RecurringInvoiceReportController.php @@ -14,6 +14,7 @@ namespace App\Http\Controllers\Reports; use App\Export\CSV\RecurringInvoiceExport; use App\Http\Controllers\BaseController; use App\Http\Requests\Report\GenericReportRequest; +use App\Jobs\Report\SendToAdmin; use App\Utils\Traits\MakesHash; use Illuminate\Http\Response; @@ -62,6 +63,10 @@ class RecurringInvoiceReportController extends BaseController */ public function __invoke(GenericReportRequest $request) { + if ($request->has('send_email') && $request->get('send_email')) { + SendToAdmin::dispatch(auth()->user()->company(),$request->all(),RecurringInvoiceExport::class,$this->filename); + return response()->json(['message' => 'working...'], 200); + } // expect a list of visible fields, or use the default $export = new RecurringInvoiceExport(auth()->user()->company(), $request->all()); @@ -76,7 +81,7 @@ class RecurringInvoiceReportController extends BaseController return response()->streamDownload(function () use ($csv) { echo $csv; }, $this->filename, $headers); - + } diff --git a/app/Http/Controllers/Reports/TaskReportController.php b/app/Http/Controllers/Reports/TaskReportController.php index ee1259105efb..b15a87610739 100644 --- a/app/Http/Controllers/Reports/TaskReportController.php +++ b/app/Http/Controllers/Reports/TaskReportController.php @@ -14,6 +14,7 @@ namespace App\Http\Controllers\Reports; use App\Export\CSV\TaskExport; use App\Http\Controllers\BaseController; use App\Http\Requests\Report\GenericReportRequest; +use App\Jobs\Report\SendToAdmin; use App\Utils\Traits\MakesHash; use Illuminate\Http\Response; @@ -62,6 +63,10 @@ class TaskReportController extends BaseController */ public function __invoke(GenericReportRequest $request) { + if ($request->has('send_email') && $request->get('send_email')) { + SendToAdmin::dispatch(auth()->user()->company(),$request->all(),TaskExport::class,$this->filename); + return response()->json(['message' => 'working...'], 200); + } // expect a list of visible fields, or use the default $export = new TaskExport(auth()->user()->company(), $request->all()); @@ -76,7 +81,7 @@ class TaskReportController extends BaseController return response()->streamDownload(function () use ($csv) { echo $csv; }, $this->filename, $headers); - + } diff --git a/app/Jobs/Report/SendToAdmin.php b/app/Jobs/Report/SendToAdmin.php new file mode 100644 index 000000000000..8c2e779f9294 --- /dev/null +++ b/app/Jobs/Report/SendToAdmin.php @@ -0,0 +1,64 @@ +company = $company; + $this->request = $request; + $this->report_class = $report_class; + $this->file_name = $file_name; + + } + + public function handle() + { + MultiDB::setDb($this->company->db); + $export = new $this->report_class($this->company, $this->request); + $csv = $export->run(); + + $nmo = new NinjaMailerObject; + $nmo->mailable = new DownloadReport($this->company, $csv, $this->file_name); + $nmo->company = $this->company; + $nmo->settings = $this->company->settings; + $nmo->to_user = $this->company->owner(); + + NinjaMailerJob::dispatch($nmo); + + } +} diff --git a/app/Mail/DownloadReport.php b/app/Mail/DownloadReport.php new file mode 100644 index 000000000000..0037b6b498f9 --- /dev/null +++ b/app/Mail/DownloadReport.php @@ -0,0 +1,62 @@ +company = $company; + $this->csv = $csv; + $this->file_name = $file_name; + } + + /** + * Build the message. + * + * @return $this + */ + public function build() + { + App::setLocale($this->company->getLocale()); + + return $this->from(config('mail.from.address'), config('mail.from.name')) + ->subject(ctrans('texts.download_files')) + ->text('email.admin.download_report_text') + ->attachData($this->csv, $this->file_name, [ + 'mime' => 'text/csv', + ]) + ->view('email.admin.download_report', [ + 'logo' => $this->company->present()->logo, + 'whitelabel' => $this->company->account->isPaid() ? true : false, + 'settings' => $this->company->settings, + 'greeting' => $this->company->present()->name(), + ]); + } +} diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index da13435fa880..edc9e2141401 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -4583,7 +4583,9 @@ $LANG = array( 'alternate_pdf_viewer' => 'Alternate PDF Viewer', 'alternate_pdf_viewer_help' => 'Improve scrolling over the PDF preview [BETA]', 'currency_cayman_island_dollar' => 'Cayman Island Dollar', - + 'download_report_description' => 'Please see attached file to check your report.' + + ); return $LANG; diff --git a/resources/views/email/admin/download_report.blade.php b/resources/views/email/admin/download_report.blade.php new file mode 100644 index 000000000000..c5b2c385ea3e --- /dev/null +++ b/resources/views/email/admin/download_report.blade.php @@ -0,0 +1,7 @@ +@component('email.template.admin', ['logo' => $logo, 'settings' => $settings]) +
{{ ctrans('texts.download_report_description') }}
+ +