From 39860f782a7938def7c8fd210621390c9f38fd84 Mon Sep 17 00:00:00 2001 From: "saad.siddiq" Date: Thu, 29 May 2025 17:21:16 +0500 Subject: [PATCH] Add success and failure notification with sku detail Add manual edit for aql --- app/build.gradle | 4 +-- .../apiservice/RetrofitClient.java | 4 +-- .../notification/NotificationHelper.java | 20 ++++++++++++++ .../service/InspectionReportService.java | 1 + .../ui/activities/HomeActivity.java | 27 ++++++++++++++----- .../qualitychecker/utils/FileUtils.java | 1 + 6 files changed, 47 insertions(+), 10 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 37e67ef..864aace 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId "com.utopiaindustries.qualitychecker" minSdk 24 targetSdk 34 - versionCode 7 - versionName "1.6" + versionCode 8 + versionName "1.7" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/utopiaindustries/qualitychecker/apiservice/RetrofitClient.java b/app/src/main/java/com/utopiaindustries/qualitychecker/apiservice/RetrofitClient.java index 28e238d..70a96f8 100644 --- a/app/src/main/java/com/utopiaindustries/qualitychecker/apiservice/RetrofitClient.java +++ b/app/src/main/java/com/utopiaindustries/qualitychecker/apiservice/RetrofitClient.java @@ -19,8 +19,8 @@ import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; public class RetrofitClient { - //private final static String BASE_URL = "https://portal.utopiaindustries.pk/uind/"; - private final static String BASE_URL = "http://192.168.91.44:8081/uind/";//"http://192.168.91.44:8081/uind/";//"http://192.168.90.27:8080/uind/";//"http://192.168.91.16:8080/uind/"; + private final static String BASE_URL = "https://portal.utopiaindustries.pk/uind/"; + //private final static String BASE_URL = "http://192.168.91.44:8081/uind/";//"http://192.168.91.44:8081/uind/";//"http://192.168.90.27:8080/uind/";//"http://192.168.91.16:8080/uind/"; private static Retrofit retrofit; diff --git a/app/src/main/java/com/utopiaindustries/qualitychecker/notification/NotificationHelper.java b/app/src/main/java/com/utopiaindustries/qualitychecker/notification/NotificationHelper.java index a04a05f..9e22843 100644 --- a/app/src/main/java/com/utopiaindustries/qualitychecker/notification/NotificationHelper.java +++ b/app/src/main/java/com/utopiaindustries/qualitychecker/notification/NotificationHelper.java @@ -59,4 +59,24 @@ public class NotificationHelper { // Show the notification notificationManager.notify(0, builder.build()); } + + public static void showNotificationForReportUpload(Context context, int notificationId, String title, String message) { + NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + NotificationChannel channel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_DEFAULT); + channel.setDescription(CHANNEL_DESCRIPTION); + notificationManager.createNotificationChannel(channel); + } + + NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID) + .setSmallIcon(R.drawable.utopia_svg_logo) + .setContentTitle(title) + .setContentText(message) + .setStyle(new NotificationCompat.BigTextStyle().bigText(message)) // Allow long messages + .setPriority(NotificationCompat.PRIORITY_DEFAULT); + + notificationManager.notify(notificationId, builder.build()); + } + } diff --git a/app/src/main/java/com/utopiaindustries/qualitychecker/service/InspectionReportService.java b/app/src/main/java/com/utopiaindustries/qualitychecker/service/InspectionReportService.java index a4fc3e0..6912278 100644 --- a/app/src/main/java/com/utopiaindustries/qualitychecker/service/InspectionReportService.java +++ b/app/src/main/java/com/utopiaindustries/qualitychecker/service/InspectionReportService.java @@ -133,6 +133,7 @@ public class InspectionReportService { if (response.isSuccessful()) { System.out.println(response.body()); if (response.body().get("result").equalsIgnoreCase("success")) { + FileUtils.Current_SKU = response.body().get("Sku"); callback.onSuccess(); } else { callback.onFailure(new Exception("Error on submitting report")); diff --git a/app/src/main/java/com/utopiaindustries/qualitychecker/ui/activities/HomeActivity.java b/app/src/main/java/com/utopiaindustries/qualitychecker/ui/activities/HomeActivity.java index 99f98f0..e820ce2 100644 --- a/app/src/main/java/com/utopiaindustries/qualitychecker/ui/activities/HomeActivity.java +++ b/app/src/main/java/com/utopiaindustries/qualitychecker/ui/activities/HomeActivity.java @@ -593,8 +593,10 @@ private int generateRandomNumber(int min, int max) { Toast.makeText(this, "Uploading Reports. Please wait", Toast.LENGTH_LONG).show(); reportsUploadBtn.setEnabled(false); final int[] uploadedCount = {0}; + final int[] notificationId = {100}; for ( InspectionReport report : reports ) { + final int currentNotificationId = notificationId[0]++; service.saveReport(report, new SaveReportCallback() { @Override public void onSuccess() { @@ -605,14 +607,20 @@ private int generateRandomNumber(int min, int max) { uploadedCount[0]++; - NotificationHelper.showNotification( + /*NotificationHelper.showNotification( HomeActivity.this, "Report Uploading", - "Uploaded " + uploadedCount[0] + " of " + size + " reports"); + "Uploaded " + uploadedCount[0] + " of " + size + " reports");*/ + + NotificationHelper.showNotificationForReportUpload( + HomeActivity.this, + currentNotificationId, + "Upload Success", + "SKU: " + FileUtils.Current_SKU + " uploaded successfully."); //Log.e("Reports-size: ",""+reports.size()); if (uploadedCount[0] == size) { - Toast.makeText(HomeActivity.this, "All reports uploaded successfully", Toast.LENGTH_SHORT).show(); + //Toast.makeText(HomeActivity.this, "All reports uploaded successfully", Toast.LENGTH_SHORT).show(); reportsUploadBtn.setEnabled(true); } } @@ -622,15 +630,22 @@ private int generateRandomNumber(int min, int max) { uploadedCount[0]++; // Even on failure, increment the counter to avoid locking the button forever //logErrorToFile(throwable); - NotificationHelper.showNotification( + /*NotificationHelper.showNotification( HomeActivity.this, "Report Uploading", - "Uploaded " + uploadedCount[0] + " of " + size + " reports (with some errors)"); + "Uploaded " + uploadedCount[0] + " of " + size + " reports (with some errors)");*/ + + NotificationHelper.showNotificationForReportUpload( + HomeActivity.this, + currentNotificationId, + "Upload Failed", + "SKU: " + FileUtils.Current_SKU + " failed.\nReason: " + throwable.getMessage()); + if (uploadedCount[0] == size) { reportsUploadBtn.setEnabled(true); - Toast.makeText(HomeActivity.this, "Finished uploading with some errors", Toast.LENGTH_SHORT).show(); + //Toast.makeText(HomeActivity.this, "Finished uploading with some errors", Toast.LENGTH_SHORT).show(); } } }); diff --git a/app/src/main/java/com/utopiaindustries/qualitychecker/utils/FileUtils.java b/app/src/main/java/com/utopiaindustries/qualitychecker/utils/FileUtils.java index baa55f3..41df300 100644 --- a/app/src/main/java/com/utopiaindustries/qualitychecker/utils/FileUtils.java +++ b/app/src/main/java/com/utopiaindustries/qualitychecker/utils/FileUtils.java @@ -36,6 +36,7 @@ import java.util.Objects; import java.util.function.Consumer; public class FileUtils { + public static String Current_SKU = ""; public static String writeFile( Context context , byte[] content, String fileName ){