140 lines
5.5 KiB
PHP
140 lines
5.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Product;
|
|
use App\Models\CommissionHistory;
|
|
use App\Models\Wallet;
|
|
use App\Models\User;
|
|
use App\Models\Search;
|
|
use App\Models\Shop;
|
|
use Auth;
|
|
|
|
class ReportController extends Controller
|
|
{
|
|
public function __construct() {
|
|
// Staff Permission Check
|
|
$this->middleware(['permission:in_house_product_sale_report'])->only('in_house_sale_report');
|
|
$this->middleware(['permission:seller_products_sale_report'])->only('seller_sale_report');
|
|
$this->middleware(['permission:products_stock_report'])->only('stock_report');
|
|
$this->middleware(['permission:product_wishlist_report'])->only('wish_report');
|
|
$this->middleware(['permission:user_search_report'])->only('user_search_report');
|
|
$this->middleware(['permission:commission_history_report'])->only('commission_history');
|
|
$this->middleware(['permission:wallet_transaction_report'])->only('wallet_transaction_history');
|
|
}
|
|
|
|
public function stock_report(Request $request)
|
|
{
|
|
$sort_by =null;
|
|
$products = Product::orderBy('created_at', 'desc');
|
|
if ($request->has('category_id')){
|
|
$sort_by = $request->category_id;
|
|
$products = $products->where('category_id', $sort_by);
|
|
}
|
|
$products = $products->paginate(15);
|
|
return view('backend.reports.stock_report', compact('products','sort_by'));
|
|
}
|
|
|
|
public function in_house_sale_report(Request $request)
|
|
{
|
|
$sort_by =null;
|
|
$products = Product::orderBy('num_of_sale', 'desc')->where('added_by', 'admin');
|
|
if ($request->has('category_id')){
|
|
$sort_by = $request->category_id;
|
|
$products = $products->where('category_id', $sort_by);
|
|
}
|
|
$products = $products->paginate(15);
|
|
return view('backend.reports.in_house_sale_report', compact('products','sort_by'));
|
|
}
|
|
|
|
public function seller_sale_report(Request $request)
|
|
{
|
|
$sort_by =null;
|
|
// $sellers = User::where('user_type', 'seller')->orderBy('created_at', 'desc');
|
|
$sellers = Shop::with('user')->orderBy('created_at', 'desc');
|
|
if ($request->has('verification_status')){
|
|
$sort_by = $request->verification_status;
|
|
$sellers = $sellers->where('verification_status', $sort_by);
|
|
}
|
|
$sellers = $sellers->paginate(10);
|
|
return view('backend.reports.seller_sale_report', compact('sellers','sort_by'));
|
|
}
|
|
|
|
public function wish_report(Request $request)
|
|
{
|
|
$sort_by =null;
|
|
$products = Product::orderBy('created_at', 'desc');
|
|
if ($request->has('category_id')){
|
|
$sort_by = $request->category_id;
|
|
$products = $products->where('category_id', $sort_by);
|
|
}
|
|
$products = $products->paginate(10);
|
|
return view('backend.reports.wish_report', compact('products','sort_by'));
|
|
}
|
|
|
|
public function user_search_report(Request $request){
|
|
$searches = Search::orderBy('count', 'desc')->paginate(10);
|
|
return view('backend.reports.user_search_report', compact('searches'));
|
|
}
|
|
|
|
public function commission_history(Request $request) {
|
|
$seller_id = null;
|
|
$date_range = null;
|
|
|
|
if(Auth::user()->user_type == 'seller') {
|
|
$seller_id = Auth::user()->id;
|
|
} if($request->seller_id) {
|
|
$seller_id = $request->seller_id;
|
|
}
|
|
|
|
$commission_history = CommissionHistory::orderBy('created_at', 'desc');
|
|
|
|
if ($request->date_range) {
|
|
$date_range = $request->date_range;
|
|
$date_range1 = explode(" / ", $request->date_range);
|
|
$commission_history = $commission_history->where('created_at', '>=', $date_range1[0]);
|
|
$commission_history = $commission_history->where('created_at', '<=', $date_range1[1]);
|
|
}
|
|
if ($seller_id){
|
|
|
|
$commission_history = $commission_history->where('seller_id', '=', $seller_id);
|
|
}
|
|
|
|
$commission_history = $commission_history->paginate(10);
|
|
if(Auth::user()->user_type == 'seller') {
|
|
return view('seller.reports.commission_history_report', compact('commission_history', 'seller_id', 'date_range'));
|
|
}
|
|
return view('backend.reports.commission_history_report', compact('commission_history', 'seller_id', 'date_range'));
|
|
}
|
|
|
|
public function wallet_transaction_history(Request $request) {
|
|
$user_id = null;
|
|
$date_range = null;
|
|
|
|
if($request->user_id) {
|
|
$user_id = $request->user_id;
|
|
}
|
|
|
|
$users_with_wallet = User::whereIn('id', function($query) {
|
|
$query->select('user_id')->from(with(new Wallet)->getTable());
|
|
})->get();
|
|
|
|
$wallet_history = Wallet::orderBy('created_at', 'desc');
|
|
|
|
if ($request->date_range) {
|
|
$date_range = $request->date_range;
|
|
$date_range1 = explode(" / ", $request->date_range);
|
|
$wallet_history = $wallet_history->where('created_at', '>=', $date_range1[0]);
|
|
$wallet_history = $wallet_history->where('created_at', '<=', $date_range1[1]);
|
|
}
|
|
if ($user_id){
|
|
$wallet_history = $wallet_history->where('user_id', '=', $user_id);
|
|
}
|
|
|
|
$wallets = $wallet_history->paginate(10);
|
|
|
|
return view('backend.reports.wallet_history_report', compact('wallets', 'users_with_wallet', 'user_id', 'date_range'));
|
|
}
|
|
}
|