From 619af3fc9588bb880f62dd9ed373ffb9b4dcb2f3 Mon Sep 17 00:00:00 2001 From: "saad.siddiq" Date: Fri, 16 May 2025 17:22:50 +0500 Subject: [PATCH] Add Department, building, floors dropdown Permit to work module working --- app/src/main/AndroidManifest.xml | 2 +- .../HSETrainingForms/HseOneActivity.java | 523 +++++--------- .../HSETrainingForms/HseTwoActivity.java | 642 +++++++++++++++++- .../ObservationOneActivity.java | 79 ++- .../ObservationThreeActivity.java | 62 +- .../OtherHseActivity.java | 20 +- .../PermitToWorkForms/PermitOneActivity.java | 41 +- .../PermitToWorkForms/PermitTwoActivity.java | 155 ++++- .../ProgressiveActivity.java | 113 ++- .../WeeklyActivityForms/WeeklyFormOne.java | 17 +- .../adapters/SafetyTrainingAdapter.java | 41 ++ .../apiservice/ApiService.java | 3 +- .../HseData/HseSafetyTrainingTopic.java | 5 + .../StorageManager/HseReportRequest.java | 97 +++ .../StorageManager/HseTrainingModel.java | 115 ++++ .../StorageManager/ObservationModel.java | 38 ++ .../StorageManager/PermitToWorkModel.java | 69 +- .../utils/StorageManager/StorageManager.java | 13 + .../viewmodels/LoginViewModel.java | 3 +- app/src/main/res/layout/activity_hse_one.xml | 96 +-- app/src/main/res/layout/activity_hse_two.xml | 57 +- .../res/layout/activity_injury_form_one.xml | 2 +- .../res/layout/activity_observation_one.xml | 72 +- .../main/res/layout/activity_permit_one.xml | 35 +- .../main/res/layout/activity_permit_two.xml | 47 +- app/src/main/res/values/strings.xml | 3 + 26 files changed, 1851 insertions(+), 499 deletions(-) create mode 100644 app/src/main/java/com/utopiaindustries/hseobservationsapp/adapters/SafetyTrainingAdapter.java create mode 100644 app/src/main/java/com/utopiaindustries/hseobservationsapp/utils/StorageManager/HseReportRequest.java create mode 100644 app/src/main/java/com/utopiaindustries/hseobservationsapp/utils/StorageManager/HseTrainingModel.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 01344a0..651e3d3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,7 +85,7 @@ PaperImageList = new ArrayList<>(); String docTypeId = ""; String docTypeTitle = ""; - private static final int CAMERA_REQUEST_PAPER = 101; - private static final int GALLERY_REQUEST = 201; - ImageView imgUpload, imgBack; + + ImageView imgBack; Button btnNext; + AutoCompleteTextView safetyTextview, targetAudienceTextview, locationTextview, subLocationTextView; - // Activity Result Launcher for Gallery - private final ActivityResultLauncher imagePickerLauncher = - registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { - if (result.getResultCode() == RESULT_OK && result.getData() != null) { - Uri selectedImage = result.getData().getData(); + private ArrayList safetyTrainingArrayList = new ArrayList<>(); + private ArrayList departmentArrayList = new ArrayList<>(); + private ArrayList departmentArrayList_temp = new ArrayList<>(); - uriToByteArrayAsync( - this, - selectedImage, - 100, // Target size in KB - compressedImage -> { - // Handle the compressed image here, e.g., display it - runOnUiThread(() -> { - /*DocumentTypeImageModel documentImage = new DocumentTypeImageModel( - docTypeId, - docTypeTitle, - compressedImage - );*/ + private DepartmentAdapter departmentAdapter; + private SafetyTrainingAdapter safetyTrainingAdapter; - //Log.e("doc-image: ",""+ documentImage); + private String safetyTrainingTopic = ""; + private String targetAudience = "", location = "", subLocation = ""; + EditText etNoOfEmployees; - int position = PaperImageList.size(); - PaperImageList.add(compressedImage); - imagePaperAdapter.notifyItemInserted(position); - }); - }, - error -> { - // Handle any errors - runOnUiThread(() -> { - Toast.makeText(this, "Error compressing image: " + error.getMessage(), Toast.LENGTH_SHORT).show(); - }); - } - ); - } - else if (result.getResultCode() == RESULT_CANCELED) { - Toast.makeText(this, "Gallery Selection Cancelled!", Toast.LENGTH_SHORT).show(); - } - else { - Toast.makeText(this, "Gallery Selection Cancelled!", Toast.LENGTH_SHORT).show(); - } - }); + private ArrayList locationArrayList_temp = new ArrayList<>(); + private ArrayList locationArrayList = new ArrayList<>(); + private BuildingsAdapter buildingAdapter; - // Activity Result Launcher for Paper Camera - private final ActivityResultLauncher paperCameraLauncher = - registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { + private ArrayList subLocationArrayList_temp = new ArrayList<>(); + private ArrayList subLocationArrayList = new ArrayList<>(); + private FloorsAdapter floorsAdapter; - if (result.getResultCode() == RESULT_OK) { - File imageFile = new File(paperFilePath); - if (imageFile.exists()) { - - Bitmap originalBitmap = fixImageRotation(paperFilePath); - - //Bitmap timestampedBitmap = addTimestampToImage(originalBitmap); - - bitmapToByteArrayAsync( - originalBitmap, - 100, // Target size in KB - imageBytes -> { - this.runOnUiThread(() -> { - - /*DocumentTypeImageModel documentImage = new DocumentTypeImageModel( - docTypeId, - docTypeTitle, - imageBytes - );*/ - - //Log.e("doc-image: ",""+ documentImage); - - int position = PaperImageList.size(); - PaperImageList.add(imageBytes); - imagePaperAdapter.notifyItemInserted(position); - - }); - }, - error -> { - error.printStackTrace(); - } - ); - - } else { - Toast.makeText(this, "Image file not found!", Toast.LENGTH_SHORT).show(); - } - } - else if (result.getResultCode() == RESULT_CANCELED) { - Toast.makeText(this, "Camera capture failed!", Toast.LENGTH_SHORT).show(); - } - else { - Toast.makeText(this, "Camera capture failed!", Toast.LENGTH_SHORT).show(); - } - }); @Override protected void onCreate(Bundle savedInstanceState) { @@ -176,12 +118,7 @@ public class HseOneActivity extends AppCompatActivity implements EasyPermissions initializeLayouts(); - imgUpload.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - alertForPictures(HseOneActivity.this); - } - }); + imgBack.setOnClickListener(new View.OnClickListener() { @Override @@ -193,237 +130,126 @@ public class HseOneActivity extends AppCompatActivity implements EasyPermissions btnNext.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Intent intent = new Intent(HseOneActivity.this, HseTwoActivity.class); - startActivity(intent); + if (isValidate()) { + Intent intent = new Intent(HseOneActivity.this, HseTwoActivity.class); + startActivity(intent); + } + + } + }); + + safetyTextview.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + safetyTrainingTopic = safetyTrainingArrayList.get(position).getTitle(); + StorageManager.getInstance().getHseTrainingModel().get(0).setSafetyTopicId(safetyTrainingArrayList.get(position).getId()); + } + }); + + targetAudienceTextview.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + targetAudience = departmentArrayList.get(position).getTitle(); + StorageManager.getInstance().getHseTrainingModel().get(0).setTargetAudienceId(departmentArrayList.get(position).getId()); + } + }); + + locationTextview.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + location = locationArrayList.get(position).getTitle(); + StorageManager.getInstance().getHseTrainingModel().get(0).setLocationId(locationArrayList.get(position).getId()); + } + }); + + subLocationTextView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + subLocation = subLocationArrayList.get(position).getTitle(); + StorageManager.getInstance().getHseTrainingModel().get(0).setSubLocationId(subLocationArrayList.get(position).getId()); + } + }); + + etNoOfEmployees.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + if (!s.toString().isEmpty()) { + StorageManager.getInstance().getHseTrainingModel().get(0).setEmployeeAttendance(Integer.parseInt(s.toString())); + } + + } + + @Override + public void afterTextChanged(Editable s) { + } }); } private void initializeLayouts() { - imgUpload = findViewById(R.id.img_upload); imgBack = findViewById(R.id.img_back); btnNext = findViewById(R.id.btn_next); + etNoOfEmployees = findViewById(R.id.et_no_of_employees); - trainingPicRecyclerView = findViewById(R.id.tPicturesRecyclerView); + safetyTextview = findViewById(R.id.safety_textview); + targetAudienceTextview = findViewById(R.id.target_audience_textview); - imagePaperAdapter = new PTWImageAdapter(PaperImageList, this, ""); - trainingPicRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); - trainingPicRecyclerView.setAdapter(imagePaperAdapter); + locationTextview = findViewById(R.id.location_textview); + subLocationTextView = findViewById(R.id.sub_location_textview); - } + safetyTrainingArrayList.addAll(Helper.getList(Helper.hseSafetyTrainingTopics, this, HseSafetyTrainingTopic.class)); + safetyTrainingAdapter = new SafetyTrainingAdapter(this, safetyTrainingArrayList); + safetyTextview.setAdapter(safetyTrainingAdapter); - public void bitmapToByteArrayAsync( - Bitmap bitmap, - int targetSizeInKB, - Consumer onSuccess, - Consumer onError - ) { - new Thread(() -> { - try { - if (bitmap == null) { - throw new IllegalArgumentException("Bitmap cannot be null."); - } + departmentArrayList_temp.addAll(Helper.getList(Helper.hseDepartment, this, HseDepartment.class)); - int targetSizeInBytes = targetSizeInKB * 1024; - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - int minQuality = 10; - int maxQuality = 100; - int quality = maxQuality; + if (!departmentArrayList_temp.isEmpty()) { - // Binary search for the best quality that meets the target size - while (minQuality <= maxQuality) { - byteArrayOutputStream.reset(); - bitmap.compress(Bitmap.CompressFormat.JPEG, quality, byteArrayOutputStream); + List filteredUnitItems = departmentArrayList_temp.stream() + .filter(item -> Objects.equals(item.getSiteId(), StorageManager.getInstance().getSite_id())) + .collect(Collectors.toList()); - int byteSize = byteArrayOutputStream.size(); - if (byteSize > targetSizeInBytes) { - maxQuality = quality - 1; - } else { - minQuality = quality + 1; - } - quality = (minQuality + maxQuality) / 2; - } - - onSuccess.accept(byteArrayOutputStream.toByteArray()); - } catch (Exception e) { - onError.accept(e); - } - }).start(); - } - - public void uriToByteArrayAsync( - Context context, - Uri uri, - int targetSizeInKB, - Consumer onSuccess, - Consumer onError - ) { - new Thread(() -> { - try { - int targetSizeInBytes = targetSizeInKB * 1024; - - // Load the image as a Bitmap without scaling - Bitmap bitmap; - try (InputStream inputStream = context.getContentResolver().openInputStream(uri)) { - bitmap = BitmapFactory.decodeStream(inputStream); - } - - if (bitmap == null) { - throw new IOException("Failed to decode image from URI."); - } - - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - int minQuality = 10; - int maxQuality = 100; - int quality = maxQuality; - - // Binary search for the best quality that meets the target size - while (minQuality <= maxQuality) { - byteArrayOutputStream.reset(); - bitmap.compress(Bitmap.CompressFormat.JPEG, quality, byteArrayOutputStream); - - int byteSize = byteArrayOutputStream.size(); - if (byteSize > targetSizeInBytes) { - maxQuality = quality - 1; - } else { - minQuality = quality + 1; - } - quality = (minQuality + maxQuality) / 2; - } - - onSuccess.accept(byteArrayOutputStream.toByteArray()); - } catch (IOException e) { - onError.accept(e); - } - }).start(); - } - - private Bitmap fixImageRotation(String imagePath) { - Bitmap bitmap = BitmapFactory.decodeFile(imagePath); - try { - ExifInterface exif = new ExifInterface(imagePath); - int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED); - - int rotationAngle = 0; - switch (orientation) { - case ExifInterface.ORIENTATION_ROTATE_90: - rotationAngle = 90; - break; - case ExifInterface.ORIENTATION_ROTATE_180: - rotationAngle = 180; - break; - case ExifInterface.ORIENTATION_ROTATE_270: - rotationAngle = 270; - break; - } - - if (rotationAngle != 0) { - Matrix matrix = new Matrix(); - matrix.postRotate(rotationAngle); - return Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); - } - } catch (IOException e) { - e.printStackTrace(); + departmentArrayList.clear(); + departmentArrayList.addAll(filteredUnitItems); + departmentAdapter = new DepartmentAdapter(this, departmentArrayList); + targetAudienceTextview.setAdapter(departmentAdapter); } - return bitmap; - } - @SuppressLint("MissingInflatedId") - public void alertForPictures(Context con) { - ViewGroup viewGroup = findViewById(android.R.id.content); + locationArrayList_temp.addAll(Helper.getList(Helper.hseBuildings, this, HseBuilding.class)); - TextView dialogCameraBtn, dialogGalleryBtn; + //Location -- Building + if (!locationArrayList_temp.isEmpty()) { - AlertDialog.Builder builder = new AlertDialog.Builder(con); - View view1 = LayoutInflater.from(con).inflate(R.layout.custom_layout_for_image, viewGroup, false); - builder.setCancelable(false); - builder.setView(view1); + List filteredUnitItems = locationArrayList_temp.stream() + .filter(item -> Objects.equals(item.getSiteId(), StorageManager.getInstance().getSite_id())) + .collect(Collectors.toList()); - dialogCameraBtn = view1.findViewById(R.id.dialog_camera_btn); - dialogGalleryBtn = view1.findViewById(R.id.dialog_gallery_btn); - - AlertDialog alertDialog = builder.create(); - alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - - dialogCameraBtn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - - alertDialog.dismiss(); - openCamera(); - - } - }); - - dialogGalleryBtn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - - alertDialog.dismiss(); - openGallery(); - - } - }); - - alertDialog.show(); - } - - @AfterPermissionGranted(GALLERY_REQUEST) - public void openGallery() { - if (hasGalleryPermission()) { - // Have permission, do the thing! - Intent galleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); - // Start the Intent - //startActivityForResult(galleryIntent, GALLERY_REQUEST); - imagePickerLauncher.launch(galleryIntent); - } else { - // Ask for one permission - String[] perms = {}; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - perms = new String[]{Manifest.permission.READ_MEDIA_IMAGES}; - } else { - perms = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}; - - } - EasyPermissions.requestPermissions(this, getString(R.string.rationale_gallery), GALLERY_REQUEST, perms); + locationArrayList.clear(); + locationArrayList.addAll(filteredUnitItems); + buildingAdapter = new BuildingsAdapter(this, locationArrayList); + locationTextview.setAdapter(buildingAdapter); } - } - @AfterPermissionGranted(CAMERA_REQUEST_PAPER) - public void openCamera() { - if (hasCameraPermission()) { - try { - Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); - File photoFile = null; - try { - photoFile = createImageFile(); - } catch (IOException ex) { - // Error occurred while creating the File - } + subLocationArrayList_temp.addAll(Helper.getList(Helper.hseFloors, this, HseFloor.class)); - if (photoFile != null) { + //Sub Location -- floor + if (!subLocationArrayList_temp.isEmpty()) { - Uri photoURI = FileProvider.getUriForFile(this, - getPackageName(), - photoFile); - takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); - //startActivityForResult(takePictureIntent, CAMERA_REQUEST); - paperCameraLauncher.launch(takePictureIntent); - } - } catch (ActivityNotFoundException e) { - Toast.makeText(this, "Camera app not found", Toast.LENGTH_SHORT).show(); - } - } else { - // Ask for one permission - String[] perms = {}; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - perms = new String[]{Manifest.permission.READ_MEDIA_IMAGES, Manifest.permission.CAMERA}; - } else { - perms = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}; - } + List filteredUnitItems = subLocationArrayList_temp.stream() + .filter(item -> Objects.equals(item.getSiteId(), StorageManager.getInstance().getSite_id())) + .collect(Collectors.toList()); - EasyPermissions.requestPermissions(this, getString(R.string.rationale_camera), CAMERA_REQUEST_PAPER, perms); + subLocationArrayList.clear(); + subLocationArrayList.addAll(filteredUnitItems); + floorsAdapter = new FloorsAdapter(this, subLocationArrayList); + subLocationTextView.setAdapter(floorsAdapter); } + } /*@AfterPermissionGranted(CAMERA_REQUEST_ITEM) @@ -462,76 +288,41 @@ public class HseOneActivity extends AppCompatActivity implements EasyPermissions } }*/ - @Override - public void onRequestPermissionsResult(int requestCode, - @NonNull String[] permissions, - @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - // EasyPermissions handles the request result. - EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); - } - @Override - public void onPermissionsGranted(int requestCode, @NonNull List perms) { - - } - - @Override - public void onPermissionsDenied(int requestCode, @NonNull List perms) { - if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) { - new AppSettingsDialog.Builder(this).build().show(); - } - } - - private boolean hasCameraPermission() { - String[] perms = {}; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - perms = new String[]{Manifest.permission.READ_MEDIA_IMAGES, Manifest.permission.CAMERA}; - } else { - perms = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}; + public boolean isValidate() { + boolean returnValue = true; + String message = ""; + if (subLocation.isEmpty()) { + message = "Please select floor."; + returnValue = false; } - //Log.e("perms: ",""+perms); - return EasyPermissions.hasPermissions(this, perms); - } - - private boolean hasGalleryPermission() { - String[] perms = {}; - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - perms = new String[]{Manifest.permission.READ_MEDIA_IMAGES}; - } else { - perms = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}; + if (location.isEmpty()) { + message = "Please select building."; + returnValue = false; } - return EasyPermissions.hasPermissions(this, perms); - } + if (targetAudience.isEmpty()) { + message = "Please select department."; + returnValue = false; + } - private File createImageFile() throws IOException { - // Create an image file name - String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); - String imageFileName = "JPEG_" + timeStamp + "_"; - File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); - File image = File.createTempFile( - imageFileName, //prefix - ".jpg", //suffix - storageDir //directory - ); + if (etNoOfEmployees.getText().toString().isEmpty()) { + message = "Please enter No of Employees."; + returnValue = false; + } - paperFilePath = image.getAbsolutePath(); + if (safetyTrainingTopic.isEmpty()) { + message = "Please select Safety Training Topic."; + returnValue = false; + } - return image; - } - - @Override - public void onRationaleAccepted(int requestCode) { - - } - - @Override - public void onRationaleDenied(int requestCode) { + if (!returnValue) { + Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); + } + return returnValue; } } \ No newline at end of file diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/HSETrainingForms/HseTwoActivity.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/HSETrainingForms/HseTwoActivity.java index bcfbd96..0cb12d1 100644 --- a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/HSETrainingForms/HseTwoActivity.java +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/HSETrainingForms/HseTwoActivity.java @@ -1,24 +1,186 @@ package com.utopiaindustries.hseobservationsapp.activities.HSETrainingForms; +import android.Manifest; +import android.annotation.SuppressLint; +import android.content.ActivityNotFoundException; +import android.content.Context; import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Color; +import android.graphics.Matrix; +import android.graphics.drawable.ColorDrawable; +import android.media.ExifInterface; +import android.net.Uri; +import android.os.Build; import android.os.Bundle; +import android.os.Environment; +import android.provider.MediaStore; +import android.text.Editable; +import android.text.InputType; +import android.text.TextWatcher; +import android.util.Log; +import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.EditorInfo; import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; import android.widget.Toast; import androidx.activity.EdgeToEdge; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; +import androidx.core.content.FileProvider; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; +import androidx.lifecycle.ViewModelProvider; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import com.utopiaindustries.hseobservationsapp.R; import com.utopiaindustries.hseobservationsapp.activities.DashboardActivity; import com.utopiaindustries.hseobservationsapp.activities.PermitToWorkForms.PermitTwoActivity; +import com.utopiaindustries.hseobservationsapp.adapters.PTWImageAdapter; +import com.utopiaindustries.hseobservationsapp.models.HseData.HseActivity; +import com.utopiaindustries.hseobservationsapp.utils.ProgressDialogFragment; +import com.utopiaindustries.hseobservationsapp.utils.StorageManager.HseReportRequest; +import com.utopiaindustries.hseobservationsapp.utils.StorageManager.HseTrainingModel; +import com.utopiaindustries.hseobservationsapp.utils.StorageManager.ReportActivityModel; +import com.utopiaindustries.hseobservationsapp.utils.StorageManager.StorageManager; +import com.utopiaindustries.hseobservationsapp.viewmodels.LoginViewModel; -public class HseTwoActivity extends AppCompatActivity { +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.function.Consumer; + +import pub.devrel.easypermissions.AfterPermissionGranted; +import pub.devrel.easypermissions.AppSettingsDialog; +import pub.devrel.easypermissions.EasyPermissions; + +public class HseTwoActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks, + EasyPermissions.RationaleCallbacks{ Button btnSubmit; + EditText etTrainingSession, etDescription; + LoginViewModel loginViewModel; + ImageView imgBack; + + RecyclerView trainingPicRecyclerView; + PTWImageAdapter imagePaperAdapter; + String paperFilePath = "no_pic"; + ArrayList imageList = new ArrayList<>(); + + private static final int CAMERA_REQUEST_PAPER = 1011; + private static final int GALLERY_REQUEST = 2011; + + ImageView imgUpload; + + // Activity Result Launcher for Gallery + private final ActivityResultLauncher imagePickerLauncher = + registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { + if (result.getResultCode() == RESULT_OK && result.getData() != null) { + Uri selectedImage = result.getData().getData(); + + uriToByteArrayAsync( + this, + selectedImage, + 100, // Target size in KB + compressedImage -> { + // Handle the compressed image here, e.g., display it + runOnUiThread(() -> { + /*DocumentTypeImageModel documentImage = new DocumentTypeImageModel( + docTypeId, + docTypeTitle, + compressedImage + );*/ + + //Log.e("doc-image: ",""+ documentImage); + + int position = imageList.size(); + imageList.add(compressedImage); + imagePaperAdapter.notifyItemInserted(position); + }); + }, + error -> { + // Handle any errors + runOnUiThread(() -> { + Toast.makeText(this, "Error compressing image: " + error.getMessage(), Toast.LENGTH_SHORT).show(); + }); + } + ); + } + else if (result.getResultCode() == RESULT_CANCELED) { + Toast.makeText(this, "Gallery Selection Cancelled!", Toast.LENGTH_SHORT).show(); + } + else { + Toast.makeText(this, "Gallery Selection Cancelled!", Toast.LENGTH_SHORT).show(); + } + }); + + // Activity Result Launcher for Paper Camera + private final ActivityResultLauncher paperCameraLauncher = + registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { + + if (result.getResultCode() == RESULT_OK) { + + File imageFile = new File(paperFilePath); + if (imageFile.exists()) { + + Bitmap originalBitmap = fixImageRotation(paperFilePath); + + //Bitmap timestampedBitmap = addTimestampToImage(originalBitmap); + + bitmapToByteArrayAsync( + originalBitmap, + 100, // Target size in KB + imageBytes -> { + this.runOnUiThread(() -> { + + /*DocumentTypeImageModel documentImage = new DocumentTypeImageModel( + docTypeId, + docTypeTitle, + imageBytes + );*/ + + //Log.e("doc-image: ",""+ documentImage); + + int position = imageList.size(); + imageList.add(imageBytes); + imagePaperAdapter.notifyItemInserted(position); + + }); + }, + error -> { + error.printStackTrace(); + } + ); + + } else { + Toast.makeText(this, "Image file not found!", Toast.LENGTH_SHORT).show(); + } + } + else if (result.getResultCode() == RESULT_CANCELED) { + Toast.makeText(this, "Camera capture failed!", Toast.LENGTH_SHORT).show(); + } + else { + Toast.makeText(this, "Camera capture failed!", Toast.LENGTH_SHORT).show(); + } + }); @Override protected void onCreate(Bundle savedInstanceState) { @@ -33,10 +195,109 @@ public class HseTwoActivity extends AppCompatActivity { initializeLayouts(); + imgBack.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + + imgUpload.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + alertForPictures(HseTwoActivity.this); + } + }); + btnSubmit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Toast.makeText(HseTwoActivity.this,"Reported Submitted",Toast.LENGTH_SHORT).show(); + /*Toast.makeText(HseTwoActivity.this,"Reported Submitted",Toast.LENGTH_SHORT).show(); + Intent intent = new Intent(HseTwoActivity.this, DashboardActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);*/ + if (isValidate()){ + StorageManager.getInstance().getHseTrainingModel().get(0).setPictures(imageList); + alertReportSubmit(HseTwoActivity.this); + } + + } + }); + + etTrainingSession.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + if (!s.toString().isEmpty()) { + StorageManager.getInstance().getHseTrainingModel().get(0).setTrainingMinutes(Double.parseDouble(s.toString())); + } + } + + @Override + public void afterTextChanged(Editable s) { + + } + }); + + etDescription.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + StorageManager.getInstance().getHseTrainingModel().get(0).setDescription(s.toString()); + } + + @Override + public void afterTextChanged(Editable s) { + + } + }); + } + + private void initializeLayouts() { + + btnSubmit = findViewById(R.id.btn_submit); + etTrainingSession = findViewById(R.id.et_training_session); + imgBack = findViewById(R.id.img_back); + imgUpload = findViewById(R.id.img_upload); + + etDescription = findViewById(R.id.et_description); + etDescription.setImeOptions(EditorInfo.IME_ACTION_DONE); + etDescription.setRawInputType(InputType.TYPE_CLASS_TEXT); + + trainingPicRecyclerView = findViewById(R.id.tPicturesRecyclerView); + + imagePaperAdapter = new PTWImageAdapter(imageList, this, ""); + trainingPicRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); + trainingPicRecyclerView.setAdapter(imagePaperAdapter); + + loginViewModel = new ViewModelProvider(this).get(LoginViewModel.class); + + loginViewModel.getLoadingState().observe(this, isLoading -> { + + if (isLoading != null && isLoading) { + showProgressDialog(); + } else { + dismissProgressDialog(); + } + }); + + loginViewModel.getErrorMessage().observe(this, errorResponse -> { + Toast.makeText(this, errorResponse, Toast.LENGTH_SHORT).show(); + }); + + loginViewModel.getUserSaveLiveData().observe(this, hseSaveResponse -> { + if (hseSaveResponse != null && hseSaveResponse.getStatus().equals("success")) { + Toast.makeText(this, "Reported Submitted", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(HseTwoActivity.this, DashboardActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); @@ -46,8 +307,381 @@ public class HseTwoActivity extends AppCompatActivity { }); } - private void initializeLayouts() { + public void alertReportSubmit(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_report_submission, 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(); + + List reportList = StorageManager.getInstance().getHseTrainingModel(); + HseReportRequest hseTrainingRequest = new HseReportRequest<>(); + hseTrainingRequest.setObservation_date(StorageManager.getInstance().getObservation_date()); + hseTrainingRequest.setUserId(StorageManager.getInstance().getUserId()); + hseTrainingRequest.setSite_id(StorageManager.getInstance().getSite_id()); + hseTrainingRequest.setSupervisorId(StorageManager.getInstance().getSupervisorId()); + hseTrainingRequest.setSupervisorName(StorageManager.getInstance().getSupervisorName()); + hseTrainingRequest.setShift(StorageManager.getInstance().getShift()); + hseTrainingRequest.setRecordTypeId(StorageManager.getInstance().getRecordTypeId()); + hseTrainingRequest.setReportData(reportList); + + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + String jsonRequest = gson.toJson(hseTrainingRequest); + Log.e("RequestModel JSON", jsonRequest); + + loginViewModel.saveHSEData(hseTrainingRequest); + + + } + }); + + dialogCancelBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + + alertDialog.dismiss(); + //Toast.makeText(con, "Cancel", Toast.LENGTH_SHORT).show(); + + } + }); + + alertDialog.show(); + } + + 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(); + } + } + + public boolean isValidate() { + boolean returnValue = true; + String message = ""; + + if (etDescription.getText().toString().isEmpty()) { + message = "Please enter Description"; + returnValue = false; + } + + if (etTrainingSession.getText().toString().isEmpty()) { + message = "Please enter Minutes of Session."; + returnValue = false; + } + + if (!returnValue) { + Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); + } + + return returnValue; + } + + public void bitmapToByteArrayAsync( + Bitmap bitmap, + int targetSizeInKB, + Consumer onSuccess, + Consumer onError + ) { + new Thread(() -> { + try { + if (bitmap == null) { + throw new IllegalArgumentException("Bitmap cannot be null."); + } + + int targetSizeInBytes = targetSizeInKB * 1024; + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + int minQuality = 10; + int maxQuality = 100; + int quality = maxQuality; + + // Binary search for the best quality that meets the target size + while (minQuality <= maxQuality) { + byteArrayOutputStream.reset(); + bitmap.compress(Bitmap.CompressFormat.JPEG, quality, byteArrayOutputStream); + + int byteSize = byteArrayOutputStream.size(); + if (byteSize > targetSizeInBytes) { + maxQuality = quality - 1; + } else { + minQuality = quality + 1; + } + quality = (minQuality + maxQuality) / 2; + } + + onSuccess.accept(byteArrayOutputStream.toByteArray()); + } catch (Exception e) { + onError.accept(e); + } + }).start(); + } + + public void uriToByteArrayAsync( + Context context, + Uri uri, + int targetSizeInKB, + Consumer onSuccess, + Consumer onError + ) { + new Thread(() -> { + try { + int targetSizeInBytes = targetSizeInKB * 1024; + + // Load the image as a Bitmap without scaling + Bitmap bitmap; + try (InputStream inputStream = context.getContentResolver().openInputStream(uri)) { + bitmap = BitmapFactory.decodeStream(inputStream); + } + + if (bitmap == null) { + throw new IOException("Failed to decode image from URI."); + } + + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + int minQuality = 10; + int maxQuality = 100; + int quality = maxQuality; + + // Binary search for the best quality that meets the target size + while (minQuality <= maxQuality) { + byteArrayOutputStream.reset(); + bitmap.compress(Bitmap.CompressFormat.JPEG, quality, byteArrayOutputStream); + + int byteSize = byteArrayOutputStream.size(); + if (byteSize > targetSizeInBytes) { + maxQuality = quality - 1; + } else { + minQuality = quality + 1; + } + quality = (minQuality + maxQuality) / 2; + } + + onSuccess.accept(byteArrayOutputStream.toByteArray()); + } catch (IOException e) { + onError.accept(e); + } + }).start(); + } + + private Bitmap fixImageRotation(String imagePath) { + Bitmap bitmap = BitmapFactory.decodeFile(imagePath); + try { + ExifInterface exif = new ExifInterface(imagePath); + int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED); + + int rotationAngle = 0; + switch (orientation) { + case ExifInterface.ORIENTATION_ROTATE_90: + rotationAngle = 90; + break; + case ExifInterface.ORIENTATION_ROTATE_180: + rotationAngle = 180; + break; + case ExifInterface.ORIENTATION_ROTATE_270: + rotationAngle = 270; + break; + } + + if (rotationAngle != 0) { + Matrix matrix = new Matrix(); + matrix.postRotate(rotationAngle); + return Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); + } + } catch (IOException e) { + e.printStackTrace(); + } + return bitmap; + } + + @SuppressLint("MissingInflatedId") + public void alertForPictures(Context con) { + ViewGroup viewGroup = findViewById(android.R.id.content); + + TextView dialogCameraBtn, dialogGalleryBtn; + + AlertDialog.Builder builder = new AlertDialog.Builder(con); + View view1 = LayoutInflater.from(con).inflate(R.layout.custom_layout_for_image, viewGroup, false); + builder.setCancelable(false); + builder.setView(view1); + + dialogCameraBtn = view1.findViewById(R.id.dialog_camera_btn); + dialogGalleryBtn = view1.findViewById(R.id.dialog_gallery_btn); + + AlertDialog alertDialog = builder.create(); + alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + + dialogCameraBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + + alertDialog.dismiss(); + openCamera(); + + } + }); + + dialogGalleryBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + + alertDialog.dismiss(); + openGallery(); + + } + }); + + alertDialog.show(); + } + + @AfterPermissionGranted(GALLERY_REQUEST) + public void openGallery() { + if (hasGalleryPermission()) { + // Have permission, do the thing! + Intent galleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); + // Start the Intent + //startActivityForResult(galleryIntent, GALLERY_REQUEST); + imagePickerLauncher.launch(galleryIntent); + } else { + // Ask for one permission + String[] perms = {}; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + perms = new String[]{Manifest.permission.READ_MEDIA_IMAGES}; + } else { + perms = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}; + + } + EasyPermissions.requestPermissions(this, getString(R.string.rationale_gallery), GALLERY_REQUEST, perms); + } + } + + @AfterPermissionGranted(CAMERA_REQUEST_PAPER) + public void openCamera() { + if (hasCameraPermission()) { + try { + Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); + File photoFile = null; + try { + photoFile = createImageFile(); + } catch (IOException ex) { + // Error occurred while creating the File + } + + if (photoFile != null) { + + Uri photoURI = FileProvider.getUriForFile(this, + getPackageName(), + photoFile); + takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); + //startActivityForResult(takePictureIntent, CAMERA_REQUEST); + paperCameraLauncher.launch(takePictureIntent); + } + } catch (ActivityNotFoundException e) { + Toast.makeText(this, "Camera app not found", Toast.LENGTH_SHORT).show(); + } + } else { + // Ask for one permission + String[] perms = {}; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + perms = new String[]{Manifest.permission.READ_MEDIA_IMAGES, Manifest.permission.CAMERA}; + } else { + perms = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}; + } + + EasyPermissions.requestPermissions(this, getString(R.string.rationale_camera), CAMERA_REQUEST_PAPER, perms); + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, + @NonNull String[] permissions, + @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + + // EasyPermissions handles the request result. + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); + } + + @Override + public void onPermissionsGranted(int requestCode, @NonNull List perms) { + + } + + @Override + public void onPermissionsDenied(int requestCode, @NonNull List perms) { + if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) { + new AppSettingsDialog.Builder(this).build().show(); + } + } + + private boolean hasCameraPermission() { + String[] perms = {}; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + perms = new String[]{Manifest.permission.READ_MEDIA_IMAGES, Manifest.permission.CAMERA}; + } else { + perms = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}; + + } + + //Log.e("perms: ",""+perms); + return EasyPermissions.hasPermissions(this, perms); + } + + private boolean hasGalleryPermission() { + String[] perms = {}; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + perms = new String[]{Manifest.permission.READ_MEDIA_IMAGES}; + } else { + perms = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}; + } + + return EasyPermissions.hasPermissions(this, perms); + } + + private File createImageFile() throws IOException { + // Create an image file name + String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); + String imageFileName = "JPEG_" + timeStamp + "_"; + File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); + File image = File.createTempFile( + imageFileName, //prefix + ".jpg", //suffix + storageDir //directory + ); + + paperFilePath = image.getAbsolutePath(); + + return image; + } + + @Override + public void onRationaleAccepted(int requestCode) { + + } + + @Override + public void onRationaleDenied(int requestCode) { - btnSubmit = findViewById(R.id.btn_submit); } } \ No newline at end of file diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ObservationForms/ObservationOneActivity.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ObservationForms/ObservationOneActivity.java index a2c4ec0..200a024 100644 --- a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ObservationForms/ObservationOneActivity.java +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ObservationForms/ObservationOneActivity.java @@ -17,9 +17,13 @@ import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import com.utopiaindustries.hseobservationsapp.R; +import com.utopiaindustries.hseobservationsapp.adapters.BuildingsAdapter; +import com.utopiaindustries.hseobservationsapp.adapters.FloorsAdapter; import com.utopiaindustries.hseobservationsapp.adapters.ObservationClassAdapter; import com.utopiaindustries.hseobservationsapp.adapters.ObservationSubClassAdapter; import com.utopiaindustries.hseobservationsapp.helper.Helper; +import com.utopiaindustries.hseobservationsapp.models.HseData.HseBuilding; +import com.utopiaindustries.hseobservationsapp.models.HseData.HseFloor; import com.utopiaindustries.hseobservationsapp.models.HseData.HseObservationClass; import com.utopiaindustries.hseobservationsapp.models.HseData.HseObservationSubClass; import com.utopiaindustries.hseobservationsapp.utils.StorageManager.StorageManager; @@ -31,7 +35,7 @@ import java.util.stream.Collectors; public class ObservationOneActivity extends AppCompatActivity { - private AutoCompleteTextView observationTextview, observationSubTextview; + private AutoCompleteTextView observationTextview, observationSubTextview, buildingTextview, floorTextview; private ObservationClassAdapter observationClassAdapter; private ObservationSubClassAdapter observationSubClassAdapter; @@ -40,11 +44,19 @@ public class ObservationOneActivity extends AppCompatActivity { private ArrayList obSubClassArrayList_temp = new ArrayList<>(); private ArrayList obSubClassArrayList = new ArrayList<>(); + private ArrayList hseBuildingArrayList_temp = new ArrayList<>(); + private ArrayList hseBuildingArrayList = new ArrayList<>(); + + private ArrayList hseFloorArrayList_temp = new ArrayList<>(); + private ArrayList hseFloorArrayList = new ArrayList<>(); + private Button btnNext; ImageView imgBack; - String observationClass = "", observationSubClass = ""; + String observationClass = "", observationSubClass = "", building = "", floor = ""; int observationClassId = 0, observationSubClassId = 0; + private BuildingsAdapter buildingAdapter; + private FloorsAdapter floorsAdapter; @Override protected void onCreate(Bundle savedInstanceState) { @@ -92,6 +104,7 @@ public class ObservationOneActivity extends AppCompatActivity { HseObservationClass clickedItem = obClassArrayList.get(position); StorageManager.getInstance().getObservationsModel().get(0).setObservationClassId(clickedItem.getId()); + StorageManager.getInstance().getObservationsModel().get(0).setHseObservationName(observationClass); observationSubTextview.setText(null); @@ -116,7 +129,28 @@ public class ObservationOneActivity extends AppCompatActivity { public void onItemClick(AdapterView parent, View view, int position, long id) { // Perform action when shiftTextview item is clicked //Toast.makeText(ObservationOneActivity.this, "Item clicked: " + obSubClassArrayList.get(position).getTitle(), Toast.LENGTH_SHORT).show(); + observationSubClass = obSubClassArrayList.get(position).getTitle(); StorageManager.getInstance().getObservationsModel().get(0).setObservationSubClassId(obSubClassArrayList.get(position).getId()); + StorageManager.getInstance().getObservationsModel().get(0).setHseObservationSubClassName(observationSubClass); + } + }); + + buildingTextview.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + building = hseBuildingArrayList.get(position).getTitle(); + StorageManager.getInstance().getObservationsModel().get(0).setBuildingId(hseBuildingArrayList.get(position).getId()); + StorageManager.getInstance().getObservationsModel().get(0).setBuildingName(hseBuildingArrayList.get(position).getTitle()); + + } + }); + + floorTextview.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + floor = hseFloorArrayList.get(position).getTitle(); + StorageManager.getInstance().getObservationsModel().get(0).setFloorId(hseFloorArrayList.get(position).getId()); + StorageManager.getInstance().getObservationsModel().get(0).setFloorName(hseFloorArrayList.get(position).getTitle()); } }); } @@ -124,6 +158,8 @@ public class ObservationOneActivity extends AppCompatActivity { public void initializeLayout() { observationTextview = findViewById(R.id.observation_textview); observationSubTextview = findViewById(R.id.observation_sub_textview); + buildingTextview = findViewById(R.id.building_textview); + floorTextview = findViewById(R.id.floor_textview); btnNext = findViewById(R.id.btn_next); imgBack = findViewById(R.id.img_back); @@ -133,6 +169,35 @@ public class ObservationOneActivity extends AppCompatActivity { observationClassAdapter = new ObservationClassAdapter(this, obClassArrayList); observationTextview.setAdapter(observationClassAdapter); + hseBuildingArrayList_temp.addAll(Helper.getList(Helper.hseBuildings, this, HseBuilding.class)); + hseFloorArrayList_temp.addAll(Helper.getList(Helper.hseFloors, this, HseFloor.class)); + + //Location -- Building + if (!hseBuildingArrayList_temp.isEmpty()) { + + List filteredUnitItems = hseBuildingArrayList_temp.stream() + .filter(item -> Objects.equals(item.getSiteId(), StorageManager.getInstance().getSite_id())) + .collect(Collectors.toList()); + + hseBuildingArrayList.clear(); + hseBuildingArrayList.addAll(filteredUnitItems); + buildingAdapter = new BuildingsAdapter(this, hseBuildingArrayList); + buildingTextview.setAdapter(buildingAdapter); + } + + //Sub Location -- floor + if (!hseFloorArrayList_temp.isEmpty()) { + + List filteredUnitItems = hseFloorArrayList_temp.stream() + .filter(item -> Objects.equals(item.getSiteId(), StorageManager.getInstance().getSite_id())) + .collect(Collectors.toList()); + + hseFloorArrayList.clear(); + hseFloorArrayList.addAll(filteredUnitItems); + floorsAdapter = new FloorsAdapter(this, hseFloorArrayList); + floorTextview.setAdapter(floorsAdapter); + } + //observation sub class items //for Unsafe //for condition @@ -145,6 +210,16 @@ public class ObservationOneActivity extends AppCompatActivity { boolean returnValue = true; String message = ""; + if (floor.isEmpty()) { + message = "Please select floor."; + returnValue = false; + } + + if (building.isEmpty()) { + message = "Please select building."; + returnValue = false; + } + if (observationSubClass.isEmpty()) { message = "Please select observation sub class."; returnValue = false; diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ObservationForms/ObservationThreeActivity.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ObservationForms/ObservationThreeActivity.java index 944f444..d62e024 100644 --- a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ObservationForms/ObservationThreeActivity.java +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ObservationForms/ObservationThreeActivity.java @@ -33,6 +33,8 @@ import com.google.gson.GsonBuilder; import com.utopiaindustries.hseobservationsapp.R; import com.utopiaindustries.hseobservationsapp.activities.DashboardActivity; import com.utopiaindustries.hseobservationsapp.utils.HSERequestModel; +import com.utopiaindustries.hseobservationsapp.utils.StorageManager.HseReportRequest; +import com.utopiaindustries.hseobservationsapp.utils.StorageManager.ObservationModel; import com.utopiaindustries.hseobservationsapp.utils.StorageManager.StorageManager; import com.utopiaindustries.hseobservationsapp.utils.ProgressDialogFragment; import com.utopiaindustries.hseobservationsapp.viewmodels.LoginViewModel; @@ -40,6 +42,7 @@ import com.utopiaindustries.hseobservationsapp.viewmodels.LoginViewModel; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; +import java.util.List; public class ObservationThreeActivity extends AppCompatActivity { @@ -48,6 +51,7 @@ public class ObservationThreeActivity extends AppCompatActivity { ImageView imgBack; Button btnSubmit, btnDraft; EditText etDescription; + String obStatus = ""; LoginViewModel loginViewModel; @@ -92,8 +96,10 @@ public class ObservationThreeActivity extends AppCompatActivity { { public void onCheckedChanged(RadioGroup group, int checkedId) { if (checkedId == R.id.rb_open) { + obStatus = "true"; StorageManager.getInstance().getObservationsModel().get(0).setObservationStatus(true); } else if (checkedId == R.id.rb_closed) { + obStatus = "false"; StorageManager.getInstance().getObservationsModel().get(0).setObservationStatus(false); } } @@ -102,14 +108,9 @@ public class ObservationThreeActivity extends AppCompatActivity { btnSubmit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - - alertReportSubmit(ObservationThreeActivity.this); - /*Toast.makeText(ObservationThreeActivity.this,"Reported Submitted",Toast.LENGTH_SHORT).show(); - Intent intent = new Intent(ObservationThreeActivity.this, DashboardActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); - intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); - startActivity(intent); - overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);*/ + if (isValidate()) { + alertReportSubmit(ObservationThreeActivity.this); + } } }); @@ -181,22 +182,22 @@ public class ObservationThreeActivity extends AppCompatActivity { alertDialog.dismiss(); - // byte[] reportBytes = convertReportToByteArray(); - /*HSERequestModel requestModel = new HSERequestModel(); - requestModel.setSite_id(StorageManager.getInstance().getSite_id()); - requestModel.setSupervisorId(StorageManager.getInstance().getSupervisorId()); - requestModel.setObservation_date(StorageManager.getInstance().getObservation_date()); - requestModel.setShift(StorageManager.getInstance().getShift()); - requestModel.setRecordTypeId(StorageManager.getInstance().getRecordTypeId()); - requestModel.setObservationModel(StorageManager.getInstance().getObservationsModel());*/ + List observationList = StorageManager.getInstance().getObservationsModel(); + HseReportRequest observationRequest = new HseReportRequest<>(); + observationRequest.setObservation_date(StorageManager.getInstance().getObservation_date()); + observationRequest.setUserId(StorageManager.getInstance().getUserId()); + observationRequest.setSite_id(StorageManager.getInstance().getSite_id()); + observationRequest.setSupervisorId(StorageManager.getInstance().getSupervisorId()); + observationRequest.setSupervisorName(StorageManager.getInstance().getSupervisorName()); + observationRequest.setShift(StorageManager.getInstance().getShift()); + observationRequest.setRecordTypeId(StorageManager.getInstance().getRecordTypeId()); + observationRequest.setReportData(observationList); Gson gson = new GsonBuilder().setPrettyPrinting().create(); - String jsonRequest = gson.toJson(StorageManager.getInstance()); + String jsonRequest = gson.toJson(observationRequest); Log.e("RequestModel JSON", jsonRequest); - //loginViewModel.saveHSEData(requestModel); - - + loginViewModel.saveHSEData(observationRequest); } }); @@ -254,4 +255,25 @@ public class ObservationThreeActivity extends AppCompatActivity { progressDialog.dismiss(); } } + + public boolean isValidate() { + boolean returnValue = true; + String message = ""; + + if (etDescription.getText().toString().isEmpty()) { + message = "Please enter description."; + returnValue = false; + } + + if (obStatus.isEmpty()) { + message = "Please select Status."; + returnValue = false; + } + + if (!returnValue) { + Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); + } + + return returnValue; + } } \ No newline at end of file diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/OtherHSEActivityForms/OtherHseActivity.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/OtherHSEActivityForms/OtherHseActivity.java index d505b9d..319e451 100644 --- a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/OtherHSEActivityForms/OtherHseActivity.java +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/OtherHSEActivityForms/OtherHseActivity.java @@ -33,9 +33,14 @@ import com.utopiaindustries.hseobservationsapp.R; import com.utopiaindustries.hseobservationsapp.activities.DashboardActivity; import com.utopiaindustries.hseobservationsapp.utils.HSERequestModel; import com.utopiaindustries.hseobservationsapp.utils.ProgressDialogFragment; +import com.utopiaindustries.hseobservationsapp.utils.StorageManager.HseReportRequest; +import com.utopiaindustries.hseobservationsapp.utils.StorageManager.ObservationModel; +import com.utopiaindustries.hseobservationsapp.utils.StorageManager.ReportActivityModel; import com.utopiaindustries.hseobservationsapp.utils.StorageManager.StorageManager; import com.utopiaindustries.hseobservationsapp.viewmodels.LoginViewModel; +import java.util.List; + public class OtherHseActivity extends AppCompatActivity { Button btnSubmit; @@ -188,11 +193,22 @@ public class OtherHseActivity extends AppCompatActivity { alertDialog.dismiss(); + List reportList = StorageManager.getInstance().getReportActivityModel(); + HseReportRequest reportRequest = new HseReportRequest<>(); + reportRequest.setObservation_date(StorageManager.getInstance().getObservation_date()); + reportRequest.setUserId(StorageManager.getInstance().getUserId()); + reportRequest.setSite_id(StorageManager.getInstance().getSite_id()); + reportRequest.setSupervisorId(StorageManager.getInstance().getSupervisorId()); + reportRequest.setSupervisorName(StorageManager.getInstance().getSupervisorName()); + reportRequest.setShift(StorageManager.getInstance().getShift()); + reportRequest.setRecordTypeId(StorageManager.getInstance().getRecordTypeId()); + reportRequest.setReportData(reportList); + Gson gson = new GsonBuilder().setPrettyPrinting().create(); - String jsonRequest = gson.toJson(StorageManager.getInstance()); + String jsonRequest = gson.toJson(reportRequest); Log.e("RequestModel JSON", jsonRequest); - //loginViewModel.saveHSEData(requestModel); + loginViewModel.saveHSEData(reportRequest); } diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/PermitToWorkForms/PermitOneActivity.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/PermitToWorkForms/PermitOneActivity.java index 9f8d107..62cf111 100644 --- a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/PermitToWorkForms/PermitOneActivity.java +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/PermitToWorkForms/PermitOneActivity.java @@ -25,12 +25,14 @@ import com.utopiaindustries.hseobservationsapp.R; import com.utopiaindustries.hseobservationsapp.activities.ObservationForms.ObservationThreeActivity; import com.utopiaindustries.hseobservationsapp.activities.ObservationForms.ObservationTwoActivity; import com.utopiaindustries.hseobservationsapp.adapters.BuildingsAdapter; +import com.utopiaindustries.hseobservationsapp.adapters.DepartmentAdapter; import com.utopiaindustries.hseobservationsapp.adapters.FloorsAdapter; import com.utopiaindustries.hseobservationsapp.adapters.HsePtwTypeAdapter; import com.utopiaindustries.hseobservationsapp.adapters.WorkingTeamAdapter; import com.utopiaindustries.hseobservationsapp.helper.Helper; import com.utopiaindustries.hseobservationsapp.models.HseData.HseActivity; import com.utopiaindustries.hseobservationsapp.models.HseData.HseBuilding; +import com.utopiaindustries.hseobservationsapp.models.HseData.HseDepartment; import com.utopiaindustries.hseobservationsapp.models.HseData.HseFloor; import com.utopiaindustries.hseobservationsapp.models.HseData.HsePtwType; import com.utopiaindustries.hseobservationsapp.models.HseData.HseWorkingTeam; @@ -41,16 +43,21 @@ import java.util.List; import java.util.Objects; import java.util.stream.Collectors; +//Department dropdown working public class PermitOneActivity extends AppCompatActivity { private Button btnNext; ImageView imgBack; private AutoCompleteTextView locationTextview, subLocationTextView, ptwTypeTextView, - ptwSubTypeTextView, workingTeamTextView; + ptwSubTypeTextView, workingTeamTextView, departmentTextview; private TextInputLayout ptwTextInputLayout; + private DepartmentAdapter departmentAdapter; + private ArrayList departmentArrayList_temp = new ArrayList<>(); + private ArrayList departmentArrayList = new ArrayList<>(); + private ArrayList locationArrayList_temp = new ArrayList<>(); private ArrayList locationArrayList = new ArrayList<>(); private BuildingsAdapter buildingAdapter; @@ -67,6 +74,7 @@ public class PermitOneActivity extends AppCompatActivity { private WorkingTeamAdapter workingTeamAdapter; String location = "", subLocation = "", ptwType = "", workingTeam = ""; + String departmentName = ""; @Override protected void onCreate(Bundle savedInstanceState) { @@ -133,6 +141,15 @@ public class PermitOneActivity extends AppCompatActivity { } }); + departmentTextview.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + departmentName = departmentArrayList.get(position).getTitle(); + StorageManager.getInstance().getPermitToWorkModel().get(0).setDepartmentId(departmentArrayList.get(position).getId()); + + } + }); + } private void initializeLayout() { @@ -144,6 +161,7 @@ public class PermitOneActivity extends AppCompatActivity { subLocationTextView = findViewById(R.id.sub_location_textview); ptwTypeTextView = findViewById(R.id.ptw_type_textview); ptwTextInputLayout = findViewById(R.id.ptw_type_input); + departmentTextview = findViewById(R.id.department_textview); ptwTypeTextView.setFocusable(false); ptwTypeTextView.setCursorVisible(false); @@ -152,6 +170,21 @@ public class PermitOneActivity extends AppCompatActivity { workingTeamTextView = findViewById(R.id.working_team_textview); + //department + departmentArrayList_temp.addAll(Helper.getList(Helper.hseDepartment, this, HseDepartment.class)); + + if (!departmentArrayList_temp.isEmpty()) { + + List filteredUnitItems = departmentArrayList_temp.stream() + .filter(item -> Objects.equals(item.getSiteId(), StorageManager.getInstance().getSite_id())) + .collect(Collectors.toList()); + + departmentArrayList.clear(); + departmentArrayList.addAll(filteredUnitItems); + departmentAdapter = new DepartmentAdapter(this, departmentArrayList); + departmentTextview.setAdapter(departmentAdapter); + } + locationArrayList_temp.addAll(Helper.getList(Helper.hseBuildings, this, HseBuilding.class)); //Location -- Building @@ -213,6 +246,10 @@ public class PermitOneActivity extends AppCompatActivity { message = "Please select location."; returnValue = false; } + if (departmentName.isEmpty()) { + message = "Please select Department."; + returnValue = false; + } if (!returnValue) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); @@ -239,8 +276,10 @@ public class PermitOneActivity extends AppCompatActivity { } String selectedTitles = selected.get(0).getTitle() + ", " + selected.get(1).getTitle(); + String selectedTypeSubType = selected.get(0).getId() + ", " + selected.get(1).getId(); textView.setText(selectedTitles); ptwType = selectedTitles; + StorageManager.getInstance().getPermitToWorkModel().get(0).setTypeId(selectedTypeSubType); }); builder.setNegativeButton("Cancel", (dialog, which) -> dialog.dismiss()); diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/PermitToWorkForms/PermitTwoActivity.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/PermitToWorkForms/PermitTwoActivity.java index b8777af..f68bd0b 100644 --- a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/PermitToWorkForms/PermitTwoActivity.java +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/PermitToWorkForms/PermitTwoActivity.java @@ -15,10 +15,12 @@ import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Environment; +import android.os.Handler; import android.provider.MediaStore; import android.text.Editable; import android.text.InputType; import android.text.TextWatcher; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -40,17 +42,26 @@ import androidx.core.content.FileProvider; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; +import androidx.core.widget.NestedScrollView; +import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import com.utopiaindustries.hseobservationsapp.R; import com.utopiaindustries.hseobservationsapp.activities.DashboardActivity; import com.utopiaindustries.hseobservationsapp.activities.ObservationForms.ObservationThreeActivity; import com.utopiaindustries.hseobservationsapp.adapters.PTWImageAdapter; import com.utopiaindustries.hseobservationsapp.models.DocumentTypeImageModel; +import com.utopiaindustries.hseobservationsapp.utils.ProgressDialogFragment; +import com.utopiaindustries.hseobservationsapp.utils.StorageManager.HseReportRequest; +import com.utopiaindustries.hseobservationsapp.utils.StorageManager.HseTrainingModel; +import com.utopiaindustries.hseobservationsapp.utils.StorageManager.PermitToWorkModel; import com.utopiaindustries.hseobservationsapp.utils.StorageManager.StorageManager; +import com.utopiaindustries.hseobservationsapp.viewmodels.LoginViewModel; import java.io.ByteArrayOutputStream; import java.io.File; @@ -81,6 +92,9 @@ public class PermitTwoActivity extends AppCompatActivity implements EasyPermissi ImageView imgUpload, imgBack; Button btnSubmit; EditText etDescription; + LoginViewModel loginViewModel; + NestedScrollView scrollView; + String workingParty = ""; // Activity Result Launcher for Gallery private final ActivityResultLauncher imagePickerLauncher = @@ -192,6 +206,7 @@ public class PermitTwoActivity extends AppCompatActivity implements EasyPermissi public void onClick(View v) { if (checkboxCompany.isChecked()) { checkboxContractor.setChecked(false); + workingParty = "Company"; StorageManager.getInstance().getPermitToWorkModel().get(0).setWorkingPartyType("Company"); } } @@ -202,6 +217,7 @@ public class PermitTwoActivity extends AppCompatActivity implements EasyPermissi public void onClick(View v) { if (checkboxContractor.isChecked()) { checkboxCompany.setChecked(false); + workingParty = "Contractor"; StorageManager.getInstance().getPermitToWorkModel().get(0).setWorkingPartyType("Contractor"); } } @@ -224,13 +240,12 @@ public class PermitTwoActivity extends AppCompatActivity implements EasyPermissi btnSubmit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - StorageManager.getInstance().getPermitToWorkModel().get(0).setPictures(imageList); - Toast.makeText(PermitTwoActivity.this,"Reported Submitted",Toast.LENGTH_SHORT).show(); - Intent intent = new Intent(PermitTwoActivity.this, DashboardActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); - intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); - startActivity(intent); - overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); + if (!isValidate()) { + StorageManager.getInstance().getPermitToWorkModel().get(0).setPictures(imageList); + // Toast.makeText(PermitTwoActivity.this,"Reported Submitted",Toast.LENGTH_SHORT).show(); + alertReportSubmit(PermitTwoActivity.this); + } + } }); @@ -250,6 +265,70 @@ public class PermitTwoActivity extends AppCompatActivity implements EasyPermissi } }); + + etDescription.setOnFocusChangeListener((v, hasFocus) -> { + if (hasFocus) { + new Handler().postDelayed(() -> { + scrollView.smoothScrollTo(0, etDescription.getBottom()); + }, 200); + } + }); + } + + public void alertReportSubmit(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_report_submission, 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(); + + List reportList = StorageManager.getInstance().getPermitToWorkModel(); + HseReportRequest hseTrainingRequest = new HseReportRequest<>(); + hseTrainingRequest.setObservation_date(StorageManager.getInstance().getObservation_date()); + hseTrainingRequest.setUserId(StorageManager.getInstance().getUserId()); + hseTrainingRequest.setSite_id(StorageManager.getInstance().getSite_id()); + hseTrainingRequest.setSupervisorId(StorageManager.getInstance().getSupervisorId()); + hseTrainingRequest.setSupervisorName(StorageManager.getInstance().getSupervisorName()); + hseTrainingRequest.setShift(StorageManager.getInstance().getShift()); + hseTrainingRequest.setRecordTypeId(StorageManager.getInstance().getRecordTypeId()); + hseTrainingRequest.setReportData(reportList); + + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + String jsonRequest = gson.toJson(hseTrainingRequest); + Log.e("RequestModel JSON", jsonRequest); + + loginViewModel.saveHSEData(hseTrainingRequest); + + + } + }); + + dialogCancelBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + + alertDialog.dismiss(); + //Toast.makeText(con, "Cancel", Toast.LENGTH_SHORT).show(); + + } + }); + + alertDialog.show(); } @SuppressLint("MissingInflatedId") @@ -322,6 +401,7 @@ public class PermitTwoActivity extends AppCompatActivity implements EasyPermissi etDescription = findViewById(R.id.et_description); etDescription.setImeOptions(EditorInfo.IME_ACTION_DONE); etDescription.setRawInputType(InputType.TYPE_CLASS_TEXT); + scrollView = findViewById(R.id.scrollView2); ptwRecyclerView = findViewById(R.id.ptwRecyclerView); @@ -329,6 +409,32 @@ public class PermitTwoActivity extends AppCompatActivity implements EasyPermissi ptwRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); ptwRecyclerView.setAdapter(imagePaperAdapter); + loginViewModel = new ViewModelProvider(this).get(LoginViewModel.class); + + loginViewModel.getLoadingState().observe(this, isLoading -> { + + if (isLoading != null && isLoading) { + showProgressDialog(); + } else { + dismissProgressDialog(); + } + }); + + loginViewModel.getErrorMessage().observe(this, errorResponse -> { + Toast.makeText(this, errorResponse, Toast.LENGTH_SHORT).show(); + }); + + loginViewModel.getUserSaveLiveData().observe(this, hseSaveResponse -> { + if (hseSaveResponse != null && hseSaveResponse.getStatus().equals("success")) { + Toast.makeText(this, "Reported Submitted", Toast.LENGTH_SHORT).show(); + Intent intent = new Intent(PermitTwoActivity.this, DashboardActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); + } + }); + } @AfterPermissionGranted(CAMERA_REQUEST_PAPER) @@ -592,4 +698,39 @@ public class PermitTwoActivity extends AppCompatActivity implements EasyPermissi } }).start(); } + + 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(); + } + } + + public boolean isValidate() { + boolean returnValue = true; + String message = ""; + + if (etDescription.getText().toString().isEmpty()) { + message = "Please enter description."; + returnValue = false; + } + + if (workingParty.isEmpty()) { + message = "Please select Working Party."; + returnValue = false; + } + + if (!returnValue) { + Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); + } + + return returnValue; + } } \ No newline at end of file diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ProgressiveActivityForms/ProgressiveActivity.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ProgressiveActivityForms/ProgressiveActivity.java index 64205b3..fe01141 100644 --- a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ProgressiveActivityForms/ProgressiveActivity.java +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/ProgressiveActivityForms/ProgressiveActivity.java @@ -19,6 +19,7 @@ import android.provider.MediaStore; import android.text.Editable; import android.text.InputType; import android.text.TextWatcher; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -41,17 +42,24 @@ import androidx.core.content.FileProvider; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; +import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import com.utopiaindustries.hseobservationsapp.R; import com.utopiaindustries.hseobservationsapp.activities.DashboardActivity; +import com.utopiaindustries.hseobservationsapp.activities.PermitToWorkForms.PermitTwoActivity; import com.utopiaindustries.hseobservationsapp.activities.WeeklyActivityForms.WeeklyFormOne; import com.utopiaindustries.hseobservationsapp.adapters.HseActivitiesAdapter; import com.utopiaindustries.hseobservationsapp.adapters.PTWImageAdapter; import com.utopiaindustries.hseobservationsapp.helper.Helper; import com.utopiaindustries.hseobservationsapp.models.DocumentTypeImageModel; import com.utopiaindustries.hseobservationsapp.models.HseData.HseActivity; +import com.utopiaindustries.hseobservationsapp.utils.ProgressDialogFragment; +import com.utopiaindustries.hseobservationsapp.utils.StorageManager.HseReportRequest; +import com.utopiaindustries.hseobservationsapp.utils.StorageManager.ReportActivityModel; import com.utopiaindustries.hseobservationsapp.utils.StorageManager.StorageManager; import com.utopiaindustries.hseobservationsapp.viewmodels.LoginViewModel; @@ -212,12 +220,17 @@ public class ProgressiveActivity extends AppCompatActivity implements EasyPermis btnSubmit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Toast.makeText(ProgressiveActivity.this,"Reported Submitted",Toast.LENGTH_SHORT).show(); + + StorageManager.getInstance().getProgressiveActivityModel().get(0).setPictures(PaperImageList); + // Toast.makeText(PermitTwoActivity.this,"Reported Submitted",Toast.LENGTH_SHORT).show(); + alertReportSubmit(ProgressiveActivity.this); + /*Toast.makeText(ProgressiveActivity.this,"Reported Submitted",Toast.LENGTH_SHORT).show(); Intent intent = new Intent(ProgressiveActivity.this, DashboardActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); - overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); + overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);*/ + } }); @@ -250,6 +263,62 @@ public class ProgressiveActivity extends AppCompatActivity implements EasyPermis }); } + public void alertReportSubmit(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_report_submission, 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(); + + List reportList = StorageManager.getInstance().getReportActivityModel(); + HseReportRequest reportRequest = new HseReportRequest<>(); + reportRequest.setObservation_date(StorageManager.getInstance().getObservation_date()); + reportRequest.setUserId(StorageManager.getInstance().getUserId()); + reportRequest.setSite_id(StorageManager.getInstance().getSite_id()); + reportRequest.setSupervisorId(StorageManager.getInstance().getSupervisorId()); + reportRequest.setSupervisorName(StorageManager.getInstance().getSupervisorName()); + reportRequest.setShift(StorageManager.getInstance().getShift()); + reportRequest.setRecordTypeId(StorageManager.getInstance().getRecordTypeId()); + reportRequest.setReportData(reportList); + + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + String jsonRequest = gson.toJson(reportRequest); + Log.e("RequestModel JSON", jsonRequest); + + loginViewModel.saveHSEData(reportRequest); + + + } + }); + + dialogCancelBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + + alertDialog.dismiss(); + //Toast.makeText(con, "Cancel", Toast.LENGTH_SHORT).show(); + + } + }); + + alertDialog.show(); + } + private void initializeLayouts() { imgUpload = findViewById(R.id.img_upload); @@ -269,6 +338,32 @@ public class ProgressiveActivity extends AppCompatActivity implements EasyPermis imagePaperAdapter = new PTWImageAdapter(PaperImageList, this, ""); picturesRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); picturesRecyclerView.setAdapter(imagePaperAdapter); + + loginViewModel = new ViewModelProvider(this).get(LoginViewModel.class); + + loginViewModel.getLoadingState().observe(this, isLoading -> { + + if (isLoading != null && isLoading) { + showProgressDialog(); + } else { + dismissProgressDialog(); + } + }); + + loginViewModel.getErrorMessage().observe(this, errorResponse -> { + Toast.makeText(this, errorResponse, Toast.LENGTH_SHORT).show(); + }); + + loginViewModel.getUserSaveLiveData().observe(this, hseSaveResponse -> { + if (hseSaveResponse != null && hseSaveResponse.getStatus().equals("success")) { + Toast.makeText(this, "Reported Submitted", Toast.LENGTH_SHORT).show(); + Intent intent = new Intent(ProgressiveActivity.this, DashboardActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); + } + }); } @SuppressLint("MissingInflatedId") @@ -593,4 +688,18 @@ public class ProgressiveActivity extends AppCompatActivity implements EasyPermis } }).start(); } + + 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/hseobservationsapp/activities/WeeklyActivityForms/WeeklyFormOne.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/WeeklyActivityForms/WeeklyFormOne.java index 9c39f71..2c29e6a 100644 --- a/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/WeeklyActivityForms/WeeklyFormOne.java +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/activities/WeeklyActivityForms/WeeklyFormOne.java @@ -62,6 +62,8 @@ import com.utopiaindustries.hseobservationsapp.models.DocumentTypeImageModel; import com.utopiaindustries.hseobservationsapp.models.HseData.HseActivity; import com.utopiaindustries.hseobservationsapp.models.HseData.HseObservationClass; import com.utopiaindustries.hseobservationsapp.utils.ProgressDialogFragment; +import com.utopiaindustries.hseobservationsapp.utils.StorageManager.HseReportRequest; +import com.utopiaindustries.hseobservationsapp.utils.StorageManager.ReportActivityModel; import com.utopiaindustries.hseobservationsapp.utils.StorageManager.StorageManager; import com.utopiaindustries.hseobservationsapp.viewmodels.LoginViewModel; @@ -672,11 +674,22 @@ public class WeeklyFormOne extends AppCompatActivity implements EasyPermissions. alertDialog.dismiss(); + List reportList = StorageManager.getInstance().getReportActivityModel(); + HseReportRequest reportRequest = new HseReportRequest<>(); + reportRequest.setObservation_date(StorageManager.getInstance().getObservation_date()); + reportRequest.setUserId(StorageManager.getInstance().getUserId()); + reportRequest.setSite_id(StorageManager.getInstance().getSite_id()); + reportRequest.setSupervisorId(StorageManager.getInstance().getSupervisorId()); + reportRequest.setSupervisorName(StorageManager.getInstance().getSupervisorName()); + reportRequest.setShift(StorageManager.getInstance().getShift()); + reportRequest.setRecordTypeId(StorageManager.getInstance().getRecordTypeId()); + reportRequest.setReportData(reportList); + Gson gson = new GsonBuilder().setPrettyPrinting().create(); - String jsonRequest = gson.toJson(StorageManager.getInstance()); + String jsonRequest = gson.toJson(reportRequest); Log.e("RequestModel JSON", jsonRequest); - //loginViewModel.saveHSEData(requestModel); + loginViewModel.saveHSEData(reportRequest); } diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/adapters/SafetyTrainingAdapter.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/adapters/SafetyTrainingAdapter.java new file mode 100644 index 0000000..d16f64e --- /dev/null +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/adapters/SafetyTrainingAdapter.java @@ -0,0 +1,41 @@ +package com.utopiaindustries.hseobservationsapp.adapters; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.TextView; + +import com.utopiaindustries.hseobservationsapp.R; +import com.utopiaindustries.hseobservationsapp.models.HseData.HseBuilding; +import com.utopiaindustries.hseobservationsapp.models.HseData.HseSafetyTrainingTopic; + +import java.util.List; + +public class SafetyTrainingAdapter extends ArrayAdapter { + + private final Context context; + private final List items; + + public SafetyTrainingAdapter(Context context, List items) { + super(context, 0, items); + this.context = context; + this.items = items; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + if (convertView == null) { + convertView = LayoutInflater.from(context).inflate(R.layout.list_items, parent, false); + } + + HseSafetyTrainingTopic item = items.get(position); + + TextView titleTextView = convertView.findViewById(R.id.item_text); + + titleTextView.setText(item.getTitle()); + + return convertView; + } +} diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/apiservice/ApiService.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/apiservice/ApiService.java index 20ab210..5dfca1f 100644 --- a/app/src/main/java/com/utopiaindustries/hseobservationsapp/apiservice/ApiService.java +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/apiservice/ApiService.java @@ -6,6 +6,7 @@ import com.utopiaindustries.hseobservationsapp.models.QualityControl; import com.utopiaindustries.hseobservationsapp.models.QualityControlResponse; import com.utopiaindustries.hseobservationsapp.models.QualitySaveResponse; import com.utopiaindustries.hseobservationsapp.utils.HSERequestModel; +import com.utopiaindustries.hseobservationsapp.utils.StorageManager.HseReportRequest; import retrofit2.Call; import retrofit2.http.Body; @@ -25,7 +26,7 @@ public interface ApiService { @POST("rest/uic/hse/save-hse-report") Call saveHseReport( - @Body HSERequestModel request + @Body HseReportRequest request ); @POST("rest/authentication/authenticate-user") diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/models/HseData/HseSafetyTrainingTopic.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/models/HseData/HseSafetyTrainingTopic.java index 9961a8d2..6ce097b 100644 --- a/app/src/main/java/com/utopiaindustries/hseobservationsapp/models/HseData/HseSafetyTrainingTopic.java +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/models/HseData/HseSafetyTrainingTopic.java @@ -29,4 +29,9 @@ public class HseSafetyTrainingTopic { this.title = title; } + @Override + public String toString() { + return title; + } + } diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/utils/StorageManager/HseReportRequest.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/utils/StorageManager/HseReportRequest.java new file mode 100644 index 0000000..07bd727 --- /dev/null +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/utils/StorageManager/HseReportRequest.java @@ -0,0 +1,97 @@ +package com.utopiaindustries.hseobservationsapp.utils.StorageManager; + +import java.util.ArrayList; +import java.util.List; + +public class HseReportRequest { + + private String observation_date; + private int userId; + private int site_id; + private int supervisorId; + private String supervisorName; + private String shift; + private int recordTypeId; + + private List reportData; + + public String getObservation_date() { + return observation_date; + } + + public void setObservation_date(String observation_date) { + this.observation_date = observation_date; + } + + public int getUserId() { + return userId; + } + + public void setUserId(int userId) { + this.userId = userId; + } + + public int getSite_id() { + return site_id; + } + + public void setSite_id(int site_id) { + this.site_id = site_id; + } + + public int getSupervisorId() { + return supervisorId; + } + + public void setSupervisorId(int supervisorId) { + this.supervisorId = supervisorId; + } + + public String getSupervisorName() { + return supervisorName; + } + + public void setSupervisorName(String supervisorName) { + this.supervisorName = supervisorName; + } + + public String getShift() { + return shift; + } + + public void setShift(String shift) { + this.shift = shift; + } + + public int getRecordTypeId() { + return recordTypeId; + } + + public void setRecordTypeId(int recordTypeId) { + this.recordTypeId = recordTypeId; + } + + public List getReportData() { + return reportData; + } + + public void setReportData(List reportData) { + this.reportData = reportData; + } + + public HseReportRequest() { + this.reportData = new ArrayList<>(); + } + + public HseReportRequest(String observation_date, int userId, int site_id, int supervisorId, String supervisorName, String shift, int recordTypeId, List reportData) { + this.observation_date = observation_date; + this.userId = userId; + this.site_id = site_id; + this.supervisorId = supervisorId; + this.supervisorName = supervisorName; + this.shift = shift; + this.recordTypeId = recordTypeId; + this.reportData = reportData; + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/utils/StorageManager/HseTrainingModel.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/utils/StorageManager/HseTrainingModel.java new file mode 100644 index 0000000..df22da7 --- /dev/null +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/utils/StorageManager/HseTrainingModel.java @@ -0,0 +1,115 @@ +package com.utopiaindustries.hseobservationsapp.utils.StorageManager; + +import java.util.List; + +public class HseTrainingModel { + + private int safetyTopicId; + private String safetyTopicName; + private int employeeAttendance; + private int targetAudienceId; + private String targetAudienceName; + private int locationId; + private String locationName; + private int subLocationId; + private String subLocationName; + private double trainingMinutes; + private String description; + private List pictures; + + public int getSafetyTopicId() { + return safetyTopicId; + } + + public void setSafetyTopicId(int safetyTopicId) { + this.safetyTopicId = safetyTopicId; + } + + public int getEmployeeAttendance() { + return employeeAttendance; + } + + public void setEmployeeAttendance(int employeeAttendance) { + this.employeeAttendance = employeeAttendance; + } + + public int getTargetAudienceId() { + return targetAudienceId; + } + + public void setTargetAudienceId(int targetAudienceId) { + this.targetAudienceId = targetAudienceId; + } + + public double getTrainingMinutes() { + return trainingMinutes; + } + + public void setTrainingMinutes(double trainingMinutes) { + this.trainingMinutes = trainingMinutes; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public List getPictures() { + return pictures; + } + + public void setPictures(List pictures) { + this.pictures = pictures; + } + + public String getSafetyTopicName() { + return safetyTopicName; + } + + public void setSafetyTopicName(String safetyTopicName) { + this.safetyTopicName = safetyTopicName; + } + + public String getTargetAudienceName() { + return targetAudienceName; + } + + public void setTargetAudienceName(String targetAudienceName) { + this.targetAudienceName = targetAudienceName; + } + + public int getLocationId() { + return locationId; + } + + public void setLocationId(int locationId) { + this.locationId = locationId; + } + + public String getLocationName() { + return locationName; + } + + public void setLocationName(String locationName) { + this.locationName = locationName; + } + + public int getSubLocationId() { + return subLocationId; + } + + public void setSubLocationId(int subLocationId) { + this.subLocationId = subLocationId; + } + + public String getSubLocationName() { + return subLocationName; + } + + public void setSubLocationName(String subLocationName) { + this.subLocationName = subLocationName; + } +} diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/utils/StorageManager/ObservationModel.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/utils/StorageManager/ObservationModel.java index 3cec346..e2a7d78 100644 --- a/app/src/main/java/com/utopiaindustries/hseobservationsapp/utils/StorageManager/ObservationModel.java +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/utils/StorageManager/ObservationModel.java @@ -10,6 +10,12 @@ public class ObservationModel { private int observationSubClassId; private String hseObservationSubClassName; + private int buildingId; + private String buildingName; + + private int floorId; + private String floorName; + private int departmentId; private String departmentName; @@ -52,6 +58,38 @@ public class ObservationModel { this.hseObservationSubClassName = hseObservationSubClassName; } + public int getBuildingId() { + return buildingId; + } + + public void setBuildingId(int buildingId) { + this.buildingId = buildingId; + } + + public String getBuildingName() { + return buildingName; + } + + public void setBuildingName(String buildingName) { + this.buildingName = buildingName; + } + + public int getFloorId() { + return floorId; + } + + public void setFloorId(int floorId) { + this.floorId = floorId; + } + + public String getFloorName() { + return floorName; + } + + public void setFloorName(String floorName) { + this.floorName = floorName; + } + public int getDepartmentId() { return departmentId; } diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/utils/StorageManager/PermitToWorkModel.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/utils/StorageManager/PermitToWorkModel.java index 2dbe266..17f4526 100644 --- a/app/src/main/java/com/utopiaindustries/hseobservationsapp/utils/StorageManager/PermitToWorkModel.java +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/utils/StorageManager/PermitToWorkModel.java @@ -4,11 +4,16 @@ import java.util.List; public class PermitToWorkModel { + private int departmentId; + private String departmentName; private int locationId; + private String locationName; private int subLocationId; - private int typeId; - private int subTypeId; + private String subLocationName; + private String typeId; + private String typeName; private int workingTeamId; + private String workingTeamName; private String workingPartyType; private String description; @@ -31,22 +36,14 @@ public class PermitToWorkModel { this.subLocationId = subLocationId; } - public int getTypeId() { + public String getTypeId() { return typeId; } - public void setTypeId(int typeId) { + public void setTypeId(String typeId) { this.typeId = typeId; } - public int getSubTypeId() { - return subTypeId; - } - - public void setSubTypeId(int subTypeId) { - this.subTypeId = subTypeId; - } - public int getWorkingTeamId() { return workingTeamId; } @@ -78,4 +75,52 @@ public class PermitToWorkModel { public void setPictures(List pictures) { this.pictures = pictures; } + + public int getDepartmentId() { + return departmentId; + } + + public void setDepartmentId(int departmentId) { + this.departmentId = departmentId; + } + + public String getDepartmentName() { + return departmentName; + } + + public void setDepartmentName(String departmentName) { + this.departmentName = departmentName; + } + + public String getLocationName() { + return locationName; + } + + public void setLocationName(String locationName) { + this.locationName = locationName; + } + + public String getSubLocationName() { + return subLocationName; + } + + public void setSubLocationName(String subLocationName) { + this.subLocationName = subLocationName; + } + + public String getTypeName() { + return typeName; + } + + public void setTypeName(String typeName) { + this.typeName = typeName; + } + + public String getWorkingTeamName() { + return workingTeamName; + } + + public void setWorkingTeamName(String workingTeamName) { + this.workingTeamName = workingTeamName; + } } diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/utils/StorageManager/StorageManager.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/utils/StorageManager/StorageManager.java index b3636dc..d2a83cc 100644 --- a/app/src/main/java/com/utopiaindustries/hseobservationsapp/utils/StorageManager/StorageManager.java +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/utils/StorageManager/StorageManager.java @@ -22,6 +22,7 @@ public class StorageManager { private List reportActivityModel; private List progressiveActivityModel; private List permitToWorkModel; + private List hseTrainingModel; private StorageManager() { @@ -48,6 +49,9 @@ public class StorageManager { permitToWorkModel = new ArrayList<>(); permitToWorkModel.add(new PermitToWorkModel()); + + hseTrainingModel = new ArrayList<>(); + hseTrainingModel.add(new HseTrainingModel()); } public String getObservation_date() { @@ -146,6 +150,14 @@ public class StorageManager { this.permitToWorkModel = permitToWorkModel; } + public List getHseTrainingModel() { + return hseTrainingModel; + } + + public void setHseTrainingModel(List hseTrainingModel) { + this.hseTrainingModel = hseTrainingModel; + } + public void clearAllData() { observation_date = null; @@ -161,5 +173,6 @@ public class StorageManager { reportActivityModel.clear(); progressiveActivityModel.clear(); permitToWorkModel.clear(); + hseTrainingModel.clear(); } } diff --git a/app/src/main/java/com/utopiaindustries/hseobservationsapp/viewmodels/LoginViewModel.java b/app/src/main/java/com/utopiaindustries/hseobservationsapp/viewmodels/LoginViewModel.java index 30fb7aa..b44bc02 100644 --- a/app/src/main/java/com/utopiaindustries/hseobservationsapp/viewmodels/LoginViewModel.java +++ b/app/src/main/java/com/utopiaindustries/hseobservationsapp/viewmodels/LoginViewModel.java @@ -10,6 +10,7 @@ import com.utopiaindustries.hseobservationsapp.apiservice.ApiServiceFactory; import com.utopiaindustries.hseobservationsapp.models.HseData.HseResponse; import com.utopiaindustries.hseobservationsapp.models.HseData.HseSaveResponse; import com.utopiaindustries.hseobservationsapp.utils.HSERequestModel; +import com.utopiaindustries.hseobservationsapp.utils.StorageManager.HseReportRequest; import retrofit2.Call; import retrofit2.Callback; @@ -98,7 +99,7 @@ public class LoginViewModel extends ViewModel { }); } - public void saveHSEData(HSERequestModel hseRequestModel) { + public void saveHSEData(HseReportRequest hseRequestModel) { isLoading.setValue(true); apiService.saveHseReport(hseRequestModel).enqueue(new Callback() { @Override diff --git a/app/src/main/res/layout/activity_hse_one.xml b/app/src/main/res/layout/activity_hse_one.xml index 6afa9e2..5bad708 100644 --- a/app/src/main/res/layout/activity_hse_one.xml +++ b/app/src/main/res/layout/activity_hse_one.xml @@ -108,7 +108,7 @@ android:background="@drawable/et_border" android:hint="No Of Employees" android:imeOptions="actionDone" - android:inputType="text" + android:inputType="number" android:padding="13dp" android:textSize="15sp" /> @@ -118,7 +118,7 @@ android:layout_marginTop="10dp" android:gravity="left" android:padding="5dp" - android:text="Target Audience *" + android:text="Department *" android:textColor="@color/black" android:textSize="@dimen/_13sdp" android:textStyle="bold" /> @@ -143,57 +143,67 @@ android:textSize="16sp" /> - + android:layout_height="wrap_content" + android:layout_marginTop="15dp" + android:gravity="left" + android:padding="5dp" + android:text="Building *" + android:textColor="@color/black" + android:textSize="@dimen/_13sdp" + android:textStyle="bold" /> - + + - - - + android:inputType="none" + android:textSize="16sp" /> + + android:layout_marginTop="15dp" + android:gravity="left" + android:padding="5dp" + android:text="Floor *" + android:textColor="@color/black" + android:textSize="@dimen/_13sdp" + android:textStyle="bold" /> - - + android:layout_marginLeft="5dp" + android:layout_marginRight="5dp" + android:padding="5dp" + android:hint="@string/select_sub_location" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent"> + + + diff --git a/app/src/main/res/layout/activity_hse_two.xml b/app/src/main/res/layout/activity_hse_two.xml index 16f81d3..bf91e87 100644 --- a/app/src/main/res/layout/activity_hse_two.xml +++ b/app/src/main/res/layout/activity_hse_two.xml @@ -68,16 +68,16 @@ android:textStyle="bold" /> @@ -115,6 +115,57 @@ android:textSize="@dimen/_12sdp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/heading_description"/> + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_injury_form_one.xml b/app/src/main/res/layout/activity_injury_form_one.xml index b2cc064..1993690 100644 --- a/app/src/main/res/layout/activity_injury_form_one.xml +++ b/app/src/main/res/layout/activity_injury_form_one.xml @@ -185,7 +185,7 @@ android:layout_marginStart="5dp" android:layout_marginTop="5dp" android:gravity="left" - android:hint="MM-dd-yyyy" + android:hint="yyyy-MM-dd" android:padding="5dp" android:textColor="@color/black" android:textSize="@dimen/_13sdp" /> diff --git a/app/src/main/res/layout/activity_observation_one.xml b/app/src/main/res/layout/activity_observation_one.xml index 3e6f3d6..922d072 100644 --- a/app/src/main/res/layout/activity_observation_one.xml +++ b/app/src/main/res/layout/activity_observation_one.xml @@ -58,7 +58,7 @@ android:id="@+id/observation_heading" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="25dp" + android:layout_marginTop="20dp" android:gravity="left" android:padding="5dp" android:text="Observation Class *" @@ -92,7 +92,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/observation_input" - android:layout_marginTop="50dp" + android:layout_marginTop="15dp" android:gravity="left" android:padding="5dp" android:text="Observation Sub Class *" @@ -121,6 +121,74 @@ android:textSize="16sp" /> + + + + + + + + + + + + + +