feat: api for new tv request > approve existing tv

v2.0.0
ricky rx 1 year ago
parent 2ed57016bc
commit e2ab453d66

@ -9,6 +9,9 @@ use Illuminate\Http\Request;
* Note: * Note:
* if any of frontend component need specific api query / data specific. * if any of frontend component need specific api query / data specific.
* Please add function to get data here. * Please add function to get data here.
*
* But, if the parent component still needs to pass the url to the
* child component, the url api can be placed in the app/Http/Controllers/api/superadmin/GeneralController
*/ */
class ApiUtilities { class ApiUtilities {

@ -0,0 +1,16 @@
<?php
namespace App\Http\Controllers\api\superadmin;
use App\Helper\JSONResponse;
use App\Http\Controllers\Controller;
use App\Models\Tv;
use Illuminate\Http\Request;
class GeneralController extends Controller {
public function tvSearch(Request $request) {
$request->validate(['search' => 'nullable|string']);
$tvs = Tv::multiSearch($request->search, ['code'])->orderBy('code', 'asc')->limit(10)->get();
return JSONResponse::Success(['tvs' => $tvs ]);
}
}

@ -126,9 +126,25 @@ class NewTvRequest extends Model {
public static function approveFromRequest(Request $request) { public static function approveFromRequest(Request $request) {
$request->validate([ $request->validate([
'id' => 'required|integer|exists:App\Models\NewTvRequest', 'id' => 'required|integer|exists:App\Models\NewTvRequest',
'tv' => 'required|array', 'tv' => 'nullable|array',
'existingTv' => 'nullable|array',
'action' => 'required|string',
]); ]);
$newTvReq = NewTvRequest::addColumnCanApprove()
->findOrFail($request->id);
if(!$newTvReq->can_approve) throw new \Exception('Cannot approve current request');
try {
$tv = null;
if($request->action == 'existing') {
$existingTvRequest = new Request($request->existingTv);
$existingTvRequest->validate([
'id' => 'required|integer|exists:App\Models\Tv',
]);
$tv = TV::findOrFail($existingTvRequest->id);
} else if ($request->action == 'new') {
$tvRequest = new Request($request->tv); $tvRequest = new Request($request->tv);
if($tvRequest->code) $tvRequest->merge(['code' => strtoupper($tvRequest->code)]); if($tvRequest->code) $tvRequest->merge(['code' => strtoupper($tvRequest->code)]);
@ -149,11 +165,6 @@ class NewTvRequest extends Model {
'notes' => 'nullable|string', 'notes' => 'nullable|string',
]); ]);
$newTvReq = NewTvRequest::addColumnCanApprove()
->findOrFail($request->id);
if(!$newTvReq->can_approve) throw new \Exception('Cannot approve current request');
try {
DB::beginTransaction(); DB::beginTransaction();
$tv = new Tv(); $tv = new Tv();
$tv->code = TV::generateUniqueCode(); $tv->code = TV::generateUniqueCode();
@ -176,18 +187,22 @@ class NewTvRequest extends Model {
$tv->save(); $tv->save();
TVLog::historyCreate($request->user(), $tv->id, $tv); TVLog::historyCreate($request->user(), $tv->id, $tv);
$newTvReq->approved_at = now();
$newTvReq->tv_fk = $tv->id;
$newTvReq->save();
DB::commit();
return JSONResponse::Success(['message'=>'Success to update tv data']);
// TODO: waiting execution until update from ops // TODO: waiting execution until update from ops
// NEED TO REFACTOR (cause by add existing tv code)
// // try to sys_to_sys with indokargo // // try to sys_to_sys with indokargo
// DB::commit(); // DB::commit();
// $jsonResponse = Indokargo::createTVAddress($tvRequest, $tv->id); // $jsonResponse = Indokargo::createTVAddress($tvRequest, $tv->id);
// return $jsonResponse; // return $jsonResponse;
} else {
throw new \Exception('INVALID FORM ACTION');
}
$newTvReq->approved_at = now();
$newTvReq->tv_fk = $tv->id;
$newTvReq->save();
DB::commit();
return JSONResponse::Success(['message'=>'Success to approve new tv request']);
} catch(\Throwable $th) { } catch(\Throwable $th) {
DB::rollback(); DB::rollback();
throw $th; throw $th;

@ -1,12 +1,17 @@
<?php <?php
use App\Http\Controllers\api\superadmin\ApkUploadController; use App\Http\Controllers\api\superadmin\ApkUploadController;
use App\Http\Controllers\api\superadmin\GeneralController;
use App\Http\Controllers\api\superadmin\tv\NewTvRequestController; use App\Http\Controllers\api\superadmin\tv\NewTvRequestController;
use App\Http\Controllers\api\superadmin\tv\TvController; use App\Http\Controllers\api\superadmin\tv\TvController;
use App\Http\Controllers\api\superadmin\UserManagementController; use App\Http\Controllers\api\superadmin\UserManagementController;
use App\Http\Controllers\api\superadmin\VideoUploadController; use App\Http\Controllers\api\superadmin\VideoUploadController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
Route::controller(GeneralController::class)->group(function() {
Route::post('/general/tv/search', 'tvSearch');
});
Route::controller(VideoUploadController::class)->group(function() { Route::controller(VideoUploadController::class)->group(function() {
Route::post('/video-upload', 'init'); Route::post('/video-upload', 'init');
Route::post('/video-upload/save', 'save'); Route::post('/video-upload/save', 'save');
@ -42,5 +47,6 @@ Route::controller(NewTvRequestController::class)->group(function() {
Route::post('/tv/new-tv-request', 'init'); Route::post('/tv/new-tv-request', 'init');
Route::post('/tv/new-tv-request/approve', 'approve'); Route::post('/tv/new-tv-request/approve', 'approve');
Route::post('/tv/new-tv-request/reject', 'reject'); Route::post('/tv/new-tv-request/reject', 'reject');
Route::post('/tv/new-tv-request/tv/search', 'tvSearch');
}); });
?> ?>
Loading…
Cancel
Save