has('from_date') == false) { session()->put('from_date', date('Y-m-01')); session()->put('to_date', date('Y-m-30')); } return view('admin-views.report.order-index'); } public function day_wise_report(Request $request) { $key = explode(' ', $request['search']); $from = null; $to = null; $filter = $request->query('filter', 'all_time'); if($filter == 'custom'){ $from = $request->from ?? null; $to = $request->to ?? null; } $zone_id = $request->query('zone_id', isset(auth('admin')->user()->zone_id) ? auth('admin')->user()->zone_id : 'all'); $zone = is_numeric($zone_id) ? Zone::findOrFail($zone_id) : null; $restaurant_id = $request->query('restaurant_id', 'all'); $restaurant = is_numeric($restaurant_id) ? Restaurant::findOrFail($restaurant_id) : null; $order_transactions = OrderTransaction::with('order','order.details','order.customer','order.restaurant') ->when(isset($zone), function ($query) use ($zone) { return $query->where('zone_id', $zone->id); }) ->when(isset($restaurant), function ($query) use ($restaurant){ return $query->whereHas('order', function($q) use ($restaurant){ $q->where('restaurant_id', $restaurant->id); }); }) ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }) ->when(isset($request['search']), function ($query) use($key){ $query->where(function ($q) use ($key) { foreach ($key as $value) { $q->orWhere('order_id', 'like', "%{$value}%"); } }); }) ->orderBy('created_at', 'desc') ->paginate(config('default_pagination'))->withQueryString(); $admin_earned = OrderTransaction::with('order','order.details','order.customer','order.restaurant')->when(isset($zone), function ($query) use ($zone) { return $query->where('zone_id', $zone->id); }) ->when(isset($restaurant), function ($query) use ($restaurant){ return $query->whereHas('order', function($q) use ($restaurant){ $q->where('restaurant_id', $restaurant->id); }); }) ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); })->orderBy('created_at', 'desc') ->notRefunded() ->sum(DB::raw('admin_commission + delivery_fee_comission')); // $admin_earned_delivery_commission = OrderTransaction::with('order','order.details','order.customer','order.restaurant')->when(isset($zone), function ($query) use ($zone) { // return $query->where('zone_id', $zone->id); // }) // ->when(isset($restaurant), function ($query) use ($restaurant){ // return $query->whereHas('order', function($q) use ($restaurant){ // $q->where('restaurant_id', $restaurant->id); // }); // }) // ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { // return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); // }) // ->when(isset($filter) && $filter == 'this_year', function ($query) { // return $query->whereYear('created_at', now()->format('Y')); // }) // ->when(isset($filter) && $filter == 'this_month', function ($query) { // return $query->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y')); // }) // ->when(isset($filter) && $filter == 'previous_year', function ($query) { // return $query->whereYear('created_at', date('Y') - 1); // }) // ->when(isset($filter) && $filter == 'this_week', function ($query) { // return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); // })->orderBy('created_at', 'desc') // ->sum('delivery_fee_comission'); $restaurant_earned = OrderTransaction::with('order','order.details','order.customer','order.restaurant')->when(isset($zone), function ($query) use ($zone) { return $query->where('zone_id', $zone->id); }) ->when(isset($restaurant), function ($query) use ($restaurant){ return $query->whereHas('order', function($q) use ($restaurant){ $q->where('restaurant_id', $restaurant->id); }); }) ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); })->orderBy('created_at', 'desc') ->notRefunded() ->sum(DB::raw('restaurant_amount - tax')); $deliveryman_earned = OrderTransaction::with('order','order.details','order.customer','order.restaurant')->when(isset($zone), function ($query) use ($zone) { return $query->where('zone_id', $zone->id); }) ->when(isset($restaurant), function ($query) use ($restaurant){ return $query->whereHas('order', function($q) use ($restaurant){ $q->where('restaurant_id', $restaurant->id); }); }) ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); })->orderBy('created_at', 'desc') ->sum(DB::raw('original_delivery_charge + dm_tips')); return view('admin-views.report.day-wise-report', compact('order_transactions', 'zone', 'from', 'to', 'restaurant','filter','admin_earned','restaurant_earned','deliveryman_earned')); } public function day_wise_report_export(Request $request){ $key = explode(' ', $request['search']); $from = null; $to = null; $filter = $request->query('filter', 'all_time'); if($filter == 'custom'){ $from = $request->from ?? null; $to = $request->to ?? null; } $zone_id = $request->query('zone_id', isset(auth('admin')->user()->zone_id) ? auth('admin')->user()->zone_id : 'all'); $zone = is_numeric($zone_id) ? Zone::findOrFail($zone_id) : null; $restaurant_id = $request->query('restaurant_id', 'all'); $restaurant = is_numeric($restaurant_id) ? Restaurant::findOrFail($restaurant_id) : null; $order_transactions = OrderTransaction::with('order','order.details','order.customer','order.restaurant') ->when(isset($zone), function ($query) use ($zone) { return $query->where('zone_id', $zone->id); }) ->when(isset($restaurant), function ($query) use ($restaurant){ return $query->whereHas('order', function($q) use ($restaurant){ $q->where('restaurant_id', $restaurant->id); }); }) ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }) ->when(isset($request['search']), function ($query) use($key){ $query->where(function ($q) use ($key) { foreach ($key as $value) { $q->orWhere('order_id', 'like', "%{$value}%"); } }); }) ->orderBy('created_at', 'desc') ->get(); if($request->type == 'excel'){ return (new FastExcel(Helpers::export_day_wise_report($order_transactions)))->download('DayWiseDailyReport.xlsx'); }elseif($request->type == 'csv'){ return (new FastExcel(Helpers::export_day_wise_report($order_transactions)))->download('DayWiseDailyReport.csv'); } } public function food_wise_report(Request $request) { $categories = Category::where(['position' => 0])->get(); $from = null; $to = null; $type = $request->query('type', 'all'); $filter = $request->query('filter', 'all_time'); if($filter == 'custom'){ $from = $request->from ?? null; $to = $request->to ?? null; } $key = explode(' ', $request['search']); $zone_id = $request->query('zone_id', isset(auth('admin')->user()->zone_id) ? auth('admin')->user()->zone_id : 'all'); $restaurant_id = $request->query('restaurant_id', 'all'); $category_id = $request->query('category_id', 'all'); $zone = is_numeric($zone_id) ? Zone::findOrFail($zone_id) : null; $restaurant = is_numeric($restaurant_id) ? Restaurant::findOrFail($restaurant_id) : null; $category = is_numeric($category_id) ? Category::findOrFail($category_id) : null; $foods = Food::withoutGlobalScopes() ->withCount([ 'orders' => function ($query) use ($from, $to, $filter) { $query->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }) ->whereHas('order', function($query){ return $query->whereIn('order_status',['delivered','refund_requested','refund_request_canceled']); }); }, ]) ->withSum([ 'orders' => function ($query) use ($from, $to, $filter) { $query->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }) ->whereHas('order', function($query){ return $query->whereIn('order_status',['delivered','refund_requested','refund_request_canceled']); }); }, ], 'discount_on_food') ->withSum([ 'orders' => function ($query) use ($from, $to, $filter) { $query->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }) ->whereHas('order', function($query){ return $query->whereIn('order_status',['delivered','refund_requested','refund_request_canceled']); }); }, ], 'price') ->when(isset($request['search']), function ($query) use($key){ $query->where(function ($q) use ($key) { foreach ($key as $value) { $q->orWhere('name', 'like', "%{$value}%"); } }); }) ->when(isset($zone), function ($query) use ($zone) { return $query->whereHas('orders.order', function($query) use($zone){ $query->where('zone_id',$zone->id); }); }) ->when(isset($restaurant), function ($query) use ($restaurant) { return $query->where('restaurant_id', $restaurant->id); }) ->when(isset($category), function ($query) use ($category) { return $query->where('category_id', $category->id); }) ->when(isset($type) && $type =='veg', function ($query) { return $query->where('veg', 1); }) ->when(isset($type) && $type =='non_veg', function ($query) { return $query->where('veg', 0); }) ->with('restaurant') ->orderBy('orders_count', 'desc') ->paginate(config('default_pagination')) ->withQueryString(); // $restaurant_earnings = OrderDetail::with('order')->whereHas('order',function($query) use($zone ,$restaurant) { // $query->when(isset($zone), function ($query) use ($zone) { // $query->where('zone_id',$zone->id); // }) // ->when(isset($restaurant), function ($query) use ($restaurant) { // $query->where('restaurant_id',$restaurant->id); // }) // ->whereIn('order_status',['delivered','refund_requested','refund_request_canceled']); // })->select( // DB::raw('IFNULL(sum(price),0) as earning'), // DB::raw('IFNULL(avg(price ),0) as avg_commission'), // DB::raw('YEAR(created_at) year, MONTH(created_at) month'), // )->when(isset($from) && isset($to) , function ($query) use($from,$to){ // $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); // }) // ->when(isset($filter) && $filter == 'this_year', function ($query) { // return $query->whereYear('created_at', now()->format('Y')); // }) // ->when(isset($filter) && $filter == 'this_month', function ($query) { // return $query->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y')); // }) // ->when(isset($filter) && $filter == 'previous_year', function ($query) { // return $query->whereYear('created_at', date('Y') - 1); // }) // ->when(isset($filter) && $filter == 'this_week', function ($query) { // return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); // }) // ->when(isset($category), function ($query) use ($category) { // return $query->whereHas('food',function($q) use($category){ // $q->where('category_id', $category->id); // }); // }) // ->when(isset($type) && $type =='veg', function ($query){ // return $query->whereHas('food',function($q) { // $q->where('veg', 1); // }); // }) // ->when(isset($type) && $type =='non_veg', function ($query){ // return $query->whereHas('food',function($q) { // $q->where('veg', 0); // }); // }) // ->groupby('year', 'month')->get()->toArray(); // for ($inc = 1; $inc <= 12; $inc++) { // $total_food_sells[$inc] = 0; // $avg_food_sells[$inc] = 0; // foreach ($restaurant_earnings as $match) { // if ($match['month'] == $inc) { // $total_food_sells[$inc] = $match['earning']; // $avg_food_sells[$inc] = $match['avg_commission']; // } // } // } // ,'total_food_sells','avg_food_sells' return view('admin-views.report.food-wise-report', compact('zone', 'restaurant', 'category_id', 'categories','foods','from', 'to','filter')); } public function food_wise_report_export(Request $request){ $categories = Category::where(['position' => 0])->get(); $from = null; $to = null; $type = $request->query('type', 'all'); $filter = $request->query('filter', 'all_time'); if($filter == 'custom'){ $from = $request->from ?? null; $to = $request->to ?? null; } $key = explode(' ', $request['search']); $zone_id = $request->query('zone_id', isset(auth('admin')->user()->zone_id) ? auth('admin')->user()->zone_id : 'all'); $restaurant_id = $request->query('restaurant_id', 'all'); $category_id = $request->query('category_id', 'all'); $zone = is_numeric($zone_id) ? Zone::findOrFail($zone_id) : null; $restaurant = is_numeric($restaurant_id) ? Restaurant::findOrFail($restaurant_id) : null; $category = is_numeric($category_id) ? Category::findOrFail($category_id) : null; $foods = Food::withoutGlobalScopes() ->withCount([ 'orders' => function ($query) use ($from, $to, $filter) { $query->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }) ->whereHas('order', function($query){ return $query->whereIn('order_status',['delivered','refund_requested','refund_request_canceled']); }); }, ]) ->withSum([ 'orders' => function ($query) use ($from, $to, $filter) { $query->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }) ->whereHas('order', function($query){ return $query->whereIn('order_status',['delivered','refund_requested','refund_request_canceled']); }); }, ], 'discount_on_food') ->withSum([ 'orders' => function ($query) use ($from, $to, $filter) { $query->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }) ->whereHas('order', function($query){ return $query->whereIn('order_status',['delivered','refund_requested','refund_request_canceled']); }); }, ], 'price') ->when(isset($request['search']), function ($query) use($key){ $query->where(function ($q) use ($key) { foreach ($key as $value) { $q->orWhere('name', 'like', "%{$value}%"); } }); }) ->when(isset($zone), function ($query) use ($zone) { return $query->whereHas('orders.order', function($query) use($zone){ $query->where('zone_id',$zone->id); }); }) ->when(isset($restaurant), function ($query) use ($restaurant) { return $query->where('restaurant_id', $restaurant->id); }) ->when(isset($category), function ($query) use ($category) { return $query->where('category_id', $category->id); }) ->when(isset($type) && $type =='veg', function ($query) { return $query->where('veg', 1); }) ->when(isset($type) && $type =='non_veg', function ($query) { return $query->where('veg', 0); }) ->with('restaurant') ->orderBy('orders_count', 'desc') ->get(); if($request->type == 'excel'){ return (new FastExcel(Helpers::food_wise_report_export($foods)))->download('FoodWiseReport.xlsx'); }elseif($request->type == 'csv'){ return (new FastExcel(Helpers::food_wise_report_export($foods)))->download('FoodWiseReport.csv'); } } public function order_transaction() { $order_transactions = OrderTransaction::latest()->paginate(config('default_pagination')); return view('admin-views.report.order-transactions', compact('order_transactions')); } public function set_date(Request $request) { session()->put('from_date', date('Y-m-d', strtotime($request['from']))); session()->put('to_date', date('Y-m-d', strtotime($request['to']))); return back(); } public function expense_report(Request $request) { $from = null; $to = null; $filter = $request->query('filter', 'all_time'); if($filter == 'custom'){ $from = $request->from ?? null; $to = $request->to ?? null; } $key = explode(' ', $request['search']); $zone_id = $request->query('zone_id', isset(auth('admin')->user()->zone_id) ? auth('admin')->user()->zone_id : 'all'); $zone = is_numeric($zone_id) ? Zone::findOrFail($zone_id) : null; $restaurant_id = $request->query('restaurant_id', 'all'); $restaurant = is_numeric($restaurant_id) ? Restaurant::findOrFail($restaurant_id) : null; $customer_id = $request->query('customer_id', 'all'); $customer = is_numeric($customer_id) ? User::findOrFail($customer_id) : null; $expense = Expense::with('order','order.customer:id,f_name,l_name')->where('created_by','admin') ->when(isset($zone) || isset($restaurant) || isset($customer), function ($query) use ($zone,$restaurant,$customer) { return $query->whereHas('order', function($query) use ($zone,$restaurant,$customer) { $query->when($zone, function ($query) use ($zone) { return $query->where('zone_id', $zone->id); }); $query->when($restaurant, function ($query) use ($restaurant) { return $query->where('restaurant_id', $restaurant->id); }); $query->when($customer, function ($query) use ($customer) { return $query->where('user_id', $customer->id); }); }); }) ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }) ->when( isset($key), function($query) use($key){ $query->where(function ($q) use ($key) { foreach ($key as $value) { $q->orWhere('type', 'like', "%{$value}%")->orWhere('order_id', 'like', "%{$value}%"); } }); }) ->orderBy('created_at', 'desc') ->paginate(config('default_pagination'))->withQueryString(); return view('admin-views.report.expense-report', compact('expense','zone', 'restaurant','filter','customer','from','to')); } public function expense_export(Request $request) { $from = null; $to = null; $filter = $request->query('filter', 'all_time'); if($filter == 'custom'){ $from = $request->from ?? null; $to = $request->to ?? null; } $key = explode(' ', $request['search']); $zone_id = $request->query('zone_id', isset(auth('admin')->user()->zone_id) ? auth('admin')->user()->zone_id : 'all'); $zone = is_numeric($zone_id) ? Zone::findOrFail($zone_id) : null; $restaurant_id = $request->query('restaurant_id', 'all'); $restaurant = is_numeric($restaurant_id) ? Restaurant::findOrFail($restaurant_id) : null; $customer_id = $request->query('customer_id', 'all'); $customer = is_numeric($customer_id) ? User::findOrFail($customer_id) : null; $expense = Expense::with('order','order.customer:id,f_name,l_name')->where('created_by','admin') ->when(isset($zone) || isset($restaurant) || isset($customer), function ($query) use ($zone,$restaurant,$customer) { return $query->whereHas('order', function($query) use ($zone,$restaurant,$customer) { $query->when($zone, function ($query) use ($zone) { return $query->where('zone_id', $zone->id); }); $query->when($restaurant, function ($query) use ($restaurant) { return $query->where('restaurant_id', $restaurant->id); }); $query->when($customer, function ($query) use ($customer) { return $query->where('user_id', $customer->id); }); }); }) ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }) ->when( isset($key), function($query) use($key){ $query->where(function ($q) use ($key) { foreach ($key as $value) { $q->orWhere('type', 'like', "%{$value}%")->orWhere('order_id', 'like', "%{$value}%"); } }); }) ->orderBy('created_at', 'desc') ->get(); if ($request->type == 'excel') { return (new FastExcel(Helpers::export_expense_wise_report($expense)))->download('ExpenseReport.xlsx'); } elseif ($request->type == 'csv') { return (new FastExcel(Helpers::export_expense_wise_report($expense)))->download('ExpenseReport.csv'); } } public function subscription_report(Request $request) { $from = null; $to = null; $restaurant_id = $request->query('restaurant_id', 'all'); $restaurant = is_numeric($restaurant_id) ? Restaurant::findOrFail($restaurant_id) : null; $filter = $request->query('filter', 'all_time'); if($filter == 'custom'){ $from = $request->from ?? null; $to = $request->to ?? null; } $key = explode(' ', $request['search']); $payment_type = $request->query('payment_type', 'all'); $subscriptions = SubscriptionTransaction::with('restaurant') ->when(isset($restaurant), function ($query) use ($restaurant){ return $query->where('restaurant_id', $restaurant->id); }) ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($payment_type) && $payment_type == 'wallet_payment', function ($query) { return $query->where('payment_method', 'wallet'); }) ->when(isset($payment_type) && $payment_type == 'manual_payment', function ($query) { return $query->whereIn('payment_method',[ 'manual_payment_by_restaurant','manual_payment_admin']); }) ->when(isset($payment_type) && $payment_type == 'digital_payment', function ($query) { return $query->where('payment_method', 'digital_payment'); }) ->when(isset($payment_type) && $payment_type == 'free_trial', function ($query) { return $query->where('payment_method', 'free_trial'); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); })->when(isset($request['search']), function ($query) use($key){ $query->where(function ($qu) use ($key){ $qu->where(function ($q) use ($key) { foreach ($key as $value) { $q->orWhere('id', 'like', "%{$value}%") ->orWhere('paid_amount', 'like', "%{$value}%") ->orWhere('reference', 'like', "%{$value}%"); } })->orwhereHas('restaurant',function($query)use($key){ foreach ($key as $v) { $query->where('name', 'like', "%{$v}%") ->orWhere('email', 'like', "%{$v}%"); } }); }); }) ->orderBy('created_at', 'desc') ->paginate(config('default_pagination'))->withQueryString(); return view('admin-views.report.subscription-report', compact('subscriptions','restaurant','filter','payment_type','to','from')); } public function subscription_export(Request $request) { $from = null; $to = null; $restaurant_id = $request->query('restaurant_id', 'all'); $restaurant = is_numeric($restaurant_id) ? Restaurant::findOrFail($restaurant_id) : null; $filter = $request->query('filter', 'all_time'); if($filter == 'custom'){ $from = $request->from ?? null; $to = $request->to ?? null; } $payment_type = $request->query('payment_type', 'all'); $subscriptions = SubscriptionTransaction::with('restaurant') ->when(isset($restaurant), function ($query) use ($restaurant){ return $query->where('restaurant_id', $restaurant->id); }) ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($payment_type) && $payment_type == 'wallet_payment', function ($query) { return $query->where('payment_method', 'wallet'); }) ->when(isset($payment_type) && $payment_type == 'manual_payment', function ($query) { return $query->whereIn('payment_method',[ 'manual_payment_by_restaurant','manual_payment_admin']); }) ->when(isset($payment_type) && $payment_type == 'digital_payment', function ($query) { return $query->where('payment_method', 'digital_payment'); }) ->when(isset($payment_type) && $payment_type == 'free_trial', function ($query) { return $query->where('payment_method', 'free_trial'); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }) ->orderBy('created_at', 'desc') ->get(); if($request->type == 'excel'){ return (new FastExcel(Helpers::export_subscription($subscriptions)))->download('SubscriptionsReport.xlsx'); }elseif($request->type == 'csv'){ return (new FastExcel(Helpers::export_subscription($subscriptions)))->download('SubscriptionsReport.csv'); } } public function campaign_order_report(Request $request){ $from = null; $to = null; $filter = $request->query('filter', 'all_time'); if($filter == 'custom'){ $from = $request->from ?? null; $to = $request->to ?? null; } $zone_id = $request->query('zone_id', isset(auth('admin')->user()->zone_id) ? auth('admin')->user()->zone_id : 'all'); $zone = is_numeric($zone_id) ? Zone::findOrFail($zone_id) : null; $restaurant_id = $request->query('restaurant_id', 'all'); $restaurant = is_numeric($restaurant_id) ? Restaurant::findOrFail($restaurant_id) : null; $customer_id = $request->query('customer_id', 'all'); $customer = is_numeric($customer_id) ? User::findOrFail($customer_id) : null; $campaign_id = $request->query('campaign_id', 'all'); $key = explode(' ', $request['search']); $orders = Order::with(['customer', 'restaurant','details','transaction']) ->whereHas('details',function ($query){ $query->whereNotNull('item_campaign_id'); }) ->when(is_numeric($campaign_id), function ($query) use ($campaign_id) { return $query->whereHas('details',function ($query) use ($campaign_id){ $query->where('item_campaign_id',$campaign_id); }); }) ->when(isset($zone), function ($query) use ($zone) { return $query->where('zone_id', $zone->id); }) ->when(isset($restaurant), function ($query) use ($restaurant) { return $query->where('restaurant_id', $restaurant->id); }) ->when(isset($customer), function ($query) use ($customer) { return $query->where('user_id', $customer->id); }) ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('schedule_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('schedule_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('schedule_at', now()->format('m'))->whereYear('schedule_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('schedule_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('schedule_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }) ->when(isset($request['search']), function ($query) use($key){ $query->where(function ($qu)use ($key){ $qu->where(function ($q) use ($key) { foreach ($key as $value) { $q->orWhere('id', 'like', "%{$value}%"); } })->orwhereHas('restaurant',function($query)use($key){ foreach ($key as $v) { $query->where('name', 'like', "%{$v}%") ->orWhere('email', 'like', "%{$v}%"); } }); }); }) ->withSum('transaction', 'admin_commission') ->withSum('transaction', 'admin_expense') ->withSum('transaction', 'delivery_fee_comission') ->orderBy('schedule_at', 'desc')->paginate(config('default_pagination'))->withQueryString(); // order card values calculation $orders_list = Order:: whereHas('details',function ($query){ $query->whereNotNull('item_campaign_id'); }) ->when(is_numeric($campaign_id), function ($query) use ($campaign_id) { return $query->whereHas('details',function ($query) use ($campaign_id){ $query->where('item_campaign_id',$campaign_id); }); }) ->when(isset($zone), function ($query) use ($zone) { return $query->where('zone_id', $zone->id); }) ->when(isset($restaurant), function ($query) use ($restaurant) { return $query->where('restaurant_id', $restaurant->id); }) ->when(isset($customer), function ($query) use ($customer) { return $query->where('user_id', $customer->id); }) ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('schedule_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('schedule_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('schedule_at', now()->format('m'))->whereYear('schedule_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('schedule_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('schedule_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }) ->orderBy('schedule_at', 'desc')->get(); $total_order_amount = $orders_list->sum('order_amount'); $total_coupon_discount = $orders_list->sum('coupon_discount_amount'); $total_product_discount = $orders_list->sum('restaurant_discount_amount'); $total_canceled_count = $orders_list->where('order_status', 'canceled')->count(); $total_delivered_count = $orders_list->where('order_status', 'delivered')->where('order_type', '<>' , 'pos')->count(); $total_progress_count = $orders_list->whereIn('order_status', ['accepted','confirmed','processing','handover'])->count(); $total_failed_count = $orders_list->where('order_status', 'failed')->count(); $total_refunded_count = $orders_list->where('order_status', 'refunded')->count(); $total_on_the_way_count = $orders_list->whereIn('order_status', ['picked_up'])->count(); $total_orders = $orders_list->count(); return view('admin-views.report.campaign_order-report', compact('orders','orders_list','zone', 'campaign_id','from','to','total_orders', 'restaurant','filter','customer','total_on_the_way_count','total_refunded_count','total_failed_count','total_progress_count','total_canceled_count','total_delivered_count')); } public function campaign_report_export(Request $request) { $key = isset($request['search']) ? explode(' ', $request['search']) : []; $filter = $request->query('filter', 'all_time'); $from = null; $to = null; $filter = $request->query('filter', 'all_time'); if($filter == 'custom'){ $from = $request->from ?? null; $to = $request->to ?? null; } $zone_id = $request->query('zone_id', isset(auth('admin')->user()->zone_id) ? auth('admin')->user()->zone_id : 'all'); $zone = is_numeric($zone_id) ? Zone::findOrFail($zone_id) : null; $restaurant_id = $request->query('restaurant_id', 'all'); $restaurant = is_numeric($restaurant_id) ? Restaurant::findOrFail($restaurant_id) : null; $customer_id = $request->query('customer_id', 'all'); $customer = is_numeric($customer_id) ? User::findOrFail($customer_id) : null; $campaign_id = $request->query('campaign_id', 'all'); $orders = Order::with(['customer', 'restaurant','details']) ->whereHas('details',function ($query){ $query->whereNotNull('item_campaign_id'); }) ->when(isset($zone), function ($query) use ($zone) { return $query->where('zone_id', $zone->id); }) ->when(is_numeric($campaign_id), function ($query) use ($campaign_id) { return $query->whereHas('details',function ($query) use ($campaign_id){ $query->where('item_campaign_id',$campaign_id); }); }) ->when(isset($restaurant), function ($query) use ($restaurant) { return $query->where('restaurant_id', $restaurant->id); }) ->when(isset($customer), function ($query) use ($customer) { return $query->where('user_id', $customer->id); }) ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('schedule_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('schedule_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('schedule_at', now()->format('m'))->whereYear('schedule_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('schedule_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('schedule_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }) ->when(isset($request['search']), function ($query) use($key){ $query->where(function ($qu)use ($key){ $qu->where(function ($q) use ($key) { foreach ($key as $value) { $q->orWhere('id', 'like', "%{$value}%"); } })->orwhereHas('restaurant',function($query)use($key){ foreach ($key as $v) { $query->where('name', 'like', "%{$v}%") ->orWhere('email', 'like', "%{$v}%"); } }); }); }) ->orderBy('schedule_at', 'desc') ->get(); if ($request->type == 'excel') { return (new FastExcel(OrderLogic::format_order_report_export_data($orders)))->download('CampaignOrders.xlsx'); } elseif ($request->type == 'csv') { return (new FastExcel(OrderLogic::format_order_report_export_data($orders)))->download('CampaignOrders.csv'); } } public function order_report(Request $request){ $from = null; $to = null; $filter = $request->query('filter', 'all_time'); if($filter == 'custom'){ $from = $request->from ?? null; $to = $request->to ?? null; } $key = explode(' ', $request['search']); $zone_id = $request->query('zone_id', isset(auth('admin')->user()->zone_id) ? auth('admin')->user()->zone_id : 'all'); $zone = is_numeric($zone_id) ? Zone::findOrFail($zone_id) : null; $restaurant_id = $request->query('restaurant_id', 'all'); $restaurant = is_numeric($restaurant_id) ? Restaurant::findOrFail($restaurant_id) : null; $customer_id = $request->query('customer_id', 'all'); $customer = is_numeric($customer_id) ? User::findOrFail($customer_id) : null; $orders = Order::with(['customer', 'restaurant','details','transaction']) ->when(isset($zone), function ($query) use ($zone) { return $query->where('zone_id', $zone->id); }) ->when(isset($restaurant), function ($query) use ($restaurant) { return $query->where('restaurant_id', $restaurant->id); }) ->when(isset($customer), function ($query) use ($customer) { return $query->where('user_id', $customer->id); }) ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('schedule_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('schedule_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('schedule_at', now()->format('m'))->whereYear('schedule_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('schedule_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('schedule_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }) ->when(isset($key), function($query) use($key){ $query->where(function ($q) use ($key) { foreach ($key as $value) { $q->orWhere('id', 'like', "%{$value}%"); } }); }) ->withSum('transaction', 'admin_commission') ->withSum('transaction', 'admin_expense') ->withSum('transaction', 'delivery_fee_comission') ->orderBy('schedule_at', 'desc')->paginate(config('default_pagination'))->withQueryString(); // order card values calculation $orders_list = Order:: when(isset($zone), function ($query) use ($zone) { return $query->where('zone_id', $zone->id); }) ->when(isset($restaurant), function ($query) use ($restaurant) { return $query->where('restaurant_id', $restaurant->id); }) ->when(isset($customer), function ($query) use ($customer) { return $query->where('user_id', $customer->id); }) ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('schedule_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('schedule_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('schedule_at', now()->format('m'))->whereYear('schedule_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('schedule_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('schedule_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }) ->orderBy('schedule_at', 'desc')->get(); $total_order_amount = $orders_list->sum('order_amount'); $total_coupon_discount = $orders_list->sum('coupon_discount_amount'); $total_product_discount = $orders_list->sum('restaurant_discount_amount'); $total_canceled_count = $orders_list->where('order_status', 'canceled')->count(); $total_delivered_count = $orders_list->where('order_status', 'delivered')->where('order_type', '<>' , 'pos')->count(); $total_progress_count = $orders_list->whereIn('order_status', ['accepted','confirmed','processing','handover'])->count(); $total_failed_count = $orders_list->where('order_status', 'failed')->count(); $total_refunded_count = $orders_list->where('order_status', 'refunded')->count(); $total_on_the_way_count = $orders_list->whereIn('order_status', ['picked_up'])->count(); $total_accepted_count = $orders_list->where('order_status', 'accepted')->count(); $total_pending_count = $orders_list->where('order_status', 'pending')->count(); $total_scheduled_count = $orders_list->where('scheduled', 1)->count(); return view('admin-views.report.order-report', compact('orders','orders_list','zone', 'restaurant','from','to','total_accepted_count','total_pending_count','total_scheduled_count', 'filter','customer','total_on_the_way_count','total_refunded_count','total_failed_count','total_progress_count','total_canceled_count','total_delivered_count')); } public function order_report_export(Request $request) { $key = isset($request['search']) ? explode(' ', $request['search']) : []; $from = null; $to = null; $filter = $request->query('filter', 'all_time'); if($filter == 'custom'){ $from = $request->from ?? null; $to = $request->to ?? null; } $zone_id = $request->query('zone_id', isset(auth('admin')->user()->zone_id) ? auth('admin')->user()->zone_id : 'all'); $zone = is_numeric($zone_id) ? Zone::findOrFail($zone_id) : null; $restaurant_id = $request->query('restaurant_id', 'all'); $restaurant = is_numeric($restaurant_id) ? Restaurant::findOrFail($restaurant_id) : null; $customer_id = $request->query('customer_id', 'all'); $customer = is_numeric($customer_id) ? User::findOrFail($customer_id) : null; $filter = $request->query('filter', 'all_time'); $orders = Order::with(['customer', 'restaurant']) ->when(isset($zone), function ($query) use ($zone) { return $query->where('zone_id', $zone->id); }) ->when(isset($restaurant), function ($query) use ($restaurant) { return $query->where('restaurant_id', $restaurant->id); }) ->when(isset($customer), function ($query) use ($customer) { return $query->where('user_id', $customer->id); }) ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('schedule_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('schedule_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('schedule_at', now()->format('m'))->whereYear('schedule_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('schedule_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('schedule_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }) ->when(isset($key), function($query) use($key){ $query->where(function ($q) use ($key) { foreach ($key as $value) { $q->orWhere('id', 'like', "%{$value}%"); } }); }) ->withSum('transaction', 'admin_commission') ->withSum('transaction', 'admin_expense') ->withSum('transaction', 'delivery_fee_comission') ->orderBy('schedule_at', 'desc')->get(); if ($request->type == 'excel') { return (new FastExcel(OrderLogic::format_order_report_export_data($orders)))->download('Orders.xlsx'); } elseif ($request->type == 'csv') { return (new FastExcel(OrderLogic::format_order_report_export_data($orders)))->download('Orders.csv'); } } public function restaurant_report(Request $request) { $months = array( '"Jan"', '"Feb"', '"Mar"', '"Apr"', '"May"', '"Jun"', '"Jul"', '"Aug"', '"Sep"', '"Oct"', '"Nov"', '"Dec"' ); $days = array( '"Sun"', '"Mon"', '"Tue"', '"Wed"', '"Thu"', '"Fri"', '"Sat"' ); $from = null; $to = null; $filter = $request->query('filter', 'all_time'); if($filter == 'custom'){ $from = $request->from ?? null; $to = $request->to ?? null; } $restaurant_model = $request->query('restaurant_model', 'all'); $type = $request->query('type', 'all'); $key = explode(' ', $request['search']); $zone_id = $request->query('zone_id', isset(auth('admin')->user()->zone_id) ? auth('admin')->user()->zone_id : 'all'); $zone = is_numeric($zone_id) ? Zone::findOrFail($zone_id) : null; $restaurants = Restaurant::with('reviews','vendor') ->whereHas('vendor',function($query){ return $query->where('status',1); }) ->withSum('reviews' , 'rating') ->withCount(['reviews','foods'=> function ($query)use ($from, $to, $filter) { $query->withoutGlobalScopes() ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($q) use ($from, $to){ return $q->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at','<', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }); }, 'transaction as without_refund_total_orders_count' => function ($query)use ($from, $to, $filter) { $query->NotRefunded() ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($q) use ($from, $to){ $q->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }); },]) ->withSum([ 'transaction' => function ($query) use ($from, $to, $filter) { $query->NotRefunded() ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at',date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }); }, ], 'order_amount') ->withSum([ 'transaction' => function ($query) use ($from, $to, $filter) { $query->NotRefunded() ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }); }, ], 'tax') ->withSum([ 'transaction as transaction_sum_restaurant_expense' => function ($query) use ($from, $to, $filter) { $query->NotRefunded() ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }); }, ], 'discount_amount_by_restaurant') ->withSum([ 'transaction' => function ($query) use ($from, $to, $filter) { $query->NotRefunded() ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($q) use ($from, $to){ $q->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }); }, ], 'admin_commission') ->when(isset($zone), function ($query) use ($zone) { return $query->where('zone_id', $zone->id); }) ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereHas('transaction', function($q)use ($from, $to){ return $q->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereHas('transaction', function($q){ return $q->whereYear('created_at', now()->format('Y')); }); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereHas('transaction', function($q){ return $q->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y')); }); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereHas('transaction', function($q){ return $q->whereYear('created_at' , date('Y') - 1); }); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereHas('transaction', function($q){ return $q->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }); }) ->when(isset($restaurant_model), function ($query) use($restaurant_model) { return $query->RestaurantModel($restaurant_model); }) ->when(isset($type), function ($query) use($type) { return $query->Type($type); }) ->when(isset($request['search']), function ($query) use($key){ $query->where(function ($qu) use ($key){ foreach ($key as $value) { $qu->orWhere('name', 'like', "%{$value}%") ->orWhere('email', 'like', "%{$value}%"); } }); }) ->orderBy('created_at', 'asc') ->paginate(config('default_pagination'))->withQueryString(); $monthly_order = []; $data = []; $data_avg = []; switch ($filter) { case "all_time": $monthly_order = OrderTransaction::NotRefunded() ->when(isset($zone), function ($query) use ($zone) { return $query->whereHas('restaurant',function($q)use ($zone){ $q->where('zone_id', $zone->id); }); }) ->when(isset($restaurant_model), function ($query) use ($restaurant_model) { return $query->whereHas('restaurant',function($q)use ($restaurant_model){ $q->RestaurantModel($restaurant_model); }); }) ->when(isset($type), function ($query) use ($type) { return $query->whereHas('restaurant',function($q)use ($type){ $q->Type($type); }); }) ->select( DB::raw("(sum(order_amount)) as order_amount"), DB::raw("(avg(order_amount)) as order_amount_avg"), DB::raw("(DATE_FORMAT(created_at, '%Y')) as year") ) ->groupBy(DB::raw("DATE_FORMAT(created_at, '%Y')")) ->get()->toArray(); $label = array_map(function ($order) { return $order['year']; }, $monthly_order); $data = array_map(function ($order) { return $order['order_amount']; }, $monthly_order); $data_avg = array_map(function ($order) { return $order['order_amount_avg']; }, $monthly_order); break; case "this_year": for ($i = 1; $i <= 12; $i++) { $monthly_order[$i] = OrderTransaction::NotRefunded() ->when(isset($zone), function ($query) use ($zone) { return $query->whereHas('restaurant',function($q)use ($zone){ $q->where('zone_id', $zone->id); }); }) ->when(isset($restaurant_model), function ($query) use ($restaurant_model) { return $query->whereHas('restaurant',function($q)use ($restaurant_model){ $q->RestaurantModel($restaurant_model); }); }) ->when(isset($type), function ($query) use ($type) { return $query->whereHas('restaurant',function($q)use ($type){ $q->Type($type); }); }) ->whereMonth('created_at', $i) ->whereYear('created_at', now()->format('Y')) ->sum('order_amount'); $monthly_order_avg[$i] = OrderTransaction::NotRefunded() ->when(isset($zone), function ($query) use ($zone) { return $query->whereHas('restaurant',function($q)use ($zone){ $q->where('zone_id', $zone->id); }); }) ->when(isset($restaurant_model), function ($query) use ($restaurant_model) { return $query->whereHas('restaurant',function($q)use ($restaurant_model){ $q->RestaurantModel($restaurant_model); }); }) ->when(isset($type), function ($query) use ($type) { return $query->whereHas('restaurant',function($q)use ($type){ $q->Type($type); }); }) ->whereMonth('created_at', $i) ->whereYear('created_at', now()->format('Y')) ->avg('order_amount'); } $label = $months; $data = $monthly_order; $data_avg = $monthly_order_avg; break; case "custom": for ($i = 1; $i <= 12; $i++) { $monthly_order[$i] = OrderTransaction::NotRefunded() ->when(isset($zone), function ($query) use ($zone) { return $query->whereHas('restaurant',function($q)use ($zone){ $q->where('zone_id', $zone->id); }); }) ->when(isset($restaurant_model), function ($query) use ($restaurant_model) { return $query->whereHas('restaurant',function($q)use ($restaurant_model){ $q->RestaurantModel($restaurant_model); }); }) ->when(isset($type), function ($query) use ($type) { return $query->whereHas('restaurant',function($q)use ($type){ $q->Type($type); }); }) ->whereMonth('created_at', $i) ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) // ->get(); // dd($monthly_order[$i]); ->sum('order_amount'); $monthly_order_avg[$i] = OrderTransaction::NotRefunded() ->when(isset($zone), function ($query) use ($zone) { return $query->whereHas('restaurant',function($q)use ($zone){ $q->where('zone_id', $zone->id); }); }) ->when(isset($restaurant_model), function ($query) use ($restaurant_model) { return $query->whereHas('restaurant',function($q)use ($restaurant_model){ $q->RestaurantModel($restaurant_model); }); }) ->when(isset($type), function ($query) use ($type) { return $query->whereHas('restaurant',function($q)use ($type){ $q->Type($type); }); }) ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->whereMonth('created_at', $i) ->whereYear('created_at', now()->format('Y')) ->avg('order_amount'); } $label = $months; $data = $monthly_order; $data_avg = $monthly_order_avg; break; case "previous_year": for ($i = 1; $i <= 12; $i++) { $monthly_order[$i] =OrderTransaction::NotRefunded() ->when(isset($zone), function ($query) use ($zone) { return $query->whereHas('restaurant',function($q)use ($zone){ $q->where('zone_id', $zone->id); }); }) ->when(isset($restaurant_model), function ($query) use ($restaurant_model) { return $query->whereHas('restaurant',function($q)use ($restaurant_model){ $q->RestaurantModel($restaurant_model); }); }) ->when(isset($type), function ($query) use ($type) { return $query->whereHas('restaurant',function($q)use ($type){ $q->Type($type); }); }) ->whereMonth('created_at', $i) ->whereYear('created_at', date('Y') - 1) ->sum('order_amount'); $monthly_order_avg[$i] =OrderTransaction::NotRefunded() ->when(isset($zone), function ($query) use ($zone) { return $query->whereHas('restaurant',function($q)use ($zone){ $q->where('zone_id', $zone->id); }); }) ->when(isset($restaurant_model), function ($query) use ($restaurant_model) { return $query->whereHas('restaurant',function($q)use ($restaurant_model){ $q->RestaurantModel($restaurant_model); }); }) ->when(isset($type), function ($query) use ($type) { return $query->whereHas('restaurant',function($q)use ($type){ $q->Type($type); }); }) ->whereMonth('created_at', $i) ->whereYear('created_at', date('Y') - 1) ->avg('order_amount'); } $label = $months; $data = $monthly_order; $data_avg = $monthly_order_avg; break; case "this_week": $weekStartDate = now()->startOfWeek(); for ($i = 1; $i <= 7; $i++) { $monthly_order[$i] = OrderTransaction::NotRefunded() ->when(isset($zone), function ($query) use ($zone) { return $query->whereHas('restaurant',function($q)use ($zone){ $q->where('zone_id', $zone->id); }); }) ->when(isset($restaurant_model), function ($query) use ($restaurant_model) { return $query->whereHas('restaurant',function($q)use ($restaurant_model){ $q->RestaurantModel($restaurant_model); }); }) ->when(isset($type), function ($query) use ($type) { return $query->whereHas('restaurant',function($q)use ($type){ $q->Type($type); }); }) ->whereDay('created_at', $weekStartDate->format('d'))->whereMonth('created_at', now()->format('m')) ->sum('order_amount'); $weekStartDate = $weekStartDate->addDays(1); $monthly_order_avg[$i] = OrderTransaction::NotRefunded() ->when(isset($zone), function ($query) use ($zone) { return $query->whereHas('restaurant',function($q)use ($zone){ $q->where('zone_id', $zone->id); }); }) ->when(isset($restaurant_model), function ($query) use ($restaurant_model) { return $query->whereHas('restaurant',function($q)use ($restaurant_model){ $q->RestaurantModel($restaurant_model); }); }) ->when(isset($type), function ($query) use ($type) { return $query->whereHas('restaurant',function($q)use ($type){ $q->Type($type); }); }) ->whereDay('created_at', $weekStartDate->format('d'))->whereMonth('created_at', now()->format('m')) ->avg('order_amount'); $weekStartDate = $weekStartDate->addDays(1); } $label = $days; $data = $monthly_order; $data_avg = $monthly_order_avg; break; case "this_month": $start = now()->startOfMonth(); $end = now()->startOfMonth()->addDays(7); $total_day = now()->daysInMonth; $remaining_days = now()->daysInMonth - 28; $weeks = array( '"Day 1-7"', '"Day 8-14"', '"Day 15-21"', '"Day 22-' . $total_day . '"', ); for ($i = 1; $i <= 4; $i++) { $monthly_order[$i] = OrderTransaction::NotRefunded() ->when(isset($zone), function ($query) use ($zone) { return $query->whereHas('restaurant',function($q)use ($zone){ $q->where('zone_id', $zone->id); }); }) ->when(isset($restaurant_model), function ($query) use ($restaurant_model) { return $query->whereHas('restaurant',function($q)use ($restaurant_model){ $q->RestaurantModel($restaurant_model); }); }) ->when(isset($type), function ($query) use ($type) { return $query->whereHas('restaurant',function($q)use ($type){ $q->Type($type); }); }) ->whereBetween('created_at', ["{$start->format('Y-m-d')} 00:00:00", "{$end->format('Y-m-d')} 23:59:59"]) ->sum('order_amount'); $monthly_order_avg[$i] = OrderTransaction::NotRefunded() ->when(isset($zone), function ($query) use ($zone) { return $query->whereHas('restaurant',function($q)use ($zone){ $q->where('zone_id', $zone->id); }); }) ->when(isset($restaurant_model), function ($query) use ($restaurant_model) { return $query->whereHas('restaurant',function($q)use ($restaurant_model){ $q->RestaurantModel($restaurant_model); }); }) ->when(isset($type), function ($query) use ($type) { return $query->whereHas('restaurant',function($q)use ($type){ $q->Type($type); }); }) ->whereBetween('created_at', ["{$start->format('Y-m-d')} 00:00:00", "{$end->format('Y-m-d')} 23:59:59"]) ->avg('order_amount'); $start = $start->addDays(7); $end = $i == 3 ? $end->addDays(7 + $remaining_days) : $end->addDays(7); } $label = $weeks; $data = $monthly_order; $data_avg = $monthly_order_avg; break; default: for ($i = 1; $i <= 12; $i++) { $monthly_order[$i] = OrderTransaction::NotRefunded() ->when(isset($zone), function ($query) use ($zone) { return $query->whereHas('restaurant',function($q)use ($zone){ $q->where('zone_id', $zone->id); }); }) ->when(isset($restaurant_model), function ($query) use ($restaurant_model) { return $query->whereHas('restaurant',function($q)use ($restaurant_model){ $q->RestaurantModel($restaurant_model); }); }) ->when(isset($type), function ($query) use ($type) { return $query->whereHas('restaurant',function($q)use ($type){ $q->Type($type); }); }) ->whereMonth('created_at', $i)->whereYear('created_at', now()->format('Y')) ->sum('order_amount'); $monthly_order_avg[$i] = OrderTransaction::NotRefunded() ->when(isset($zone), function ($query) use ($zone) { return $query->whereHas('restaurant',function($q)use ($zone){ $q->where('zone_id', $zone->id); }); }) ->when(isset($restaurant_model), function ($query) use ($restaurant_model) { return $query->whereHas('restaurant',function($q)use ($restaurant_model){ $q->RestaurantModel($restaurant_model); }); }) ->when(isset($type), function ($query) use ($type) { return $query->whereHas('restaurant',function($q)use ($type){ $q->Type($type); }); }) ->whereMonth('created_at', $i)->whereYear('created_at', now()->format('Y')) ->avg('order_amount'); } $label = $months; $data = $monthly_order; $data_avg = $monthly_order_avg; } return view('admin-views.report.restaurant_report', compact('restaurants','filter','zone','to','from', 'monthly_order', 'label', 'data','data_avg' )); } public function restaurant_export(Request $request) { $from = null; $to = null; $filter = $request->query('filter', 'all_time'); if($filter == 'custom'){ $from = $request->from ?? null; $to = $request->to ?? null; } $restaurant_model = $request->query('restaurant_model', 'all'); $type = $request->query('type', 'all'); $key = explode(' ', $request['search']); $zone_id = $request->query('zone_id', isset(auth('admin')->user()->zone_id) ? auth('admin')->user()->zone_id : 'all'); $zone = is_numeric($zone_id) ? Zone::findOrFail($zone_id) : null; $restaurants = Restaurant::with('reviews','vendor') ->whereHas('vendor',function($query){ return $query->where('status',1); }) ->withSum('reviews' , 'rating') ->withCount(['reviews','foods'=> function ($query)use ($from, $to, $filter) { $query->withoutGlobalScopes() ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($q) use ($from, $to){ return $q->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at','<', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }); }, 'transaction as without_refund_total_orders_count' => function ($query)use ($from, $to, $filter) { $query->NotRefunded() ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($q) use ($from, $to){ $q->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }); },]) ->withSum([ 'transaction' => function ($query) use ($from, $to, $filter) { $query->NotRefunded() ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at',date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }); }, ], 'order_amount') ->withSum([ 'transaction' => function ($query) use ($from, $to, $filter) { $query->NotRefunded() ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }); }, ], 'tax') ->withSum([ 'transaction as transaction_sum_restaurant_expense' => function ($query) use ($from, $to, $filter) { $query->NotRefunded() ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }); }, ], 'discount_amount_by_restaurant') ->withSum([ 'transaction' => function ($query) use ($from, $to, $filter) { $query->NotRefunded() ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($q) use ($from, $to){ $q->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereYear('created_at', now()->format('Y')); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereMonth('created_at', now()->format('m')); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereYear('created_at', date('Y') - 1); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }); }, ], 'admin_commission') ->when(isset($zone), function ($query) use ($zone) { return $query->where('zone_id', $zone->id); }) ->when(isset($from) && isset($to) && $from != null && $to != null && $filter == 'custom', function ($query) use ($from, $to) { return $query->whereHas('transaction', function($q)use ($from, $to){ return $q->whereBetween('created_at', [$from . " 00:00:00", $to . " 23:59:59"]); }); }) ->when(isset($filter) && $filter == 'this_year', function ($query) { return $query->whereHas('transaction', function($q){ return $q->whereYear('created_at', now()->format('Y')); }); }) ->when(isset($filter) && $filter == 'this_month', function ($query) { return $query->whereHas('transaction', function($q){ return $q->whereMonth('created_at', now()->format('m'))->whereYear('created_at', now()->format('Y')); }); }) ->when(isset($filter) && $filter == 'previous_year', function ($query) { return $query->whereHas('transaction', function($q){ return $q->whereYear('created_at' , date('Y') - 1); }); }) ->when(isset($filter) && $filter == 'this_week', function ($query) { return $query->whereHas('transaction', function($q){ return $q->whereBetween('created_at', [now()->startOfWeek()->format('Y-m-d H:i:s'), now()->endOfWeek()->format('Y-m-d H:i:s')]); }); }) ->when(isset($restaurant_model), function ($query) use($restaurant_model) { return $query->RestaurantModel($restaurant_model); }) ->when(isset($type), function ($query) use($type) { return $query->Type($type); }) ->when(isset($request['search']), function ($query) use($key){ $query->where(function ($qu) use ($key){ foreach ($key as $value) { $qu->orWhere('name', 'like', "%{$value}%") ->orWhere('email', 'like', "%{$value}%"); } }); }) ->orderBy('created_at', 'asc') ->get(); if ($request->type == 'excel') { return (new FastExcel(RestaurantLogic::format_restaurant_report_export_data($restaurants)))->download('restaurant.xlsx'); } elseif ($request->type == 'csv') { return (new FastExcel(RestaurantLogic::format_restaurant_report_export_data($restaurants)))->download('restaurant.csv'); } } public function generate_statement($id) { $company_phone =BusinessSetting::where('key', 'phone')->first()->value; $company_email =BusinessSetting::where('key', 'email_address')->first()->value; $company_name =BusinessSetting::where('key', 'business_name')->first()->value; $company_web_logo =BusinessSetting::where('key', 'logo')->first()->value; $footer_text = BusinessSetting::where(['key'=>'footer_text'])->first()->value; $order_transaction = OrderTransaction::with('order','order.details','order.customer','order.restaurant')->where('id', $id)->first(); $data["email"] = $order_transaction->order->customer !=null?$order_transaction->order->customer["email"]: translate('email_not_found'); $data["client_name"] = $order_transaction->order->customer !=null? $order_transaction->order->customer["f_name"] . ' ' . $order_transaction->order->customer["l_name"]: translate('customer_not_found'); $data["order_transaction"] = $order_transaction; $mpdf_view = View::make('admin-views.report.order-transaction-statement', compact('order_transaction', 'company_phone', 'company_name', 'company_email', 'company_web_logo', 'footer_text') ); Helpers::gen_mpdf($mpdf_view, 'order_trans_statement', $order_transaction->id); } public function subscription_generate_statement($id) { $company_phone =BusinessSetting::where('key', 'phone')->first()->value; $company_email =BusinessSetting::where('key', 'email_address')->first()->value; $company_name =BusinessSetting::where('key', 'business_name')->first()->value; $company_web_logo =BusinessSetting::where('key', 'logo')->first()->value; $footer_text = BusinessSetting::where(['key'=>'footer_text'])->first()->value; $transaction = SubscriptionTransaction::with('restaurant')->where('id', $id)->first(); $data["email"] = $transaction->restaurant !=null?$transaction->restaurant->email: translate('email_not_found'); $data["client_name"] = $transaction->restaurant !=null? $transaction->restaurant->name: translate('customer_not_found'); $data["transaction"] = $transaction; $mpdf_view = View::make('admin-views.report.subs-transaction-statement', compact('transaction', 'company_phone', 'company_name', 'company_email', 'company_web_logo', 'footer_text') ); // return view('admin-views.report.subs-transaction-statement', // compact('transaction', 'company_phone', 'company_name', 'company_email', 'company_web_logo', 'footer_text')); Helpers::gen_mpdf($mpdf_view, 'transaction', $transaction->id); } }