diff --git a/Modules/Internal/Http/Controllers/Api/AuthController.php b/Modules/Internal/Http/Controllers/Api/AuthController.php index db546e10..2b1c4d93 100644 --- a/Modules/Internal/Http/Controllers/Api/AuthController.php +++ b/Modules/Internal/Http/Controllers/Api/AuthController.php @@ -12,19 +12,25 @@ use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Mail; use Modules\Internal\Emails\SendVerifyEmail; use Modules\Internal\Events\ForgetPassword; +use App\Helpers\Helper; +use Validator; class AuthController extends Controller { public function login(Request $request) { $request->validate([ - 'email' => 'required|email', + 'email' => 'required', 'password' => 'required' ]); $user = User::query() - ->where('email', $request->email) - ->first(); + ->where(function ($query) use ($request) { + $query->where('email', $request->email) + ->orWhere('username', $request->email); + }) + ->first(); + if (!$user) { return response(['message' => 'User Tidak Ditemukan'], 404); @@ -91,7 +97,7 @@ class AuthController extends Controller Event(new ForgetPassword($user)); - // Mail::to($user->email)->send(new SendVerifyEmail($user)); + Mail::to($user->email)->send(new SendVerifyEmail($user)); return response()->json($user); } @@ -125,4 +131,36 @@ class AuthController extends Controller ]); return response()->json($user); } + + public function register(Request $request) + { + $validator = Validator::make($request->all(), [ + 'email' => 'required|email|unique:users,email', + 'username' => 'required|unique:users,username', + 'password' => [ + 'required', + 'min:5', + // 'regex:/.*[0-9].*/', + // 'regex:/.*[a-z].*/', + // 'regex:/.*[A-Z].*/', + ] + ], [ + // 'password.regex' => "Password harus minimal 8 karakter, kombinasi huruf besar kecil dan angka" + ])->validate(); + + try { + $user = User::create([ + 'email' => $request->email, + 'username' => $request->username, + 'password' => Hash::make($request->password), + ]); + + return response()->json($user); + } catch (\Exception $e) { + return response()->json([ + 'message' => 'Terjadi masalah ketika mendaftar' + ]); + } + } + } diff --git a/Modules/Internal/Http/Controllers/Api/DailyMonitoringController.php b/Modules/Internal/Http/Controllers/Api/DailyMonitoringController.php index d5da9d0f..dbb941ee 100644 --- a/Modules/Internal/Http/Controllers/Api/DailyMonitoringController.php +++ b/Modules/Internal/Http/Controllers/Api/DailyMonitoringController.php @@ -260,6 +260,7 @@ class DailyMonitoringController extends Controller 'lab_date' => $request->lab_date, 'provider' => $request->provider, 'examination' => $request->examination, + 'created_by' => auth()->user()->id, ]); @@ -387,7 +388,11 @@ class DailyMonitoringController extends Controller // get claim request $request_log = DB::table('request_logs') ->where('code', $request_code) - ->update(['discharge_date' => now()]); + ->update([ + 'discharge_date' => now(), + 'updated_by' => auth()->user()->id, + 'updated_at' => now() + ]); if ($request_log) { return response()->json([ 'error' => false, diff --git a/Modules/Internal/Http/Controllers/Api/RequestLogBenefitController.php b/Modules/Internal/Http/Controllers/Api/RequestLogBenefitController.php index 97788e6f..928c690b 100644 --- a/Modules/Internal/Http/Controllers/Api/RequestLogBenefitController.php +++ b/Modules/Internal/Http/Controllers/Api/RequestLogBenefitController.php @@ -8,6 +8,7 @@ use Illuminate\Http\Request; use Illuminate\Routing\Controller; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\DB; +use Carbon\Carbon; class RequestLogBenefitController extends Controller @@ -72,6 +73,7 @@ class RequestLogBenefitController extends Controller 'amount_not_approved' => $value['amount_not_approved'], 'excess_paid' => $value['excess_paid'], 'keterangan' => $value['keterangan'], + 'created_by' => auth()->user()->id, ]; // Insert Data @@ -117,6 +119,8 @@ class RequestLogBenefitController extends Controller $requestLogBenefit->amount_not_approved = $request->amount_not_approved; $requestLogBenefit->excess_paid = $request->excess_paid; $requestLogBenefit->keterangan = $request->keterangan; + $requestLogBenefit->updated_by = auth()->user()->id; + $requestLogBenefit->updated_at = Carbon::now(); $requestLogBenefit->save(); diff --git a/Modules/Internal/Http/Controllers/Api/RequestLogController.php b/Modules/Internal/Http/Controllers/Api/RequestLogController.php index ba8e088f..1dcc8e55 100644 --- a/Modules/Internal/Http/Controllers/Api/RequestLogController.php +++ b/Modules/Internal/Http/Controllers/Api/RequestLogController.php @@ -16,6 +16,7 @@ use Illuminate\Support\Facades\Storage; use App\Services\RequestLogService; use App\Exceptions\ImportRowException; use App\Events\RequestLoged; +use Carbon\Carbon; use Maatwebsite\Excel\Facades\Excel; use Box\Spout\Reader\Common\Creator\ReaderEntityFactory; @@ -198,6 +199,8 @@ class RequestLogController extends Controller { $requestLog = RequestLog::findOrFail($id); $requestLog->status = $request->status; + $requestLog->approved_by = auth()->user()->id; + $requestLog->approved_at = Carbon::now(); $requestLog->save(); return response()->json([ @@ -312,6 +315,8 @@ class RequestLogController extends Controller // Update Request LOG untuk lanjut ke Final LOG $requestLog->final_log = 1; $requestLog->status_final_log = $status; + $requestLog->approved_final_log_by = auth()->user()->id; + $requestLog->approved_final_log_at = Carbon::now(); $requestLog->save(); diff --git a/Modules/Internal/Http/Controllers/Api/UserManagementController.php b/Modules/Internal/Http/Controllers/Api/UserManagementController.php new file mode 100644 index 00000000..1486b251 --- /dev/null +++ b/Modules/Internal/Http/Controllers/Api/UserManagementController.php @@ -0,0 +1,17 @@ +group(function () { Route::post('login', [AuthController::class, 'login'])->name('login'); + Route::post('register', [AuthController::class, 'register'])->name('register'); Route::post('forget-password', [AuthController::class, 'forgetPassword'])->name('forget-password'); Route::post('verify-email', [AuthController::class, 'verifyEmail'])->name('verify-email'); diff --git a/app/Models/RequestDailyMonitoring.php b/app/Models/RequestDailyMonitoring.php index 6eb1aa77..64999411 100644 --- a/app/Models/RequestDailyMonitoring.php +++ b/app/Models/RequestDailyMonitoring.php @@ -23,6 +23,9 @@ class RequestDailyMonitoring extends Model 'lab_date', 'provider', 'examination', + 'created_by', + 'updated_by', + 'deleted_by', ]; protected $appends = ['medical_plan', 'non_medikamentosa_plan', 'document', 'discharge_date']; diff --git a/app/Models/RequestLog.php b/app/Models/RequestLog.php index 8f93fd52..9204e8f4 100644 --- a/app/Models/RequestLog.php +++ b/app/Models/RequestLog.php @@ -30,7 +30,11 @@ class RequestLog extends Model 'source', 'claim_id', 'organization_id', - 'code' + 'code', + 'approved_by', + 'approved_at', + 'approved_final_log_by', + 'approved_final_log_at', ]; protected $hidden = [ diff --git a/app/Models/RequestLogBenefit.php b/app/Models/RequestLogBenefit.php index 331227f1..1b42c6d2 100644 --- a/app/Models/RequestLogBenefit.php +++ b/app/Models/RequestLogBenefit.php @@ -19,6 +19,9 @@ class RequestLogBenefit extends Model 'amount_not_approved', 'excess_paid', 'keterangan', + 'created_by', + 'updated_by', + 'deleted_by', ]; public function benefit(){ diff --git a/app/Models/RequestLogMedicine.php b/app/Models/RequestLogMedicine.php index 2cd1cec8..d571a97c 100644 --- a/app/Models/RequestLogMedicine.php +++ b/app/Models/RequestLogMedicine.php @@ -13,6 +13,9 @@ class RequestLogMedicine extends Model 'request_log_id', 'medicine', 'price', + 'created_by', + 'updated_by', + 'deleted_by', ]; protected $hidden = [ diff --git a/app/Models/User.php b/app/Models/User.php index 22b1bee4..64263dd5 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -24,6 +24,7 @@ class User extends Authenticatable 'person_id', 'name', 'email', + 'username', 'password', 'phone', 'otp', diff --git a/database/migrations/2024_01_02_154340_add_role_id_to_users_table.php b/database/migrations/2024_01_02_154340_add_role_id_to_users_table.php new file mode 100644 index 00000000..d9155129 --- /dev/null +++ b/database/migrations/2024_01_02_154340_add_role_id_to_users_table.php @@ -0,0 +1,32 @@ +foreignId('role_id')->after('person_id'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('role_id'); + }); + } +}; diff --git a/database/migrations/2024_01_02_155831_create_fiture_has_permissions.php b/database/migrations/2024_01_02_155831_create_fiture_has_permissions.php new file mode 100644 index 00000000..df4df9cd --- /dev/null +++ b/database/migrations/2024_01_02_155831_create_fiture_has_permissions.php @@ -0,0 +1,35 @@ +id(); + $table->string('fitur_name'); + $table->timestamps(); + $table->unsignedBigInteger('created_by')->nullable()->index(); + $table->unsignedBigInteger('updated_by')->nullable()->index(); + $table->unsignedBigInteger('deleted_by')->nullable()->index(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('fiture_has_permissions'); + } +}; diff --git a/database/migrations/2024_01_02_160639_add_recode_action.php b/database/migrations/2024_01_02_160639_add_recode_action.php new file mode 100644 index 00000000..970839de --- /dev/null +++ b/database/migrations/2024_01_02_160639_add_recode_action.php @@ -0,0 +1,100 @@ +unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + + $table->foreign('created_by')->references('id')->on('users')->onDelete('set null'); + $table->foreign('updated_by')->references('id')->on('users')->onDelete('set null'); + $table->foreign('deleted_by')->references('id')->on('users')->onDelete('set null'); + + }); + + Schema::table('request_log_daily_monitorings', function (Blueprint $table) { + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + + $table->foreign('created_by')->references('id')->on('users')->onDelete('set null'); + $table->foreign('updated_by')->references('id')->on('users')->onDelete('set null'); + $table->foreign('deleted_by')->references('id')->on('users')->onDelete('set null'); + + }); + + Schema::table('request_log_medical_plan', function (Blueprint $table) { + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + + $table->foreign('created_by')->references('id')->on('users')->onDelete('set null'); + $table->foreign('updated_by')->references('id')->on('users')->onDelete('set null'); + $table->foreign('deleted_by')->references('id')->on('users')->onDelete('set null'); + + }); + + Schema::table('request_log_medicines', function (Blueprint $table) { + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + + $table->foreign('created_by')->references('id')->on('users')->onDelete('set null'); + $table->foreign('updated_by')->references('id')->on('users')->onDelete('set null'); + $table->foreign('deleted_by')->references('id')->on('users')->onDelete('set null'); + + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('request_log_benefits', function (Blueprint $table) { + $table->dropForeign(['created_by']); + $table->dropForeign(['updated_by']); + $table->dropForeign(['deleted_by']); + + $table->dropColumn(['created_by', 'updated_by', 'deleted_by']); + }); + + Schema::table('request_log_daily_monitorings', function (Blueprint $table) { + $table->dropForeign(['created_by']); + $table->dropForeign(['updated_by']); + $table->dropForeign(['deleted_by']); + + $table->dropColumn(['created_by', 'updated_by', 'deleted_by']); + }); + + Schema::table('request_log_medical_plan', function (Blueprint $table) { + $table->dropForeign(['created_by']); + $table->dropForeign(['updated_by']); + $table->dropForeign(['deleted_by']); + + $table->dropColumn(['created_by', 'updated_by', 'deleted_by']); + }); + + Schema::table('request_log_medicines', function (Blueprint $table) { + $table->dropForeign(['created_by']); + $table->dropForeign(['updated_by']); + $table->dropForeign(['deleted_by']); + + $table->dropColumn(['created_by', 'updated_by', 'deleted_by']); + }); + } +}; diff --git a/database/migrations/2024_01_05_091735_add_column_user_id_to_users_table.php b/database/migrations/2024_01_05_091735_add_column_user_id_to_users_table.php new file mode 100644 index 00000000..8bb92664 --- /dev/null +++ b/database/migrations/2024_01_05_091735_add_column_user_id_to_users_table.php @@ -0,0 +1,32 @@ +string('username')->after('email')->default(null); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('username'); + }); + } +}; diff --git a/database/migrations/2024_01_05_095007_add_column_approved_by_to_request_logs_table.php b/database/migrations/2024_01_05_095007_add_column_approved_by_to_request_logs_table.php new file mode 100644 index 00000000..c0851d54 --- /dev/null +++ b/database/migrations/2024_01_05_095007_add_column_approved_by_to_request_logs_table.php @@ -0,0 +1,36 @@ +integer('approved_by')->nullable()->after('created_by'); + $table->dateTime('approved_at')->nullable()->after('approved_by'); + $table->integer('approved_final_log_by')->nullable()->after('approved_at'); + $table->dateTime('approved_final_log_at')->nullable()->after('approved_final_log_by'); + + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('request_logs', function (Blueprint $table) { + $table->dropColumn(['approved_by', 'invoice_date', 'approved_final_log_by', 'approved_final_log_at']); + }); + } +}; diff --git a/frontend/dashboard/src/contexts/LaravelAuthContext.tsx b/frontend/dashboard/src/contexts/LaravelAuthContext.tsx index ae1b19e1..4abe6322 100644 --- a/frontend/dashboard/src/contexts/LaravelAuthContext.tsx +++ b/frontend/dashboard/src/contexts/LaravelAuthContext.tsx @@ -81,17 +81,19 @@ type AuthProviderProps = { function AuthProvider({ children }: AuthProviderProps) { const [state, dispatch] = useReducer(JWTReducer, initialState); let location = useLocation(); + const accessToken = getSession(); useEffect(() => { - const initialize = async () => { + (async () => { try { - const accessToken = getSession(); + // const accessToken = getSession(); + if (accessToken) { setSession(accessToken); const response = await axios.get('/user'); const user = response.data; - + dispatch({ type: Types.Initial, payload: { @@ -117,11 +119,10 @@ function AuthProvider({ children }: AuthProviderProps) { }, }); } - }; - - initialize(); - }, []); + })(); + }, [accessToken]); + const login = async (email: string, password: string) => axios .post('/login', { email, password }) .then((response) => { diff --git a/frontend/dashboard/src/layouts/dashboard/header/AccountPopover.tsx b/frontend/dashboard/src/layouts/dashboard/header/AccountPopover.tsx index 519a9c3d..df027caa 100644 --- a/frontend/dashboard/src/layouts/dashboard/header/AccountPopover.tsx +++ b/frontend/dashboard/src/layouts/dashboard/header/AccountPopover.tsx @@ -30,8 +30,9 @@ const MENU_OPTIONS = [ export default function AccountPopover() { const [open, setOpen] = useState(null); const navigate = useNavigate(); - const { logout } = useAuth(); + const { logout, user } = useAuth(); + console.log(user?.email) const handleOpen = (event: React.MouseEvent) => { setOpen(event.currentTarget); }; @@ -65,7 +66,7 @@ export default function AccountPopover() { }} > @@ -86,10 +87,10 @@ export default function AccountPopover() { > - Rayan Moran + {user?.full_name ? user?.full_name : ''} - rayan.moran@gmail.com + {user?.email} diff --git a/frontend/dashboard/src/layouts/dashboard/header/index.tsx b/frontend/dashboard/src/layouts/dashboard/header/index.tsx index f39781e7..b924ae48 100644 --- a/frontend/dashboard/src/layouts/dashboard/header/index.tsx +++ b/frontend/dashboard/src/layouts/dashboard/header/index.tsx @@ -92,9 +92,9 @@ export default function DashboardHeader({ - + {/* - + */} diff --git a/frontend/dashboard/src/layouts/dashboard/navbar/NavConfig.tsx b/frontend/dashboard/src/layouts/dashboard/navbar/NavConfig.tsx index 0827cd38..687e7a3a 100644 --- a/frontend/dashboard/src/layouts/dashboard/navbar/NavConfig.tsx +++ b/frontend/dashboard/src/layouts/dashboard/navbar/NavConfig.tsx @@ -108,7 +108,10 @@ const navConfig = [ }, { title: 'USER MANAGEMENT', - path: '/users', + children: [ + { title: 'User Access', path: '/master/diagnosis' }, + { title: 'User Role', path: '/master/diagnosis' }, + ], }, { title: 'LINKING TOOLS', diff --git a/frontend/dashboard/src/layouts/dashboard/navbar/NavbarAccount.tsx b/frontend/dashboard/src/layouts/dashboard/navbar/NavbarAccount.tsx index 8e72ad90..d5b2fbe8 100644 --- a/frontend/dashboard/src/layouts/dashboard/navbar/NavbarAccount.tsx +++ b/frontend/dashboard/src/layouts/dashboard/navbar/NavbarAccount.tsx @@ -1,6 +1,7 @@ // @mui import { styled } from '@mui/material/styles'; import { Box, Link, Typography, Avatar } from '@mui/material'; +import useAuth from '../../../hooks/useAuth'; // ---------------------------------------------------------------------- @@ -22,6 +23,8 @@ type Props = { }; export default function NavbarAccount({ isCollapse }: Props) { + +const { logout, user } = useAuth(); return ( @@ -50,10 +53,10 @@ export default function NavbarAccount({ isCollapse }: Props) { }} > - Rayan Moran + - user + Hi {user?.full_name} diff --git a/frontend/dashboard/src/pages/CustomerService/Components/CardBenefit.tsx b/frontend/dashboard/src/pages/CustomerService/Components/CardBenefit.tsx index 65addbfe..a4654bb8 100644 --- a/frontend/dashboard/src/pages/CustomerService/Components/CardBenefit.tsx +++ b/frontend/dashboard/src/pages/CustomerService/Components/CardBenefit.tsx @@ -16,7 +16,7 @@ import { fNumber } from "@/utils/formatNumber"; import palette from "@/theme/palette"; import DialogBenefit from "../FinalLog/Components/DialogBenefit"; import DialogEditBenefit from "../FinalLog/Components/DialogEditBenefit"; -import DialogDelete from "../FinalLog/Components/DialogDelete"; +import DialogDeleteBenefit from "../FinalLog/Components/DialogDeleteBenefit"; @@ -202,7 +202,7 @@ export default function CardBenefit({requestLog} : CardDetail ) { {/* Dialog Delete */} - - Files History + Files {requestLog?.files?.map((documentType, index) => ( diff --git a/frontend/dashboard/src/pages/CustomerService/FinalLog/Components/DialogDelete.tsx b/frontend/dashboard/src/pages/CustomerService/FinalLog/Components/DialogDeleteBenefit.tsx similarity index 55% rename from frontend/dashboard/src/pages/CustomerService/FinalLog/Components/DialogDelete.tsx rename to frontend/dashboard/src/pages/CustomerService/FinalLog/Components/DialogDeleteBenefit.tsx index 59669585..1705cdb3 100644 --- a/frontend/dashboard/src/pages/CustomerService/FinalLog/Components/DialogDelete.tsx +++ b/frontend/dashboard/src/pages/CustomerService/FinalLog/Components/DialogDeleteBenefit.tsx @@ -17,7 +17,7 @@ type DialogDeleteType = { id: number|undefined; } -export default function DialogDelete({id, setOpenDialog, openDialog,onSubmit} : DialogDeleteType ) { +export default function DialogDeleteBenefit({id, setOpenDialog, openDialog,onSubmit} : DialogDeleteType ) { const handleSubmit = () => { axios .delete(`customer-service/request/benefit_data/${id}`) @@ -67,54 +67,3 @@ export default function DialogDelete({id, setOpenDialog, openDialog,onSubmit} : /> ); } - -export function DialogDeleteMedicine({id, setOpenDialog, openDialog,onSubmit} : DialogDeleteType ) { - const handleSubmit = () => { - axios - .delete(`customer-service/request/medicine-data/${id}`) - .then((response) => { - enqueueSnackbar('Benefit Data has Deleted', { variant: 'success' }); - setOpenDialog(false); - window.location.reload() - }) - .catch(({ response }) => { - enqueueSnackbar(response.data.message ?? 'Something went wrong!', { variant: 'error' }); - }); - } - - const style1 = { - color: '#919EAB', - width: '30%' - } - const style2 = { - width: '70%' - } - const marginBottom1 = { - marginBottom: 1, - } - - const handleCloseDialog = () => { - setOpenDialog(false); - } - - const getContent = () => ( - - Are you sure to delete this detail medicine ? - - - - - - ); - - - return ( - - ); -} \ No newline at end of file diff --git a/frontend/dashboard/src/pages/CustomerService/FinalLog/Components/DialogDeleteMedicine.tsx b/frontend/dashboard/src/pages/CustomerService/FinalLog/Components/DialogDeleteMedicine.tsx index bd98ba42..c8c04e92 100644 --- a/frontend/dashboard/src/pages/CustomerService/FinalLog/Components/DialogDeleteMedicine.tsx +++ b/frontend/dashboard/src/pages/CustomerService/FinalLog/Components/DialogDeleteMedicine.tsx @@ -22,7 +22,7 @@ export default function DialogDeleteMedicine({id, setOpenDialog, openDialog,onSu axios .delete(`customer-service/request/medicine-data/${id}`) .then((response) => { - enqueueSnackbar('Benefit Data has Deleted', { variant: 'success' }); + enqueueSnackbar('Medicine Data has Deleted', { variant: 'success' }); setOpenDialog(false); window.location.reload() }) diff --git a/frontend/dashboard/src/pages/CustomerService/FinalLog/Detail.tsx b/frontend/dashboard/src/pages/CustomerService/FinalLog/Detail.tsx index 480fd05a..080a8885 100644 --- a/frontend/dashboard/src/pages/CustomerService/FinalLog/Detail.tsx +++ b/frontend/dashboard/src/pages/CustomerService/FinalLog/Detail.tsx @@ -44,9 +44,9 @@ import CardBenefit from '../Components/CardBenefit'; import DialogHospitalCare from './Components/DialogHospitalCare'; import DialogBenefit from './Components/DialogBenefit'; import DialogMedicine from './Components/DialogMedicine'; -import DialogDelete from './Components/DialogDelete'; +import DialogDeleteBenfit from './Components/DialogDeleteBenefit'; import DialogEditBenefit from './Components/DialogEditBenefit'; -import { DialogDeleteMedicine } from './Components/DialogDelete'; +import DialogDeleteMedicine from './Components/DialogDeleteMedicine' import MoreMenu from '@/components/MoreMenu'; import { MenuItem } from '@mui/material'; @@ -102,6 +102,9 @@ export default function Detail() { // Handel Delete Detail Benefit const [idBenefitData, setIdBenefitData] = useState(); const [openDialogDeleteBenefit, setDialogDeleteBenefit] = useState(false) + + const [idMedicineData, setIdMedicineData] = useState(); + const [openDialogDeleteMedicine, setDialogDeleteMedicine] = useState(false) const [approve, setApprove] = useState('') @@ -327,7 +330,7 @@ export default function Detail() { {/* Dialog Delete */} - {item.medicine} Rp. {fNumber(item.price)} { - setIdBenefitData(item.id) - setDialogDeleteBenefit(true) + setIdMedicineData(item.id) + setDialogDeleteMedicine(true) }}> @@ -371,10 +374,10 @@ export default function Detail() { openDialog={openDialogMedicine} setOpenDialog={setDialogMedicine} /> - diff --git a/frontend/dashboard/src/sections/auth/login/LoginForm.tsx b/frontend/dashboard/src/sections/auth/login/LoginForm.tsx index 929d871d..19e320b5 100644 --- a/frontend/dashboard/src/sections/auth/login/LoginForm.tsx +++ b/frontend/dashboard/src/sections/auth/login/LoginForm.tsx @@ -34,19 +34,19 @@ export default function LoginForm() { const [showPassword, setShowPassword] = useState(false); const LoginSchema = Yup.object().shape({ - email: Yup.string().email('Email must be a valid email address').required('Email is required'), + email: Yup.string().required('Email is required'), password: Yup.string().required('Password is required'), }); const defaultValues = { - email: 'admin@linksehat.dev', - password: 'password', + email: '', + password: '', remember: true, }; const methods = useForm({ resolver: yupResolver(LoginSchema), - defaultValues, + // defaultValues, }); const { @@ -75,10 +75,10 @@ export default function LoginForm() { return ( - Email : admin@linksehat.dev & Password : password + Masukan Email atau Username dan Password {!!errors.afterSubmit && {errors.afterSubmit.message}} - + + + + + + {{-- --}} + + + + +



+ @if($member->currentCorporate->files && count($member->currentCorporate->files) > 0) +
+ {{ asset($member->currentCorporate->files[0]->path)}} + +
+ @endif + +
+
+ Member Name +

{{ $member->fullName }}

+ + Member ID +

{{ $member->member_id }}

+ + Policy Holder +

{{ $member->currentCorporate->name }}

+ + Policy Number +

{{ $member->currentPolicy->code }}

+ + Date of Birth +

{{ $member->birthDateeCard }}

+ + Gender +

{{ $member->gender }}

+ + Start Date +

{{ $member->startDate }}

+ +
+ +
+ + + + + + 08114123962 + + + Valid until: {{ $member->endDate }} +
+ +
+ + + + \ No newline at end of file diff --git a/resources/views/pdf/ecard.blade.php b/resources/views/pdf/ecard.blade.php index 99c30f7e..a36bd23a 100644 --- a/resources/views/pdf/ecard.blade.php +++ b/resources/views/pdf/ecard.blade.php @@ -24,7 +24,7 @@ font-size: 20px; margin: 0; /* Reset default margin */ padding: 0; /* Reset default padding */ - background-image: url("{{ public_path('images/background-vale.png') }}"); + background-image: url("{{public_path('images/background-vale.png')}}"); background-repeat: no-repeat; background-size: cover; /* Adjust as needed */ } @@ -80,7 +80,7 @@



- Member Name + Member Name

{{ $member->fullName }}

Member ID