From d3841ef18d71eda1e442ebe25b6128df38b9147e Mon Sep 17 00:00:00 2001
From: shoaib-mohmad <shoaib.mohmad@tarento.com>
Date: Tue, 15 Mar 2022 17:32:20 +0530
Subject: [PATCH] Completed the offline flow

---
 android/app/build.gradle                      |   2 +-
 android/app/google-services.json              |  24 ++--
 android/app/src/debug/AndroidManifest.xml     |   2 +-
 android/app/src/main/AndroidManifest.xml      |   9 +-
 .../smf_mobile => upsmf/beta}/MainActivity.kt |   2 +-
 .../src/main/res/drawable/flutter_devs.png    | Bin 37891 -> 0 bytes
 android/app/src/profile/AndroidManifest.xml   |   2 +-
 lib/constants/api_endpoints.dart              |   3 +
 lib/constants/app_constants.dart              |   2 +
 lib/database/offline_model.dart               |  30 +++++
 lib/l10n/app_en.arb                           |   7 +-
 lib/landing_page.dart                         |  53 +++++++-
 lib/models/application_model.dart             |   2 -
 lib/models/form_model.dart                    |   2 +-
 lib/pages/application_details_page.dart       | 122 +++++++++++++-----
 lib/pages/create_pin_page.dart                |  27 ++--
 lib/pages/home_page.dart                      |  70 +++++++---
 lib/pages/inspection_summary.dart             |  97 ++++++++------
 lib/pages/login_email_page.dart               |  68 ++++++----
 lib/repositories/application_repository.dart  |  86 ++++++++++--
 lib/repositories/form_repository.dart         |  59 ++++++++-
 lib/repositories/login_repository.dart        |   3 +-
 lib/services/application_service.dart         |  32 ++++-
 lib/services/form_service.dart                |   9 ++
 lib/util/connectivity_helper.dart             |   6 +-
 lib/util/helper.dart                          |  52 +++++---
 lib/util/notification_helper.dart             |   2 +-
 .../lead_inspector_application_field.dart     |  25 ++--
 pubspec.lock                                  |   7 +
 pubspec.yaml                                  |   1 +
 30 files changed, 599 insertions(+), 207 deletions(-)
 rename android/app/src/main/kotlin/com/{example/smf_mobile => upsmf/beta}/MainActivity.kt (75%)
 delete mode 100644 android/app/src/main/res/drawable/flutter_devs.png

