refactor: new_tv_req > activated_at change to approved_at

v2.0.0
ricky rx 1 year ago
parent 3322055ac5
commit 3ff470bc55

@ -17,7 +17,8 @@ class NewTvRequestController extends Controller {
'search' => DatabaseHelper::getSearchValidation()
]);
$newTvRequests = NewTvRequest::addColumnCanApprove()
$newTvRequests = NewTvRequest::with('tv')
->addColumnCanApprove()
->addColumnCanReject()
->multiSearch($request->search, ['code'])
->multiOrderBy($request->orderBys, 'created_at desc')

@ -38,12 +38,12 @@ class NewTvRequest extends Model {
// -- RELATED TO SCOPE
public function scopeAddColumnCanApprove(Builder $query) {
$query->withCount(['self as can_approve' => function($q) {
$q->whereNull('activated_at');
$q->whereNull('approved_at');
}]);
}
public function scopeAddColumnCanReject(Builder $query) {
$query->withCount(['self as can_reject' => function($q) {
$q->whereNull('activated_at');
$q->whereNull('approved_at');
}]);
}
// -- END RELATED TO SCOPE
@ -64,16 +64,16 @@ class NewTvRequest extends Model {
/**
* Rule:
* 1. if it has not been activated for more than the expiry date, deleted it
* 2. if it has been activated & has been responded more than expiry date, delete it
* - case: when has been activated, but intenet connection missing, how can device know
* that the new request tv has been activated?
* 1. if it has not been approved for more than the expiry date, deleted it
* 2. if it has been approved & has been responded more than expiry date, delete it
* - case: when has been approved, but intenet connection missing, how can device know
* that the new request tv has been approved?
*/
private static function _getMaxExpiredTime() :Carbon { return Carbon::now()->subHour(); }
public static function deleteExpiredRequests() {
$expiredTime = self::_getMaxExpiredTime()->toDateTimeString();
NewTvRequest::where(function($q) use ($expiredTime) {
$q->whereNull('activated_at')->where('created_at', '<=', $expiredTime);
$q->whereNull('approved_at')->where('created_at', '<=', $expiredTime);
})->orWhere(function($q) use ($expiredTime) {
$q->where('responded_at', '<=', $expiredTime );
})->delete();
@ -84,7 +84,7 @@ class NewTvRequest extends Model {
//------------------------------------------------------------
// -- RELATED TO FROM REQUEST FUNCTION
private static function _checkOrCreateResponse(NewTvRequest $newTvReq) {
if($newTvReq->activated_at) {
if($newTvReq->approved_at) {
// make sure waiting tv_device responded before deleted
if(empty($newTvReq->responded_at)) {
$newTvReq->responded_at = now();
@ -92,7 +92,7 @@ class NewTvRequest extends Model {
}
return JSONResponse::Success([
'message' => 'activated',
'message' => 'approved',
'new_tv_request' => $newTvReq,
'tv' => $newTvReq->tv
]);
@ -176,7 +176,7 @@ class NewTvRequest extends Model {
$tv->save();
TVLog::historyCreate($request->user(), $tv->id, $tv);
$newTvReq->activated_at = now();
$newTvReq->approved_at = now();
$newTvReq->tv_fk = $tv->id;
$newTvReq->save();

@ -41,7 +41,7 @@ return new class extends Migration {
$table->string('code', 50);
$table->jsonb('device_info')->nullable();
$table->foreignId('tv_fk')->nullable();
$table->timestampTz('activated_at')->nullable();
$table->timestampTz('approved_at')->nullable();
$table->timestampTz('responded_at')->nullable();
$table->timestampsTz();
});

Loading…
Cancel
Save