From b2cf9380a0de17485b1acb6697d761bac4244a4e Mon Sep 17 00:00:00 2001 From: "saad.siddiq" Date: Thu, 19 Jun 2025 15:25:24 +0500 Subject: [PATCH] Change draft functionality Release new version 1.8 --- app/build.gradle | 4 +- .../apiservice/RetrofitClient.java | 2 +- .../qualitychecker/db/ReportRepository.java | 24 ++++- .../ui/fragments/FirstStepFragment.java | 93 ++++++++++++++++--- .../ui/fragments/SecondStepFragment.java | 12 ++- .../ui/fragments/ThirdStepFragment.java | 12 ++- .../main/res/layout/fragment_first_step.xml | 8 +- .../main/res/layout/fragment_second_step.xml | 9 ++ .../main/res/layout/fragment_third_step.xml | 9 ++ 9 files changed, 148 insertions(+), 25 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 864aace..efba911 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId "com.utopiaindustries.qualitychecker" minSdk 24 targetSdk 34 - versionCode 8 - versionName "1.7" + versionCode 9 + versionName "1.8" 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 70a96f8..1e69026 100644 --- a/app/src/main/java/com/utopiaindustries/qualitychecker/apiservice/RetrofitClient.java +++ b/app/src/main/java/com/utopiaindustries/qualitychecker/apiservice/RetrofitClient.java @@ -20,7 +20,7 @@ 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 = "http://192.168.91.44:8081/uind/"; private static Retrofit retrofit; diff --git a/app/src/main/java/com/utopiaindustries/qualitychecker/db/ReportRepository.java b/app/src/main/java/com/utopiaindustries/qualitychecker/db/ReportRepository.java index 7c6b350..2cfcbe4 100644 --- a/app/src/main/java/com/utopiaindustries/qualitychecker/db/ReportRepository.java +++ b/app/src/main/java/com/utopiaindustries/qualitychecker/db/ReportRepository.java @@ -6,6 +6,7 @@ import static com.utopiaindustries.qualitychecker.db.DatabaseHelper.DRAFT_REPORT import android.annotation.SuppressLint; import android.content.ContentValues; import android.content.Context; +import android.content.SharedPreferences; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.util.Log; @@ -23,10 +24,12 @@ public class ReportRepository { private final DatabaseHelper dbHelper; private SQLiteDatabase database; private final ExecutorService executorService; + private Context cxt; public ReportRepository(Context context) { dbHelper = new DatabaseHelper(context); executorService = Executors.newSingleThreadExecutor(); + cxt = context; } private void openDatabase() { @@ -116,20 +119,35 @@ public class ReportRepository { } public void insertDraft(InspectionReportWrapper wrapper, String fnsku) { - System.out.println("Report-ID: "+ wrapper.getId()); + //System.out.println("Report-ID: "+ wrapper.getId()); + long[] recordId = new long[1]; executeSafely(() -> { openDatabase(); database.beginTransaction(); try { ContentValues values = new ContentValues(); if (wrapper.getId() != 0) { - System.out.println("final-insertion: " + wrapper.getId()); + //System.out.println("final-insertion: " + wrapper.getId()); values.put(DatabaseHelper.DRAFT_REPORT_COLUMN_ID, wrapper.getId()); + //Log.e("RecordId-Existing: ",""+wrapper.getId()); + recordId[0] = wrapper.getId(); } values.put(DatabaseHelper.DRAFT_REPORT_COLUMN_CONTENT, wrapper.getContent()); values.put(DatabaseHelper.DRAFT_REPORT_COLUMN_SYNCED, wrapper.isSynced()); - database.insertWithOnConflict(DRAFT_REPORT_TABLE_NAME, null, values, SQLiteDatabase.CONFLICT_REPLACE); + //database.insertWithOnConflict(DRAFT_REPORT_TABLE_NAME, null, values, SQLiteDatabase.CONFLICT_REPLACE); + long rowId = database.insertWithOnConflict(DRAFT_REPORT_TABLE_NAME, null, values, SQLiteDatabase.CONFLICT_REPLACE); database.setTransactionSuccessful(); + if (wrapper.getId() == 0 && rowId != -1) { + //Log.e("RecordId-New: ", "" + rowId); + recordId[0] = rowId; + } + + SharedPreferences sharedPreferences = cxt.getSharedPreferences("login_prefs", Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sharedPreferences.edit(); + + editor.putString("draftReportId", String.valueOf(recordId[0])); + editor.apply(); + } catch (Exception e) { e.printStackTrace(); } finally { diff --git a/app/src/main/java/com/utopiaindustries/qualitychecker/ui/fragments/FirstStepFragment.java b/app/src/main/java/com/utopiaindustries/qualitychecker/ui/fragments/FirstStepFragment.java index 4ad7d56..187da6c 100644 --- a/app/src/main/java/com/utopiaindustries/qualitychecker/ui/fragments/FirstStepFragment.java +++ b/app/src/main/java/com/utopiaindustries/qualitychecker/ui/fragments/FirstStepFragment.java @@ -536,6 +536,10 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener if (!s.toString().isEmpty() && s.toString() != null) { trackSampleCode(Integer.parseInt(s.toString()), (int) Double.parseDouble(inspectionLevel), Double.parseDouble(qualityLevelMajor), Double.parseDouble(qualityLevelMinor)); } + else { + aqlSampleSize.setText(""); + } + } catch (Exception e) { e.printStackTrace(); @@ -734,6 +738,10 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener public void onTextChanged(CharSequence s, int start, int before, int count) { try { store.getReport().getItems().get(0).setSampleSize(Long.parseLong(s.toString())); + + /*if (!s.toString().isEmpty() && s.toString() != null) { + trackSampleCodeWithSampleSize((int) Double.parseDouble(inspectionLevel), Double.parseDouble(qualityLevelMajor), Double.parseDouble(qualityLevelMinor),Integer.parseInt(s.toString())); + }*/ } catch (Exception e) { store.getReport().getItems().get(0).setSampleSize(0); } @@ -805,7 +813,7 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener editor.putString("draftReportId", "0"); editor.apply(); - Objects.requireNonNull(getActivity()).finish(); + //Objects.requireNonNull(getActivity()).finish(); NotificationHelper.showNotification(Objects.requireNonNull(getContext()), "Utopia QA App", "Report is successfully drafted"); @@ -977,23 +985,36 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener //Log.e("Carton: ",""+String.valueOf(store.getReport().getItems().get(0).getCartonsSelected())); - boxCartonSelected.setText(String.valueOf(store.getReport().getItems().get(0).getCartonsSelected())); + boxCartonSelected.setText(store.getReport().getItems().get(0).getCartonsSelected() != 0 + ? String.valueOf(store.getReport().getItems().get(0).getCartonsSelected()) : ""); + //itemPerBoxSelected.setText(String.valueOf(store.getReport().getItems().get(0).getPacksSelected())); //piecesSelected.setText(String.valueOf(store.getReport().getItems().get(0).getPiecesSelected())); - checkedBoxCartonSelected.setText(String.valueOf(store.getReport().getItems().get(0).getCheckedCartonsSelected())); + checkedBoxCartonSelected.setText(store.getReport().getItems().get(0).getCheckedCartonsSelected() != 0 + ? String.valueOf(store.getReport().getItems().get(0).getCheckedCartonsSelected()) : ""); + //checkedItemPerBoxSelected.setText(String.valueOf(store.getReport().getItems().get(0).getCheckedPacksSelected())); //checkedPiecesSelected.setText(String.valueOf(store.getReport().getItems().get(0).getCheckedPiecesSelected())); - cartonWeight.setText(String.valueOf(store.getReport().getItems().get(0).getCartonWeight())); - cartonLength.setText(String.valueOf(store.getReport().getItems().get(0).getCartonLength())); - cartonWidth.setText(String.valueOf(store.getReport().getItems().get(0).getCartonWidth())); - cartonHeight.setText(String.valueOf(store.getReport().getItems().get(0).getCartonHeight())); + cartonWeight.setText(store.getReport().getItems().get(0).getCartonWeight() != 0.0f + ? String.valueOf(store.getReport().getItems().get(0).getCartonWeight()) : ""); + cartonLength.setText(store.getReport().getItems().get(0).getCartonLength() != 0.0f + ? String.valueOf(store.getReport().getItems().get(0).getCartonLength()) : ""); + cartonWidth.setText(store.getReport().getItems().get(0).getCartonWidth() != 0.0f + ? String.valueOf(store.getReport().getItems().get(0).getCartonWidth()) : ""); + cartonHeight.setText(store.getReport().getItems().get(0).getCartonHeight() != 0.0f + ? String.valueOf(store.getReport().getItems().get(0).getCartonHeight()) : ""); + + packWeight.setText(store.getReport().getItems().get(0).getPackWeight() != 0.0f + ? String.valueOf(store.getReport().getItems().get(0).getPackWeight()) : ""); + packLength.setText(store.getReport().getItems().get(0).getPackLength() != 0.0f + ? String.valueOf(store.getReport().getItems().get(0).getPackLength()) : ""); + packWidth.setText(store.getReport().getItems().get(0).getPackWidth() != 0.0f + ? String.valueOf(store.getReport().getItems().get(0).getPackWidth()) : ""); + packHeight.setText(store.getReport().getItems().get(0).getPackHeight() != 0.0f + ? String.valueOf(store.getReport().getItems().get(0).getPackHeight()) : ""); - packWeight.setText(String.valueOf(store.getReport().getItems().get(0).getPackWeight())); - packLength.setText(String.valueOf(store.getReport().getItems().get(0).getPackLength())); - packWidth.setText(String.valueOf(store.getReport().getItems().get(0).getPackWidth())); - packHeight.setText(String.valueOf(store.getReport().getItems().get(0).getPackHeight())); aqlSampleSize.setText(String.valueOf(store.getReport().getItems().get(0).getSampleSize())); @@ -1320,6 +1341,56 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener } + private void trackSampleCodeWithSampleSize(int inspectionLevel, double selectedLevelMajor, double selectedLevelMinor, int aqlSampleSizeValue) { + try { + String sampleCode = ""; + double levelMajor = 0.0, levelMinor = 0.0; + int sampleSizeMajor = 0; + int sampleSizeMinor = 0; + + List inspectionGeneralLabels = new InspectionLabelRepository(getContext()).getInspectionLabels(); + List inspectionAcceptableQualities = new InspectionLabelRepository(getContext()).getQualityLabels(); + + // Now determine the sample code based on aqlSampleSizeValue + outerLoop: + for (InspectionLabel label : inspectionGeneralLabels) { + if (label.getInspectionLevel() == inspectionLevel) { + // Look for the QualityLabel that matches the desired sample size and sample code + for (QualityLabel quality : inspectionAcceptableQualities) { + if (Objects.equals(quality.getSampleCode(), label.getSampleCode()) && + quality.getSampleSize() == aqlSampleSizeValue) { + sampleCode = label.getSampleCode(); + break outerLoop; + } + } + } + } + + // For level major and minor + for (QualityLabel quality : inspectionAcceptableQualities) { + if (Objects.equals(quality.getSampleCode(), sampleCode)) { + if (quality.getQualityLevel() == selectedLevelMajor) { + levelMajor = quality.getNoOfAcceptedDefects(); + sampleSizeMajor = quality.getSampleSize(); + } + + if (quality.getQualityLevel() == selectedLevelMinor) { + levelMinor = quality.getNoOfAcceptedDefects(); + sampleSizeMinor = quality.getSampleSize(); + } + } + } + + //store.getReport().getItems().get(0).setSampleSize(sampleSizeMajor); + store.getReport().getItems().get(0).setLevelMajorDefects((int) levelMajor); + store.getReport().getItems().get(0).setLevelMinorDefects((int) levelMinor); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + /*@Override public void onResume() { super.onResume(); diff --git a/app/src/main/java/com/utopiaindustries/qualitychecker/ui/fragments/SecondStepFragment.java b/app/src/main/java/com/utopiaindustries/qualitychecker/ui/fragments/SecondStepFragment.java index f696b7f..ed8c0a9 100644 --- a/app/src/main/java/com/utopiaindustries/qualitychecker/ui/fragments/SecondStepFragment.java +++ b/app/src/main/java/com/utopiaindustries/qualitychecker/ui/fragments/SecondStepFragment.java @@ -61,7 +61,7 @@ public class SecondStepFragment extends Fragment implements View.OnClickListener { private NavController navController; - private Button leftFab, rightFab, draftFab, moveToBottom; + private Button leftFab, rightFab, draftFab, moveToBottom, closeBtn; private RecyclerView recyclerView; private CheckPointAdapter adapter; private TextView profileName; @@ -84,6 +84,7 @@ public class SecondStepFragment extends Fragment draftFab = view.findViewById(R.id.button_draft_second); leftFab = view.findViewById(R.id.button_left_frag_2); rightFab = view.findViewById(R.id.button_right_frag_2); + closeBtn = view.findViewById(R.id.button_close); moveToBottom = view.findViewById(R.id.button_move_to_bottom); recyclerView = view.findViewById(R.id.check_point_recycler_view); profileName = view.findViewById(R.id.second_profile_name); @@ -130,6 +131,7 @@ public class SecondStepFragment extends Fragment leftFab.setOnClickListener(this); rightFab.setOnClickListener(this); draftFab.setOnClickListener(this); + closeBtn.setOnClickListener(this); moveToBottom.setOnClickListener(this); updateProfileViews(); return view; @@ -156,7 +158,7 @@ public class SecondStepFragment extends Fragment editor.putString("draftReportId", "0"); editor.apply(); // progressBar.setVisibility(View.INVISIBLE); - Objects.requireNonNull(getActivity()).finish(); + //Objects.requireNonNull(getActivity()).finish(); NotificationHelper.showNotification(Objects.requireNonNull(getContext()), "Utopia QA App", "Report is successfully drafted"); @@ -194,6 +196,12 @@ public class SecondStepFragment extends Fragment Log.e("Fab-Button","click"); scrollToBottom(); } + + if (v.getId() == R.id.button_close) { + if (getActivity() != null) { + getActivity().finish(); + } + } } public void onImagePickerResult(int requestCode, int resultCode, Intent data) { diff --git a/app/src/main/java/com/utopiaindustries/qualitychecker/ui/fragments/ThirdStepFragment.java b/app/src/main/java/com/utopiaindustries/qualitychecker/ui/fragments/ThirdStepFragment.java index 8cc49a3..151890d 100644 --- a/app/src/main/java/com/utopiaindustries/qualitychecker/ui/fragments/ThirdStepFragment.java +++ b/app/src/main/java/com/utopiaindustries/qualitychecker/ui/fragments/ThirdStepFragment.java @@ -87,7 +87,7 @@ import retrofit2.Response; public class ThirdStepFragment extends Fragment implements View.OnClickListener { private NavController navController; - private Button backBtn, nextBtn, openDimensionDialog, btnDraft; + private Button backBtn, nextBtn, openDimensionDialog, btnDraft, closeBtn; private ImageButton imagePicker, deleteImage; private TextView profileName; private ImageView profileImage; @@ -411,7 +411,7 @@ public class ThirdStepFragment extends Fragment implements View.OnClickListener editor.putString("draftReportId", "0"); editor.apply(); // progressBar.setVisibility(View.INVISIBLE); - Objects.requireNonNull(getActivity()).finish(); + //Objects.requireNonNull(getActivity()).finish(); NotificationHelper.showNotification(Objects.requireNonNull(getContext()), "Utopia QA App", "Report is successfully drafted"); @@ -442,6 +442,12 @@ public class ThirdStepFragment extends Fragment implements View.OnClickListener if (v.getId() == R.id.button_open_dimension) { openDimensionDialog(); } + + if (v.getId() == R.id.button_close) { + if (getActivity() != null) { + getActivity().finish(); + } + } } /*private void saveReportDirectlyToServer(Store store) { @@ -784,6 +790,7 @@ public class ThirdStepFragment extends Fragment implements View.OnClickListener backBtn = view.findViewById(R.id.button_left_frag_3); nextBtn = view.findViewById(R.id.button_right_frag_3); btnDraft = view.findViewById(R.id.button_draft_third); + closeBtn = view.findViewById(R.id.button_close); imagePicker = view.findViewById(R.id.image_picker); deleteImage = view.findViewById(R.id.delete_image); imageRecyclerView = view.findViewById(R.id.imageRecyclerView); @@ -865,6 +872,7 @@ public class ThirdStepFragment extends Fragment implements View.OnClickListener nextBtn.setOnClickListener(this); backBtn.setOnClickListener(this); btnDraft.setOnClickListener(this); + closeBtn.setOnClickListener(this); openDimensionDialog.setOnClickListener(this); } diff --git a/app/src/main/res/layout/fragment_first_step.xml b/app/src/main/res/layout/fragment_first_step.xml index 5c7b8d8..01e0493 100644 --- a/app/src/main/res/layout/fragment_first_step.xml +++ b/app/src/main/res/layout/fragment_first_step.xml @@ -734,18 +734,18 @@ android:id="@+id/button_left_frag_1" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignBaseline="@id/button_draft_first" + android:layout_alignBaseline="@id/button_show_history" android:layout_marginEnd="16dp" - android:layout_toStartOf="@id/button_draft_first" + android:layout_toStartOf="@id/button_show_history" android:text="Close" />