has('limit') ? $request->limit : 10; $invoices = Invoice::with(['items', 'user', 'creator', 'invoiceTemplate', 'taxes']) ->join('users', 'users.id', '=', 'invoices.user_id') ->applyFilters($request->only([ 'status', 'paid_status', 'customer_id', 'invoice_id', 'invoice_number', 'from_date', 'to_date', 'orderByField', 'orderBy', 'search', ])) ->whereCompany($request->header('company')) ->select('invoices.*', 'users.name') ->latest() ->paginateData($limit); return response()->json([ 'invoices' => $invoices, 'invoiceTotalCount' => Invoice::count() ]); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\JsonResponse */ public function store(Requests\InvoicesRequest $request) { $invoice = Invoice::createInvoice($request); if ($request->has('invoiceSend')) { $invoice->send($request->subject, $request->body); } GenerateInvoicePdfJob::dispatch($invoice); return response()->json([ 'invoice' => $invoice ]); } /** * Display the specified resource. * * @param \Crater\Models\Invoice $invoice * @return \Illuminate\Http\JsonResponse */ public function show(Invoice $invoice) { $invoice->load([ 'items', 'items.taxes', 'user', 'invoiceTemplate', 'taxes.taxType', 'fields.customField' ]); $siteData = [ 'invoice' => $invoice, 'nextInvoiceNumber' => $invoice->getInvoiceNumAttribute(), 'invoicePrefix' => $invoice->getInvoicePrefixAttribute(), ]; return response()->json($siteData); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param Invoice $invoice * @return \Illuminate\Http\JsonResponse */ public function update(Requests\InvoicesRequest $request, Invoice $invoice) { $invoice = $invoice->updateInvoice($request); GenerateInvoicePdfJob::dispatch($invoice, true); return response()->json([ 'invoice' => $invoice, 'success' => true ]); } /** * delete the specified resources in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\JsonResponse */ public function delete(DeleteInvoiceRequest $request) { Invoice::destroy($request->ids); return response()->json([ 'success' => true ]); } }