2019-05-14 23:50:24 +00:00
|
|
|
<?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\Category;
|
2019-07-10 13:47:00 +00:00
|
|
|
use App\Models\CategoryMaterial;
|
2019-05-14 23:50:24 +00:00
|
|
|
use App\Models\Material;
|
|
|
|
|
use App\Models\Order;
|
|
|
|
|
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()
|
|
|
|
|
{
|
2019-05-29 20:16:59 +00:00
|
|
|
$start_date = request('start_date');
|
|
|
|
|
$end_date = request('end_date');
|
2019-07-19 11:22:10 +00:00
|
|
|
$order = Order::where('payed',1);//count with sum
|
2019-05-29 20:16:59 +00:00
|
|
|
$users = User::select('id');
|
|
|
|
|
|
|
|
|
|
$filter_by_date ="";
|
|
|
|
|
if($start_date && $end_date)
|
|
|
|
|
{
|
|
|
|
|
$filter_by_date = " and (orders.created_at BETWEEN {$start_date} and {$end_date})";
|
|
|
|
|
$order->whereBetween('created_at',[date($start_date),date($end_date)]);
|
|
|
|
|
$users->whereBetween('created_at',[date($start_date),date($end_date)]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$this->data['orders'] = $order->count();
|
|
|
|
|
$this->data['users'] = $users->count();
|
2019-05-14 23:50:24 +00:00
|
|
|
$this->data['title'] = trans('backpack::base.dashboard'); // set the page title
|
|
|
|
|
$this->data['views'] = Material::sum('view');
|
|
|
|
|
$this->data['like'] = Material::sum('like');
|
2019-05-15 09:57:26 +00:00
|
|
|
$this->data['field']['start_name'] = 'start';
|
|
|
|
|
$this->data['field']['end_name'] = 'end';
|
|
|
|
|
$this->data['field']['label'] = 'range';
|
2019-07-10 13:47:00 +00:00
|
|
|
// $this->data['categories'] = Category::where('depth',1)
|
|
|
|
|
// ->select('categories.*',
|
|
|
|
|
// //DB::raw("(Select COUNT(orders.id) From orders
|
|
|
|
|
// //Where orders.category_id = categories.id and orders.payed = 1{$filter_by_date}) as orders"),
|
|
|
|
|
// //DB::raw("(Select SUM(orders.price) From orders
|
|
|
|
|
// //Where orders.category_id = categories.id and orders.payed = 1{$filter_by_date}) as total"),
|
|
|
|
|
// DB::raw('SUM(materials.view) as views'),
|
|
|
|
|
// DB::raw('SUM(materials.like) as likes'))
|
|
|
|
|
//// ->leftJoin('materials','categories.id','=','materials.category_id')
|
|
|
|
|
// ->groupBy('categories.id')
|
|
|
|
|
// ->get();
|
2019-05-14 23:50:24 +00:00
|
|
|
|
2019-07-10 13:47:00 +00:00
|
|
|
$this->data['categories'] = CategoryMaterial::with(['category:name,id'])
|
|
|
|
|
->selectRaw('category_id, SUM(orders_count) as orders, SUM(orders_payed_count) as total, SUM(views) as views, SUM(likes) as likes')
|
|
|
|
|
->groupBy('category_id')
|
|
|
|
|
->distinct('category_id')
|
|
|
|
|
->get();
|
|
|
|
|
//dd($this->data['categories']);
|
2019-05-14 23:50:24 +00:00
|
|
|
return view('backpack::dashboard', $this->data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function cat_stats($cat_id){
|
2019-05-29 20:16:59 +00:00
|
|
|
$start_date = request('start_date');
|
|
|
|
|
$end_date = request('end_date');
|
|
|
|
|
$filter_by_date ="";
|
|
|
|
|
if($start_date && $end_date)
|
|
|
|
|
$filter_by_date = " and (orders.created_at BETWEEN {$start_date} and {$end_date})";
|
2019-05-28 21:06:27 +00:00
|
|
|
|
2019-05-14 23:50:24 +00:00
|
|
|
$category = Category::findOrfail($cat_id);
|
2019-07-10 13:47:00 +00:00
|
|
|
$materials= $category->materials()
|
2019-05-14 23:50:24 +00:00
|
|
|
->select('materials.title','materials.view','materials.like',
|
2019-05-29 20:16:59 +00:00
|
|
|
DB::raw("(Select COUNT(orders.id) From orders
|
|
|
|
|
Where orders.material_id = materials.id and orders.payed = 1{$filter_by_date}) as orders"),
|
|
|
|
|
DB::raw("(Select SUM(orders.price) From orders
|
|
|
|
|
Where orders.material_id = materials.id and orders.payed = 1{$filter_by_date}) as total"))
|
2019-05-14 23:50:24 +00:00
|
|
|
->get();
|
2019-05-28 21:06:27 +00:00
|
|
|
return view('vendor.backpack.material_stats')
|
|
|
|
|
->with(['category' => $category, 'materials' => $materials]);
|
2019-05-14 23:50:24 +00:00
|
|
|
}
|
|
|
|
|
}
|