From 0c8feec075b597aed5c6dddb9cfe62240f99e537 Mon Sep 17 00:00:00 2001 From: ivan-sim Date: Mon, 7 Oct 2024 17:01:00 +0700 Subject: [PATCH 1/3] Update --- .../Api/UserManagementController.php | 12 +++++++++ Modules/Internal/Routes/api.php | 1 + app/Models/User.php | 1 + frontend/dashboard/src/@types/user.ts | 6 +++++ .../UserAccess/CreateUpdate.tsx | 14 +++++++++- .../pages/UserManagement/UserAccess/Form.tsx | 26 ++++++++++++++++--- 6 files changed, 55 insertions(+), 5 deletions(-) diff --git a/Modules/Internal/Http/Controllers/Api/UserManagementController.php b/Modules/Internal/Http/Controllers/Api/UserManagementController.php index e2448a3e..954c7b58 100755 --- a/Modules/Internal/Http/Controllers/Api/UserManagementController.php +++ b/Modules/Internal/Http/Controllers/Api/UserManagementController.php @@ -3,6 +3,7 @@ namespace Modules\Internal\Http\Controllers\Api; use App\Helpers\Helper; +use App\Models\Organization; use Illuminate\Contracts\Support\Renderable; use Illuminate\Http\Request; use Illuminate\Routing\Controller; @@ -110,11 +111,21 @@ class UserManagementController extends Controller return response()->json($data); } + public function list_organization(Request $request) + { + $query = Organization::where('type', 'hospital')->get(); + $data = [ + 'data' => $query + ]; + return response()->json($data); + } + public function store_access(Request $request){ $user = User::create([ 'email' => $request->email, 'username' => $request->username, 'role_id' => $request->roles, + 'organization_id' => $request->organizations, 'password' => Hash::make($request->password), ]); @@ -164,6 +175,7 @@ class UserManagementController extends Controller $userAccess->email = $request->email; $userAccess->username = $request->username; $userAccess->role_id = $request->roles; + $userAccess->organization_id = $request->organizations; if ($request->password){ $userAccess->password = Hash::make($request->password); diff --git a/Modules/Internal/Routes/api.php b/Modules/Internal/Routes/api.php index 71284233..a7c1b602 100755 --- a/Modules/Internal/Routes/api.php +++ b/Modules/Internal/Routes/api.php @@ -394,6 +394,7 @@ Route::prefix('internal')->group(function () { Route::get('user/access/{id}', [UserManagementController::class, 'edit_access']); Route::put('user/access/{id}', [UserManagementController::class, 'update_access']); Route::get('role-list', [UserManagementController::class, 'list_role']); + Route::get('organization-list', [UserManagementController::class, 'list_organization']); // Navigation Route::get('navigations', [NavigationController::class, 'index']); diff --git a/app/Models/User.php b/app/Models/User.php index f20a4617..176e0671 100755 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -25,6 +25,7 @@ class User extends Authenticatable protected $connection = 'mysql'; protected $fillable = [ + 'organization_id', 'person_id', 'name', 'email', diff --git a/frontend/dashboard/src/@types/user.ts b/frontend/dashboard/src/@types/user.ts index 1f1faa8b..583ab7b5 100755 --- a/frontend/dashboard/src/@types/user.ts +++ b/frontend/dashboard/src/@types/user.ts @@ -134,6 +134,11 @@ export type Role = { permissions: number[] }; +export type Organization = { + id: number; + name: string; + }; + export type Permisions = { name: string; guard_name: string; @@ -146,6 +151,7 @@ export type UserAccess = { email: string; person: Person; role: Role; + organization_id: Organization; } export type Person = { diff --git a/frontend/dashboard/src/pages/UserManagement/UserAccess/CreateUpdate.tsx b/frontend/dashboard/src/pages/UserManagement/UserAccess/CreateUpdate.tsx index 44498f35..00ca956b 100755 --- a/frontend/dashboard/src/pages/UserManagement/UserAccess/CreateUpdate.tsx +++ b/frontend/dashboard/src/pages/UserManagement/UserAccess/CreateUpdate.tsx @@ -6,6 +6,7 @@ import {useContext, useEffect, useMemo, useState } from 'react'; import axios from '../../../utils/axios'; import UserAccessForm from './Form'; import { Role, UserAccess } from '../../../@types/user'; +import Organizations from "@/pages/Master/Hospitals/Index"; @@ -13,6 +14,7 @@ export default function UserAccessCreate() { const { id } = useParams(); const [ currentUserAccess, setCurrentUserAccess ] = useState(); const [ roles, setRole ] = useState(); + const [ organizations, setOrganization ] = useState(); const navigate = useNavigate(); @@ -41,6 +43,16 @@ export default function UserAccessCreate() { } }) + axios.get('/organization-list') + .then((res)=> { + setOrganization(res.data) + }) + .catch((err) => { + if (err.response.status === 404) { + navigate('/404'); + } + }) + }, [id]); @@ -57,7 +69,7 @@ export default function UserAccessCreate() { ]} /> - + ); } diff --git a/frontend/dashboard/src/pages/UserManagement/UserAccess/Form.tsx b/frontend/dashboard/src/pages/UserManagement/UserAccess/Form.tsx index 015f3cc4..ea5d1162 100755 --- a/frontend/dashboard/src/pages/UserManagement/UserAccess/Form.tsx +++ b/frontend/dashboard/src/pages/UserManagement/UserAccess/Form.tsx @@ -1,7 +1,7 @@ import * as Yup from 'yup'; import { LoadingButton } from "@mui/lab"; import { Box, Card, Grid, Stack, Typography } from "@mui/material"; -import { Role, UserAccess } from "../../../@types/user"; +import { Role, UserAccess, Organization } from "../../../@types/user"; import { FormProvider, RHFSelect, RHFSwitch, RHFTextField } from "../../../components/hook-form"; import { useEffect, useMemo } from 'react'; import { useForm } from 'react-hook-form'; @@ -14,10 +14,11 @@ import palette from '@/theme/palette'; type Props = { isEdit: boolean; currentUserAccess?: UserAccess; - roles: Role + roles: Role; + organizations: Organization; }; -export default function AccsessForm({ isEdit, currentUserAccess, roles }: Props) { +export default function AccsessForm({ isEdit, currentUserAccess, roles, organizations }: Props) { const { enqueueSnackbar } = useSnackbar(); const navigate = useNavigate(); @@ -34,6 +35,7 @@ export default function AccsessForm({ isEdit, currentUserAccess, roles }: Props) username: currentUserAccess?.username || '', email: currentUserAccess?.email || '', roles: currentUserAccess?.role?.id || [], + organizations: currentUserAccess?.organization_id || [], password: '', }), [currentUserAccess] @@ -107,11 +109,20 @@ export default function AccsessForm({ isEdit, currentUserAccess, roles }: Props) value: item.id, label: item.name })) ?? []; - + if (optionsRoles.length > 0) { optionsRoles.unshift({ value: '', label: '' }); } + const optionsOrganization = organizations?.data?.map(item => ({ + value: item.id, + label: item.name + })) ?? []; + + if (optionsOrganization.length > 0) { + optionsOrganization.unshift({ value: '', label: '' }); + } + return ( @@ -131,6 +142,13 @@ export default function AccsessForm({ isEdit, currentUserAccess, roles }: Props) ))} + + {optionsOrganization.map((option, index) => ( + + ))} + From 9a4e9db7989777072bc364d985dbae025955b44f Mon Sep 17 00:00:00 2001 From: ivan-sim Date: Wed, 9 Oct 2024 10:31:33 +0700 Subject: [PATCH 2/3] Update --- .../Controllers/Api/OrganizationController.php | 6 +++++- .../Internal/Transformers/OrganizationResource.php | 6 ++++-- frontend/dashboard/src/@types/organization.tsx | 2 ++ .../dashboard/src/pages/Master/Hospitals/Form.tsx | 14 +++++++++++++- .../dashboard/src/pages/Master/Hospitals/List.tsx | 14 +++++++++++++- 5 files changed, 37 insertions(+), 5 deletions(-) diff --git a/Modules/Internal/Http/Controllers/Api/OrganizationController.php b/Modules/Internal/Http/Controllers/Api/OrganizationController.php index cd4b33d7..7c2cbbd1 100755 --- a/Modules/Internal/Http/Controllers/Api/OrganizationController.php +++ b/Modules/Internal/Http/Controllers/Api/OrganizationController.php @@ -48,6 +48,8 @@ class OrganizationController extends Controller public function store(Request $request) { $organization = [ + 'phone' => $request->no_hp, + 'email' => $request->email, 'code' => $request->code, 'name' => $request->name, 'type' => 'hospital', @@ -119,6 +121,8 @@ class OrganizationController extends Controller $update_organization = Organization::find($id); $update_organization->update([ + 'phone' => $request->no_hp, + 'email' => $request->email, 'code' => $request->code, 'name' => $request->name, 'type' => 'hospital', @@ -152,7 +156,7 @@ class OrganizationController extends Controller 'lat' => $request->lat, 'lng' => $request->lng, ]); - + $update_organization->main_address_id = $newAddres->id; $update_organization->save(); diff --git a/Modules/Internal/Transformers/OrganizationResource.php b/Modules/Internal/Transformers/OrganizationResource.php index 72448ee3..6dbdb426 100755 --- a/Modules/Internal/Transformers/OrganizationResource.php +++ b/Modules/Internal/Transformers/OrganizationResource.php @@ -27,12 +27,14 @@ class OrganizationResource extends JsonResource } $corporatePartner = implode(', ', $corporateName); } - - } + + } $organization = [ 'id' => $this->id, 'name' => $this->name, 'type' => $this->type, + 'no_hp' => $this->phone, + 'email' => $this->email, 'code' => $this->code, 'description' => $this->description, 'kodeRs' => $this->meta->KodeRS ?? null, diff --git a/frontend/dashboard/src/@types/organization.tsx b/frontend/dashboard/src/@types/organization.tsx index 1af7adcd..39b31e3c 100755 --- a/frontend/dashboard/src/@types/organization.tsx +++ b/frontend/dashboard/src/@types/organization.tsx @@ -1,6 +1,8 @@ export type Organizations = { id: number; code: string; + no_hp: number; + email: string; name: string; address: string; type: string; diff --git a/frontend/dashboard/src/pages/Master/Hospitals/Form.tsx b/frontend/dashboard/src/pages/Master/Hospitals/Form.tsx index 81084fa0..145afc23 100755 --- a/frontend/dashboard/src/pages/Master/Hospitals/Form.tsx +++ b/frontend/dashboard/src/pages/Master/Hospitals/Form.tsx @@ -116,6 +116,8 @@ export default function OrganizationsForm({ isEdit, currentOrganizations }: Prop name: currentOrganizations?.name || '', code: currentOrganizations?.code || '', phone: currentOrganizations?.phone || '', + no_hp: currentOrganizations?.no_hp || '', + email: currentOrganizations?.email || '', lat: currentOrganizations?.lat || '', lng: currentOrganizations?.lng || '', address: currentOrganizations?.address || '', @@ -185,6 +187,8 @@ export default function OrganizationsForm({ isEdit, currentOrganizations }: Prop formData.append('name', data.name); formData.append('code', data.code); formData.append('phone', data.phone); + formData.append('no_hp', data.no_hp); + formData.append('email', data.email); formData.append('lat', data.lat); formData.append('lng', data.lng); formData.append('address', data.address); @@ -361,7 +365,7 @@ export default function OrganizationsForm({ isEdit, currentOrganizations }: Prop const findValueCorporate = selectedCorporatID.find( (item: any) => item.value === currentOrganizations?.corporate_id_partner ); - + return ( @@ -391,6 +395,14 @@ export default function OrganizationsForm({ isEdit, currentOrganizations }: Prop Nomor IGD + + No. HP + + + + Email + + Alamat diff --git a/frontend/dashboard/src/pages/Master/Hospitals/List.tsx b/frontend/dashboard/src/pages/Master/Hospitals/List.tsx index 1ceffab9..96b49d12 100755 --- a/frontend/dashboard/src/pages/Master/Hospitals/List.tsx +++ b/frontend/dashboard/src/pages/Master/Hospitals/List.tsx @@ -301,9 +301,21 @@ export default function List() { : {row.code ? row.code : '-'} + + No. HP + + + : {row.no_hp ? row.no_hp : '-'} + + + Email + + + : {row.email ? row.email : '-'} + - Rekanan + Rekanan : {row.corporate_name ? row.corporate_name : '-'} From 0233058e669be1c26b713536b339d03285739d01 Mon Sep 17 00:00:00 2001 From: ivan-sim Date: Wed, 9 Oct 2024 11:05:55 +0700 Subject: [PATCH 3/3] Update --- Modules/HospitalPortal/Http/Controllers/ApotekController.php | 1 + frontend/hospital-portal/src/components/Table.tsx | 4 ++-- frontend/hospital-portal/src/lang/en-US.json | 3 ++- frontend/hospital-portal/src/lang/id-ID.json | 3 ++- .../src/sections/dashboardApotek/TableList.tsx | 5 +++++ 5 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Modules/HospitalPortal/Http/Controllers/ApotekController.php b/Modules/HospitalPortal/Http/Controllers/ApotekController.php index 33bf41ac..d8a7ff71 100644 --- a/Modules/HospitalPortal/Http/Controllers/ApotekController.php +++ b/Modules/HospitalPortal/Http/Controllers/ApotekController.php @@ -70,6 +70,7 @@ class ApotekController extends Controller WHEN tx_prescription_orders.sStatus = "waiting_pharmacy" THEN "Diterima" WHEN tx_prescription_orders.sStatus = "order_prepared" THEN "Siap Diambil" WHEN tx_prescription_orders.sStatus = "ready" THEN "Cari Kurir" + WHEN tx_prescription_orders.sStatus = "failed" THEN "Cari Kurir" WHEN tx_prescription_orders.sStatus = "waiting_for_courir" THEN "Kurir Sudah Ambil Pesanan" WHEN tx_prescription_orders.sStatus = "package_picked_up" THEN "Sedang diantar ke Alamat Tujuan" WHEN tx_prescription_orders.sStatus = "package_on_delivery" THEN "Selesai" diff --git a/frontend/hospital-portal/src/components/Table.tsx b/frontend/hospital-portal/src/components/Table.tsx index fa7877bc..99aa7d91 100755 --- a/frontend/hospital-portal/src/components/Table.tsx +++ b/frontend/hospital-portal/src/components/Table.tsx @@ -230,7 +230,7 @@ export default function Table({ const formattedRoleName = user?.role.name; // List of statuses for 'apotek' const allowedStatusesForApotek = ['waiting_pharmacy', 'order_prepared']; -const allowedStatusesForCSLMS = ['waiting_pharmacy', 'order_prepared', 'ready', 'waiting_for_courir', 'package_picked_up', 'package_on_delivery']; +const allowedStatusesForCSLMS = ['waiting_pharmacy', 'order_prepared', 'ready', 'waiting_for_courir', 'package_picked_up', 'package_on_delivery', 'failed']; const [open, setOpen] = useState(false); const [loading, setLoading] = useState(true); @@ -269,7 +269,7 @@ const allowedStatusesForCSLMS = ['waiting_pharmacy', 'order_prepared', 'ready', const handleClickKonfirmasi = (row: any) => { setTxtStatusDriver(''); setTxtIDDriver(''); - if(row.sStatus === 'ready') + if(row.sStatus === 'ready' || row.sStatus === 'failed') { //close setDialogIDRow(row.id === dialogIDRow ? null : row.id); diff --git a/frontend/hospital-portal/src/lang/en-US.json b/frontend/hospital-portal/src/lang/en-US.json index f0cc26c8..9a51911d 100755 --- a/frontend/hospital-portal/src/lang/en-US.json +++ b/frontend/hospital-portal/src/lang/en-US.json @@ -133,6 +133,7 @@ "txtOK": "Yes", "txtFindingDriver": "Finding a driver...", "txtDriverFound": "The driver’s been grabbed with the ID", - "txtButtonClose": "Close" + "txtButtonClose": "Close", + "txtLabelFailed": "Failed" } diff --git a/frontend/hospital-portal/src/lang/id-ID.json b/frontend/hospital-portal/src/lang/id-ID.json index 11264a04..d830cd4a 100755 --- a/frontend/hospital-portal/src/lang/id-ID.json +++ b/frontend/hospital-portal/src/lang/id-ID.json @@ -133,5 +133,6 @@ "txtOK": "Ya", "txtFindingDriver" : "Sedang mencari driver...", "txtDriverFound" : "Driver sudah didapat dengan ID", - "txtButtonClose": "Tutup" + "txtButtonClose": "Tutup", + "txtLabelFailed": "Gagal Pengiriman" } diff --git a/frontend/hospital-portal/src/sections/dashboardApotek/TableList.tsx b/frontend/hospital-portal/src/sections/dashboardApotek/TableList.tsx index 3b061ec7..87027d83 100644 --- a/frontend/hospital-portal/src/sections/dashboardApotek/TableList.tsx +++ b/frontend/hospital-portal/src/sections/dashboardApotek/TableList.tsx @@ -353,6 +353,10 @@ export default function TableList() { + ): obj.status === 'failed' ? ( + ) : (