diff --git a/app/Http/Controllers/API/v1/Nominee/AddController.php b/app/Http/Controllers/API/v1/Nominee/AddController.php index a9805eb..923d0fa 100644 --- a/app/Http/Controllers/API/v1/Nominee/AddController.php +++ b/app/Http/Controllers/API/v1/Nominee/AddController.php @@ -43,12 +43,19 @@ class AddController extends Controller ]); } - public function insertNominee ($request) + 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 = $request->except(['photo']); $nominee['election_id'] = Util::getCurrentElection(); + + if ($request->hasFile('photo')) { + $imageData = file_get_contents($request->file('photo')); + $nominee['photo'] = $imageData; + } + Nominee::create($nominee); + return response()->json(['message' => 'Photo updated successfully']); + + } } diff --git a/app/Http/Controllers/API/v1/Nominee/UpdateController.php b/app/Http/Controllers/API/v1/Nominee/UpdateController.php index f63c09e..82a0c4e 100644 --- a/app/Http/Controllers/API/v1/Nominee/UpdateController.php +++ b/app/Http/Controllers/API/v1/Nominee/UpdateController.php @@ -41,11 +41,10 @@ class UpdateController extends Controller ]); } - private function updateNominee ($request, $id) + private function updateNominee ($request, $id) { $nominee = Nominee::find($id); - $default_image = $nominee->image; - + $nominee->name = $request->name; $nominee->unit = $request->unit; $nominee->no_anggota = $request->no_anggota; @@ -53,11 +52,13 @@ class UpdateController extends Controller $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); + if ($request->hasFile('photo')) { + $imageData = file_get_contents($request->file('photo')); + $nominee->photo = $imageData; + } + + $nominee->save(); } } diff --git a/app/Nominee.php b/app/Nominee.php index eb89e33..fdc1cd0 100644 --- a/app/Nominee.php +++ b/app/Nominee.php @@ -8,14 +8,24 @@ class Nominee extends Model { protected $table = 'nominee'; protected $fillable = [ - 'name', - 'unit', - 'no_anggota', + 'name', + 'unit', + 'no_anggota', 'position_id', 'partylist_id', 'election_id', - 'image', 'description', - 'motto' + 'motto', + 'photo', ]; + public $timestamp = false; + + public function getPhotoAttribute($value) + { + if ($value) { + return base64_encode($value); + } + + return null; + } } 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 new file mode 100644 index 0000000..6ed0aca --- /dev/null +++ b/database/migrations/2024_03_23_135849_add_photo_column_to_nominee_table.php @@ -0,0 +1,34 @@ +binary('photo')->nullable(); + $table->dropColumn('image'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('nominee', function (Blueprint $table) { + $table->dropColumn('photo'); + $table->string('image'); + }); + } +} diff --git a/resources/assets/js/components/demo/admin/nominee/add.vue b/resources/assets/js/components/demo/admin/nominee/add.vue index d86b311..3e71bc3 100644 --- a/resources/assets/js/components/demo/admin/nominee/add.vue +++ b/resources/assets/js/components/demo/admin/nominee/add.vue @@ -46,9 +46,12 @@ +