initialize project
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Admin;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\User;
|
||||
|
||||
class AddController extends Controller
|
||||
{
|
||||
public function __invoke (Request $request)
|
||||
{
|
||||
$this->validateRequest($request);
|
||||
$this->insertAdmin($request);
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Admin added successfully'
|
||||
]);
|
||||
}
|
||||
|
||||
private function insertAdmin($request)
|
||||
{
|
||||
$admin = $request->all();
|
||||
$admin['password'] = bcrypt($request->password);
|
||||
User::create($admin);
|
||||
}
|
||||
|
||||
private function validateRequest($request)
|
||||
{
|
||||
$this->validate($request, [
|
||||
'name' => 'required|unique:users',
|
||||
'email' => 'required|email|unique:users',
|
||||
'password' => 'required',
|
||||
'confirm_password' => 'same:password'
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Admin;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\User;
|
||||
|
||||
class DeleteController extends Controller
|
||||
{
|
||||
public function __invoke($id)
|
||||
{
|
||||
if ($id == 1)
|
||||
return response()->json([
|
||||
'status' => 'failed',
|
||||
'message' => 'You can\'t delete the main admin.'
|
||||
]);
|
||||
User::destroy($id);
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Admin deleted successfully.'
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Admin;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\User;
|
||||
|
||||
class GetController extends Controller
|
||||
{
|
||||
public function __invoke()
|
||||
{
|
||||
return User::all();
|
||||
}
|
||||
|
||||
public function show(Request $request, $id)
|
||||
{
|
||||
$id = $request->user()->id;
|
||||
return User::find($id);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Admin;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
|
||||
class InformationController extends Controller
|
||||
{
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
return response()->json([
|
||||
'election' => \App\Election::find(Util::getCurrentElection()),
|
||||
'user' => $request->user(),
|
||||
'partylist' => \App\Partylist::where('election_id', Util::getCurrentElection())->get(),
|
||||
'position' => \App\Position::where('election_id', Util::getCurrentElection())->get()
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Admin;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
use App\User;
|
||||
|
||||
class LoginController extends Controller
|
||||
{
|
||||
/**
|
||||
* Admin Login
|
||||
* @param {Request} $request
|
||||
* @return {Response} result
|
||||
*/
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
$this->validateRequest($request);
|
||||
|
||||
if ($this->checkLogin($request)) {
|
||||
$user = Auth::user();
|
||||
$result['status'] = 'success';
|
||||
$result['message'] = 'Login Successfully';
|
||||
$result['user'] = $user;
|
||||
$result['election_status'] = Util::getElectionStatus();
|
||||
$result['token'] = $user->createToken('My app', ['admin'])->accessToken;
|
||||
} else {
|
||||
$result['status'] = 'failed';
|
||||
$result['message'] = 'Wrong email or password';
|
||||
}
|
||||
|
||||
return response()->json($result);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate Request
|
||||
* @param {Request} $request
|
||||
* @return {Boolean} isValid
|
||||
*/
|
||||
private function validateRequest($request)
|
||||
{
|
||||
$this->validate($request, [
|
||||
'email' => 'required|email',
|
||||
'password'=> 'required'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check Credential
|
||||
* @param {Request} $request
|
||||
* @return {Boolean} isLogin
|
||||
*/
|
||||
private function checkLogin($request)
|
||||
{
|
||||
return Auth::attempt([
|
||||
'email' => $request->email,
|
||||
'password' => $request->password
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Admin;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class LogoutController extends Controller
|
||||
{
|
||||
public function __invoke()
|
||||
{
|
||||
Auth::guard('web')->logout();
|
||||
Auth::guard('voter')->logout();
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Logout successfully',
|
||||
'user' => Auth::user()
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Admin;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\User;
|
||||
|
||||
class UpdateController extends Controller
|
||||
{
|
||||
public function __invoke(Request $request, $id)
|
||||
{
|
||||
$id = $request->user()->id;
|
||||
$this->validateRequest($request, $id);
|
||||
$this->updateAdmin($request, $id);
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Admin updated successfully'
|
||||
]);
|
||||
}
|
||||
|
||||
public function updatePassword(Request $request, $id)
|
||||
{
|
||||
$id = $request->user()->id;
|
||||
$this->validatePassword($request, $id);
|
||||
$password = Hash::make($request->password);
|
||||
User::find($id)->update(['password'=>$password]);
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Password updated successfully'
|
||||
]);
|
||||
}
|
||||
|
||||
private function validatePassword($request, $id)
|
||||
{
|
||||
$this->validate($request, [
|
||||
'old_password' => "required|password:users,password,$id",
|
||||
'password' => 'required',
|
||||
'confirm_password' => 'required|same:password'
|
||||
]);
|
||||
}
|
||||
|
||||
private function updateAdmin($request, $id)
|
||||
{
|
||||
User::find($id)->update($request->all());
|
||||
}
|
||||
|
||||
private function validateRequest($request, $id)
|
||||
{
|
||||
$this->validate($request, [
|
||||
'name' => ['required', Rule::unique('users')->ignore($id)],
|
||||
'email' => ['required', Rule::unique('users')->ignore($id), 'email']
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Election;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class GetController extends Controller
|
||||
{
|
||||
public function __invoke(){
|
||||
return \App\Election::where('status', 3)->orderBy('id', 'desc')->get();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Election;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class InformationController extends Controller
|
||||
{
|
||||
public function __invoke()
|
||||
{
|
||||
$id = Util::getCurrentElection();
|
||||
$information['election'] = \App\Election::find($id);
|
||||
$information['position'] = \App\Position::where('election_id', $id)->get();
|
||||
$information['partylist'] = \App\Partylist::where('election_id', $id)->get();
|
||||
$information['nominee'] = \App\Nominee::where('election_id', $id)->get();
|
||||
$information['result'] = \App\Result::where('voter_id', Auth::id())->get();
|
||||
$information['voter'] = Auth::user();
|
||||
return response()->json($information);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Election;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
use DB;
|
||||
|
||||
class ResultController extends Controller
|
||||
{
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
|
||||
$result = $this->getResult(Util::getCurrentElection());
|
||||
return response()->json(
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
public function finalResult($id)
|
||||
{
|
||||
$result = $this->getResult($id);
|
||||
$position = \App\Position::where('election_id', $id)->get();
|
||||
$nominee = \App\Nominee::where('election_id', $id)->get();
|
||||
$partylist = \App\Partylist::where('election_id', $id)->get();
|
||||
return response()->json([
|
||||
'result'=>$result,
|
||||
'position'=>$position,
|
||||
'nominee'=>$nominee
|
||||
]);
|
||||
}
|
||||
|
||||
private function getResult($id)
|
||||
{
|
||||
return \App\Result::select(DB::raw('position_id,nominee_id,count(*) as votes'))
|
||||
->groupBy('position_id', 'nominee_id')
|
||||
->where('election_id', $id)
|
||||
->orderBy('votes', 'DESC')
|
||||
->get();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Election;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
use App\Election;
|
||||
|
||||
class StartController extends Controller
|
||||
{
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
$this->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
|
||||
]);
|
||||
|
||||
|
||||
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"
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Election;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
use App\Election;
|
||||
|
||||
class StopController extends Controller
|
||||
{
|
||||
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
if (!$this->isElectionStarted())
|
||||
return response()->json([
|
||||
'status' => 'failed',
|
||||
'message' => 'Election hasn\'t started yet.'
|
||||
]);
|
||||
$this->validateRequest($request);
|
||||
|
||||
$this->stopElection($request);
|
||||
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Election has finished.',
|
||||
'election' => Election::find(Util::getCurrentElection())
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
private function stopElection($request)
|
||||
{
|
||||
$election = Election::find(Util::getCurrentElection())
|
||||
->update([
|
||||
'status'=>3,
|
||||
'name'=>$request->name,
|
||||
'end'=>date('Y-m-d H:i:s')
|
||||
]);
|
||||
Election::create();
|
||||
}
|
||||
|
||||
private function validateRequest($request)
|
||||
{
|
||||
$id = $request->user()->id;
|
||||
$this->validate($request, [
|
||||
'password' => "required|password:users,password,$id"
|
||||
]);
|
||||
}
|
||||
|
||||
private function isElectionStarted()
|
||||
{
|
||||
return Util::getElectionStatus() == 2;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Election;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Validation\Rule;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\Http\Controllers\Util;
|
||||
use App\Position;
|
||||
use App\Nominee;
|
||||
use App\Result;
|
||||
|
||||
class VoteController extends Controller
|
||||
{
|
||||
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
|
||||
if ($this->validateRequest($request)['status'] == 'failed') {
|
||||
return response()->json($this->validateRequest($request));
|
||||
}
|
||||
|
||||
$this->insertVote($request);
|
||||
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Voted successfully',
|
||||
'result' => Result::where('voter_id', Auth::id())->get()
|
||||
]);
|
||||
}
|
||||
|
||||
private function insertVote($request)
|
||||
{
|
||||
foreach ($request->vote as $key => $value) {
|
||||
Result::updateOrCreate([
|
||||
'voter_id' => Auth::id(),
|
||||
'election_id' => Util::getCurrentElection(),
|
||||
'position_id' => $value['position_id'],
|
||||
], ['nominee_id' => $value['nominee_id']]);
|
||||
}
|
||||
}
|
||||
|
||||
private function validNominee($id, $position_id)
|
||||
{
|
||||
return Nominee::where([
|
||||
['id', '=', $id],
|
||||
['position_id', '=', $position_id]
|
||||
])->count();
|
||||
}
|
||||
|
||||
private function isPositionExist($id)
|
||||
{
|
||||
return Position::where('id', $id)->count();
|
||||
}
|
||||
|
||||
private function voteAllPosition($request)
|
||||
{
|
||||
$total_position = Position::where('election_id', Util::getCurrentElection())->count();
|
||||
$total_vote = count($request->vote);
|
||||
return $total_vote >= $total_position;
|
||||
}
|
||||
|
||||
private function validateRequest($request)
|
||||
{
|
||||
$result['status'] = 'failed';
|
||||
$vote = $request->vote;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Check if the user vote on all position
|
||||
*/
|
||||
if (!$this->voteAllPosition($request)) {
|
||||
$result['message'] = 'You must vote on all position.';
|
||||
return $result;
|
||||
}
|
||||
|
||||
foreach ($vote as $key => $value) {
|
||||
/**
|
||||
* Check if position_id and nominee_id has a value
|
||||
*/
|
||||
if (empty($value['position_id']) || empty($value['nominee_id'])) {
|
||||
$result['message'] = 'You must vote on all position.';
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if the Position you vote exists
|
||||
*/
|
||||
if (!$this->isPositionExist($value['position_id'])) {
|
||||
$result['message'] = 'Invalid Position.';
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the Nominee you vote on certain position exists
|
||||
*/
|
||||
elseif (!$this->validNominee($value['nominee_id'], $value['position_id'])) {
|
||||
$result['message'] = 'Invalid Nominee for '.Position::find($value['position_id'])->name.' position.';
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
return ['status'=>'success'];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Nominee;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Validation\Rule;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
use App\Nominee;
|
||||
|
||||
class AddController extends Controller
|
||||
{
|
||||
|
||||
public function __invoke (Request $request)
|
||||
{
|
||||
$this->validateRequest($request);
|
||||
$this->insertNominee($request);
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message'=> 'Nominee added successfully'
|
||||
]);
|
||||
}
|
||||
|
||||
public function validateRequest ($request)
|
||||
{
|
||||
$this->validate($request, [
|
||||
'name' => [
|
||||
'required',
|
||||
Rule::unique('nominee')->where(function($query){
|
||||
$query->where('election_id', Util::getCurrentElection());
|
||||
})
|
||||
],
|
||||
'student_id' => [
|
||||
'required',
|
||||
Rule::unique('nominee')->where(function($query){
|
||||
$query->where('election_id', Util::getCurrentElection());
|
||||
})
|
||||
],
|
||||
'course' => 'required',
|
||||
'position_id' => 'required|exists:position,id',
|
||||
'partylist_id' => 'nullable|exists:partylist,id',
|
||||
'image' => 'nullable|image'
|
||||
]);
|
||||
}
|
||||
|
||||
public function insertNominee ($request)
|
||||
{
|
||||
$nominee = $request->all();
|
||||
$default_image = config('app.cloudinary_enabled') ? config('app.cloudinary_image_default') : config('app.nominee_image');
|
||||
$nominee['image'] = Util::getImagePath($request, config('app.nominee_directory'), $default_image);
|
||||
$nominee['election_id'] = Util::getCurrentElection();
|
||||
Nominee::create($nominee);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Nominee;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
use App\Nominee;
|
||||
|
||||
class DeleteController extends Controller
|
||||
{
|
||||
public function __invoke ($id)
|
||||
{
|
||||
$nominee = Nominee::find($id);
|
||||
Util::deleteImage($nominee->image);
|
||||
$nominee->delete();
|
||||
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message'=> 'Nominee deleted successfully'
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Nominee;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
|
||||
class GetController extends Controller
|
||||
{
|
||||
public function __invoke()
|
||||
{
|
||||
$nominee = \App\Nominee::where('election_id', Util::getCurrentElection())
|
||||
->orderBy('position_id')
|
||||
->get();
|
||||
return $nominee;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Nominee;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Validation\Rule;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
use App\Nominee;
|
||||
|
||||
class UpdateController extends Controller
|
||||
{
|
||||
public function __invoke (Request $request, $id)
|
||||
{
|
||||
$this->validateRequest($request, $id);
|
||||
$this->updateNominee($request, $id);
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Nominee updated successfully'
|
||||
]);
|
||||
}
|
||||
|
||||
private function validateRequest($request, $id)
|
||||
{
|
||||
$this->validate($request, [
|
||||
'name' => [
|
||||
'required',
|
||||
Rule::unique('nominee')->ignore($id)->where(function($query){
|
||||
$query->where('election_id', Util::getCurrentElection());
|
||||
})
|
||||
],
|
||||
'student_id' => [
|
||||
'required',
|
||||
Rule::unique('nominee')->ignore($id)->where(function($query){
|
||||
$query->where('election_id', Util::getCurrentElection());
|
||||
})
|
||||
],
|
||||
'course' => 'required',
|
||||
'position_id' => 'required|exists:nominee,position_id',
|
||||
'partylist_id' => 'nullable|exists:nominee,partylist_id'
|
||||
]);
|
||||
}
|
||||
|
||||
private function updateNominee ($request, $id)
|
||||
{
|
||||
$nominee = Nominee::find($id);
|
||||
$default_image = $nominee->image;
|
||||
|
||||
$nominee->name = $request->name;
|
||||
$nominee->course = $request->course;
|
||||
$nominee->student_id = $request->student_id;
|
||||
$nominee->position_id = $request->position_id;
|
||||
$nominee->partylist_id = $request->partylist_id;
|
||||
$nominee->motto = $request->motto;
|
||||
$nominee->description = $request->description;
|
||||
$nominee->image = Util::getImagePath($request, config('app.nominee_directory'), $default_image);
|
||||
$nominee->save();
|
||||
|
||||
if (!empty($request->image))
|
||||
Util::deleteImage($default_image);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Partylist;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Validation\Rule;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
use App\Partylist;
|
||||
|
||||
class AddController extends Controller
|
||||
{
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
$this->validateRequest($request);
|
||||
$this->insertPartylist($request);
|
||||
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message'=> 'Partylist added successfully'
|
||||
]);
|
||||
}
|
||||
|
||||
private function validateRequest($request)
|
||||
{
|
||||
$this->validate($request, [
|
||||
'name' => [
|
||||
'required',
|
||||
Rule::unique('partylist')->where(function($query){
|
||||
$query->where('election_id', Util::getCurrentElection());
|
||||
})
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
private function insertPartylist($request)
|
||||
{
|
||||
$partylist = $request->all();
|
||||
$partylist['election_id'] = Util::getCurrentElection();
|
||||
Partylist::create($partylist);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Partylist;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Partylist;
|
||||
|
||||
class DeleteController extends Controller
|
||||
{
|
||||
public function __invoke($id)
|
||||
{
|
||||
Partylist::find($id)->delete();
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Partylist deleted successfully'
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Partylist;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
use App\Partylist;
|
||||
|
||||
class GetController extends Controller
|
||||
{
|
||||
public function __invoke()
|
||||
{
|
||||
$election_id = Util::getCurrentElection();
|
||||
return Partylist::where('election_id', $election_id)->get();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Partylist;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Validation\Rule;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
use App\Partylist;
|
||||
|
||||
class UpdateController extends Controller
|
||||
{
|
||||
public function __invoke(Request $request, $id)
|
||||
{
|
||||
$this->validateRequest($request, $id);
|
||||
$this->updatePartylist($request, $id);
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Partylist updated successfully'
|
||||
]);
|
||||
}
|
||||
|
||||
public function validateRequest($request, $id)
|
||||
{
|
||||
$this->validate($request, [
|
||||
'name' => [
|
||||
'required',
|
||||
Rule::unique('partylist')->ignore($id)->where(function($query){
|
||||
$query->where('election_id', Util::getCurrentElection());
|
||||
})
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
public function updatePartylist($request, $id)
|
||||
{
|
||||
$partylist = Partylist::find($id);
|
||||
$partylist->name = $request->name;
|
||||
$partylist->save();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Position;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Validation\Rule;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
use App\Election;
|
||||
use App\Position;
|
||||
|
||||
class AddPositionController extends Controller
|
||||
{
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
$this->validateRequest($request);
|
||||
$this->insertPosition($request);
|
||||
|
||||
$result = [
|
||||
'status' => 'success',
|
||||
'message'=> 'Position added successfully'
|
||||
];
|
||||
|
||||
return response()->json($result);
|
||||
}
|
||||
|
||||
private function validateRequest($request)
|
||||
{
|
||||
$this->validate($request, [
|
||||
'name' => [
|
||||
'required',
|
||||
Rule::unique('position')->where(function($query){
|
||||
$query->where('election_id', Util::getCurrentElection());
|
||||
})
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
private function insertPosition($request)
|
||||
{
|
||||
$position = $request->all();
|
||||
$position['election_id'] = Util::getCurrentElection();
|
||||
Position::create($position);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Position;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Position;
|
||||
|
||||
class DeletePositionController extends Controller
|
||||
{
|
||||
public function __invoke($id)
|
||||
{
|
||||
$position = Position::find($id);
|
||||
$position->delete();
|
||||
|
||||
|
||||
$result = [
|
||||
'status' => 'success',
|
||||
'message'=> 'Position deleted successfully'
|
||||
];
|
||||
|
||||
return response()->json($result);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Position;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
use App\Position;
|
||||
|
||||
class GetPositionController extends Controller
|
||||
{
|
||||
public function __invoke()
|
||||
{
|
||||
$election_id = Util::getCurrentElection();
|
||||
return Position::where('election_id', $election_id)->get();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Position;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Validation\Rule;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
use App\Position;
|
||||
|
||||
class UpdatePositionController extends Controller
|
||||
{
|
||||
public function __invoke(Request $request, $id)
|
||||
{
|
||||
$this->validateRequest($request, $id);
|
||||
$this->updatePosition($request, $id);
|
||||
|
||||
$result = [
|
||||
'status' => 'success',
|
||||
'message'=> 'Position updated successfully'
|
||||
];
|
||||
|
||||
return response()->json($result);
|
||||
}
|
||||
|
||||
private function updatePosition($request, $id)
|
||||
{
|
||||
$position = Position::find($id);
|
||||
$position->name = $request->name;
|
||||
$position->save();
|
||||
}
|
||||
|
||||
private function validateRequest($request, $id)
|
||||
{
|
||||
$this->validate($request, [
|
||||
'name' => [
|
||||
'required',
|
||||
Rule::unique('position')->ignore($id)->where(function($query){
|
||||
$query->where('election_id', Util::getCurrentElection());
|
||||
})
|
||||
]
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Voter;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Validation\Rule;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
use App\Voter;
|
||||
|
||||
class AddController extends Controller
|
||||
{
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
$this->validateRequest($request);
|
||||
$this->insertVoter($request);
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Voter added successfully'
|
||||
]);
|
||||
}
|
||||
|
||||
private function insertVoter($request)
|
||||
{
|
||||
$voter = $request->all();
|
||||
$voter['election_id'] = Util::getCurrentElection();
|
||||
Voter::create($voter);
|
||||
}
|
||||
|
||||
private function validateRequest($request)
|
||||
{
|
||||
$this->validate($request, [
|
||||
'name' => [
|
||||
'required',
|
||||
Rule::unique('voter')->where(function($query){
|
||||
$query->where('election_id', Util::getCurrentElection());
|
||||
})
|
||||
],
|
||||
'student_id' => [
|
||||
'required',
|
||||
Rule::unique('voter')->where(function($query){
|
||||
$query->where('election_id', Util::getCurrentElection());
|
||||
})
|
||||
],
|
||||
'course' => 'required'
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Voter;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Voter;
|
||||
|
||||
class DeleteController extends Controller
|
||||
{
|
||||
public function __invoke($id)
|
||||
{
|
||||
Voter::destroy($id);
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Voter deleted successgully.'
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Voter;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
use App\Voter;
|
||||
|
||||
class GetController extends Controller
|
||||
{
|
||||
public function __invoke()
|
||||
{
|
||||
return Voter::where('election_id', Util::getCurrentElection())->paginate(10);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Voter;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class LoginController extends Controller
|
||||
{
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
//return response()->json(Auth::guard('user'));
|
||||
if (Auth::guard('voter')->attempt(['student_id' => $request->student_id, 'password' => 'admin', 'election_id' => Util::getCurrentElection()])) {
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Login successfully.',
|
||||
'user' => Auth::guard('voter')->user(),
|
||||
'election_status' => Util::getElectionStatus(),
|
||||
'token' => Auth::guard('voter')->user()->createToken('My Token', ['vote'])->accessToken
|
||||
]);
|
||||
} else {
|
||||
return response()->json([
|
||||
'status' => 'failed',
|
||||
'message' => 'Invalid ID.'
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API\v1\Voter;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Validation\Rule;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Util;
|
||||
use App\Voter;
|
||||
|
||||
class UpdateController extends Controller
|
||||
{
|
||||
public function __invoke(Request $request, $id)
|
||||
{
|
||||
$this->validateRequest($request, $id);
|
||||
$this->updateVoter($request, $id);
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Voter updated successfully.'
|
||||
]);
|
||||
}
|
||||
|
||||
private function validateRequest($request, $id)
|
||||
{
|
||||
$this->validate($request, [
|
||||
'name' => [
|
||||
'required',
|
||||
Rule::unique('voter')->ignore($id)->where(function($query){
|
||||
$query->where('election_id', Util::getCurrentElection());
|
||||
})
|
||||
],
|
||||
'student_id' => [
|
||||
'required',
|
||||
Rule::unique('voter')->ignore($id)->where(function($query){
|
||||
$query->where('election_id', Util::getCurrentElection());
|
||||
})
|
||||
],
|
||||
'course' => 'required'
|
||||
]);
|
||||
}
|
||||
|
||||
private function updateVoter($request, $id)
|
||||
{
|
||||
$voter = $request->all();
|
||||
Voter::find($id)->update($voter);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user