validateRequest($request); if ($this->hasNoNominee()) return response()->json([ 'status' => 'failed', 'message' => 'There is no nominees' ]); if ($this->isElectionStarted()) return response()->json([ 'status' => 'failed', 'message' => 'Election has already started' ]); $election = Election::find(Util::getCurrentElection()) ->update([ 'status'=>2, 'start'=>date('Y-m-d H:i:s'), 'name'=>$request->name ]); $user = $request->user(); activity() ->withProperties([ 'election_id' => Util::getCurrentElection(), 'election_name' => (string) $request->input('name'), 'started_by_admin_id' => $user ? (int) $user->id : null, 'started_by_admin_email' => $user ? $user->email : null, 'ip' => $request->ip(), 'user_agent' => $request->userAgent(), ]) ->log('election start'); return response()->json([ 'status' => 'success', 'message' => 'Election has started.', 'election' => Election::find(Util::getCurrentElection()) ]); } private function hasNoNominee() { return \App\Nominee::where('election_id', Util::getCurrentElection())->count() < 1; } private function isElectionStarted() { return Util::getElectionStatus() == 2; } private function validateRequest($request) { $id = Auth::id(); $this->validate($request, [ 'password' => "required|password:users,password,$id" ]); } }