/** * Make sure getCampaignNumbers method works as expected. */ public function test_get_campaign_numbers() { $user = factory(\App\User::class)->create(); $year = 2016; $expected = ['success' => true, 'numbers' => \App\Campaign::select('number')->distinct()->where('year', $year)->get()]; $this->actingAs($user)->post('/statistics/campaign/get-numbers', ['year' => $year])->seeJson($expected); }
/** * Return all campaign numbers for given year. * * @param Requests\Statistics\GetCampaignNumbersRequest $request * @return mixed */ public function getCampaignNumbers(GetCampaignNumbersRequest $request) { $response = new AjaxResponse(); $response->setSuccessMessage(trans('common.success')); $response->addExtraFields(['numbers' => Campaign::select('number')->distinct()->where('year', $request->get('year'))->get()]); return response($response->get())->header('Content-Type', 'application/json'); }
/** * Return number of bills with passed payment term for given campaign. * * @param int $campaignNumber * @param int $campaignYear * @return int */ public static function numberOfBillsWithPassedPaymentTerm($campaignNumber, $campaignYear) { $result = Campaign::select(DB::raw('COUNT(bills.id) as number_of_bills_with_passed_payment_term'))->leftJoin('bills', 'bills.campaign_id', '=', 'campaigns.id')->leftJoin('users', 'users.id', '=', 'bills.user_id')->where('campaigns.number', $campaignNumber)->where('campaigns.year', $campaignYear)->where('bills.paid', 0)->where('bills.payment_term', '<', date('Y-m-d'))->where('users.id', Auth::user()->id)->get(); if (isset($result[0]->number_of_bills_with_passed_payment_term)) { return $result[0]->number_of_bills_with_passed_payment_term; } return 0; }