middleware('auth'); } public function marketings(){ return view('marketing.marketings'); } public function change_lang($lang){ session(['app_lang' => $lang]); } public function reset_customer(){ return view('customers.customers'); } public function getOrderActivities($id){ $status_array = ["Placed","Accepted","On_Road","Has_Delivered"]; $orderActivities = OrderActivities::where('order_id',$id)->get(); $new_array = []; foreach($orderActivities as $status){ $new_array[$status->status] = array('id'=>$status->id,'description'=>$status->status.' found'); } $final_array = []; foreach($status_array as $status){ if(isset($new_array[$status])){ $final_array[$status] = $new_array[$status]; }else{ $final_array[$status] = array('id'=>0,'description'=>$status. ' not found in activities'); } } dump($final_array); } public function getDashboardAnalytics(Request $request){ $s = $request->start_date; $e = $request->end_date; // $s = "2023-08-16"; // $e = "2023-09-14"; $start_date = Carbon::parse($s)->format('Y-m-d'); if($s==$e) $start_date = Carbon::parse($s)->subDay()->format('Y-m-d'); $end_date = Carbon::parse($e)->format('Y-m-d'); $resto_id = CommonMethods::getRestuarantID(); $orders = Orders::whereNull('deleted_at')->where('resto_id',$resto_id)->where('status','Has_Delivered')->whereBetween('created_at',[$start_date,$end_date])->count(); // dd($orders); $total_revenue = DB::table('tb_dm_orders') ->select(DB::raw('(sum(total_price)) as total_price ')) ->where('resto_id' , $resto_id) ->where('status','Has_Delivered') ->whereBetween('created_at',[$start_date,$end_date]) ->whereNull('deleted_at')->first(); $total_price = isset($total_revenue)?$total_revenue->total_price:0; $old_customer = \App\Models\Orders::select(\DB::raw('count(count(customer_id)) OVER() as customer_order'))->where('resto_id',$resto_id)->where('status','Has_Delivered') ->whereBetween('created_at',[$start_date,$end_date])->groupBy('customer_id')->having(\DB::raw('count(customer_id)'),'>',1)->first(); $old_customer = isset($old_customer)?($old_customer->customer_order):0; $new_customer = \App\Models\Orders::select(\DB::raw('count(customer_id) as customer_order'))->where('resto_id',$resto_id)->where('status','Has_Delivered') ->whereBetween('created_at',[$start_date,$end_date])->groupBy('customer_id')->having(\DB::raw('count(customer_id)'),'=',1)->get()->toArray(); $new_customer = array_sum(array_column($new_customer, 'customer_order')); $old_orders = \App\Models\Orders::select(\DB::raw('count(id) as customer_order'))->where('resto_id',$resto_id)->where('status','Has_Delivered') ->whereBetween('created_at',[$start_date,$end_date])->groupBy('customer_id')->having(\DB::raw('count(id)'),'>',1)->get()->toArray(); $old_orders = array_sum(array_column($old_orders, 'customer_order')); $new_order = \App\Models\Orders::select(\DB::raw('count(id) as customer_order'))->where('resto_id',$resto_id)->where('status','Has_Delivered') ->whereBetween('created_at',[$start_date,$end_date])->groupBy('customer_id')->having(\DB::raw('count(id)'),'=',1)->get()->toArray(); //dd($new_order); $new_order = array_sum(array_column($new_order, 'customer_order')); // $order_status_customers = \App\Models\Orders::select(\DB::raw('count(customer_id) as customer_order')) // ->whereBetween('created_at',[$start_date,$end_date]) // ->where('customer_order' ,'>',1) // ->where('resto_id',$resto_id)->where('status','Has_Delivered')->groupBy('customer_id')->get()->take(2); $average_new_order = \App\Models\Orders::select(\DB::raw('sum(sum(total_price)) OVER() as total_price'))->where('resto_id',$resto_id)->where('status','Has_Delivered') ->whereBetween('created_at',[$start_date,$end_date])->groupBy('customer_id')->having(\DB::raw('count(id)'),'=',1)->first(); // dd($average_new_order); $average_new_order = isset($average_new_order)?$average_new_order->total_price:0; $average_old_order = \App\Models\Orders::select(\DB::raw('sum(sum(total_price)) OVER() as total_price'))->where('resto_id',$resto_id)->where('status','Has_Delivered') ->whereBetween('created_at',[$start_date,$end_date])->groupBy('customer_id')->having(\DB::raw('count(id)'),'>',1)->first(); $average_old_order = isset($average_old_order)?$average_old_order->total_price:0; $campaign_data = \App\Models\Orders::select(\DB::raw('count(campaign_type) as total_campaign'),'campaign_type')->where('resto_id',$resto_id)->where('status','Has_Delivered') ->whereBetween('created_at',[$start_date,$end_date])->groupBy('campaign_type')->having('total_campaign','>',0)->get(); $outlet_data = \App\Models\Orders::with('outlet')->select(\DB::raw('count(outlet_id) as total_outlet_orders'),'outlet_id')->where('resto_id',$resto_id)->where('status','Has_Delivered') ->whereBetween('created_at',[$start_date,$end_date])->groupBy('outlet_id')->having('total_outlet_orders','>',0)->get(); $outlet_data_array = []; if($outlet_data){ foreach($outlet_data as $d){ $outlet_data_array[$d->outlet_id] = array('outlet_name'=>$d->outlet->name,'orders'=>$d->total_outlet_orders); } } $outlets = Outlets::where('resto_id',$resto_id)->whereNull('deleted_at')->get(); $outlets_array = []; if($outlets){ foreach($outlets as $outlet){ if(isset($outlet_data_array[$outlet->id])) $outlets_array[] = array('name'=>$outlet->name,'orders'=>$outlet_data_array[$outlet->id]['orders']); else $outlets_array[] = array('name'=>$outlet->name,'orders'=>0); } } // dd($average_old_order,$average_new_order); $total_customers = $old_customer + $new_customer; $total_orders = $old_orders + $new_order; $dasboard_data = array( 'total_orders'=>number_format($orders), 'total_sale'=>number_format($total_price), 'order_rating'=>'N/A', 'average_basket_value'=>$orders > 0 && $total_price > 0?number_format( round($total_price / $orders,2)):"N/A", 'customers'=>array( 'new_customer'=>array('value'=>$new_customer,'percentage'=>(round($new_customer / ($total_customers?$total_customers:1),2)*100).'%'), 'old_customer'=>array('value'=>$old_customer,'percentage'=>(round($old_customer / ($total_customers?$total_customers:1),2)*100).'%'), ), 'orders'=>array( 'new_orders'=>array('value'=>$new_order,'percentage'=>number_format(round($new_order / ($total_orders > 0?$total_orders:1),2)*100).'%'), 'old_orders'=>array('value'=>$old_orders,'percentage'=>number_format(round($old_orders / ($total_orders > 0?$total_orders:1),2)*100).'%'), ), 'average_basket'=>array( 'new'=>$new_order > 0?number_format(round($average_new_order/$new_order,2)):0, 'returning'=>$old_orders > 0?number_format(round($average_old_order/$old_orders,2)):0, 'total_averge_basket'=>round(($new_order > 0?($average_new_order/$new_order):0) + ($old_orders > 0?$average_old_order/$old_orders:0),2), ), 'total_basket_sale'=>array( 'new'=>$new_order > 0?number_format(round($average_new_order,2)):0, 'returning'=>$old_orders > 0?number_format(round($average_old_order,2)):0, 'total_sale'=> round(($new_order > 0?$average_new_order:0)+($old_orders > 0?$average_old_order:0),2) ), 'order_by_source'=>$campaign_data, 'order_by_outlet'=>$outlets_array ); return response()->json($dasboard_data,200); } public function reset_phone_customer(Request $request){ $user = User::where('email',$request->mobile_number)->first(); if(isset($user)){ $existing_email = $user->email; $existing_email = $existing_email.'-reset-at-'.date('y-m-d H:i:s'); $user->email = $existing_email; $user->save(); echo json_encode(array('type'=>'success','message'=>$request->mobile_number. ' is reset.')); }else{ echo json_encode(array('type'=>'error','message'=>$request->mobile_number. ' not found in db, use correct number with country code')); } } public function reset_update_password(Request $request){ $user_id = $request->user_id; $user = User::find($user_id); $username = $user->username; $password = $request->password; $user->password = Hash::make($password); $user->is_reset_password_sent = "Changed"; $result = $user->save(); if($result){ Auth::loginUsingId($user_id); return response()->json(array('type'=>'success','message'=>'Password reset successfully.')); } } public function reset_password(Request $request){ $user_id = $request->get('u'); $user = User::where('id',$user_id)->where('is_reset_password_sent','Yes')->first();; return view('reset-password',['user'=>$user]); } public function send_reset_link(Request $request){ $email = $request->email; $user_id = ""; $user = User::where('username',$email)->first(); if(isset($user)) $user_id = $user->id; if(!isset($user)){ $user = RestoUsers::whereNull('deleted_at')->where('email',$email)->first(); $user_id = isset($user->user_id)?$user->user_id:""; } if(!isset($user) && empty($user_id)) return response()->json(['type'=>'error','message'=>'No user found against this '.$request->email.'']); $u = User::where('id',$user_id)->update(['is_reset_password_sent'=>'Yes']); $param = array( 'email'=>$request->email, 'name' => $user->first_name, 'link'=> env('APP_URL').'reset/my/password?q='.md5(time()).'&u='.$user->user_id.'&action=reset' ); SendEmail::SendRestPasswordLink($param); return response()->json(['type'=>'success','message'=>'Reset link sent to '.$request->email.'']); } public function send_mail(){ $logo = 'https://meemappaws.imgix.net/meemcdn/31-titanium-store/titanium-store-logo-1669151471?fm=webp&h=500&w=500&trim=color&q=100&fit=center&crop=center'; $imageData = base64_encode(file_get_contents($logo)); $logo = 'data:image/png;base64,'.$imageData; $param = array( 'email'=>$_GET['email'], 'shop_name' => 'Titanium Store', 'order_message' => 'You have New order placed OrderID: 217 , kindly login to https://admin.meemorder.io to serve customer.', 'logo' => $logo ); SendEmail::sendOrderNotification($param); exit; $param = array( 'email'=>$_GET['email'], 'name' => 'Mujtaba Ahmad', 'shop_name' => 'NB Flowers', 'role' => 'Manager', 'access_level' => 'selected-outlets', 'selected_outlets' => 'Outlet1, Outlet2', //'link' => 'https://dashboard.chatfood.io/invite/36eaa3c8403efe29d775db4423a62bb0?utm_medium=email&utm_source=mailgun&utm_campaign=user_invitation', 'link' => '#' ); SendEmail::SendInvitationLink($param); } public function test_redis(){ Redis::set("user:mujtaba","It is testing code"); dd(Redis::get('user:mujtaba')); } public function create_link(Request $request){ $campaign_name = $request->campaign_name; $campaign_date = $request->campaign_date; $campaign_type = $request->campaign_type; $site_url = $request->site_url; $link = '?a='.$campaign_type.'&c='.Str::slug($campaign_name).'&cd='.$campaign_date; return $site_url.($link); } public function make_slug(){ $resto = Restaurants::all(); foreach($resto as $r){ $rr = Restaurants::find($r->id); $rr->resto_unique_name = Str::slug($r->name); $rr->save(); } } /** * Show the application dashboard. * * @return \Illuminate\Contracts\Support\Renderable */ public function index() { return view('auth.login'); } public function dashboard(){ if(Auth::user()->role=="administrator") return view('dashboards.admin_dashboard'); return view('dashboards.resto_dashboard'); } public function getLogout() { Session::flush(); Auth::logout(); return redirect('/'); } public function change_password(){ return view('password'); } public function update_password(Request $request){ $old_password = $request->old_password; $new_password = $request->password; $confirm_password = $request->confirm_password; $user = Auth::user(); if ($user && Hash::check($old_password, $user->password)) { if($new_password==$confirm_password){ $u = User::find($user->id); $u->password = Hash::make($new_password); $u->save(); echo json_encode(array('type'=>'success','message'=>'Password changed successfully.')); }else{ echo json_encode(array('type'=>'error','message'=>'new password and confirm password are not matched.')); exit; } }else{ echo json_encode(array('type'=>'error','message'=>'Old password is incorrect, enter correct password.')); exit; } } public function download_image(Request $request){ $data = $request->data; $resto = $request->resto; $data = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $data)); file_put_contents(public_path('/uploads/qrcode/qrcode.png'), $data); $this->image_recreate(public_path('/uploads/qrcode/qrcode.png'),public_path('/uploads/qrcode/'.$resto.'-qrcode.png')); echo env('APP_PUBLIC_URL').'uploads/qrcode/'.$resto.'-qrcode.png'; } public function image_recreate($sourceFile,$destinationFile){ $orig_filename = $sourceFile; $new_filename = $orig_filename; list($orig_w, $orig_h) = getimagesize($orig_filename); $orig_img = imagecreatefromstring(file_get_contents($orig_filename)); $output_w = 2200; $output_h = 2200; // determine scale based on the longest edge if ($orig_h > $orig_w) { $scale = $output_h/$orig_h; } else { $scale = $output_w/$orig_w; } $scale = $scale-0.1; // calc new image dimensions $new_w = ($orig_w * $scale); $new_h = ($orig_h * $scale); // determine offset coords so that new image is centered $offest_x = (($output_w - $new_w) / 2); $offest_y = (($output_h - $new_h) / 2); // create new image and fill with background colour $new_img = imagecreatetruecolor($output_w, $output_h); $bgcolor = imagecolorallocate($new_img, 255, 255, 255); // red imagefill($new_img, 0, 0, $bgcolor); // fill background colour // copy and resize original image into center of new image imagecopyresampled($new_img, $orig_img, $offest_x, $offest_y, 0, 0, $new_w, $new_h, $orig_w, $orig_h); //save it imagejpeg($new_img, $destinationFile, 80); } public function resizeMainRecipeImages(){ $path = public_path('uploads/main_image'); ini_set('max_execution_time', '300'); $files = File::allfiles($path); foreach($files as $file){ $pth = ($file->getRealPath()); $file_name = $file->getFileName(); echo "Main Image: ".$file_name."
"; $destinationPath = public_path('/uploads/main_image/'); if($file->getExtension()!="jfif") { $img = Image::make($destinationPath . '/' . $file_name)->resize(85, null, function ($constraint) { $constraint->aspectRatio(); }); $img->save($destinationPath . '/thumbnails/' . $file_name); } } } public function resizeLogo(){ $path = public_path('uploads/logo'); ini_set('max_execution_time', '300'); $files = File::allfiles($path); foreach($files as $file){ $pth = ($file->getRealPath()); $file_name = $file->getFileName(); echo "Main Image: ".$file_name."
"; $destinationPath = public_path('/uploads/logo/'); if($file->getExtension()!="jfif") { $img = Image::make($destinationPath . '/' . $file_name)->resize(50, null, function ($constraint) { $constraint->aspectRatio(); }); $img->save($destinationPath . '/thumbnails/' . $file_name); } } } public function resizeGalleryRecipeImages(){ $path = public_path('uploads/resto-gallery'); $files = File::allfiles($path); foreach($files as $file){ $pth = ($file->getRealPath()); $file_name = $file->getFileName(); echo "Gallery: ".$file_name."
"; $destinationPath = public_path('/uploads/resto-gallery/'); if($file->getExtension()!="jfif"){ $img = Image::make($destinationPath . '/' . $file_name)->resize(800, null, function ($constraint) { $constraint->aspectRatio(); }); $img->save($destinationPath . '/thumbnails/' . $file_name); } } } public function resizeGalleryRecipeImagesToGallery(){ $path = public_path('uploads/resto-gallery'); $files = File::allfiles($path); foreach($files as $file){ $pth = ($file->getRealPath()); $file_name = $file->getFileName(); echo "Gallery: ".$file_name."
"; $destinationPath = public_path('/uploads/resto-gallery/'); if($file->getExtension()!="jfif"){ $img = Image::make($destinationPath . '/' . $file_name)->resize(800, null, function ($constraint) { $constraint->aspectRatio(); }); $img->save($destinationPath . '/gallery-resized/' . $file_name); } } } public function load_json(){ $jsonString = file_get_contents("https://api.chatfood.io/api/v1/businesses/ceeba7a3-5dd4-48a7-9a07-96111efab2e4/areas"); $data = json_decode($jsonString, true); // dd($data); foreach($data as $city){ foreach($city as $cc){ // dump($cc); $c = new DMCities(); $c->city_name = $cc['name']; $c->city_unique_id = $cc['id']; $c->save(); } /* */ } } }