diff --git a/app/build.gradle b/app/build.gradle index 6c66fa9..5e6b0e7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -26,6 +26,10 @@ android { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } + + lintOptions { + checkReleaseBuilds false + } } dependencies { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5b82e4f..e4fd563 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,7 +12,6 @@ - + @@ -45,7 +47,7 @@ + android:exported="true" /> fragmentList = new ArrayList<>(); //Button btnNext; + ImageView imgLogout; @Override protected void onCreate(Bundle savedInstanceState) { @@ -53,6 +64,14 @@ public class HomeActivity extends AppCompatActivity { Toast.makeText( this, "No Internet Connection", Toast.LENGTH_LONG ).show(); } + imgLogout = findViewById(R.id.img_logout); + + imgLogout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + alertLogOut(HomeActivity.this); + } + }); //btnNext = findViewById(R.id.btn_next); // Initialize fragments @@ -87,6 +106,53 @@ public class HomeActivity extends AppCompatActivity { transaction.commit(); } + public void alertLogOut(Context con) { + ViewGroup viewGroup = findViewById(android.R.id.content); + + TextView dialogOkBtn, dialogCancelBtn; + + AlertDialog.Builder builder = new AlertDialog.Builder(con); + View view1 = LayoutInflater.from(con).inflate(R.layout.custom_layout_for_logout, viewGroup, false); + builder.setCancelable(false); + builder.setView(view1); + + dialogOkBtn = view1.findViewById(R.id.dialogOkBtn); + dialogCancelBtn = view1.findViewById(R.id.dialogCancelBtn); + + AlertDialog alertDialog = builder.create(); + alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + + dialogOkBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + + alertDialog.dismiss(); + + Preference.setMyBooleanPref(Helper.project_file, "isLoggedIn", getApplicationContext(), false); + Preference.setMyStringPref(Helper.project_file, Helper.firstTimeApiCall, getApplicationContext(), "false"); + + finish(); + Intent i = new Intent(HomeActivity.this, LoginActivity.class); + i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(i); + overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left); + + } + }); + + dialogCancelBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + + alertDialog.dismiss(); + //Toast.makeText(con, "Cancel", Toast.LENGTH_SHORT).show(); + + } + }); + + alertDialog.show(); + } + // Method to navigate to a specific fragment /*public void navigateToFragment(Fragment fragment, boolean addToBackStack) { androidx.fragment.app.FragmentTransaction transaction = getSupportFragmentManager() diff --git a/app/src/main/java/com/utopiaindustries/qualitycontrol/activities/LoginActivity.java b/app/src/main/java/com/utopiaindustries/qualitycontrol/activities/LoginActivity.java new file mode 100644 index 0000000..5382a85 --- /dev/null +++ b/app/src/main/java/com/utopiaindustries/qualitycontrol/activities/LoginActivity.java @@ -0,0 +1,154 @@ +package com.utopiaindustries.qualitycontrol.activities; + +import android.content.Intent; +import android.os.Bundle; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import androidx.activity.EdgeToEdge; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; +import androidx.lifecycle.ViewModelProvider; + +import com.utopiaindustries.qualitycontrol.R; +import com.utopiaindustries.qualitycontrol.apiservice.ApiService; +import com.utopiaindustries.qualitycontrol.apiservice.ApiServiceFactory; +import com.utopiaindustries.qualitycontrol.helper.Helper; +import com.utopiaindustries.qualitycontrol.helper.Preference; +import com.utopiaindustries.qualitycontrol.utils.ProgressDialogFragment; +import com.utopiaindustries.qualitycontrol.viewmodels.LoginViewModel; + +public class LoginActivity extends AppCompatActivity { + + EditText tfEmail, tfPassword; + Button btnLogin; + LoginViewModel loginViewModel; + ApiService apiService; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + EdgeToEdge.enable(this); + setContentView(R.layout.activity_login); + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { + Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); + return insets; + }); + + if (!Helper.isNetworkConnected(this)) { + Toast.makeText(this, "No Internet Connection", Toast.LENGTH_LONG).show(); + } + + initializeLayout(); + + btnLogin.setOnClickListener(v -> { + if (isValidate()) { + loginViewModel.isUserAuthenticated(tfEmail.getText().toString(), + tfPassword.getText().toString(), + new String[]{"ROLE_UIM_QC_APP_ACCESS_YES"}); + } + }); + } + + public void initializeLayout() { + tfEmail = findViewById(R.id.tf_email); + tfPassword = findViewById(R.id.tf_password); + btnLogin = findViewById(R.id.btn_login); + apiService = ApiServiceFactory.getApiService(); + + //tfEmail.setText("muhammad.mujtaba"); + //tfPassword.setText("Utopia01"); + + loginViewModel = new ViewModelProvider(this).get(LoginViewModel.class); + + loginViewModel.getLoadingState().observe(this, isLoading -> { + if (isLoading != null && isLoading) { + showProgressDialog(); + } else { + dismissProgressDialog(); + } + }); + + loginViewModel.getErrorMessage().observe(this, errorResponse -> { + if (errorResponse.isEmpty()) { + Toast.makeText(this, "Something went wrong", Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(this, errorResponse, Toast.LENGTH_SHORT).show(); + } + + }); + + loginViewModel.getLoginUser().observe(this, loginUser -> { + if (loginUser) { + Preference.setMyBooleanPref(Helper.project_file, "isLoggedIn", getApplicationContext(), true); + Preference.setMyStringPref(Helper.project_file,Helper.logInUser,this,tfEmail.getText().toString()); + + Intent intent = new Intent(this, HomeActivity.class); + startActivity(intent); + overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left); + finish(); + } + else { + Toast.makeText(this, "Login Failed", Toast.LENGTH_SHORT).show(); + } + }); + + /*loginViewModel.getUserLiveData().observe(this, user -> { + if (user != null) { + Preference.setMyBooleanPref(Helper.project_file, "isLoggedIn", getApplicationContext(), true); + Helper.setPreferenceObject(getApplicationContext(), user, "DriverResponse"); + + //Toast.makeText(this, "Welcome " + user.getTruckerName(), Toast.LENGTH_SHORT).show(); + Intent intent = new Intent(this, HomeActivity.class); + startActivity(intent); + overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left); + finish(); + } else { + Toast.makeText(this, "Login Failed", Toast.LENGTH_SHORT).show(); + } + });*/ + } + + public boolean isValidate() { + boolean returnValue = true; + String message = ""; + + if (tfPassword.getText().toString().isEmpty()) { + message = "Please enter password."; + returnValue = false; + } + + /*if (!Helper.isValidEmail(tfEmail.getText().toString())) { + message = "Please enter valid email."; + returnValue = false; + }*/ + + if (tfEmail.getText().toString().isEmpty()) { + message = "Please enter user name."; + returnValue = false; + } + + if (!returnValue) { + Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); + } + + return returnValue; + } + + public void showProgressDialog() { + ProgressDialogFragment progressDialog = new ProgressDialogFragment(); + progressDialog.setCancelable(false); + progressDialog.show(getSupportFragmentManager(), "progressDialog"); + } + + public void dismissProgressDialog() { + ProgressDialogFragment progressDialog = (ProgressDialogFragment) getSupportFragmentManager().findFragmentByTag("progressDialog"); + if (progressDialog != null) { + progressDialog.dismiss(); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/utopiaindustries/qualitycontrol/activities/SplashActivity.java b/app/src/main/java/com/utopiaindustries/qualitycontrol/activities/SplashActivity.java index 20080b6..14880e1 100644 --- a/app/src/main/java/com/utopiaindustries/qualitycontrol/activities/SplashActivity.java +++ b/app/src/main/java/com/utopiaindustries/qualitycontrol/activities/SplashActivity.java @@ -40,13 +40,13 @@ public class SplashActivity extends AppCompatActivity { new Handler().postDelayed(new Runnable() { public void run() { - Intent myIntent = new Intent(SplashActivity.this, HomeActivity.class); + /*Intent myIntent = new Intent(SplashActivity.this, HomeActivity.class); startActivity(myIntent); overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left); - finish(); + finish();*/ - /* if (isLoggedIn) { - Intent myIntent = new Intent(SplashActivity.this, MainActivity.class); + if (isLoggedIn) { + Intent myIntent = new Intent(SplashActivity.this, HomeActivity.class); startActivity(myIntent); overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left); finish(); @@ -55,7 +55,7 @@ public class SplashActivity extends AppCompatActivity { startActivity(myIntent); overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left); finish(); - }*/ + } } }, TIMER); } diff --git a/app/src/main/java/com/utopiaindustries/qualitycontrol/activities/SummaryActivity.java b/app/src/main/java/com/utopiaindustries/qualitycontrol/activities/SummaryActivity.java index 49e11b6..38e53bf 100644 --- a/app/src/main/java/com/utopiaindustries/qualitycontrol/activities/SummaryActivity.java +++ b/app/src/main/java/com/utopiaindustries/qualitycontrol/activities/SummaryActivity.java @@ -1,6 +1,11 @@ package com.utopiaindustries.qualitycontrol.activities; +import android.content.Intent; import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; @@ -9,9 +14,15 @@ import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import com.utopiaindustries.qualitycontrol.R; +import com.utopiaindustries.qualitycontrol.models.QualitySaveResponse; public class SummaryActivity extends AppCompatActivity { + TextView txtPercentage, txtCutting, txtStitching, txtChecking, txtPacking, txtSubStore; + String overallPercentage; + ImageView img_back; + QualitySaveResponse qualitySaveResponse; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -22,5 +33,44 @@ public class SummaryActivity extends AppCompatActivity { v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); + + initialization(); + + txtPercentage.setText(overallPercentage); + txtCutting.setText(qualitySaveResponse.getCutting()); + txtStitching.setText(qualitySaveResponse.getStiching()); + txtChecking.setText(qualitySaveResponse.getChecking()); + txtPacking.setText(qualitySaveResponse.getPacking()); + txtSubStore.setText(qualitySaveResponse.getSub_Store()); + + img_back.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + Intent intent = new Intent(SummaryActivity.this, HomeActivity.class); + startActivity(intent); + } + }); + + } + + public void initialization() { + qualitySaveResponse = (QualitySaveResponse) getIntent().getSerializableExtra("Summary"); + overallPercentage = getIntent().getStringExtra("Percentage"); + + /*Log.e("Cutting: ",""+qualitySaveResponse.getCutting()); + Log.e("Stitching: ",""+qualitySaveResponse.getStiching()); + Log.e("Checking: ",""+qualitySaveResponse.getChecking()); + Log.e("Packing: ",""+qualitySaveResponse.getPacking()); + Log.e("Substore: ",""+qualitySaveResponse.getSub_Store()); + Log.e("Overall: ",""+qualitySaveResponse.getOverAllPercentage());*/ + + img_back = findViewById(R.id.img_back); + txtPercentage = findViewById(R.id.txt_percentage); + txtCutting = findViewById(R.id.txt_cutting_percentage); + txtStitching = findViewById(R.id.txt_stitching_percentage); + txtChecking = findViewById(R.id.txt_checking_percentage); + txtPacking = findViewById(R.id.txt_packing_percentage); + txtSubStore = findViewById(R.id.txt_substore_percentage); } } \ No newline at end of file diff --git a/app/src/main/java/com/utopiaindustries/qualitycontrol/apiservice/ApiService.java b/app/src/main/java/com/utopiaindustries/qualitycontrol/apiservice/ApiService.java index 392efc6..ea2751a 100644 --- a/app/src/main/java/com/utopiaindustries/qualitycontrol/apiservice/ApiService.java +++ b/app/src/main/java/com/utopiaindustries/qualitycontrol/apiservice/ApiService.java @@ -20,11 +20,18 @@ public interface ApiService { );*/ @GET("rest/uic/quality-control/get-quality-control-data") - Call isUserAuthenticated(); + Call getQualityControlData(); @POST("rest/uic/quality-control/save-quality-control") Call saveQualityControlReport( @Body QualityControl request ); + + @POST("rest/authentication/authenticate-user") + Call isUserAuthenticated( + @Query("username") String username, + @Query("password") String password, + @Query("roles") String[] roles + ); } diff --git a/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/CheckingFragment.java b/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/CheckingFragment.java index 834a7e5..98abe08 100644 --- a/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/CheckingFragment.java +++ b/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/CheckingFragment.java @@ -73,7 +73,6 @@ public class CheckingFragment extends Fragment implements EasyPermissions.Permis Button nextButton; ImageButton imagePicker, deleteImage; EditText etPercentage, etRemarks; - QualityControlViewModel viewModel; List itemModelList = new ArrayList<>(); ItemStepsAdapter adapter; private int selectedPosition = -1; @@ -85,7 +84,7 @@ public class CheckingFragment extends Fragment implements EasyPermissions.Permis Uri selectedImage = result.getData().getData(); if (selectedPosition != -1 && selectedImage != null) { //imageView.setImageURI(selectedImage); - Log.e("Selected-Image: ", "" + selectedImage); + //Log.e("Selected-Image: ", "" + selectedImage); uriToByteArrayAsync( getContext(), @@ -139,13 +138,13 @@ public class CheckingFragment extends Fragment implements EasyPermissions.Permis } ); - Log.e("contentUri: ", "" + contentUri); + //Log.e("contentUri: ", "" + contentUri); if (result.getResultCode() == requireActivity().RESULT_OK && result.getData() != null) { Uri selectedImage = result.getData().getData(); if (selectedImage != null) { //imageView.setImageURI(selectedImage); - Log.e("Selected-Image: ", "" + selectedImage); + //Log.e("Selected-Image: ", "" + selectedImage); } } }); @@ -167,9 +166,9 @@ public class CheckingFragment extends Fragment implements EasyPermissions.Permis itemList.add(new Item("Safety", 0));*/ //New Implemented------------------ - if (Helper.getArrayList("ListChecking", getActivity()) != null) { + if (Helper.getArrayList(Helper.listChecking, getActivity()) != null) { itemModelList.clear(); - itemModelList.addAll(Helper.getArrayList("ListChecking", getActivity())); + itemModelList.addAll(Helper.getArrayList(Helper.listChecking, getActivity())); Log.e("itemModelList-size: ",""+itemModelList.size()); if (itemModelList != null) { @@ -206,7 +205,7 @@ public class CheckingFragment extends Fragment implements EasyPermissions.Permis List updatedItemList = itemModelList; // Or adapter.getItemList() - for (ItemModel item : updatedItemList) { + /*for (ItemModel item : updatedItemList) { Log.e("AdapterData", "ProcessId: " + item.getProcessId() + ", StepId: " + item.getStepId() + ", SpinnerSelection: " + item.getSelectedOption() + @@ -214,12 +213,11 @@ public class CheckingFragment extends Fragment implements EasyPermissions.Permis ", Percentage: " + item.getPercentage() + ", Remarks: " + item.getRemarks() + ", ImageList: " + item.getImageArrayList()); - } + }*/ - Helper.saveArrayList(itemModelList, "ListChecking",getActivity()); - viewModel.appendToQualityControlItemList(itemModelList); + Helper.saveArrayList(itemModelList, Helper.listChecking,getActivity()); - List updatedItemListP = new ArrayList<>(Helper.getArrayList("ListChecking", getActivity())); + //List updatedItemListP = new ArrayList<>(Helper.getArrayList("ListChecking", getActivity())); /* if (etRemarks.getText().toString().isEmpty()) { Toast.makeText(getActivity(), "Please enter remarks", Toast.LENGTH_SHORT).show(); @@ -258,8 +256,6 @@ public class CheckingFragment extends Fragment implements EasyPermissions.Permis private void initializeLayout(View view) { - viewModel = new ViewModelProvider(requireActivity()).get(QualityControlViewModel.class); - etPercentage = view.findViewById(R.id.et_percentage); etRemarks = view.findViewById(R.id.et_remarks); imagePicker = view.findViewById(R.id.image_picker); diff --git a/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/CuttingFragment.java b/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/CuttingFragment.java index 6d1641d..e7e2ab8 100644 --- a/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/CuttingFragment.java +++ b/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/CuttingFragment.java @@ -74,8 +74,6 @@ public class CuttingFragment extends Fragment implements EasyPermissions.Permiss String filePath = "no_pic"; ArrayList imageList = new ArrayList<>(); ArrayList qualityControlProcessStepList = new ArrayList<>(); - QualityControlResponse qualityControlResponse; - QualityControlViewModel viewModel; EditText etPercentage, etRemarks; List itemModelList = new ArrayList<>(); ItemStepsAdapter adapter; @@ -88,7 +86,7 @@ public class CuttingFragment extends Fragment implements EasyPermissions.Permiss Uri selectedImage = result.getData().getData(); if (selectedPosition != -1 && selectedImage != null) { //imageView.setImageURI(selectedImage); - Log.e("Selected-Image: ", "" + selectedImage); + //Log.e("Selected-Image: ", "" + selectedImage); uriToByteArrayAsync( getContext(), @@ -142,13 +140,13 @@ public class CuttingFragment extends Fragment implements EasyPermissions.Permiss } ); - Log.e("contentUri: ", "" + contentUri); + // Log.e("contentUri: ", "" + contentUri); if (result.getResultCode() == requireActivity().RESULT_OK && result.getData() != null) { Uri selectedImage = result.getData().getData(); if (selectedImage != null) { //imageView.setImageURI(selectedImage); - Log.e("Selected-Image: ", "" + selectedImage); + //Log.e("Selected-Image: ", "" + selectedImage); } } }); @@ -175,11 +173,11 @@ public class CuttingFragment extends Fragment implements EasyPermissions.Permiss //New Implemented------------------ - Log.e("Check-Cut: ",""+Helper.getArrayList("ListCutting", getActivity())); - if (Helper.getArrayList("ListCutting", getActivity()) != null) { + //Log.e("Check-Cut: ",""+Helper.getArrayList("ListCutting", getActivity())); + if (Helper.getArrayList(Helper.listCutting, getActivity()) != null) { itemModelList.clear(); - itemModelList.addAll(Helper.getArrayList("ListCutting", getActivity())); - Log.e("itemModelList-size: ", "" + itemModelList.size()); + itemModelList.addAll(Helper.getArrayList(Helper.listCutting, getActivity())); + //Log.e("itemModelList-size: ", "" + itemModelList.size()); if (itemModelList != null) { adapter = new ItemStepsAdapter(getActivity(), itemModelList, this); @@ -213,7 +211,7 @@ public class CuttingFragment extends Fragment implements EasyPermissions.Permiss List updatedItemList = itemModelList; // Or adapter.getItemList() - for (ItemModel item : updatedItemList) { + /*for (ItemModel item : updatedItemList) { Log.e("AdapterData", "ProcessId: " + item.getProcessId() + ", StepId: " + item.getStepId() + ", SpinnerSelection: " + item.getSelectedOption() + @@ -221,10 +219,9 @@ public class CuttingFragment extends Fragment implements EasyPermissions.Permiss ", Percentage: " + item.getPercentage() + ", Remarks: " + item.getRemarks() + ", ImageList: " + item.getImageArrayList()); - } + }*/ - Helper.saveArrayList(itemModelList, "ListCutting", getActivity()); - viewModel.appendToQualityControlItemList(itemModelList); + Helper.saveArrayList(itemModelList, Helper.listCutting, getActivity()); /*Log.e("Cutting: ","----------------"); Log.e("Sort: ",""+sharedViewModel.getCuttingSort()); @@ -309,8 +306,6 @@ public class CuttingFragment extends Fragment implements EasyPermissions.Permiss private void initializeLayout(View view) { - viewModel = new ViewModelProvider(requireActivity()).get(QualityControlViewModel.class); - etPercentage = view.findViewById(R.id.et_percentage); etRemarks = view.findViewById(R.id.et_remarks); imagePicker = view.findViewById(R.id.image_picker); @@ -563,4 +558,40 @@ public class CuttingFragment extends Fragment implements EasyPermissions.Permiss .show(); } + + public boolean isValidate(int rateCutting, int rateStitching, int rateChecking, int ratePacking, int rateSub) { + boolean returnValue = true; + String message = ""; + + if (rateSub == 0) { + message = "Please rate SubStore Process."; + returnValue = false; + } + + if (ratePacking == 0) { + message = "Please rate Packing Process."; + returnValue = false; + } + + if (rateChecking == 0) { + message = "Please rate Checking Process."; + returnValue = false; + } + + if (rateStitching == 0) { + message = "Please rate Stitching Process."; + returnValue = false; + } + + if (rateCutting == 0) { + message = "Please rate Cutting Process."; + returnValue = false; + } + + if (!returnValue) { + Toast.makeText(getActivity(), message, Toast.LENGTH_SHORT).show(); + } + + return returnValue; + } } \ No newline at end of file diff --git a/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/HomeFragment.java b/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/HomeFragment.java index 10631ae..5b90b14 100644 --- a/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/HomeFragment.java +++ b/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/HomeFragment.java @@ -34,9 +34,7 @@ import com.utopiaindustries.qualitycontrol.models.Department; import com.utopiaindustries.qualitycontrol.models.LocationFloor; import com.utopiaindustries.qualitycontrol.models.LocationSite; import com.utopiaindustries.qualitycontrol.models.LocationUnit; -import com.utopiaindustries.qualitycontrol.models.QualityControlProcess; import com.utopiaindustries.qualitycontrol.utils.ProgressDialogFragment; -import com.utopiaindustries.qualitycontrol.utils.QualityControlViewModel; import com.utopiaindustries.qualitycontrol.viewmodels.LoginViewModel; import java.text.SimpleDateFormat; @@ -47,7 +45,7 @@ import java.util.Locale; import java.util.Objects; import java.util.stream.Collectors; -public class HomeFragment extends Fragment implements DepartmentItemAdapter.OnItemClickListener{ +public class HomeFragment extends Fragment implements DepartmentItemAdapter.OnItemClickListener { AutoCompleteTextView locationSiteTextview, unitTextview, floorTextview; TextView txtCurrentDate; @@ -71,7 +69,7 @@ public class HomeFragment extends Fragment implements DepartmentItemAdapter.OnIt RecyclerView recyclerView; List filteredList; private DepartmentItemAdapter departmentItemAdapter; - QualityControlViewModel viewModel; + boolean isFromPrevious = false; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -90,9 +88,9 @@ public class HomeFragment extends Fragment implements DepartmentItemAdapter.OnIt unitTextview.setText("Select Unit"); floorTextview.setText("Select Floor"); - viewModel.setLocation(String.valueOf(clickedItem.getId())); - Preference.setMyStringPref(Helper.project_file,Helper.locationSiteId,getActivity(),String.valueOf(clickedItem.getId())); - Preference.setMyStringPref(Helper.project_file,Helper.locationSiteName,getActivity(),String.valueOf(clickedItem.getTitle())); + //viewModel.setLocation(String.valueOf(clickedItem.getId())); + Preference.setMyStringPref(Helper.project_file, Helper.locationSiteId, getActivity(), String.valueOf(clickedItem.getId())); + Preference.setMyStringPref(Helper.project_file, Helper.locationSiteName, getActivity(), String.valueOf(clickedItem.getTitle())); if (!locationUnitList.isEmpty()) { List filteredUnitItems = locationUnitList.stream() @@ -116,10 +114,10 @@ public class HomeFragment extends Fragment implements DepartmentItemAdapter.OnIt public void onItemClick(AdapterView parent, View view, int position, long id) { LocationUnit clickedItem = locationUnitListFiltered.get(position); - viewModel.setUnit(String.valueOf(clickedItem.getId())); - Preference.setMyStringPref(Helper.project_file,Helper.unitId,getActivity(),String.valueOf(clickedItem.getId())); - Preference.setMyStringPref(Helper.project_file,Helper.unitName,getActivity(),String.valueOf(clickedItem.getTitle())); - int targetSiteId = Integer.parseInt(Preference.getMyStringPref(Helper.project_file,Helper.locationSiteId,getActivity())); + //viewModel.setUnit(String.valueOf(clickedItem.getId())); + Preference.setMyStringPref(Helper.project_file, Helper.unitId, getActivity(), String.valueOf(clickedItem.getId())); + Preference.setMyStringPref(Helper.project_file, Helper.unitName, getActivity(), String.valueOf(clickedItem.getTitle())); + int targetSiteId = Integer.parseInt(Preference.getMyStringPref(Helper.project_file, Helper.locationSiteId, getActivity())); //Log.e("SiteId: ",""+targetSiteId); //Log.e("UnitId: ",""+clickedItem.getId()); @@ -144,26 +142,25 @@ public class HomeFragment extends Fragment implements DepartmentItemAdapter.OnIt @Override public void onItemClick(AdapterView adapterView, View view, int position, long l) { LocationFloor clickedItem = locationFloorListFiltered.get(position); - viewModel.setFloor(String.valueOf(clickedItem.getId())); - Preference.setMyStringPref(Helper.project_file,Helper.floorId,getActivity(),String.valueOf(clickedItem.getId())); - Preference.setMyStringPref(Helper.project_file,Helper.floorName,getActivity(),String.valueOf(clickedItem.getTitle())); + //viewModel.setFloor(String.valueOf(clickedItem.getId())); + Preference.setMyStringPref(Helper.project_file, Helper.floorId, getActivity(), String.valueOf(clickedItem.getId())); + Preference.setMyStringPref(Helper.project_file, Helper.floorName, getActivity(), String.valueOf(clickedItem.getTitle())); } }); nextButton.setOnClickListener(v -> { if (getActivity() instanceof HomeActivity) { - viewModel.setFromViewModel(true); - String siteID = Preference.getMyStringPref(Helper.project_file,Helper.locationSiteId,getActivity()); - String unitId = Preference.getMyStringPref(Helper.project_file,Helper.unitId,getActivity()); - String departId = Preference.getMyStringPref(Helper.project_file,Helper.departmentId,getActivity()); - String floorId = Preference.getMyStringPref(Helper.project_file,Helper.floorId,getActivity()); - Log.e("AdapterData", "siteID: " + siteID + - ", unitId: " + unitId + - ", departId: " + departId + - ", floorId: " + floorId ); + //viewModel.setFromViewModel(true); + // Preference.setMyStringPref(Helper.project_file, Helper.InProcess, getActivity(), "true"); + String siteID = Preference.getMyStringPref(Helper.project_file, Helper.locationSiteId, getActivity()); + String unitId = Preference.getMyStringPref(Helper.project_file, Helper.unitId, getActivity()); + String departId = Preference.getMyStringPref(Helper.project_file, Helper.departmentId, getActivity()); + String floorId = Preference.getMyStringPref(Helper.project_file, Helper.floorId, getActivity()); + Log.e("AdapterData", "siteID: " + siteID + ", unitId: " + unitId + + ", departId: " + departId + ", floorId: " + floorId); - if (isValidate(departId,siteID,unitId,floorId)) { + if (isValidate(departId, siteID, unitId, floorId)) { ((HomeActivity) getActivity()).navigateToFragment(new CuttingFragment(), true); } @@ -174,27 +171,20 @@ public class HomeFragment extends Fragment implements DepartmentItemAdapter.OnIt @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // Do nothing + Log.e("beforeTextChanged: ","------"); } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { + Log.e("onTextChanged: ","------"); filterList(s.toString()); - - if (s.length() > 0) { - if (viewModel.isFromViewModel()) { - recyclerView.setVisibility(View.GONE); - } - else { - recyclerView.setVisibility(View.VISIBLE); // Show the list when typing - } - } else { - recyclerView.setVisibility(View.GONE); // Hide when no text is entered - } } @Override public void afterTextChanged(Editable s) { // Do nothing + Log.e("afterTextChanged: ","------"); + } }); @@ -208,7 +198,7 @@ public class HomeFragment extends Fragment implements DepartmentItemAdapter.OnIt public void initializeLayout(View view) { - viewModel = new ViewModelProvider(requireActivity()).get(QualityControlViewModel.class); + //viewModel = new ViewModelProvider(requireActivity()).get(QualityControlViewModel.class); txtCurrentDate = view.findViewById(R.id.txt_current_date); locationSiteTextview = view.findViewById(R.id.location_textview); @@ -218,6 +208,7 @@ public class HomeFragment extends Fragment implements DepartmentItemAdapter.OnIt nextButton = view.findViewById(R.id.btn_next); searchEditText = view.findViewById(R.id.searchEditText); + recyclerView = view.findViewById(R.id.recyclerView); recyclerView.setVisibility(View.GONE); @@ -225,9 +216,12 @@ public class HomeFragment extends Fragment implements DepartmentItemAdapter.OnIt loginViewModel = new ViewModelProvider(getActivity()).get(LoginViewModel.class); loginViewModel.getLoadingState().observe(getActivity(), isLoading -> { + //Log.e("HomeFragment: ", "isLoading: "); if (isLoading != null && isLoading) { + //Log.e("HomeFragment: ", "isLoading:show "); showProgressDialog(); } else { + //Log.e("HomeFragment: ", "isLoading: dismiss"); dismissProgressDialog(); } }); @@ -240,16 +234,11 @@ public class HomeFragment extends Fragment implements DepartmentItemAdapter.OnIt if (qcResponse != null) { Helper.setPreferenceObject(getActivity().getApplicationContext(), qcResponse, "qcResponse"); - if (!Preference.getMyStringPref(Helper.project_file, Helper.departmentName, getActivity()).equalsIgnoreCase("default")) { - searchEditText.setText(Preference.getMyStringPref(Helper.project_file, Helper.departmentName, getActivity())); - locationSiteTextview.setText(Preference.getMyStringPref(Helper.project_file, Helper.locationSiteName,getActivity())); - unitTextview.setText(Preference.getMyStringPref(Helper.project_file, Helper.unitName, getActivity())); - floorTextview.setText(Preference.getMyStringPref(Helper.project_file, Helper.floorName, getActivity())); - } if (!qcResponse.getLocationSites().isEmpty()) { - viewModel.setLocationSiteList(qcResponse.getLocationSites()); + //viewModel.setLocationSiteList(qcResponse.getLocationSites()); + Helper.saveList(qcResponse.getLocationSites(), Helper.homeSite, getActivity()); locationSiteList.addAll(qcResponse.getLocationSites()); @@ -260,7 +249,9 @@ public class HomeFragment extends Fragment implements DepartmentItemAdapter.OnIt if (!qcResponse.getDepartments().isEmpty()) { - viewModel.setDepartmentList(qcResponse.getDepartments()); + // viewModel.setDepartmentList(qcResponse.getDepartments()); + Helper.saveList(qcResponse.getDepartments(), Helper.homeDepartment, getActivity()); + departmentList.addAll(qcResponse.getDepartments()); filteredList = new ArrayList<>(departmentList); @@ -271,35 +262,55 @@ public class HomeFragment extends Fragment implements DepartmentItemAdapter.OnIt } if (!qcResponse.getLocationFloors().isEmpty()) { - viewModel.setFloorList(qcResponse.getLocationFloors()); + // viewModel.setFloorList(qcResponse.getLocationFloors()); + Helper.saveList(qcResponse.getLocationFloors(), Helper.homeFloor, getActivity()); locationFloorList.addAll(qcResponse.getLocationFloors()); } if (!qcResponse.getLocationUnits().isEmpty()) { - viewModel.setUnitList(qcResponse.getLocationUnits()); + // viewModel.setUnitList(qcResponse.getLocationUnits()); + Helper.saveList(qcResponse.getLocationUnits(), Helper.homeUnit, getActivity()); locationUnitList.addAll(qcResponse.getLocationUnits()); } + + Preference.setMyStringPref(Helper.project_file, Helper.firstTimeApiCall, getActivity(), "true"); + } else { Toast.makeText(getActivity(), "Fetching Records Failed", Toast.LENGTH_SHORT).show(); } }); - /*if (viewModel.getLocationSiteList().isEmpty()) { + if (Preference.getMyStringPref(Helper.project_file, Helper.firstTimeApiCall, getActivity()).equalsIgnoreCase("false") || + Preference.getMyStringPref(Helper.project_file, Helper.firstTimeApiCall, getActivity()).equalsIgnoreCase("default")) { + loginViewModel.getQualityControlData(); - } - else { + } else { + if (!Preference.getMyStringPref(Helper.project_file, Helper.departmentName, getActivity()).equalsIgnoreCase("default")) { + searchEditText.setText(Preference.getMyStringPref(Helper.project_file, Helper.departmentName, getActivity())); + isFromPrevious = true; + locationSiteTextview.setText(Preference.getMyStringPref(Helper.project_file, Helper.locationSiteName, getActivity())); + unitTextview.setText(Preference.getMyStringPref(Helper.project_file, Helper.unitName, getActivity())); + floorTextview.setText(Preference.getMyStringPref(Helper.project_file, Helper.floorName, getActivity())); + } + + departmentList.clear(); + locationSiteList.clear(); + locationUnitList.clear(); + locationFloorList.clear(); //location list - locationSiteList.addAll(viewModel.getLocationSiteList()); - Log.e("locationSiteList-size: ",""+locationSiteList.size()); + //locationSiteList.addAll(viewModel.getLocationSiteList()); + locationSiteList.addAll(Helper.getList(Helper.homeSite, getActivity(), LocationSite.class)); + Log.e("locationSiteList-size: ", "" + locationSiteList.size()); locationSitesAdapter = new LocationSitesAdapter(getActivity(), locationSiteList); locationSiteTextview.setAdapter(locationSitesAdapter); //department list - departmentList.addAll(viewModel.getDepartmentList()); - Log.e("departmentList-size: ",""+departmentList.size()); + //departmentList.addAll(viewModel.getDepartmentList()); + departmentList.addAll(Helper.getList(Helper.homeDepartment, getActivity(), Department.class)); + Log.e("departmentList-size: ", "" + departmentList.size()); - //filteredList = new ArrayList<>(departmentList); + filteredList = new ArrayList<>(departmentList); // Set up RecyclerView departmentItemAdapter = new DepartmentItemAdapter(filteredList, this, searchEditText, recyclerView); @@ -307,40 +318,35 @@ public class HomeFragment extends Fragment implements DepartmentItemAdapter.OnIt recyclerView.setAdapter(departmentItemAdapter); //unit list - locationUnitList.addAll(viewModel.getUnitList()); - Log.e("locationUnitList-size: ",""+locationUnitList.size()); + //locationUnitList.addAll(viewModel.getUnitList()); + locationUnitList.addAll(Helper.getList(Helper.homeUnit, getActivity(), LocationUnit.class)); + Log.e("locationUnitList-size: ", "" + locationUnitList.size()); //floor list - locationFloorList.addAll(viewModel.getFloorList()); - Log.e("locationFloorList-size: ",""+locationFloorList.size()); + //locationFloorList.addAll(viewModel.getFloorList()); + locationFloorList.addAll(Helper.getList(Helper.homeFloor, getActivity(), LocationFloor.class)); + Log.e("locationFloorList-size: ", "" + locationFloorList.size()); recyclerView.setVisibility(View.GONE); - }*/ - + } } @Override public void onResume() { super.onResume(); - Log.e("onResume: ","HomeFragment"); - departmentList.clear(); - locationSiteList.clear(); - locationUnitList.clear(); - locationFloorList.clear(); - loginViewModel.getQualityControlData(); } public void showProgressDialog() { ProgressDialogFragment progressDialog = new ProgressDialogFragment(); progressDialog.setCancelable(false); - progressDialog.show(getActivity().getSupportFragmentManager(), "progressDialog"); + progressDialog.show(requireActivity().getSupportFragmentManager(), "progressDialog"); } public void dismissProgressDialog() { ProgressDialogFragment progressDialog = (ProgressDialogFragment) - getActivity().getSupportFragmentManager().findFragmentByTag("progressDialog"); + requireActivity().getSupportFragmentManager().findFragmentByTag("progressDialog"); if (progressDialog != null) { progressDialog.dismiss(); } @@ -353,7 +359,7 @@ public class HomeFragment extends Fragment implements DepartmentItemAdapter.OnIt // Hide the RecyclerView when there's no query recyclerView.setVisibility(View.GONE); } else { - // Show RecyclerView when there's a query + recyclerView.setVisibility(View.VISIBLE); for (Department item : departmentList) { @@ -363,16 +369,21 @@ public class HomeFragment extends Fragment implements DepartmentItemAdapter.OnIt } } departmentItemAdapter.notifyDataSetChanged(); - } + if (isFromPrevious) { + isFromPrevious = false; + recyclerView.setVisibility(View.GONE); + } + + } } @Override public void onItemClick(Department item) { //Toast.makeText(getActivity(), "Selected: " + item.getTitle(), Toast.LENGTH_SHORT).show(); - viewModel.setDepartmentId(item.getId()); - Preference.setMyStringPref(Helper.project_file,Helper.departmentId,getActivity(),String.valueOf(item.getId())); - Preference.setMyStringPref(Helper.project_file,Helper.departmentName,getActivity(),String.valueOf(item.getTitle())); + //viewModel.setDepartmentId(item.getId()); + Preference.setMyStringPref(Helper.project_file, Helper.departmentId, getActivity(), String.valueOf(item.getId())); + Preference.setMyStringPref(Helper.project_file, Helper.departmentName, getActivity(), String.valueOf(item.getTitle())); } public boolean isValidate(String departId, String siteId, String unitId, String floorId) { @@ -400,7 +411,7 @@ public class HomeFragment extends Fragment implements DepartmentItemAdapter.OnIt } if (!returnValue) { - Toast.makeText(getActivity(),message,Toast.LENGTH_SHORT).show(); + Toast.makeText(getActivity(), message, Toast.LENGTH_SHORT).show(); } return returnValue; diff --git a/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/PackingFragment.java b/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/PackingFragment.java index d8a0f17..0f3eda4 100644 --- a/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/PackingFragment.java +++ b/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/PackingFragment.java @@ -74,7 +74,6 @@ public class PackingFragment extends Fragment implements EasyPermissions.Permiss ArrayList imageList = new ArrayList<>(); EditText etPercentage, etRemarks; - QualityControlViewModel viewModel; List itemModelList = new ArrayList<>(); ItemStepsAdapter adapter; private int selectedPosition = -1; @@ -86,7 +85,7 @@ public class PackingFragment extends Fragment implements EasyPermissions.Permiss Uri selectedImage = result.getData().getData(); if (selectedPosition != -1 && selectedImage != null) { //imageView.setImageURI(selectedImage); - Log.e("Selected-Image: ", "" + selectedImage); + //Log.e("Selected-Image: ", "" + selectedImage); uriToByteArrayAsync( getContext(), @@ -140,13 +139,13 @@ public class PackingFragment extends Fragment implements EasyPermissions.Permiss } ); - Log.e("contentUri: ", "" + contentUri); + //Log.e("contentUri: ", "" + contentUri); if (result.getResultCode() == requireActivity().RESULT_OK && result.getData() != null) { Uri selectedImage = result.getData().getData(); if (selectedImage != null) { //imageView.setImageURI(selectedImage); - Log.e("Selected-Image: ", "" + selectedImage); + //Log.e("Selected-Image: ", "" + selectedImage); } } }); @@ -168,10 +167,10 @@ public class PackingFragment extends Fragment implements EasyPermissions.Permiss itemList.add(new Item("Safety", 0));*/ //New Implemented------------------ - if (Helper.getArrayList("ListPacking", getActivity()) != null) { + if (Helper.getArrayList(Helper.listPacking, getActivity()) != null) { itemModelList.clear(); - itemModelList.addAll(Helper.getArrayList("ListPacking", getActivity())); - Log.e("itemModelList-size: ",""+itemModelList.size()); + itemModelList.addAll(Helper.getArrayList(Helper.listPacking, getActivity())); + //Log.e("itemModelList-size: ",""+itemModelList.size()); if (itemModelList != null) { adapter = new ItemStepsAdapter(getActivity(), itemModelList,this); @@ -220,7 +219,7 @@ public class PackingFragment extends Fragment implements EasyPermissions.Permiss List updatedItemList = itemModelList; // Or adapter.getItemList() - for (ItemModel item : updatedItemList) { + /*for (ItemModel item : updatedItemList) { Log.e("AdapterData", "ProcessId: " + item.getProcessId() + ", StepId: " + item.getStepId() + ", SpinnerSelection: " + item.getSelectedOption() + @@ -228,12 +227,11 @@ public class PackingFragment extends Fragment implements EasyPermissions.Permiss ", Percentage: " + item.getPercentage() + ", Remarks: " + item.getRemarks() + ", ImageList: " + item.getImageArrayList()); - } + }*/ - Helper.saveArrayList(itemModelList, "ListPacking",getActivity()); - viewModel.appendToQualityControlItemList(itemModelList); + Helper.saveArrayList(itemModelList, Helper.listPacking,getActivity()); - List updatedItemListP = new ArrayList<>(Helper.getArrayList("ListPacking", getActivity())); + //List updatedItemListP = new ArrayList<>(Helper.getArrayList("ListPacking", getActivity())); /*if (etRemarks.getText().toString().isEmpty()) { Toast.makeText(getActivity(), "Please enter remarks", Toast.LENGTH_SHORT).show(); @@ -259,8 +257,6 @@ public class PackingFragment extends Fragment implements EasyPermissions.Permiss private void initializeLayout(View view) { - viewModel = new ViewModelProvider(requireActivity()).get(QualityControlViewModel.class); - etPercentage = view.findViewById(R.id.et_percentage); etRemarks = view.findViewById(R.id.et_remarks); imagePicker = view.findViewById(R.id.image_picker); diff --git a/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/StitchingFragment.java b/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/StitchingFragment.java index 6071ff8..47a6665 100644 --- a/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/StitchingFragment.java +++ b/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/StitchingFragment.java @@ -76,7 +76,6 @@ public class StitchingFragment extends Fragment implements EasyPermissions.Permi ArrayList imageList = new ArrayList<>(); EditText etPercentage, etRemarks; - QualityControlViewModel viewModel; List itemModelList = new ArrayList<>(); ItemStepsAdapter adapter; private int selectedPosition = -1; @@ -88,7 +87,7 @@ public class StitchingFragment extends Fragment implements EasyPermissions.Permi Uri selectedImage = result.getData().getData(); if (selectedPosition != -1 && selectedImage != null) { //imageView.setImageURI(selectedImage); - Log.e("Selected-Image: ", "" + selectedImage); + //Log.e("Selected-Image: ", "" + selectedImage); uriToByteArrayAsync( getContext(), @@ -142,13 +141,13 @@ public class StitchingFragment extends Fragment implements EasyPermissions.Permi } ); - Log.e("contentUri: ", "" + contentUri); + //Log.e("contentUri: ", "" + contentUri); if (result.getResultCode() == requireActivity().RESULT_OK && result.getData() != null) { Uri selectedImage = result.getData().getData(); if (selectedImage != null) { //imageView.setImageURI(selectedImage); - Log.e("Selected-Image: ", "" + selectedImage); + //Log.e("Selected-Image: ", "" + selectedImage); } } }); @@ -167,10 +166,10 @@ public class StitchingFragment extends Fragment implements EasyPermissions.Permi recyclerView.setAdapter(adapter);*/ //New Implemented------------------ - if (Helper.getArrayList("ListStitching", getActivity()) != null) { + if (Helper.getArrayList(Helper.listStitching, getActivity()) != null) { itemModelList.clear(); - itemModelList.addAll(Helper.getArrayList("ListStitching", getActivity())); - Log.e("itemModelList-size: ",""+itemModelList.size()); + itemModelList.addAll(Helper.getArrayList(Helper.listStitching, getActivity())); + //Log.e("itemModelList-size: ",""+itemModelList.size()); if (itemModelList != null) { adapter = new ItemStepsAdapter(getActivity(), itemModelList, this); @@ -219,7 +218,7 @@ public class StitchingFragment extends Fragment implements EasyPermissions.Permi List updatedItemList = itemModelList; // Or adapter.getItemList() - for (ItemModel item : updatedItemList) { + /*for (ItemModel item : updatedItemList) { Log.e("AdapterData", "ProcessId: " + item.getProcessId() + ", StepId: " + item.getStepId() + ", SpinnerSelection: " + item.getSelectedOption() + @@ -227,12 +226,11 @@ public class StitchingFragment extends Fragment implements EasyPermissions.Permi ", Percentage: " + item.getPercentage() + ", Remarks: " + item.getRemarks() + ", ImageList: " + item.getImageArrayList()); - } + }*/ - Helper.saveArrayList(itemModelList, "ListStitching",getActivity()); - viewModel.appendToQualityControlItemList(itemModelList); + Helper.saveArrayList(itemModelList, Helper.listStitching,getActivity()); - List updatedItemListP = new ArrayList<>(Helper.getArrayList("ListStitching", getActivity())); + //List updatedItemListP = new ArrayList<>(Helper.getArrayList("ListStitching", getActivity())); /*if (etRemarks.getText().toString().isEmpty()) { @@ -259,7 +257,7 @@ public class StitchingFragment extends Fragment implements EasyPermissions.Permi private void initializeLayout(View view) { - viewModel = new ViewModelProvider(requireActivity()).get(QualityControlViewModel.class); + //viewModel = new ViewModelProvider(requireActivity()).get(QualityControlViewModel.class); etPercentage = view.findViewById(R.id.et_percentage); etRemarks = view.findViewById(R.id.et_remarks); diff --git a/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/SubStoreFragment.java b/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/SubStoreFragment.java index a10543c..aeb8564 100644 --- a/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/SubStoreFragment.java +++ b/app/src/main/java/com/utopiaindustries/qualitycontrol/fragments/SubStoreFragment.java @@ -43,10 +43,8 @@ import com.utopiaindustries.qualitycontrol.helper.Helper; import com.utopiaindustries.qualitycontrol.helper.Preference; import com.utopiaindustries.qualitycontrol.utils.ImageSelectionListener; import com.utopiaindustries.qualitycontrol.utils.ProgressDialogFragment; -import com.utopiaindustries.qualitycontrol.utils.QualityControlViewModel; import com.utopiaindustries.qualitycontrol.viewmodels.HomeViewModel; import com.utopiaindustries.qualitycontrol.viewmodels.ItemModel; -import com.utopiaindustries.qualitycontrol.viewmodels.LoginViewModel; import com.utopiaindustries.qualitycontrol.viewmodels.QualityControl; import java.io.ByteArrayOutputStream; @@ -55,7 +53,6 @@ import java.io.IOException; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Objects; @@ -80,7 +77,7 @@ public class SubStoreFragment extends Fragment implements EasyPermissions.Permis ArrayList imageList = new ArrayList<>(); EditText etPercentage, etRemarks; - QualityControlViewModel viewModel; + //QualityControlViewModel viewModel; List itemModelList = new ArrayList<>(); ItemStepsAdapter adapter; private int selectedPosition = -1; @@ -151,7 +148,7 @@ public class SubStoreFragment extends Fragment implements EasyPermissions.Permis Uri selectedImage = result.getData().getData(); if (selectedImage != null) { //imageView.setImageURI(selectedImage); - Log.e("Selected-Image: ", "" + selectedImage); + // Log.e("Selected-Image: ", "" + selectedImage); } } }); @@ -173,29 +170,27 @@ public class SubStoreFragment extends Fragment implements EasyPermissions.Permis itemList.add(new Item("Safety", 0));*/ //New Implemented------------------ - if (Helper.getArrayList("ListSubStore", getActivity()) != null) { + if (Helper.getArrayList(Helper.listSubStore, getActivity()) != null) { itemModelList.clear(); - itemModelList.addAll(Helper.getArrayList("ListSubStore", getActivity())); - Log.e("itemModelList-size: ",""+itemModelList.size()); + itemModelList.addAll(Helper.getArrayList(Helper.listSubStore, getActivity())); + //Log.e("itemModelList-size: ",""+itemModelList.size()); if (itemModelList != null) { adapter = new ItemStepsAdapter(getActivity(), itemModelList, this); recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); recyclerView.setAdapter(adapter); - } - else { + } else { for (int i = 1; i < 7; i++) { - itemModelList.add(new ItemModel(5,i,0,"0","",0, null, null)); + itemModelList.add(new ItemModel(5, i, 0, "0", "", 0, null, null)); } adapter = new ItemStepsAdapter(getActivity(), itemModelList, this); recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); recyclerView.setAdapter(adapter); } - } - else { + } else { for (int i = 1; i < 7; i++) { - itemModelList.add(new ItemModel(5,i,0,"0","",0, null, null)); + itemModelList.add(new ItemModel(5, i, 0, "0", "", 0, null, null)); } adapter = new ItemStepsAdapter(getActivity(), itemModelList, this); recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); @@ -225,35 +220,6 @@ public class SubStoreFragment extends Fragment implements EasyPermissions.Permis startActivity(intent); getActivity().finish();*/ - List updatedItemList = itemModelList; // Or adapter.getItemList() - - for (ItemModel item : updatedItemList) { - Log.e("AdapterData", "ProcessId: " + item.getProcessId() + - ", StepId: " + item.getStepId() + - ", SpinnerSelection: " + item.getSelectedOption() + - ", Rating: " + item.getRating() + - ", Percentage: " + item.getPercentage() + - ", Remarks: " + item.getRemarks() + - ", ImageList: " + item.getImageArrayList()); - } - - Helper.saveArrayList(itemModelList, "ListSubStore",getActivity()); - viewModel.appendToQualityControlItemList(itemModelList); - - int siteID = Integer.parseInt(Preference.getMyStringPref(Helper.project_file,Helper.locationSiteId,getActivity())); - int unitId = Integer.parseInt(Preference.getMyStringPref(Helper.project_file,Helper.unitId,getActivity())); - int departId = Integer.parseInt(Preference.getMyStringPref(Helper.project_file,Helper.departmentId,getActivity())); - int floorId = Integer.parseInt(Preference.getMyStringPref(Helper.project_file,Helper.floorId,getActivity())); - - List tempList = new ArrayList<>(); - tempList.addAll(Helper.getArrayList("ListCutting",getActivity())); - tempList.addAll(Helper.getArrayList("ListStitching",getActivity())); - tempList.addAll(Helper.getArrayList("ListChecking",getActivity())); - tempList.addAll(Helper.getArrayList("ListPacking",getActivity())); - tempList.addAll(Helper.getArrayList("ListSubStore",getActivity())); - - QualityControl qualityControl = new QualityControl(siteID,unitId,departId,floorId,tempList); - /*Log.e("AdapterData", "siteID: " + siteID + ", unitId: " + unitId + ", departId: " + departId + @@ -272,7 +238,47 @@ public class SubStoreFragment extends Fragment implements EasyPermissions.Permis ", Image: " + Arrays.toString(item.getImageUri())); }*/ - homeViewModel.saveQualityControlData(qualityControl); + AlertDialog.Builder builder = new AlertDialog.Builder(requireContext()); + builder.setTitle("Are you sure to save Report?") + .setItems(new String[]{"Yes", "Cancel"}, (dialog, which) -> { + if (which == 0) { + + List updatedItemList = itemModelList; // Or adapter.getItemList() + + /*for (ItemModel item : updatedItemList) { + Log.e("AdapterData", "ProcessId: " + item.getProcessId() + + ", StepId: " + item.getStepId() + + ", SpinnerSelection: " + item.getSelectedOption() + + ", Rating: " + item.getRating() + + ", Percentage: " + item.getPercentage() + + ", Remarks: " + item.getRemarks() + + ", ImageList: " + item.getImageArrayList()); + }*/ + + Helper.saveArrayList(itemModelList, Helper.listSubStore, getActivity()); + //viewModel.appendToQualityControlItemList(itemModelList); + + int siteID = Integer.parseInt(Preference.getMyStringPref(Helper.project_file, Helper.locationSiteId, getActivity())); + int unitId = Integer.parseInt(Preference.getMyStringPref(Helper.project_file, Helper.unitId, getActivity())); + int departId = Integer.parseInt(Preference.getMyStringPref(Helper.project_file, Helper.departmentId, getActivity())); + int floorId = Integer.parseInt(Preference.getMyStringPref(Helper.project_file, Helper.floorId, getActivity())); + + List tempList = new ArrayList<>(); + tempList.addAll(Helper.getArrayList(Helper.listCutting, getActivity())); + tempList.addAll(Helper.getArrayList(Helper.listStitching, getActivity())); + tempList.addAll(Helper.getArrayList(Helper.listChecking, getActivity())); + tempList.addAll(Helper.getArrayList(Helper.listPacking, getActivity())); + tempList.addAll(Helper.getArrayList(Helper.listSubStore, getActivity())); + String generatedBy = Preference.getMyStringPref(Helper.project_file,Helper.logInUser,getActivity()); + + QualityControl qualityControl = new QualityControl(generatedBy, siteID, unitId, departId, floorId, tempList); + + homeViewModel.saveQualityControlData(qualityControl); + } else { + dialog.dismiss(); + } + }) + .show(); }); @@ -286,7 +292,7 @@ public class SubStoreFragment extends Fragment implements EasyPermissions.Permis private void initializeLayout(View view) { - viewModel = new ViewModelProvider(requireActivity()).get(QualityControlViewModel.class); + //viewModel = new ViewModelProvider(requireActivity()).get(QualityControlViewModel.class); homeViewModel = new ViewModelProvider(requireActivity()).get(HomeViewModel.class); etPercentage = view.findViewById(R.id.et_percentage); @@ -317,11 +323,35 @@ public class SubStoreFragment extends Fragment implements EasyPermissions.Permis homeViewModel.getUserLiveData().observe(getActivity(), qcResponse -> { if (qcResponse != null) { - Log.e("qcResponse: ",""+qcResponse); - Log.e("","Status: " + qcResponse.getStatus() + "Message: " + qcResponse.getMessage() + "Percentage: " + qcResponse.getOverAllPercentage()); - /*getActivity().finish(); + /*Log.e("qcResponse: ", "" + qcResponse); + Log.e("","Status: " + qcResponse.getStatus() + " Message: " + qcResponse.getMessage() + " Percentage: " + qcResponse.getOverAllPercentage()); + Log.e("","Cut: " + qcResponse.getCutting() + " Stitch: " + qcResponse.getStiching() + " Check: " + qcResponse.getChecking()); + Log.e("","Pack: " + qcResponse.getPacking() + " Substore: " + qcResponse.getSub_Store());*/ + Preference.remove(Helper.project_file, Helper.departmentId, getActivity()); + Preference.remove(Helper.project_file, Helper.departmentName, getActivity()); + + Preference.remove(Helper.project_file, Helper.locationSiteId, getActivity()); + Preference.remove(Helper.project_file, Helper.locationSiteName, getActivity()); + + Preference.remove(Helper.project_file, Helper.unitId, getActivity()); + Preference.remove(Helper.project_file, Helper.unitName, getActivity()); + + Preference.remove(Helper.project_file, Helper.floorId, getActivity()); + Preference.remove(Helper.project_file, Helper.floorName, getActivity()); + + Helper.RemoveArrayList(Helper.listCutting,getActivity()); + Helper.RemoveArrayList(Helper.listStitching,getActivity()); + Helper.RemoveArrayList(Helper.listChecking,getActivity()); + Helper.RemoveArrayList(Helper.listPacking,getActivity()); + Helper.RemoveArrayList(Helper.listSubStore,getActivity()); + + //Preference.setMyStringPref(Helper.project_file, Helper.InProcess, getActivity(), "false"); + + getActivity().finish(); Intent intent = new Intent(getActivity(), SummaryActivity.class); - startActivity(intent);*/ + intent.putExtra("Percentage", qcResponse.getOverAllPercentage()); + intent.putExtra("Summary", qcResponse); + startActivity(intent); } }); } @@ -560,11 +590,11 @@ public class SubStoreFragment extends Fragment implements EasyPermissions.Permis public void showProgressDialog() { ProgressDialogFragment progressDialog = new ProgressDialogFragment(); progressDialog.setCancelable(false); - progressDialog.show(getActivity().getSupportFragmentManager(), "progressDialog"); + progressDialog.show(requireActivity().getSupportFragmentManager(), "progressDialog"); } public void dismissProgressDialog() { - ProgressDialogFragment progressDialog = (ProgressDialogFragment) getActivity().getSupportFragmentManager().findFragmentByTag("progressDialog"); + ProgressDialogFragment progressDialog = (ProgressDialogFragment) requireActivity().getSupportFragmentManager().findFragmentByTag("progressDialog"); if (progressDialog != null) { progressDialog.dismiss(); } diff --git a/app/src/main/java/com/utopiaindustries/qualitycontrol/helper/Helper.java b/app/src/main/java/com/utopiaindustries/qualitycontrol/helper/Helper.java index ffca4ee..ddd46ef 100644 --- a/app/src/main/java/com/utopiaindustries/qualitycontrol/helper/Helper.java +++ b/app/src/main/java/com/utopiaindustries/qualitycontrol/helper/Helper.java @@ -6,6 +6,7 @@ import android.net.ConnectivityManager; import android.net.NetworkInfo; import androidx.preference.PreferenceManager; import android.text.TextUtils; +import android.util.Log; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; @@ -29,6 +30,22 @@ public class Helper { public static final String floorId = "floorId"; public static final String floorName = "floorName"; + public static final String listCutting = "ListCutting"; + public static final String listStitching = "ListStitching"; + public static final String listChecking = "ListChecking"; + public static final String listPacking = "ListPacking"; + public static final String listSubStore = "ListSubStore"; + + public static final String homeSite = "Sites"; + public static final String homeDepartment = "Departments"; + public static final String homeUnit = "Units"; + public static final String homeFloor = "Floors"; + + public static final String firstTimeApiCall = "isFirstTimeApiCall"; + public static final String InProcess = "InProcess"; + + public static final String logInUser = "LogInUser"; + public static boolean isValidEmail(CharSequence target) { return !TextUtils.isEmpty(target) && android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches(); } @@ -83,4 +100,40 @@ public class Helper { Type type = new TypeToken>() {}.getType(); return gson.fromJson(json, type); } + + static public void RemoveArrayList(String key, Context context) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + if (prefs.contains(key)) { // Check if the key exists + SharedPreferences.Editor editor = prefs.edit(); + editor.remove(key); // Remove the key-value pair + editor.apply(); // Apply changes + Log.e("SharedPreferences", "Key '" + key + "' removed successfully."); + } else { + Log.e("SharedPreferences", "Key '" + key + "' does not exist."); + } + } + + //for department, site, unit, floor + public static void saveList(List list, String key, Context context) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + SharedPreferences.Editor editor = prefs.edit(); + Gson gson = new Gson(); + String json = gson.toJson(list); // Convert the list to JSON + editor.putString(key, json); + editor.apply(); // Save to SharedPreferences + } + + public static List getList(String key, Context context, Class clazz) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + + // Check if the key exists + if (!prefs.contains(key)) { + return new ArrayList<>(); // Return an empty list if the key doesn't exist + } + + Gson gson = new Gson(); + String json = prefs.getString(key, null); + Type type = TypeToken.getParameterized(ArrayList.class, clazz).getType(); // Use the provided class type + return gson.fromJson(json, type); // Convert JSON back to the list + } } diff --git a/app/src/main/java/com/utopiaindustries/qualitycontrol/models/QualitySaveResponse.java b/app/src/main/java/com/utopiaindustries/qualitycontrol/models/QualitySaveResponse.java index 3527b80..af5efa9 100644 --- a/app/src/main/java/com/utopiaindustries/qualitycontrol/models/QualitySaveResponse.java +++ b/app/src/main/java/com/utopiaindustries/qualitycontrol/models/QualitySaveResponse.java @@ -3,9 +3,10 @@ package com.utopiaindustries.qualitycontrol.models; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; +import java.io.Serializable; import java.util.List; -public class QualitySaveResponse { +public class QualitySaveResponse implements Serializable { @SerializedName("overAllPercentage") @Expose @@ -19,6 +20,26 @@ public class QualitySaveResponse { @Expose private String message; + @SerializedName("Cutting") + @Expose + private String Cutting; + + @SerializedName("Stiching") + @Expose + private String Stiching; + + @SerializedName("Checking") + @Expose + private String Checking; + + @SerializedName("Packing") + @Expose + private String Packing; + + @SerializedName("Sub Store") + @Expose + private String Sub_Store; + public String getOverAllPercentage() { return overAllPercentage; } @@ -42,4 +63,44 @@ public class QualitySaveResponse { public void setMessage(String message) { this.message = message; } + + public String getCutting() { + return Cutting; + } + + public void setCutting(String cutting) { + Cutting = cutting; + } + + public String getStiching() { + return Stiching; + } + + public void setStiching(String stiching) { + Stiching = stiching; + } + + public String getChecking() { + return Checking; + } + + public void setChecking(String checking) { + Checking = checking; + } + + public String getPacking() { + return Packing; + } + + public void setPacking(String packing) { + Packing = packing; + } + + public String getSub_Store() { + return Sub_Store; + } + + public void setSub_Store(String sub_Store) { + Sub_Store = sub_Store; + } } diff --git a/app/src/main/java/com/utopiaindustries/qualitycontrol/viewmodels/HomeViewModel.java b/app/src/main/java/com/utopiaindustries/qualitycontrol/viewmodels/HomeViewModel.java index a676e68..30d5745 100644 --- a/app/src/main/java/com/utopiaindustries/qualitycontrol/viewmodels/HomeViewModel.java +++ b/app/src/main/java/com/utopiaindustries/qualitycontrol/viewmodels/HomeViewModel.java @@ -47,10 +47,10 @@ public class HomeViewModel extends ViewModel { apiService.saveQualityControlReport(qualityControl).enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { - Log.e("onResponse: ",""+response); + //Log.e("onResponse: ",""+response); isLoading.setValue(false); if (response.isSuccessful() && response.body() != null) { - Log.e("onResponse-success: ",""+response); + //Log.e("onResponse-success: ",""+response); userLiveData.setValue(response.body()); } else { errorLiveData.setValue(response.message()); @@ -59,7 +59,7 @@ public class HomeViewModel extends ViewModel { @Override public void onFailure(Call call, Throwable t) { - Log.e("onResponse-fail: ",""+t.getMessage()); + //Log.e("onResponse-fail: ",""+t.getMessage()); isLoading.setValue(false); errorLiveData.setValue(t.getMessage()); } diff --git a/app/src/main/java/com/utopiaindustries/qualitycontrol/viewmodels/LoginViewModel.java b/app/src/main/java/com/utopiaindustries/qualitycontrol/viewmodels/LoginViewModel.java index 6ca2e7f..3770586 100644 --- a/app/src/main/java/com/utopiaindustries/qualitycontrol/viewmodels/LoginViewModel.java +++ b/app/src/main/java/com/utopiaindustries/qualitycontrol/viewmodels/LoginViewModel.java @@ -1,5 +1,8 @@ package com.utopiaindustries.qualitycontrol.viewmodels; +import android.util.Log; + +import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; @@ -15,6 +18,7 @@ import retrofit2.Response; public class LoginViewModel extends ViewModel { private MutableLiveData userLiveData; + private MutableLiveData userLoginLiveData; private MutableLiveData errorLiveData; private MutableLiveData isLoading; private ApiService apiService; @@ -22,6 +26,7 @@ public class LoginViewModel extends ViewModel { public LoginViewModel() { apiService = ApiServiceFactory.getApiService(); userLiveData = new MutableLiveData<>(); + userLoginLiveData = new MutableLiveData<>(); errorLiveData = new MutableLiveData<>(); isLoading = new MutableLiveData<>(); } @@ -41,11 +46,13 @@ public class LoginViewModel extends ViewModel { public void getQualityControlData() { isLoading.setValue(true); - apiService.isUserAuthenticated().enqueue(new Callback() { + apiService.getQualityControlData().enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { + isLoading.setValue(false); - if (response.isSuccessful() && response.body() != null) { + if (response.isSuccessful() && response.body() != null) { + Log.e("onResponse: ", "Successful"); userLiveData.setValue(response.body()); } else { errorLiveData.setValue(response.message()); @@ -54,12 +61,41 @@ public class LoginViewModel extends ViewModel { @Override public void onFailure(Call call, Throwable t) { + Log.e("onResponse: ", "Fail"); isLoading.setValue(false); errorLiveData.setValue(t.getMessage()); } }); } + public void isUserAuthenticated(String username, String password, String[] roles) { + isLoading.setValue(true); + apiService.isUserAuthenticated(username, password, roles).enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) { + isLoading.setValue(false); + Log.e("onResponse-1: ", "Successful: "+response); + if (response.isSuccessful() && response.body() != null) { + Log.e("onResponse-2: ", "Successful: "+response); + userLoginLiveData.setValue(response.body()); + } else { + userLoginLiveData.setValue(false); + } + } + + @Override + public void onFailure(@NonNull Call call, @NonNull Throwable t) { + Log.e("onResponse-2: ", "failed"+t.getMessage()); + isLoading.setValue(false); + errorLiveData.setValue(t.getMessage()); + } + }); + } + + public LiveData getLoginUser() { + return userLoginLiveData; + } + public LiveData getUser() { return userLiveData; } diff --git a/app/src/main/java/com/utopiaindustries/qualitycontrol/viewmodels/QualityControl.java b/app/src/main/java/com/utopiaindustries/qualitycontrol/viewmodels/QualityControl.java index dd10ea6..bb7a9ed 100644 --- a/app/src/main/java/com/utopiaindustries/qualitycontrol/viewmodels/QualityControl.java +++ b/app/src/main/java/com/utopiaindustries/qualitycontrol/viewmodels/QualityControl.java @@ -4,13 +4,15 @@ import java.util.List; public class QualityControl { + private String generatedBy; private int siteId; private int unitId; private int departmentId; private int floorId; private List qualityControlItemList; - public QualityControl(int siteId, int floorId, int departmentId, int unitId, List qualityControlItemList) { + public QualityControl(String generatedBy, int siteId, int floorId, int departmentId, int unitId, List qualityControlItemList) { + this.generatedBy = generatedBy; this.siteId = siteId; this.qualityControlItemList = qualityControlItemList; this.floorId = floorId; @@ -21,6 +23,14 @@ public class QualityControl { public QualityControl() { } + public String getGeneratedBy() { + return generatedBy; + } + + public void setGeneratedBy(String generatedBy) { + this.generatedBy = generatedBy; + } + public int getSiteId() { return siteId; } diff --git a/app/src/main/res/drawable/ic_email.xml b/app/src/main/res/drawable/ic_email.xml new file mode 100644 index 0000000..4c104e9 --- /dev/null +++ b/app/src/main/res/drawable/ic_email.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_logout.xml b/app/src/main/res/drawable/ic_logout.xml new file mode 100644 index 0000000..bf421c2 --- /dev/null +++ b/app/src/main/res/drawable/ic_logout.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_password.xml b/app/src/main/res/drawable/ic_password.xml new file mode 100644 index 0000000..1813549 --- /dev/null +++ b/app/src/main/res/drawable/ic_password.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/drawable/rounded_white.xml b/app/src/main/res/drawable/rounded_white.xml new file mode 100644 index 0000000..5820345 --- /dev/null +++ b/app/src/main/res/drawable/rounded_white.xml @@ -0,0 +1,13 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml index b039eae..9e18a52 100644 --- a/app/src/main/res/layout/activity_home.xml +++ b/app/src/main/res/layout/activity_home.xml @@ -5,6 +5,7 @@ android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="@color/white" tools:context=".activities.HomeActivity"> --> + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml new file mode 100644 index 0000000..7b4526d --- /dev/null +++ b/app/src/main/res/layout/activity_login.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + +