update structure for ticket function
This commit is contained in:
parent
a1b2246666
commit
f1e7af7bf4
|
|
@ -0,0 +1,105 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Admin\app\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Helper\Cache\CurrentMonthTimekeeping;
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\Notes;
|
||||||
|
use App\Traits\AnalyzeData;
|
||||||
|
use App\Traits\HasFilterRequest;
|
||||||
|
use App\Traits\HasOrderByRequest;
|
||||||
|
use App\Traits\HasSearchRequest;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use Carbon\CarbonPeriod;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
|
class TicketController extends Controller
|
||||||
|
{
|
||||||
|
use HasOrderByRequest;
|
||||||
|
use HasFilterRequest;
|
||||||
|
use HasSearchRequest;
|
||||||
|
use AnalyzeData;
|
||||||
|
|
||||||
|
public function get(Request $request)
|
||||||
|
{
|
||||||
|
// Get data tickets and user -> pagination, orderby 'desc', filter: fromDate, toDate, status, type, name
|
||||||
|
}
|
||||||
|
|
||||||
|
public function createTicket(Request $request){
|
||||||
|
//Get data from request
|
||||||
|
$startDate = $request->input('start_date'); //Start day
|
||||||
|
$startPeriod = $request->input('start_period'); //The session begins
|
||||||
|
$endDate = $request->input('end_date'); //End date
|
||||||
|
$endPeriod = $request->input('end_period'); //Session ends
|
||||||
|
$user_id = $request->input('user_id'); // ID user create ticket
|
||||||
|
$results = $this->getAllPeriod($startDate, $startPeriod, $endDate, $endPeriod);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function deleteTicket(Request $request){
|
||||||
|
$user = auth('admins')->user();
|
||||||
|
$ticket_id = $request->input('ticket_id');
|
||||||
|
|
||||||
|
// $user->id == user_id of ticket ---> delete
|
||||||
|
|
||||||
|
// else false
|
||||||
|
}
|
||||||
|
|
||||||
|
public function handleTicket(Request $request){
|
||||||
|
|
||||||
|
$ticket_id = $request->input('ticket_id');
|
||||||
|
$admin_note = $request->input('admin_note');
|
||||||
|
$action = $request->input('action'); // 'confirm' or 'refuse'
|
||||||
|
$admin = auth('admins')->user();
|
||||||
|
|
||||||
|
// $admin->id != user_id of ticket ---> continue
|
||||||
|
// Confirm
|
||||||
|
// Add records to the notes table like function Timekeeping.addNoteForUser() based on the $results array
|
||||||
|
|
||||||
|
// Update updated_by and admin_note in tickets table
|
||||||
|
|
||||||
|
// Send notification email to admin (list) and users
|
||||||
|
|
||||||
|
// Refuse
|
||||||
|
// Update updated_by and admin_note in tickets table
|
||||||
|
|
||||||
|
// Send notification email to admin (list) and users
|
||||||
|
|
||||||
|
// false
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getAllPeriod($startDate, $startPeriod, $endDate, $endPeriod)
|
||||||
|
{
|
||||||
|
//Create an array to contain the results
|
||||||
|
$results = [];
|
||||||
|
|
||||||
|
//Use CarbonPeriod to create a period from the start date to the end date
|
||||||
|
$period = CarbonPeriod::create($startDate, $endDate);
|
||||||
|
|
||||||
|
foreach ($period as $date) {
|
||||||
|
//If it is the start date
|
||||||
|
if ($date->isSameDay($startDate)) {
|
||||||
|
//Add start session
|
||||||
|
$results[] = ['date' => $date->toDateString(), 'period' => $startPeriod];
|
||||||
|
//If the start date is morning, add afternoon
|
||||||
|
if ($startPeriod == 'morning') {
|
||||||
|
$results[] = ['date' => $date->toDateString(), 'period' => 'afternoon'];
|
||||||
|
}
|
||||||
|
} elseif ($date->isSameDay($endDate)) {
|
||||||
|
//If it is the end date
|
||||||
|
//If the end session is afternoon, add morning first
|
||||||
|
if ($endPeriod == 'afternoon') {
|
||||||
|
$results[] = ['date' => $date->toDateString(), 'period' => 'morning'];
|
||||||
|
}
|
||||||
|
$results[] = ['date' => $date->toDateString(), 'period' => $endPeriod];
|
||||||
|
} else {
|
||||||
|
//Add both sessions for days between intervals
|
||||||
|
$results[] = ['date' => $date->toDateString(), 'period' => 'morning'];
|
||||||
|
$results[] = ['date' => $date->toDateString(), 'period' => 'afternoon'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Returns results
|
||||||
|
return $results;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -16,8 +16,6 @@ use Modules\Admin\app\Models\Admin;
|
||||||
use Modules\Admin\app\Models\MonthlyTimekeeping;
|
use Modules\Admin\app\Models\MonthlyTimekeeping;
|
||||||
use Modules\Admin\app\Models\Tracking;
|
use Modules\Admin\app\Models\Tracking;
|
||||||
|
|
||||||
use function PHPSTORM_META\type;
|
|
||||||
|
|
||||||
class TimekeepingController extends Controller
|
class TimekeepingController extends Controller
|
||||||
{
|
{
|
||||||
use HasOrderByRequest;
|
use HasOrderByRequest;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Admin\app\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Support\Facades\Event;
|
||||||
|
use App\Traits\HasCacheModel;
|
||||||
|
|
||||||
|
class Ticket extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
use HasCacheModel;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->table = 'tickets';
|
||||||
|
$this->guarded = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -11,6 +11,7 @@ use Modules\Admin\app\Http\Controllers\CustomThemeController;
|
||||||
use Modules\Admin\app\Http\Controllers\DashboardController;
|
use Modules\Admin\app\Http\Controllers\DashboardController;
|
||||||
use Modules\Admin\app\Http\Controllers\JiraController;
|
use Modules\Admin\app\Http\Controllers\JiraController;
|
||||||
use Modules\Admin\app\Http\Controllers\SettingController;
|
use Modules\Admin\app\Http\Controllers\SettingController;
|
||||||
|
use Modules\Admin\app\Http\Controllers\TicketController;
|
||||||
use Modules\Admin\app\Http\Controllers\TimekeepingController;
|
use Modules\Admin\app\Http\Controllers\TimekeepingController;
|
||||||
use Modules\Admin\app\Http\Controllers\TrackingController;
|
use Modules\Admin\app\Http\Controllers\TrackingController;
|
||||||
use Modules\Admin\app\Http\Middleware\AdminMiddleware;
|
use Modules\Admin\app\Http\Middleware\AdminMiddleware;
|
||||||
|
|
@ -126,6 +127,15 @@ Route::middleware('api')
|
||||||
Route::get('/get-list-master', [CategoryController::class, 'getListMaster']);
|
Route::get('/get-list-master', [CategoryController::class, 'getListMaster']);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Route::group([
|
||||||
|
'prefix' => 'ticket',
|
||||||
|
], function () {
|
||||||
|
Route::get('/', [TicketController::class, 'get']);
|
||||||
|
Route::post('/create', [TrackingController::class, 'createTicket'])->middleware('check.permission:admin.hr.staff');
|
||||||
|
Route::get('/delete', [TrackingController::class, 'deleteTicket'])->middleware('check.permission:admin.hr.staff');
|
||||||
|
Route::post('/handle-ticket', [TrackingController::class, 'handleTicket'])->middleware('check.permission:admin');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('tickets', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->integer('user_id');
|
||||||
|
$table->timestamps('start_date');
|
||||||
|
$table->string('start_period');
|
||||||
|
$table->timestamps('end_date');
|
||||||
|
$table->string('end_period');
|
||||||
|
$table->string('type');
|
||||||
|
$table->string('reason');
|
||||||
|
$table->string('admin_note')->nullable();
|
||||||
|
$table->string('updated_by');
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('tickets');
|
||||||
|
}
|
||||||
|
};
|
||||||
Loading…
Reference in New Issue