mirror of
				https://github.com/crater-invoice/crater.git
				synced 2025-10-31 05:31:10 -04:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			e5afc93efa
			...
			NickCrater
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| b414764552 | 
| @ -36,5 +36,3 @@ SANCTUM_STATEFUL_DOMAINS=crater.test | |||||||
| SESSION_DOMAIN=crater.test | SESSION_DOMAIN=crater.test | ||||||
|  |  | ||||||
| TRUSTED_PROXIES="*" | TRUSTED_PROXIES="*" | ||||||
|  |  | ||||||
| CRON_JOB_AUTH_TOKEN="" |  | ||||||
|  | |||||||
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,4 +1,3 @@ | |||||||
| /Modules |  | ||||||
| /node_modules | /node_modules | ||||||
| /public/storage | /public/storage | ||||||
| /public/hot | /public/hot | ||||||
| @ -13,6 +12,3 @@ Homestead.yaml | |||||||
| /.expo | /.expo | ||||||
| /.vscode | /.vscode | ||||||
| /docker-compose/db/data/ | /docker-compose/db/data/ | ||||||
| .gitkeep |  | ||||||
| /public/docs |  | ||||||
| /.scribe |  | ||||||
|  | |||||||
| @ -40,13 +40,10 @@ class CheckInvoiceStatus extends Command | |||||||
|     public function handle() |     public function handle() | ||||||
|     { |     { | ||||||
|         $date = Carbon::now(); |         $date = Carbon::now(); | ||||||
|         $invoices = Invoice::whereNotIn('status', [Invoice::STATUS_COMPLETED, Invoice::STATUS_DRAFT]) |         $invoices = Invoice::where('status', '<>', Invoice::STATUS_COMPLETED)->whereDate('due_date', '<', $date)->get(); | ||||||
|             ->where('overdue', false) |  | ||||||
|             ->whereDate('due_date', '<', $date) |  | ||||||
|             ->get(); |  | ||||||
|  |  | ||||||
|         foreach ($invoices as $invoice) { |         foreach ($invoices as $invoice) { | ||||||
|             $invoice->overdue = true; |             $invoice->status = Invoice::STATUS_OVERDUE; | ||||||
|             printf("Invoice %s is OVERDUE \n", $invoice->invoice_number); |             printf("Invoice %s is OVERDUE \n", $invoice->invoice_number); | ||||||
|             $invoice->save(); |             $invoice->save(); | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -1,45 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Console\Commands; |  | ||||||
|  |  | ||||||
| use Crater\Space\ModuleInstaller; |  | ||||||
| use Illuminate\Console\Command; |  | ||||||
|  |  | ||||||
| class InstallModuleCommand extends Command |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * The name and signature of the console command. |  | ||||||
|      * |  | ||||||
|      * @var string |  | ||||||
|      */ |  | ||||||
|     protected $signature = 'install:module {module} {version}'; |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * The console command description. |  | ||||||
|      * |  | ||||||
|      * @var string |  | ||||||
|      */ |  | ||||||
|     protected $description = 'Install cloned module.'; |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Create a new command instance. |  | ||||||
|      * |  | ||||||
|      * @return void |  | ||||||
|      */ |  | ||||||
|     public function __construct() |  | ||||||
|     { |  | ||||||
|         parent::__construct(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Execute the console command. |  | ||||||
|      * |  | ||||||
|      * @return int |  | ||||||
|      */ |  | ||||||
|     public function handle() |  | ||||||
|     { |  | ||||||
|         ModuleInstaller::complete($this->argument('module'), $this->argument('version')); |  | ||||||
|  |  | ||||||
|         return Command::SUCCESS; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -2,7 +2,6 @@ | |||||||
|  |  | ||||||
| namespace Crater\Console; | namespace Crater\Console; | ||||||
|  |  | ||||||
| use Crater\Models\CompanySetting; |  | ||||||
| use Crater\Models\RecurringInvoice; | use Crater\Models\RecurringInvoice; | ||||||
| use Illuminate\Console\Scheduling\Schedule; | use Illuminate\Console\Scheduling\Schedule; | ||||||
| use Illuminate\Foundation\Console\Kernel as ConsoleKernel; | use Illuminate\Foundation\Console\Kernel as ConsoleKernel; | ||||||
| @ -17,8 +16,7 @@ class Kernel extends ConsoleKernel | |||||||
|     protected $commands = [ |     protected $commands = [ | ||||||
|         Commands\ResetApp::class, |         Commands\ResetApp::class, | ||||||
|         Commands\UpdateCommand::class, |         Commands\UpdateCommand::class, | ||||||
|         Commands\CreateTemplateCommand::class, |         Commands\CreateTemplateCommand::class | ||||||
|         Commands\InstallModuleCommand::class, |  | ||||||
|     ]; |     ]; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @ -38,11 +36,9 @@ class Kernel extends ConsoleKernel | |||||||
|  |  | ||||||
|             $recurringInvoices = RecurringInvoice::where('status', 'ACTIVE')->get(); |             $recurringInvoices = RecurringInvoice::where('status', 'ACTIVE')->get(); | ||||||
|             foreach ($recurringInvoices as $recurringInvoice) { |             foreach ($recurringInvoices as $recurringInvoice) { | ||||||
|                 $timeZone = CompanySetting::getSetting('time_zone', $recurringInvoice->company_id); |  | ||||||
|  |  | ||||||
|                 $schedule->call(function () use ($recurringInvoice) { |                 $schedule->call(function () use ($recurringInvoice) { | ||||||
|                     $recurringInvoice->generateInvoice(); |                     $recurringInvoice->generateInvoice(); | ||||||
|                 })->cron($recurringInvoice->frequency)->timezone($timeZone); |                 })->cron($recurringInvoice->frequency); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -1,26 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Events; |  | ||||||
|  |  | ||||||
| use Illuminate\Broadcasting\InteractsWithSockets; |  | ||||||
| use Illuminate\Foundation\Events\Dispatchable; |  | ||||||
| use Illuminate\Queue\SerializesModels; |  | ||||||
|  |  | ||||||
| class ModuleDisabledEvent |  | ||||||
| { |  | ||||||
|     use Dispatchable; |  | ||||||
|     use InteractsWithSockets; |  | ||||||
|     use SerializesModels; |  | ||||||
|  |  | ||||||
|     public $module; |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Create a new event instance. |  | ||||||
|      * |  | ||||||
|      * @return void |  | ||||||
|      */ |  | ||||||
|     public function __construct($module) |  | ||||||
|     { |  | ||||||
|         $this->module = $module; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,26 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Events; |  | ||||||
|  |  | ||||||
| use Illuminate\Broadcasting\InteractsWithSockets; |  | ||||||
| use Illuminate\Foundation\Events\Dispatchable; |  | ||||||
| use Illuminate\Queue\SerializesModels; |  | ||||||
|  |  | ||||||
| class ModuleEnabledEvent |  | ||||||
| { |  | ||||||
|     use Dispatchable; |  | ||||||
|     use InteractsWithSockets; |  | ||||||
|     use SerializesModels; |  | ||||||
|  |  | ||||||
|     public $module; |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Create a new event instance. |  | ||||||
|      * |  | ||||||
|      * @return void |  | ||||||
|      */ |  | ||||||
|     public function __construct($module) |  | ||||||
|     { |  | ||||||
|         $this->module = $module; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,26 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Events; |  | ||||||
|  |  | ||||||
| use Illuminate\Broadcasting\InteractsWithSockets; |  | ||||||
| use Illuminate\Foundation\Events\Dispatchable; |  | ||||||
| use Illuminate\Queue\SerializesModels; |  | ||||||
|  |  | ||||||
| class ModuleInstalledEvent |  | ||||||
| { |  | ||||||
|     use Dispatchable; |  | ||||||
|     use InteractsWithSockets; |  | ||||||
|     use SerializesModels; |  | ||||||
|  |  | ||||||
|     public $module; |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Create a new event instance. |  | ||||||
|      * |  | ||||||
|      * @return void |  | ||||||
|      */ |  | ||||||
|     public function __construct($module) |  | ||||||
|     { |  | ||||||
|         $this->module = $module; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -12,7 +12,6 @@ use Crater\Models\Expense; | |||||||
| use Crater\Models\Invoice; | use Crater\Models\Invoice; | ||||||
| use Crater\Models\Payment; | use Crater\Models\Payment; | ||||||
| use Illuminate\Http\Request; | use Illuminate\Http\Request; | ||||||
| use Silber\Bouncer\BouncerFacade; |  | ||||||
|  |  | ||||||
| class DashboardController extends Controller | class DashboardController extends Controller | ||||||
| { | { | ||||||
| @ -152,8 +151,8 @@ class DashboardController extends Controller | |||||||
|             'total_invoice_count' => $total_invoice_count, |             'total_invoice_count' => $total_invoice_count, | ||||||
|             'total_estimate_count' => $total_estimate_count, |             'total_estimate_count' => $total_estimate_count, | ||||||
|  |  | ||||||
|             'recent_due_invoices' => BouncerFacade::can('view-invoice', Invoice::class) ? $recent_due_invoices : [], |             'recent_due_invoices' => $recent_due_invoices, | ||||||
|             'recent_estimates' => BouncerFacade::can('view-estimate', Estimate::class) ? $recent_estimates : [], |             'recent_estimates' => $recent_estimates, | ||||||
|  |  | ||||||
|             'chart_data' => $chart_data, |             'chart_data' => $chart_data, | ||||||
|  |  | ||||||
|  | |||||||
| @ -83,8 +83,6 @@ class ConvertEstimateController extends Controller | |||||||
|             'base_total' => $estimate->total * $exchange_rate, |             'base_total' => $estimate->total * $exchange_rate, | ||||||
|             'base_tax' => $estimate->tax * $exchange_rate, |             'base_tax' => $estimate->tax * $exchange_rate, | ||||||
|             'currency_id' => $estimate->currency_id, |             'currency_id' => $estimate->currency_id, | ||||||
|             'sales_tax_type' => $estimate->sales_tax_type, |  | ||||||
|             'sales_tax_address_type' => $estimate->sales_tax_address_type, |  | ||||||
|         ]); |         ]); | ||||||
|  |  | ||||||
|         $invoice->unique_hash = Hashids::connection(Invoice::class)->encode($invoice->id); |         $invoice->unique_hash = Hashids::connection(Invoice::class)->encode($invoice->id); | ||||||
|  | |||||||
| @ -21,9 +21,6 @@ class SendEstimatePreviewController extends Controller | |||||||
|  |  | ||||||
|         $markdown = new Markdown(view(), config('mail.markdown')); |         $markdown = new Markdown(view(), config('mail.markdown')); | ||||||
|  |  | ||||||
|         $data = $estimate->sendEstimateData($request->all()); |         return $markdown->render('emails.send.estimate', ['data' => $estimate->sendEstimateData($request->all())]); | ||||||
|         $data['url'] = $estimate->estimatePdfUrl; |  | ||||||
|  |  | ||||||
|         return $markdown->render('emails.send.estimate', ['data' => $data]); |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -39,7 +39,7 @@ class ExpensesController extends Controller | |||||||
|     /** |     /** | ||||||
|      * Store a newly created resource in storage. |      * Store a newly created resource in storage. | ||||||
|      * |      * | ||||||
|      * @param  \Crater\Http\Requests\ExpenseRequest $request |      * @param  \Illuminate\Http\Request $request | ||||||
|      * @return \Illuminate\Http\JsonResponse |      * @return \Illuminate\Http\JsonResponse | ||||||
|      */ |      */ | ||||||
|     public function store(ExpenseRequest $request) |     public function store(ExpenseRequest $request) | ||||||
| @ -67,7 +67,7 @@ class ExpensesController extends Controller | |||||||
|     /** |     /** | ||||||
|      * Update the specified resource in storage. |      * Update the specified resource in storage. | ||||||
|      * |      * | ||||||
|      * @param  \Crater\Http\Requests\ExpenseRequest $request |      * @param  \Illuminate\Http\Request $request | ||||||
|      * @param  \Crater\Models\Expense $expense |      * @param  \Crater\Models\Expense $expense | ||||||
|      * @return \Illuminate\Http\JsonResponse |      * @return \Illuminate\Http\JsonResponse | ||||||
|      */ |      */ | ||||||
|  | |||||||
| @ -3,19 +3,19 @@ | |||||||
| namespace Crater\Http\Controllers\V1\Admin\Expense; | namespace Crater\Http\Controllers\V1\Admin\Expense; | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; | use Crater\Http\Controllers\Controller; | ||||||
| use Crater\Http\Requests\UploadExpenseReceiptRequest; |  | ||||||
| use Crater\Models\Expense; | use Crater\Models\Expense; | ||||||
|  | use Illuminate\Http\Request; | ||||||
|  |  | ||||||
| class UploadReceiptController extends Controller | class UploadReceiptController extends Controller | ||||||
| { | { | ||||||
|     /** |     /** | ||||||
|      * Upload the expense receipts to storage. |      * Upload the expense receipts to storage. | ||||||
|      * |      * | ||||||
|      * @param  \Crater\Http\Requests\ExpenseRequest $request |      * @param  \Illuminate\Http\Request $request | ||||||
|      * @param  Expense $expense |      * @param  Expense $expense | ||||||
|      * @return \Illuminate\Http\JsonResponse |      * @return \Illuminate\Http\JsonResponse | ||||||
|      */ |      */ | ||||||
|     public function __invoke(UploadExpenseReceiptRequest $request, Expense $expense) |     public function __invoke(Request $request, Expense $expense) | ||||||
|     { |     { | ||||||
|         $this->authorize('update', $expense); |         $this->authorize('update', $expense); | ||||||
|  |  | ||||||
|  | |||||||
| @ -8,8 +8,6 @@ use Crater\Http\Resources\UserResource; | |||||||
| use Crater\Models\Company; | use Crater\Models\Company; | ||||||
| use Crater\Models\CompanySetting; | use Crater\Models\CompanySetting; | ||||||
| use Crater\Models\Currency; | use Crater\Models\Currency; | ||||||
| use Crater\Models\Module; |  | ||||||
| use Crater\Models\Setting; |  | ||||||
| use Crater\Traits\GeneratesMenuTrait; | use Crater\Traits\GeneratesMenuTrait; | ||||||
| use Illuminate\Http\Request; | use Illuminate\Http\Request; | ||||||
| use Silber\Bouncer\BouncerFacade; | use Silber\Bouncer\BouncerFacade; | ||||||
| @ -49,17 +47,6 @@ class BootstrapController extends Controller | |||||||
|  |  | ||||||
|         BouncerFacade::refreshFor($current_user); |         BouncerFacade::refreshFor($current_user); | ||||||
|  |  | ||||||
|         $global_settings = Setting::getSettings([ |  | ||||||
|             'api_token', |  | ||||||
|             'admin_portal_theme', |  | ||||||
|             'admin_portal_logo', |  | ||||||
|             'login_page_logo', |  | ||||||
|             'login_page_heading', |  | ||||||
|             'login_page_description', |  | ||||||
|             'admin_page_title', |  | ||||||
|             'copyright_text' |  | ||||||
|         ]); |  | ||||||
|  |  | ||||||
|         return response()->json([ |         return response()->json([ | ||||||
|             'current_user' => new UserResource($current_user), |             'current_user' => new UserResource($current_user), | ||||||
|             'current_user_settings' => $current_user_settings, |             'current_user_settings' => $current_user_settings, | ||||||
| @ -69,10 +56,8 @@ class BootstrapController extends Controller | |||||||
|             'current_company_settings' => $current_company_settings, |             'current_company_settings' => $current_company_settings, | ||||||
|             'current_company_currency' => $current_company_currency, |             'current_company_currency' => $current_company_currency, | ||||||
|             'config' => config('crater'), |             'config' => config('crater'), | ||||||
|             'global_settings' => $global_settings, |  | ||||||
|             'main_menu' => $main_menu, |             'main_menu' => $main_menu, | ||||||
|             'setting_menu' => $setting_menu, |             'setting_menu' => $setting_menu, | ||||||
|             'modules' => Module::where('enabled', true)->pluck('name'), |  | ||||||
|         ]); |         ]); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -20,7 +20,6 @@ class SearchController extends Controller | |||||||
|         $user = $request->user(); |         $user = $request->user(); | ||||||
|  |  | ||||||
|         $customers = Customer::applyFilters($request->only(['search'])) |         $customers = Customer::applyFilters($request->only(['search'])) | ||||||
|             ->whereCompany() |  | ||||||
|             ->latest() |             ->latest() | ||||||
|             ->paginate(10); |             ->paginate(10); | ||||||
|  |  | ||||||
|  | |||||||
| @ -76,8 +76,6 @@ class CloneInvoiceController extends Controller | |||||||
|             'base_tax' => $invoice->tax * $exchange_rate, |             'base_tax' => $invoice->tax * $exchange_rate, | ||||||
|             'base_due_amount' => $invoice->total * $exchange_rate, |             'base_due_amount' => $invoice->total * $exchange_rate, | ||||||
|             'currency_id' => $invoice->currency_id, |             'currency_id' => $invoice->currency_id, | ||||||
|             'sales_tax_type' => $invoice->sales_tax_type, |  | ||||||
|             'sales_tax_address_type' => $invoice->sales_tax_address_type, |  | ||||||
|         ]); |         ]); | ||||||
|  |  | ||||||
|         $newInvoice->unique_hash = Hashids::connection(Invoice::class)->encode($newInvoice->id); |         $newInvoice->unique_hash = Hashids::connection(Invoice::class)->encode($newInvoice->id); | ||||||
|  | |||||||
| @ -102,7 +102,7 @@ class InvoicesController extends Controller | |||||||
|     { |     { | ||||||
|         $this->authorize('delete multiple invoices'); |         $this->authorize('delete multiple invoices'); | ||||||
|  |  | ||||||
|         Invoice::deleteInvoices($request->ids); |         Invoice::destroy($request->ids); | ||||||
|  |  | ||||||
|         return response()->json([ |         return response()->json([ | ||||||
|             'success' => true, |             'success' => true, | ||||||
|  | |||||||
| @ -21,9 +21,6 @@ class SendInvoicePreviewController extends Controller | |||||||
|  |  | ||||||
|         $markdown = new Markdown(view(), config('mail.markdown')); |         $markdown = new Markdown(view(), config('mail.markdown')); | ||||||
|  |  | ||||||
|         $data = $invoice->sendInvoiceData($request->all()); |         return $markdown->render('emails.send.invoice', ['data' => $invoice->sendInvoiceData($request->all())]); | ||||||
|         $data['url'] = $invoice->invoicePdfUrl; |  | ||||||
|  |  | ||||||
|         return $markdown->render('emails.send.invoice', ['data' => $data]); |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,25 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Admin\Modules; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Space\ModuleInstaller; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
|  |  | ||||||
| class ApiTokenController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Handle the incoming request. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function __invoke(Request $request) |  | ||||||
|     { |  | ||||||
|         $this->authorize('manage modules'); |  | ||||||
|  |  | ||||||
|         $response = ModuleInstaller::checkToken($request->api_token); |  | ||||||
|  |  | ||||||
|         return $response; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,27 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Admin\Modules; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Space\ModuleInstaller; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
|  |  | ||||||
| class CompleteModuleInstallationController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Handle the incoming request. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function __invoke(Request $request) |  | ||||||
|     { |  | ||||||
|         $this->authorize('manage modules'); |  | ||||||
|  |  | ||||||
|         $response = ModuleInstaller::complete($request->module, $request->version); |  | ||||||
|  |  | ||||||
|         return response()->json([ |  | ||||||
|             'success' => $response |  | ||||||
|         ]); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,27 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Admin\Modules; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Space\ModuleInstaller; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
|  |  | ||||||
| class CopyModuleController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Handle the incoming request. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function __invoke(Request $request) |  | ||||||
|     { |  | ||||||
|         $this->authorize('manage modules'); |  | ||||||
|  |  | ||||||
|         $response = ModuleInstaller::copyFiles($request->module, $request->path); |  | ||||||
|  |  | ||||||
|         return response()->json([ |  | ||||||
|             'success' => $response |  | ||||||
|         ]); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,32 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Admin\Modules; |  | ||||||
|  |  | ||||||
| use Crater\Events\ModuleDisabledEvent; |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Models\Module as ModelsModule; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
| use Nwidart\Modules\Facades\Module; |  | ||||||
|  |  | ||||||
| class DisableModuleController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Handle the incoming request. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function __invoke(Request $request, string $module) |  | ||||||
|     { |  | ||||||
|         $this->authorize('manage modules'); |  | ||||||
|  |  | ||||||
|         $module = ModelsModule::where('name', $module)->first(); |  | ||||||
|         $module->update(['enabled' => false]); |  | ||||||
|         $installedModule = Module::find($module->name); |  | ||||||
|         $installedModule->disable(); |  | ||||||
|  |  | ||||||
|         ModuleDisabledEvent::dispatch($module); |  | ||||||
|  |  | ||||||
|         return response()->json(['success' => true]); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,25 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Admin\Modules; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Space\ModuleInstaller; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
|  |  | ||||||
| class DownloadModuleController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Handle the incoming request. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function __invoke(Request $request) |  | ||||||
|     { |  | ||||||
|         $this->authorize('manage modules'); |  | ||||||
|  |  | ||||||
|         $response = ModuleInstaller::download($request->module, $request->version); |  | ||||||
|  |  | ||||||
|         return response()->json($response); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,32 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Admin\Modules; |  | ||||||
|  |  | ||||||
| use Crater\Events\ModuleEnabledEvent; |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Models\Module as ModelsModule; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
| use Nwidart\Modules\Facades\Module; |  | ||||||
|  |  | ||||||
| class EnableModuleController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Handle the incoming request. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function __invoke(Request $request, string $module) |  | ||||||
|     { |  | ||||||
|         $this->authorize('manage modules'); |  | ||||||
|  |  | ||||||
|         $module = ModelsModule::where('name', $module)->first(); |  | ||||||
|         $module->update(['enabled' => true]); |  | ||||||
|         $installedModule = Module::find($module->name); |  | ||||||
|         $installedModule->enable(); |  | ||||||
|  |  | ||||||
|         ModuleEnabledEvent::dispatch($module); |  | ||||||
|  |  | ||||||
|         return response()->json(['success' => true]); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,33 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Admin\Modules; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Http\Resources\ModuleResource; |  | ||||||
| use Crater\Space\ModuleInstaller; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
|  |  | ||||||
| class ModuleController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Handle the incoming request. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function __invoke(Request $request, string $module) |  | ||||||
|     { |  | ||||||
|         $this->authorize('manage modules'); |  | ||||||
|  |  | ||||||
|         $response = ModuleInstaller::getModule($module); |  | ||||||
|  |  | ||||||
|         if (! $response->success) { |  | ||||||
|             return response()->json($response); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         return (new ModuleResource($response->module)) |  | ||||||
|             ->additional(['meta' => [ |  | ||||||
|                 'modules' => ModuleResource::collection(collect($response->modules)) |  | ||||||
|             ]]); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,25 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Admin\Modules; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Space\ModuleInstaller; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
|  |  | ||||||
| class ModulesController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Handle the incoming request. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function __invoke(Request $request) |  | ||||||
|     { |  | ||||||
|         $this->authorize('manage modules'); |  | ||||||
|  |  | ||||||
|         $response = ModuleInstaller::getModules(); |  | ||||||
|  |  | ||||||
|         return $response; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,28 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Admin\Modules; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Http\Requests\UnzipUpdateRequest; |  | ||||||
| use Crater\Space\ModuleInstaller; |  | ||||||
|  |  | ||||||
| class UnzipModuleController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Handle the incoming request. |  | ||||||
|      * |  | ||||||
|      * @param  \Crater\Http\Requests\UnzipUpdateRequest  $request |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function __invoke(UnzipUpdateRequest $request) |  | ||||||
|     { |  | ||||||
|         $this->authorize('manage modules'); |  | ||||||
|  |  | ||||||
|         $path = ModuleInstaller::unzip($request->module, $request->path); |  | ||||||
|  |  | ||||||
|         return response()->json([ |  | ||||||
|             'success' => true, |  | ||||||
|             'path' => $path |  | ||||||
|         ]); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,25 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Admin\Modules; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Http\Requests\UploadModuleRequest; |  | ||||||
| use Crater\Space\ModuleInstaller; |  | ||||||
|  |  | ||||||
| class UploadModuleController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Handle the incoming request. |  | ||||||
|      * |  | ||||||
|      * @param  \Crater\Http\Requests\UploadModuleRequest  $request |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function __invoke(UploadModuleRequest $request) |  | ||||||
|     { |  | ||||||
|         $this->authorize('manage modules'); |  | ||||||
|  |  | ||||||
|         $response = ModuleInstaller::upload($request); |  | ||||||
|  |  | ||||||
|         return response()->json($response); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -22,7 +22,6 @@ class PaymentMethodsController extends Controller | |||||||
|         $limit = $request->has('limit') ? $request->limit : 5; |         $limit = $request->has('limit') ? $request->limit : 5; | ||||||
|  |  | ||||||
|         $paymentMethods = PaymentMethod::applyFilters($request->all()) |         $paymentMethods = PaymentMethod::applyFilters($request->all()) | ||||||
|             ->where('type', PaymentMethod::TYPE_GENERAL) |  | ||||||
|             ->whereCompany() |             ->whereCompany() | ||||||
|             ->latest() |             ->latest() | ||||||
|             ->paginateData($limit); |             ->paginateData($limit); | ||||||
| @ -69,7 +68,7 @@ class PaymentMethodsController extends Controller | |||||||
|     { |     { | ||||||
|         $this->authorize('update', $paymentMethod); |         $this->authorize('update', $paymentMethod); | ||||||
|  |  | ||||||
|         $paymentMethod->update($request->getPaymentMethodPayload()); |         $paymentMethod->update($request->validated()); | ||||||
|  |  | ||||||
|         return new PaymentMethodResource($paymentMethod); |         return new PaymentMethodResource($paymentMethod); | ||||||
|     } |     } | ||||||
| @ -84,12 +83,10 @@ class PaymentMethodsController extends Controller | |||||||
|     { |     { | ||||||
|         $this->authorize('delete', $paymentMethod); |         $this->authorize('delete', $paymentMethod); | ||||||
|  |  | ||||||
|         if ($paymentMethod->payments()->exists()) { |         $payments = $paymentMethod->payments; | ||||||
|             return respondJson('payments_attached', 'Payments Attached.'); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         if ($paymentMethod->expenses()->exists()) { |         if ($payments->count() > 0) { | ||||||
|             return respondJson('expenses_attached', 'Expenses Attached.'); |             return respondJson('payments_attached', 'Payments Attached.'); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         $paymentMethod->delete(); |         $paymentMethod->delete(); | ||||||
|  | |||||||
| @ -21,9 +21,6 @@ class SendPaymentPreviewController extends Controller | |||||||
|  |  | ||||||
|         $markdown = new Markdown(view(), config('mail.markdown')); |         $markdown = new Markdown(view(), config('mail.markdown')); | ||||||
|  |  | ||||||
|         $data = $payment->sendPaymentData($request->all()); |         return $markdown->render('emails.send.payment', ['data' => $payment->sendPaymentData($request->all())]); | ||||||
|         $data['url'] = $payment->paymentPdfUrl; |  | ||||||
|  |  | ||||||
|         return $markdown->render('emails.send.payment', ['data' => $data]); |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -3,8 +3,6 @@ | |||||||
| namespace Crater\Http\Controllers\V1\Admin\Settings; | namespace Crater\Http\Controllers\V1\Admin\Settings; | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; | use Crater\Http\Controllers\Controller; | ||||||
| use Crater\Http\Requests\AvatarRequest; |  | ||||||
| use Crater\Http\Requests\CompanyLogoRequest; |  | ||||||
| use Crater\Http\Requests\CompanyRequest; | use Crater\Http\Requests\CompanyRequest; | ||||||
| use Crater\Http\Requests\ProfileRequest; | use Crater\Http\Requests\ProfileRequest; | ||||||
| use Crater\Http\Resources\CompanyResource; | use Crater\Http\Resources\CompanyResource; | ||||||
| @ -50,7 +48,7 @@ class CompanyController extends Controller | |||||||
|  |  | ||||||
|         $this->authorize('manage company', $company); |         $this->authorize('manage company', $company); | ||||||
|  |  | ||||||
|         $company->update($request->getCompanyPayload()); |         $company->update($request->only('name')); | ||||||
|  |  | ||||||
|         $company->address()->updateOrCreate(['company_id' => $company->id], $request->address); |         $company->address()->updateOrCreate(['company_id' => $company->id], $request->address); | ||||||
|  |  | ||||||
| @ -60,10 +58,10 @@ class CompanyController extends Controller | |||||||
|     /** |     /** | ||||||
|      * Upload the company logo to storage. |      * Upload the company logo to storage. | ||||||
|      * |      * | ||||||
|      * @param  \Crater\Http\Requests\CompanyLogoRequest $request |      * @param  \Illuminate\Http\Request $request | ||||||
|      * @return \Illuminate\Http\JsonResponse |      * @return \Illuminate\Http\JsonResponse | ||||||
|      */ |      */ | ||||||
|     public function uploadCompanyLogo(CompanyLogoRequest $request) |     public function uploadCompanyLogo(Request $request) | ||||||
|     { |     { | ||||||
|         $company = Company::find($request->header('company')); |         $company = Company::find($request->header('company')); | ||||||
|  |  | ||||||
| @ -71,9 +69,6 @@ class CompanyController extends Controller | |||||||
|  |  | ||||||
|         $data = json_decode($request->company_logo); |         $data = json_decode($request->company_logo); | ||||||
|  |  | ||||||
|         if (isset($request->is_company_logo_removed) && (bool) $request->is_company_logo_removed) { |  | ||||||
|             $company->clearMediaCollection('logo'); |  | ||||||
|         } |  | ||||||
|         if ($data) { |         if ($data) { | ||||||
|             $company = Company::find($request->header('company')); |             $company = Company::find($request->header('company')); | ||||||
|  |  | ||||||
| @ -94,16 +89,13 @@ class CompanyController extends Controller | |||||||
|     /** |     /** | ||||||
|      * Upload the Admin Avatar to public storage. |      * Upload the Admin Avatar to public storage. | ||||||
|      * |      * | ||||||
|      * @param  \Crater\Http\Requests\AvatarRequest $request |      * @param  \Illuminate\Http\Request $request | ||||||
|      * @return \Illuminate\Http\JsonResponse |      * @return \Illuminate\Http\JsonResponse | ||||||
|      */ |      */ | ||||||
|     public function uploadAvatar(AvatarRequest $request) |     public function uploadAvatar(Request $request) | ||||||
|     { |     { | ||||||
|         $user = auth()->user(); |         $user = auth()->user(); | ||||||
|  |  | ||||||
|         if (isset($request->is_admin_avatar_removed) && (bool) $request->is_admin_avatar_removed) { |  | ||||||
|             $user->clearMediaCollection('admin_avatar'); |  | ||||||
|         } |  | ||||||
|         if ($user && $request->hasFile('admin_avatar')) { |         if ($user && $request->hasFile('admin_avatar')) { | ||||||
|             $user->clearMediaCollection('admin_avatar'); |             $user->clearMediaCollection('admin_avatar'); | ||||||
|  |  | ||||||
|  | |||||||
| @ -1,27 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Admin\Settings; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Models\Company; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
|  |  | ||||||
| class CompanyCurrencyCheckTransactionsController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Handle the incoming request. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function __invoke(Request $request) |  | ||||||
|     { |  | ||||||
|         $company = Company::find($request->header('company')); |  | ||||||
|  |  | ||||||
|         $this->authorize('manage company', $company); |  | ||||||
|  |  | ||||||
|         return response()->json([ |  | ||||||
|             'has_transactions' => $company->hasTransactions(), |  | ||||||
|         ]); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,28 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Admin\Settings; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Http\Requests\GetSettingRequest; |  | ||||||
| use Crater\Models\Setting; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
|  |  | ||||||
| class GetSettingsController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Handle the incoming request. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function __invoke(GetSettingRequest $request) |  | ||||||
|     { |  | ||||||
|         $this->authorize('manage settings'); |  | ||||||
|  |  | ||||||
|         $setting = Setting::getSetting($request->key); |  | ||||||
|  |  | ||||||
|         return response()->json([ |  | ||||||
|             $request->key => $setting |  | ||||||
|         ]); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -22,7 +22,6 @@ class TaxTypesController extends Controller | |||||||
|         $limit = $request->has('limit') ? $request->limit : 5; |         $limit = $request->has('limit') ? $request->limit : 5; | ||||||
|  |  | ||||||
|         $taxTypes = TaxType::applyFilters($request->all()) |         $taxTypes = TaxType::applyFilters($request->all()) | ||||||
|             ->where('type', TaxType::TYPE_GENERAL) |  | ||||||
|             ->whereCompany() |             ->whereCompany() | ||||||
|             ->latest() |             ->latest() | ||||||
|             ->paginateData($limit); |             ->paginateData($limit); | ||||||
|  | |||||||
| @ -6,7 +6,6 @@ use Crater\Http\Controllers\Controller; | |||||||
| use Crater\Http\Requests\UpdateSettingsRequest; | use Crater\Http\Requests\UpdateSettingsRequest; | ||||||
| use Crater\Models\Company; | use Crater\Models\Company; | ||||||
| use Crater\Models\CompanySetting; | use Crater\Models\CompanySetting; | ||||||
| use Illuminate\Support\Arr; |  | ||||||
|  |  | ||||||
| class UpdateCompanySettingsController extends Controller | class UpdateCompanySettingsController extends Controller | ||||||
| { | { | ||||||
| @ -18,23 +17,9 @@ class UpdateCompanySettingsController extends Controller | |||||||
|      */ |      */ | ||||||
|     public function __invoke(UpdateSettingsRequest $request) |     public function __invoke(UpdateSettingsRequest $request) | ||||||
|     { |     { | ||||||
|         $company = Company::find($request->header('company')); |         $this->authorize('manage company', Company::find($request->header('company'))); | ||||||
|         $this->authorize('manage company', $company); |  | ||||||
|  |  | ||||||
|         $data = $request->settings; |         CompanySetting::setSettings($request->settings, $request->header('company')); | ||||||
|  |  | ||||||
|         if ( |  | ||||||
|             Arr::exists($data, 'currency') && |  | ||||||
|             (CompanySetting::getSetting('currency', $company->id) !== $data['currency']) && |  | ||||||
|             $company->hasTransactions() |  | ||||||
|         ) { |  | ||||||
|             return response()->json([ |  | ||||||
|                 'success' => false, |  | ||||||
|                 'message' => 'Cannot update company currency after transactions are created.' |  | ||||||
|             ]); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         CompanySetting::setSettings($data, $request->header('company')); |  | ||||||
|  |  | ||||||
|         return response()->json([ |         return response()->json([ | ||||||
|             'success' => true, |             'success' => true, | ||||||
|  | |||||||
| @ -1,29 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Admin\Settings; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Http\Requests\SettingRequest; |  | ||||||
| use Crater\Models\Setting; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
|  |  | ||||||
| class UpdateSettingsController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Handle the incoming request. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function __invoke(SettingRequest $request) |  | ||||||
|     { |  | ||||||
|         $this->authorize('manage settings'); |  | ||||||
|  |  | ||||||
|         Setting::setSettings($request->settings); |  | ||||||
|  |  | ||||||
|         return response()->json([ |  | ||||||
|             'success' => true, |  | ||||||
|             $request->settings |  | ||||||
|         ]); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,56 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Customer\Auth; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Illuminate\Foundation\Auth\SendsPasswordResetEmails; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
| use Password; |  | ||||||
|  |  | ||||||
| class ForgotPasswordController extends Controller |  | ||||||
| { |  | ||||||
|     /* |  | ||||||
|     |-------------------------------------------------------------------------- |  | ||||||
|     | Password Reset Controller |  | ||||||
|     |-------------------------------------------------------------------------- |  | ||||||
|     | |  | ||||||
|     | This controller is responsible for handling password reset emails and |  | ||||||
|     | includes a trait which assists in sending these notifications from |  | ||||||
|     | your application to your users. Feel free to explore this trait. |  | ||||||
|     | |  | ||||||
|     */ |  | ||||||
|  |  | ||||||
|     use SendsPasswordResetEmails; |  | ||||||
|  |  | ||||||
|     public function broker() |  | ||||||
|     { |  | ||||||
|         return Password::broker('customers'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Get the response for a successful password reset link. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @param  string  $response |  | ||||||
|      * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse |  | ||||||
|      */ |  | ||||||
|     protected function sendResetLinkResponse(Request $request, $response) |  | ||||||
|     { |  | ||||||
|         return response()->json([ |  | ||||||
|             'message' => 'Password reset email sent.', |  | ||||||
|             'data' => $response, |  | ||||||
|         ]); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Get the response for a failed password reset link. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @param  string  $response |  | ||||||
|      * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse |  | ||||||
|      */ |  | ||||||
|     protected function sendResetLinkFailedResponse(Request $request, $response) |  | ||||||
|     { |  | ||||||
|         return response('Email could not be sent to this email address.', 403); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,45 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Customer\Auth; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Http\Requests\Customer\CustomerLoginRequest; |  | ||||||
| use Crater\Models\Company; |  | ||||||
| use Crater\Models\Customer; |  | ||||||
| use Hash; |  | ||||||
| use Illuminate\Support\Facades\Auth; |  | ||||||
| use Illuminate\Validation\ValidationException; |  | ||||||
|  |  | ||||||
| class LoginController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Handle the incoming request. |  | ||||||
|      * |  | ||||||
|      * @param  \Crater\Http\Requests\Customer\CustomerLoginRequest  $request |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function __invoke(CustomerLoginRequest $request, Company $company) |  | ||||||
|     { |  | ||||||
|         $user = Customer::where('email', $request->email) |  | ||||||
|             ->where('company_id', $company->id) |  | ||||||
|             ->first(); |  | ||||||
|  |  | ||||||
|         if (! $user || ! Hash::check($request->password, $user->password)) { |  | ||||||
|             throw ValidationException::withMessages([ |  | ||||||
|                 'email' => ['The provided credentials are incorrect.'], |  | ||||||
|             ]); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         if (! $user->enable_portal) { |  | ||||||
|             throw ValidationException::withMessages([ |  | ||||||
|                 'email' => ['Customer portal not available for this user.'], |  | ||||||
|             ]); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         Auth::guard('customer')->login($user); |  | ||||||
|  |  | ||||||
|         return response()->json([ |  | ||||||
|             'success' => true |  | ||||||
|         ]); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,83 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Customer\Auth; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Providers\RouteServiceProvider; |  | ||||||
| use Illuminate\Auth\Events\PasswordReset; |  | ||||||
| use Illuminate\Foundation\Auth\ResetsPasswords; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
| use Illuminate\Support\Str; |  | ||||||
| use Password; |  | ||||||
|  |  | ||||||
| class ResetPasswordController extends Controller |  | ||||||
| { |  | ||||||
|     /* |  | ||||||
|     |-------------------------------------------------------------------------- |  | ||||||
|     | Password Reset Controller |  | ||||||
|     |-------------------------------------------------------------------------- |  | ||||||
|     | |  | ||||||
|     | This controller is responsible for handling password reset requests |  | ||||||
|     | and uses a simple trait to include this behavior. You're free to |  | ||||||
|     | explore this trait and override any methods you wish to tweak. |  | ||||||
|     | |  | ||||||
|     */ |  | ||||||
|  |  | ||||||
|     use ResetsPasswords; |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Where to redirect users after resetting their password. |  | ||||||
|      * |  | ||||||
|      * @var string |  | ||||||
|      */ |  | ||||||
|     protected $redirectTo = RouteServiceProvider::CUSTOMER_HOME; |  | ||||||
|  |  | ||||||
|     public function broker() |  | ||||||
|     { |  | ||||||
|         return Password::broker('customers'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Get the response for a successful password reset. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @param  string  $response |  | ||||||
|      * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse |  | ||||||
|      */ |  | ||||||
|     protected function sendResetResponse(Request $request, $response) |  | ||||||
|     { |  | ||||||
|         return response()->json([ |  | ||||||
|             'message' => 'Password reset successfully.', |  | ||||||
|         ]); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Reset the given user's password. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Contracts\Auth\CanResetPassword  $user |  | ||||||
|      * @param  string  $password |  | ||||||
|      * @return void |  | ||||||
|      */ |  | ||||||
|     protected function resetPassword($user, $password) |  | ||||||
|     { |  | ||||||
|         $user->password = $password; |  | ||||||
|  |  | ||||||
|         $user->setRememberToken(Str::random(60)); |  | ||||||
|  |  | ||||||
|         $user->save(); |  | ||||||
|  |  | ||||||
|         event(new PasswordReset($user)); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Get the response for a failed password reset. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @param  string  $response |  | ||||||
|      * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse |  | ||||||
|      */ |  | ||||||
|     protected function sendResetFailedResponse(Request $request, $response) |  | ||||||
|     { |  | ||||||
|         return response('Failed, Invalid Token.', 403); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,36 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Customer\Estimate; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Http\Resources\Customer\EstimateResource; |  | ||||||
| use Crater\Models\Company; |  | ||||||
| use Crater\Models\Estimate; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
| use Illuminate\Support\Facades\Auth; |  | ||||||
|  |  | ||||||
| class AcceptEstimateController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|     * Handle the incoming request. |  | ||||||
|     * |  | ||||||
|     * @param  \Illuminate\Http\Request  $request |  | ||||||
|     * @param  Estimate $estimate |  | ||||||
|     * @return \Illuminate\Http\Response |  | ||||||
|     */ |  | ||||||
|     public function __invoke(Request $request, Company $company, $id) |  | ||||||
|     { |  | ||||||
|         $estimate = $company->estimates() |  | ||||||
|             ->whereCustomer(Auth::guard('customer')->id()) |  | ||||||
|             ->where('id', $id) |  | ||||||
|             ->first(); |  | ||||||
|  |  | ||||||
|         if (! $estimate) { |  | ||||||
|             return response()->json(['error' => 'estimate_not_found'], 404); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         $estimate->update($request->only('status')); |  | ||||||
|  |  | ||||||
|         return new EstimateResource($estimate); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,67 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Customer\Estimate; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Http\Resources\Customer\EstimateResource; |  | ||||||
| use Crater\Models\Company; |  | ||||||
| use Crater\Models\Estimate; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
| use Illuminate\Support\Facades\Auth; |  | ||||||
|  |  | ||||||
| class EstimatesController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Display a listing of the resource. |  | ||||||
|      * |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function index(Request $request) |  | ||||||
|     { |  | ||||||
|         $limit = $request->has('limit') ? $request->limit : 10; |  | ||||||
|  |  | ||||||
|         $estimates = Estimate::with([ |  | ||||||
|                 'items', |  | ||||||
|                 'customer', |  | ||||||
|                 'taxes', |  | ||||||
|                 'creator', |  | ||||||
|             ]) |  | ||||||
|             ->where('status', '<>', 'DRAFT') |  | ||||||
|             ->whereCustomer(Auth::guard('customer')->id()) |  | ||||||
|             ->applyFilters($request->only([ |  | ||||||
|                 'status', |  | ||||||
|                 'estimate_number', |  | ||||||
|                 'from_date', |  | ||||||
|                 'to_date', |  | ||||||
|                 'orderByField', |  | ||||||
|                 'orderBy', |  | ||||||
|             ])) |  | ||||||
|             ->latest() |  | ||||||
|             ->paginateData($limit); |  | ||||||
|  |  | ||||||
|         return (EstimateResource::collection($estimates)) |  | ||||||
|             ->additional(['meta' => [ |  | ||||||
|                 'estimateTotalCount' => Estimate::where('status', '<>', 'DRAFT')->whereCustomer(Auth::guard('customer')->id())->count(), |  | ||||||
|             ]]); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Display the specified resource. |  | ||||||
|      * |  | ||||||
|      * @param  Estimate $estimate |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function show(Company $company, $id) |  | ||||||
|     { |  | ||||||
|         $estimate = $company->estimates() |  | ||||||
|             ->whereCustomer(Auth::guard('customer')->id()) |  | ||||||
|             ->where('id', $id) |  | ||||||
|             ->first(); |  | ||||||
|  |  | ||||||
|         if (! $estimate) { |  | ||||||
|             return response()->json(['error' => 'estimate_not_found'], 404); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         return new EstimateResource($estimate); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -3,51 +3,41 @@ | |||||||
| namespace Crater\Http\Controllers\V1\Customer; | namespace Crater\Http\Controllers\V1\Customer; | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; | use Crater\Http\Controllers\Controller; | ||||||
| use Crater\Http\Resources\EstimateResource; |  | ||||||
| use Crater\Mail\EstimateViewedMail; | use Crater\Mail\EstimateViewedMail; | ||||||
| use Crater\Models\CompanySetting; | use Crater\Models\CompanySetting; | ||||||
| use Crater\Models\Customer; | use Crater\Models\Customer; | ||||||
| use Crater\Models\EmailLog; |  | ||||||
| use Crater\Models\Estimate; | use Crater\Models\Estimate; | ||||||
| use Illuminate\Http\Request; |  | ||||||
|  |  | ||||||
| class EstimatePdfController extends Controller | class EstimatePdfController extends Controller | ||||||
| { | { | ||||||
|     public function getPdf(EmailLog $emailLog, Request $request) |     /** | ||||||
|  |      * Handle the incoming request. | ||||||
|  |      * | ||||||
|  |      * @param  \Illuminate\Http\Request  $request | ||||||
|  |      * @return \Illuminate\Http\Response | ||||||
|  |      */ | ||||||
|  |     public function __invoke(Estimate $estimate) | ||||||
|     { |     { | ||||||
|         $estimate = Estimate::find($emailLog->mailable_id); |         if ($estimate && ($estimate->status == Estimate::STATUS_SENT || $estimate->status == Estimate::STATUS_DRAFT)) { | ||||||
|  |             $estimate->status = Estimate::STATUS_VIEWED; | ||||||
|  |             $estimate->save(); | ||||||
|  |             $notifyEstimateViewed = CompanySetting::getSetting( | ||||||
|  |                 'notify_estimate_viewed', | ||||||
|  |                 $estimate->company_id | ||||||
|  |             ); | ||||||
|  |  | ||||||
|         if (! $emailLog->isExpired()) { |             if ($notifyEstimateViewed == 'YES') { | ||||||
|             if ($estimate && ($estimate->status == Estimate::STATUS_SENT || $estimate->status == Estimate::STATUS_DRAFT)) { |                 $data['estimate'] = Estimate::findOrFail($estimate->id)->toArray(); | ||||||
|                 $estimate->status = Estimate::STATUS_VIEWED; |                 $data['user'] = Customer::find($estimate->customer_id)->toArray(); | ||||||
|                 $estimate->save(); |                 $notificationEmail = CompanySetting::getSetting( | ||||||
|                 $notifyEstimateViewed = CompanySetting::getSetting( |                     'notification_email', | ||||||
|                     'notify_estimate_viewed', |  | ||||||
|                     $estimate->company_id |                     $estimate->company_id | ||||||
|                 ); |                 ); | ||||||
|  |  | ||||||
|                 if ($notifyEstimateViewed == 'YES') { |                 \Mail::to($notificationEmail)->send(new EstimateViewedMail($data)); | ||||||
|                     $data['estimate'] = Estimate::findOrFail($estimate->id)->toArray(); |  | ||||||
|                     $data['user'] = Customer::find($estimate->customer_id)->toArray(); |  | ||||||
|                     $notificationEmail = CompanySetting::getSetting( |  | ||||||
|                         'notification_email', |  | ||||||
|                         $estimate->company_id |  | ||||||
|                     ); |  | ||||||
|  |  | ||||||
|                     \Mail::to($notificationEmail)->send(new EstimateViewedMail($data)); |  | ||||||
|                 } |  | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             return $estimate->getGeneratedPDFOrStream('estimate'); |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         abort(403, 'Link Expired.'); |         return $estimate->getGeneratedPDFOrStream('estimate'); | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function getEstimate(EmailLog $emailLog) |  | ||||||
|     { |  | ||||||
|         $estimate = Estimate::find($emailLog->mailable_id); |  | ||||||
|  |  | ||||||
|         return new EstimateResource($estimate); |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,59 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Customer\Expense; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Http\Resources\Customer\ExpenseResource; |  | ||||||
| use Crater\Models\Company; |  | ||||||
| use Crater\Models\Expense; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
| use Illuminate\Support\Facades\Auth; |  | ||||||
|  |  | ||||||
| class ExpensesController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Display a listing of the resource. |  | ||||||
|      * |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function index(Request $request) |  | ||||||
|     { |  | ||||||
|         $limit = $request->has('limit') ? $request->limit : 10; |  | ||||||
|  |  | ||||||
|         $expenses = Expense::with('category', 'creator', 'fields') |  | ||||||
|             ->whereUser(Auth::guard('customer')->id()) |  | ||||||
|             ->applyFilters($request->only([ |  | ||||||
|                 'expense_category_id', |  | ||||||
|                 'from_date', |  | ||||||
|                 'to_date', |  | ||||||
|                 'orderByField', |  | ||||||
|                 'orderBy', |  | ||||||
|             ])) |  | ||||||
|             ->paginateData($limit); |  | ||||||
|  |  | ||||||
|         return (ExpenseResource::collection($expenses)) |  | ||||||
|             ->additional(['meta' => [ |  | ||||||
|                 'expenseTotalCount' => Expense::whereCustomer(Auth::guard('customer')->id())->count(), |  | ||||||
|             ]]); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Display the specified resource. |  | ||||||
|      * |  | ||||||
|      * @param  \Crater\Models\Expense  $expense |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function show(Company $company, $id) |  | ||||||
|     { |  | ||||||
|         $expense = $company->expenses() |  | ||||||
|             ->whereUser(Auth::guard('customer')->id()) |  | ||||||
|             ->where('id', $id) |  | ||||||
|             ->first(); |  | ||||||
|  |  | ||||||
|         if (! $expense) { |  | ||||||
|             return response()->json(['error' => 'expense_not_found'], 404); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         return new ExpenseResource($expense); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,40 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Customer\General; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Http\Resources\Customer\CustomerResource; |  | ||||||
| use Crater\Models\Currency; |  | ||||||
| use Crater\Models\Module; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
| use Illuminate\Support\Facades\Auth; |  | ||||||
|  |  | ||||||
| class BootstrapController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Handle the incoming request. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function __invoke(Request $request) |  | ||||||
|     { |  | ||||||
|         $customer = Auth::guard('customer')->user(); |  | ||||||
|  |  | ||||||
|         foreach (\Menu::get('customer_portal_menu')->items->toArray() as $data) { |  | ||||||
|             if ($customer) { |  | ||||||
|                 $menu[] = [ |  | ||||||
|                     'title' => $data->title, |  | ||||||
|                     'link' => $data->link->path['url'], |  | ||||||
|                 ]; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         return (new CustomerResource($customer)) |  | ||||||
|             ->additional(['meta' => [ |  | ||||||
|                 'menu' => $menu, |  | ||||||
|                 'current_customer_currency' => Currency::find($customer->currency_id), |  | ||||||
|                 'modules' => Module::where('enabled', true)->pluck('name'), |  | ||||||
|             ]]); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,45 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Customer\General; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Models\Estimate; |  | ||||||
| use Crater\Models\Invoice; |  | ||||||
| use Crater\Models\Payment; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
| use Illuminate\Support\Facades\Auth; |  | ||||||
|  |  | ||||||
| class DashboardController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Handle the incoming request. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function __invoke(Request $request) |  | ||||||
|     { |  | ||||||
|         $user = Auth::guard('customer')->user(); |  | ||||||
|  |  | ||||||
|         $amountDue = Invoice::whereCustomer($user->id) |  | ||||||
|             ->where('status', '<>', 'DRAFT') |  | ||||||
|             ->sum('due_amount'); |  | ||||||
|         $invoiceCount = Invoice::whereCustomer($user->id) |  | ||||||
|             ->where('status', '<>', 'DRAFT') |  | ||||||
|             ->count(); |  | ||||||
|         $estimatesCount = Estimate::whereCustomer($user->id) |  | ||||||
|             ->where('status', '<>', 'DRAFT') |  | ||||||
|             ->count(); |  | ||||||
|         $paymentCount = Payment::whereCustomer($user->id) |  | ||||||
|             ->count(); |  | ||||||
|  |  | ||||||
|         return response()->json([ |  | ||||||
|             'due_amount' => $amountDue, |  | ||||||
|             'recentInvoices' => Invoice::whereCustomer($user->id)->where('status', '<>', 'DRAFT')->take(5)->latest()->get(), |  | ||||||
|             'recentEstimates' => Estimate::whereCustomer($user->id)->where('status', '<>', 'DRAFT')->take(5)->latest()->get(), |  | ||||||
|             'invoice_count' => $invoiceCount, |  | ||||||
|             'estimate_count' => $estimatesCount, |  | ||||||
|             'payment_count' => $paymentCount, |  | ||||||
|         ]); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,49 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Customer\General; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Http\Requests\Customer\CustomerProfileRequest; |  | ||||||
| use Crater\Http\Resources\Customer\CustomerResource; |  | ||||||
| use Crater\Models\Company; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
| use Illuminate\Support\Facades\Auth; |  | ||||||
|  |  | ||||||
| class ProfileController extends Controller |  | ||||||
| { |  | ||||||
|     public function updateProfile(Company $company, CustomerProfileRequest $request) |  | ||||||
|     { |  | ||||||
|         $customer = Auth::guard('customer')->user(); |  | ||||||
|  |  | ||||||
|         $customer->update($request->validated()); |  | ||||||
|  |  | ||||||
|         if (isset($request->is_customer_avatar_removed) && (bool) $request->is_customer_avatar_removed) { |  | ||||||
|             $customer->clearMediaCollection('customer_avatar'); |  | ||||||
|         } |  | ||||||
|         if ($customer && $request->hasFile('customer_avatar')) { |  | ||||||
|             $customer->clearMediaCollection('customer_avatar'); |  | ||||||
|  |  | ||||||
|             $customer->addMediaFromRequest('customer_avatar') |  | ||||||
|             ->toMediaCollection('customer_avatar'); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         if ($request->billing !== null) { |  | ||||||
|             $customer->shippingAddress()->delete(); |  | ||||||
|             $customer->addresses()->create($request->getShippingAddress()); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         if ($request->shipping !== null) { |  | ||||||
|             $customer->billingAddress()->delete(); |  | ||||||
|             $customer->addresses()->create($request->getBillingAddress()); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         return new CustomerResource($customer); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function getUser(Request $request) |  | ||||||
|     { |  | ||||||
|         $customer = Auth::guard('customer')->user(); |  | ||||||
|  |  | ||||||
|         return new CustomerResource($customer); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,49 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Customer\Invoice; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Http\Resources\Customer\InvoiceResource; |  | ||||||
| use Crater\Models\Company; |  | ||||||
| use Crater\Models\Invoice; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
| use Illuminate\Support\Facades\Auth; |  | ||||||
|  |  | ||||||
| class InvoicesController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Display a listing of the resource. |  | ||||||
|      * |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function index(Request $request) |  | ||||||
|     { |  | ||||||
|         $limit = $request->has('limit') ? $request->limit : 10; |  | ||||||
|  |  | ||||||
|         $invoices = Invoice::with(['items', 'customer', 'creator', 'taxes']) |  | ||||||
|             ->where('status', '<>', 'DRAFT') |  | ||||||
|             ->applyFilters($request->all()) |  | ||||||
|             ->whereCustomer(Auth::guard('customer')->id()) |  | ||||||
|             ->latest() |  | ||||||
|             ->paginateData($limit); |  | ||||||
|  |  | ||||||
|         return (InvoiceResource::collection($invoices)) |  | ||||||
|             ->additional(['meta' => [ |  | ||||||
|                 'invoiceTotalCount' => Invoice::where('status', '<>', 'DRAFT')->whereCustomer(Auth::guard('customer')->id())->count(), |  | ||||||
|             ]]); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function show(Company $company, $id) |  | ||||||
|     { |  | ||||||
|         $invoice = $company->invoices() |  | ||||||
|             ->whereCustomer(Auth::guard('customer')->id()) |  | ||||||
|             ->where('id', $id) |  | ||||||
|             ->first(); |  | ||||||
|  |  | ||||||
|         if (! $invoice) { |  | ||||||
|             return response()->json(['error' => 'invoice_not_found'], 404); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         return new InvoiceResource($invoice); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -3,59 +3,42 @@ | |||||||
| namespace Crater\Http\Controllers\V1\Customer; | namespace Crater\Http\Controllers\V1\Customer; | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; | use Crater\Http\Controllers\Controller; | ||||||
| use Crater\Http\Resources\Customer\InvoiceResource as CustomerInvoiceResource; |  | ||||||
| use Crater\Mail\InvoiceViewedMail; | use Crater\Mail\InvoiceViewedMail; | ||||||
| use Crater\Models\CompanySetting; | use Crater\Models\CompanySetting; | ||||||
| use Crater\Models\Customer; | use Crater\Models\Customer; | ||||||
| use Crater\Models\EmailLog; |  | ||||||
| use Crater\Models\Invoice; | use Crater\Models\Invoice; | ||||||
| use Illuminate\Http\Request; |  | ||||||
|  |  | ||||||
| class InvoicePdfController extends Controller | class InvoicePdfController extends Controller | ||||||
| { | { | ||||||
|     public function getPdf(EmailLog $emailLog, Request $request) |     /** | ||||||
|  |      * Handle the incoming request. | ||||||
|  |      * | ||||||
|  |      * @param  \Illuminate\Http\Request  $request | ||||||
|  |      * @return \Illuminate\Http\Response | ||||||
|  |      */ | ||||||
|  |     public function __invoke(Invoice $invoice) | ||||||
|     { |     { | ||||||
|         $invoice = Invoice::find($emailLog->mailable_id); |         if ($invoice && ($invoice->status == Invoice::STATUS_SENT || $invoice->status == Invoice::STATUS_DRAFT)) { | ||||||
|  |             $invoice->status = Invoice::STATUS_VIEWED; | ||||||
|  |             $invoice->viewed = true; | ||||||
|  |             $invoice->save(); | ||||||
|  |             $notifyInvoiceViewed = CompanySetting::getSetting( | ||||||
|  |                 'notify_invoice_viewed', | ||||||
|  |                 $invoice->company_id | ||||||
|  |             ); | ||||||
|  |  | ||||||
|         if (! $emailLog->isExpired()) { |             if ($notifyInvoiceViewed == 'YES') { | ||||||
|             if ($invoice && ($invoice->status == Invoice::STATUS_SENT || $invoice->status == Invoice::STATUS_DRAFT)) { |                 $data['invoice'] = Invoice::findOrFail($invoice->id)->toArray(); | ||||||
|                 $invoice->status = Invoice::STATUS_VIEWED; |                 $data['user'] = Customer::find($invoice->customer_id)->toArray(); | ||||||
|                 $invoice->viewed = true; |                 $notificationEmail = CompanySetting::getSetting( | ||||||
|                 $invoice->save(); |                     'notification_email', | ||||||
|                 $notifyInvoiceViewed = CompanySetting::getSetting( |  | ||||||
|                     'notify_invoice_viewed', |  | ||||||
|                     $invoice->company_id |                     $invoice->company_id | ||||||
|                 ); |                 ); | ||||||
|  |  | ||||||
|                 if ($notifyInvoiceViewed == 'YES') { |                 \Mail::to($notificationEmail)->send(new InvoiceViewedMail($data)); | ||||||
|                     $data['invoice'] = Invoice::findOrFail($invoice->id)->toArray(); |  | ||||||
|                     $data['user'] = Customer::find($invoice->customer_id)->toArray(); |  | ||||||
|                     $notificationEmail = CompanySetting::getSetting( |  | ||||||
|                         'notification_email', |  | ||||||
|                         $invoice->company_id |  | ||||||
|                     ); |  | ||||||
|  |  | ||||||
|                     \Mail::to($notificationEmail)->send(new InvoiceViewedMail($data)); |  | ||||||
|                 } |  | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             if ($request->has('pdf')) { |  | ||||||
|                 return $invoice->getGeneratedPDFOrStream('invoice'); |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             return view('app')->with([ |  | ||||||
|                 'customer_logo' => get_company_setting('customer_portal_logo', $invoice->company_id), |  | ||||||
|                 'current_theme' => get_company_setting('customer_portal_theme', $invoice->company_id) |  | ||||||
|             ]); |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         abort(403, 'Link Expired.'); |         return $invoice->getGeneratedPDFOrStream('invoice'); | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function getInvoice(EmailLog $emailLog) |  | ||||||
|     { |  | ||||||
|         $invoice = Invoice::find($emailLog->mailable_id); |  | ||||||
|  |  | ||||||
|         return new CustomerInvoiceResource($invoice); |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,23 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Customer\Payment; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Http\Resources\Customer\PaymentMethodResource; |  | ||||||
| use Crater\Models\Company; |  | ||||||
| use Crater\Models\PaymentMethod; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
|  |  | ||||||
| class PaymentMethodController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Handle the incoming request. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function __invoke(Request $request, Company $company) |  | ||||||
|     { |  | ||||||
|         return PaymentMethodResource::collection(PaymentMethod::where('company_id', $company->id)->get()); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,61 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Customer\Payment; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Http\Resources\Customer\PaymentResource; |  | ||||||
| use Crater\Models\Company; |  | ||||||
| use Crater\Models\Payment; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
| use Illuminate\Support\Facades\Auth; |  | ||||||
|  |  | ||||||
| class PaymentsController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Display a listing of the resource. |  | ||||||
|      * |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function index(Request $request) |  | ||||||
|     { |  | ||||||
|         $limit = $request->has('limit') ? $request->limit : 10; |  | ||||||
|  |  | ||||||
|         $payments = Payment::with(['customer', 'invoice', 'paymentMethod', 'creator']) |  | ||||||
|             ->whereCustomer(Auth::guard('customer')->id()) |  | ||||||
|             ->leftJoin('invoices', 'invoices.id', '=', 'payments.invoice_id') |  | ||||||
|             ->applyFilters($request->only([ |  | ||||||
|                 'payment_number', |  | ||||||
|                 'payment_method_id', |  | ||||||
|                 'orderByField', |  | ||||||
|                 'orderBy', |  | ||||||
|             ])) |  | ||||||
|             ->select('payments.*', 'invoices.invoice_number') |  | ||||||
|             ->latest() |  | ||||||
|             ->paginateData($limit); |  | ||||||
|  |  | ||||||
|         return (PaymentResource::collection($payments)) |  | ||||||
|             ->additional(['meta' => [ |  | ||||||
|                 'paymentTotalCount' => Payment::whereCustomer(Auth::guard('customer')->id())->count(), |  | ||||||
|             ]]); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Display the specified resource. |  | ||||||
|      * |  | ||||||
|      * @param  \Crater\Models\Payment  $payment |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function show(Company $company, $id) |  | ||||||
|     { |  | ||||||
|         $payment = $company->payments() |  | ||||||
|             ->whereCustomer(Auth::guard('customer')->id()) |  | ||||||
|             ->where('id', $id) |  | ||||||
|             ->first(); |  | ||||||
|  |  | ||||||
|         if (! $payment) { |  | ||||||
|             return response()->json(['error' => 'payment_not_found'], 404); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         return new PaymentResource($payment); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,28 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Customer; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Http\Resources\PaymentResource; |  | ||||||
| use Crater\Models\EmailLog; |  | ||||||
| use Crater\Models\Payment; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
|  |  | ||||||
| class PaymentPdfController extends Controller |  | ||||||
| { |  | ||||||
|     public function getPdf(EmailLog $emailLog, Request $request) |  | ||||||
|     { |  | ||||||
|         if (! $emailLog->isExpired()) { |  | ||||||
|             return $emailLog->mailable->getGeneratedPDFOrStream('payment'); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         abort(403, 'Link Expired.'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function getPayment(EmailLog $emailLog) |  | ||||||
|     { |  | ||||||
|         $payment = Payment::find($emailLog->mailable_id); |  | ||||||
|  |  | ||||||
|         return new PaymentResource($payment); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,35 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Modules; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Services\Module\ModuleFacade; |  | ||||||
| use DateTime; |  | ||||||
| use Illuminate\Support\Arr; |  | ||||||
| use Request; |  | ||||||
|  |  | ||||||
| class ScriptController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Serve the requested script. |  | ||||||
|      * |  | ||||||
|      * @param  \Request  $request |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      * |  | ||||||
|      * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException |  | ||||||
|      */ |  | ||||||
|     public function __invoke(Request $request, string $script) |  | ||||||
|     { |  | ||||||
|         $path = Arr::get(ModuleFacade::allScripts(), $script); |  | ||||||
|  |  | ||||||
|         abort_if(is_null($path), 404); |  | ||||||
|  |  | ||||||
|         return response( |  | ||||||
|             file_get_contents($path), |  | ||||||
|             200, |  | ||||||
|             [ |  | ||||||
|                 'Content-Type' => 'application/javascript', |  | ||||||
|             ] |  | ||||||
|         )->setLastModified(DateTime::createFromFormat('U', filemtime($path))); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,35 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Modules; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Crater\Services\Module\ModuleFacade; |  | ||||||
| use DateTime; |  | ||||||
| use Illuminate\Support\Arr; |  | ||||||
| use Request; |  | ||||||
|  |  | ||||||
| class StyleController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Serve the requested stylesheet. |  | ||||||
|      * |  | ||||||
|      * @param  \Request  $request |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      * |  | ||||||
|      * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException |  | ||||||
|      */ |  | ||||||
|     public function __invoke(Request $request, string $style) |  | ||||||
|     { |  | ||||||
|         $path = Arr::get(ModuleFacade::allStyles(), $style); |  | ||||||
|  |  | ||||||
|         abort_if(is_null($path), 404); |  | ||||||
|  |  | ||||||
|         return response( |  | ||||||
|             file_get_contents($path), |  | ||||||
|             200, |  | ||||||
|             [ |  | ||||||
|                 'Content-Type' => 'text/css', |  | ||||||
|             ] |  | ||||||
|         )->setLastModified(DateTime::createFromFormat('U', filemtime($path))); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -17,8 +17,6 @@ class DownloadReceiptController extends Controller | |||||||
|      */ |      */ | ||||||
|     public function __invoke(Expense $expense) |     public function __invoke(Expense $expense) | ||||||
|     { |     { | ||||||
|         $this->authorize('view', $expense); |  | ||||||
|  |  | ||||||
|         if ($expense) { |         if ($expense) { | ||||||
|             $media = $expense->getFirstMedia('receipts'); |             $media = $expense->getFirstMedia('receipts'); | ||||||
|             if ($media) { |             if ($media) { | ||||||
|  | |||||||
| @ -4,7 +4,6 @@ namespace Crater\Http\Controllers\V1\PDF; | |||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; | use Crater\Http\Controllers\Controller; | ||||||
| use Crater\Models\Estimate; | use Crater\Models\Estimate; | ||||||
| use Illuminate\Http\Request; |  | ||||||
|  |  | ||||||
| class EstimatePdfController extends Controller | class EstimatePdfController extends Controller | ||||||
| { | { | ||||||
| @ -14,13 +13,8 @@ class EstimatePdfController extends Controller | |||||||
|      * @param  \Illuminate\Http\Request  $request |      * @param  \Illuminate\Http\Request  $request | ||||||
|      * @return \Illuminate\Http\Response |      * @return \Illuminate\Http\Response | ||||||
|      */ |      */ | ||||||
|     public function __invoke(Request $request, Estimate $estimate) |     public function __invoke(Estimate $estimate) | ||||||
|     { |     { | ||||||
|         if ($request->has('preview')) { |  | ||||||
|             return $estimate->getPDFData(); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         return $estimate->getGeneratedPDFOrStream('estimate'); |         return $estimate->getGeneratedPDFOrStream('estimate'); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -4,7 +4,6 @@ namespace Crater\Http\Controllers\V1\PDF; | |||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; | use Crater\Http\Controllers\Controller; | ||||||
| use Crater\Models\Invoice; | use Crater\Models\Invoice; | ||||||
| use Illuminate\Http\Request; |  | ||||||
|  |  | ||||||
| class InvoicePdfController extends Controller | class InvoicePdfController extends Controller | ||||||
| { | { | ||||||
| @ -14,12 +13,8 @@ class InvoicePdfController extends Controller | |||||||
|      * @param  \Illuminate\Http\Request  $request |      * @param  \Illuminate\Http\Request  $request | ||||||
|      * @return \Illuminate\Http\Response |      * @return \Illuminate\Http\Response | ||||||
|      */ |      */ | ||||||
|     public function __invoke(Request $request, Invoice $invoice) |     public function __invoke(Invoice $invoice) | ||||||
|     { |     { | ||||||
|         if ($request->has('preview')) { |  | ||||||
|             return $invoice->getPDFData(); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         return $invoice->getGeneratedPDFOrStream('invoice'); |         return $invoice->getGeneratedPDFOrStream('invoice'); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -4,7 +4,6 @@ namespace Crater\Http\Controllers\V1\PDF; | |||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; | use Crater\Http\Controllers\Controller; | ||||||
| use Crater\Models\Payment; | use Crater\Models\Payment; | ||||||
| use Illuminate\Http\Request; |  | ||||||
|  |  | ||||||
| class PaymentPdfController extends Controller | class PaymentPdfController extends Controller | ||||||
| { | { | ||||||
| @ -14,12 +13,8 @@ class PaymentPdfController extends Controller | |||||||
|      * @param  \Illuminate\Http\Request  $request |      * @param  \Illuminate\Http\Request  $request | ||||||
|      * @return \Illuminate\Http\Response |      * @return \Illuminate\Http\Response | ||||||
|      */ |      */ | ||||||
|     public function __invoke(Request $request, Payment $payment) |     public function __invoke(Payment $payment) | ||||||
|     { |     { | ||||||
|         if ($request->has('preview')) { |  | ||||||
|             return view('app.pdf.payment.payment'); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         return $payment->getGeneratedPDFOrStream('payment'); |         return $payment->getGeneratedPDFOrStream('payment'); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,23 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Controllers\V1\Webhook; |  | ||||||
|  |  | ||||||
| use Crater\Http\Controllers\Controller; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
| use Illuminate\Support\Facades\Artisan; |  | ||||||
|  |  | ||||||
| class CronJobController extends Controller |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Handle the incoming request. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return \Illuminate\Http\Response |  | ||||||
|      */ |  | ||||||
|     public function __invoke(Request $request) |  | ||||||
|     { |  | ||||||
|         Artisan::call('schedule:run'); |  | ||||||
|  |  | ||||||
|         return response()->json(['success' => true]); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -69,9 +69,6 @@ class Kernel extends HttpKernel | |||||||
|         'redirect-if-unauthenticated' => \Crater\Http\Middleware\RedirectIfUnauthorized::class, |         'redirect-if-unauthenticated' => \Crater\Http\Middleware\RedirectIfUnauthorized::class, | ||||||
|         'customer-guest' => \Crater\Http\Middleware\CustomerGuest::class, |         'customer-guest' => \Crater\Http\Middleware\CustomerGuest::class, | ||||||
|         'company' => \Crater\Http\Middleware\CompanyMiddleware::class, |         'company' => \Crater\Http\Middleware\CompanyMiddleware::class, | ||||||
|         'pdf-auth' => \Crater\Http\Middleware\PdfMiddleware::class, |  | ||||||
|         'cron-job' => \Crater\Http\Middleware\CronJobMiddleware::class, |  | ||||||
|         'customer-portal' => \Crater\Http\Middleware\CustomerPortalMiddleware::class, |  | ||||||
|     ]; |     ]; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|  | |||||||
| @ -3,6 +3,7 @@ | |||||||
| namespace Crater\Http\Middleware; | namespace Crater\Http\Middleware; | ||||||
|  |  | ||||||
| use Closure; | use Closure; | ||||||
|  | use Crater\Models\CompanySetting; | ||||||
| use Crater\Models\FileDisk; | use Crater\Models\FileDisk; | ||||||
|  |  | ||||||
| class ConfigMiddleware | class ConfigMiddleware | ||||||
| @ -17,6 +18,15 @@ class ConfigMiddleware | |||||||
|     public function handle($request, Closure $next) |     public function handle($request, Closure $next) | ||||||
|     { |     { | ||||||
|         if (\Storage::disk('local')->has('database_created')) { |         if (\Storage::disk('local')->has('database_created')) { | ||||||
|  |             $setting = CompanySetting::getSetting('time_zone', $request->header('company')); | ||||||
|  |  | ||||||
|  |             $timezone = config('app.timezone'); | ||||||
|  |  | ||||||
|  |             if ($setting && $setting != null && $setting != $timezone) { | ||||||
|  |                 config(['app.timezone' => $setting]); | ||||||
|  |                 date_default_timezone_set($setting); | ||||||
|  |             } | ||||||
|  |  | ||||||
|             if ($request->has('file_disk_id')) { |             if ($request->has('file_disk_id')) { | ||||||
|                 $file_disk = FileDisk::find($request->file_disk_id); |                 $file_disk = FileDisk::find($request->file_disk_id); | ||||||
|             } else { |             } else { | ||||||
|  | |||||||
| @ -1,25 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Middleware; |  | ||||||
|  |  | ||||||
| use Closure; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
|  |  | ||||||
| class CronJobMiddleware |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Handle an incoming request. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @param  \Closure  $next |  | ||||||
|      * @return mixed |  | ||||||
|      */ |  | ||||||
|     public function handle(Request $request, Closure $next) |  | ||||||
|     { |  | ||||||
|         if ($request->header('x-authorization-token') && $request->header('x-authorization-token') == config('services.cron_job.auth_token')) { |  | ||||||
|             return $next($request); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         return response()->json(['unauthorized'], 401); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,30 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Middleware; |  | ||||||
|  |  | ||||||
| use Closure; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
| use Illuminate\Support\Facades\Auth; |  | ||||||
|  |  | ||||||
| class CustomerPortalMiddleware |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Handle an incoming request. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @param  \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse)  $next |  | ||||||
|      * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse |  | ||||||
|      */ |  | ||||||
|     public function handle(Request $request, Closure $next) |  | ||||||
|     { |  | ||||||
|         $user = Auth::guard('customer')->user(); |  | ||||||
|  |  | ||||||
|         if (! $user->enable_portal) { |  | ||||||
|             Auth::guard('customer')->logout(); |  | ||||||
|  |  | ||||||
|             return response('Unauthorized.', 401); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         return $next($request); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,26 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Middleware; |  | ||||||
|  |  | ||||||
| use Closure; |  | ||||||
| use Illuminate\Http\Request; |  | ||||||
| use Illuminate\Support\Facades\Auth; |  | ||||||
|  |  | ||||||
| class PdfMiddleware |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Handle an incoming request. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @param  \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse)  $next |  | ||||||
|      * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse |  | ||||||
|      */ |  | ||||||
|     public function handle(Request $request, Closure $next) |  | ||||||
|     { |  | ||||||
|         if (Auth::guard('web')->check() || Auth::guard('sanctum')->check() || Auth::guard('customer')->check()) { |  | ||||||
|             return $next($request); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         return redirect('/login'); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,40 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Requests; |  | ||||||
|  |  | ||||||
| use Crater\Rules\Base64Mime; |  | ||||||
| use Illuminate\Foundation\Http\FormRequest; |  | ||||||
|  |  | ||||||
| class AvatarRequest extends FormRequest |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Determine if the user is authorized to make this request. |  | ||||||
|      * |  | ||||||
|      * @return bool |  | ||||||
|      */ |  | ||||||
|     public function authorize() |  | ||||||
|     { |  | ||||||
|         return true; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Get the validation rules that apply to the request. |  | ||||||
|      * |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function rules() |  | ||||||
|     { |  | ||||||
|         return [ |  | ||||||
|             'admin_avatar' => [ |  | ||||||
|                 'nullable', |  | ||||||
|                 'file', |  | ||||||
|                 'mimes:gif,jpg,png', |  | ||||||
|                 'max:20000' |  | ||||||
|             ], |  | ||||||
|             'avatar' => [ |  | ||||||
|                 'nullable', |  | ||||||
|                 new Base64Mime(['gif', 'jpg', 'png']) |  | ||||||
|             ] |  | ||||||
|         ]; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -3,7 +3,6 @@ | |||||||
| namespace Crater\Http\Requests; | namespace Crater\Http\Requests; | ||||||
|  |  | ||||||
| use Illuminate\Foundation\Http\FormRequest; | use Illuminate\Foundation\Http\FormRequest; | ||||||
| use Illuminate\Support\Str; |  | ||||||
| use Illuminate\Validation\Rule; | use Illuminate\Validation\Rule; | ||||||
|  |  | ||||||
| class CompaniesRequest extends FormRequest | class CompaniesRequest extends FormRequest | ||||||
| @ -71,8 +70,7 @@ class CompaniesRequest extends FormRequest | |||||||
|                 'name' |                 'name' | ||||||
|             ]) |             ]) | ||||||
|             ->merge([ |             ->merge([ | ||||||
|                 'owner_id' => $this->user()->id, |                 'owner_id' => $this->user()->id | ||||||
|                 'slug' => Str::slug($this->name) |  | ||||||
|             ]) |             ]) | ||||||
|             ->toArray(); |             ->toArray(); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -1,34 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Requests; |  | ||||||
|  |  | ||||||
| use Crater\Rules\Base64Mime; |  | ||||||
| use Illuminate\Foundation\Http\FormRequest; |  | ||||||
|  |  | ||||||
| class CompanyLogoRequest extends FormRequest |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Determine if the user is authorized to make this request. |  | ||||||
|      * |  | ||||||
|      * @return bool |  | ||||||
|      */ |  | ||||||
|     public function authorize() |  | ||||||
|     { |  | ||||||
|         return true; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Get the validation rules that apply to the request. |  | ||||||
|      * |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function rules() |  | ||||||
|     { |  | ||||||
|         return [ |  | ||||||
|             'company_logo' => [ |  | ||||||
|                 'nullable', |  | ||||||
|                 new Base64Mime(['gif', 'jpg', 'png']) |  | ||||||
|             ] |  | ||||||
|         ]; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -29,22 +29,9 @@ class CompanyRequest extends FormRequest | |||||||
|                 'required', |                 'required', | ||||||
|                 Rule::unique('companies')->ignore($this->header('company'), 'id'), |                 Rule::unique('companies')->ignore($this->header('company'), 'id'), | ||||||
|             ], |             ], | ||||||
|             'slug' => [ |  | ||||||
|                 'nullable' |  | ||||||
|             ], |  | ||||||
|             'address.country_id' => [ |             'address.country_id' => [ | ||||||
|                 'required', |                 'required', | ||||||
|             ], |             ], | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public function getCompanyPayload() |  | ||||||
|     { |  | ||||||
|         return collect($this->validated()) |  | ||||||
|             ->only([ |  | ||||||
|                 'name', |  | ||||||
|                 'slug' |  | ||||||
|             ]) |  | ||||||
|             ->toArray(); |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,37 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Requests\Customer; |  | ||||||
|  |  | ||||||
| use Illuminate\Foundation\Http\FormRequest; |  | ||||||
|  |  | ||||||
| class CustomerLoginRequest extends FormRequest |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Determine if the user is authorized to make this request. |  | ||||||
|      * |  | ||||||
|      * @return bool |  | ||||||
|      */ |  | ||||||
|     public function authorize() |  | ||||||
|     { |  | ||||||
|         return true; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Get the validation rules that apply to the request. |  | ||||||
|      * |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function rules() |  | ||||||
|     { |  | ||||||
|         return [ |  | ||||||
|             'email' => [ |  | ||||||
|                 'required', |  | ||||||
|                 'string' |  | ||||||
|             ], |  | ||||||
|             'password' => [ |  | ||||||
|                 'required', |  | ||||||
|                 'string' |  | ||||||
|             ] |  | ||||||
|         ]; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,33 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Requests; |  | ||||||
|  |  | ||||||
| use Illuminate\Foundation\Http\FormRequest; |  | ||||||
|  |  | ||||||
| class CustomerEstimateStatusRequest extends FormRequest |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Determine if the user is authorized to make this request. |  | ||||||
|      * |  | ||||||
|      * @return bool |  | ||||||
|      */ |  | ||||||
|     public function authorize() |  | ||||||
|     { |  | ||||||
|         return true; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Get the validation rules that apply to the request. |  | ||||||
|      * |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function rules() |  | ||||||
|     { |  | ||||||
|         return [ |  | ||||||
|             'status' => [ |  | ||||||
|                 'required', |  | ||||||
|                 'in:ACCEPTED,REJECTED', |  | ||||||
|             ] |  | ||||||
|         ]; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -54,8 +54,7 @@ class CustomerRequest extends FormRequest | |||||||
|                 'nullable', |                 'nullable', | ||||||
|             ], |             ], | ||||||
|             'enable_portal' => [ |             'enable_portal' => [ | ||||||
|  |                 'nullable', | ||||||
|                 'boolean' |  | ||||||
|             ], |             ], | ||||||
|             'currency_id' => [ |             'currency_id' => [ | ||||||
|                 'nullable', |                 'nullable', | ||||||
| @ -120,7 +119,7 @@ class CustomerRequest extends FormRequest | |||||||
|             $rules['email'] = [ |             $rules['email'] = [ | ||||||
|                 'email', |                 'email', | ||||||
|                 'nullable', |                 'nullable', | ||||||
|                 Rule::unique('customers')->where('company_id', $this->header('company'))->ignore($this->route('customer')->id), |                 Rule::unique('customers')->ignore($this->route('customer')->id), | ||||||
|             ]; |             ]; | ||||||
|         }; |         }; | ||||||
|  |  | ||||||
|  | |||||||
| @ -51,12 +51,6 @@ class ExpenseRequest extends FormRequest | |||||||
|             'currency_id' => [ |             'currency_id' => [ | ||||||
|                 'required' |                 'required' | ||||||
|             ], |             ], | ||||||
|             'attachment_receipt' => [ |  | ||||||
|                 'nullable', |  | ||||||
|                 'file', |  | ||||||
|                 'mimes:jpg,png,pdf,doc,docx,xls,xlsx,ppt,pptx', |  | ||||||
|                 'max:20000' |  | ||||||
|             ] |  | ||||||
|         ]; |         ]; | ||||||
|  |  | ||||||
|         if ($companyCurrency && $this->currency_id) { |         if ($companyCurrency && $this->currency_id) { | ||||||
|  | |||||||
| @ -1,33 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Requests; |  | ||||||
|  |  | ||||||
| use Illuminate\Foundation\Http\FormRequest; |  | ||||||
|  |  | ||||||
| class GetSettingRequest extends FormRequest |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Determine if the user is authorized to make this request. |  | ||||||
|      * |  | ||||||
|      * @return bool |  | ||||||
|      */ |  | ||||||
|     public function authorize() |  | ||||||
|     { |  | ||||||
|         return true; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Get the validation rules that apply to the request. |  | ||||||
|      * |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function rules() |  | ||||||
|     { |  | ||||||
|         return [ |  | ||||||
|             'key' => [ |  | ||||||
|                 'required', |  | ||||||
|                 'string' |  | ||||||
|             ] |  | ||||||
|         ]; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -2,7 +2,6 @@ | |||||||
|  |  | ||||||
| namespace Crater\Http\Requests; | namespace Crater\Http\Requests; | ||||||
|  |  | ||||||
| use Crater\Models\PaymentMethod; |  | ||||||
| use Illuminate\Foundation\Http\FormRequest; | use Illuminate\Foundation\Http\FormRequest; | ||||||
| use Illuminate\Validation\Rule; | use Illuminate\Validation\Rule; | ||||||
|  |  | ||||||
| @ -44,14 +43,4 @@ class PaymentMethodRequest extends FormRequest | |||||||
|  |  | ||||||
|         return $data; |         return $data; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public function getPaymentMethodPayload() |  | ||||||
|     { |  | ||||||
|         return collect($this->validated()) |  | ||||||
|             ->merge([ |  | ||||||
|                 'company_id' => $this->header('company'), |  | ||||||
|                 'type' => PaymentMethod::TYPE_GENERAL, |  | ||||||
|             ]) |  | ||||||
|             ->toArray(); |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -24,7 +24,10 @@ class SettingRequest extends FormRequest | |||||||
|     public function rules() |     public function rules() | ||||||
|     { |     { | ||||||
|         return [ |         return [ | ||||||
|             'settings' => [ |             'key' => [ | ||||||
|  |                 'required', | ||||||
|  |             ], | ||||||
|  |             'value' => [ | ||||||
|                 'required', |                 'required', | ||||||
|             ], |             ], | ||||||
|         ]; |         ]; | ||||||
|  | |||||||
| @ -2,7 +2,6 @@ | |||||||
|  |  | ||||||
| namespace Crater\Http\Requests; | namespace Crater\Http\Requests; | ||||||
|  |  | ||||||
| use Crater\Models\TaxType; |  | ||||||
| use Illuminate\Foundation\Http\FormRequest; | use Illuminate\Foundation\Http\FormRequest; | ||||||
| use Illuminate\Validation\Rule; | use Illuminate\Validation\Rule; | ||||||
|  |  | ||||||
| @ -29,7 +28,6 @@ class TaxTypeRequest extends FormRequest | |||||||
|             'name' => [ |             'name' => [ | ||||||
|                 'required', |                 'required', | ||||||
|                 Rule::unique('tax_types') |                 Rule::unique('tax_types') | ||||||
|                 ->where('type', TaxType::TYPE_GENERAL) |  | ||||||
|                 ->where('company_id', $this->header('company')) |                 ->where('company_id', $this->header('company')) | ||||||
|             ], |             ], | ||||||
|             'percent' => [ |             'percent' => [ | ||||||
| @ -51,7 +49,6 @@ class TaxTypeRequest extends FormRequest | |||||||
|                 'required', |                 'required', | ||||||
|                 Rule::unique('tax_types') |                 Rule::unique('tax_types') | ||||||
|                     ->ignore($this->route('tax_type')->id) |                     ->ignore($this->route('tax_type')->id) | ||||||
|                     ->where('type', TaxType::TYPE_GENERAL) |  | ||||||
|                     ->where('company_id', $this->header('company')) |                     ->where('company_id', $this->header('company')) | ||||||
|             ]; |             ]; | ||||||
|         } |         } | ||||||
| @ -63,8 +60,7 @@ class TaxTypeRequest extends FormRequest | |||||||
|     { |     { | ||||||
|         return collect($this->validated()) |         return collect($this->validated()) | ||||||
|             ->merge([ |             ->merge([ | ||||||
|                 'company_id' => $this->header('company'), |                 'company_id' => $this->header('company') | ||||||
|                 'type' => TaxType::TYPE_GENERAL |  | ||||||
|             ]) |             ]) | ||||||
|             ->toArray(); |             ->toArray(); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -1,37 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Requests; |  | ||||||
|  |  | ||||||
| use Illuminate\Foundation\Http\FormRequest; |  | ||||||
|  |  | ||||||
| class UnzipUpdateRequest extends FormRequest |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Determine if the user is authorized to make this request. |  | ||||||
|      * |  | ||||||
|      * @return bool |  | ||||||
|      */ |  | ||||||
|     public function authorize() |  | ||||||
|     { |  | ||||||
|         return true; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Get the validation rules that apply to the request. |  | ||||||
|      * |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function rules() |  | ||||||
|     { |  | ||||||
|         return [ |  | ||||||
|             'path' => [ |  | ||||||
|                 'required', |  | ||||||
|                 'regex:/^[\.\/\w\-]+$/' |  | ||||||
|             ], |  | ||||||
|             'module' => [ |  | ||||||
|                 'required', |  | ||||||
|                 'string' |  | ||||||
|             ] |  | ||||||
|         ]; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,34 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Requests; |  | ||||||
|  |  | ||||||
| use Crater\Rules\Base64Mime; |  | ||||||
| use Illuminate\Foundation\Http\FormRequest; |  | ||||||
|  |  | ||||||
| class UploadExpenseReceiptRequest extends FormRequest |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Determine if the user is authorized to make this request. |  | ||||||
|      * |  | ||||||
|      * @return bool |  | ||||||
|      */ |  | ||||||
|     public function authorize() |  | ||||||
|     { |  | ||||||
|         return true; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Get the validation rules that apply to the request. |  | ||||||
|      * |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function rules() |  | ||||||
|     { |  | ||||||
|         return [ |  | ||||||
|             'attachment_receipt' => [ |  | ||||||
|                 'nullable', |  | ||||||
|                 new Base64Mime(['gif', 'jpg', 'png']) |  | ||||||
|             ] |  | ||||||
|         ]; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,40 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Requests; |  | ||||||
|  |  | ||||||
| use Illuminate\Foundation\Http\FormRequest; |  | ||||||
|  |  | ||||||
| class UploadModuleRequest extends FormRequest |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Determine if the user is authorized to make this request. |  | ||||||
|      * |  | ||||||
|      * @return bool |  | ||||||
|      */ |  | ||||||
|     public function authorize() |  | ||||||
|     { |  | ||||||
|         return true; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Get the validation rules that apply to the request. |  | ||||||
|      * |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function rules() |  | ||||||
|     { |  | ||||||
|         return [ |  | ||||||
|             'avatar' => [ |  | ||||||
|                 'required', |  | ||||||
|                 'file', |  | ||||||
|                 'mimes:zip', |  | ||||||
|                 'max:20000' |  | ||||||
|             ], |  | ||||||
|             'module' => [ |  | ||||||
|                 'required', |  | ||||||
|                 'string', |  | ||||||
|                 'max:100' |  | ||||||
|             ] |  | ||||||
|         ]; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -21,7 +21,6 @@ class CompanyResource extends JsonResource | |||||||
|             'logo_path' => $this->logo_path, |             'logo_path' => $this->logo_path, | ||||||
|             'unique_hash' => $this->unique_hash, |             'unique_hash' => $this->unique_hash, | ||||||
|             'owner_id' => $this->owner_id, |             'owner_id' => $this->owner_id, | ||||||
|             'slug' => $this->slug, |  | ||||||
|             'address' => $this->when($this->address()->exists(), function () { |             'address' => $this->when($this->address()->exists(), function () { | ||||||
|                 return new AddressResource($this->address); |                 return new AddressResource($this->address); | ||||||
|             }), |             }), | ||||||
|  | |||||||
| @ -2,7 +2,6 @@ | |||||||
|  |  | ||||||
| namespace Crater\Http\Resources; | namespace Crater\Http\Resources; | ||||||
|  |  | ||||||
| use Crater\Models\CompanySetting; |  | ||||||
| use Illuminate\Http\Resources\Json\JsonResource; | use Illuminate\Http\Resources\Json\JsonResource; | ||||||
|  |  | ||||||
| class CustomFieldValueResource extends JsonResource | class CustomFieldValueResource extends JsonResource | ||||||
| @ -29,7 +28,6 @@ class CustomFieldValueResource extends JsonResource | |||||||
|             'custom_field_id' => $this->custom_field_id, |             'custom_field_id' => $this->custom_field_id, | ||||||
|             'company_id' => $this->company_id, |             'company_id' => $this->company_id, | ||||||
|             'default_answer' => $this->defaultAnswer, |             'default_answer' => $this->defaultAnswer, | ||||||
|             'default_formatted_answer' => $this->dateTimeFormat(), |  | ||||||
|             'custom_field' => $this->when($this->customField()->exists(), function () { |             'custom_field' => $this->when($this->customField()->exists(), function () { | ||||||
|                 return new CustomFieldResource($this->customField); |                 return new CustomFieldResource($this->customField); | ||||||
|             }), |             }), | ||||||
| @ -38,24 +36,4 @@ class CustomFieldValueResource extends JsonResource | |||||||
|             }), |             }), | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public function dateTimeFormat() |  | ||||||
|     { |  | ||||||
|         $key = getCustomFieldValueKey($this->type); |  | ||||||
|  |  | ||||||
|         $answer = $this->default_answer; |  | ||||||
|         if (! $answer) { |  | ||||||
|             return null; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         if ($key == 'date_time_answer') { |  | ||||||
|             return $answer->format('Y-m-d H:i'); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         if ($key == 'date_answer') { |  | ||||||
|             return $answer->format(CompanySetting::getSetting('carbon_date_format', $this->company_id)); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         return $answer; |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,19 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Resources\Customer; |  | ||||||
|  |  | ||||||
| use Illuminate\Http\Resources\Json\ResourceCollection; |  | ||||||
|  |  | ||||||
| class AddressCollection extends ResourceCollection |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Transform the resource collection into an array. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function toArray($request) |  | ||||||
|     { |  | ||||||
|         return parent::toArray($request); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,40 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Resources\Customer; |  | ||||||
|  |  | ||||||
| use Illuminate\Http\Resources\Json\JsonResource; |  | ||||||
|  |  | ||||||
| class AddressResource extends JsonResource |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Transform the resource into an array. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function toArray($request) |  | ||||||
|     { |  | ||||||
|         return [ |  | ||||||
|             'id' => $this->id, |  | ||||||
|             'name' => $this->name, |  | ||||||
|             'address_street_1' => $this->address_street_1, |  | ||||||
|             'address_street_2' => $this->address_street_2, |  | ||||||
|             'city' => $this->city, |  | ||||||
|             'state' => $this->state, |  | ||||||
|             'country_id' => $this->country_id, |  | ||||||
|             'zip' => $this->zip, |  | ||||||
|             'phone' => $this->phone, |  | ||||||
|             'fax' => $this->fax, |  | ||||||
|             'type' => $this->type, |  | ||||||
|             'user_id' => $this->user_id, |  | ||||||
|             'company_id' => $this->company_id, |  | ||||||
|             'customer_id' => $this->customer_id, |  | ||||||
|             'country' => $this->when($this->country()->exists(), function () { |  | ||||||
|                 return new CountryResource($this->country); |  | ||||||
|             }), |  | ||||||
|             'user' => $this->when($this->user()->exists(), function () { |  | ||||||
|                 return new UserResource($this->user); |  | ||||||
|             }), |  | ||||||
|         ]; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,30 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Resources\Customer; |  | ||||||
|  |  | ||||||
| use Illuminate\Http\Resources\Json\JsonResource; |  | ||||||
|  |  | ||||||
| class CompanyResource extends JsonResource |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Transform the resource into an array. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function toArray($request) |  | ||||||
|     { |  | ||||||
|         return [ |  | ||||||
|             'id' => $this->id, |  | ||||||
|             'name' => $this->name, |  | ||||||
|             'slug' => $this->slug, |  | ||||||
|             'logo' => $this->logo, |  | ||||||
|             'logo_path' => $this->logo_path, |  | ||||||
|             'unique_hash' => $this->unique_hash, |  | ||||||
|             'owner_id' => $this->owner_id, |  | ||||||
|             'address' => $this->when($this->address()->exists(), function () { |  | ||||||
|                 return new AddressResource($this->address); |  | ||||||
|             }), |  | ||||||
|         ]; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,19 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Resources\Customer; |  | ||||||
|  |  | ||||||
| use Illuminate\Http\Resources\Json\ResourceCollection; |  | ||||||
|  |  | ||||||
| class CountryCollection extends ResourceCollection |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Transform the resource collection into an array. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function toArray($request) |  | ||||||
|     { |  | ||||||
|         return parent::toArray($request); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,24 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Resources\Customer; |  | ||||||
|  |  | ||||||
| use Illuminate\Http\Resources\Json\JsonResource; |  | ||||||
|  |  | ||||||
| class CountryResource extends JsonResource |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Transform the resource into an array. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function toArray($request) |  | ||||||
|     { |  | ||||||
|         return [ |  | ||||||
|             'id' => $this->id, |  | ||||||
|             'code' => $this->code, |  | ||||||
|             'name' => $this->name, |  | ||||||
|             'phonecode' => $this->phonecode, |  | ||||||
|         ]; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,19 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Resources\Customer; |  | ||||||
|  |  | ||||||
| use Illuminate\Http\Resources\Json\ResourceCollection; |  | ||||||
|  |  | ||||||
| class CurrencyCollection extends ResourceCollection |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Transform the resource collection into an array. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function toArray($request) |  | ||||||
|     { |  | ||||||
|         return parent::toArray($request); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,29 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Resources\Customer; |  | ||||||
|  |  | ||||||
| use Illuminate\Http\Resources\Json\JsonResource; |  | ||||||
|  |  | ||||||
| class CurrencyResource extends JsonResource |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Transform the resource into an array. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function toArray($request) |  | ||||||
|     { |  | ||||||
|         return [ |  | ||||||
|             'id' => $this->id, |  | ||||||
|             'name' => $this->name, |  | ||||||
|             'code' => $this->code, |  | ||||||
|             'symbol' => $this->symbol, |  | ||||||
|             'precision' => $this->precision, |  | ||||||
|             'thousand_separator' => $this->thousand_separator, |  | ||||||
|             'decimal_separator' => $this->decimal_separator, |  | ||||||
|             'swap_currency_symbol' => $this->swap_currency_symbol, |  | ||||||
|             'exchange_rate' => $this->exchange_rate |  | ||||||
|         ]; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,19 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Resources\Customer; |  | ||||||
|  |  | ||||||
| use Illuminate\Http\Resources\Json\ResourceCollection; |  | ||||||
|  |  | ||||||
| class CustomFieldCollection extends ResourceCollection |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Transform the resource collection into an array. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function toArray($request) |  | ||||||
|     { |  | ||||||
|         return parent::toArray($request); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,42 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Resources\Customer; |  | ||||||
|  |  | ||||||
| use Illuminate\Http\Resources\Json\JsonResource; |  | ||||||
|  |  | ||||||
| class CustomFieldResource extends JsonResource |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Transform the resource into an array. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function toArray($request) |  | ||||||
|     { |  | ||||||
|         return [ |  | ||||||
|             'id' => $this->id, |  | ||||||
|             'name' => $this->name, |  | ||||||
|             'slug' => $this->slug, |  | ||||||
|             'label' => $this->label, |  | ||||||
|             'model_type' => $this->model_type, |  | ||||||
|             'type' => $this->type, |  | ||||||
|             'placeholder' => $this->placeholder, |  | ||||||
|             'options' => $this->options, |  | ||||||
|             'boolean_answer' => $this->boolean_answer, |  | ||||||
|             'date_answer' => $this->date_answer, |  | ||||||
|             'time_answer' => $this->time_answer, |  | ||||||
|             'string_answer' => $this->string_answer, |  | ||||||
|             'number_answer' => $this->number_answer, |  | ||||||
|             'date_time_answer' => $this->date_time_answer, |  | ||||||
|             'is_required' => $this->is_required, |  | ||||||
|             'in_use' => $this->in_use, |  | ||||||
|             'order' => $this->order, |  | ||||||
|             'company_id' => $this->company_id, |  | ||||||
|             'default_answer' => $this->default_answer, |  | ||||||
|             'company' => $this->when($this->company()->exists(), function () { |  | ||||||
|                 return new CompanyResource($this->company); |  | ||||||
|             }), |  | ||||||
|         ]; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,19 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Resources\Customer; |  | ||||||
|  |  | ||||||
| use Illuminate\Http\Resources\Json\ResourceCollection; |  | ||||||
|  |  | ||||||
| class CustomFieldValueCollection extends ResourceCollection |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Transform the resource collection into an array. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function toArray($request) |  | ||||||
|     { |  | ||||||
|         return parent::toArray($request); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,39 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Resources\Customer; |  | ||||||
|  |  | ||||||
| use Illuminate\Http\Resources\Json\JsonResource; |  | ||||||
|  |  | ||||||
| class CustomFieldValueResource extends JsonResource |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Transform the resource into an array. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function toArray($request) |  | ||||||
|     { |  | ||||||
|         return [ |  | ||||||
|             'id' => $this->id, |  | ||||||
|             'custom_field_valuable_type' => $this->custom_field_valuable_type, |  | ||||||
|             'custom_field_valuable_id' => $this->custom_field_valuable_id, |  | ||||||
|             'type' => $this->type, |  | ||||||
|             'boolean_answer' => $this->boolean_answer, |  | ||||||
|             'date_answer' => $this->date_answer, |  | ||||||
|             'time_answer' => $this->time_answer, |  | ||||||
|             'string_answer' => $this->string_answer, |  | ||||||
|             'number_answer' => $this->number_answer, |  | ||||||
|             'date_time_answer' => $this->date_time_answer, |  | ||||||
|             'custom_field_id' => $this->custom_field_id, |  | ||||||
|             'company_id' => $this->company_id, |  | ||||||
|             'default_answer' => $this->defaultAnswer, |  | ||||||
|             'custom_field' => $this->when($this->customField()->exists(), function () { |  | ||||||
|                 return new CustomFieldResource($this->customField); |  | ||||||
|             }), |  | ||||||
|             'company' => $this->when($this->company()->exists(), function () { |  | ||||||
|                 return new CompanyResource($this->company); |  | ||||||
|             }), |  | ||||||
|         ]; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,19 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Resources\Customer; |  | ||||||
|  |  | ||||||
| use Illuminate\Http\Resources\Json\ResourceCollection; |  | ||||||
|  |  | ||||||
| class CustomerCollection extends ResourceCollection |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Transform the resource collection into an array. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function toArray($request) |  | ||||||
|     { |  | ||||||
|         return parent::toArray($request); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,51 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Resources\Customer; |  | ||||||
|  |  | ||||||
| use Illuminate\Http\Resources\Json\JsonResource; |  | ||||||
|  |  | ||||||
| class CustomerResource extends JsonResource |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Transform the resource into an array. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function toArray($request) |  | ||||||
|     { |  | ||||||
|         return [ |  | ||||||
|             'id' => $this->id, |  | ||||||
|             'name' => $this->name, |  | ||||||
|             'email' => $this->email, |  | ||||||
|             'phone' => $this->phone, |  | ||||||
|             'contact_name' => $this->contact_name, |  | ||||||
|             'company_name' => $this->company_name, |  | ||||||
|             'website' => $this->website, |  | ||||||
|             'enable_portal' => $this->enable_portal, |  | ||||||
|             'currency_id' => $this->currency_id, |  | ||||||
|             'company_id' => $this->company_id, |  | ||||||
|             'facebook_id' => $this->facebook_id, |  | ||||||
|             'google_id' => $this->google_id, |  | ||||||
|             'github_id' => $this->github_id, |  | ||||||
|             'formatted_created_at' => $this->formattedCreatedAt, |  | ||||||
|             'avatar' => $this->avatar, |  | ||||||
|             'prefix' => $this->prefix, |  | ||||||
|             'billing' => $this->when($this->billingAddress()->exists(), function () { |  | ||||||
|                 return new AddressResource($this->billingAddress); |  | ||||||
|             }), |  | ||||||
|             'shipping' => $this->when($this->shippingAddress()->exists(), function () { |  | ||||||
|                 return new AddressResource($this->shippingAddress); |  | ||||||
|             }), |  | ||||||
|             'fields' => $this->when($this->fields()->exists(), function () { |  | ||||||
|                 return CustomFieldValueResource::collection($this->fields); |  | ||||||
|             }), |  | ||||||
|             'company' => $this->when($this->company()->exists(), function () { |  | ||||||
|                 return new CompanyResource($this->company); |  | ||||||
|             }), |  | ||||||
|             'currency' => $this->when($this->currency()->exists(), function () { |  | ||||||
|                 return new CurrencyResource($this->currency); |  | ||||||
|             }), |  | ||||||
|         ]; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,19 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Resources\Customer; |  | ||||||
|  |  | ||||||
| use Illuminate\Http\Resources\Json\ResourceCollection; |  | ||||||
|  |  | ||||||
| class EstimateCollection extends ResourceCollection |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Transform the resource collection into an array. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function toArray($request) |  | ||||||
|     { |  | ||||||
|         return parent::toArray($request); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,19 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Resources\Customer; |  | ||||||
|  |  | ||||||
| use Illuminate\Http\Resources\Json\ResourceCollection; |  | ||||||
|  |  | ||||||
| class EstimateItemCollection extends ResourceCollection |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Transform the resource collection into an array. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function toArray($request) |  | ||||||
|     { |  | ||||||
|         return parent::toArray($request); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,45 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Resources\Customer; |  | ||||||
|  |  | ||||||
| use Illuminate\Http\Resources\Json\JsonResource; |  | ||||||
|  |  | ||||||
| class EstimateItemResource extends JsonResource |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Transform the resource into an array. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function toArray($request) |  | ||||||
|     { |  | ||||||
|         return [ |  | ||||||
|             'id' => $this->id, |  | ||||||
|             'name' => $this->name, |  | ||||||
|             'description' => $this->description, |  | ||||||
|             'discount_type' => $this->discount_type, |  | ||||||
|             'quantity' => $this->quantity, |  | ||||||
|             'unit_name' => $this->unit_name, |  | ||||||
|             'discount' => $this->discount, |  | ||||||
|             'discount_val' => $this->discount_val, |  | ||||||
|             'price' => $this->price, |  | ||||||
|             'tax' => $this->tax, |  | ||||||
|             'total' => $this->total, |  | ||||||
|             'item_id' => $this->item_id, |  | ||||||
|             'estimate_id' => $this->estimate_id, |  | ||||||
|             'company_id' => $this->company_id, |  | ||||||
|             'exchange_rate' => $this->exchange_rate, |  | ||||||
|             'base_discount_val' => $this->base_discount_val, |  | ||||||
|             'base_price' => $this->base_price, |  | ||||||
|             'base_tax' => $this->base_tax, |  | ||||||
|             'base_total' => $this->base_total, |  | ||||||
|             'taxes' => $this->when($this->taxes()->exists(), function () { |  | ||||||
|                 return TaxResource::collection($this->taxes); |  | ||||||
|             }), |  | ||||||
|             'fields' => $this->when($this->fields()->exists(), function () { |  | ||||||
|                 return CustomFieldValueResource::collection($this->fields); |  | ||||||
|             }), |  | ||||||
|         ]; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,65 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Resources\Customer; |  | ||||||
|  |  | ||||||
| use Illuminate\Http\Resources\Json\JsonResource; |  | ||||||
|  |  | ||||||
| class EstimateResource extends JsonResource |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Transform the resource into an array. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function toArray($request) |  | ||||||
|     { |  | ||||||
|         return [ |  | ||||||
|             'id' => $this->id, |  | ||||||
|             'estimate_date' => $this->estimate_date, |  | ||||||
|             'expiry_date' => $this->expiry_date, |  | ||||||
|             'estimate_number' => $this->estimate_number, |  | ||||||
|             'status' => $this->status, |  | ||||||
|             'reference_number' => $this->reference_number, |  | ||||||
|             'tax_per_item' => $this->tax_per_item, |  | ||||||
|             'discount_per_item' => $this->discount_per_item, |  | ||||||
|             'notes' => $this->notes, |  | ||||||
|             'discount' => $this->discount, |  | ||||||
|             'discount_type' => $this->discount_type, |  | ||||||
|             'discount_val' => $this->discount_val, |  | ||||||
|             'sub_total' => $this->sub_total, |  | ||||||
|             'total' => $this->total, |  | ||||||
|             'tax' => $this->tax, |  | ||||||
|             'unique_hash' => $this->unique_hash, |  | ||||||
|             'template_name' => $this->template_name, |  | ||||||
|             'customer_id' => $this->customer_id, |  | ||||||
|             'exchange_rate' => $this->exchange_rate, |  | ||||||
|             'base_discount_val' => $this->base_discount_val, |  | ||||||
|             'base_sub_total' => $this->base_sub_total, |  | ||||||
|             'base_total' => $this->base_total, |  | ||||||
|             'base_tax' => $this->base_tax, |  | ||||||
|             'currency_id' => $this->currency_id, |  | ||||||
|             'formatted_expiry_date' => $this->formattedExpiryDate, |  | ||||||
|             'formatted_estimate_date' => $this->formattedEstimateDate, |  | ||||||
|             'estimate_pdf_url' => $this->estimatePdfUrl, |  | ||||||
|             'items' => $this->when($this->items()->exists(), function () { |  | ||||||
|                 return EstimateItemResource::collection($this->items); |  | ||||||
|             }), |  | ||||||
|             'customer' => $this->when($this->customer()->exists(), function () { |  | ||||||
|                 return new CustomerResource($this->customer); |  | ||||||
|             }), |  | ||||||
|             'taxes' => $this->when($this->taxes()->exists(), function () { |  | ||||||
|                 return TaxResource::collection($this->taxes); |  | ||||||
|             }), |  | ||||||
|             'fields' => $this->when($this->fields()->exists(), function () { |  | ||||||
|                 return CustomFieldValueResource::collection($this->fields); |  | ||||||
|             }), |  | ||||||
|             'company' => $this->when($this->company()->exists(), function () { |  | ||||||
|                 return new CompanyResource($this->company); |  | ||||||
|             }), |  | ||||||
|             'currency' => $this->when($this->currency()->exists(), function () { |  | ||||||
|                 return new CurrencyResource($this->currency); |  | ||||||
|             }), |  | ||||||
|         ]; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,19 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Resources\Customer; |  | ||||||
|  |  | ||||||
| use Illuminate\Http\Resources\Json\ResourceCollection; |  | ||||||
|  |  | ||||||
| class ExpenseCategoryCollection extends ResourceCollection |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Transform the resource collection into an array. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function toArray($request) |  | ||||||
|     { |  | ||||||
|         return parent::toArray($request); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,29 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Resources\Customer; |  | ||||||
|  |  | ||||||
| use Illuminate\Http\Resources\Json\JsonResource; |  | ||||||
|  |  | ||||||
| class ExpenseCategoryResource extends JsonResource |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Transform the resource into an array. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function toArray($request) |  | ||||||
|     { |  | ||||||
|         return [ |  | ||||||
|             'id' => $this->id, |  | ||||||
|             'name' => $this->name, |  | ||||||
|             'description' => $this->description, |  | ||||||
|             'company_id' => $this->company_id, |  | ||||||
|             'amount' => $this->amount, |  | ||||||
|             'formatted_created_at' => $this->formattedCreatedAt, |  | ||||||
|             'company' => $this->when($this->company()->exists(), function () { |  | ||||||
|                 return new CompanyResource($this->company); |  | ||||||
|             }), |  | ||||||
|         ]; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,19 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace Crater\Http\Resources\Customer; |  | ||||||
|  |  | ||||||
| use Illuminate\Http\Resources\Json\ResourceCollection; |  | ||||||
|  |  | ||||||
| class ExpenseCollection extends ResourceCollection |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * Transform the resource collection into an array. |  | ||||||
|      * |  | ||||||
|      * @param  \Illuminate\Http\Request  $request |  | ||||||
|      * @return array |  | ||||||
|      */ |  | ||||||
|     public function toArray($request) |  | ||||||
|     { |  | ||||||
|         return parent::toArray($request); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	