diff --git a/app/src/main/java/com/example/pbd_jwr/MainActivity.kt b/app/src/main/java/com/example/pbd_jwr/MainActivity.kt
index d0ad4d36eb8d764583a7af604ddd4c4a52841d57..c588d3aea47dcd018c1b33bf5aeb11197105f99e 100644
--- a/app/src/main/java/com/example/pbd_jwr/MainActivity.kt
+++ b/app/src/main/java/com/example/pbd_jwr/MainActivity.kt
@@ -63,7 +63,7 @@ class MainActivity : AppCompatActivity() {
         // menu should be considered as top level destinations.
         val appBarConfiguration = AppBarConfiguration(
             setOf(
-                R.id.navigation_transaction, R.id.navigation_dashboard, R.id.navigation_settings, R.id.navigation_transaction_add, R.id.navigation_transaction_detail, R.id.navigation_twibbon, R.id.navigation_scan
+                R.id.navigation_transaction, R.id.navigation_dashboard, R.id.navigation_settings, R.id.navigation_transaction_add, R.id.navigation_transaction_detail, R.id.navigation_twibbon, R.id.navigation_scan, R.id.navigation_nonetwork
             )
         )
         setupActionBarWithNavController(navController, appBarConfiguration)
diff --git a/app/src/main/java/com/example/pbd_jwr/ui/noNetwork/NoNetworkFragment.kt b/app/src/main/java/com/example/pbd_jwr/ui/noNetwork/NoNetworkFragment.kt
new file mode 100644
index 0000000000000000000000000000000000000000..74d7af46037f5951e5efcb5ff08650d8b11e9090
--- /dev/null
+++ b/app/src/main/java/com/example/pbd_jwr/ui/noNetwork/NoNetworkFragment.kt
@@ -0,0 +1,27 @@
+package com.example.pbd_jwr.ui.noNetwork
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import com.example.pbd_jwr.databinding.FragmentNonetworkBinding
+
+
+class NoNetworkFragment : Fragment() {
+
+
+    private var _binding: FragmentNonetworkBinding? = null
+
+    private val binding get() = _binding!!
+
+
+    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
+        _binding = FragmentNonetworkBinding.inflate(inflater, container, false)
+        return binding.root
+    }
+
+
+
+
+}
diff --git a/app/src/main/java/com/example/pbd_jwr/ui/scan/ScanFragment.kt b/app/src/main/java/com/example/pbd_jwr/ui/scan/ScanFragment.kt
index 8bc6e6e52693832c9ab2dc835c2bbdfb5fffb122..1e488dff724bc98819b205d9bb8902cbff15fbf7 100644
--- a/app/src/main/java/com/example/pbd_jwr/ui/scan/ScanFragment.kt
+++ b/app/src/main/java/com/example/pbd_jwr/ui/scan/ScanFragment.kt
@@ -5,11 +5,15 @@ import android.annotation.SuppressLint
 import android.app.Activity.RESULT_OK
 import android.app.AlertDialog
 import android.content.Context
+import android.content.Context.CONNECTIVITY_SERVICE
 import android.content.Intent
 import android.content.SharedPreferences
 import android.content.pm.PackageManager
 import android.graphics.Bitmap
 import android.graphics.BitmapFactory
+import android.hardware.SensorManager
+import android.net.ConnectivityManager
+import android.net.NetworkCapabilities
 import android.net.Uri
 import android.os.Bundle
 import android.os.Environment
@@ -24,9 +28,12 @@ import android.widget.ListView
 import android.widget.Toast
 import androidx.activity.result.contract.ActivityResultContracts
 import androidx.core.content.ContextCompat
+import androidx.core.content.ContextCompat.getSystemService
 import androidx.core.content.FileProvider
+import androidx.core.content.getSystemService
 import androidx.fragment.app.Fragment
 import androidx.lifecycle.ViewModelProvider
+import androidx.navigation.fragment.findNavController
 import com.example.pbd_jwr.R
 import com.example.pbd_jwr.data.entity.Transaction
 import com.example.pbd_jwr.data.model.Category
