এই লেসনে User details page দেখানো হয়েছে এবং user details পেজ এ Sales, Purchases, Payments, Receipts এর টেবিল ভিউ দেখানো হয়েছে।
app/User.php:
namespace App;
use App\PurchaseInvoice;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $fillable = ['group_id', 'name', 'phone', 'email', 'address'];
public function group()
{
return $this->belongsTo(Group::class);
}
public function sales()
{
return $this->hasMany(SaleInvoice::class);
}
public function purchases()
{
return $this->hasMany(PurchaseInvoice::class);
}
public function payments()
{
return $this->hasMany(Payment::class);
}
public function receipts()
{
return $this->hasMany(Receipt::class);
}
}
UsersController@show
public function show($id)
{
$this->data['user'] = User::find($id);
$this->data['tab_menu'] = 'user_info';
return view('users.show', $this->data);
}
Controller.php:
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
public $data = [];
public function __construct()
{
$this->data['tab_menu'] = '';
}
}
UserPaymentsController.php:
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
class UserPaymentsController extends Controller
{
public function __construct()
{
$this->data['tab_menu'] = 'payments';
}
public function index( $id )
{
$this->data['user'] = User::findOrFail($id);
return view('users.payments.payments', $this->data);
}
}
UserPurchasesController.php:
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
class UserPurchasesController extends Controller
{
public function __construct()
{
$this->data['tab_menu'] = 'purchases';
}
public function index( $id )
{
$this->data['user'] = User::findOrFail($id);
return view('users.purchases.purchases', $this->data);
}
}
UserReceiptsController.php:
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
class UserReceiptsController extends Controller
{
public function __construct()
{
$this->data['tab_menu'] = 'receipts';
}
public function index( $id )
{
$this->data['user'] = User::findOrFail($id);
return view('users.receipts.receipts', $this->data);
}
}
UserSalesController.php:
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
class UserSalesController extends Controller
{
public function __construct()
{
$this->data['tab_menu'] = 'sales';
}
public function index( $id )
{
$this->data['user'] = User::findOrFail($id);
return view('users.sales.sales', $this->data);
}
}
users/user_layout.blade.php
@extends('layout.main')
@section('main_content')
<div class="row clearfix page_header">
<div class="col-md-4">
<a class="btn btn-info" href="{{ route('users.index') }}"> <i class="fa fa-arrow-left" aria-hidden="true"></i> Back </a>
</div>
<div class="col-md-8 text-right">
<a class="btn btn-info" href="{{ url('users/create') }}"> <i class="fa fa-plus"></i> New Sale </a>
<a class="btn btn-info" href="{{ url('users/create') }}"> <i class="fa fa-plus"></i> New Purchase </a>
<a class="btn btn-info" href="{{ url('users/create') }}"> <i class="fa fa-plus"></i> New Payment </a>
<a class="btn btn-info" href="{{ url('users/create') }}"> <i class="fa fa-plus"></i> New Receipt </a>
</div>
</div>
<div class="row clearfix mt-5">
<div class="col-md-2">
<div class="nav flex-column nav-pills">
<a class="nav-link @if($tab_menu == 'user_info') active @endif " href=" {{ route('users.show', $user->id) }} ">User Info</a>
<a class="nav-link @if($tab_menu == 'sales') active @endif " href="{{ route('user.sales', $user->id) }}">Sales</a>
<a class="nav-link @if($tab_menu == 'purchases') active @endif " href="{{ route('user.purchases', $user->id) }}">Purchases</a>
<a class="nav-link @if($tab_menu == 'payments') active @endif " href="{{ route('user.payments', $user->id) }}">Payments</a>
<a class="nav-link @if($tab_menu == 'receipts') active @endif " href="{{ route('user.receipts', $user->id) }}">Receipts</a>
</div>
</div>
<div class="col-md-10">
@yield('user_content')
</div>
</div>
@stop
users/show.blade.php
@extends('users.user_layout')
@section('user_content')
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary"> {{ $user->name }} </h6>
</div>
<div class="card-body">
<div class="row clearfix justify-content-md-center">
<div class="col-md-8">
<table class="table table-borderless table-striped">
<tr>
<th class="text-right">Group :</th>
<td> {{ $user->group->title }} </td>
</tr>
<tr>
<th class="text-right">Name : </th>
<td> {{ $user->name }} </td>
</tr>
<tr>
<th class="text-right">Eamil : </th>
<td> {{ $user->email }} </td>
</tr>
<tr>
<th class="text-right">Phone : </th>
<td> {{ $user->phone }} </td>
</tr>
<tr>
<th class="text-right">Address : </th>
<td> {{ $user->address }} </td>
</tr>
</table>
</div>
</div>
</div>
</div>
@stop
users/payments/payments.blade.php:
@extends('users.user_layout')
@section('user_content')
<!-- DataTales Example -->
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary"> Payments of <strong>{{ $user->name }} </strong></h6>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
<thead>
<tr>
<th>User</th>
<th>Date</th>
<th>Total</th>
<th>Note</th>
<th class="text-right">Actions</th>
</tr>
</thead>
<tfoot>
<tr>
<th>User</th>
<th>Date</th>
<th>Total</th>
<th>Note</th>
<th class="text-right">Actions</th>
</tr>
</tfoot>
<tbody>
@foreach ($user->payments as $payment)
<tr>
<td> {{ $user->name }} </td>
<td> {{ $payment->date }} </td>
<td> {{ $payment->amount }} </td>
<td> {{ $payment->note }} </td>
<td class="text-right">
<form method="POST" action=" {{ route('users.destroy', ['user' => $user->id]) }} ">
<a class="btn btn-primary btn-sm" href="{{ route('users.show', ['user' => $user->id]) }}">
<i class="fa fa-eye"></i>
</a>
@csrf
@method('DELETE')
<button onclick="return confirm('Are you sure?')" type="submit" class="btn btn-danger btn-sm">
<i class="fa fa-trash"></i>
</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
@stop
users/purchases/purchases.blade.php
@extends('users.user_layout')
@section('user_content')
<!-- DataTales Example -->
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary"> Purchases of <strong>{{ $user->name }} </strong></h6>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
<thead>
<tr>
<th>Challen No</th>
<th>Customer</th>
<th>Date</th>
<th>Total</th>
<th class="text-right">Actions</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Challen No</th>
<th>Customer</th>
<th>Date</th>
<th>Total</th>
<th class="text-right">Actions</th>
</tr>
</tfoot>
<tbody>
@foreach ($user->purchases as $purchase)
<tr>
<td> {{ $purchase->challan_no }} </td>
<td> {{ $user->name }} </td>
<td> {{ $purchase->date }} </td>
<td> 100 </td>
<td class="text-right">
<form method="POST" action=" {{ route('users.destroy', ['user' => $user->id]) }} ">
<a class="btn btn-primary btn-sm" href="{{ route('users.show', ['user' => $user->id]) }}">
<i class="fa fa-eye"></i>
</a>
@csrf
@method('DELETE')
<button onclick="return confirm('Are you sure?')" type="submit" class="btn btn-danger btn-sm">
<i class="fa fa-trash"></i>
</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
@stop
users/receipts/receipts.blade.php
@extends('users.user_layout')
@section('user_content')
<!-- DataTales Example -->
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary"> Receipts of <strong>{{ $user->name }} </strong></h6>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
<thead>
<tr>
<th>User</th>
<th>Date</th>
<th>Total</th>
<th>Note</th>
<th class="text-right">Actions</th>
</tr>
</thead>
<tfoot>
<tr>
<th>User</th>
<th>Date</th>
<th>Total</th>
<th>Note</th>
<th class="text-right">Actions</th>
</tr>
</tfoot>
<tbody>
@foreach ($user->receipts as $receipt)
<tr>
<td> {{ $user->name }} </td>
<td> {{ $receipt->date }} </td>
<td> {{ $receipt->amount }} </td>
<td> {{ $receipt->note }} </td>
<td class="text-right">
<form method="POST" action=" {{ route('users.destroy', ['user' => $user->id]) }} ">
<a class="btn btn-primary btn-sm" href="{{ route('users.show', ['user' => $user->id]) }}">
<i class="fa fa-eye"></i>
</a>
@csrf
@method('DELETE')
<button onclick="return confirm('Are you sure?')" type="submit" class="btn btn-danger btn-sm">
<i class="fa fa-trash"></i>
</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
@stop
users/sales/sales.blade.php
@extends('users.user_layout')
@section('user_content')
<!-- DataTales Example -->
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary"> Sales of <strong>{{ $user->name }} </strong></h6>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
<thead>
<tr>
<th>Challen No</th>
<th>Customer</th>
<th>Date</th>
<th>Total</th>
<th class="text-right">Actions</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Challen No</th>
<th>Customer</th>
<th>Date</th>
<th>Total</th>
<th class="text-right">Actions</th>
</tr>
</tfoot>
<tbody>
@foreach ($user->sales as $sale)
<tr>
<td> {{ $sale->challan_no }} </td>
<td> {{ $user->name }} </td>
<td> {{ $sale->date }} </td>
<td> 100 </td>
<td class="text-right">
<form method="POST" action=" {{ route('users.destroy', ['user' => $user->id]) }} ">
<a class="btn btn-primary btn-sm" href="{{ route('users.show', ['user' => $user->id]) }}">
<i class="fa fa-eye"></i>
</a>
@csrf
@method('DELETE')
<button onclick="return confirm('Are you sure?')" type="submit" class="btn btn-danger btn-sm">
<i class="fa fa-trash"></i>
</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
@stop