create API ticker
This commit is contained in:
parent
cb65f1fffc
commit
a0a740cca3
|
|
@ -23,6 +23,7 @@ class BannerController extends Controller
|
||||||
|
|
||||||
public function create(BannerRequest $request)
|
public function create(BannerRequest $request)
|
||||||
{
|
{
|
||||||
|
|
||||||
$banner = new Banner;
|
$banner = new Banner;
|
||||||
|
|
||||||
if ($request->has('title')) {
|
if ($request->has('title')) {
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,8 @@ use Carbon\Carbon;
|
||||||
use Carbon\CarbonPeriod;
|
use Carbon\CarbonPeriod;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Modules\Admin\app\Models\Category;
|
||||||
|
use Modules\Admin\app\Models\Ticket;
|
||||||
|
|
||||||
class TicketController extends Controller
|
class TicketController extends Controller
|
||||||
{
|
{
|
||||||
|
|
@ -21,49 +23,167 @@ class TicketController extends Controller
|
||||||
use HasSearchRequest;
|
use HasSearchRequest;
|
||||||
use AnalyzeData;
|
use AnalyzeData;
|
||||||
|
|
||||||
public function get(Request $request)
|
public function getByUserId(Request $request)
|
||||||
{
|
{
|
||||||
// Get data tickets and user -> pagination, orderby 'desc', filter: fromDate, toDate, status, type, name
|
$tickets = new Ticket;
|
||||||
|
|
||||||
|
// Order by
|
||||||
|
$this->orderByRequest($tickets, $request);
|
||||||
|
|
||||||
|
// Filter
|
||||||
|
$this->filterRequest(
|
||||||
|
builder: $tickets,
|
||||||
|
request: $request,
|
||||||
|
filterKeys: [
|
||||||
|
'type' => self::F_TEXT,
|
||||||
|
'reason' => self::F_TEXT,
|
||||||
|
'updated_by' => self::F_TEXT,
|
||||||
|
'start_date' => [
|
||||||
|
'type' => self::F_THAN_EQ_DATETIME,
|
||||||
|
'column' => 'tickets.start_date'
|
||||||
|
],
|
||||||
|
'end_date' => [
|
||||||
|
'type' => self::F_THAN_EQ_DATETIME,
|
||||||
|
'column' => 'tickets.end_date'
|
||||||
|
],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$responseData = array_merge(
|
||||||
|
$tickets->where('user_id',auth('admins')->user()->id)->orderBy('created_at', 'desc')->paginate($request->get('per_page'))->toArray(),
|
||||||
|
['status' => true]
|
||||||
|
);
|
||||||
|
|
||||||
|
return response()->json($responseData);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAll(Request $request)
|
||||||
|
{
|
||||||
|
$tickets = new Ticket;
|
||||||
|
|
||||||
|
// Order by
|
||||||
|
$this->orderByRequest($tickets, $request);
|
||||||
|
|
||||||
|
// Filter
|
||||||
|
$this->filterRequest(
|
||||||
|
builder: $tickets,
|
||||||
|
request: $request,
|
||||||
|
filterKeys: [
|
||||||
|
'type' => self::F_TEXT,
|
||||||
|
'reason' => self::F_TEXT,
|
||||||
|
'updated_by' => self::F_TEXT,
|
||||||
|
'start_date' => [
|
||||||
|
'type' => self::F_THAN_EQ_DATETIME,
|
||||||
|
'column' => 'tickets.start_date'
|
||||||
|
],
|
||||||
|
'end_date' => [
|
||||||
|
'type' => self::F_THAN_EQ_DATETIME,
|
||||||
|
'column' => 'tickets.end_date'
|
||||||
|
],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$responseData = array_merge(
|
||||||
|
$tickets->orderBy('created_at', 'desc')->paginate($request->get('per_page'))->toArray(),
|
||||||
|
['status' => true]
|
||||||
|
);
|
||||||
|
|
||||||
|
return response()->json($responseData);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function createTicket(Request $request){
|
public function createTicket(Request $request){
|
||||||
|
|
||||||
|
// Define validation rules
|
||||||
|
$rules = [
|
||||||
|
'start_date' => 'required|date',
|
||||||
|
'start_period' => 'required|string', // Adjust the validation rule as per your requirements
|
||||||
|
'end_date' => 'required|date|after_or_equal:start_date',
|
||||||
|
'end_period' => 'required|string', // Adjust the validation rule as per your requirements
|
||||||
|
];
|
||||||
|
|
||||||
|
// Validate the request
|
||||||
|
$request->validate($rules);
|
||||||
|
// return $request;
|
||||||
|
|
||||||
//Get data from request
|
//Get data from request
|
||||||
$startDate = $request->input('start_date'); //Start day
|
$startDate = $request->input('start_date'); //Start day
|
||||||
$startPeriod = $request->input('start_period'); //The session begins
|
$startPeriod = $request->input('start_period'); //The session begins
|
||||||
$endDate = $request->input('end_date'); //End date
|
$endDate = $request->input('end_date'); //End date
|
||||||
$endPeriod = $request->input('end_period'); //Session ends
|
$endPeriod = $request->input('end_period'); //Session ends
|
||||||
$user_id = $request->input('user_id'); // ID user create ticket
|
$user = auth('admins')->user(); // user create ticket
|
||||||
$results = $this->getAllPeriod($startDate, $startPeriod, $endDate, $endPeriod);
|
|
||||||
|
// return $user;
|
||||||
|
|
||||||
|
$ticket = Ticket::create([
|
||||||
|
'start_date' => Carbon::create($startDate)->setTimezone(env('TIME_ZONE')),
|
||||||
|
'start_period' => $startPeriod,
|
||||||
|
'end_date' => Carbon::create($endDate)->setTimezone(env('TIME_ZONE')),
|
||||||
|
'end_period' => $endPeriod,
|
||||||
|
'user_id' => $user->id
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Send notification email to admin (list)
|
||||||
|
|
||||||
|
|
||||||
|
return response()->json(['data' => $ticket, 'status' => true]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function deleteTicket(Request $request){
|
public function deleteTicket(Request $request){
|
||||||
|
$rules = [
|
||||||
|
'ticket_id' => 'required'
|
||||||
|
];
|
||||||
|
|
||||||
|
// Validate the request
|
||||||
|
$request->validate($rules);
|
||||||
|
|
||||||
$user = auth('admins')->user();
|
$user = auth('admins')->user();
|
||||||
$ticket_id = $request->input('ticket_id');
|
$ticket_id = $request->input('ticket_id');
|
||||||
|
$ticket = Ticket::find($ticket_id);
|
||||||
|
if($ticket){
|
||||||
|
// $user->id == user_id of ticket ---> delete
|
||||||
|
if($ticket->user_id == $user->id){
|
||||||
|
$ticket->delete();
|
||||||
|
return response()->json(['message' => 'delete success', 'status' => true]);
|
||||||
|
}else{
|
||||||
|
return response()->json(['message' => 'You are committing an act of vandalism', 'status' => false]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// $user->id == user_id of ticket ---> delete
|
return response()->json(['message' => 'Delete fail', 'status' => false]);
|
||||||
|
|
||||||
// else false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handleTicket(Request $request){
|
public function handleTicket(Request $request){
|
||||||
|
|
||||||
|
$rules = [
|
||||||
|
'ticket_id' => 'required',
|
||||||
|
'action' => 'required'
|
||||||
|
];
|
||||||
|
|
||||||
|
// Validate the request
|
||||||
|
$request->validate($rules);
|
||||||
|
|
||||||
$ticket_id = $request->input('ticket_id');
|
$ticket_id = $request->input('ticket_id');
|
||||||
$admin_note = $request->input('admin_note');
|
$admin_note = $request->input('admin_note');
|
||||||
$action = $request->input('action'); // 'confirm' or 'refuse'
|
$action = $request->input('action'); // 'confirm' or 'refuse'
|
||||||
$admin = auth('admins')->user();
|
$admin = auth('admins')->user();
|
||||||
|
$ticket = Ticket::find($ticket_id);
|
||||||
|
$results = $this->getAllPeriod($ticket->start_date, $ticket->start_period, $ticket->end_date, $ticket->end_period);
|
||||||
|
|
||||||
|
return $results;
|
||||||
// $admin->id != user_id of ticket ---> continue
|
// $admin->id != user_id of ticket ---> continue
|
||||||
// Confirm
|
// Confirm
|
||||||
// Add records to the notes table like function Timekeeping.addNoteForUser() based on the $results array
|
// Add records to the notes table like function Timekeeping.addNoteForUser() based on the $results array
|
||||||
|
|
||||||
// Update updated_by and admin_note in tickets table
|
// Update updated_by and admin_note in tickets table
|
||||||
|
|
||||||
// Send notification email to admin (list) and users
|
// Send notification email to users
|
||||||
|
|
||||||
// Refuse
|
// Refuse
|
||||||
// Update updated_by and admin_note in tickets table
|
// Update updated_by and admin_note in tickets table
|
||||||
|
|
||||||
// Send notification email to admin (list) and users
|
// Send notification email to users
|
||||||
|
|
||||||
// false
|
// false
|
||||||
}
|
}
|
||||||
|
|
@ -76,6 +196,8 @@ class TicketController extends Controller
|
||||||
//Use CarbonPeriod to create a period from the start date to the end date
|
//Use CarbonPeriod to create a period from the start date to the end date
|
||||||
$period = CarbonPeriod::create($startDate, $endDate);
|
$period = CarbonPeriod::create($startDate, $endDate);
|
||||||
|
|
||||||
|
$time_type = Category::where('c_type','TIME_TYPE');
|
||||||
|
|
||||||
foreach ($period as $date) {
|
foreach ($period as $date) {
|
||||||
//If it is the start date
|
//If it is the start date
|
||||||
if ($date->isSameDay($startDate)) {
|
if ($date->isSameDay($startDate)) {
|
||||||
|
|
|
||||||
|
|
@ -138,10 +138,11 @@ Route::middleware('api')
|
||||||
Route::group([
|
Route::group([
|
||||||
'prefix' => 'ticket',
|
'prefix' => 'ticket',
|
||||||
], function () {
|
], function () {
|
||||||
Route::get('/', [TicketController::class, 'get']);
|
Route::get('/all', [TicketController::class, 'getAll'])->middleware('check.permission:admin');
|
||||||
Route::post('/create', [TrackingController::class, 'createTicket'])->middleware('check.permission:admin.hr.staff');
|
Route::get('/getByUserId', [TicketController::class, 'getByUserId'])->middleware('check.permission:admin.hr.staff');
|
||||||
Route::get('/delete', [TrackingController::class, 'deleteTicket'])->middleware('check.permission:admin.hr.staff');
|
Route::post('/create', [TicketController::class, 'createTicket'])->middleware('check.permission:admin.hr.staff');
|
||||||
Route::post('/handle-ticket', [TrackingController::class, 'handleTicket'])->middleware('check.permission:admin');
|
Route::get('/delete', [TicketController::class, 'deleteTicket'])->middleware('check.permission:admin.hr.staff');
|
||||||
|
Route::post('/handle-ticket', [TicketController::class, 'handleTicket'])->middleware('check.permission:admin');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -415,15 +415,15 @@ const LeaveManagement = () => {
|
||||||
})?.leave_days ?? 0
|
})?.leave_days ?? 0
|
||||||
totalDayOff = totalDayOff + total
|
totalDayOff = totalDayOff + total
|
||||||
return (
|
return (
|
||||||
<Table.Td key={i} ta={'center'}>
|
<Table.Td bg={total > 0 ? '#ffb5b5' : ''} key={i} ta={'center'}>
|
||||||
{total === 0 ? '' : total}
|
{total === 0 ? '' : total}
|
||||||
</Table.Td>
|
</Table.Td>
|
||||||
)
|
)
|
||||||
})}
|
})}
|
||||||
|
|
||||||
<Table.Td ta={'center'}>{totalDayLeave}</Table.Td>
|
<Table.Td ta={'center'}>{totalDayLeave}</Table.Td>
|
||||||
<Table.Td ta={'center'}>{totalDayOff}</Table.Td>
|
<Table.Td ta={'center'} bg={'#ffb5b5'}>{totalDayOff}</Table.Td>
|
||||||
<Table.Td ta={'center'}>
|
<Table.Td ta={'center'} bg={'#c3ffc3'}>
|
||||||
{totalDayLeave - totalDayOff}
|
{totalDayLeave - totalDayOff}
|
||||||
</Table.Td>
|
</Table.Td>
|
||||||
<Table.Td>
|
<Table.Td>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue