diff --git a/app/Http/Controllers/API/v1/Admin/AddController.php b/app/Http/Controllers/API/v1/Admin/AddController.php index f8384f6..905c3ba 100644 --- a/app/Http/Controllers/API/v1/Admin/AddController.php +++ b/app/Http/Controllers/API/v1/Admin/AddController.php @@ -31,7 +31,8 @@ class AddController extends Controller 'name' => 'required|unique:users', 'email' => 'required|email|unique:users', 'password' => 'required', - 'confirm_password' => 'same:password' + 'confirm_password' => 'same:password', + 'role' => 'required' ]); } } diff --git a/app/Http/Controllers/API/v1/Election/VoteController.php b/app/Http/Controllers/API/v1/Election/VoteController.php index 227b352..f3be8e3 100644 --- a/app/Http/Controllers/API/v1/Election/VoteController.php +++ b/app/Http/Controllers/API/v1/Election/VoteController.php @@ -32,55 +32,80 @@ class VoteController extends Controller private function insertVote($request) { - foreach ($request->vote as $key => $value) { - Result::updateOrCreate([ + // dd($request->vote[0]['nominee_id']); + $votes = array_map(function($nominee_id) use($request){ + return[ 'voter_id' => Auth::id(), 'election_id' => Util::getCurrentElection(), - 'position_id' => $value['position_id'], - ], ['nominee_id' => $value['nominee_id']]); + 'position_id' => $request->vote[0]['position_id'], + 'nominee_id' => $nominee_id + ]; + + },$request->vote[0]['nominee_id']); + + foreach($votes as $vote){ + Result::updateOrCreate([ + 'voter_id' => $vote['voter_id'], + 'election_id' => $vote['election_id'], + 'position_id' => $vote['position_id'], + 'nominee_id' => $vote['nominee_id'], + ]); } + } private function validNominee($id, $position_id) { - return Nominee::where([ - ['id', '=', $id], - ['position_id', '=', $position_id] - ])->count(); + try{ + $nominee = Nominee::where('position_id', '=', $position_id)->whereIn('id',$id)->count(); + }catch(Exception $e){ + dd($id); + } + return $nominee; } private function isPositionExist($id) { - return Position::where('id', $id)->count(); + try{ + return Position::where('id', $id)->count(); + }catch(Exception $e){ + dd($id); + } } private function voteAllPosition($request) { $total_position = Position::where('election_id', Util::getCurrentElection())->count(); - $total_vote = count($request->vote); + $total_vote = !empty($request->vote) ? count($request->vote) : 0; + 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)) { + dd('test'); $result['message'] = 'You must vote on all position.'; return $result; } - foreach ($vote as $key => $value) { + foreach ($vote as $value) { /** * Check if position_id and nominee_id has a value */ + // dd($vote,$value); if (empty($value['position_id']) || empty($value['nominee_id'])) { + + dd($value,empty($value['position_id']),empty($value['nominee_id'])); $result['message'] = 'You must vote on all position.'; return $result; } @@ -90,6 +115,7 @@ class VoteController extends Controller * Check if the Position you vote exists */ if (!$this->isPositionExist($value['position_id'])) { + dd('test'); $result['message'] = 'Invalid Position.'; return $result; } @@ -97,8 +123,11 @@ class VoteController extends Controller /** * Check if the Nominee you vote on certain position exists */ - elseif (!$this->validNominee($value['nominee_id'], $value['position_id'])) { + // elseif (!$this->validNominee($value['nominee_id'], $value['position_id'])) { + elseif($this->validNominee($value['nominee_id'],$value['position_id']) <= 0){ + $result['message'] = 'Invalid Nominee for '.Position::find($value['position_id'])->name.' position.'; + return $result; } } diff --git a/app/Http/Controllers/API/v1/Voter/LoginController.php b/app/Http/Controllers/API/v1/Voter/LoginController.php index 5e66643..c42b948 100644 --- a/app/Http/Controllers/API/v1/Voter/LoginController.php +++ b/app/Http/Controllers/API/v1/Voter/LoginController.php @@ -149,7 +149,6 @@ class LoginController extends Controller $mobileno = '6' . $tele; $messages = sprintf(config('onewaysms.message'),$tac_token,$date); - var_dump($mobileno,$messages); $parameter = [ 'apiusername' => env("ONEWAY_SMS_USERNAME"), 'apipassword' => env("ONEWAY_SMS_PASSWORD"), diff --git a/app/User.php b/app/User.php index 14dd530..6d3984d 100644 --- a/app/User.php +++ b/app/User.php @@ -16,7 +16,7 @@ class User extends Authenticatable * @var array */ protected $fillable = [ - 'name', 'email', 'password', + 'name', 'email', 'password', 'role' ]; /** diff --git a/app/Voter.php b/app/Voter.php index a055a05..0ccd09e 100644 --- a/app/Voter.php +++ b/app/Voter.php @@ -10,5 +10,5 @@ class Voter extends Authenticatable use HasApiTokens; protected $table = 'voter'; - protected $fillable = ['name', 'no_kp', 'no_anggota','unit', 'election_id', 'alamat', 'telefon']; + protected $fillable = ['name', 'no_kp', 'no_anggota','unit', 'election_id', 'alamat', 'telefon', 'saham', 'yuran']; } diff --git a/config/onewaysms.php b/config/onewaysms.php index b8ad041..0b908a1 100644 --- a/config/onewaysms.php +++ b/config/onewaysms.php @@ -1,7 +1,7 @@ 'KOPERASI : TAC: %s - %s NOMBOR TAC', + 'message' => 'KoPKB : %s is your TAC to log in to your myKoPKB Member account. It will expire in 5 minutes.', 'minutes' => 5 ]; diff --git a/database/migrations/2024_03_23_135849_add_photo_column_to_nominee_table.php b/database/migrations/2024_03_23_135849_add_photo_column_to_nominee_table.php index 6ed0aca..846bb8e 100644 --- a/database/migrations/2024_03_23_135849_add_photo_column_to_nominee_table.php +++ b/database/migrations/2024_03_23_135849_add_photo_column_to_nominee_table.php @@ -3,6 +3,7 @@ use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; +use Illuminate\Support\Facades\DB; class AddPhotoColumnToNomineeTable extends Migration { @@ -14,9 +15,16 @@ class AddPhotoColumnToNomineeTable extends Migration public function up() { Schema::table('nominee', function (Blueprint $table) { - $table->binary('photo')->nullable(); $table->dropColumn('image'); }); + + if (Schema::hasColumn('nominee', 'image_path')) { + Schema::table('nominee', function (Blueprint $table) { + $table->dropColumn('image_path'); + }); + } + + DB::statement("ALTER TABLE nominee ADD photo MEDIUMBLOB"); } /** diff --git a/database/migrations/2024_03_24_132333_add_role_to_users_table.php b/database/migrations/2024_03_24_132333_add_role_to_users_table.php new file mode 100644 index 0000000..e0a99b8 --- /dev/null +++ b/database/migrations/2024_03_24_132333_add_role_to_users_table.php @@ -0,0 +1,36 @@ +string('role', 60)->nullable(); + }); + + // DB::statement("ALTER TABLE nominee ADD photo MEDIUMBLOB"); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + // + $table->dropColumn('role'); + }); + } +} diff --git a/database/migrations/2024_03_26_095932_add_saham_to_voter_table.php b/database/migrations/2024_03_26_095932_add_saham_to_voter_table.php new file mode 100644 index 0000000..9b30d61 --- /dev/null +++ b/database/migrations/2024_03_26_095932_add_saham_to_voter_table.php @@ -0,0 +1,34 @@ +decimal('saham', 9,2); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('voter', function (Blueprint $table) { + // + $table->dropColumn('saham'); + }); + } +} diff --git a/database/migrations/2024_03_26_100140_add_yuran_to_voter_table.php b/database/migrations/2024_03_26_100140_add_yuran_to_voter_table.php new file mode 100644 index 0000000..2695571 --- /dev/null +++ b/database/migrations/2024_03_26_100140_add_yuran_to_voter_table.php @@ -0,0 +1,35 @@ +decimal('yuran', 9,2); + + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('voter', function (Blueprint $table) { + // + $table->dropColumn('yuran'); + }); + } +} diff --git a/resources/assets/js/components/demo/admin/admin/add.vue b/resources/assets/js/components/demo/admin/admin/add.vue index da25169..e8df930 100644 --- a/resources/assets/js/components/demo/admin/admin/add.vue +++ b/resources/assets/js/components/demo/admin/admin/add.vue @@ -1,62 +1,71 @@ \ No newline at end of file diff --git a/resources/assets/js/components/demo/admin/home/index.vue b/resources/assets/js/components/demo/admin/home/index.vue index 22a0d85..70546a4 100644 --- a/resources/assets/js/components/demo/admin/home/index.vue +++ b/resources/assets/js/components/demo/admin/home/index.vue @@ -1,118 +1,142 @@ \ No newline at end of file + diff --git a/resources/assets/js/components/demo/voter/index.vue b/resources/assets/js/components/demo/voter/index.vue index 61aea34..3ef9650 100644 --- a/resources/assets/js/components/demo/voter/index.vue +++ b/resources/assets/js/components/demo/voter/index.vue @@ -27,12 +27,12 @@ Pautan Zoom - - Vote + + Undian - Results + Keputusan diff --git a/resources/views/index.blade.php b/resources/views/index.blade.php index 2b880b9..8bd92ee 100644 --- a/resources/views/index.blade.php +++ b/resources/views/index.blade.php @@ -1,5 +1,6 @@ + MyKoPKB == eVoting System @@ -10,32 +11,40 @@ + -
- -
+
+ +
-
+
- - - - - - - - - - - - + + + + + + + + + + + + +