Merge remote-tracking branch 'refs/remotes/origin/master'
This commit is contained in:
commit
6df58ac083
|
|
@ -122,27 +122,27 @@ class TrackingController extends Controller
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update(DiscountRequest $request)
|
public function update(Request $request)
|
||||||
{
|
{
|
||||||
$id = $request->get('id');
|
$id = $request->get('id');
|
||||||
|
|
||||||
$discount = Discount::find($id);
|
$tracking = Tracking::find($id);
|
||||||
$payload = $request->all();
|
$payload = $request->all();
|
||||||
|
|
||||||
if ($discount) {
|
if ($tracking) {
|
||||||
$discount->update($payload);
|
$tracking->update($payload);
|
||||||
}
|
}
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'data' => $discount,
|
'data' => $tracking,
|
||||||
'status' => true
|
'status' => true
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function delete(DiscountRequest $request)
|
public function delete(Request $request)
|
||||||
{
|
{
|
||||||
$id = $request->get('id');
|
$id = $request->get('id');
|
||||||
|
|
||||||
Discount::destroy($id);
|
Tracking::destroy($id);
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'status' => true
|
'status' => true
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -150,5 +150,6 @@ Route::middleware('api')
|
||||||
], function () {
|
], function () {
|
||||||
Route::get('/', [TrackingController::class, 'get']);
|
Route::get('/', [TrackingController::class, 'get']);
|
||||||
Route::post('/scan-create', [TrackingController::class, 'create']);
|
Route::post('/scan-create', [TrackingController::class, 'create']);
|
||||||
|
Route::get('/delete', [TrackingController::class, 'delete']);
|
||||||
// Route::get('/clear-cache', [SettingController::class, 'clearCache']);
|
// Route::get('/clear-cache', [SettingController::class, 'clearCache']);
|
||||||
});
|
});
|
||||||
|
|
@ -53,3 +53,4 @@ export const statisticRevenuesByMonth = API_URL + 'v1/admin/dashboard/statistics
|
||||||
|
|
||||||
// Tracking
|
// Tracking
|
||||||
export const getListTracking = API_URL + 'v1/admin/tracking'
|
export const getListTracking = API_URL + 'v1/admin/tracking'
|
||||||
|
export const deleteTracking = API_URL + 'v1/admin/tracking/delete'
|
||||||
|
|
@ -8,3 +8,29 @@
|
||||||
var(--mantine-spacing-sm);
|
var(--mantine-spacing-sm);
|
||||||
border-bottom: solid rgba(201, 201, 201, 0.377) 1px;
|
border-bottom: solid rgba(201, 201, 201, 0.377) 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.optionIcon {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-evenly;
|
||||||
|
}
|
||||||
|
|
||||||
|
.deleteIcon {
|
||||||
|
color: red;
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 2px;
|
||||||
|
border-radius: 25%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.deleteIcon:hover {
|
||||||
|
background-color: rgba(203, 203, 203, 0.809);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog {
|
||||||
|
background-color: light-dark(white, #2d353c);
|
||||||
|
text-align: center;
|
||||||
|
border: solid 1px rgb(255, 145, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialogText {
|
||||||
|
color: light-dark(#2d353c, white);
|
||||||
|
}
|
||||||
|
|
@ -1,15 +1,19 @@
|
||||||
import { getListTracking } from "@/api/Admin"
|
import { deleteTracking, getListTracking } from "@/api/Admin"
|
||||||
|
import { DataTablePagination } from "@/components/DataTable/DataTable"
|
||||||
|
import { Xdelete } from "@/rtk/helpers/CRUD"
|
||||||
import { get } from "@/rtk/helpers/apiService"
|
import { get } from "@/rtk/helpers/apiService"
|
||||||
import { Box, Text } from "@mantine/core"
|
import { Box, Button, Dialog, Group, Text } from "@mantine/core"
|
||||||
|
import { IconTrash } from "@tabler/icons-react"
|
||||||
import moment from "moment"
|
import moment from "moment"
|
||||||
import { useEffect, useState } from "react"
|
import { useEffect, useState } from "react"
|
||||||
import classes from './Tracking.module.css'
|
import classes from './Tracking.module.css'
|
||||||
import { DataTablePagination } from "@/components/DataTable/DataTable"
|
|
||||||
const Tracking = () => {
|
const Tracking = () => {
|
||||||
const [listTracking, setListTracking] = useState({
|
const [listTracking, setListTracking] = useState({
|
||||||
data: []
|
data: []
|
||||||
})
|
})
|
||||||
|
const [action, setAction] = useState('')
|
||||||
|
const [item, setItem] = useState({id: 0})
|
||||||
|
const [activeBtn, setActiveBtn] = useState(false)
|
||||||
const columns = [
|
const columns = [
|
||||||
{
|
{
|
||||||
name: 'id',
|
name: 'id',
|
||||||
|
|
@ -39,6 +43,28 @@ const Tracking = () => {
|
||||||
return moment(row.updated_at).format('YYYY/MM/DD - HH:mm:ss')
|
return moment(row.updated_at).format('YYYY/MM/DD - HH:mm:ss')
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: '#',
|
||||||
|
size: '10%',
|
||||||
|
header: 'Action',
|
||||||
|
render: (row: any) => {
|
||||||
|
return (
|
||||||
|
<Box
|
||||||
|
className={classes.optionIcon}
|
||||||
|
>
|
||||||
|
<IconTrash
|
||||||
|
className={classes.deleteIcon}
|
||||||
|
onClick={() => {
|
||||||
|
setAction('delete')
|
||||||
|
setItem(row)
|
||||||
|
}}
|
||||||
|
width={20}
|
||||||
|
height={20}
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
|
)
|
||||||
|
},
|
||||||
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
const filterInfo = [
|
const filterInfo = [
|
||||||
|
|
@ -81,10 +107,18 @@ const Tracking = () => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const handleDelete = async (id: number) => {
|
||||||
|
try {
|
||||||
|
await Xdelete(deleteTracking, { id: id }, getAllTracking)
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
useEffect(()=>{
|
useEffect(()=>{
|
||||||
setInterval(()=>{
|
setInterval(()=>{
|
||||||
getAllTracking()
|
getAllTracking()
|
||||||
}, 3000)
|
}, 7000)
|
||||||
}, [])
|
}, [])
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
|
|
@ -114,6 +148,44 @@ const Tracking = () => {
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
|
<Dialog
|
||||||
|
className={classes.dialog}
|
||||||
|
opened={action === 'delete'}
|
||||||
|
withCloseButton
|
||||||
|
onClose={() => setAction('')}
|
||||||
|
size="lg"
|
||||||
|
radius="md"
|
||||||
|
position={{ top: 30, right: 10 }}
|
||||||
|
>
|
||||||
|
<Text className={classes.dialogText} size="sm" mb="xs" fw={500}>
|
||||||
|
Do you want to delete this discount?
|
||||||
|
<Group justify="center" m={10}>
|
||||||
|
<Button
|
||||||
|
disabled={activeBtn}
|
||||||
|
fw={700}
|
||||||
|
size="xs"
|
||||||
|
variant="light"
|
||||||
|
onClick={async () => {
|
||||||
|
setActiveBtn(true)
|
||||||
|
await handleDelete(item.id)
|
||||||
|
setActiveBtn(false)
|
||||||
|
setAction('')
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Yes
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
fw={700}
|
||||||
|
size="xs"
|
||||||
|
variant="light"
|
||||||
|
onClick={() => setAction('')}
|
||||||
|
>
|
||||||
|
Cancel
|
||||||
|
</Button>
|
||||||
|
</Group>
|
||||||
|
</Text>
|
||||||
|
</Dialog>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue