public function getProvinceStatus(UserTokenHandler $tokens, $token, $provinceId) { $user = $tokens->getUserFromToken($token, true); Province::findOrFail($provinceId); $trains = Train::where('destination_province_id', $provinceId)->where('start_province_id', $user['province_id'])->get(); $planes = Plane::where('destination_province_id', $provinceId)->where('start_province_id', $user['province_id'])->get(); $buses = Plane::where('destination_province_id', $provinceId)->where('start_province_id', $user['province_id'])->get(); $numberOfVisitors = Visit::selectRaw('count(distinct user_id) as count')->where('user_id', $user['id'])->where('province_id', $provinceId)->first(); $ownNumberOfVisitors = OwnVisit::selectRaw('count(distinct own_visits.user_id) as count')->join('pins', 'pins.id', '=', 'own_visits.pin_id')->where('pins.province_id', $provinceId)->where('own_visits.user_id', $user['id'])->first(); $ownNumberOfVisitors = $ownNumberOfVisitors ? $ownNumberOfVisitors->count : 0; $numberOfVisitors = $numberOfVisitors ? $numberOfVisitors->count : 0; $numberOfVisitors = $ownNumberOfVisitors + $numberOfVisitors; $numberOfCheckinsInPin = Visit::selectRaw('count(distinct visit_pin.pin_id) as count')->join('visit_pin', 'visit_pin.visit_id', '=', 'visits.id')->join('pins', 'pins.id', '=', 'visit_pin.pin_id')->where('pins.province_id', $provinceId)->first(); $ownCheckinsInPin = OwnVisit::selectRaw('count(distinct own_visits.pin_id) as count')->join('pins', 'pins.id', '=', 'own_visits.pin_id')->where('pins.province_id', $provinceId)->first(); $ownCheckinsInPin = $ownCheckinsInPin ? $ownCheckinsInPin->count : 0; $numberOfCheckinsInPin = $numberOfCheckinsInPin ? $numberOfCheckinsInPin->count : 0; $numberOfCheckinsInPin = $ownCheckinsInPin + $numberOfCheckinsInPin; $currentUserCheckIns = Visit::selectRaw('count(distinct visit_pin.pin_id) as count')->join('visit_pin', 'visit_pin.visit_id', '=', 'visits.id')->where('visits.province_id', $provinceId)->where('visits.user_id', $user->id)->first(); $ownCurrent = OwnVisit::selectRaw('count(distinct own_visits.pin_id) as count')->join('pins', 'pins.id', '=', 'own_visits.pin_id')->where('pins.province_id', '=', $provinceId)->where('own_visits.user_id', $user['id'])->first(); $ownCurrent = $ownCurrent ? $ownCurrent->count : 0; $currentUserCheckIns = $currentUserCheckIns ? $currentUserCheckIns->count : 0; $currentUserCheckIns = $currentUserCheckIns + $ownCurrent; $numberOfPins = Pin::where('province_id', $provinceId)->count(); return ['trains' => $trains, 'planes' => $planes, 'buses' => $buses, 'number_of_visitors' => (int) $numberOfVisitors, 'number_of_checkins_in_pin' => (int) $numberOfCheckinsInPin, 'current_user_checkins' => (int) $currentUserCheckIns, 'number_of_pins' => (int) $numberOfPins]; }
protected function createDailyChallenge() { $province = \Tajrish\Models\Province::where('name', 'تهران')->firstOrFail(); $pin = \Tajrish\Models\Pin::where('province_id', $province->id)->firstOrFail(); \Tajrish\Models\Challenge::create(['title' => 'بازدید از عمارت مسعودیه در جمعه', 'description' => 'با مشاهده عمارت مسعودیه در روز جمعه جایزه بگیرید.', 'pin_id' => $pin->id, 'starts_at' => \Carbon\Carbon::now(), 'ends_at' => \Carbon\Carbon::now()->addDay()]); }