diff --git a/android/app/build.gradle b/android/app/build.gradle
index 26fd88b..6ebc677 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -44,7 +44,7 @@ android {
 
     defaultConfig {
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
-        applicationId "com.example.smf_mobile"
+        applicationId "com.upsmf.beta"
         minSdkVersion 21
         targetSdkVersion 31
         versionCode flutterVersionCode.toInteger()
diff --git a/android/app/google-services.json b/android/app/google-services.json
index ad2c948..e1d3b16 100644
--- a/android/app/google-services.json
+++ b/android/app/google-services.json
@@ -1,41 +1,33 @@
 {
   "project_info": {
-    "project_number": "927565375305",
-    "project_id": "up-smf-47fd3",
-    "storage_bucket": "up-smf-47fd3.appspot.com"
+    "project_number": "711487557480",
+    "project_id": "up-smf-373f9",
+    "storage_bucket": "up-smf-373f9.appspot.com"
   },
   "client": [
     {
       "client_info": {
-        "mobilesdk_app_id": "1:927565375305:android:72f8b2fed08ff47dc6dc98",
+        "mobilesdk_app_id": "1:711487557480:android:569911081eab25d11150dd",
         "android_client_info": {
-          "package_name": "com.example.smf_mobile"
+          "package_name": "com.upsmf.beta"
         }
       },
       "oauth_client": [
         {
-          "client_id": "927565375305-57h44768ioqql1j8lm5q0jrq4es9lqj8.apps.googleusercontent.com",
-          "client_type": 1,
-          "android_info": {
-            "package_name": "com.example.smf_mobile",
-            "certificate_hash": "7157475a2fccb7c2857112262c12be29359f845d"
-          }
-        },
-        {
-          "client_id": "927565375305-den7asbeb5ucg36rpbn76ppnnd10pm4r.apps.googleusercontent.com",
+          "client_id": "711487557480-6dolnt6ee3jntc0ukihbbmq82hrsfmql.apps.googleusercontent.com",
           "client_type": 3
         }
       ],
       "api_key": [
         {
-          "current_key": "AIzaSyDmWSOiwgEnSoTt6GKiArZT9wHREe-f1rw"
+          "current_key": "AIzaSyAn-unnydboxQRtncYOPgYxxFGUEYqTnRw"
         }
       ],
       "services": {
         "appinvite_service": {
           "other_platform_oauth_client": [
             {
-              "client_id": "927565375305-den7asbeb5ucg36rpbn76ppnnd10pm4r.apps.googleusercontent.com",
+              "client_id": "711487557480-6dolnt6ee3jntc0ukihbbmq82hrsfmql.apps.googleusercontent.com",
               "client_type": 3
             }
           ]
diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml
index fad2853..89b3eeb 100644
--- a/android/app/src/debug/AndroidManifest.xml
+++ b/android/app/src/debug/AndroidManifest.xml
@@ -1,5 +1,5 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.smf_mobile">
+    package="com.upsmf.beta">
     <!-- Flutter needs it to communicate with the running application
          to allow setting breakpoints, to provide hot reload, etc.
     -->
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index f6f287c..db43866 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -1,7 +1,6 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.smf_mobile">
-    <uses-permission android:name="android.permission.INTERNET"/>
-    <application
+    package="com.upsmf.beta">
+   <application
         android:label="UP SMF"
         android:name="${applicationName}"
         android:icon="@mipmap/ic_launcher">
@@ -25,10 +24,6 @@
                 <action android:name="android.intent.action.MAIN"/>
                 <category android:name="android.intent.category.LAUNCHER"/>
             </intent-filter>
-            <intent-filter>
-                <action android:name="FLUTTER_NOTIFICATION_CLICK" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
         </activity>
         <!-- Don't delete the meta-data below.
              This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
diff --git a/android/app/src/main/kotlin/com/example/smf_mobile/MainActivity.kt b/android/app/src/main/kotlin/com/upsmf/beta/MainActivity.kt
similarity index 75%
rename from android/app/src/main/kotlin/com/example/smf_mobile/MainActivity.kt
rename to android/app/src/main/kotlin/com/upsmf/beta/MainActivity.kt
index 4664aef..2e02ac7 100644
--- a/android/app/src/main/kotlin/com/example/smf_mobile/MainActivity.kt
+++ b/android/app/src/main/kotlin/com/upsmf/beta/MainActivity.kt
@@ -1,4 +1,4 @@
-package com.example.smf_mobile
+package com.upsmf.beta
 
 import io.flutter.embedding.android.FlutterActivity
 
diff --git a/android/app/src/main/res/drawable/flutter_devs.png b/android/app/src/main/res/drawable/flutter_devs.png
deleted file mode 100644
index 275d9ad266027529356df93df0097f05ea3e9889..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 37891
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

diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml
index fad2853..89b3eeb 100644
--- a/android/app/src/profile/AndroidManifest.xml
+++ b/android/app/src/profile/AndroidManifest.xml
@@ -1,5 +1,5 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.smf_mobile">
+    package="com.upsmf.beta">
     <!-- Flutter needs it to communicate with the running application
          to allow setting breakpoints, to provide hot reload, etc.
     -->
diff --git a/lib/constants/api_endpoints.dart b/lib/constants/api_endpoints.dart
index ab3a522..d806807 100644
--- a/lib/constants/api_endpoints.dart
+++ b/lib/constants/api_endpoints.dart
@@ -7,7 +7,10 @@ class ApiUrl {
       '$baseUrl/api/user/updateUserDeviceToken';
   static const getAllApplications = '$baseUrl/api/forms/getAllApplications';
   static const submitInspection = '$baseUrl/api/forms/submitInspection';
+  static const submitBulkInspection = '$baseUrl/api/forms/submitBulkInspection';
   static const getAllUsers = '$baseUrl/api/user/v1/getAllUser';
   static const getFormDetails = '$baseUrl/api/forms/getFormById?id=';
   static const submitConcent = '$baseUrl/api/forms/consentApplication';
+  static const submitBulkConcent = '$baseUrl/api/forms/consentBulkApplication';
+  static const getAllForms = '$baseUrl/api/forms/getAllForms?isDetail=true';
 }
diff --git a/lib/constants/app_constants.dart b/lib/constants/app_constants.dart
index 9bf19be..e583bbd 100644
--- a/lib/constants/app_constants.dart
+++ b/lib/constants/app_constants.dart
@@ -24,6 +24,7 @@ class InspectionStatus {
   static const String leadInspectorCompleted = 'LEADINSCOMPLETED';
   static const String inspectionPending = 'PENDING';
   static const String returned = 'RETURNED';
+  static const String approved = 'APPROVED';
 }
 
 class FieldValue {
@@ -34,6 +35,7 @@ class FieldValue {
 class AppDatabase {
   static const String name = 'smf_db';
   static const String applicationsTable = 'applications';
+  static const String formsTable = 'forms';
   static const String inspectionTable = 'inspections';
   static const String loginPinsTable = 'login_pins';
 }
diff --git a/lib/database/offline_model.dart b/lib/database/offline_model.dart
index ef73324..6ad7747 100644
--- a/lib/database/offline_model.dart
+++ b/lib/database/offline_model.dart
@@ -9,6 +9,7 @@ class OfflineModel {
     return sql.openDatabase(path.join(dbPath, AppDatabase.name),
         onCreate: (db, version) async {
       const String applicationsTable = AppDatabase.applicationsTable;
+      const String formsTable = AppDatabase.formsTable;
       const String inspectionTable = AppDatabase.inspectionTable;
       const String loginPinsTable = AppDatabase.loginPinsTable;
 
@@ -17,6 +18,11 @@ class OfflineModel {
             username VARCHAR(64),
             application_data TEXT
             )''');
+      await db.execute('''CREATE TABLE $formsTable (
+            id INTEGER PRIMARY KEY AUTOINCREMENT,
+            username VARCHAR(64),
+            form_data TEXT
+            )''');
       await db.execute('''CREATE TABLE $inspectionTable (
             id INTEGER PRIMARY KEY AUTOINCREMENT,
             inspector_type CHECK( inspector_type IN ('${Inspector.leadInspector}','${Inspector.assistantInspector}') ),
@@ -54,6 +60,30 @@ class OfflineModel {
         where: 'username = ?', whereArgs: whereArgs);
   }
 
+  static Future<void> saveForms(Map<String, Object> data) async {
+    final db = await OfflineModel.database();
+    db.insert(
+      AppDatabase.formsTable,
+      data,
+      conflictAlgorithm: ConflictAlgorithm.replace,
+    );
+  }
+
+  static Future<Map> getForms(String username) async {
+    final db = await OfflineModel.database();
+    List<dynamic> whereArgs = [username];
+    List<Map> rows = await db.query(AppDatabase.formsTable,
+        where: 'username = ?', orderBy: 'id DESC', whereArgs: whereArgs);
+    return rows[0];
+  }
+
+  static Future<void> deleteForms(String username) async {
+    Database db = await OfflineModel.database();
+    List<dynamic> whereArgs = [username];
+    await db.delete(AppDatabase.formsTable,
+        where: 'username = ?', whereArgs: whereArgs);
+  }
+
   static Future<void> saveInspection(Map<String, Object> data) async {
     final db = await OfflineModel.database();
     db.insert(
diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb
index 659768f..ae93053 100644
--- a/lib/l10n/app_en.arb
+++ b/lib/l10n/app_en.arb
@@ -19,6 +19,7 @@
     "signIn": "SIGN IN",
     "goBack": "Go back",
     "goBackText": "Go back, re-enter the email",
+    "youAreOffline": "You are offline",
     "pendingApplications": "Pending applications",
     "today": "Today",
     "upcoming": "Upcoming",
@@ -45,5 +46,9 @@
     "leadInspector": "Lead inspector",
     "assistingInspectors": "Assisting inspectors",
     "iDisagree": "I disagree",
-    "iConsent": "I consent"
+    "iConsent": "I consent",
+    "acceptTermsAndConditions": "Please accept terms and conditions",
+    "dataSynchoronized": "Data synchoronized",
+    "dataSynchoronizedText": "Data has been synchoronized"
+
 }
\ No newline at end of file
diff --git a/lib/landing_page.dart b/lib/landing_page.dart
index 2fbec39..262c790 100644
--- a/lib/landing_page.dart
+++ b/lib/landing_page.dart
@@ -1,16 +1,17 @@
+import 'dart:convert';
 import 'dart:io';
 import 'package:flutter/material.dart';
 import 'package:flutter_localizations/flutter_localizations.dart';
 import 'package:provider/provider.dart';
+import 'package:smf_mobile/database/offline_model.dart';
 import 'package:smf_mobile/pages/home_page.dart';
 import 'package:smf_mobile/pages/login_email_page.dart';
 import 'package:smf_mobile/repositories/application_repository.dart';
 import 'package:smf_mobile/repositories/form_repository.dart';
 import 'package:smf_mobile/repositories/login_repository.dart';
 import 'package:smf_mobile/repositories/user_repository.dart';
+import 'package:smf_mobile/services/application_service.dart';
 import 'package:smf_mobile/util/helper.dart';
-import 'package:smf_mobile/util/notification_helper.dart';
-// import 'package:smf_mobile/util/notification_helper.dart';
 import 'constants/app_constants.dart';
 import 'constants/app_urls.dart';
 import 'constants/color_constants.dart';
@@ -18,7 +19,6 @@ import 'routes.dart';
 import 'package:flutter_gen/gen_l10n/app_localizations.dart';
 import 'package:firebase_core/firebase_core.dart';
 import 'package:firebase_messaging/firebase_messaging.dart';
-// import 'package:flutter_secure_storage/flutter_secure_storage.dart';
 
 class LandingPage extends StatefulWidget {
   static const route = AppUrl.landingPage;
@@ -32,7 +32,12 @@ class LandingPage extends StatefulWidget {
 }
 
 Future<void> firebaseMessagingBackgroundHandler(RemoteMessage message) async {
-  print("Handling a background message...");
+  print('firebaseMessagingBackgroundHandler...');
+  bool tokenExpired = await Helper.isTokenExpired();
+  if (!tokenExpired) {
+    saveApplications();
+    submitBulkInspection();
+  }
   // BuildContext context;
   // if (message.notification != null) {
   //   String applicationId = message.data['applicationId'] ?? '';
@@ -43,6 +48,46 @@ Future<void> firebaseMessagingBackgroundHandler(RemoteMessage message) async {
   // }
 }
 
+void saveApplications() async {
+  print('saveApplications...');
+  Map _data;
+  final request = await ApplicationService.getApplications();
+  _data = json.decode(request.body);
+  if (_data['statusInfo']['statusCode'] == 200) {
+    String username = await Helper.getUser(Storage.username);
+    Map<String, Object> data = {
+      'username': username,
+      'application_data': request.body
+    };
+    await OfflineModel.deleteApplications(username);
+    await OfflineModel.saveApplications(data);
+  }
+}
+
+void submitBulkInspection() async {
+  print('submitBulkInspection...');
+  List<Map> inspections = [];
+  List<Map> consents = [];
+  try {
+    List<Map> rawInspections = await OfflineModel.getInspections();
+    for (var inspection in rawInspections) {
+      if (inspection['inspector_type'] == Inspector.leadInspector) {
+        inspections.add(jsonDecode(inspection['inspection_data']));
+      } else {
+        consents.add(jsonDecode(inspection['inspection_data']));
+      }
+    }
+    if (inspections.isNotEmpty) {
+      await ApplicationService.submitBulkInspection(inspections);
+    }
+    if (consents.isNotEmpty) {
+      await ApplicationService.submitBulkConsent(consents);
+    }
+  } catch (_) {
+    // print(_);
+  }
+}
+
 class _LandingPageState extends State<LandingPage> {
   final client = HttpClient();
   Locale _locale = const Locale('en', 'US');
diff --git a/lib/models/application_model.dart b/lib/models/application_model.dart
index f1ecb95..c1f8cca 100644
--- a/lib/models/application_model.dart
+++ b/lib/models/application_model.dart
@@ -1,5 +1,3 @@
-import 'package:intl/intl.dart';
-
 class Application {
   final int formId;
   final String applicationId;
diff --git a/lib/models/form_model.dart b/lib/models/form_model.dart
index b30851e..e0cd6bd 100644
--- a/lib/models/form_model.dart
+++ b/lib/models/form_model.dart
@@ -23,7 +23,7 @@ class FormData {
         version: json['version'],
         title: json['title'],
         description: json['description'],
-        fields: json['fields'] ?? [],
+        fields: json['fields'],
         inspectionFields: json['inspectionFields'] ?? [],
         updatedDate: json['updatedDate']);
   }
diff --git a/lib/pages/application_details_page.dart b/lib/pages/application_details_page.dart
index f8553c1..124c5cc 100644
--- a/lib/pages/application_details_page.dart
+++ b/lib/pages/application_details_page.dart
@@ -18,8 +18,8 @@ import 'package:smf_mobile/widgets/people_card.dart';
 import 'package:smf_mobile/widgets/silverappbar_delegate.dart';
 import 'package:flutter_gen/gen_l10n/app_localizations.dart';
 import 'dart:async';
-import 'package:connectivity_plus/connectivity_plus.dart';
-import 'package:smf_mobile/util/connectivity_helper.dart';
+// import 'package:connectivity_plus/connectivity_plus.dart';
+// import 'package:smf_mobile/util/connectivity_helper.dart';
 
 class ApplicationDetailsPage extends StatefulWidget {
   final Application application;
@@ -34,8 +34,8 @@ class ApplicationDetailsPage extends StatefulWidget {
 
 class _ApplicationDetailsPageState extends State<ApplicationDetailsPage>
     with SingleTickerProviderStateMixin {
-  Map _source = {ConnectivityResult.none: false};
-  final MyConnectivity _connectivity = MyConnectivity.instance;
+  // Map _source = {ConnectivityResult.none: false};
+  // final MyConnectivity _connectivity = MyConnectivity.instance;
   final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
   TabController? _tabController;
   late FormData _formData;
@@ -61,18 +61,24 @@ class _ApplicationDetailsPageState extends State<ApplicationDetailsPage>
   @override
   void initState() {
     super.initState();
-    _connectivity.initialise();
-    _connectivity.myStream.listen((source) {
-      setState(() => _source = source);
-    });
+    // _connectivity.initialise();
+    // _connectivity.myStream.listen((source) {
+    //   if (mounted) {
+    //     setState(() => _source = source);
+    //   }
+    // });
     widget.application.dataObject.forEach((key, value) => _tabs.add(key));
     _tabController = TabController(vsync: this, length: _tabs.length);
     _tabController!.addListener(_setActiveTabIndex);
-    _checkInspectorRole();
+    _getData();
+  }
+
+  _getData() async {
+    await _checkInspectorRole();
     _populateFields();
   }
 
-  Future<void> _checkInspectorRole() async {
+  Future<dynamic> _checkInspectorRole() async {
     String id = await Helper.getUser(Storage.userId);
     _userId = int.parse(id);
     if (widget.application.leadInspector.isNotEmpty) {
@@ -101,7 +107,7 @@ class _ApplicationDetailsPageState extends State<ApplicationDetailsPage>
       if (widget.application.inspectors[i]['id'] == _userId &&
           !_isleadInspector) {
         _note = widget.application.inspectors[i]['comments'] ?? '';
-        _inspectionStatus = widget.application.inspectors[i]['status'] ?? false;
+        _inspectionStatus = widget.application.inspectors[i]['status'] ?? '';
         _iConcent =
             widget.application.inspectors[i]['consentApplication'] ?? false;
         if (widget.application.inspectors[i]['consentApplication'] != null) {
@@ -112,13 +118,12 @@ class _ApplicationDetailsPageState extends State<ApplicationDetailsPage>
       }
       setState(() {});
     }
+    return;
   }
 
   Future<dynamic> _getFormDetails() async {
-    _validateUser();
     _formData = await Provider.of<FormRespository>(context, listen: false)
         .getFormDetails(widget.application.formId);
-    // print('object');
     _errorMessage =
         Provider.of<FormRespository>(context, listen: false).errorMessage;
     if (_errorMessage != '') {
@@ -145,16 +150,61 @@ class _ApplicationDetailsPageState extends State<ApplicationDetailsPage>
 
   void _populateFields() async {
     Map updatedFields = {};
-    widget.application.dataObject.forEach((key, value) => {
-          updatedFields = {},
-          value.forEach((childKey, childValue) => {
-                updatedFields[childKey] = {
-                  childValue: {'value': 'Correct', 'comments': ''}
-                }
-              }),
-          _data[key] = updatedFields
-        });
-    _data.forEach((key, value) => _fields.add(value));
+    // print(widget.application.inspectionStatus);
+    if (widget.application.inspectionStatus !=
+            InspectionStatus.leadInspectorCompleted &&
+        widget.application.status != InspectionStatus.inspectionCompleted &&
+        widget.application.status != InspectionStatus.approved) {
+      widget.application.dataObject.forEach((key, value) => {
+            updatedFields = {},
+            value.forEach((childKey, childValue) => {
+                  updatedFields[childKey] = {
+                    childValue: {'value': 'Correct', 'comments': ''}
+                  }
+                }),
+            _data[key] = updatedFields
+          });
+      _data.forEach((key, value) => _fields.add(value));
+    } else {
+      Map existingData = {};
+      print(_leadInspectorId);
+      widget.application.dataObject.forEach((key, value) => {
+            updatedFields = {},
+            existingData = widget.application.inspectorDataObject[key],
+            value.forEach((childKey, childValue) => {
+                  updatedFields[childKey] = {
+                    childValue: {
+                      'value': _isleadInspector
+                          ? existingData[childKey]
+                                  [existingData[childKey].keys.elementAt(0)]
+                              ['value']
+                          : '',
+                      'comments': _isleadInspector
+                          ? existingData[childKey]
+                                  [existingData[childKey].keys.elementAt(0)]
+                              ['comments']
+                          : ''
+                    }
+                  }
+                }),
+            _data[key] = updatedFields
+          });
+      _data.forEach((key, value) => _fields.add(value));
+    }
+
+    // widget.application.inspectorDataObject.forEach((key, value) => {
+    //       // updatedFields = {},
+    //       value.forEach((childKey, childValue) => {
+    //             print(childValue),
+    //             test = childValue[childValue.keys.elementAt(0)],
+    //             print(test['comments']),
+    //             // updatedFields[childKey] = {
+    //             // childValue: {'value': 'Correct', 'comments': ''}
+    //             // }
+    //           }),
+    //       // _data[key] = updatedFields
+    //     });
+
     if (!_isleadInspector) {
       updatedFields = {};
       widget.application.inspectorDataObject.forEach((key, value) => {
@@ -197,7 +247,11 @@ class _ApplicationDetailsPageState extends State<ApplicationDetailsPage>
   }
 
   Future<void> _submitInspection() async {
-    _validateUser();
+    bool isInternetConnected = await Helper.isInternetConnected();
+    // await Future.delayed(const Duration(milliseconds: 10));
+    if (isInternetConnected) {
+      _validateUser();
+    }
     if (_isleadInspector) {
       Map data = {
         'applicationId': widget.application.applicationId,
@@ -211,6 +265,7 @@ class _ApplicationDetailsPageState extends State<ApplicationDetailsPage>
                 formId: 1645422297511,
                 inspectors: widget.application.inspectors,
                 leadInspector: widget.application.leadInspector,
+                inspectionFields: _formData.inspectionFields,
                 inspectionData: data,
               )));
     } else {
@@ -229,8 +284,8 @@ class _ApplicationDetailsPageState extends State<ApplicationDetailsPage>
 
         final responseCode =
             await Provider.of<ApplicationRespository>(context, listen: false)
-                .submitConcent(Helper.isInternetConnected(_source), data);
-        if (responseCode != 0) {
+                .submitConcent(isInternetConnected, data);
+        if (responseCode == 200) {
           Navigator.of(context).pushReplacement(MaterialPageRoute(
               builder: (context) => const InspectionCompletedPage()));
         } else {
@@ -910,10 +965,17 @@ class _ApplicationDetailsPageState extends State<ApplicationDetailsPage>
                                   )
                                 ],
                               ))
-                          : widget.application.status !=
-                                      InspectionStatus.inspectionCompleted &&
-                                  widget.application.inspectionStatus !=
-                                      InspectionStatus.leadInspectorCompleted
+                          : (widget.application.status !=
+                                          InspectionStatus
+                                              .inspectionCompleted &&
+                                      widget.application.inspectionStatus !=
+                                          InspectionStatus
+                                              .leadInspectorCompleted &&
+                                      widget.application.status !=
+                                          InspectionStatus.approved) ||
+                                  (widget.application.status ==
+                                          InspectionStatus.sentForInspection &&
+                                      !_isleadInspector)
                               ? TextButton(
                                   onPressed: () {
                                     _submitInspection();
diff --git a/lib/pages/create_pin_page.dart b/lib/pages/create_pin_page.dart
index ed1f45a..f9a270e 100644
--- a/lib/pages/create_pin_page.dart
+++ b/lib/pages/create_pin_page.dart
@@ -5,14 +5,12 @@ import 'package:provider/provider.dart';
 import 'package:smf_mobile/constants/app_urls.dart';
 import 'package:smf_mobile/constants/color_constants.dart';
 import 'package:google_fonts/google_fonts.dart';
-import 'package:smf_mobile/pages/home_page.dart';
 import 'package:smf_mobile/pages/login_email_page.dart';
 import 'package:smf_mobile/pages/login_otp_page.dart';
 import 'package:smf_mobile/repositories/login_repository.dart';
 import 'package:smf_mobile/util/helper.dart';
 import 'package:flutter_gen/gen_l10n/app_localizations.dart';
 import 'package:otp_text_field/otp_field.dart';
-import 'package:unique_identifier/unique_identifier.dart';
 
 class CreatePinPage extends StatefulWidget {
   static const route = AppUrl.loginEmailPage;
@@ -353,19 +351,20 @@ class _CreatePinPageState extends State<CreatePinPage> {
                               child: Divider(
                                 color: AppColors.black16,
                               )),
-                          InkWell(
-                            onTap: () => Navigator.of(context)
-                                .pushReplacement(MaterialPageRoute(
-                              builder: (context) => const LoginEmailPage(),
-                            )),
-                            child: Container(
-                                width: double.infinity,
-                                padding: const EdgeInsets.only(
-                                  top: 10,
-                                ),
+                          Center(
+                              child: Container(
+                            padding: const EdgeInsets.only(
+                              top: 10,
+                            ),
+                            child: InkWell(
+                                onTap: () => Navigator.of(context)
+                                        .pushReplacement(MaterialPageRoute(
+                                      builder: (context) =>
+                                          const LoginEmailPage(),
+                                    )),
                                 child: Text(
                                   AppLocalizations.of(context)!.goBack,
-                                  textAlign: TextAlign.center,
+                                  // textAlign: TextAlign.center,
                                   style: GoogleFonts.lato(
                                       color: AppColors.primaryBlue,
                                       fontSize: 14,
@@ -374,7 +373,7 @@ class _CreatePinPageState extends State<CreatePinPage> {
                                       fontWeight: FontWeight.w700,
                                       height: 1.4),
                                 )),
-                          )
+                          ))
                         ]),
                   )
                 ],
diff --git a/lib/pages/home_page.dart b/lib/pages/home_page.dart
index 370e9a8..335369a 100644
--- a/lib/pages/home_page.dart
+++ b/lib/pages/home_page.dart
@@ -5,18 +5,24 @@ import 'package:provider/provider.dart';
 import 'package:smf_mobile/constants/app_constants.dart';
 import 'package:smf_mobile/constants/app_urls.dart';
 import 'package:smf_mobile/constants/color_constants.dart';
+// import 'package:smf_mobile/database/offline_model.dart';
 import 'package:smf_mobile/models/application_model.dart';
 import 'package:smf_mobile/pages/application_details_page.dart';
 import 'package:smf_mobile/pages/login_email_page.dart';
 import 'package:smf_mobile/pages/past_applications.dart';
 import 'package:smf_mobile/repositories/application_repository.dart';
+import 'package:smf_mobile/repositories/form_repository.dart';
 import 'package:smf_mobile/repositories/login_repository.dart';
 import 'package:smf_mobile/util/helper.dart';
+import 'package:smf_mobile/util/notification_helper.dart';
 import 'package:smf_mobile/widgets/application_card.dart';
 import 'package:flutter_gen/gen_l10n/app_localizations.dart';
 import 'dart:async';
-import 'package:connectivity_plus/connectivity_plus.dart';
-import 'package:smf_mobile/util/connectivity_helper.dart';
+// import 'package:connectivity_plus/connectivity_plus.dart';
+// import 'package:smf_mobile/util/connectivity_helper.dart';
+
+// import 'dart:async';
+// import 'dart:convert';
 
 // import 'dart:developer' as developer;
 
@@ -29,8 +35,8 @@ class HomePage extends StatefulWidget {
 }
 
 class _HomePageState extends State<HomePage> with WidgetsBindingObserver {
-  Map _source = {ConnectivityResult.none: false};
-  final MyConnectivity _connectivity = MyConnectivity.instance;
+  // Map _source = {ConnectivityResult.none: false};
+  // final MyConnectivity _connectivity = MyConnectivity.instance;
   List<Application> _allApplications = [];
   final List<Application> _pendingApplications = [];
   final List<Application> _upcomingApplications = [];
@@ -40,18 +46,20 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver {
   @override
   void initState() {
     super.initState();
-    _connectivity.initialise();
-    _connectivity.myStream.listen((source) {
-      setState(() {
-        _source = source;
-      });
-    });
+    // _connectivity.initialise();
+    // _connectivity.myStream.listen((source) {
+    //   if (mounted) {
+    //     setState(() {
+    //       _source = source;
+    //     });
+    //   }
+    // });
     // print('applicationId:' + widget.applicationId);
     WidgetsBinding.instance!.addObserver(this);
   }
 
   void _checkNewApplication(String applicationId) {
-    print('applicationId $applicationId');
+    // print('applicationId $applicationId');
     if (applicationId != '') {
       for (Application application in _allApplications) {
         if (application.applicationId == applicationId) {
@@ -79,11 +87,6 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver {
           _checkNewApplication(message.data['applicationId']);
         }
       });
-      // setState(() {});
-      // print('_isInForeground...');
-      // Future.delayed(const Duration(milliseconds: 500), () {
-      //   _checkNewApplication();
-      // });
     }
   }
 
@@ -104,11 +107,35 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver {
     }
   }
 
+  Future<dynamic> _getForms() async {
+    await Provider.of<FormRespository>(context, listen: false).getAllForms();
+  }
+
+  Future<dynamic> _syncApplications() async {
+    var synced =
+        await Provider.of<ApplicationRespository>(context, listen: false)
+            .submitBulkInspection();
+    if (synced) {
+      NotificationHelper.scheduleNotification(
+          DateTime.now(),
+          0,
+          AppLocalizations.of(context)!.dataSynchoronized,
+          AppLocalizations.of(context)!.dataSynchoronizedText,
+          '');
+    }
+  }
+
   Future<dynamic> _getApplications() async {
-    _validateUser();
+    bool isInternetConnected = await Helper.isInternetConnected();
+    // await Future.delayed(const Duration(milliseconds: 10));
+    if (isInternetConnected) {
+      _validateUser();
+      _getForms();
+      _syncApplications();
+    }
     _allApplications =
         await Provider.of<ApplicationRespository>(context, listen: false)
-            .getApplications(Helper.isInternetConnected(_source));
+            .getApplications(isInternetConnected);
     String _errorMessage =
         Provider.of<ApplicationRespository>(context, listen: false)
             .errorMessage;
@@ -123,15 +150,18 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver {
           temp = List.from(temp.reversed);
           int days = Helper.getDateDiffence(
               DateTime.now(), DateTime.parse(temp.join("-")));
-          if (days == 0) {
+          if ((days == 0 || days > 0) &&
+              application.status == InspectionStatus.sentForInspection) {
             _pendingApplications.add(application);
-          } else if (days > 0) {
+          } else if ((days == 0 || days > 0) &&
+              application.status != InspectionStatus.sentForInspection) {
             _pastApplications.add(application);
           } else {
             _upcomingApplications.add(application);
           }
         }
       }
+      // print(_pendingApplications[1].inspectorDataObject);
     } else if (_errorMessage.isNotEmpty) {
       Helper.toastMessage(_errorMessage);
     }
diff --git a/lib/pages/inspection_summary.dart b/lib/pages/inspection_summary.dart
index 2fb38fb..d08836f 100644
--- a/lib/pages/inspection_summary.dart
+++ b/lib/pages/inspection_summary.dart
@@ -4,23 +4,24 @@ import 'package:provider/provider.dart';
 import 'package:smf_mobile/constants/app_constants.dart';
 import 'package:smf_mobile/constants/app_urls.dart';
 import 'package:smf_mobile/constants/color_constants.dart';
-import 'package:smf_mobile/models/form_model.dart';
+// import 'package:smf_mobile/models/form_model.dart';
 import 'package:smf_mobile/pages/login_email_page.dart';
 import 'package:smf_mobile/repositories/application_repository.dart';
-import 'package:smf_mobile/repositories/form_repository.dart';
+// import 'package:smf_mobile/repositories/form_repository.dart';
 import 'package:smf_mobile/util/helper.dart';
 import 'package:smf_mobile/widgets/people_card.dart';
 import 'inspection_completed.dart';
 import 'package:flutter_gen/gen_l10n/app_localizations.dart';
 import 'dart:async';
-import 'package:connectivity_plus/connectivity_plus.dart';
-import 'package:smf_mobile/util/connectivity_helper.dart';
+// import 'package:connectivity_plus/connectivity_plus.dart';
+// import 'package:smf_mobile/util/connectivity_helper.dart';
 
 class InspectionSummaryPage extends StatefulWidget {
   static const route = AppUrl.inspectionSummary;
   final int formId;
   final List inspectors;
   final List leadInspector;
+  final List inspectionFields;
   final Map inspectionData;
 
   const InspectionSummaryPage(
@@ -28,6 +29,7 @@ class InspectionSummaryPage extends StatefulWidget {
       required this.formId,
       required this.inspectors,
       required this.leadInspector,
+      required this.inspectionFields,
       required this.inspectionData})
       : super(key: key);
   @override
@@ -35,13 +37,13 @@ class InspectionSummaryPage extends StatefulWidget {
 }
 
 class _InspectionSummaryPageState extends State<InspectionSummaryPage> {
-  Map _source = {ConnectivityResult.none: false};
-  final MyConnectivity _connectivity = MyConnectivity.instance;
+  // Map _source = {ConnectivityResult.none: false};
+  // final MyConnectivity _connectivity = MyConnectivity.instance;
   final TextEditingController _summaryController = TextEditingController();
   final List<Map> _inspectors = [];
   int _leadInspectorId = 0;
   bool _iAgree = false;
-  late FormData _formData;
+  // late FormData _formData;
   String _errorMessage = '';
   late Map _summaryField;
   late Map _termsField;
@@ -49,18 +51,20 @@ class _InspectionSummaryPageState extends State<InspectionSummaryPage> {
   @override
   void initState() {
     super.initState();
-    _connectivity.initialise();
-    _connectivity.myStream.listen((source) {
-      setState(() => _source = source);
-    });
+    // _connectivity.initialise();
+    // _connectivity.myStream.listen((source) {
+    //   if (mounted) {
+    //     setState(() => _source = source);
+    //   }
+    // });
     _populateApplicationInspectors();
   }
 
-  // @override
-  // void dispose() {
-  //   // _connectivity.disposeStream();
-  //   super.dispose();
-  // }
+  @override
+  void dispose() {
+    // _connectivity.disposeStream();
+    super.dispose();
+  }
 
   Future<void> _populateApplicationInspectors() async {
     if (widget.leadInspector.isNotEmpty) {
@@ -87,32 +91,49 @@ class _InspectionSummaryPageState extends State<InspectionSummaryPage> {
     }
   }
 
+  // Future<dynamic> _getFormDetails(context) async {
+  //   _validateUser();
+  //   _formData = await Provider.of<FormRespository>(context, listen: false)
+  //       .getFormDetails(widget.formId);
+  //   // print('object');
+  //   String _errorMessage =
+  //       Provider.of<FormRespository>(context, listen: false).errorMessage;
+  //   if (_errorMessage != '') {
+  //     Helper.toastMessage(_errorMessage);
+  //   } else {
+  //     for (int i = 0; i < _formData.inspectionFields.length; i++) {
+  //       if (_formData.inspectionFields[i]['fieldType'] == FieldType.heading) {
+  //         _summaryField = _formData.inspectionFields[i];
+  //       } else if (_formData.inspectionFields[i]['fieldType'] ==
+  //           FieldType.checkbox) {
+  //         _termsField = _formData.inspectionFields[i];
+  //       }
+  //     }
+  //   }
+  //   return _formData;
+  // }
+
   Future<dynamic> _getFormDetails(context) async {
-    _validateUser();
-    _formData = await Provider.of<FormRespository>(context, listen: false)
-        .getFormDetails(widget.formId);
-    // print('object');
-    String _errorMessage =
-        Provider.of<FormRespository>(context, listen: false).errorMessage;
-    if (_errorMessage != '') {
-      Helper.toastMessage(_errorMessage);
-    } else {
-      for (int i = 0; i < _formData.inspectionFields.length; i++) {
-        if (_formData.inspectionFields[i]['fieldType'] == FieldType.heading) {
-          _summaryField = _formData.inspectionFields[i];
-        } else if (_formData.inspectionFields[i]['fieldType'] ==
-            FieldType.checkbox) {
-          _termsField = _formData.inspectionFields[i];
-        }
+    for (int i = 0; i < widget.inspectionFields.length; i++) {
+      if (widget.inspectionFields[i]['fieldType'] == FieldType.heading) {
+        _summaryField = widget.inspectionFields[i];
+      } else if (widget.inspectionFields[i]['fieldType'] ==
+          FieldType.checkbox) {
+        _termsField = widget.inspectionFields[i];
       }
     }
-    return _formData;
+    return widget.inspectionFields;
   }
 
   Future<void> _submitInspection() async {
-    _validateUser();
+    bool isInternetConnected = await Helper.isInternetConnected();
+    // await Future.delayed(const Duration(milliseconds: 10));
+    if (isInternetConnected) {
+      _validateUser();
+    }
     if (!_iAgree) {
-      Helper.toastMessage('Please accept terms and conditions');
+      Helper.toastMessage(
+          AppLocalizations.of(context)!.acceptTermsAndConditions);
       return;
     }
     try {
@@ -124,8 +145,8 @@ class _InspectionSummaryPageState extends State<InspectionSummaryPage> {
       };
       final responseCode =
           await Provider.of<ApplicationRespository>(context, listen: false)
-              .submitInspection(Helper.isInternetConnected(_source), data);
-      if (responseCode != 0) {
+              .submitInspection(isInternetConnected, data);
+      if (responseCode == 200) {
         Navigator.of(context).pushReplacement(MaterialPageRoute(
             builder: (context) => const InspectionCompletedPage()));
       } else {
@@ -148,7 +169,7 @@ class _InspectionSummaryPageState extends State<InspectionSummaryPage> {
           titleSpacing: 20,
           backgroundColor: Colors.white,
           title: Text(
-            'Inspection Summary',
+            AppLocalizations.of(context)!.inspectionSummary,
             style: GoogleFonts.lato(
               color: AppColors.black87,
               fontSize: 16.0,
diff --git a/lib/pages/login_email_page.dart b/lib/pages/login_email_page.dart
index f4c1ba7..e0adf51 100644
--- a/lib/pages/login_email_page.dart
+++ b/lib/pages/login_email_page.dart
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:otp_text_field/style.dart';
 import 'package:provider/provider.dart';
+import 'package:smf_mobile/constants/app_constants.dart';
 import 'package:smf_mobile/constants/app_urls.dart';
 import 'package:smf_mobile/constants/color_constants.dart';
 import 'package:google_fonts/google_fonts.dart';
@@ -14,6 +15,9 @@ import 'package:smf_mobile/util/helper.dart';
 import 'package:flutter_gen/gen_l10n/app_localizations.dart';
 import 'package:otp_text_field/otp_field.dart';
 import 'package:unique_identifier/unique_identifier.dart';
+import 'dart:async';
+// import 'package:connectivity_plus/connectivity_plus.dart';
+// import 'package:smf_mobile/util/connectivity_helper.dart';
 
 class LoginEmailPage extends StatefulWidget {
   static const route = AppUrl.loginEmailPage;
@@ -26,6 +30,8 @@ class LoginEmailPage extends StatefulWidget {
 class _LoginEmailPageState extends State<LoginEmailPage> {
   final TextEditingController _emailController = TextEditingController();
   final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
+  // Map _source = {ConnectivityResult.none: false};
+  // final MyConnectivity _connectivity = MyConnectivity.instance;
   String _errorMessage = '';
   late Locale locale;
   String _pin = '';
@@ -34,6 +40,14 @@ class _LoginEmailPageState extends State<LoginEmailPage> {
   @override
   void initState() {
     super.initState();
+    // _connectivity.initialise();
+    // _connectivity.myStream.listen((source) {
+    //   if (mounted) {
+    //     setState(() {
+    //       _source = source;
+    //     });
+    //   }
+    // });
     initUniqueIdentifierState();
   }
 
@@ -78,16 +92,16 @@ class _LoginEmailPageState extends State<LoginEmailPage> {
   }
 
   Future<void> _validatePin() async {
-    print('_validatePin...');
-    String pin = _pin;
+    bool isInternetConnected = await Helper.isInternetConnected();
+    // await Future.delayed(const Duration(milliseconds: 10));
     try {
-      Map pinDetails = await OfflineModel.getPinDetails(pin);
-      print(pinDetails);
-      if (pinDetails['username'] != null) {
+      Map pinDetails = await OfflineModel.getPinDetails(_pin);
+      // print(pinDetails);
+      if (isInternetConnected && pinDetails['username'] != null) {
         final responseCode = await Provider.of<LoginRespository>(context,
                 listen: false)
             .validateOtp(
-                context, pinDetails['username'], '', _identifier, pin, false);
+                context, pinDetails['username'], '', _identifier, _pin, false);
         if (responseCode == 200) {
           Navigator.of(context).pushReplacement(MaterialPageRoute(
             builder: (context) => const HomePage(),
@@ -97,6 +111,13 @@ class _LoginEmailPageState extends State<LoginEmailPage> {
               .errorMessage;
           Helper.toastMessage(_errorMessage);
         }
+      } else if (pinDetails['username'] != null) {
+        Helper.setUser(Storage.username, pinDetails['username']);
+        Helper.setUser(Storage.authtoken, '');
+        Helper.toastMessage(AppLocalizations.of(context)!.youAreOffline);
+        Navigator.of(context).pushReplacement(MaterialPageRoute(
+          builder: (context) => const HomePage(),
+        ));
       } else {
         Helper.toastMessage(AppLocalizations.of(context)!.inValidPin);
       }
@@ -107,6 +128,7 @@ class _LoginEmailPageState extends State<LoginEmailPage> {
 
   @override
   void dispose() {
+    // _connectivity.disposeStream();
     super.dispose();
   }
 
@@ -337,27 +359,27 @@ class _LoginEmailPageState extends State<LoginEmailPage> {
                               child: Divider(
                                 color: AppColors.black16,
                               )),
-                          InkWell(
-                            onTap: () => Navigator.of(context)
-                                .pushReplacement(MaterialPageRoute(
-                              builder: (context) => const CreatePinPage(),
-                            )),
+                          Center(
                             child: Container(
-                                width: double.infinity,
                                 padding: const EdgeInsets.only(
                                   top: 10,
                                 ),
-                                child: Text(
-                                  AppLocalizations.of(context)!.createPin,
-                                  textAlign: TextAlign.center,
-                                  style: GoogleFonts.lato(
-                                      color: AppColors.primaryBlue,
-                                      fontSize: 14,
-                                      letterSpacing:
-                                          0.5 /*percentages not used in flutter. defaulting to zero*/,
-                                      fontWeight: FontWeight.w700,
-                                      height: 1.4),
-                                )),
+                                child: InkWell(
+                                    onTap: () => Navigator.of(context)
+                                            .pushReplacement(MaterialPageRoute(
+                                          builder: (context) =>
+                                              const CreatePinPage(),
+                                        )),
+                                    child: Text(
+                                      AppLocalizations.of(context)!.createPin,
+                                      style: GoogleFonts.lato(
+                                          color: AppColors.primaryBlue,
+                                          fontSize: 14,
+                                          letterSpacing:
+                                              0.5 /*percentages not used in flutter. defaulting to zero*/,
+                                          fontWeight: FontWeight.w700,
+                                          height: 1.4),
+                                    ))),
                           )
                         ]),
                   )
diff --git a/lib/repositories/application_repository.dart b/lib/repositories/application_repository.dart
index d1d1fc7..f0063a7 100644
--- a/lib/repositories/application_repository.dart
+++ b/lib/repositories/application_repository.dart
@@ -13,18 +13,24 @@ class ApplicationRespository with ChangeNotifier {
   List<Application> _applications = [];
   String _errorMessage = '';
 
+  void _saveApplications(String username, String applicationData) async {
+    Map<String, Object> data = {
+      'username': username,
+      'application_data': applicationData
+    };
+    await OfflineModel.deleteApplications(username);
+    await OfflineModel.saveApplications(data);
+  }
+
   Future<dynamic> getApplications(bool internetConnected) async {
     String username = await Helper.getUser(Storage.username);
     try {
       if (internetConnected) {
         final request = await ApplicationService.getApplications();
         _data = json.decode(request.body);
-        Map<String, Object> data = {
-          'username': username,
-          'application_data': request.body
-        };
-        await OfflineModel.deleteApplications(username);
-        await OfflineModel.saveApplications(data);
+        if (_data['statusInfo']['statusCode'] == 200) {
+          _saveApplications(username, request.body);
+        }
       } else {
         var applications = await OfflineModel.getApplications(username);
         _data = json.decode(applications['application_data']);
@@ -51,6 +57,21 @@ class ApplicationRespository with ChangeNotifier {
           'inspection_data': data
         };
         await OfflineModel.saveInspection(applicationData);
+
+        // Updating application status in the database
+        String username = await Helper.getUser(Storage.username);
+        var rawData = await OfflineModel.getForms(username);
+        Map applicationFieldData = json.decode(rawData['application_data']);
+        List applications = applicationFieldData['responseData'];
+
+        for (int i = 0; i < applications.length; i++) {
+          if (applications[i]['applicationId'] == data['applicationId']) {
+            applications[i]['inspection']['status'] =
+                InspectionStatus.leadInspectorCompleted;
+          }
+        }
+        applicationFieldData['responseData'] = applications;
+        _saveApplications(username, jsonEncode(applicationFieldData));
       } else {
         final request = await ApplicationService.submitInspection(data);
         _data = json.decode(request.body);
@@ -67,11 +88,46 @@ class ApplicationRespository with ChangeNotifier {
     } else {
       statusCode = 200;
     }
-    // var tData = await OfflineModel.getInspections();
-    // developer.log(tData.toString());
     return statusCode;
   }
 
+  Future<dynamic> submitBulkInspection() async {
+    List<Map> inspections = [];
+    List<Map> consents = [];
+    Map data1 = {}, data2 = {};
+    bool response = false;
+    try {
+      List<Map> rawInspections = await OfflineModel.getInspections();
+      for (var inspection in rawInspections) {
+        if (inspection['inspector_type'] == Inspector.leadInspector) {
+          inspections.add(jsonDecode(inspection['inspection_data']));
+        } else {
+          consents.add(jsonDecode(inspection['inspection_data']));
+        }
+      }
+      if (inspections.isNotEmpty) {
+        final request1 =
+            await ApplicationService.submitBulkInspection(inspections);
+        data1 = json.decode(request1.body);
+      }
+      if (consents.isNotEmpty) {
+        final request2 = await ApplicationService.submitBulkConsent(consents);
+        data2 = json.decode(request2.body);
+      }
+    } catch (_) {
+      return _;
+    }
+    // if (data1['statusInfo']['statusCode'] != 200 ||
+    //     data2['statusInfo']['statusCode'] != 200) {
+    //   _errorMessage = _data['statusInfo']['errorMessage'];
+    // }
+    if ((inspections.isNotEmpty && data1['statusInfo']['statusCode']) ||
+        (consents.isNotEmpty && data2['statusInfo']['statusCode'])) {
+      response = true;
+    }
+    return response;
+  }
+
   Future<dynamic> submitConcent(bool internetConnected, Map data) async {
     try {
       if (!internetConnected) {
@@ -80,6 +136,20 @@ class ApplicationRespository with ChangeNotifier {
           'inspection_data': data
         };
         await OfflineModel.saveInspection(applicationData);
+
+        // Updating application status in the database
+        String username = await Helper.getUser(Storage.username);
+        var rawData = await OfflineModel.getApplications(username);
+        Map applicationFieldData = json.decode(rawData['application_data']);
+        List applications = applicationFieldData['responseData'];
+
+        for (int i = 0; i < applications.length; i++) {
+          if (applications[i]['applicationId'] == data['applicationId']) {
+            applications[i]['status'] = InspectionStatus.inspectionCompleted;
+          }
+        }
+        applicationFieldData['responseData'] = applications;
+        _saveApplications(username, jsonEncode(applicationFieldData));
       } else {
         final request = await ApplicationService.submitConcent(data);
         _data = json.decode(request.body);
diff --git a/lib/repositories/form_repository.dart b/lib/repositories/form_repository.dart
index 9e469fa..c954644 100644
--- a/lib/repositories/form_repository.dart
+++ b/lib/repositories/form_repository.dart
@@ -1,7 +1,10 @@
 import 'dart:convert';
 import 'package:flutter/widgets.dart';
+import 'package:smf_mobile/constants/app_constants.dart';
+import 'package:smf_mobile/database/offline_model.dart';
 import 'package:smf_mobile/services/form_service.dart';
 import 'package:smf_mobile/models/form_model.dart';
+import 'package:smf_mobile/util/helper.dart';
 // import 'dart:developer' as developer;
 
 class FormRespository with ChangeNotifier {
@@ -9,17 +12,67 @@ class FormRespository with ChangeNotifier {
   late FormData _formData;
   String _errorMessage = '';
 
-  Future<dynamic> getFormDetails(int formId) async {
+  Future<dynamic> getAllForms() async {
+    List forms = [];
     try {
-      final request = await FormService.getFormDetails(formId);
+      String username = await Helper.getUser(Storage.username);
+      final request = await FormService.getAllForms();
       _data = json.decode(request.body);
+      if (_data['statusInfo']['statusCode'] == 200) {
+        Map<String, Object> data = {
+          'username': username,
+          'form_data': request.body
+        };
+        await OfflineModel.deleteForms(username);
+        await OfflineModel.saveForms(data);
+        // Map<dynamic, dynamic> _forms = await OfflineModel.getForms(username);
+        // print(request.body);
+      }
     } catch (_) {
       return _;
     }
     if (_data['statusInfo']['statusCode'] != 200) {
       _errorMessage = _data['statusInfo']['errorMessage'];
     } else {
-      _formData = FormData.fromJson(_data['responseData']);
+      forms = _data['responseData'];
+    }
+    return forms;
+  }
+
+  // Future<dynamic> getFormDetails(int formId) async {
+  //   try {
+  //     final request = await FormService.getFormDetails(formId);
+  //     _data = json.decode(request.body);
+  //   } catch (_) {
+  //     return _;
+  //   }
+  //   if (_data['statusInfo']['statusCode'] != 200) {
+  //     _errorMessage = _data['statusInfo']['errorMessage'];
+  //   } else {
+  //     _formData = FormData.fromJson(_data['responseData']);
+  //   }
+  //   return _formData;
+  // }
+
+  Future<dynamic> getFormDetails(int formId) async {
+    Map<String, dynamic> formDetails = {};
+    try {
+      String username = await Helper.getUser(Storage.username);
+      var rawData = await OfflineModel.getForms(username);
+      Map formData = json.decode(rawData['form_data']);
+      List forms = formData['responseData'];
+      for (var form in forms) {
+        if (form['id'] == formId) {
+          formDetails = form;
+        }
+      }
+    } catch (_) {
+      return _;
+    }
+    // print(formId);
+    // print(formDetails);
+    if (formDetails.isNotEmpty) {
+      _formData = FormData.fromJson(formDetails);
     }
     return _formData;
   }
diff --git a/lib/repositories/login_repository.dart b/lib/repositories/login_repository.dart
index dd1adc3..c7eecaf 100644
--- a/lib/repositories/login_repository.dart
+++ b/lib/repositories/login_repository.dart
@@ -48,7 +48,6 @@ class LoginRespository with ChangeNotifier {
 
   Future<dynamic> validateOtp(context, String username, String otp,
       String identifier, String pin, bool isOtp) async {
-    print('res validateOtp');
     try {
       Map requestData = {};
       if (isOtp) {
@@ -83,7 +82,7 @@ class LoginRespository with ChangeNotifier {
         _data = json.decode(request.body);
         // print(_data);
         if (_data['statusInfo']['statusCode'] == 200) {
-          print('_configureMessaging...');
+          // print('_configureMessaging...');
           _configureMessaging(context);
         }
       });
diff --git a/lib/services/application_service.dart b/lib/services/application_service.dart
index a1663dd..dc1be0c 100644
--- a/lib/services/application_service.dart
+++ b/lib/services/application_service.dart
@@ -4,7 +4,7 @@ import 'package:http/http.dart' as http;
 import 'package:smf_mobile/constants/api_endpoints.dart';
 import 'package:smf_mobile/constants/app_constants.dart';
 import 'package:smf_mobile/services/base_service.dart';
-import 'dart:developer' as developer;
+// import 'dart:developer' as developer;
 
 class ApplicationService extends BaseService {
   ApplicationService(HttpClient client) : super(client);
@@ -32,15 +32,39 @@ class ApplicationService extends BaseService {
     return response;
   }
 
+  static Future<dynamic> submitBulkInspection(List data) async {
+    var body = json.encode(data);
+    Map<String, String> headers = await BaseService.getHeaders();
+
+    final response = await http.post(Uri.parse(ApiUrl.submitBulkInspection),
+        headers: headers, body: body);
+    // developer.log(ApiUrl.submitInspection);
+    // developer.log(body);
+    // developer.log(response.body);
+    return response;
+  }
+
   static Future<dynamic> submitConcent(Map data) async {
     var body = json.encode(data);
     Map<String, String> headers = await BaseService.getHeaders();
 
     final response = await http.post(Uri.parse(ApiUrl.submitConcent),
         headers: headers, body: body);
-    developer.log(ApiUrl.submitConcent);
-    developer.log(body);
-    developer.log(response.body);
+    // developer.log(ApiUrl.submitConcent);
+    // developer.log(body);
+    // developer.log(response.body);
+    return response;
+  }
+
+  static Future<dynamic> submitBulkConsent(List data) async {
+    var body = json.encode(data);
+    Map<String, String> headers = await BaseService.getHeaders();
+
+    final response = await http.post(Uri.parse(ApiUrl.submitBulkConcent),
+        headers: headers, body: body);
+    // developer.log(ApiUrl.submitInspection);
+    // developer.log(body);
+    // developer.log(response.body);
     return response;
   }
 }
diff --git a/lib/services/form_service.dart b/lib/services/form_service.dart
index 7e1fc27..a408c98 100644
--- a/lib/services/form_service.dart
+++ b/lib/services/form_service.dart
@@ -7,6 +7,15 @@ import 'package:smf_mobile/services/base_service.dart';
 class FormService extends BaseService {
   FormService(HttpClient client) : super(client);
 
+  static Future<dynamic> getAllForms() async {
+    Map<String, String> headers = await BaseService.getHeaders();
+
+    final response =
+        await http.get(Uri.parse(ApiUrl.getAllForms), headers: headers);
+    // developer.log(response.body);
+    return response;
+  }
+
   static Future<dynamic> getFormDetails(int formId) async {
     Map<String, String> headers = await BaseService.getHeaders();
 
diff --git a/lib/util/connectivity_helper.dart b/lib/util/connectivity_helper.dart
index 5704601..55f6d6a 100644
--- a/lib/util/connectivity_helper.dart
+++ b/lib/util/connectivity_helper.dart
@@ -28,7 +28,11 @@ class MyConnectivity {
     } on SocketException catch (_) {
       isOnline = false;
     }
-    _controller.sink.add({result: isOnline});
+    try {
+      _controller.sink.add({result: isOnline});
+    } catch (_) {
+      return;
+    }
   }
 
   void disposeStream() => _controller.close();
diff --git a/lib/util/helper.dart b/lib/util/helper.dart
index 65afc96..dc161fa 100644
--- a/lib/util/helper.dart
+++ b/lib/util/helper.dart
@@ -1,5 +1,6 @@
 import 'dart:math';
-import 'package:connectivity_plus/connectivity_plus.dart';
+import 'dart:io';
+// import 'package:connectivity_plus/connectivity_plus.dart';
 import 'package:flutter/material.dart';
 import 'package:fluttertoast/fluttertoast.dart';
 import 'package:intl/intl.dart';
@@ -28,6 +29,10 @@ class Helper {
     return value;
   }
 
+  static Future<void> setUser(String key, String value) async {
+    _storage.write(key: key, value: value);
+  }
+
   static int getDateDiffence(DateTime today, DateTime dateTimeCreatedAt) {
     // print('$today, $dateTimeCreatedAt');
     // String month = today.month < 10 ? '0${today.month}' : '${today.month}';
@@ -39,7 +44,7 @@ class Helper {
   static Future<bool> isTokenExpired() async {
     bool isTokenExpired = true;
     var authToken = await _storage.read(key: Storage.authtoken);
-    if (authToken != null) {
+    if (authToken != null && authToken != '') {
       isTokenExpired = JwtDecoder.isExpired(authToken);
     }
     return isTokenExpired;
@@ -95,22 +100,33 @@ class Helper {
     return _inspectionStatus;
   }
 
-  static bool isInternetConnected(source) {
-    bool connected;
-    switch (source.keys.toList()[0]) {
-      case ConnectivityResult.mobile:
-        // print('connected to mobile...');
-        connected = true;
-        break;
-      case ConnectivityResult.wifi:
-        // print('connected to wifi...');
-        connected = true;
-        break;
-      case ConnectivityResult.none:
-      default:
-        // print('offline...');
-        connected = false;
+  // static bool isInternetConnected(source) {
+  //   bool connected;
+  //   switch (source.keys.toList()[0]) {
+  //     case ConnectivityResult.mobile:
+  //       print('connected to mobile...');
+  //       connected = true;
+  //       break;
+  //     case ConnectivityResult.wifi:
+  //       print('connected to wifi...');
+  //       connected = true;
+  //       break;
+  //     case ConnectivityResult.none:
+  //     default:
+  //       print('offline mode...');
+  //       connected = false;
+  //   }
+  //   return connected;
+  // }
+
+  static Future<bool> isInternetConnected() async {
+    bool _isConnectionSuccessful;
+    try {
+      final response = await InternetAddress.lookup('www.google.com');
+      _isConnectionSuccessful = response.isNotEmpty;
+    } on SocketException catch (e) {
+      _isConnectionSuccessful = false;
     }
-    return connected;
+    return _isConnectionSuccessful;
   }
 }
diff --git a/lib/util/notification_helper.dart b/lib/util/notification_helper.dart
index fbee26f..95aea22 100644
--- a/lib/util/notification_helper.dart
+++ b/lib/util/notification_helper.dart
@@ -43,7 +43,7 @@ class NotificationHelper {
       enableLights: true,
       playSound: true,
       // sound: RawResourceAndroidNotificationSound('mixkit_happy_bell'),
-      // largeIcon: DrawableResourceAndroidBitmap('flutter_devs'),
+      largeIcon: DrawableResourceAndroidBitmap('flutter_devs'),
       styleInformation: BigTextStyleInformation(''),
     );
 
diff --git a/lib/widgets/lead_inspector_application_field.dart b/lib/widgets/lead_inspector_application_field.dart
index c7549e6..d6f7040 100644
--- a/lib/widgets/lead_inspector_application_field.dart
+++ b/lib/widgets/lead_inspector_application_field.dart
@@ -284,16 +284,21 @@ class _LeadInspectorApplicationFieldState
                                               _displayCommentDialog();
                                             }
                                           },
-                                          icon:
-                                              _radioValue != FieldValue.correct
-                                                  ? const Icon(
-                                                      Icons.edit,
-                                                      color: AppColors.black40,
-                                                    )
-                                                  : const Icon(
-                                                      Icons.message,
-                                                      color: AppColors.black40,
-                                                    ),
+                                          icon: _radioValue !=
+                                                      FieldValue.correct &&
+                                                  widget.applicationStatus !=
+                                                      InspectionStatus
+                                                          .inspectionCompleted &&
+                                                  widget.applicationStatus !=
+                                                      InspectionStatus.approved
+                                              ? const Icon(
+                                                  Icons.edit,
+                                                  color: AppColors.black40,
+                                                )
+                                              : const Icon(
+                                                  Icons.message,
+                                                  color: AppColors.black40,
+                                                ),
                                         ),
                                       )
                                     ],
diff --git a/pubspec.lock b/pubspec.lock
index 4816bf3..0de1cc5 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -36,6 +36,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "2.1.0"
+  change_app_package_name:
+    dependency: "direct main"
+    description:
+      name: change_app_package_name
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "1.0.0"
   characters:
     dependency: transitive
     description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 206d2b9..28443e2 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -50,6 +50,7 @@ dependencies:
   unique_identifier: ^0.2.2
   sqflite: ^2.0.2
   connectivity_plus: ^2.2.1
+  change_app_package_name: ^1.0.0
 
 dev_dependencies:
   flutter_test:
-- 
GitLab