From e7e736c468a7358f11ce087c6b3084ed13cabb22 Mon Sep 17 00:00:00 2001 From: saif Date: Thu, 19 Sep 2024 12:06:32 +0500 Subject: [PATCH] - add standards in checkpoint sku wise --- .../qualitychecker/apiservice/ApiService.java | 4 + .../apiservice/RetrofitClient.java | 4 +- .../qualitychecker/db/DatabaseHelper.java | 16 +++ .../db/DimensionRepository.java | 1 - .../db/InspectionCheckpointSkuRepository.java | 110 ++++++++++++++++++ .../qualitychecker/db/ProductRepository.java | 23 ++-- .../models/InspectionCheckpointSku.java | 41 +++++++ .../service/InspectionReportService.java | 41 +++++++ .../qualitychecker/store/Store.java | 10 ++ .../ui/activities/HomeActivity.java | 29 +++++ .../ui/adapter/CheckPointAdapter.java | 22 +++- .../ui/fragments/FirstStepFragment.java | 101 ++++++++-------- .../ui/fragments/SecondStepFragment.java | 1 + app/src/main/res/layout/check_point.xml | 9 ++ app/src/main/res/values/colors.xml | 1 + 15 files changed, 341 insertions(+), 72 deletions(-) create mode 100644 app/src/main/java/com/utopiaindustries/qualitychecker/db/InspectionCheckpointSkuRepository.java create mode 100644 app/src/main/java/com/utopiaindustries/qualitychecker/models/InspectionCheckpointSku.java diff --git a/app/src/main/java/com/utopiaindustries/qualitychecker/apiservice/ApiService.java b/app/src/main/java/com/utopiaindustries/qualitychecker/apiservice/ApiService.java index d357ab7..e2d645e 100644 --- a/app/src/main/java/com/utopiaindustries/qualitychecker/apiservice/ApiService.java +++ b/app/src/main/java/com/utopiaindustries/qualitychecker/apiservice/ApiService.java @@ -2,6 +2,7 @@ package com.utopiaindustries.qualitychecker.apiservice; import com.utopiaindustries.qualitychecker.models.EmployeePhoto; import com.utopiaindustries.qualitychecker.models.InspectionCheckPoint; +import com.utopiaindustries.qualitychecker.models.InspectionCheckpointSku; import com.utopiaindustries.qualitychecker.models.InspectionDefect; import com.utopiaindustries.qualitychecker.models.InspectionDimension; import com.utopiaindustries.qualitychecker.models.InspectionReport; @@ -88,4 +89,7 @@ public interface ApiService { @GET( "rest/uic/cosmos-products/" ) Call> fetchAllProducts(); + + @GET( "rest/uic/inspection-report/inspection-sku-checkpoints" ) + Call> fetchSkuCheckpoints( ); } 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 dac0a01..674b9ac 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.16:8080/uind/"; +// private final static String BASE_URL = "https://portal.utopiaindustries.pk/uind/"; + private final static String BASE_URL = "http://192.168.91.16:8080/uind/"; private static Retrofit retrofit; diff --git a/app/src/main/java/com/utopiaindustries/qualitychecker/db/DatabaseHelper.java b/app/src/main/java/com/utopiaindustries/qualitychecker/db/DatabaseHelper.java index 8099a0c..67a0d8a 100644 --- a/app/src/main/java/com/utopiaindustries/qualitychecker/db/DatabaseHelper.java +++ b/app/src/main/java/com/utopiaindustries/qualitychecker/db/DatabaseHelper.java @@ -64,6 +64,14 @@ public class DatabaseHelper extends SQLiteOpenHelper { public static final String REPORT_COLUMN_CONTENT = "content"; public static final String REPORT_COLUMN_SYNCED = "synced"; + /* + * sku checkpoints standard + * */ + public static final String CHECKPOINT_SKU_TABLE_NAME = "checkpoint_sku"; + public static final String CHECKPOINT_SKU_SKU = "sku"; + public static final String CHECKPOINT_SKU_CHECKPOINT_ID = "checkpoint_id"; + public static final String CHECKPOINT_SKU_STANDARD = "standard"; + public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @@ -117,12 +125,19 @@ public class DatabaseHelper extends SQLiteOpenHelper { REPORT_COLUMN_SYNCED + " INTEGER DEFAULT 0 CHECK(synced IN (0, 1))" + ")"; + String CREATE_SKU_CHECKPOINT_TABLE = "CREATE TABLE " + CHECKPOINT_SKU_TABLE_NAME + " (" + + CHECKPOINT_SKU_SKU + " TEXT NOT NULL," + + CHECKPOINT_SKU_CHECKPOINT_ID + " INTEGER NOT NULL," + + CHECKPOINT_SKU_STANDARD + " TEXT," + + "PRIMARY KEY (" + CHECKPOINT_SKU_SKU + ", " + CHECKPOINT_SKU_CHECKPOINT_ID + "))"; + db.execSQL( CREATE_PRODUCT_TABLE ); db.execSQL( CREATE_INSPECTION_DIMENSION_TABLE ); db.execSQL( CREATE_CHECKPOINT_TABLE ); db.execSQL( CREATE_DEFECT_TABLE ); db.execSQL( CREATE_UNIT_TABLE ); db.execSQL( CREATE_REPORT_TABLE ); + db.execSQL( CREATE_SKU_CHECKPOINT_TABLE ); } @Override @@ -133,6 +148,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { db.execSQL( "DROP TABLE IF EXISTS " + DEFECT_TABLE_NAME ); db.execSQL( "DROP TABLE IF EXISTS " + UNIT_TABLE_NAME ); db.execSQL( "DROP TABLE IF EXISTS " + REPORT_TABLE_NAME ); + db.execSQL( "DROP TABLE IF EXISTS " + CHECKPOINT_SKU_TABLE_NAME ); onCreate(db); } } diff --git a/app/src/main/java/com/utopiaindustries/qualitychecker/db/DimensionRepository.java b/app/src/main/java/com/utopiaindustries/qualitychecker/db/DimensionRepository.java index b2f96da..07b17e3 100644 --- a/app/src/main/java/com/utopiaindustries/qualitychecker/db/DimensionRepository.java +++ b/app/src/main/java/com/utopiaindustries/qualitychecker/db/DimensionRepository.java @@ -67,7 +67,6 @@ public class DimensionRepository { null); List dimensions = new ArrayList<>(); - if ( cursor != null && cursor.moveToFirst() ) { do { InspectionDimension dimension = new InspectionDimension(); diff --git a/app/src/main/java/com/utopiaindustries/qualitychecker/db/InspectionCheckpointSkuRepository.java b/app/src/main/java/com/utopiaindustries/qualitychecker/db/InspectionCheckpointSkuRepository.java new file mode 100644 index 0000000..669edad --- /dev/null +++ b/app/src/main/java/com/utopiaindustries/qualitychecker/db/InspectionCheckpointSkuRepository.java @@ -0,0 +1,110 @@ +package com.utopiaindustries.qualitychecker.db; + +import android.annotation.SuppressLint; +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; + +import com.utopiaindustries.qualitychecker.models.InspectionCheckPoint; +import com.utopiaindustries.qualitychecker.models.InspectionCheckpointSku; +import com.utopiaindustries.qualitychecker.models.InspectionDimension; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +public class InspectionCheckpointSkuRepository { + + private final DatabaseHelper dbHelper; + private final SQLiteDatabase database; + private final ExecutorService executorService; + + public InspectionCheckpointSkuRepository( Context context ) { + dbHelper = new DatabaseHelper ( context ); + database = dbHelper.getWritableDatabase(); + executorService = Executors.newSingleThreadExecutor(); + } + public void insert( List checkPoints ) { + executorService.execute(() -> { + database.beginTransaction(); + try { + for ( InspectionCheckpointSku checkPoint : checkPoints ) { + ContentValues values = new ContentValues(); + values.put(DatabaseHelper.CHECKPOINT_SKU_SKU, checkPoint.getSku() ); + values.put(DatabaseHelper.CHECKPOINT_SKU_CHECKPOINT_ID, checkPoint.getCheckpointId() ); + values.put(DatabaseHelper.CHECKPOINT_SKU_STANDARD, checkPoint.getStandard() ); + database.insertWithOnConflict(DatabaseHelper.CHECKPOINT_SKU_TABLE_NAME, null, values, SQLiteDatabase.CONFLICT_REPLACE); + } + database.setTransactionSuccessful(); + } finally { + database.endTransaction(); + close(); + } + }); + } + + @SuppressLint("Range") + public List findBySku(String sku ){ + + String selection = DatabaseHelper.CHECKPOINT_SKU_SKU + "=?"; + String[] selectionArgs = {sku}; + + Cursor cursor = database.query( DatabaseHelper.CHECKPOINT_SKU_TABLE_NAME, + null, + selection, + selectionArgs, + null, + null, + null); + + List checkpointSkus = new ArrayList<>(); + if ( cursor != null && cursor.moveToFirst() ) { + do { + InspectionCheckpointSku checkpointSku = new InspectionCheckpointSku(); + checkpointSku.setSku( cursor.getString( cursor.getColumnIndex( DatabaseHelper.CHECKPOINT_SKU_SKU ))); + checkpointSku.setCheckpointId( cursor.getLong(cursor.getColumnIndex( DatabaseHelper.CHECKPOINT_SKU_CHECKPOINT_ID ))); + checkpointSku.setStandard( cursor.getString(cursor.getColumnIndex(DatabaseHelper.CHECKPOINT_SKU_STANDARD ))); + checkpointSkus.add( checkpointSku ); + } while ( cursor.moveToNext() ); + cursor.close(); + } + close(); + return checkpointSkus; + } + + + @SuppressLint("Range") + public List findAll( ) { + Cursor cursor = database.query( DatabaseHelper.CHECKPOINT_TABLE_NAME, + null, + null, + null, + null, + null, + null); + + List checkPoints = new ArrayList<>(); + if (cursor != null && cursor.moveToFirst()) { + do { + InspectionCheckpointSku checkPoint = new InspectionCheckpointSku(); + checkPoint.setSku(cursor.getString( cursor.getColumnIndex(DatabaseHelper.CHECKPOINT_SKU_SKU ))); + checkPoint.setCheckpointId(cursor.getLong(cursor.getColumnIndex(DatabaseHelper.CHECKPOINT_SKU_CHECKPOINT_ID) )); + checkPoint.setStandard(cursor.getString(cursor.getColumnIndex(DatabaseHelper.CHECKPOINT_SKU_STANDARD ))); + checkPoints.add( checkPoint ); + } while ( cursor.moveToNext() ); + cursor.close(); + } + close(); + return checkPoints; + } + + /* + * Close the database + */ + public void close() { + dbHelper.close(); + executorService.shutdown(); + } +} diff --git a/app/src/main/java/com/utopiaindustries/qualitychecker/db/ProductRepository.java b/app/src/main/java/com/utopiaindustries/qualitychecker/db/ProductRepository.java index 7222574..56e050d 100644 --- a/app/src/main/java/com/utopiaindustries/qualitychecker/db/ProductRepository.java +++ b/app/src/main/java/com/utopiaindustries/qualitychecker/db/ProductRepository.java @@ -1,5 +1,8 @@ package com.utopiaindustries.qualitychecker.db; +import static com.utopiaindustries.qualitychecker.db.DatabaseHelper.PRODUCT_COLUMN_ASIN; +import static com.utopiaindustries.qualitychecker.db.DatabaseHelper.PRODUCT_COLUMN_MARKETPLACE; + import android.annotation.SuppressLint; import android.content.ContentValues; import android.content.Context; @@ -35,7 +38,7 @@ public class ProductRepository { try { for (Product product : products) { ContentValues values = new ContentValues(); - values.put(DatabaseHelper.PRODUCT_COLUMN_ASIN, product.getAsin()); + values.put(PRODUCT_COLUMN_ASIN, product.getAsin()); values.put(DatabaseHelper.PRODUCT_COLUMN_PARENT_ASIN, product.getParentAsin()); values.put(DatabaseHelper.PRODUCT_COLUMN_MARKETPLACE, product.getMarketplace()); values.put(DatabaseHelper.PRODUCT_COLUMN_SKU, product.getSku()); @@ -65,7 +68,7 @@ public class ProductRepository { public void insert(Product product) { executorService.execute(() -> { ContentValues values = new ContentValues(); - values.put(DatabaseHelper.PRODUCT_COLUMN_ASIN, product.getAsin()); + values.put(PRODUCT_COLUMN_ASIN, product.getAsin()); values.put(DatabaseHelper.PRODUCT_COLUMN_PARENT_ASIN, product.getParentAsin()); values.put(DatabaseHelper.PRODUCT_COLUMN_MARKETPLACE, product.getMarketplace()); values.put(DatabaseHelper.PRODUCT_COLUMN_SKU, product.getSku()); @@ -89,9 +92,13 @@ public class ProductRepository { * Retrieve product by sku * */ @SuppressLint("Range") - public List getProductBySku(String sku) { - String selection = DatabaseHelper.PRODUCT_COLUMN_SKU + "=?"; - String[] selectionArgs = {sku}; + public List getProductBySkuOrAsin(String sku, String marketplace) { + String selection = "(" + DatabaseHelper.PRODUCT_COLUMN_SKU + "=? OR " + PRODUCT_COLUMN_ASIN + "=? )"; + String[] selectionArgs = {sku,sku}; + if( marketplace != null && ! marketplace.isEmpty() ){ + selection += "AND " + PRODUCT_COLUMN_MARKETPLACE + "=?"; + selectionArgs = new String[]{ sku, sku, marketplace }; + } Cursor cursor = database.query(DatabaseHelper.PRODUCT_TABLE_NAME, null, @@ -104,7 +111,7 @@ public class ProductRepository { if (cursor != null && cursor.moveToFirst()) { do { Product product = new Product(); - product.setAsin(cursor.getString(cursor.getColumnIndex(DatabaseHelper.PRODUCT_COLUMN_ASIN))); + product.setAsin(cursor.getString(cursor.getColumnIndex(PRODUCT_COLUMN_ASIN))); product.setParentAsin(cursor.getString(cursor.getColumnIndex(DatabaseHelper.PRODUCT_COLUMN_PARENT_ASIN))); product.setMarketplace(cursor.getString(cursor.getColumnIndex(DatabaseHelper.PRODUCT_COLUMN_MARKETPLACE))); product.setSku(cursor.getString(cursor.getColumnIndex(DatabaseHelper.PRODUCT_COLUMN_SKU))); @@ -132,7 +139,7 @@ public class ProductRepository { * */ @SuppressLint("Range") public Product getProduct(String asin, String marketplace, String sku) { - String selection = DatabaseHelper.PRODUCT_COLUMN_ASIN + "=? AND " + + String selection = PRODUCT_COLUMN_ASIN + "=? AND " + DatabaseHelper.PRODUCT_COLUMN_MARKETPLACE + "=? AND " + DatabaseHelper.PRODUCT_COLUMN_SKU + "=?"; String[] selectionArgs = {asin, marketplace, sku}; @@ -145,7 +152,7 @@ public class ProductRepository { if (cursor != null && cursor.moveToFirst()) { Product product = new Product(); - product.setAsin( cursor.getString( cursor.getColumnIndex(DatabaseHelper.PRODUCT_COLUMN_ASIN ) )); + product.setAsin( cursor.getString( cursor.getColumnIndex(PRODUCT_COLUMN_ASIN ) )); product.setParentAsin( cursor.getString( cursor.getColumnIndex( DatabaseHelper.PRODUCT_COLUMN_PARENT_ASIN ) )); product.setMarketplace( cursor.getString( cursor.getColumnIndex( DatabaseHelper.PRODUCT_COLUMN_MARKETPLACE ))); product.setSku(cursor.getString(cursor.getColumnIndex(DatabaseHelper.PRODUCT_COLUMN_SKU))); diff --git a/app/src/main/java/com/utopiaindustries/qualitychecker/models/InspectionCheckpointSku.java b/app/src/main/java/com/utopiaindustries/qualitychecker/models/InspectionCheckpointSku.java new file mode 100644 index 0000000..548119b --- /dev/null +++ b/app/src/main/java/com/utopiaindustries/qualitychecker/models/InspectionCheckpointSku.java @@ -0,0 +1,41 @@ +package com.utopiaindustries.qualitychecker.models; + +public class InspectionCheckpointSku { + + private String sku; + private long checkpointId; + private String standard; + + public InspectionCheckpointSku() { + } + + public InspectionCheckpointSku(String sku, long checkpointId, String standard) { + this.sku = sku; + this.checkpointId = checkpointId; + this.standard = standard; + } + + public String getSku() { + return sku; + } + + public void setSku(String sku) { + this.sku = sku; + } + + public long getCheckpointId() { + return checkpointId; + } + + public void setCheckpointId(long checkpointId) { + this.checkpointId = checkpointId; + } + + public String getStandard() { + return standard; + } + + public void setStandard(String standard) { + this.standard = standard; + } +} 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 5f6d522..76cc57d 100644 --- a/app/src/main/java/com/utopiaindustries/qualitychecker/service/InspectionReportService.java +++ b/app/src/main/java/com/utopiaindustries/qualitychecker/service/InspectionReportService.java @@ -9,10 +9,12 @@ import com.utopiaindustries.qualitychecker.apiservice.ApiServiceFactory; import com.utopiaindustries.qualitychecker.db.CheckpointRepository; import com.utopiaindustries.qualitychecker.db.DefectRepository; import com.utopiaindustries.qualitychecker.db.DimensionRepository; +import com.utopiaindustries.qualitychecker.db.InspectionCheckpointSkuRepository; import com.utopiaindustries.qualitychecker.db.ItemRepository; import com.utopiaindustries.qualitychecker.db.ProductRepository; import com.utopiaindustries.qualitychecker.db.ReportRepository; import com.utopiaindustries.qualitychecker.models.InspectionCheckPoint; +import com.utopiaindustries.qualitychecker.models.InspectionCheckpointSku; import com.utopiaindustries.qualitychecker.models.InspectionDefect; import com.utopiaindustries.qualitychecker.models.InspectionDimension; import com.utopiaindustries.qualitychecker.models.InspectionItemCheckPoint; @@ -253,6 +255,13 @@ public class InspectionReportService { }).start(); } + public void fetchAndPopulateSkuCheckpoints( SaveItemCallback callback, + InspectionCheckpointSkuRepository repository ){ + new Thread(() -> { + populateSkuCheckpoints( callback, repository ); + }).start(); + } + private void populateProducts( SaveProductCallBack callback, ProductRepository repository ){ @@ -393,4 +402,36 @@ public class InspectionReportService { } ); } + + /* + * populate sku checkpoints tagging + * */ + private void populateSkuCheckpoints( SaveItemCallback callback , + InspectionCheckpointSkuRepository repository){ + apiService.fetchSkuCheckpoints().enqueue( + new Callback>() { + @Override + public void onResponse( Call> call, + Response> response) { + if (response.isSuccessful()) { + try { + System.out.println( response.body() ); + callback.onSuccess(); + repository.insert( response.body() ); + } catch ( Exception ex ){ + callback.onFailure(new Exception( ex.getMessage() ) ); + } + } else { + callback.onFailure(new Exception("API call failed with status code: " + response.code())); + } + } + @Override + public void onFailure( Call> call, + Throwable t) { + System.out.println( t ); + callback.onFailure( t ); + } + } + ); + } } \ No newline at end of file diff --git a/app/src/main/java/com/utopiaindustries/qualitychecker/store/Store.java b/app/src/main/java/com/utopiaindustries/qualitychecker/store/Store.java index e2de661..bd37e04 100644 --- a/app/src/main/java/com/utopiaindustries/qualitychecker/store/Store.java +++ b/app/src/main/java/com/utopiaindustries/qualitychecker/store/Store.java @@ -9,6 +9,7 @@ import com.utopiaindustries.qualitychecker.db.DefectRepository; import com.utopiaindustries.qualitychecker.db.ItemRepository; import com.utopiaindustries.qualitychecker.models.EmployeePhoto; import com.utopiaindustries.qualitychecker.models.InspectionCheckPoint; +import com.utopiaindustries.qualitychecker.models.InspectionCheckpointSku; import com.utopiaindustries.qualitychecker.models.InspectionDefect; import com.utopiaindustries.qualitychecker.models.InspectionDimension; import com.utopiaindustries.qualitychecker.models.InspectionItemCheckPoint; @@ -35,6 +36,7 @@ public class Store { private List products; private EmployeePhoto employeePhoto; private List itemUnits; + private List checkpointSkus; private Store(){ } @@ -224,6 +226,14 @@ public class Store { this.dimensionList = dimensionList; } + public List getCheckpointSkus() { + return checkpointSkus; + } + + public void setCheckpointSkus(List checkpointSkus) { + this.checkpointSkus = checkpointSkus; + } + @Override public String toString() { return "Store{" + 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 355fef5..6c9506c 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 @@ -30,6 +30,7 @@ import com.utopiaindustries.qualitychecker.apiservice.ApiServiceFactory; import com.utopiaindustries.qualitychecker.db.CheckpointRepository; import com.utopiaindustries.qualitychecker.db.DefectRepository; import com.utopiaindustries.qualitychecker.db.DimensionRepository; +import com.utopiaindustries.qualitychecker.db.InspectionCheckpointSkuRepository; import com.utopiaindustries.qualitychecker.db.ItemRepository; import com.utopiaindustries.qualitychecker.db.ProductRepository; import com.utopiaindustries.qualitychecker.models.EmployeePhoto; @@ -159,6 +160,7 @@ public class HomeActivity extends AppCompatActivity implements View.OnClickListe fetchAndPopulateCheckpointData(); fetchAndPopulateDefectsData(); fetchAndPopulateUnitsData(); + fetchAndPopulateSkuCheckpointsData(); } else { Toast.makeText( this, "network not available", Toast.LENGTH_LONG ).show(); } @@ -336,6 +338,33 @@ public class HomeActivity extends AppCompatActivity implements View.OnClickListe }, new ItemRepository( this ) ); } + private void fetchAndPopulateSkuCheckpointsData(){ + + NotificationHelper.showProductNotification( + this, + "Utopia QA App", + "Fetching sku checkpoints Details."); + inspectionReportService.fetchAndPopulateSkuCheckpoints( new SaveItemCallback() { + @Override + public void onSuccess() { + Toast.makeText( HomeActivity.this, "Sku Cps successfully synced", Toast.LENGTH_LONG ).show(); + NotificationHelper.showProductNotification( + HomeActivity.this, + "Utopia QA App", + "Sku Cps successfully synced"); + } + + @Override + public void onFailure(Throwable throwable) { + Toast.makeText( HomeActivity.this, "Error in Sku Cps syncing " + throwable.getMessage(), Toast.LENGTH_LONG ).show(); + NotificationHelper.showProductNotification( + HomeActivity.this, + "Utopia QA App", + "Error in Sku Cps " ); + } + }, new InspectionCheckpointSkuRepository( this ) ); + } + private boolean isNetworkConnected() { diff --git a/app/src/main/java/com/utopiaindustries/qualitychecker/ui/adapter/CheckPointAdapter.java b/app/src/main/java/com/utopiaindustries/qualitychecker/ui/adapter/CheckPointAdapter.java index 2ffb041..9bb0392 100644 --- a/app/src/main/java/com/utopiaindustries/qualitychecker/ui/adapter/CheckPointAdapter.java +++ b/app/src/main/java/com/utopiaindustries/qualitychecker/ui/adapter/CheckPointAdapter.java @@ -26,6 +26,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.utopiaindustries.qualitychecker.R; import com.utopiaindustries.qualitychecker.models.InspectionCheckPoint; +import com.utopiaindustries.qualitychecker.models.InspectionCheckpointSku; import com.utopiaindustries.qualitychecker.models.InspectionDefect; import com.utopiaindustries.qualitychecker.models.InspectionItemCheckPoint; @@ -39,17 +40,20 @@ public class CheckPointAdapter extends private final List checkPoints; private final List defects; private final List defectTypes; + private final List checkpointSkus; private final Context context; public CheckPointAdapter( List checkPointList, List checkPoints, List defects, List defectTypes, + List checkpointSkus, Context context ) { this.checkPointList = checkPointList; this.checkPoints = checkPoints; this.defects = defects; this.defectTypes = defectTypes; + this.checkpointSkus = checkpointSkus; this.context = context; } @@ -69,7 +73,7 @@ public class CheckPointAdapter extends @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { InspectionItemCheckPoint checkPoint = checkPointList.get( position ); - holder.bind(checkPoints, defects, defectTypes, checkPoint, context ); + holder.bind(checkPoints, defects, defectTypes, checkPoint, checkpointSkus, context ); holder.setIsRecyclable(false); // spinner on change { @@ -143,12 +147,11 @@ public class CheckPointAdapter extends public static class ViewHolder extends RecyclerView.ViewHolder { private final Spinner checkpointSpinner; -// private final Spinner defectsSpinner, defectTypeSpinner; private final CheckBox okCheckBox, noCheckBox; private final EditText remarks; private final ImageButton imagePicker,deleteImage,addDefect; private final LinearLayout linearLayout; - private final TextView selectedImage; + private final TextView selectedImage,standard; private final ImageView imagePreview; private final RecyclerView defectRecyclerView; @@ -160,13 +163,12 @@ public class CheckPointAdapter extends noCheckBox = itemView.findViewById(R.id.check_point_no); imagePicker = itemView.findViewById(R.id.image_picker ); selectedImage = itemView.findViewById( R.id.selected_image ); -// defectsSpinner = itemView.findViewById(R.id.defect_spinner); -// defectTypeSpinner = itemView.findViewById(R.id.defect_type_spinner); linearLayout = itemView.findViewById(R.id.defect_layout); deleteImage = itemView.findViewById( R.id.delete_image ); imagePreview = itemView.findViewById( R.id.preview_image ); defectRecyclerView = itemView.findViewById( R.id.defects_recyclerview ); addDefect = itemView.findViewById( R.id.add_defect ); + standard = itemView.findViewById( R.id.standard ); } @@ -174,10 +176,10 @@ public class CheckPointAdapter extends List defects, List defectTypeOptions, InspectionItemCheckPoint data, + List checkpointSkus, Context context ) { // initialize recyclerview - List checkPointsList = checkPoints.stream().map(InspectionCheckPoint::getTitle).collect(Collectors.toList()); // Populate checklist Spinner dropdown @@ -209,6 +211,14 @@ public class CheckPointAdapter extends } InspectionCheckPoint cp = checkPoints.stream().filter(c ->c.getTitle().equalsIgnoreCase(defaultSelectedItem)).findFirst().get(); + // set standard + InspectionCheckpointSku cpSku = checkpointSkus.stream() + .filter( inspectionCheckpointSku -> inspectionCheckpointSku.getCheckpointId() == cp.getId() ) + .findFirst() + .orElse( new InspectionCheckpointSku() ); + if( cpSku.getStandard() != null && ! cpSku.getStandard().isEmpty() ){ + standard.setText( cpSku.getStandard() ); + } defectRecyclerView.setLayoutManager( new LinearLayoutManager( context ) ); DefectsAdapter defectsAdapter = new DefectsAdapter(data, defectTypeOptions, defects, cp); 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 820fa25..1b8fd5f 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 @@ -33,7 +33,9 @@ import com.utopiaindustries.qualitychecker.R; import com.utopiaindustries.qualitychecker.apiservice.ApiService; import com.utopiaindustries.qualitychecker.apiservice.ApiServiceFactory; import com.utopiaindustries.qualitychecker.db.DimensionRepository; +import com.utopiaindustries.qualitychecker.db.InspectionCheckpointSkuRepository; import com.utopiaindustries.qualitychecker.db.ProductRepository; +import com.utopiaindustries.qualitychecker.models.InspectionCheckpointSku; import com.utopiaindustries.qualitychecker.models.InspectionDimension; import com.utopiaindustries.qualitychecker.models.InspectionReportItem; import com.utopiaindustries.qualitychecker.models.Product; @@ -79,7 +81,7 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener searchSku.setOnClickListener( this ); scanBtn.setOnClickListener( this ); showHistoryBtn.setOnClickListener( this ); - populateItem( store.getProducts() ); + populateItem( store.getProducts(), true ); prePopulateData( store.getProducts() ); updateProfileViews(); @@ -102,13 +104,22 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener fri.setChecked( true ); } }); + // marketplace markerplace.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + + @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { if( parent.getItemAtPosition( position ) != null ){ String marketplaceOption = parent.getItemAtPosition( position ).toString(); store.getReport().getItems().get(0).setMarketplace( marketplaceOption ); + System.out.println( marketplaceOption ); + populateProductDataOnSelection( + store.getReport().getItems().get(0).getSku(), + marketplaceOption, + false + ); } } @@ -282,58 +293,8 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener } if( v.getId() == R.id.search_sku_btn ){ if( sku.getText() != null ){ - // setting the product details - String skuStr = sku.getText().toString().trim(); - List products = new ProductRepository( getContext() ).getProductBySku( skuStr ); - Product product = products.stream().findFirst().orElse( new Product() ); - store.getReport().getItems().get(0).setSku( skuStr ); - store.getReport().getItems().get(0).setAsin( product.getAsin() ); - populateItem( products ); - store.setProducts( products ); - - -// apiService.fetchProductBySku( skuStr ).enqueue( -// new Callback>() { -// @Override -// public void onResponse(Call> call, Response> response) { -// if( response.isSuccessful() && response.body() != null ){ -// Product product = response.body().stream().findFirst().orElse(new Product()); -// store.getReport().getItems().get(0).setSku( skuStr ); -// store.getReport().getItems().get(0).setAsin( product.getAsin() ); -// populateItem( response.body() ); -// store.setProducts( response.body() ); -// } else { -// Snackbar.make(v, "Error in response", Snackbar.LENGTH_LONG ).show(); -// } -// } -// -// @Override -// public void onFailure(Call> call, Throwable t) { -// System.out.println( t.getMessage() ); -// } -// } -// ); -// apiService.fetchDimensions( ).enqueue( -// new Callback>() { -// @Override -// public void onResponse(Call> call, Response> response) { -// if( response.isSuccessful() && response.body() != null ){ -// store.setDimensionList( response.body() ); -// } -// } -// -// @Override -// public void onFailure(Call> call, Throwable t) { -// System.out.println( t.getMessage() ); -// } -// } -// ); - if( product.getCategory() != null ){ - List dimensions = new DimensionRepository( getContext() ).findByCategory( - product.getCategory() - ); - store.setDimensionList( dimensions ); - } + populateProductDataOnSelection( sku.getText().toString(), "", true ); + populateSkuCheckpointsParams( sku.getText().toString() ); } } if( v.getId() == R.id.scan_sku_btn ){ @@ -348,6 +309,34 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener } } + private void populateSkuCheckpointsParams( String sku ){ + if( sku != null && ! sku.isEmpty() ){ + List checkpointSkus = new InspectionCheckpointSkuRepository( getContext() ) + .findBySku( sku ); + System.out.println( checkpointSkus ); + store.setCheckpointSkus( checkpointSkus ); + } + } + + private void populateProductDataOnSelection( String sku, String marketplace , boolean populateMarketplace){ + // setting the product details + if( sku != null ){ + String skuStr = sku.trim(); + List products = new ProductRepository( getContext() ).getProductBySkuOrAsin( skuStr, marketplace ); + System.out.println( products ); + Product product = products.stream().findFirst().orElse( new Product() ); + store.getReport().getItems().get(0).setSku( product.getSku() ); + store.getReport().getItems().get(0).setAsin( product.getAsin() ); + populateItem( products, populateMarketplace ); + store.setProducts( products ); + if( product.getCategory() != null ){ + List dimensions = new DimensionRepository( getContext() ).findByCategory( + product.getCategory() + ); + store.setDimensionList( dimensions ); + } + } + } private void prePopulateData( List products ){ fri.setChecked( store.getReport().getFri() ); refri.setChecked( ! store.getReport().getFri() ); @@ -373,8 +362,10 @@ public class FirstStepFragment extends Fragment implements View.OnClickListener } - private void populateItem( List products ){ - populateMarketplaces( products ); + private void populateItem( List products , boolean populateMarketplace){ + if( populateMarketplace ){ + populateMarketplaces( products ); + } populateMmodelNumber(products ); populateTitle( products ); populateColor( products ); 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 200b6b3..bac8bb4 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 @@ -88,6 +88,7 @@ public class SecondStepFragment extends Fragment store.getCheckPoints(), store.getDefects(), inspectionReportService.getDefectTypes(), + store.getCheckpointSkus(), getContext()); recyclerView.setAdapter( adapter ); // set on click listener diff --git a/app/src/main/res/layout/check_point.xml b/app/src/main/res/layout/check_point.xml index 1deebe7..e8066d3 100644 --- a/app/src/main/res/layout/check_point.xml +++ b/app/src/main/res/layout/check_point.xml @@ -138,5 +138,14 @@ + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 5769725..bb87861 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -9,5 +9,6 @@ #20830E #FF0000 #29DAF1 + #6DE2F1 #FFFFFF \ No newline at end of file