Merge remote-tracking branch 'refs/remotes/origin/staging' into staging

This commit is contained in:
Server D3 Linksehat
2025-03-24 13:22:41 +07:00
7 changed files with 59 additions and 14 deletions

View File

@@ -32,8 +32,11 @@ class PrescriptionController extends Controller
'tx_prescriptions.*',
'tx_prescription_orders.sStatus as status_prescription',
'tx_prescription_orders.sAddress as kirim_ke',
'tx_prescription_orders.sDeliveryPrice as ongkir',
'tx_prescription_orders.sDeliveryMethod as delivery',
);
'tx_prescription_orders.nIDApotek',
)
->whereNotNull('nIDUser');
if ($request->has('search')) {
$search = $request->search;
$prescription->where(function ($query) use ($search) {
@@ -164,6 +167,8 @@ class PrescriptionController extends Controller
'Patient',
'Doctor',
'Status',
'Nama Apotek',
'Harga Ongkir',
'Jenis Obat (Drugs)',
'Jumlah Obat (QTY)',
'Cara Minum Obat',
@@ -176,7 +181,17 @@ class PrescriptionController extends Controller
// Query prescription data
$prescriptionQuery = Prescription::query()
->with(['livechat', 'user', 'items']);
->with(['livechat', 'user', 'items'])
->join('tx_prescription_orders', 'tx_prescriptions.nID', '=', 'tx_prescription_orders.nIDPrescription')
->select(
'tx_prescriptions.*',
'tx_prescription_orders.sStatus as status_prescription',
'tx_prescription_orders.sAddress as kirim_ke',
'tx_prescription_orders.sDeliveryPrice as ongkir',
'tx_prescription_orders.sDeliveryMethod as delivery',
'tx_prescription_orders.nIDApotek',
)
->whereNotNull('nIDUser');
if ($request->has('search')) {
$search = $request->search;
@@ -196,13 +211,18 @@ class PrescriptionController extends Controller
if ($prescriptions->isNotEmpty()) {
$no = 1;
foreach ($prescriptions as $index => $row) {
$patientName = $row->user ? $row->user->sFirstName .' '. $row->user->sLastName : '-';
if ($row->items->isNotEmpty()) {
$rowData = [
$no++,
$row->sKodeResep ?? '-',
$row->dTanggalResep ? Carbon::parse($row->dTanggalResep)->format('Y-m-d') : '-',
$row->user->name ?? '-',
$row->user->fullName ?? '-',
$row->sDokterName ?? '-',
$row->status_prescription ?? '-',
$row->nIDApotek ? Helper::getOrganization($row->nIDApotek) : '-',
$row->ongkir ?? '-',
$row->sDeliveryPrice ?? '-',
];
// Create a row from the array and add it to the writer
@@ -215,6 +235,9 @@ class PrescriptionController extends Controller
'',
'',
'',
'',
'',
'',
$item->sItemName ?? '-',
$item->nQty ?? '-',
$item->sSigna ?? '-'

View File

@@ -1,7 +1,8 @@
<?php
namespace Modules\Internal\Transformers;
use App\Helpers\Helper;
use Illuminate\Http\Resources\Json\JsonResource;
use Carbon\Carbon;
@@ -25,7 +26,9 @@ class ReportPrescriptionResource extends JsonResource
'date_consultation' => $this->dTanggalResep ? Carbon::parse($this->dTanggalResep)->format('Y-m-d H:i:s') : null,
'doctor_name' => $this->sDokterName ? $this->sDokterName : '-',
'items' => $this->items ? $this->items : [],
'status_prescription' => $this->status_prescription
'status_prescription' => $this->status_prescription,
'price_delivery' => $this->ongkir,
'apotek_name' => $this->nIDApotek ? Helper::getOrganization($this->nIDApotek) : '-',
];
return $data;

View File

@@ -14,6 +14,7 @@ use App\Models\User;
use App\Models\CorporatePolicy;
use App\Models\Service;
use App\Models\Icd;
use App\Models\Organization;
use DateTime;
class Helper
@@ -669,5 +670,9 @@ class Helper
return [];
}
public static function getOrganization($organizationId){
$organization = Organization::where('id', $organizationId)->first();
return $organization->name;
}
}

View File

@@ -185,7 +185,11 @@ class NavigationSeeder extends Seeder
'path' => '/report/linksehat-payments',
'permission' => 'report-livechat-payment'
],
// ['title' => 'Prescription', 'path' => '/report/prescription'],
[
'title' => 'Prescription',
'path' => '/report/prescription',
'permission' => 'report-prescription'
],
[
'title' => 'Doctor Rating',
'path' => '/report/doctor-rating',

View File

@@ -71,6 +71,7 @@ class PermissionTableSeeder extends Seeder
'report-livechat-payment',
'report-doctor-rating',
'report-doctor-online',
'report-prescription',
'user-role-list',
'user-access-list',
'report-katalog-dokter',

View File

@@ -113,6 +113,7 @@ const transaksiDataDefault = [
const [transaksiData, setTransaksiData] = useState(transaksiDataDefault);
const [transaksiDataBar, setTransaksiDataBar] = useState([]);
const [type, setType] = useState(0);
const [typeDokter, setTypeDokter] = useState(0);
const [status, setStatus] = useState(0);
const [statusDokter, setStatusDokter] = useState(0);
const [view, setView] = useState(["day", "month", "year"]);
@@ -173,7 +174,7 @@ const transaksiDataDefault = [
params: {
start_date: startDateDokter,
end_date: endDateDokter,
type,
typeDokter,
statusDokter,
nIDDokter: selectedDoctors
}
@@ -208,7 +209,7 @@ const transaksiDataDefault = [
// Fetch
useEffect(() => {
fetchListPerfomaDokter();
}, [selectedDoctors, startDateDokter, endDateDokter])
}, [selectedDoctors, startDateDokter, typeDokter, endDateDokter])
useEffect(() => {
fetchListDokter();
@@ -298,11 +299,11 @@ const transaksiDataDefault = [
<TableCell>
<Typography
sx={{
color: doctor.online === 1 ? green[500] : red[500],
color: doctor.online == 1 ? green[500] : red[500],
fontWeight: "bold",
}}
>
{doctor.online === 1 ? "🟢 Online" : "🔴 Offline"}
{doctor.online == 1 ? "🟢 Online" : "🔴 Offline"}
</Typography>
</TableCell>
</TableRow>
@@ -464,8 +465,8 @@ const transaksiDataDefault = [
<FormControl fullWidth>
<InputLabel>Tipe</InputLabel>
<Select
value={type}
onChange={(e) => setType(e.target.value)}
value={typeDokter}
onChange={(e) => setTypeDokter(e.target.value)}
>
<MenuItem value="0">Harian</MenuItem>
<MenuItem value="1">Mingguan</MenuItem>
@@ -482,7 +483,7 @@ const transaksiDataDefault = [
inputFormat="dd/MM/yyyy"
onChange={(value) => {
if (!value) return; // Hindari error jika value null atau undefined
if (type == 0) {
if (typeDokter == 0) {
setStartDateDokter(value);
} else {
setStartDateDokter(new Date(value.getFullYear(), value.getMonth(), 1));
@@ -501,7 +502,7 @@ const transaksiDataDefault = [
value={endDateDokter}
onChange={(value) => {
if (!value) return; // Hindari error jika value null atau undefined
if (type == 0) {
if (typeDokter == 0) {
setEndDateDokter(value);
} else {
setEndDateDokter(new Date(value.getFullYear(), value.getMonth(), 1));

View File

@@ -337,6 +337,8 @@ export default function List() {
<TableCell align="left">{row.date_consultation ? fDateTime(row.date_consultation) : '-'}</TableCell>
<TableCell align="left">{row.patient_name ?? '-'}</TableCell>
<TableCell align="left">{row.doctor_name ?? '-'}</TableCell>
<TableCell align="left">{row.apotek_name ?? '-'}</TableCell>
<TableCell align="left">{row.price_delivery ?? '-'}</TableCell>
<TableCell align="left">{row.status_prescription ?? '-'}</TableCell>
{/* <TableCell align="center">
<ButtonGroup variant="text" aria-label="text button group">
@@ -543,6 +545,12 @@ export default function List() {
<TableCell style={headStyle} align="left">
Doctor
</TableCell>
<TableCell style={headStyle} align="left">
Nama Apotek
</TableCell>
<TableCell style={headStyle} align="left">
Harga Ongkos Kirim
</TableCell>
<TableCell style={headStyle} align="left">
Status
</TableCell>