116 lines
4.4 KiB
PHP
116 lines
4.4 KiB
PHP
<?php
|
|
/**
|
|
* Created by PhpStorm.
|
|
* User: merdan
|
|
* Date: 5/15/2019
|
|
* Time: 0:34
|
|
*/
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\BukjaOrder;
|
|
use App\Models\Category;
|
|
use App\Models\CategoryMaterial;
|
|
use App\Models\Material;
|
|
use App\Models\Order;
|
|
use App\Models\UserMaterial;
|
|
use App\User;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class AdminController extends Controller
|
|
{
|
|
protected $data = []; // the information we send to the view
|
|
|
|
/**
|
|
* Create a new controller instance.
|
|
*/
|
|
public function __construct()
|
|
{
|
|
$this->middleware(backpack_middleware());
|
|
}
|
|
|
|
/**
|
|
* Show the admin dashboard.
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function dashboard()
|
|
{
|
|
$start_date = request('start_date');
|
|
$end_date = request('end_date');
|
|
$order = Order::where('payed',1);
|
|
$bukja = BukjaOrder::where('status', 0)->orWhere('status', null)->count();
|
|
$users = User::select('id');
|
|
$userMaterials = UserMaterial::select('id');
|
|
if($start_date && $end_date)
|
|
{
|
|
$order->whereBetween('created_at',[date($start_date),date($end_date)]);
|
|
$users->whereBetween('created_at',[date($start_date),date($end_date)]);
|
|
$userMaterials->whereBetween('created_at',[date($start_date),date($end_date)]);
|
|
$this->data['start_date'] = $start_date;
|
|
$this->data['end_date'] = $end_date;
|
|
}
|
|
$this->data['category_views'] = Category::has('likes')->withCount([
|
|
'likes as liked' => function ($query) use ($start_date, $end_date) {
|
|
$query->select(DB::raw('SUM(likes.liked)'));
|
|
if($start_date && $end_date)
|
|
$query->whereBetween('likes.updated_at', [request('start_date'), request('end_date')]);
|
|
},
|
|
'likes as viewed' => function($query) use ($start_date, $end_date){
|
|
$query->select(DB::raw('SUM(likes.watched)'));
|
|
if($start_date && $end_date)
|
|
$query->whereBetween('likes.updated_at', [request('start_date'), request('end_date')]);
|
|
}
|
|
])->get();
|
|
$this->data['category_orders'] = Category::has('orders')->withCount([
|
|
'orders as payed' => function($query){
|
|
$query->select(DB::raw('SUM(orders.payed)'));
|
|
},
|
|
'orders as total' => function($query){
|
|
$query->select(DB::raw('SUM(orders.price)'))->where('orders.payed',1);
|
|
}
|
|
])->get();
|
|
|
|
$this->data['orders'] = $order->count();
|
|
$this->data['users'] = $users->count();
|
|
$this->data['like'] = $userMaterials->where('liked',1)->count();
|
|
$this->data['title'] = trans('backpack::base.dashboard');
|
|
$this->data['views'] = Material::sum('view');
|
|
$this->data['bukja'] = $bukja;
|
|
$this->data['watch'] = $userMaterials->count();
|
|
$this->data['field']['start_name'] = 'start';
|
|
$this->data['field']['end_name'] = 'end';
|
|
$this->data['field']['label'] = 'range';
|
|
return view('backpack::dashboard', $this->data);
|
|
}
|
|
|
|
public function cat_stats($cat_id){
|
|
$start_date = request('start_date');
|
|
$end_date = request('end_date');
|
|
$filter_orders ="";
|
|
$filter_likes ="";
|
|
if($start_date && $end_date)
|
|
{
|
|
$filter_orders = " and (orders.updated_at BETWEEN {$start_date} and {$end_date})";
|
|
$filter_likes = " and (likes.updated_at BETWEEN {$start_date} and {$end_date})";
|
|
}
|
|
|
|
$category = Category::findOrfail($cat_id);
|
|
$materials= $category->materials()
|
|
->select('materials.title',
|
|
DB::raw("(Select COUNT(likes.watched) From likes
|
|
Where likes.material_id = materials.id {$filter_likes}) as view"),
|
|
DB::raw("(Select SUM(likes.liked) From likes
|
|
Where likes.material_id = materials.id {$filter_likes}) as likes"),
|
|
DB::raw("(Select COUNT(orders.id) From orders
|
|
Where orders.material_id = materials.id and orders.payed = 1{$filter_orders}) as orders"),
|
|
DB::raw("(Select SUM(orders.price) From orders
|
|
Where orders.material_id = materials.id and orders.payed = 1{$filter_orders}) as total"))
|
|
->get();
|
|
return view('vendor.backpack.material_stats')
|
|
->with(['category' => $category, 'materials' => $materials]);
|
|
}
|
|
}
|