79 lines
2.5 KiB
PHP
Executable File
79 lines
2.5 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Response;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Storage;
|
|
use Illuminate\Support\Str;
|
|
use Validator;
|
|
use Hidehalo\Nanoid\Client as Nanoid;
|
|
use GuzzleHttp\Client as GuzzleClient;
|
|
use App\Responses;
|
|
use App\Helper;
|
|
|
|
class StorageController extends Controller
|
|
{
|
|
|
|
public function save_photos(Request $req)
|
|
{
|
|
|
|
$url_photos_base64 = [];
|
|
try {
|
|
$now = time();
|
|
|
|
$input = [
|
|
'names' => $req->names,
|
|
'photos' => $req->photos,
|
|
];
|
|
$rulesInput = [
|
|
'names' => 'required|array',
|
|
'names.*' => 'required|string|max:255',
|
|
'photos' => 'required|array',
|
|
'photos.*' => 'required|string',
|
|
];
|
|
|
|
// validasi input
|
|
$isValidInput = Validator::make($input, $rulesInput);
|
|
if (!$isValidInput->passes()) {
|
|
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
|
return new Response($apiResp, $apiResp['meta']['code']);
|
|
}
|
|
|
|
if ($req->names && count($req->names) < 1) {
|
|
$apiResp = Responses::bad_input('names is required');
|
|
return new Response($apiResp, $apiResp['meta']['code']);
|
|
}
|
|
if ($req->photos && count($req->photos) < 1) {
|
|
$apiResp = Responses::bad_input('photos is required');
|
|
return new Response($apiResp, $apiResp['meta']['code']);
|
|
}
|
|
|
|
foreach ($req->photos as $i => $img) {
|
|
$clearBase64 = preg_replace('/^data:(image|application)\/(png|jpg|jpeg|pdf);base64,/', '', $img);
|
|
// $type = 'jpeg';
|
|
// if (strpos($img, 'application/pdf') !== false) $type = 'pdf';
|
|
// $url_photos_base64[$i] = "orders/" . $order[0]->ord_id . "/a_items/" . $oa_id . "/submission/" . $req->auth->uid . "/submission_proof_img_$now" . "_" . "$i.$type";
|
|
$url_photos_base64[$i] = $req->names[$i];
|
|
if (!Storage::disk('public')->put($url_photos_base64[$i], base64_decode($clearBase64))) {
|
|
$apiResp = Responses::bad_request('fail save photo');
|
|
return (new Response($apiResp, $apiResp['meta']['code']));
|
|
}
|
|
}
|
|
|
|
$apiResp = Responses::success('success save photos');
|
|
return (new Response($apiResp, $apiResp['meta']['code']));
|
|
} catch (\Exception $e) {
|
|
if (count($url_photos_base64) > 0) {
|
|
foreach ($url_photos_base64 as $path) {
|
|
Storage::disk('public')->delete($path);
|
|
}
|
|
}
|
|
$apiResp = Responses::error($e->getMessage());
|
|
return (new Response($apiResp, $apiResp['meta']['code']));
|
|
}
|
|
}
|
|
|
|
} |