File "OrderController.php"
Full Path: /home/clickysoft/public_html/jmapi5.clickysoft.net/app/Http/Controllers/Admin/OrderController.php
File size: 6.83 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\MassDestroyOrderRequest;
use App\Http\Requests\Admin\StoreOrderRequest;
use App\Http\Requests\Admin\UpdateOrderRequest;
use App\Models\AddressBook;
use App\Models\Order;
use App\Models\Status;
use App\Models\User;
use Gate;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use Yajra\DataTables\Facades\DataTables;
class OrderController extends Controller
{
public function index(Request $request)
{
abort_if(Gate::denies('order_access'), Response::HTTP_FORBIDDEN, '403 Forbidden');
if ($request->ajax()) {
$query = Order::with(['user', 'current_status', 'assigned_to', 'shipping_address', 'billing_address'])->select(sprintf('%s.*', (new Order())->table));
$table = Datatables::of($query);
$table->addColumn('placeholder', ' ');
$table->addColumn('actions', ' ');
$table->editColumn('actions', function ($row) {
$viewGate = 'order_show';
$editGate = 'order_edit';
$deleteGate = 'order_delete';
$crudRoutePart = 'orders';
return view('partials.datatablesActions', compact(
'viewGate',
'editGate',
'deleteGate',
'crudRoutePart',
'row'
));
});
$table->editColumn('id', function ($row) {
return $row->id ? $row->id : '';
});
$table->addColumn('user_name', function ($row) {
return $row->user ? $row->user->name : '';
});
$table->editColumn('user.email', function ($row) {
return $row->user ? (is_string($row->user) ? $row->user : $row->user->email) : '';
});
$table->editColumn('order_number', function ($row) {
return $row->order_number ? $row->order_number : '';
});
$table->addColumn('current_status_name', function ($row) {
return $row->current_status ? $row->current_status->name : '';
});
$table->addColumn('assigned_to_name', function ($row) {
return $row->assigned_to ? $row->assigned_to->name : '';
});
$table->editColumn('assigned_to.email', function ($row) {
return $row->assigned_to ? (is_string($row->assigned_to) ? $row->assigned_to : $row->assigned_to->email) : '';
});
$table->editColumn('admin_approved', function ($row) {
return '<input type="checkbox" disabled ' . ($row->admin_approved ? 'checked' : null) . '>';
});
$table->addColumn('shipping_address_contact_person', function ($row) {
return $row->shipping_address ? $row->shipping_address->contact_person : '';
});
$table->editColumn('shipping_address.address_line_1', function ($row) {
return $row->shipping_address ? (is_string($row->shipping_address) ? $row->shipping_address : $row->shipping_address->address_line_1) : '';
});
$table->addColumn('billing_address_contact_person', function ($row) {
return $row->billing_address ? $row->billing_address->contact_person : '';
});
$table->editColumn('billing_address.address_line_1', function ($row) {
return $row->billing_address ? (is_string($row->billing_address) ? $row->billing_address : $row->billing_address->address_line_1) : '';
});
$table->editColumn('payment_status', function ($row) {
return $row->payment_status ? Order::PAYMENT_STATUS_RADIO[$row->payment_status] : '';
});
$table->editColumn('payment_type', function ($row) {
return $row->payment_type ? Order::PAYMENT_TYPE_RADIO[$row->payment_type] : '';
});
$table->rawColumns(['actions', 'placeholder', 'user', 'current_status', 'assigned_to', 'admin_approved', 'shipping_address', 'billing_address']);
return $table->make(true);
}
$users = User::get();
$statuses = Status::get();
$address_books = AddressBook::get();
return view('admin.orders.index', compact('users', 'statuses', 'address_books'));
}
public function create()
{
abort_if(Gate::denies('order_create'), Response::HTTP_FORBIDDEN, '403 Forbidden');
$users = User::pluck('name', 'id')->prepend(trans('global.pleaseSelect'), '');
$current_statuses = Status::pluck('name', 'id')->prepend(trans('global.pleaseSelect'), '');
$shipping_addresses = AddressBook::pluck('contact_person', 'id')->prepend(trans('global.pleaseSelect'), '');
$billing_addresses = AddressBook::pluck('contact_person', 'id')->prepend(trans('global.pleaseSelect'), '');
return view('admin.orders.create', compact('billing_addresses', 'current_statuses', 'shipping_addresses', 'users'));
}
public function store(StoreOrderRequest $request)
{
$order = Order::create($request->all());
return redirect()->route('admin.orders.index');
}
public function edit(Order $order)
{
abort_if(Gate::denies('order_edit'), Response::HTTP_FORBIDDEN, '403 Forbidden');
$users = User::pluck('name', 'id')->prepend(trans('global.pleaseSelect'), '');
$current_statuses = Status::pluck('name', 'id')->prepend(trans('global.pleaseSelect'), '');
$shipping_addresses = AddressBook::pluck('contact_person', 'id')->prepend(trans('global.pleaseSelect'), '');
$billing_addresses = AddressBook::pluck('contact_person', 'id')->prepend(trans('global.pleaseSelect'), '');
$order->load('user', 'current_status', 'assigned_to', 'shipping_address', 'billing_address');
return view('admin.orders.edit', compact('billing_addresses', 'current_statuses', 'order', 'shipping_addresses', 'users'));
}
public function update(UpdateOrderRequest $request, Order $order)
{
$order->update($request->all());
return redirect()->route('admin.orders.index');
}
public function show(Order $order)
{
abort_if(Gate::denies('order_show'), Response::HTTP_FORBIDDEN, '403 Forbidden');
$order->load('user', 'current_status', 'assigned_to', 'shipping_address', 'billing_address');
return view('admin.orders.show', compact('order'));
}
public function destroy(Order $order)
{
abort_if(Gate::denies('order_delete'), Response::HTTP_FORBIDDEN, '403 Forbidden');
$order->delete();
return back();
}
public function massDestroy(MassDestroyOrderRequest $request)
{
Order::whereIn('id', request('ids'))->delete();
return response(null, Response::HTTP_NO_CONTENT);
}
}