', 0)->orderBy('id', 'desc')->first()->id; } /** * Get the status of current Election * * @return {Int} $electio_status */ public static function getElectionStatus () { return \App\Election::find(Util::getCurrentElection())->status; } /** * When the latest election has finished (status 3), the next setup actions * must attach to a new draft row. Call before writes that bind to getCurrentElection(). */ public static function ensureDraftElectionAfterCompletedCycle(): void { if (self::getElectionStatus() !== 3) { return; } Election::create(); } /** * Upload image and return it's path * @param {Request} $request * @param {String} $directory * @param {String} $default_image * @return {String} $image_path */ public static function getImagePath(Request $request, $directory, $default_image, $filename=null) { if (empty($request->image)){ return $default_image; }else if (config('app.cloudinary_enabled')) { return Util::uploadFileToCloudinary($request); } else { $filename = $filename ?: time().' .jpg'; return $request->file('image')->storeAs($directory, $filename); } } /** * Check if image is default * @param {String} $image * @return {Boolean} $isDefault */ public static function isDefaultImage ($image) { return ($image == config('app.nominee_image')); } public static function getCloudinaryConfig() { $config = new \Cloudinary\Configuration\Configuration(); $config->cloud->cloudName = config('app.cloudinary_cloud_name'); $config->cloud->apiKey = config('app.cloudinary_api_key'); $config->cloud->apiSecret = config('app.cloudinary_api_secret'); $config->url->secure = true; return $config; } public static function uploadFileToCloudinary($request) { try{ $config = Util::getCloudinaryConfig(); $cloudinary = new \Cloudinary\Cloudinary($config); $uploadApi = $cloudinary->uploadApi(); $image = base64_encode(file_get_contents($request->file('image'))); $result = $uploadApi->upload('data:image/gif;base64,'.$image, ['folder' => config('app.cloudinary_folder')]); return $result["url"]; } catch (\Throwable $exception) { return config('app.cloudinary_image_error'); } } }