/
home
/
obinna
/
html
/
cravings
/
app
/
Jobs
/
Upload File
HOME
<?php namespace App\Jobs; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\DB; class AvgPlaceRating implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; protected $slug; protected $id; /** * Create a new job instance. * * @return void */ public function __construct($slug) { $this->slug = $slug; } /** * Execute the job. * * @return void */ public function handle() { $db = DB::getMongoDB(); $match = $id ? ['$match' => ['place_slug' => $this->slug, 'food_id' => $data['id']]] : ['$match' => ['place_name' => $data['placename']]]; $avgRate = $db->reviews->aggregate([ $match, ['$project' => ['_id' => 0, 'place_name' => 1, 'rate' => 1, 'place_name' => 1]], ['$group' => [ '_id' => '$place_name', 'avgRate' => ['$avg' => '$rate'] ]] ])->toArray(); $update = ['$set' => ['avg_rate' => $avgRate[0]['avgRate']]]; if($id) $db->fooding->updateOne(['place_slug' => $this->slug, '_id' => new \MongoDB\BSON\ObjectId($data['id'])], $update); else $db->places->updateOne(['name' => $data['placename']], $update); } }