@@ -54,7 +61,7 @@ class ScanFragment : Fragment() {
     var transactionDummyData: String = ""
     private var _binding: FragmentScanBinding? = null
     private lateinit var mTransactionViewModel: TransactionViewModel
-
+    private lateinit var connectivityManager: ConnectivityManager
 
     private val binding get() = _binding!!
 
@@ -89,6 +96,7 @@ class ScanFragment : Fragment() {
 
     override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
         _binding = FragmentScanBinding.inflate(inflater, container, false)
+        connectivityManager = activity?.getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager
         return binding.root
     }
 
@@ -113,10 +121,14 @@ class ScanFragment : Fragment() {
         }
 
         binding.uploadBtn.setOnClickListener {
-            imageUri?.let { uri ->
-                uploadImage(uri)
-            } ?: run {
-                Toast.makeText(context, "No image selected or taken", Toast.LENGTH_SHORT).show()
+            if(isNetworkAvailable()){
+                imageUri?.let { uri ->
+                    uploadImage(uri)
+                } ?: run {
+                    Toast.makeText(context, "No image selected or taken", Toast.LENGTH_SHORT).show()
+                }
+            }else{
+                findNavController().navigate(R.id.navigation_nonetwork)
             }
         }
 
@@ -345,4 +357,13 @@ class ScanFragment : Fragment() {
         return transactions
     }
 
+    private fun isNetworkAvailable(): Boolean {
+        val network = connectivityManager.activeNetwork
+        val networkCapabilities = connectivityManager.getNetworkCapabilities(network)
+        return networkCapabilities != null && (
+                networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ||
+                        networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
+                )
+    }
+
 }
diff --git a/app/src/main/res/drawable/baseline_cell_wifi.xml b/app/src/main/res/drawable/baseline_cell_wifi.xml
new file mode 100644
index 0000000000000000000000000000000000000000..98372f983dd74f28a3f5a9f08083b307c10c3758
--- /dev/null
+++ b/app/src/main/res/drawable/baseline_cell_wifi.xml
@@ -0,0 +1,5 @@
+<vector android:height="200dp" android:tint="#B29F7A"
+    android:viewportHeight="24" android:viewportWidth="24"
+    android:width="200dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="@android:color/white" android:pathData="M18,9.98L6,22h12h4V5.97L18,9.98zM20,20h-2v-7.22l2,-2V20zM5.22,7.22L3.93,5.93c3.9,-3.91 10.24,-3.91 14.15,0l-1.29,1.29C13.6,4.03 8.41,4.03 5.22,7.22zM12.93,11.07L11,13l-1.93,-1.93C10.14,10.01 11.86,10.01 12.93,11.07zM14.22,9.79c-1.78,-1.77 -4.66,-1.77 -6.43,0L6.5,8.5c2.48,-2.48 6.52,-2.48 9,0L14.22,9.79z"/>
+</vector>
diff --git a/app/src/main/res/layout/fragment_nonetwork.xml b/app/src/main/res/layout/fragment_nonetwork.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3cfc748802feae2e196df7b4ad62cb7c9a5c3291
--- /dev/null
+++ b/app/src/main/res/layout/fragment_nonetwork.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    xmlns:tools="http://schemas.android.com/tools"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+
+    >
+
+
+    <ImageView
+        android:id="@+id/noInternet"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:src="@drawable/baseline_cell_wifi"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+
+        />
+
+    <TextView
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/noInternet"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="No Network Available"
+        android:textSize="24sp"
+        />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml
index b9e8c3324b7b853f56c54c6e248ac8744411e821..df678208973d1682b63d8cc478d22802e3e8be04 100644
--- a/app/src/main/res/navigation/mobile_navigation.xml
+++ b/app/src/main/res/navigation/mobile_navigation.xml
@@ -71,4 +71,10 @@
         android:id="@+id/navigation_twibbon"
         android:name="com.example.pbd_jwr.ui.twibbon.TwibbonFragment"
         android:label="Twibbon" />
+
+    <fragment
+        android:id="@+id/navigation_nonetwork"
+        android:name="com.example.pbd_jwr.ui.noNetwork.NoNetworkFragment"
+        android:label="No Internet"
+        />
 </navigation>
\ No newline at end of file