initial commit

This commit is contained in:
Anjas 2022-10-11 19:55:07 +07:00
commit 9321c677d7
479 changed files with 62533 additions and 0 deletions

15
.gitignore vendored Normal file
View File

@ -0,0 +1,15 @@
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
local.properties

1
app/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/build

74
app/build.gradle Normal file
View File

@ -0,0 +1,74 @@
plugins {
id 'com.android.application'
id 'com.google.gms.google-services'
}
android {
compileSdk 31
defaultConfig {
applicationId "com.project.ilsaenterprise"
minSdk 26
targetSdk 31
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation project(path: ':manufacturing')
testImplementation 'junit:junit:'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
//Added
implementation 'com.google.firebase:firebase-analytics:20.0.2'
implementation 'com.google.firebase:firebase-core:20.0.2'
implementation 'com.google.firebase:firebase-database:20.0.3'
implementation 'com.google.firebase:firebase-auth:21.0.1'
implementation 'com.google.android.gms:play-services-maps:18.0.2'
implementation 'com.google.android.gms:play-services-location:19.0.1'
implementation 'com.google.android.gms:play-services-auth:20.1.0'
implementation 'com.google.firebase:firebase-functions:20.0.1'
implementation 'com.google.firebase:firebase-storage:20.0.0'
implementation 'com.google.firebase:firebase-firestore:24.0.1'
implementation 'com.firebaseui:firebase-ui-database:3.2.2'
implementation platform('com.google.firebase:firebase-bom:26.1.0')
implementation 'com.google.firebase:firebase-inappmessaging-display'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidmads.library.qrgenearator:QRGenearator:1.0.3'
implementation 'com.github.thekhaeng:pushdown-anim-click:1.1.1'
implementation 'com.airbnb.android:lottie:3.4.0'
implementation 'com.amitshekhar.android:android-networking:1.0.2'
implementation 'de.hdodenhof:circleimageview:3.1.0'
implementation 'com.getbase:floatingactionbutton:1.10.1'
implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.+'
implementation 'com.github.bumptech.glide:glide:4.11.0'
implementation 'org.greenrobot:eventbus:3.1.1'
implementation 'com.github.denzcoskun:ImageSlideshow:0.0.7'
implementation 'com.github.chrisbanes:PhotoView:2.1.3'
implementation 'com.facebook.shimmer:shimmer:0.1.0@aar'
implementation 'com.github.ittianyu:BottomNavigationViewEx:1.1.9'
implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
implementation 'pl.pawelkleczkowski.customgauge:CustomGauge:1.0.4'
implementation 'com.android.volley:volley:1.2.1'
}

48
app/google-services.json Normal file
View File

@ -0,0 +1,48 @@
{
"project_info": {
"project_number": "1022406210419",
"firebase_url": "https://nusantara-4-18769.firebaseio.com",
"project_id": "nusantara-4-18769",
"storage_bucket": "nusantara-4-18769.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:1022406210419:android:681ae7519410593f524b06",
"android_client_info": {
"package_name": "com.project.ilsaenterprise"
}
},
"oauth_client": [
{
"client_id": "1022406210419-qejamqelj8sakh8se5kqosef6ppn3i6m.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.project.ilsaenterprise",
"certificate_hash": "bf076c4b66cbd70930cf71a441f26d1cfaa03728"
}
},
{
"client_id": "1022406210419-elv9d4ib0tuk5hrqiat9176rhb0hl4lt.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyBttcx0-RZbWDp71BDnQ99sF4oR_Ih6eyI"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "1022406210419-elv9d4ib0tuk5hrqiat9176rhb0hl4lt.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
}
],
"configuration_version": "1"
}

21
app/proguard-rules.pro vendored Normal file
View File

@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

View File

@ -0,0 +1,26 @@
package com.project.ilsaenterprise;
import android.content.Context;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
assertEquals("com.project.ilsaenterprise", appContext.getPackageName());
}
}

View File

@ -0,0 +1,24 @@
package com.project.ilsaenterprise
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.Assert.*
/**
* Instrumented test, which will execute on an Android device.
*
* See [testing documentation](http://d.android.com/tools/testing).
*/
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
@Test
fun useAppContext() {
// Context of the app under test.
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
assertEquals("com.project.ilsaenterprise", appContext.packageName)
}
}

View File

@ -0,0 +1,119 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.project.ilsaenterprise">
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 18 Desember 2020 -->
<!-- <action android:name="android.intent.action.BOOT_COMPLETED" /> -->
<uses-feature android:name="android.hardware.camera" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<uses-feature
android:name="android.hardware.location"
android:required="true" />
<uses-feature
android:name="android.hardware.location.gps"
android:required="false" />
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
<application
android:allowBackup="true"
android:icon="@drawable/ilsa"
android:label="@string/app_name"
android:roundIcon="@drawable/ilsa"
android:supportsRtl="true"
android:theme="@style/Theme.ILSAEnterprise">
<activity
android:name=".account.CreateUser"
android:exported="true" />
<activity
android:name=".monitoring.ShowData"
android:exported="true" />
<activity
android:name=".monitoring.SelectImage"
android:exported="true" />
<activity
android:name=".account.ChangePhone"
android:exported="true" />
<activity
android:name=".account.ChangeName"
android:exported="true" />
<activity android:name=".Home" />
<activity android:name=".QuestWfh" /> <!-- <activity android:name=".kotlin.ShowClock" /> -->
<activity android:name=".CheckKehadiranWfh" />
<activity android:name=".AttendanceWfh" />
<activity android:name=".OpenNewsActivity" />
<activity android:name=".BeritaActivity" /> <!-- <activity android:name=".AddPanen" /> -->
<activity android:name=".monitoring.LokasiMonitoring" /> <!-- <activity android:name=".JumlahKerja" /> -->
<!-- <activity android:name=".CovidStatistic" /> -->
<!-- <activity android:name=".CovidNews" /> -->
<activity android:name=".monitoring.ShowSelfMonitoring" />
<activity android:name=".monitoring.HistoryMonitoring" /> <!-- <activity android:name=".RequestOtp" /> -->
<!-- <activity android:name=".RegisterPegawai" /> -->
<!-- <activity android:name=".DataLaporan" /> -->
<activity android:name=".KirimData" />
<activity android:name=".LoginBatal" /> <!-- <activity android:name=".ZoomMonitoring" /> -->
<activity android:name=".monitoring.DisplayMonitoring" />
<activity android:name=".monitoring.ListData" />
<activity android:name=".monitoring.MainBeacon" />
<activity android:name=".monitoring.ZoomMonitoring" /> <!-- <activity android:name=".HistoryWfh" /> -->
<!-- <activity android:name=".TodoList" /> -->
<activity android:name=".WorkFromHome" /> <!-- <activity android:name=".PhoneVerification" /> -->
<activity android:name=".GroupChatActivity" /> <!-- <activity android:name=".ArcMap" /> -->
<!-- <activity android:name=".TrackingMainActivity" /> -->
<!-- <activity android:name=".SettingsActivity" /> -->
<!-- <activity android:name=".TrackingActivity" /> -->
<!-- <activity android:name=".TrackingAll" /> -->
<activity android:name=".account.UserProfile" /> <!-- <activity android:name=".MapGis" /> -->
<!-- <activity android:name=".Lapor" /> -->
<activity android:name=".HistoryAttendance" /> <!-- <activity android:name=".ListData" /> -->
<!-- <activity android:name=".UploadList" /> -->
<!-- <activity android:name=".FingerAuth" /> -->
<activity android:name=".monitoring.Upload" />
<activity android:name=".MapActivity" /> <!-- <activity android:name=".ChatroomActivity" /> -->
<!-- <activity -->
<!-- android:name=".ChatRoom" -->
<!-- android:label="Chats" /> -->
<activity
android:name=".Login"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
android:theme="@style/Base.Theme.AppCompat" />
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/map_key" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/ilsa" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="ILSA Enterprise" />
<uses-library
android:name="com.google.android.maps"
android:required="true" />
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
</application>
</manifest>

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 444 KiB

View File

@ -0,0 +1,206 @@
package com.project.ilsaenterprise;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.cardview.widget.CardView;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.fragment.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.project.ilsaenterprise.account.UserProfile;
import com.squareup.picasso.Picasso;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import de.hdodenhof.circleimageview.CircleImageView;
public class Account extends Fragment {
private static final String TAG = "Account";
CardView BtnUpload, BtnList, BtnHistory, BtnFaq;
Button addButton;
TextView date, totalPanen, lokasiTph;
DatabaseReference laporanRef;
private GoogleSignInAccount googleLogin;
private FirebaseAuth getmAuth;
private FirebaseUser userFirebase;
private String currentDate = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(new Date());
private DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("users");
private TextView tvDisplayName, tvIsVerified, tvNotVerified;
private Boolean isVerified;
private ConstraintLayout btnVerify, btnLogout, btnEdit;
private CircleImageView userProfileImage;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View root = inflater.inflate(R.layout.fragment_account, container, false);
((AppCompatActivity) getActivity()).getSupportActionBar().hide();
googleLogin = GoogleSignIn.getLastSignedInAccount(Account.this.getContext());
getmAuth = FirebaseAuth.getInstance();
userFirebase = getmAuth.getCurrentUser();
isVerified = false;
tvDisplayName = root.findViewById(R.id.tvDisplayName);
userProfileImage = root.findViewById(R.id.profile_image);
btnEdit = root.findViewById(R.id.btnProfile);
tvIsVerified = root.findViewById(R.id.tvEmailVerified);
tvNotVerified = root.findViewById(R.id.tvEmailNotVerified);
btnVerify = root.findViewById(R.id.layoutVerify);
btnLogout = root.findViewById(R.id.btnLogout);
tvNotVerified.setVisibility(View.GONE);
tvIsVerified.setVisibility(View.GONE);
btnVerify.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isVerified){
Toast.makeText(Account.this.getContext(), "Akun telah terverfikasi.", Toast.LENGTH_LONG).show();
}
if(!isVerified){
userFirebase.sendEmailVerification()
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "Email dikirim.");
Toast.makeText(Account.this.getContext(), "Email verifikasi dikirim.", Toast.LENGTH_LONG).show();
}
}
});
}
}
});
btnEdit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(Account.this.getContext(), UserProfile.class));
}
});
btnLogout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getmAuth.signOut();
deleteCache(Account.this.getContext());
//sharedPreference.saveSPBoolean(SharedPreference.SP_SUDAH_LOGIN, false);
startActivity(new Intent(Account.this.getContext(), Login.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK));
}
});
return root;
}
public static void deleteCache(Context context) {
try {
File dir = context.getCacheDir();
deleteDir(dir);
} catch (Exception e) { e.printStackTrace();}
}
public static boolean deleteDir(File dir) {
if (dir != null && dir.isDirectory()) {
String[] children = dir.list();
int i = 0;
while (i < children.length) {
boolean success = deleteDir(new File(dir, children[i]));
if (!success) {
return false;
}
i++;
}
}
assert dir != null;
return dir.delete();
}
@Override
public void onStart() {
super.onStart();
try{
reference.child(userFirebase.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if((snapshot.exists()) && snapshot.hasChild("namaLengkap") && snapshot.hasChild("image")){
tvDisplayName.setText(snapshot.child("namaLengkap").getValue().toString());
String retrieveImg = snapshot.child("image").getValue().toString();
Picasso.get().load(retrieveImg).placeholder(R.drawable.employee_img).into(userProfileImage);
if(userFirebase.isEmailVerified())
isVerified = true;
}
if( (snapshot.exists()) && snapshot.hasChild("namaLengkap") && !snapshot.hasChild("image")){
tvDisplayName.setText(snapshot.child("namaLengkap").getValue().toString());
Picasso.get().load(userFirebase.getPhotoUrl()).placeholder(R.drawable.employee_img).into(userProfileImage);
if(userFirebase.isEmailVerified())
isVerified = true;
}
if(isVerified){
tvIsVerified.setVisibility(View.VISIBLE);
tvNotVerified.setVisibility(View.INVISIBLE);
}
if(!isVerified){
tvIsVerified.setVisibility(View.INVISIBLE);
tvNotVerified.setVisibility(View.VISIBLE);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}catch (Exception e){
}
}
private void getDate(){
Calendar calDate = Calendar.getInstance();
SimpleDateFormat currentDateFormat = new SimpleDateFormat("dd MMMM yyyy");
String currentDate = currentDateFormat.format(calDate.getTime());
date.setText(currentDate);
}
}

View File

@ -0,0 +1,490 @@
package com.project.ilsaenterprise;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.FragmentActivity;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.hardware.fingerprint.FingerprintManager;
import android.location.Location;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MapStyleOptions;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.Polygon;
import com.google.android.gms.maps.model.PolygonOptions;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.project.ilsaenterprise.models.Attendance;
import com.project.ilsaenterprise.models.Employees;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
public class AttendanceWfh extends FragmentActivity implements OnMapReadyCallback {
private static final String TAG = "MapActivity";
private static final String FINE_LOCATION = Manifest.permission.ACCESS_FINE_LOCATION;
private static final String COURSE_LOCATION = Manifest.permission.ACCESS_COARSE_LOCATION;
private static final int LOCATION_PERMISSION_REQUEST_CODE = 1234;
private static final int PLAY_SERVICE_RESOLUTION_REQUEST = 4799;
private static final float DEFAULT_ZOOM = 16.5f;
private static final int ERROR_DIALOG_REQUEST = 9001;
//vars
private Boolean mLocationPermissionsGranted = false;
private GoogleMap mMap;
CheckBox checkBox;
SeekBar seekRed, seekGreen, seekBlue;
Button btDraw;
ImageButton btClear;
FusedLocationProviderClient mFusedLocationProviderClient;
FloatingActionButton onLocation;
Location currentLocation;
Employees employees;
private FirebaseDatabase mFirebaseDatabase;
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
DatabaseReference databaseReference;
private static int UPDATE_INTERVAL = 5000;
private static int FASTEST_INTERVAL = 3000;
private static int DISPLACEMENT = 10;
private MapView mapView;
Boolean cek;
Polygon polygon = null;
ArrayList<String> latLngList = new ArrayList<>();
List<Marker> markerList = new ArrayList<>();
ArrayList<String> geoPosition = new ArrayList<>();
private String currentDate = new SimpleDateFormat("dd MMMM yyyy", Locale.getDefault()).format(new Date());//Untuk Database jgn diganti format
private TextView textView, txtInfo;
private ImageView imageView;
private FingerprintManager fingerprintManager;
private FingerprintManager.AuthenticationCallback authenticationCallback;
DatabaseReference historyRef;
private Button startScanBtn;
private DatabaseReference checkHadir = FirebaseDatabase.getInstance().getReference();
private String lat, lng;
private BottomSheetDialog bottomSheetDialog;
private DatabaseReference checkAttendanceRef = FirebaseDatabase.getInstance().getReference().child("attendanceWFH").child(currentDate);
private DatabaseReference userPhotoRef;
private String currentUser, userImageUrl;
Task location;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_attendance_wfh);
// getSupportActionBar().hide();
getLocationPermission();
checkAtt();
btDraw = (Button) findViewById(R.id.bt_draw);
btClear = (ImageButton) findViewById(R.id.bt_clear);
userPhotoRef = FirebaseDatabase.getInstance().getReference().child("usersPhoto");
currentUser = FirebaseAuth.getInstance().getCurrentUser().getUid();
textView = findViewById(R.id.textScanner);
bottomSheetDialog = new BottomSheetDialog(
AttendanceWfh.this, R.style.BottomSheetDialogTheme
);
employees = new Employees();
btDraw.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
View bottomSheetView = LayoutInflater.from(getApplicationContext())
.inflate(
R.layout.layout_popup_fingerprint,
(LinearLayout)findViewById(R.id.bottomSheetContainer)
);
startScan();
fingerprintManager.authenticate(null, null, 0, authenticationCallback, null);
bottomSheetDialog.setContentView(bottomSheetView);
bottomSheetDialog.show();
}
});
btClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getLocationPermission();
}
});
}
@Override
protected void onStart() {
super.onStart();
if(isServicesOK()){
initMap();
getLocationPermission();
}
}
@Override
public void onDestroy()
{
super.onDestroy();
currentLocation = null;
mMap.clear();
mMap.setLocationSource(null);
}
private void clockCheck()
{
Thread t = new Thread() {
@Override
public void run() {
try {
while (!isInterrupted()) {
Thread.sleep(1000);
runOnUiThread(new Runnable() {
@Override
public void run() {
TextView thour = (TextView) findViewById(R.id.textHour);
long date = System.currentTimeMillis();
@SuppressLint("SimpleDateFormat") SimpleDateFormat adf = new SimpleDateFormat("hh : mm : ss");
String hourString = adf.format(date);
thour.setText(hourString);
}
});
}
} catch (InterruptedException e) {
}
}
};
t.start();
}
private void checkAtt()
{
final FirebaseUser user = mAuth.getInstance().getCurrentUser();
final String userID = user.getUid();
final TextView checkUser = (TextView) findViewById(R.id.checkKehadiran);
final TextView textIO = findViewById(R.id.textInOut);
cek = false;
checkAttendanceRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//long count= dataSnapshot.getChildrenCount();
if(!dataSnapshot.child("Check In").hasChild(userID)){
checkUser.setText("Belum Tapping");
textIO.setText("Jam Masuk");
btDraw.setText("Check In");
btDraw.setEnabled(true);
clockCheck();
cek = false;
}
else if(!dataSnapshot.child("Check Out").hasChild(userID)){
checkUser.setText("Sedang Bekerja");
textIO.setText("Jam Keluar");
btDraw.setText("Check Out");
clockCheck();
cek = false;
}
else{
checkUser.setText("Absensi Selesai");
textIO.setVisibility(View.INVISIBLE);
btDraw.setText("Terima Kasih");
startTime();
cek = true;
btDraw.setEnabled(false);
btClear.setEnabled(false);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void startTime(){
final FirebaseUser user = mAuth.getInstance().getCurrentUser();
final String userID = user.getUid();
checkAttendanceRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Attendance history = dataSnapshot.child("Check In").child(userID).getValue(Attendance.class);
Attendance history2 = dataSnapshot.child("Check Out").child(userID).getValue(Attendance.class);
String firstTime = history.getTime();
String endtime = history2.getTime();
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
Date start, end;
try{
start = format.parse(firstTime);
end = format.parse(endtime);
long diff = end.getTime() - start.getTime();
long diffSeconds = diff / 1000 % 60;
long diffMinutes = diff / (60 * 1000) % 60;
long diffHour = diff / (60 * 60 * 1000) % 24;
TextView totalWork = findViewById(R.id.textHour);
totalWork.setTextSize(20);
totalWork.setText(diffHour + " Jam " + diffMinutes + " Menit " + diffSeconds + " Detik");
}catch (Exception e){
e.printStackTrace();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
private void moveCamera(LatLng latLng, float zoom){
//LatLng markerLoc = new LatLng(latLng.latitude, latLng.longitude);
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoom));
mMap.clear();
}
public boolean isServicesOK(){
int available = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(AttendanceWfh.this);
if(available == ConnectionResult.SUCCESS){
return true;
}
else if(GoogleApiAvailability.getInstance().isUserResolvableError(available)){
Dialog dialog = GoogleApiAvailability.getInstance().getErrorDialog(AttendanceWfh.this, available, ERROR_DIALOG_REQUEST);
dialog.show();
}else{
Toast.makeText(this, "You can't make map requests", Toast.LENGTH_SHORT).show();
}
return false;
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.isIndoorEnabled();
try {
boolean success = googleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(this, R.raw.new_map));
if(!success){
return;
}
}catch (Resources.NotFoundException e){
Log.e(TAG, "Error", e);
}
if (mLocationPermissionsGranted) {
getDeviceLocation();
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
mMap.setMyLocationEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(false);
}
}
private void getDeviceLocation(){
mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
try{
if(mLocationPermissionsGranted){
//&& task.getResult() != null
location = mFusedLocationProviderClient.getLastLocation();
location.addOnCompleteListener(new OnCompleteListener() {
@SuppressLint("SetTextI18n")
@Override
public void onComplete(@NonNull Task task) {
if(task.isSuccessful() && task.getResult() != null){
currentLocation = (Location) task.getResult();
moveCamera(new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude()), DEFAULT_ZOOM);
MarkerOptions marker = new MarkerOptions().position(new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude()));
//mMap.addMarker(marker);
// boolean isPoint = pointInPolygon(new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude()));
String newLat = String.valueOf(currentLocation.getLatitude());
String newLng = String.valueOf(currentLocation.getLongitude());
latLngList.add(newLat);
latLngList.add(newLng);
} else{
Toast.makeText(getBaseContext(), "Pencarian Titik Gagal", Toast.LENGTH_SHORT).show();
mFusedLocationProviderClient.getLastLocation();
}
}
});
}
}catch (SecurityException e){
Log.e(TAG, "getDeviceLocation: SecurityException: " + e.getMessage() );
}
}
private void initMap(){
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapView);
assert mapFragment != null;
mapFragment.getMapAsync(AttendanceWfh.this);
}
private void getLocationPermission(){
String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION};
if(ContextCompat.checkSelfPermission(this.getApplicationContext(),
FINE_LOCATION) == PackageManager.PERMISSION_GRANTED){
if(ContextCompat.checkSelfPermission(this.getApplicationContext(),
COURSE_LOCATION) == PackageManager.PERMISSION_GRANTED)
{
mLocationPermissionsGranted = true;
initMap();
}else{
ActivityCompat.requestPermissions(this,
permissions,
LOCATION_PERMISSION_REQUEST_CODE);
}
}else{
ActivityCompat.requestPermissions(this,
permissions,
LOCATION_PERMISSION_REQUEST_CODE);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
mLocationPermissionsGranted = false;
if (requestCode == LOCATION_PERMISSION_REQUEST_CODE) {
if (grantResults.length > 0) {
for (int grantResult : grantResults) {
if (grantResult != PackageManager.PERMISSION_GRANTED) {
mLocationPermissionsGranted = false;
return;
}
}
mLocationPermissionsGranted = true;
//initialize our map
initMap();
}
}
}
private void startScan(){
fingerprintManager = (FingerprintManager) getSystemService(FINGERPRINT_SERVICE);
authenticationCallback = new FingerprintManager.AuthenticationCallback() {
@Override
public void onAuthenticationError(int errorCode, CharSequence errString) {
//textView.setText("Error");
//Toast.makeText(MapActivity.this, "Otentikasi Error", Toast.LENGTH_LONG).show();
// imageView.setImageResource(R.drawable.image2);
super.onAuthenticationError(errorCode, errString);
}
@Override
public void onAuthenticationHelp(int helpCode, CharSequence helpString) {
super.onAuthenticationHelp(helpCode, helpString);
}
@Override
public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {
final String userID = FirebaseAuth.getInstance().getCurrentUser().getUid();
databaseReference = FirebaseDatabase.getInstance().getReference("attendanceWFH");
// String check = databaseReference.push().getKey();
historyRef = FirebaseDatabase.getInstance().getReference("historyWFH");
String timeStamp = String.valueOf(System.currentTimeMillis());
databaseReference.child(currentDate).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(!dataSnapshot.child("Check In").hasChild(userID)){
Attendance attendance = new Attendance(userID, timeStamp, "Masuk", "WFH", latLngList.get(0), latLngList.get(1));
databaseReference.child(currentDate).child("Check In").child(userID).setValue(attendance);
historyRef.child(userID).child(timeStamp).setValue(attendance);
}
else if (!dataSnapshot.child("Check Out").hasChild(userID)){
Attendance attendance = new Attendance(userID, timeStamp, "Keluar", "WFH", latLngList.get(0), latLngList.get(1));
databaseReference.child(currentDate).child("Check Out").child(userID).setValue(attendance);
historyRef.child(userID).child(timeStamp).setValue(attendance);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
super.onAuthenticationSucceeded(result);
bottomSheetDialog.dismiss();
Toast.makeText(getBaseContext(), "Otentikasi Berhasil", Toast.LENGTH_SHORT).show();
// Intent intent = new Intent(AttendanceWfh.this, CheckKehadiranWfh.class);
startActivity(new Intent(AttendanceWfh.this, CheckKehadiranWfh.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
finish();
}
@Override
public void onAuthenticationFailed() {
Toast.makeText(getBaseContext(), "Otentikasi Gagal", Toast.LENGTH_SHORT).show();
super.onAuthenticationFailed();
}
};
}
}

View File

@ -0,0 +1,294 @@
package com.project.ilsaenterprise;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import com.androidnetworking.AndroidNetworking;
import com.androidnetworking.common.Priority;
import com.androidnetworking.error.ANError;
import com.androidnetworking.interfaces.JSONObjectRequestListener;
import com.project.ilsaenterprise.adapter.NewsAdapter;
import com.project.ilsaenterprise.models.ModelNews;
import com.project.ilsaenterprise.services.NewsApi;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class BeritaActivity extends AppCompatActivity implements NewsAdapter.onSelectData {
RecyclerView rvBusiness;
NewsAdapter newsAdapter;
List<ModelNews> modelNews = new ArrayList<>();
LoadingProgress loadingProgress = new LoadingProgress(BeritaActivity.this);
private RadioGroup listFilter;
private RadioButton semuaRadio, hamaRadio;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.Dark));
setContentView(R.layout.activity_berita);
getSupportActionBar().hide();
rvBusiness = findViewById(R.id.rvNews);
listFilter = findViewById(R.id.listFilterGroup);
rvBusiness.setHasFixedSize(true);
rvBusiness.setLayoutManager(new LinearLayoutManager(this));
// setupToolbar();
listFilter.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@SuppressLint("NonConstantResourceId")
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.radio0:
modelNews.clear();
loadBisnis();
break;
case R.id.radio1:
modelNews.clear();
loadTekno();
break;
case R.id.radio2:
modelNews.clear();
loadHealth();
break;
case R.id.radio3:
modelNews.clear();
loadSport();
break;
case R.id.radio4:
modelNews.clear();
loadEntertain();
break;
}
}
});
}
// private void setupToolbar() {
// Toolbar toolbar = findViewById(R.id.tbNews);
// toolbar.setTitle("Berita Bisnis");
// setSupportActionBar(toolbar);
// getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// }
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
private void loadBisnis() {
loadingProgress.startLoadingDialog();
AndroidNetworking.get(NewsApi.GET_CATEGORY_BUSINESS)
.setPriority(Priority.HIGH)
.build()
.getAsJSONObject(new JSONObjectRequestListener() {
@Override
public void onResponse(JSONObject response) {
try {
loadingProgress.dismissDialog();
JSONArray playerArray = response.getJSONArray("articles");
for (int i = 0; i < playerArray.length(); i++) {
JSONObject temp = playerArray.getJSONObject(i);
ModelNews dataApi = new ModelNews();
dataApi.setTitle(temp.getString("title"));
dataApi.setUrl(temp.getString("url"));
dataApi.setPublishedAt(temp.getString("publishedAt"));
dataApi.setUrlToImage(temp.getString("urlToImage"));
modelNews.add(dataApi);
showNews();
}
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(BeritaActivity.this, "Gagal menampilkan data!", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onError(ANError anError) {
loadingProgress.dismissDialog();
Toast.makeText(BeritaActivity.this, "Tidak ada jaringan internet!", Toast.LENGTH_SHORT).show();
}
});
}
private void loadTekno() {
loadingProgress.startLoadingDialog();
AndroidNetworking.get(NewsApi.GET_CATEGORY_TECHNOLOGY)
.setPriority(Priority.HIGH)
.build()
.getAsJSONObject(new JSONObjectRequestListener() {
@Override
public void onResponse(JSONObject response) {
try {
loadingProgress.dismissDialog();
JSONArray playerArray = response.getJSONArray("articles");
for (int i = 0; i < playerArray.length(); i++) {
JSONObject temp = playerArray.getJSONObject(i);
ModelNews dataApi = new ModelNews();
dataApi.setTitle(temp.getString("title"));
dataApi.setUrl(temp.getString("url"));
dataApi.setPublishedAt(temp.getString("publishedAt"));
dataApi.setUrlToImage(temp.getString("urlToImage"));
modelNews.add(dataApi);
showNews();
}
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(BeritaActivity.this, "Gagal menampilkan data!", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onError(ANError anError) {
loadingProgress.dismissDialog();
Toast.makeText(BeritaActivity.this, "Tidak ada jaringan internet!", Toast.LENGTH_SHORT).show();
}
});
}
private void loadSport() {
loadingProgress.startLoadingDialog();
AndroidNetworking.get(NewsApi.GET_CATEGORY_SPORTS)
.setPriority(Priority.HIGH)
.build()
.getAsJSONObject(new JSONObjectRequestListener() {
@Override
public void onResponse(JSONObject response) {
try {
loadingProgress.dismissDialog();
JSONArray playerArray = response.getJSONArray("articles");
for (int i = 0; i < playerArray.length(); i++) {
JSONObject temp = playerArray.getJSONObject(i);
ModelNews dataApi = new ModelNews();
dataApi.setTitle(temp.getString("title"));
dataApi.setUrl(temp.getString("url"));
dataApi.setPublishedAt(temp.getString("publishedAt"));
dataApi.setUrlToImage(temp.getString("urlToImage"));
modelNews.add(dataApi);
showNews();
}
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(BeritaActivity.this, "Gagal menampilkan data!", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onError(ANError anError) {
loadingProgress.dismissDialog();
Toast.makeText(BeritaActivity.this, "Tidak ada jaringan internet!", Toast.LENGTH_SHORT).show();
}
});
}
private void loadHealth() {
loadingProgress.startLoadingDialog();
AndroidNetworking.get(NewsApi.GET_CATEGORY_HEALTH)
.setPriority(Priority.HIGH)
.build()
.getAsJSONObject(new JSONObjectRequestListener() {
@Override
public void onResponse(JSONObject response) {
try {
loadingProgress.dismissDialog();
JSONArray playerArray = response.getJSONArray("articles");
for (int i = 0; i < playerArray.length(); i++) {
JSONObject temp = playerArray.getJSONObject(i);
ModelNews dataApi = new ModelNews();
dataApi.setTitle(temp.getString("title"));
dataApi.setUrl(temp.getString("url"));
dataApi.setPublishedAt(temp.getString("publishedAt"));
dataApi.setUrlToImage(temp.getString("urlToImage"));
modelNews.add(dataApi);
showNews();
}
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(BeritaActivity.this, "Gagal menampilkan data!", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onError(ANError anError) {
loadingProgress.dismissDialog();
Toast.makeText(BeritaActivity.this, "Tidak ada jaringan internet!", Toast.LENGTH_SHORT).show();
}
});
}
private void loadEntertain() {
loadingProgress.startLoadingDialog();
AndroidNetworking.get(NewsApi.GET_CATEGORY_ENTERTAINMENT)
.setPriority(Priority.HIGH)
.build()
.getAsJSONObject(new JSONObjectRequestListener() {
@Override
public void onResponse(JSONObject response) {
try {
loadingProgress.dismissDialog();
JSONArray playerArray = response.getJSONArray("articles");
for (int i = 0; i < playerArray.length(); i++) {
JSONObject temp = playerArray.getJSONObject(i);
ModelNews dataApi = new ModelNews();
dataApi.setTitle(temp.getString("title"));
dataApi.setUrl(temp.getString("url"));
dataApi.setPublishedAt(temp.getString("publishedAt"));
dataApi.setUrlToImage(temp.getString("urlToImage"));
modelNews.add(dataApi);
showNews();
}
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(BeritaActivity.this, "Gagal menampilkan data!", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onError(ANError anError) {
loadingProgress.dismissDialog();
Toast.makeText(BeritaActivity.this, "Tidak ada jaringan internet!", Toast.LENGTH_SHORT).show();
}
});
}
private void showNews() {
newsAdapter = new NewsAdapter(BeritaActivity.this, modelNews, this);
rvBusiness.setAdapter(newsAdapter);
}
@Override
public void onSelected(ModelNews mdlNews) {
startActivity(new Intent(BeritaActivity.this, OpenNewsActivity.class).putExtra("url", mdlNews.getUrl()));
}
@Override
protected void onStart() {
super.onStart();
loadBisnis();
}
}

View File

@ -0,0 +1,246 @@
package com.project.ilsaenterprise;
import android.os.AsyncTask;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.google.android.material.tabs.TabLayout;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.project.ilsaenterprise.fragment.ContactFragment;
import com.project.ilsaenterprise.fragment.GroupFragment;
import com.project.ilsaenterprise.models.Employees;
import com.project.ilsaenterprise.models.ListGroup;
import java.util.ArrayList;
import java.util.List;
public class Chat extends Fragment {
private ViewPager viewPager;
private ViewPagerAdapter viewPagerAdapter;
private TabLayout tabLayout;
private ImageView ivAddGroup;
private BottomSheetDialog bottomSheetDialog;
private List<String> listKey = new ArrayList<>();
private DatabaseReference GroupRef = FirebaseDatabase.getInstance().getReference().child("Chats");
private Toast toast;
private boolean isAccepted;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
((AppCompatActivity) getActivity()).getSupportActionBar().hide();
View root = inflater.inflate(R.layout.fragment_chat, container, false);
tabLayout = root.findViewById(R.id.tabLayout);
viewPager = root.findViewById(R.id.viewPager);
bottomSheetDialog = new BottomSheetDialog(
getContext(), R.style.BottomSheetDialogTheme
);
viewPagerAdapter = new ViewPagerAdapter(getActivity().getSupportFragmentManager());
// viewPagerAdapter.addFragments(new com.typroject.perkebunan_nusantara.fragment.ChatFragment(), "Pribadi");
viewPagerAdapter.addFragments(new GroupFragment(), "Grup");
viewPagerAdapter.addFragments(new ContactFragment(), "Kontak");
viewPager.setAdapter(viewPagerAdapter);
new setAdapterTask().execute();
tabLayout.setupWithViewPager(viewPager);
initialView(root);
ivAddGroup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
checkPermission(root);
}
});
return root;
}
private void checkPermission(View root){
FirebaseAuth userAuth = FirebaseAuth.getInstance();
DatabaseReference dbRef = FirebaseDatabase.getInstance().getReference("users");
String uid = userAuth.getUid();
isAccepted = false;
Log.d("TEST", uid);
try{
dbRef.child(uid).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
Employees userData = snapshot.getValue(Employees.class);
if(userData.getJabatan().equals("Kepala Bagian")){
newChatroomDialog(root);
}
else
Toast.makeText(Chat.this.getContext(), "Akses untuk Kepala Bagian", Toast.LENGTH_LONG).show();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}catch (Exception ex){
Toast.makeText(Chat.this.getContext(), ex.getMessage(), Toast.LENGTH_LONG).show();
}
}
private void initialView(View fragment){
ivAddGroup = fragment.findViewById(R.id.ivAddGroup);
}
private void newChatroomDialog(View fragment){
View bottomSheetView = LayoutInflater.from(getContext())
.inflate(
R.layout.layout_popup_add_group_chat,
(LinearLayout) fragment.findViewById(R.id.bottomSheetContainer)
);
EditText addGroupEdt = bottomSheetView.findViewById(R.id.group_txt);
RelativeLayout addGroupBtn = bottomSheetView.findViewById(R.id.btnAddGroup);
addGroupBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(addGroupEdt.getText().toString().matches("")){
Toast.makeText(getContext(), "Masukkan nama grup.", Toast.LENGTH_LONG).show();
}
else{
buildNewChatroom(addGroupEdt.getText().toString());
}
}
});
bottomSheetDialog.setContentView(bottomSheetView);
bottomSheetDialog.show();
}
private void buildNewChatroom(String chatroomName){
if(listKey.size() == 0){
GroupRef.child(chatroomName).setValue("")
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful())
toast = Toast.makeText(getActivity(), "Grup telah ditambahkan", Toast.LENGTH_SHORT);
View toastView = toast.getView();
toastView.setBackgroundResource(R.drawable.toast_drawable);
toast.show();
}
});
bottomSheetDialog.cancel();
}
else
{
for(int i = 0; i < listKey.size(); i++){
if(listKey.get(i).equals(chatroomName)){
toast = Toast.makeText(getActivity(), "Nama grup sudah ada", Toast.LENGTH_LONG);
View toastView = toast.getView();
toastView.setBackgroundResource(R.drawable.toast_drawable);
toast.show();
return;
}
if(i == listKey.size()-1 && !(listKey.get(i).equals(chatroomName))){
GroupRef.child(chatroomName).setValue("")
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful())
toast = Toast.makeText(getActivity(), "Grup telah ditambahkan", Toast.LENGTH_SHORT);
View toastView = toast.getView();
toastView.setBackgroundResource(R.drawable.toast_drawable);
toast.show();
}
});
bottomSheetDialog.cancel();
}
}
}
}
private class setAdapterTask extends AsyncTask<Void,Void,Void> {
protected Void doInBackground(Void... params) {
return null;
}
@Override
protected void onPostExecute(Void result) {
viewPager.setAdapter(viewPagerAdapter);
}
}
class ViewPagerAdapter extends FragmentPagerAdapter {
private ArrayList<Fragment> fragments;
private ArrayList<String> titles;
ViewPagerAdapter(FragmentManager fm){
super(fm);
this.fragments = new ArrayList<>();
this.titles = new ArrayList<>();
}
@NonNull
@Override
public Fragment getItem(int position) {
switch (position)
{
case 0:
return new GroupFragment(); //ChildFragment1 at position 0
case 1:
return new ContactFragment(); //ChildFragment2 at position 1
}
return null;
}
@Override
public int getCount() {
return fragments.size();
}
public void addFragments(Fragment fragment, String title){
fragments.add(fragment);
titles.add(title);
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return titles.get(position);
}
}
}

View File

@ -0,0 +1,329 @@
package com.project.ilsaenterprise;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.widget.EditText;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.android.material.snackbar.Snackbar;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.firestore.CollectionReference;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.EventListener;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.FirebaseFirestoreException;
import com.google.firebase.firestore.ListenerRegistration;
import com.google.firebase.firestore.Query;
import com.google.firebase.firestore.QueryDocumentSnapshot;
import com.google.firebase.firestore.QuerySnapshot;
import com.project.ilsaenterprise.adapter.ChatMessageRecyclerAdapter;
import com.project.ilsaenterprise.models.ChatMessage;
import com.project.ilsaenterprise.models.Chatroom;
import com.project.ilsaenterprise.models.UserChat;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
public class ChatroomActivity extends AppCompatActivity implements
View.OnClickListener
{
private static final String TAG = "ChatroomActivity";
//widgets
private Chatroom mChatroom;
private EditText mMessage;
//vars
private ListenerRegistration mChatMessageEventListener, mUserListEventListener;
private RecyclerView mChatMessageRecyclerView;
private ChatMessageRecyclerAdapter mChatMessageRecyclerAdapter;
private FirebaseFirestore mDb;
private ArrayList<ChatMessage> mMessages = new ArrayList<>();
private Set<String> mMessageIds = new HashSet<>();
private ArrayList<UserChat> mUserList = new ArrayList<>();
private UserChat mUsers = new UserChat();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chatroom);
mMessage = findViewById(R.id.input_message);
mChatMessageRecyclerView = findViewById(R.id.chatmessage_recycler_view);
findViewById(R.id.checkmark).setOnClickListener(this);
mDb = FirebaseFirestore.getInstance();
getIncomingIntent();
initChatroomRecyclerView();
getChatroomUsers();
}
private void getChatMessages(){
CollectionReference messagesRef = mDb
.collection(getString(R.string.room_chat))
.document(mChatroom.getChatroom_id())
.collection(getString(R.string.messages_chat));
mChatMessageEventListener = messagesRef
.orderBy("timestamp", Query.Direction.ASCENDING)
.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@javax.annotation.Nullable QuerySnapshot queryDocumentSnapshots, @javax.annotation.Nullable FirebaseFirestoreException e) {
if (e != null) {
Log.e(TAG, "onEvent: Listen failed.", e);
return;
}
if(queryDocumentSnapshots != null){
for (QueryDocumentSnapshot doc : queryDocumentSnapshots) {
ChatMessage message = doc.toObject(ChatMessage.class);
if(!mMessageIds.contains(message.getMessage_id())){
mMessageIds.add(message.getMessage_id());
mMessages.add(message);
mChatMessageRecyclerView.smoothScrollToPosition(mMessages.size() - 1);
}
}
mChatMessageRecyclerAdapter.notifyDataSetChanged();
}
}
});
}
private void getChatroomUsers(){
CollectionReference usersRef = mDb
.collection(getString(R.string.room_chat))
.document(mChatroom.getChatroom_id())
.collection(getString(R.string.user_list));
mUserListEventListener = usersRef
.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@javax.annotation.Nullable QuerySnapshot queryDocumentSnapshots, @javax.annotation.Nullable FirebaseFirestoreException e) {
if (e != null) {
Log.e(TAG, "onEvent: Listen failed.", e);
return;
}
if(queryDocumentSnapshots != null){
// Clear the list and add all the users again
mUserList.clear();
mUserList = new ArrayList<>();
for (QueryDocumentSnapshot doc : queryDocumentSnapshots) {
UserChat user = doc.toObject(UserChat.class);
mUserList.add(user);
//getUserLocation(user);
Log.d(TAG, "onEvent: user list size: " + user.getUsername());
}
Log.d(TAG, "onEvent: user list size: " + mUserList.size());
}
}
});
}
private void initChatroomRecyclerView(){
mChatMessageRecyclerAdapter = new ChatMessageRecyclerAdapter(mMessages, new ArrayList<UserChat>(), this);
mChatMessageRecyclerView.setAdapter(mChatMessageRecyclerAdapter);
mChatMessageRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mChatMessageRecyclerView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v,
int left, int top, int right, int bottom,
int oldLeft, int oldTop, int oldRight, int oldBottom) {
if (bottom < oldBottom) {
mChatMessageRecyclerView.postDelayed(new Runnable() {
@Override
public void run() {
if(mMessages.size() > 0){
mChatMessageRecyclerView.smoothScrollToPosition(
mChatMessageRecyclerView.getAdapter().getItemCount() - 1);
}
}
}, 100);
}
}
});
}
private void insertNewMessage(){
String message = mMessage.getText().toString();
if(!message.equals("")){
message = message.replaceAll(System.getProperty("line.separator"), "");
DocumentReference newMessageDoc = mDb
.collection(getString(R.string.room_chat))
.document(mChatroom.getChatroom_id())
.collection(getString(R.string.messages_chat))
.document();
ChatMessage newChatMessage = new ChatMessage();
newChatMessage.setMessage(message);
newChatMessage.setMessage_id(newMessageDoc.getId());
UserChat user = new UserChat();
Log.d(TAG, "insertNewMessage: retrieved user client: " + user.toString());
newChatMessage.setUser(user);
newMessageDoc.set(newChatMessage).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
clearMessage();
}else{
View parentLayout = findViewById(android.R.id.content);
Snackbar.make(parentLayout, "Something went wrong.", Snackbar.LENGTH_SHORT).show();
}
}
});
}
}
private void clearMessage(){
mMessage.setText("");
}
private void inflateUserListFragment(){
hideSoftKeyboard();
UserListFragment fragment = UserListFragment.newInstance();
Bundle bundle = new Bundle();
bundle.putParcelableArrayList(getString(R.string.intent_user), mUserList);
fragment.setArguments(bundle);
// FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
// transaction.setCustomAnimations(R.anim.slide_in_up, R.anim.slide_out_up);
// transaction.replace(R.id.user_list_container, fragment, getString(R.string.fragment_user_list));
// transaction.addToBackStack(getString(R.string.fragment_user_list));
// transaction.commit();
}
private void hideSoftKeyboard(){
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
}
private void getIncomingIntent(){
if(getIntent().hasExtra(getString(R.string.intent_chatroom))){
mChatroom = getIntent().getParcelableExtra(getString(R.string.intent_chatroom));
setChatroomName();
joinChatroom();
}
}
private void leaveChatroom(){
DocumentReference joinChatroomRef = mDb
.collection(getString(R.string.room_chat))
.document(mChatroom.getChatroom_id())
.collection(getString(R.string.user_list))
.document(FirebaseAuth.getInstance().getUid());
joinChatroomRef.delete();
}
private void joinChatroom(){
DocumentReference joinChatroomRef = mDb
.collection(getString(R.string.room_chat))
.document(mChatroom.getChatroom_id())
.collection(getString(R.string.user_list))
.document(FirebaseAuth.getInstance().getUid());
UserChat user = new UserChat();
joinChatroomRef.set(user); // Don't care about listening for completion.
}
private void setChatroomName(){
getSupportActionBar().setTitle(mChatroom.getTitle());
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
}
@Override
protected void onResume() {
super.onResume();
getChatMessages();
}
@Override
protected void onDestroy() {
super.onDestroy();
if(mChatMessageEventListener != null){
mChatMessageEventListener.remove();
}
if(mUserListEventListener != null){
mUserListEventListener.remove();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.chatroom_menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case android.R.id.home:{
UserListFragment fragment =
(UserListFragment) getSupportFragmentManager().findFragmentByTag(getString(R.string.fragment_user_list));
if(fragment != null){
if(fragment.isVisible()){
getSupportFragmentManager().popBackStack();
return true;
}
}
finish();
return true;
}
case R.id.action_chatroom_user_list:{
inflateUserListFragment();
return true;
}
case R.id.action_chatroom_leave:{
leaveChatroom();
return true;
}
default:{
return super.onOptionsItemSelected(item);
}
}
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.checkmark:{
insertNewMessage();
}
}
}
}

View File

@ -0,0 +1,129 @@
package com.project.ilsaenterprise;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import android.content.Intent;
import android.location.Address;
import android.location.Geocoder;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.view.View;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.project.ilsaenterprise.adapter.AttendanceAdapter;
import com.project.ilsaenterprise.adapter.HistoryWfhAdapter;
import com.project.ilsaenterprise.models.Attendance;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Locale;
public class CheckKehadiranWfh extends AppCompatActivity {
private static final String TAG = "History Attendance";
private ListView listView;
private List<Attendance> historyList;
private FirebaseAuth mAuth;
private RelativeLayout relNoList;
private LinearLayout backHeader;
private String currentDate = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(new Date());
private DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("users")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid());
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.Dark));
setContentView(R.layout.activity_check_kehadiran_wfh);
getSupportActionBar().hide();
listView = findViewById(R.id.listView);
relNoList = findViewById(R.id.relNoList);
backHeader = findViewById(R.id.header);
historyList = new ArrayList<>();
backHeader.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(CheckKehadiranWfh.this, WorkFromHome.class));
finish();
}
});
loadHistory();
}
private void loadHistory() {
final ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setVisibility(View.VISIBLE);
FirebaseUser user = mAuth.getInstance().getCurrentUser();
final String userID = user.getUid();
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("historyWFH").child(userID);
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
historyList.clear();
for (DataSnapshot ds : dataSnapshot.getChildren()) {
Attendance modelPost = ds.getValue(Attendance.class);
modelPost.setTime(getDate(Long.parseLong(modelPost.getTime())));
modelPost.setStrLoc(getLoc(modelPost.getLat(), modelPost.getLng()));
modelPost.setLat(modelPost.getLat() + (char) 0x00B0 + " E");
modelPost.setLng(modelPost.getLng() + (char) 0x00B0 + " N");
historyList.add(modelPost);
}
Collections.reverse(historyList);
HistoryWfhAdapter attendanceAdapter = new HistoryWfhAdapter(historyList, getApplicationContext());
listView.setAdapter(attendanceAdapter);
if(historyList.size() == 0)
relNoList.setVisibility(View.VISIBLE);
progressBar.setVisibility(View.INVISIBLE);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(CheckKehadiranWfh.this, "Data Error" + databaseError.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
private String getLoc(String Lat, String Lng){
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = null;
try {
addresses = geocoder.getFromLocation(Double.parseDouble(Lat), Double.parseDouble(Lng),1);
} catch (IOException e) {
e.printStackTrace();
}
String address = addresses.get(0).getAddressLine(0);
return address;
}
private String getDate(long time) {
Calendar cal = Calendar.getInstance(Locale.ENGLISH);
cal.setTimeInMillis(time);
String date = DateFormat.format(" HH:mm aaa, dd MMMM yyyy", cal).toString();
return date;
}
}

View File

@ -0,0 +1,885 @@
package com.project.ilsaenterprise;
import android.Manifest;
import android.animation.AnimatorSet;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.Point;
import android.graphics.drawable.ColorDrawable;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationManager;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import android.os.Handler;
import android.provider.Settings;
import android.util.Log;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.GridLayout;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.androidnetworking.AndroidNetworking;
import com.androidnetworking.common.Priority;
import com.androidnetworking.error.ANError;
import com.androidnetworking.interfaces.JSONObjectRequestListener;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.zxing.WriterException;
import com.project.ilsaenterprise.account.CreateUser;
import com.project.ilsaenterprise.account.UserProfile;
import com.project.ilsaenterprise.models.Company;
import com.project.ilsaenterprise.models.Employees;
import com.project.ilsaenterprise.models.ModelNews;
import com.project.ilsaenterprise.services.NewsApi;
import com.project.ilsaenterprise.services.TimeUnits;
import com.project.manufacturing.Home;
import com.squareup.picasso.Picasso;
import com.thekhaeng.pushdownanim.PushDownAnim;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import java.util.TimeZone;
import androidmads.library.qrgenearator.QRGContents;
import androidmads.library.qrgenearator.QRGEncoder;
import static android.content.Context.WINDOW_SERVICE;
public class Dashboard extends Fragment {
private GridLayout mainGrid;
private TextView nameText, dateView, greetView, tvDivision, tvFullname, tvPhone, tvNIP, tvEmail, tvJabatan,
roleText, masukTxt, keluarTxt, hitungHadirTxt, locationTxt, judulBerita, jamBerita, tvGps;
private ImageView imgBerita, ivLogo;
private AnimatorSet animatorSet;
private DatabaseReference userRef;
private String currentUser, idPerusahaan;
private FirebaseAuth mAuth;
private FirebaseUser userFirebase;
private static final String TAG = "ILSA";
private static final int ERROR_DIALOG_REQUEST = 9001;
private LocationManager locationManager;
private double latitude, longitude;
private ProgressBar mProgressBar;
private Task location;
private Location currentLocation;
private FusedLocationProviderClient mFusedLocationProviderClient;
private Boolean mLocationPermissionsGranted = false;
private static final String FINE_LOCATION = Manifest.permission.ACCESS_FINE_LOCATION;
private static final String COURSE_LOCATION = Manifest.permission.ACCESS_COARSE_LOCATION;
private static final int LOCATION_PERMISSION_REQUEST_CODE = 1234;
private SwipeRefreshLayout swipeRefreshLayout;
private Boolean deviceLocated = false;
private TextView country, currency, timestamp;
private String kurs, ts;
private BigDecimal bd;
private Geocoder geocoder;
private List<Address> addresses;
private GoogleSignInAccount googleLogin;
private QRGEncoder qrgEncoder;
private ImageView qrImage;
DatabaseReference companyRef;
Dialog dialog;
private AlertDialog loadDialog;
private boolean gpsStatus;
private AlertDialog.Builder builder;
//private View shineAnim;
//private LinearLayout btnClock;
@SuppressLint("NewApi")
@Override
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
final View root = inflater.inflate(R.layout.fragment_dashboard, container, false);
// getActivity().getWindow().setStatusBarColor(ContextCompat.getColor(getContext(), R.color.newDark));
//View inflatedView = inflater.inflate(R.layout.activity_nav_button, container, false);
((AppCompatActivity) getActivity()).getSupportActionBar().hide();
dialog = new Dialog(Dashboard.this.getContext());
builder = new AlertDialog.Builder(Dashboard.this.getContext());
mAuth = FirebaseAuth.getInstance();
//currentUser = mAuth.getCurrentUser().getUid();
userRef = FirebaseDatabase.getInstance().getReference().child("users");
companyRef = FirebaseDatabase.getInstance().getReference("Company");
swipeRefreshLayout = root.findViewById(R.id.refreshLayHome);
TextView btnBacaSemua = root.findViewById(R.id.bacaSemuaBtn);
judulBerita = root.findViewById(R.id.tvBerita);
jamBerita = root.findViewById(R.id.tvJam);
imgBerita = root.findViewById(R.id.ImgBerita);
// tvNamaPerusahaan = root.findViewById(R.id.tvCompanyName);
ivLogo = root.findViewById(R.id.ivCompanyLogo);
tvFullname = root.findViewById(R.id.tvFullname);
tvPhone = root.findViewById(R.id.tvHp);
tvDivision = root.findViewById(R.id.tvDivision);
tvNIP = root.findViewById(R.id.tvNIP);
tvEmail = root.findViewById(R.id.tvEmail);
tvJabatan = root.findViewById(R.id.tvJabatan);
idPerusahaan = "";
masukTxt = root.findViewById(R.id.masukTv);
keluarTxt = root.findViewById(R.id.keluarTv);
hitungHadirTxt = root.findViewById(R.id.countHadir);
locationTxt = root.findViewById(R.id.lokasiHome);
dateView = root.findViewById(R.id.jamText);
tvGps = root.findViewById(R.id.tvGps);
RelativeLayout btnAttendance = root.findViewById(R.id.btnAttendance);
RelativeLayout btnHistory = root.findViewById(R.id.btnHistory);
RelativeLayout btnWfh = root.findViewById(R.id.btnWfh);
mProgressBar = root.findViewById(R.id.progress_bar);
//qrImage = root.findViewById(R.id.ivQr);
// btnClock = root.findViewById(R.id.btnClock);
Calendar calDate = Calendar.getInstance();
SimpleDateFormat currentDateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.ENGLISH);
String currentDate = currentDateFormat.format(calDate.getTime());
dateView.setText(currentDate);
PushDownAnim.setPushDownAnimTo(btnAttendance).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getLocationPermission();
if(isServicesOK()){
Intent intent = new Intent(Dashboard.this.getActivity(), MapActivity.class);
startActivity(intent);
}
else
Toast.makeText(Dashboard.this.getActivity().getBaseContext(), "Gagal menemukan lokasi", Toast.LENGTH_SHORT).show();
}
});
PushDownAnim.setPushDownAnimTo(btnHistory).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Dashboard.this.getActivity(), HistoryAttendance.class);
startActivity(intent);
}
});
PushDownAnim.setPushDownAnimTo(btnWfh).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Dashboard.this.getActivity(), WorkFromHome.class);
startActivity(intent);
requireActivity().finish();
}
});
PushDownAnim.setPushDownAnimTo(btnBacaSemua).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Dashboard.this.getActivity(), BeritaActivity.class);
startActivity(intent);
//getActivity().getFragmentManager().popBackStack();
}
});
PushDownAnim.setPushDownAnimTo(judulBerita).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Dashboard.this.getActivity(), BeritaActivity.class);
startActivity(intent);
}
});
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
final Handler setDelay = new Handler();
setDelay.postDelayed(new Runnable() {
@Override
public void run() {
verifyUserExist();
getDeviceLocation();
loadJSON();
if(deviceLocated = false)
Toast.makeText(getActivity().getBaseContext(), "Koordinat Perangkat tidak ditemukan", Toast.LENGTH_SHORT).show();
swipeRefreshLayout.setRefreshing(false);
}
}, 2000);
//========
}
});
return root;
}
private void verifyUserDevice(){
String currentDevice = getDeviceName();
Log.d("DEVICE ID", currentDevice);
Log.d("UID", userFirebase.getUid());
userRef.child(userFirebase.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(!snapshot.child("deviceId").exists()){
sendToSetting();
}
else if(!snapshot.child("deviceId").getValue().equals(currentDevice)){
Intent settingIntent = new Intent(Dashboard.this.getContext(), LoginBatal.class);
settingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(settingIntent);
}
else
return;
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
public String getDeviceName() {
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL;
if (model.startsWith(manufacturer)) {
return capitalize(model);
} else {
return capitalize(manufacturer) + " " + model;
}
}
private String capitalize(String s) {
if (s == null || s.length() == 0) {
return "";
}
char first = s.charAt(0);
if (Character.isUpperCase(first)) {
return s;
} else {
return Character.toUpperCase(first) + s.substring(1);
}
}
private void loadJSON() {
mProgressBar.setMax(100);
mProgressBar.setProgress(0);
AndroidNetworking.get(NewsApi.GET_CATEGORY_BUSINESS)
.setPriority(Priority.HIGH)
.build()
.getAsJSONObject(new JSONObjectRequestListener() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray playerArray = response.getJSONArray("articles");
for (int i = 0; i < 1; i++) {
JSONObject temp = playerArray.getJSONObject(i);
ModelNews dataApi = new ModelNews();
judulBerita.setText(temp.getString("title"));
jamBerita.setText(TimeUnits.getTimeAgo(temp.getString("publishedAt")));
String retrieveImg = temp.getString("urlToImage");
Picasso.get().load(retrieveImg).placeholder(R.drawable.placeholder_news).into(imgBerita);
mProgressBar.setVisibility(View.GONE);
}
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(Dashboard.this.getContext(), "Gagal menampilkan data!", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onError(ANError anError) {
mProgressBar.setVisibility(View.GONE);
// Toast.makeText(Dashboard.this.getContext(), "Tidak ada jaringan internet!", Toast.LENGTH_SHORT).show();
}
});
}
@SuppressLint("NewApi")
private void generateQr(){
String inputValue = userFirebase.getUid();
Bitmap bitmap;
if (inputValue.length() > 0) {
WindowManager manager = (WindowManager) getActivity().getSystemService(WINDOW_SERVICE);
Display display = manager.getDefaultDisplay();
Point point = new Point();
display.getSize(point);
int width = point.x;
int height = point.y;
int smallerDimension = width < height ? width : height;
smallerDimension = smallerDimension * 3 / 4;
qrgEncoder = new QRGEncoder(
inputValue, null,
QRGContents.Type.TEXT,
smallerDimension);
try {
bitmap = qrgEncoder.encodeAsBitmap();
qrImage.setImageBitmap(bitmap);
} catch (WriterException e) {
Log.v(TAG, e.toString());
}
} else {
return;
}
}
private void getDeviceLocation(){
Geocoder geocoder = new Geocoder(Dashboard.this.getContext(), Locale.getDefault());
mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(getContext());
try{
if(mLocationPermissionsGranted){
location = mFusedLocationProviderClient.getLastLocation();
location.addOnCompleteListener(new OnCompleteListener() {
@SuppressLint("SetTextI18n")
@Override
public void onComplete(@NonNull Task task) {
if(task.isSuccessful() && task.getResult() != null){
currentLocation = (Location) task.getResult();
if (currentLocation != null) {
try {
addresses = geocoder.getFromLocation(currentLocation.getLatitude(), currentLocation.getLongitude(),1);
Log.d("INFOOOO", currentLocation.getLatitude() + " " + currentLocation.getLongitude());
if(addresses != null){
locationTxt.setText(addresses.get(0).getAddressLine(0));
}
else {
locationTxt.setText("Lokasi tidak ditemukan");
}
} catch (IOException e) {
e.printStackTrace();
}
}
else
getDeviceLocation();
} else{
Toast.makeText(getActivity().getBaseContext(), "Pencarian Titik Gagal", Toast.LENGTH_SHORT).show();
mFusedLocationProviderClient.getLastLocation();
}
}
});
}
}catch (SecurityException e){
Log.e(TAG, "SecurityException: " + e.getMessage() );
}
}
private void activeGpsDialog(){
dialog.setContentView(R.layout.layout_gps_permission);
Objects.requireNonNull(dialog.getWindow()).setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
Button btnIjin = dialog.findViewById(R.id.btnIjin);
btnIjin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
dialog.dismiss();
}
});
dialog.show();
}
public void checkGps(){
locationManager = (LocationManager) Dashboard.this.requireContext().getSystemService(Context.LOCATION_SERVICE);
assert locationManager != null;
gpsStatus = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
Log.d("GPSSSSSSSSSSS", String.valueOf(gpsStatus));
if(gpsStatus) {
tvGps.setText(R.string.gps_on);
}
else{
tvGps.setText(R.string.gps_off);
}
}
// @Override
// public void onLocationChanged(Location location) {
// getDeviceLocation();
// }
//
// @Override
// public void onStatusChanged(String provider, int status, Bundle extras) {
//
// }
//
// @Override
// public void onProviderEnabled(String provider) {
//
// }
//
// @Override
// public void onProviderDisabled(String provider) {
//
// }
private String getCurrentDate(){
Calendar calDate = Calendar.getInstance();
SimpleDateFormat currentDateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.ENGLISH);
String currentDate = currentDateFormat.format(calDate.getTime());
return currentDate;
}
private void getCountHari(){
DatabaseReference attRef = FirebaseDatabase.getInstance().getReference("history");
String mAuth = FirebaseAuth.getInstance().getCurrentUser().getUid();
attRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.hasChild(mAuth)){
int hari = 0;
for(DataSnapshot ds : snapshot.child(mAuth).getChildren()){
if(ds.child("keterangan").getValue().equals("Keluar"))
hari++;
else
continue;
}
hitungHadirTxt.setText(String.valueOf(hari));
}
else
return;
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
private String getDate(long time) {
Calendar cal = Calendar.getInstance(Locale.ENGLISH);
cal.setTimeInMillis(time);
int day = cal.getTime().getDay();
int month = cal.getTime().getMonth() + 1;
StringBuilder timeBuilder = new StringBuilder();
if(day == 1)
timeBuilder.append("Senin, ");
else if(day == 2)
timeBuilder.append("Selasa, ");
else if(day == 3)
timeBuilder.append("Rabu, ");
else if(day == 4)
timeBuilder.append("Kamis, ");
else if(day == 5)
timeBuilder.append("Jumat, ");
else if(day == 6)
timeBuilder.append("Sabtu, ");
else if(day == 7)
timeBuilder.append("Minggu, ");
timeBuilder.append(cal.getTime().getDate());
if(month == 1)
timeBuilder.append(" Januari");
else if(month == 2)
timeBuilder.append(" Februari");
else if(month == 3)
timeBuilder.append(" Maret");
else if(month == 4)
timeBuilder.append(" April");
else if(month == 5)
timeBuilder.append(" Mei");
else if(month == 6)
timeBuilder.append(" Juni");
else if(month == 7)
timeBuilder.append(" Juli");
else if(month == 8)
timeBuilder.append(" Agustus");
else if(month == 9)
timeBuilder.append(" September");
else if(month == 10)
timeBuilder.append(" Oktober");
else if(month == 11)
timeBuilder.append(" November");
else if(month == 12)
timeBuilder.append(" Desember");
timeBuilder.append(cal.getTime().getYear());
//timeBuilder.append(cal.getTime().getTime());
return timeBuilder.toString();
}
private String getTime(long time) {
Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
cal.setTimeInMillis(time);
int hour = cal.getTime().getHours();
int minute = cal.getTime().getMinutes();
int second = cal.getTime().getSeconds();
int day = cal.getTime().getDay();
String dayString = "";
if(day == 1)
dayString = "Senin, ";
else if(day == 2)
dayString = "Selasa, ";
else if(day == 3)
dayString = "Rabu, ";
else if(day == 4)
dayString = "Kamis, ";
else if(day == 5)
dayString = "Jumat, ";
else if(day == 6)
dayString = "Sabtu, ";
else if(day == 7)
dayString = "Minggu, ";
return dayString + hour + ' ' + ':' + ' ' + minute + ' ' + ':' + ' ' + second;
}
private void getMasuk(){
DatabaseReference attRef = FirebaseDatabase.getInstance().getReference("attendance");
String mAuth = FirebaseAuth.getInstance().getCurrentUser().getUid();
attRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.hasChild(getCurrentDate())){
if(snapshot.child(getCurrentDate()).hasChild("Check In")){
if(snapshot.child(getCurrentDate()).child("Check In").hasChild(mAuth)){
long time = Long.parseLong(snapshot.child(getCurrentDate()).child("Check In").child(mAuth).child("time").getValue().toString());
masukTxt.setText(getTime(time));
}
}
}
else
return;
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
private void getKeluar(){
DatabaseReference attRef = FirebaseDatabase.getInstance().getReference("attendance");
String mAuth = FirebaseAuth.getInstance().getCurrentUser().getUid();
attRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
Log.d("TESSTT", "1");
if(snapshot.hasChild(getCurrentDate())){
Log.d("TESSTT", "2");
if(snapshot.child(getCurrentDate()).hasChild("Check Out")){
Log.d("TESSTT", "3");
if(snapshot.child(getCurrentDate()).child("Check Out").hasChild(mAuth)){
Log.d("TESSTT", "4");
long time = Long.parseLong(snapshot.child(getCurrentDate()).child("Check Out").child(mAuth).child("time").getValue().toString());
keluarTxt.setText(getTime(time));
}
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
private void retrieveData() {
userRef.child(userFirebase.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Employees employees = dataSnapshot.getValue(Employees.class);
tvDivision.setText(employees.getDivisi());
tvFullname.setText(employees.getNamaLengkap());
tvJabatan.setText(employees.getJabatan());
tvEmail.setText(employees.getEmail());
tvNIP.setText(employees.getNip());
tvPhone.setText(employees.getNoHp());
idPerusahaan = employees.getPerusahaan();
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});
companyRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(idPerusahaan == null)
startActivity(new Intent(Dashboard.this.getContext(), CreateUser.class));
else
{
Company company = snapshot.child(idPerusahaan).getValue(Company.class);
//tvNamaPerusahaan.setText(company.getNama());
Picasso.get().load(company.getLogo()).into(ivLogo);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
@Override
public void onStart() {
super.onStart();
getLocationPermission();
checkGps();
new getBackgroundTask().execute();
// getLocation();
// loadJSON();
}
@SuppressLint("NewApi")
@Override
public void onResume() {
super.onResume();
new getBackgroundTask().execute();
//new GetKurs().execute();
// getLocation();
// loadJSON();
}
// private void shiningBtn(){
// Animation animation = AnimationUtils.loadAnimation(HomeFragment.this.getContext(), R.anim.anim_shine);
// shineAnim.startAnimation(animation);
//
// animation.setAnimationListener(new Animation.AnimationListener() {
// @Override
// public void onAnimationStart(Animation animation) {
//
// }
//
// @Override
// public void onAnimationEnd(Animation animation) {
// shineAnim.startAnimation(animation);
// }
//
// @Override
// public void onAnimationRepeat(Animation animation) {
//
// }
// });
// }
@Override
public void onDestroy() {
super.onDestroy();
}
private void verifyUserExist() {
//String currentUID = mAuth.getCurrentUser().getUid();
userRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if ((snapshot.child(userFirebase.getUid()).exists())) {
retrieveData();
getMasuk();
getKeluar();
getCountHari();
// getLocation();
// loadJSON();
} else{
sendToSetting();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
private void sendToSetting() {
// Intent settingIntent = new Intent(getActivity(), UserProfile.class);
// settingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
// startActivity(settingIntent);
// getActivity().finish();
}
private void getLocationPermission() {
String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION};
if (ContextCompat.checkSelfPermission(getContext(),
FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
if (ContextCompat.checkSelfPermission(getContext(),
COURSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
mLocationPermissionsGranted = true;
} else {
ActivityCompat.requestPermissions(getActivity(),
permissions,
LOCATION_PERMISSION_REQUEST_CODE);
}
} else {
ActivityCompat.requestPermissions(getActivity(),
permissions,
LOCATION_PERMISSION_REQUEST_CODE);
}
}
public boolean isServicesOK() {
int available = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(Dashboard.this.getActivity());
if (available == ConnectionResult.SUCCESS) {
return true;
} else if (GoogleApiAvailability.getInstance().isUserResolvableError(available)) {
Dialog dialog = GoogleApiAvailability.getInstance().getErrorDialog(Dashboard.this.getActivity(), available, ERROR_DIALOG_REQUEST);
dialog.show();
} else {
Toast.makeText(Dashboard.this.getActivity(), "You can't make map requests", Toast.LENGTH_SHORT).show();
}
return false;
}
private class getBackgroundTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
locationTxt.setText(R.string.RefreshStr);
}
@Override
protected Void doInBackground(Void... voids) {
userFirebase = mAuth.getCurrentUser();
googleLogin = GoogleSignIn.getLastSignedInAccount(Dashboard.this.requireContext());
if(userFirebase != null){
verifyUserExist();
verifyUserDevice();
//generateQr();
}
else{
Toast.makeText(Dashboard.this.getContext(), "User tidak tersedia", Toast.LENGTH_SHORT).show();
}
getDeviceLocation();
loadJSON();
return null;
}
@Override
protected void onPostExecute(Void unused) {
super.onPostExecute(unused);
}
}
// private class GetKurs extends AsyncTask<Void, Void, Void> {
// @Override
// protected void onPreExecute() {
// super.onPreExecute();
// country.setText(R.string.RefreshStr);
// }
//
// @Override
// protected Void doInBackground(Void... arg0) {
// HttpHandler sh = new HttpHandler();
//
// String jsonStr = sh.makeServiceCall(KursApi.Currency_JSON);
//
// if (jsonStr != null) {
// try {
// JSONObject jsonObj = new JSONObject(jsonStr);
//
// JSONObject kursObj = jsonObj.getJSONObject("rates");
// kurs = kursObj.getString("IDR");
// ts = jsonObj.getString("timestamp");
// } catch (final JSONException e) {
// Log.e("KURS", "Json parsing error: " + e.getMessage());
// }
//
// } else {
// Log.e("KURS", "Couldn't get json from server.");
//
// }
//
// return null;
// }
//
// @Override
// protected void onPostExecute(Void result) {
// super.onPostExecute(result);
// country.setText("IDR");
// bd = BigDecimal.valueOf(Double.parseDouble(kurs)).setScale(2, RoundingMode.HALF_UP);
// currency.setText(kurs);
// timestamp.setText(getDate(Long.parseLong(bd)));
// }
// }
// private String getDate(long time) {
// Calendar cal = Calendar.getInstance(Locale.ENGLISH);
// cal.setTimeInMillis(time * 1000);
// return DateFormat.format(" HH:mm:ss, dd MMMM yyyy", cal).toString();
// }
}

View File

@ -0,0 +1,202 @@
package com.project.ilsaenterprise;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.location.Location;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MapStyleOptions;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.FirebaseDatabase;
import java.util.Objects;
public class Geodata extends Fragment implements OnMapReadyCallback {
private static final String TAG = "MapActivity";
private static final String FINE_LOCATION = Manifest.permission.ACCESS_FINE_LOCATION;
private static final String COURSE_LOCATION = Manifest.permission.ACCESS_COARSE_LOCATION;
private static final int LOCATION_PERMISSION_REQUEST_CODE = 1234;
private static final int PLAY_SERVICE_RESOLUTION_REQUEST = 4799;
private static final float DEFAULT_ZOOM = 16.5f;
private static final int ERROR_DIALOG_REQUEST = 9001;
private FusedLocationProviderClient mFusedLocationProviderClient;
//vars
private Boolean mLocationPermissionsGranted = false;
private GoogleMap mMap;
private Task location;
private Location currentLocation;
private MapView mapFragment;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_geodata, container, false);
mapFragment = root.findViewById(R.id.mapView);
mapFragment.onCreate(savedInstanceState);
mapFragment.onResume();
mapFragment.getMapAsync(this);
return root;
}
@Override
public void onStart() {
super.onStart();
if(isServicesOK()){
getLocationPermission();
}
}
private void getLocationPermission(){
String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION};
if(ContextCompat.checkSelfPermission(Geodata.this.requireContext(),
FINE_LOCATION) == PackageManager.PERMISSION_GRANTED){
if(ContextCompat.checkSelfPermission(Geodata.this.requireContext(),
COURSE_LOCATION) == PackageManager.PERMISSION_GRANTED)
{
mLocationPermissionsGranted = true;
}else{
ActivityCompat.requestPermissions(Geodata.this.requireActivity(),
permissions,
LOCATION_PERMISSION_REQUEST_CODE);
}
}else{
ActivityCompat.requestPermissions(Geodata.this.requireActivity(),
permissions,
LOCATION_PERMISSION_REQUEST_CODE);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
mLocationPermissionsGranted = false;
if (requestCode == LOCATION_PERMISSION_REQUEST_CODE) {
if (grantResults.length > 0) {
for (int grantResult : grantResults) {
if (grantResult != PackageManager.PERMISSION_GRANTED) {
mLocationPermissionsGranted = false;
return;
}
}
mLocationPermissionsGranted = true;
}
}
}
private void moveCamera(LatLng latLng, float zoom){
Log.d(TAG, "moveCamera: moving the camera to: lat: " + latLng.latitude + ", lng: " + latLng.longitude );
//LatLng markerLoc = new LatLng(latLng.latitude, latLng.longitude);
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoom));
mMap.clear();
}
public boolean isServicesOK(){
int available = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(Geodata.this.requireContext());
if(available == ConnectionResult.SUCCESS){
return true;
}
else if(GoogleApiAvailability.getInstance().isUserResolvableError(available)){
Dialog dialog = GoogleApiAvailability.getInstance().getErrorDialog(Geodata.this.requireActivity(), available, ERROR_DIALOG_REQUEST);
dialog.show();
}else{
// Toast.makeText(this, "You can't make map requests", Toast.LENGTH_SHORT).show();
}
return false;
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.isIndoorEnabled();
try {
boolean success = googleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(Geodata.this.requireContext(), R.raw.new_map));
if(!success){
return;
}
}catch (Resources.NotFoundException e){
Log.e(TAG, "Error", e);
}
if (mLocationPermissionsGranted) {
getDeviceLocation();
if (ActivityCompat.checkSelfPermission(Geodata.this.requireContext(), Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(Geodata.this.requireContext(),
Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
mMap.setMyLocationEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(false);
}
}
private void getDeviceLocation(){
mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(Geodata.this.requireActivity());
try{
if(mLocationPermissionsGranted){
//&& task.getResult() != null
location = mFusedLocationProviderClient.getLastLocation();
location.addOnCompleteListener(new OnCompleteListener() {
@SuppressLint("SetTextI18n")
@Override
public void onComplete(@NonNull Task task) {
if(task.isSuccessful() && task.getResult() != null){
currentLocation = (Location) task.getResult();
moveCamera(new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude()), DEFAULT_ZOOM);
MarkerOptions marker = new MarkerOptions().position(new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude()));
} else{
Toast.makeText(Geodata.this.requireContext(), "Pencarian Titik Gagal", Toast.LENGTH_SHORT).show();
mFusedLocationProviderClient.getLastLocation();
}
}
});
}
}catch (SecurityException e){
Log.e(TAG, "getDeviceLocation: SecurityException: " + e.getMessage() );
}
}
}

View File

@ -0,0 +1,180 @@
package com.project.ilsaenterprise;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.project.ilsaenterprise.adapter.MessageGroupListAdapter;
import com.project.ilsaenterprise.models.GroupMessageModel;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
public class GroupChatActivity extends AppCompatActivity {
private RelativeLayout sendMessageBtn;
private EditText userMessage;
private ScrollView mScrollView;
private TextView displayTextChat;
private RecyclerView mMessageRecycler;
private MessageGroupListAdapter mMessageAdapter;
private List<GroupMessageModel> messageList;
//private FirebaseAuth mAuth;
private TextView groupNameSupportBar;
private DatabaseReference userRef, GroupNameRef, GroupKeyRef;
private String currentGroupName, currentUID, currentUsername, currentDate, currentTime, senderID;
private String imageUrl;
private GoogleSignInAccount googleLogin;
private FirebaseAuth mAuth;
private FirebaseUser userFirebase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_group_chat);
getSupportActionBar().hide();
googleLogin = GoogleSignIn.getLastSignedInAccount(getApplicationContext());
mAuth = FirebaseAuth.getInstance();
userFirebase = mAuth.getCurrentUser();
groupNameSupportBar = findViewById(R.id.groupName);
currentGroupName = getIntent().getExtras().get("groupName").toString();
groupNameSupportBar.setText(currentGroupName);
messageList = new ArrayList<>();
sendMessageBtn = findViewById(R.id.relSend);
userMessage = findViewById(R.id.groupMessages);
currentUID = userFirebase.getUid();
userRef = FirebaseDatabase.getInstance().getReference().child("users");
GroupNameRef = FirebaseDatabase.getInstance().getReference().child("Chats").child(currentGroupName);
mMessageRecycler = (RecyclerView) findViewById(R.id.recyclerView_message_list);
// mMessageRecycler.setNestedScrollingEnabled(false);
getUserInfo();
loadMessage();
sendMessageBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SaveMessageInfo();
userMessage.setText("");
mMessageRecycler.post(new Runnable() {
@Override
public void run() {
// Call smooth scroll
mMessageRecycler.scrollToPosition(mMessageAdapter.getItemCount() - 1);
}
});
}
});
}
private void loadMessage() {
GroupNameRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
messageList.clear();
for (DataSnapshot ds : dataSnapshot.getChildren()) {
GroupMessageModel modelPost = ds.getValue(GroupMessageModel.class);
messageList.add(modelPost);
}
mMessageAdapter = new MessageGroupListAdapter(getApplicationContext(), messageList, currentUID);
mMessageRecycler.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
mMessageRecycler.setAdapter(mMessageAdapter);
mMessageRecycler.post(new Runnable() {
@Override
public void run() {
// Call smooth scroll
mMessageRecycler.scrollToPosition(mMessageAdapter.getItemCount() - 1);
}
});
// progressBar.setVisibility(View.INVISIBLE);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(GroupChatActivity.this, "Data Error" + databaseError.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
private void SaveMessageInfo() {
String Message = userMessage.getText().toString();
if(TextUtils.isEmpty(Message)){
Toast.makeText(this, "Masukkan pesan anda", Toast.LENGTH_SHORT).show();
}
else {
Calendar calDate = Calendar.getInstance();
@SuppressLint("SimpleDateFormat") SimpleDateFormat currentDateFormat = new SimpleDateFormat("dd MMM, yyyy");
currentDate = currentDateFormat.format(calDate.getTime());
String timeStamp = String.valueOf(System.currentTimeMillis());
Calendar calTime = Calendar.getInstance();
@SuppressLint("SimpleDateFormat") SimpleDateFormat currentTimeFormat = new SimpleDateFormat("kk:mm");
currentTime = currentTimeFormat.format(calTime.getTime());
HashMap<String, Object> groupMessageKey = new HashMap<>();
GroupNameRef.updateChildren(groupMessageKey);
GroupKeyRef = GroupNameRef.child(timeStamp);
HashMap<String, Object> messageInfoMap = new HashMap<>();
messageInfoMap.put("senderID", currentUID);
messageInfoMap.put("name", currentUsername);
messageInfoMap.put("message", Message);
messageInfoMap.put("date", currentDate);
messageInfoMap.put("time", currentTime);
GroupKeyRef.updateChildren(messageInfoMap);
}
}
private void getUserInfo(){
userRef.child(currentUID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.exists())
{
currentUsername = snapshot.child("namaLengkap").getValue().toString();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
}

View File

@ -0,0 +1,163 @@
package com.project.ilsaenterprise;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import android.content.Intent;
import android.location.Address;
import android.location.Geocoder;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.project.ilsaenterprise.adapter.AttendanceAdapter;
import com.project.ilsaenterprise.models.Attendance;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Locale;
public class HistoryAttendance extends AppCompatActivity {
private static final String TAG = "History Attendance";
private ListView listView;
private List<Attendance> historyList;
private LinearLayout backHeader;
private static String workPos, strPos;
private String currentDate = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(new Date());
private DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("users")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid());
private RelativeLayout relNoList;
private GoogleSignInAccount googleLogin;
private FirebaseAuth mAuth;
private FirebaseUser userFirebase;
ArrayList<Double> locationList = new ArrayList<Double>();
private AttendanceAdapter attendanceAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.Dark));
setContentView(R.layout.activity_history_attendance);
getSupportActionBar().hide();
googleLogin = GoogleSignIn.getLastSignedInAccount(getApplicationContext());
mAuth = FirebaseAuth.getInstance();
userFirebase = mAuth.getCurrentUser();
backHeader = findViewById(R.id.btnBack);
listView = findViewById(R.id.listView);
relNoList = findViewById(R.id.relNoList);
historyList = new ArrayList<>();
loadHistory();
backHeader.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(HistoryAttendance.this, Home.class));
finish();
}
});
}
private void loadHistory() {
final ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setVisibility(View.VISIBLE);
//FirebaseUser user = mAuth.getInstance().getCurrentUser();
final String userID = userFirebase.getUid();
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("history").child(userID);
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
historyList.clear();
for (DataSnapshot ds : dataSnapshot.getChildren()) {
Attendance modelPost = ds.getValue(Attendance.class);
modelPost.setDate(getDate(Long.parseLong(modelPost.getTime())));
modelPost.setTime(getTime(Long.parseLong(modelPost.getTime())));
locationList.add(Double.parseDouble(modelPost.getLat()));
locationList.add(Double.parseDouble(modelPost.getLng()));
modelPost.setStrLoc(getLoc(modelPost.getLat(), modelPost.getLng()));
modelPost.setLat(modelPost.getLat() + (char) 0x00B0 + " E");
modelPost.setLng(modelPost.getLng() + (char) 0x00B0 + " N");
historyList.add(modelPost);
}
Collections.reverse(historyList);
attendanceAdapter = new AttendanceAdapter(historyList, getApplicationContext());
listView.setAdapter(attendanceAdapter);
if(historyList.size() == 0)
relNoList.setVisibility(View.VISIBLE);
progressBar.setVisibility(View.INVISIBLE);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(HistoryAttendance.this, "Data Error" + databaseError.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
private void refreshPage(){
finish();
startActivity(new Intent(this, HistoryAttendance.class));
}
private String getLoc(String Lat, String Lng){
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = null;
try {
addresses = geocoder.getFromLocation(Double.parseDouble(Lat), Double.parseDouble(Lng),1);
} catch (IOException e) {
e.printStackTrace();
}
String address = addresses.get(0).getAddressLine(0);
return address;
}
private String getDate(long time) {
Calendar cal = Calendar.getInstance(Locale.ENGLISH);
cal.setTimeInMillis(time);
String date = DateFormat.format(" dd MMMM yyyy", cal).toString();
return date;
}
private String getTime(long time) {
Calendar cal = Calendar.getInstance(Locale.ENGLISH);
cal.setTimeInMillis(time);
String date = DateFormat.format("kk : mm : ss", cal).toString();
return date;
}
@Override
public void onBackPressed() {
super.onBackPressed();
startActivity(new Intent(this, Home.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK));
}
}

View File

@ -0,0 +1,58 @@
package com.project.ilsaenterprise;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.MenuItem;
import com.google.android.material.bottomnavigation.BottomNavigationView;
public class Home extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(getSupportActionBar() != null){
getSupportActionBar().hide();
}
setContentView(R.layout.activity_home);
BottomNavigationView layNav = findViewById(R.id.layoutNav);
layNav.setItemIconTintList(null);
layNav.setSelectedItemId(R.id.home);
layNav.setOnNavigationItemSelectedListener(navListener);
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new Dashboard()).commit();
}
private final BottomNavigationView.OnNavigationItemSelectedListener navListener = new BottomNavigationView.OnNavigationItemSelectedListener() {
@SuppressLint("NonConstantResourceId")
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = new Fragment();
switch (item.getItemId()) {
case R.id.navHome:
selectedFragment = new Dashboard();
break;
case R.id.navChat:
selectedFragment = new Chat();
break;
case R.id.navMap:
selectedFragment = new Geodata();
break;
case R.id.navMonitoring:
selectedFragment = new Monitoring();
break;
case R.id.navAccount:
selectedFragment = new Account();
break;
}
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, selectedFragment)
.commit();
return true;
}
};
}

View File

@ -0,0 +1,397 @@
package com.project.ilsaenterprise;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.cardview.widget.CardView;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.OnProgressListener;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.project.ilsaenterprise.adapter.MediaAdapter;
import com.thekhaeng.pushdownanim.PushDownAnim;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class KirimData extends AppCompatActivity {
private static final int REQUEST_GET_SINGLE_FILE = 101;
private static final int REQUEST_GET_MULTI_FILE = 102;
private Button btnCancel, btnSave, btnAddData, btnAddImage, btnAddPdf, btnAddExcel, btnAddWord;
//private FirebaseAuth mAuth;
private FirebaseStorage firebaseStorage;
private DatabaseReference dataRef;
private RelativeLayout relAdapter;
private LinearLayout linearLayoutGone;
private RecyclerView mMedia;
private RecyclerView.Adapter mMediaAdapter;
private RecyclerView.LayoutManager mMediaLayoutManager;
Uri pdfUri, wordUri, excelUri, kmlUri;
private String dataPilih;
private EditText judulEdit, deskripsiEdit;
ArrayList<String> mediaUriList = new ArrayList<>();
int PICK_DATA_INTENT = 1;
private HashMap<Object, String> uploadMap = new HashMap<>();
ProgressDialog progressDialog;
final Map urlMap = new HashMap<>();
FirebaseFirestore db;
String userUpload, extUpload;
private DatabaseReference userRef;
private TextView userTxt;
private GoogleSignInAccount googleLogin;
@SuppressLint("WrongConstant")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.Dark));
setContentView(R.layout.activity_kirim_data);
getSupportActionBar().hide();
googleLogin = GoogleSignIn.getLastSignedInAccount(getApplicationContext());
btnCancel = findViewById(R.id.btnCancel);
btnSave = findViewById(R.id.btnSave);
btnAddData = findViewById(R.id.btnAddData);
btnCancel.setBackgroundColor(Color.TRANSPARENT);
btnSave.setBackgroundColor(Color.TRANSPARENT);
relAdapter = findViewById(R.id.relativeLayoutAdapter);
linearLayoutGone = findViewById(R.id.LinearIntroGone);
judulEdit = findViewById(R.id.judulEdit);
deskripsiEdit = findViewById(R.id.deskripsiEdit);
userTxt = findViewById(R.id.userTxtLaporan);
// tambah file
mediaUriList = new ArrayList<>();
mMedia = findViewById(R.id.FileList);
mMedia.setNestedScrollingEnabled(false);
mMedia.setHasFixedSize(false);
mMediaLayoutManager = new LinearLayoutManager(getApplicationContext(), LinearLayout.HORIZONTAL, false);
mMedia.setLayoutManager(mMediaLayoutManager);
mMediaAdapter = new MediaAdapter(getApplicationContext(), mediaUriList);
mMedia.setAdapter(mMediaAdapter);
//mAuth = FirebaseAuth.getInstance();
firebaseStorage = FirebaseStorage.getInstance();
dataRef = FirebaseDatabase.getInstance().getReference();
db = FirebaseFirestore.getInstance();
userRef = FirebaseDatabase.getInstance().getReference().child("users");
retrieveData();
PushDownAnim.setPushDownAnimTo(btnAddData).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(ContextCompat.checkSelfPermission(KirimData.this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)
{
showAlertDialog(R.layout.layout_popup_jenisfile);
}else {
ActivityCompat.requestPermissions(KirimData.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 9);
}
}
});
PushDownAnim.setPushDownAnimTo(btnCancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(KirimData.this, WorkFromHome.class);
startActivity(intent);
finish();
}
});
PushDownAnim.setPushDownAnimTo(btnSave).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(pdfUri != null){{
uploadFile(pdfUri);
}
}else
Toast.makeText(KirimData.this, "Silahkan masukkan Data terlebih dahulu", Toast.LENGTH_SHORT).show();
}
});
}
private void retrieveData(){
//userUpload = googleLogin.getId();
userTxt.setText(googleLogin.getId());
}
private void uploadFile(Uri pdfUri) {
progressDialog = new ProgressDialog(this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setTitle("Mengunggah File...");
progressDialog.show();
Long tsLong = System.currentTimeMillis()/1000;
String ts = tsLong.toString();
String uid = googleLogin.getId();
String fileName = judulEdit.getText().toString();
String deskripsi = deskripsiEdit.getText().toString();
final StorageReference storageReference = firebaseStorage.getReference().child("UploadWFH").child(fileName);
UploadTask uploadTask = storageReference.putFile(pdfUri);
uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
storageReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
uploadMap.put("uid", uid);
uploadMap.put("nama", userTxt.getText().toString());
uploadMap.put("fileName", fileName);
uploadMap.put("timestamp", ts);
uploadMap.put("ekstensi", extUpload);
uploadMap.put("url", uri.toString());
uploadMap.put("deskripsi", deskripsi);
dataRef.child("UploadWfh").child(ts).setValue(uploadMap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()) {
Toast.makeText(KirimData.this, "File Telah di-Upload", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(KirimData.this, WorkFromHome.class);
startActivity(intent);
finish();
}
else
Toast.makeText(KirimData.this, "File Gagal di-Upload", Toast.LENGTH_SHORT).show();
}
});
Map<String, Object> todo = new HashMap<>();
todo.put("user_id", uid);
todo.put("title", fileName);
todo.put("desc", deskripsi);
todo.put("timestamp", ts);
db.collection("EndTodo").document(uid).collection("Laporan")
.document(ts)
.set(todo).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
db.collection("ToDoList")
.document(uid).collection("Laporan")
.document(ts)
.delete()
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(KirimData.this, "Task Selesai", Toast.LENGTH_SHORT).show();
}
});
}
});
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(KirimData.this, "File Gagal di-Upload", Toast.LENGTH_SHORT).show();
}
});
}
}).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(@NonNull UploadTask.TaskSnapshot snapshot) {
int currentProgress = (int) (100 * snapshot.getBytesTransferred()/snapshot.getTotalByteCount());
progressDialog.setProgress(currentProgress);
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 9 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
showAlertDialog(R.layout.layout_popup_jenisfile);
} else
Toast.makeText(KirimData.this, "Izinkan Aplikasi untuk mengakses penyimpanan", Toast.LENGTH_LONG).show();
}
private void showAlertDialog(int layout){
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(KirimData.this);
View layoutView = getLayoutInflater().inflate(layout, null);
//Button dialogButton = layoutView.findViewById(R.id.btnDialog);
CardView btnPdf, btnImage, btnDrone, btnWord, btnExcel, btnKml;
btnPdf = layoutView.findViewById(R.id.btnAddPdf);
btnImage = layoutView.findViewById(R.id.btnAddImage);
btnDrone = layoutView.findViewById(R.id.btnAddImageDrone);
btnWord = layoutView.findViewById(R.id.btnAddWord);
btnExcel = layoutView.findViewById(R.id.btnAddExcel);
btnKml = layoutView.findViewById(R.id.btnAddKml);
dialogBuilder.setView(layoutView);
final AlertDialog alertDialog = dialogBuilder.create();
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
alertDialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation;
alertDialog.show();
dataPilih = "";
extUpload = "";
btnPdf.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
String[] mimeTypes = {"application/pdf"};
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);
startActivityForResult(Intent.createChooser(intent, "Pilih File PDF"), REQUEST_GET_SINGLE_FILE);
dataPilih = "PDF";
extUpload = "pdf";
judulEdit.setEnabled(true);
deskripsiEdit.setEnabled(true);
alertDialog.dismiss();
}
});
btnImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
intent.setAction(intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Pilih Gambar (Maks 5)"), REQUEST_GET_MULTI_FILE);
deskripsiEdit.setEnabled(true);
dataPilih = "Image";
btnAddData.setVisibility(View.INVISIBLE);
linearLayoutGone.setVisibility(View.INVISIBLE);
relAdapter.setVisibility(View.VISIBLE);
alertDialog.dismiss();
}
});
btnDrone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
intent.setAction(intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Pilih Gambar (Maks 5)"), REQUEST_GET_SINGLE_FILE);
dataPilih = "Drone";
deskripsiEdit.setEnabled(true);
btnAddData.setVisibility(View.INVISIBLE);
linearLayoutGone.setVisibility(View.INVISIBLE);
relAdapter.setVisibility(View.VISIBLE);
alertDialog.dismiss();
}
});
btnWord.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
String[] mimeTypes = {"application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document"};
intent.setType("*/*");
dataPilih = "Word";
extUpload = "docx";
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);
startActivityForResult(Intent.createChooser(intent, "Pilih File Word"), REQUEST_GET_SINGLE_FILE);
judulEdit.setEnabled(true);
deskripsiEdit.setEnabled(true);
alertDialog.dismiss();
}
});
btnExcel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
String[] mimeTypes = {"application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"};
intent.setType("*/*");
dataPilih = "Excel";
extUpload = "xlsx";
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);
startActivityForResult(Intent.createChooser(intent, "Pilih File Excel"), REQUEST_GET_SINGLE_FILE);
judulEdit.setEnabled(true);
deskripsiEdit.setEnabled(true);
alertDialog.dismiss();
}
});
btnKml.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
String[] mimeTypes = {"application/vnd.google-earth.kml+xml"};
intent.setType("*/*");
dataPilih = "Kml";
extUpload = "kml";
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);
startActivityForResult(Intent.createChooser(intent, "Pilih File Kml"), REQUEST_GET_SINGLE_FILE);
judulEdit.setEnabled(true);
deskripsiEdit.setEnabled(true);
alertDialog.dismiss();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(dataPilih == "Image" || dataPilih == "Drone"){
mediaUriList.clear();
if(resultCode == RESULT_OK && requestCode == REQUEST_GET_MULTI_FILE){
if(requestCode == PICK_DATA_INTENT){
if(data.getClipData() == null){
mediaUriList.add(data.getData().toString());
}
else{
for(int i = 0; i < data.getClipData().getItemCount(); i++){
mediaUriList.add(data.getClipData().getItemAt(i).getUri().toString());
}
}
mMediaAdapter.notifyDataSetChanged();
}
}
}
else {
if(requestCode == REQUEST_GET_SINGLE_FILE && resultCode == RESULT_OK && data != null){
pdfUri = data.getData();
Toast.makeText(KirimData.this, "File telah dipilih", Toast.LENGTH_SHORT).show();
//judulEdit.setText(pdfUri.getLastPathSegment());
}
else
Toast.makeText(KirimData.this, "Silahkan masukkan Data terlebih dahulu", Toast.LENGTH_SHORT).show();
}
}
}

View File

@ -0,0 +1,34 @@
package com.project.ilsaenterprise;
import android.app.Activity;
import android.app.AlertDialog;
import android.view.LayoutInflater;
public class LoadingProgress {
Activity activity;
AlertDialog dialog;
LoadingProgress(Activity loginActivity){
activity = loginActivity;
}
void startLoadingDialog(){
if(activity != null){
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
LayoutInflater inflater = activity.getLayoutInflater();
builder.setView(inflater.inflate(R.layout.dialog_loading, null));
builder.setCancelable(false);
dialog = builder.create();
dialog.show();
}
}
void dismissDialog(){
if(activity != null){
dialog.dismiss();
}
}
}

View File

@ -0,0 +1,421 @@
package com.project.ilsaenterprise;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.location.LocationManager;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInClient;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;
import com.google.android.gms.common.api.ApiException;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthCredential;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.auth.GoogleAuthProvider;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.project.ilsaenterprise.account.CreateUser;
import com.project.ilsaenterprise.account.UserProfile;
import java.util.Calendar;
import java.util.Objects;
public class Login extends AppCompatActivity {
private static final String TAG = "Login";
private static final int RC_SIGN_IN = 123;
private DatabaseReference mDatabase;
private FirebaseAuth mAuth;
private EditText edtEmail;
private EditText edtPass;
private LinearLayout btnLogin;
private Button btnToRegister;
private SharedPref sharedPreference;
private boolean mLocationPermissionGranted = false;
public static final int PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION = 9002;
public static final int PERMISSIONS_REQUEST_ENABLE_GPS = 9003;
private static final int ERROR_DIALOG_REQUEST = 9001;
Context context;
Dialog dialog;
FirebaseUser userFirebase;
private TextView year;
private GoogleSignInClient mGoogleSignInClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
getSupportActionBar().hide();
mDatabase = FirebaseDatabase.getInstance().getReference();
mAuth = FirebaseAuth.getInstance();
btnLogin = findViewById(R.id.btnGoogle);
createRequest();
Calendar c = Calendar.getInstance();
int getYear = c.get(Calendar.YEAR);
year = findViewById(R.id.yearBottom);
year.setText(String.valueOf(getYear));
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
googleSignIn();
}
});
dialog = new Dialog(this);
sharedPreference = new SharedPref(this);
if(checkMapServices()){
if(mLocationPermissionGranted){
return;
}
else{
getLocationPermission();
}
}
//checkUser();
if(sharedPreference.getLogined()){
startActivity(new Intent(Login.this, Home.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK));
finish();
}
}
private void googleSignIn() {
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, RC_SIGN_IN);
}
private void createRequest(){
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.GAuth))
.requestEmail()
.build();
mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
try {
GoogleSignInAccount account = task.getResult(ApiException.class);
Log.d(TAG, "1");
Log.d(TAG, "firebaseAuthWithGoogle:" + account.getId());
Log.d(TAG, "2");
firebaseAuthWithGoogle(account.getIdToken());
Log.d(TAG, "3");
} catch (ApiException e) {
Log.w(TAG, "Google sign in failed", e);
}
}
}
private void firebaseAuthWithGoogle(String idToken) {
AuthCredential credential = GoogleAuthProvider.getCredential(idToken, null);
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Log.d(TAG, "signInWithCredential:success");
checkUser();
} else {
Log.w(TAG, "signInWithCredential:failure", task.getException());
}
}
});
}
public boolean checkUser(){
DatabaseReference firebaseDatabase = FirebaseDatabase.getInstance().getReference("users");
FirebaseUser userId = mAuth.getCurrentUser();
firebaseDatabase.child(userId.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.exists()){
startActivity(new Intent(Login.this, Home.class));
finish();
}
else
startActivity(new Intent(Login.this, CreateUser.class));
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(getBaseContext(), "Data Error" + error.getMessage(), Toast.LENGTH_LONG).show();
}
});
return true;
}
public void openHome(){
Intent intent = new Intent(this, Home.class);
startActivity(intent);
}
@Override
protected void onStart() {
super.onStart();
userFirebase = mAuth.getCurrentUser();
if(userFirebase != null){
startActivity(new Intent(this, Home.class));
finish();
}
}
private void verifyGmail(){
userFirebase.sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Log.d(TAG, "Email terkirim.");
}
}
});
}
private void signIn() {
getLocationPermission();
if(validateForm()){
if(mLocationPermissionGranted){
dialog.dismiss();
final String email = edtEmail.getText().toString();
String password = edtPass.getText().toString();
mAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d(TAG, "signIn:onComplete:" + task.isSuccessful());
//hideProgressDialog();
if (task.isSuccessful()) {
onAuthSuccess(task.getResult().getUser());
sharedPreference.saveString(sharedPreference.name, email);
sharedPreference.saveBoolean(sharedPreference.logined, true);
finish();
} else {
loadingProgress.dismissDialog();
Toast.makeText(Login.this, "Email/Password Salah!",
Toast.LENGTH_SHORT).show();
}
}
});
}
else {
loadingProgress.dismissDialog();
showNewDialog();
}
}
else {
loadingProgress.dismissDialog();
}
//showProgressDialog();
}
@Override
protected void onResume() {
super.onResume();
// if(mLocationPermissionGranted == false){
// getLocationPermission();
// }
// else
// return;
}
private void showNewDialog(){
dialog.setContentView(R.layout.layout_gps_permission);
Objects.requireNonNull(dialog.getWindow()).setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
Button btnIjin = dialog.findViewById(R.id.btnIjin);
btnIjin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
if(mLocationPermissionGranted){
getLocationPermission();
}
else {
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);
}
}
});
dialog.show();
}
private void getLocationPermission() {
if(!mLocationPermissionGranted){
if (ContextCompat.checkSelfPermission(this.getApplicationContext(),
android.Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
mLocationPermissionGranted = true;
} else {
ActivityCompat.requestPermissions(this, new String[]{
android.Manifest.permission.ACCESS_FINE_LOCATION},
PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION);
}
}
}
private void signUp() {
Log.d(TAG, "signUp");
if (!validateForm()) {
loadingProgress.dismissDialog();
return;
}
String email = edtEmail.getText().toString();
String password = edtPass.getText().toString();
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
onAuthSuccess(task.getResult().getUser());
} else {
loadingProgress.dismissDialog();
Toast.makeText(Login.this, "Sign Up Failed",
Toast.LENGTH_SHORT).show();
}
}
});
}
private void onAuthSuccess(FirebaseUser user) {
startActivity(new Intent(Login.this, Home.class));
loadingProgress.dismissDialog();
finish();
}
private String usernameFromEmail(String email) {
if (email.contains("@")) {
return email.split("@")[0];
} else {
return email;
}
}
private boolean validateForm() {
boolean result = true;
if (TextUtils.isEmpty(edtEmail.getText().toString())) {
edtEmail.requestFocus();
edtEmail.setError("Harus Diisi");
result = false;
} else {
edtEmail.setError(null);
}
if (TextUtils.isEmpty(edtPass.getText().toString())) {
edtPass.requestFocus();
edtPass.setError("Harus Diisi");
result = false;
} else {
edtPass.setError(null);
}
return result;
}
LoadingProgress loadingProgress = new LoadingProgress(Login.this);
private boolean checkMapServices(){
if(isServicesOK()){
if(isMapsEnabled()){
return true;
}
}
return false;
}
public boolean isMapsEnabled(){
final LocationManager manager = (LocationManager) getSystemService( Context.LOCATION_SERVICE );
if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
buildAlertMessageNoGps();
return false;
}
return true;
}
private void buildAlertMessageNoGps() {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Mengaktifkan Perangkat GPS")
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(@SuppressWarnings("unused") final DialogInterface dialog, @SuppressWarnings("unused") final int id) {
Intent enableGpsIntent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(enableGpsIntent, PERMISSIONS_REQUEST_ENABLE_GPS);
}
});
final AlertDialog alert = builder.create();
alert.show();
}
public boolean isServicesOK(){
int available = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(Login.this);
if(available == ConnectionResult.SUCCESS){
return true;
}
else if(GoogleApiAvailability.getInstance().isUserResolvableError(available)){
Dialog dialog = GoogleApiAvailability.getInstance().getErrorDialog(Login.this, available, ERROR_DIALOG_REQUEST);
dialog.show();
}else{
Toast.makeText(this, "You can't make map requests", Toast.LENGTH_SHORT).show();
}
return false;
}
}

View File

@ -0,0 +1,76 @@
package com.project.ilsaenterprise;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.google.firebase.auth.FirebaseAuth;
import java.io.File;
import java.util.Calendar;
public class LoginBatal extends AppCompatActivity {
private TextView year;
private RelativeLayout btnLogout;
SharedPref sharedPreference;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.Dark));
setContentView(R.layout.activity_login_batal);
getSupportActionBar().hide();
Calendar c = Calendar.getInstance();
int getYear = c.get(Calendar.YEAR);
sharedPreference = new SharedPref(this);
mAuth = FirebaseAuth.getInstance();
btnLogout = findViewById(R.id.keluarBtn);
year = findViewById(R.id.yearBottom);
year.setText(String.valueOf(getYear));
btnLogout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAuth.signOut();
deleteCache(LoginBatal.this);
//sharedPreference.saveSPBoolean(SharedPreference.SP_SUDAH_LOGIN, false);
startActivity(new Intent(LoginBatal.this, Login.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK));
}
});
}
public static void deleteCache(Context context) {
try {
File dir = context.getCacheDir();
deleteDir(dir);
} catch (Exception e) { e.printStackTrace();}
}
public static boolean deleteDir(File dir) {
if (dir != null && dir.isDirectory()) {
String[] children = dir.list();
int i = 0;
while (i < children.length) {
boolean success = deleteDir(new File(dir, children[i]));
if (!success) {
return false;
}
i++;
}
}
assert dir != null;
return dir.delete();
}
}

View File

@ -0,0 +1,642 @@
package com.project.ilsaenterprise;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.hardware.fingerprint.FingerprintManager;
import android.location.Location;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.FragmentActivity;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.model.MapStyleOptions;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.project.ilsaenterprise.models.Attendance;
import com.project.ilsaenterprise.models.Employees;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.Polygon;
import com.google.android.gms.maps.model.PolygonOptions;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
public class MapActivity extends FragmentActivity implements OnMapReadyCallback {
private static final String TAG = "MapActivity";
private static final String FINE_LOCATION = Manifest.permission.ACCESS_FINE_LOCATION;
private static final String COURSE_LOCATION = Manifest.permission.ACCESS_COARSE_LOCATION;
private static final int LOCATION_PERMISSION_REQUEST_CODE = 1234;
private static final int PLAY_SERVICE_RESOLUTION_REQUEST = 4799;
private static final float DEFAULT_ZOOM = 16.5f;
private static final int ERROR_DIALOG_REQUEST = 9001;
//vars
private Boolean mLocationPermissionsGranted = false;
private GoogleMap mMap;
CheckBox checkBox;
SeekBar seekRed, seekGreen, seekBlue;
Button btDraw;
RelativeLayout btClear;
FusedLocationProviderClient mFusedLocationProviderClient;
FloatingActionButton onLocation;
Location currentLocation;
Employees employees;
private FirebaseDatabase mFirebaseDatabase;
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
DatabaseReference databaseReference;
private static int UPDATE_INTERVAL = 5000;
private static int FASTEST_INTERVAL = 3000;
private static int DISPLACEMENT = 10;
private MapView mapView;
Boolean cek;
Polygon polygon = null;
ArrayList<String> latLngList = new ArrayList<>();
List<Marker> markerList = new ArrayList<>();
ArrayList<String> geoPosition = new ArrayList<>();
private String currentDate = new SimpleDateFormat("dd MMMM yyyy", Locale.getDefault()).format(new Date());//Untuk Database jgn diganti format
private TextView textView, txtInfo;
private ImageView imageView;
private FingerprintManager fingerprintManager;
private FingerprintManager.AuthenticationCallback authenticationCallback;
DatabaseReference historyRef;
private Button startScanBtn;
final String timeStamp = String.valueOf(System.currentTimeMillis());
private String lat, lng;
private BottomSheetDialog bottomSheetDialog;
private DatabaseReference checkAttendanceRef = FirebaseDatabase.getInstance().getReference().child("attendance").child(currentDate);
private DatabaseReference userPhotoRef;
Task location;
private DatabaseReference checkAttendance;
private GoogleSignInAccount googleLogin;
private FirebaseAuth userAuth;
private FirebaseUser userFirebase;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.Dark));
setContentView(R.layout.activity_map);
googleLogin = GoogleSignIn.getLastSignedInAccount(getApplicationContext());
userAuth = FirebaseAuth.getInstance();
userFirebase = userAuth.getCurrentUser();
getLocationPermission();
checkAtt();
btDraw = findViewById(R.id.bt_draw);
btClear = findViewById(R.id.bt_clear);
userPhotoRef = FirebaseDatabase.getInstance().getReference().child("usersPhoto");
checkAttendance = FirebaseDatabase.getInstance().getReference("attendanceWFH").child(currentDate);
textView = findViewById(R.id.textScanner);
bottomSheetDialog = new BottomSheetDialog(
MapActivity.this, R.style.BottomSheetDialogTheme
);
employees = new Employees();
btDraw.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
checkAttendance.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.hasChild("Check In")){
if(snapshot.child("Check In").hasChild(userFirebase.getUid())){
Toast.makeText(getBaseContext(), "Anda sedang WFH", Toast.LENGTH_LONG).show();
}
}
else {
View bottomSheetView = LayoutInflater.from(getApplicationContext())
.inflate(
R.layout.layout_popup_fingerprint,
(LinearLayout)findViewById(R.id.bottomSheetContainer)
);
startScan();
fingerprintManager.authenticate(null, null, 0, authenticationCallback, null);
// bottomSheetView.findViewById(R.id.buttonScanner).setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
//
// }
// });
bottomSheetDialog.setContentView(bottomSheetView);
bottomSheetDialog.show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
// Intent intent = new Intent(MapActivity.this, FingerAuth.class);
// intent.putExtra("geoPosition", latLngList);
// startActivity(intent);
// finish();
// Log.d(TAG, "Nama : " + userID);
// writeNewAdmin(user.getUid(), latitude, longitude);
}
});
btClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getLocationPermission();
}
});
}
@Override
protected void onStart() {
super.onStart();
if(isServicesOK()){
initMap();
getLocationPermission();
}
}
@Override
public void onBackPressed() {
super.onBackPressed();
startActivity(new Intent(MapActivity.this, Home.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK));
finish();
}
@Override
public void onDestroy()
{
Log.e(TAG, "onDestroy");
super.onDestroy();
currentLocation = null;
mMap.clear();
mMap.setLocationSource(null);
}
private void clockCheck()
{
Thread t = new Thread() {
@Override
public void run() {
try {
while (!isInterrupted()) {
Thread.sleep(1000);
runOnUiThread(new Runnable() {
@Override
public void run() {
TextView thour = findViewById(R.id.textHour);
long date = System.currentTimeMillis();
SimpleDateFormat adf = new SimpleDateFormat("kk : mm : ss");
String hourString = adf.format(date);
thour.setText(hourString);
}
});
}
} catch (InterruptedException e) {
}
}
};
t.start();
}
private void checkAtt()
{
//final FirebaseUser user = mAuth.getInstance().getCurrentUser();
final String userID = userFirebase.getUid();
final TextView checkUser = (TextView) findViewById(R.id.checkKehadiran);
final TextView textIO = findViewById(R.id.textInOut);
cek = false;
checkAttendanceRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//long count= dataSnapshot.getChildrenCount();
if(!dataSnapshot.child("Check In").hasChild(userID)){
checkUser.setText("Belum Tapping");
textIO.setText("Jam Masuk");
btDraw.setText("Check In");
btDraw.setEnabled(true);
clockCheck();
cek = false;
}
else if(!dataSnapshot.child("Check Out").hasChild(userID)){
checkUser.setText("Sedang Bekerja");
textIO.setText("Jam Keluar");
btDraw.setText("Check Out");
clockCheck();
cek = false;
}
else{
checkUser.setText("Absensi Selesai");
textIO.setText("Durasi Kerja Hari ini");
btDraw.setText("Terima Kasih");
startTime();
checkUser.setTextColor(getResources().getColor(R.color.Yellow));
cek = true;
btDraw.setEnabled(false);
btClear.setEnabled(false);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void startTime(){
//final FirebaseUser user = mAuth.getInstance().getCurrentUser();
final String userID = userFirebase.getUid();
checkAttendanceRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Attendance history = dataSnapshot.child("Check In").child(userID).getValue(Attendance.class);
Attendance history2 = dataSnapshot.child("Check Out").child(userID).getValue(Attendance.class);
String firstTime = getTime(Long.parseLong(history.getTime()));
String endtime = getTime(Long.parseLong(history2.getTime()));
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
Date start, end;
try{
start = format.parse(firstTime);
end = format.parse(endtime);
long diff = end.getTime() - start.getTime();
long diffSeconds = diff / 1000 % 60;
long diffMinutes = diff / (60 * 1000) % 60;
long diffHour = diff / (60 * 60 * 1000) % 24;
TextView totalWork = findViewById(R.id.textHour);
totalWork.setTextSize(20);
totalWork.setText(diffHour + " Jam " + diffMinutes + " Menit " + diffSeconds + " Detik");
}catch (Exception e){
e.printStackTrace();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
private String getTime(long time) {
Calendar cal = Calendar.getInstance(Locale.ENGLISH);
cal.setTimeInMillis(time);
String date = DateFormat.format("HH:mm:ss", cal).toString();
return date;
}
private void moveCamera(LatLng latLng, float zoom){
Log.d(TAG, "moveCamera: moving the camera to: lat: " + latLng.latitude + ", lng: " + latLng.longitude );
//LatLng markerLoc = new LatLng(latLng.latitude, latLng.longitude);
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoom));
mMap.clear();
}
public boolean isServicesOK(){
int available = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(MapActivity.this);
if(available == ConnectionResult.SUCCESS){
return true;
}
else if(GoogleApiAvailability.getInstance().isUserResolvableError(available)){
Dialog dialog = GoogleApiAvailability.getInstance().getErrorDialog(MapActivity.this, available, ERROR_DIALOG_REQUEST);
dialog.show();
}else{
// Toast.makeText(this, "You can't make map requests", Toast.LENGTH_SHORT).show();
}
return false;
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.isIndoorEnabled();
try {
boolean success = googleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(this, R.raw.new_map));
if(!success){
return;
}
}catch (Resources.NotFoundException e){
Log.e(TAG, "Error", e);
}
if (mLocationPermissionsGranted) {
getDeviceLocation();
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
mMap.setMyLocationEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(false);
}
}
public boolean pointInPolygon(LatLng point) {
// ray casting alogrithm http://rosettacode.org/wiki/Ray-casting_algorithm
PolygonOptions recOptions = new PolygonOptions().add(
new LatLng(3.580267, 98.678713),
new LatLng(3.579716, 98.679239),
new LatLng(3.580605, 98.680253),
new LatLng(3.581103, 98.679679),
new LatLng(3.580267, 98.678713));
polygon = mMap.addPolygon(recOptions);
polygon.setFillColor(0x7F00FF00);
int crossings = 0;
List<LatLng> path = polygon.getPoints();
path.remove(path.size()-1); //remove the last point that is added automatically by getPoints()
// for each edge
for (int i=0; i < path.size(); i++) {
LatLng a = path.get(i);
int j = i + 1;
//to close the last edge, you have to take the first point of your polygon
if (j >= path.size()) {
j = 0;
}
LatLng b = path.get(j);
if (rayCrossesSegment(point, a, b)) {
crossings++;
}
}
// odd number of crossings?
return (crossings % 2 == 1);
}
public boolean rayCrossesSegment(LatLng point, LatLng a, LatLng b) {
// Ray Casting algorithm checks, for each segment, if the point is 1) to the left of the segment and 2) not above nor below the segment. If these two conditions are met, it returns true
double px = point.longitude,
py = point.latitude,
ax = a.longitude,
ay = a.latitude,
bx = b.longitude,
by = b.latitude;
if (ay > by) {
ax = b.longitude;
ay = b.latitude;
bx = a.longitude;
by = a.latitude;
}
// alter longitude to cater for 180 degree crossings
if (px < 0 || ax <0 || bx <0) { px += 360; ax+=360; bx+=360; }
// if the point has the same latitude as a or b, increase slightly py
if (py == ay || py == by) py += 0.00000001;
// if the point is above, below or to the right of the segment, it returns false
if ((py > by || py < ay) || (px > Math.max(ax, bx))){
return false;
}
// if the point is not above, below or to the right and is to the left, return true
else if (px < Math.min(ax, bx)){
return true;
}
// if the two above conditions are not met, you have to compare the slope of segment [a,b] (the red one here) and segment [a,p] (the blue one here) to see if your point is to the left of segment [a,b] or not
else {
double red = (ax != bx) ? ((by - ay) / (bx - ax)) : Double.POSITIVE_INFINITY;
double blue = (ax != px) ? ((py - ay) / (px - ax)) : Double.POSITIVE_INFINITY;
return (blue >= red);
}
}
private void getDeviceLocation(){
mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
try{
if(mLocationPermissionsGranted){
//&& task.getResult() != null
location = mFusedLocationProviderClient.getLastLocation();
location.addOnCompleteListener(new OnCompleteListener() {
@SuppressLint("SetTextI18n")
@Override
public void onComplete(@NonNull Task task) {
if(task.isSuccessful() && task.getResult() != null){
currentLocation = (Location) task.getResult();
moveCamera(new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude()), DEFAULT_ZOOM);
MarkerOptions marker = new MarkerOptions().position(new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude()));
//mMap.addMarker(marker);
boolean isPoint = pointInPolygon(new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude()));
databaseReference = FirebaseDatabase.getInstance().getReference("kebun");
String newLat = String.valueOf(currentLocation.getLatitude());
String newLng = String.valueOf(currentLocation.getLongitude());
latLngList.add(newLat);
latLngList.add(newLng);
if(isPoint && cek != true){
btDraw.setText("Check In");
btDraw.setEnabled(true);
Toast.makeText(MapActivity.this, "Anda didalam lokasi", Toast.LENGTH_SHORT).show();
}
else if(!isPoint && cek != true){
btDraw.setText("Tidak dilokasi");
btDraw.setEnabled(true);
}
else if(cek == true){
btDraw.setEnabled(false);
}
} else{
Toast.makeText(MapActivity.this, "Pencarian Titik Gagal", Toast.LENGTH_SHORT).show();
mFusedLocationProviderClient.getLastLocation();
}
}
});
}
}catch (SecurityException e){
Log.e(TAG, "getDeviceLocation: SecurityException: " + e.getMessage() );
}
}
private void initMap(){
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapView);
assert mapFragment != null;
mapFragment.getMapAsync(MapActivity.this);
}
private void getLocationPermission(){
String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION};
if(ContextCompat.checkSelfPermission(this.getApplicationContext(),
FINE_LOCATION) == PackageManager.PERMISSION_GRANTED){
if(ContextCompat.checkSelfPermission(this.getApplicationContext(),
COURSE_LOCATION) == PackageManager.PERMISSION_GRANTED)
{
mLocationPermissionsGranted = true;
initMap();
}else{
ActivityCompat.requestPermissions(this,
permissions,
LOCATION_PERMISSION_REQUEST_CODE);
}
}else{
ActivityCompat.requestPermissions(this,
permissions,
LOCATION_PERMISSION_REQUEST_CODE);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
mLocationPermissionsGranted = false;
if (requestCode == LOCATION_PERMISSION_REQUEST_CODE) {
if (grantResults.length > 0) {
for (int grantResult : grantResults) {
if (grantResult != PackageManager.PERMISSION_GRANTED) {
mLocationPermissionsGranted = false;
return;
}
}
mLocationPermissionsGranted = true;
//initialize our map
initMap();
}
}
}
private void startScan(){
fingerprintManager = (FingerprintManager) getSystemService(FINGERPRINT_SERVICE);
authenticationCallback = new FingerprintManager.AuthenticationCallback() {
@Override
public void onAuthenticationError(int errorCode, CharSequence errString) {
//textView.setText("Error");
//Toast.makeText(MapActivity.this, "Otentikasi Error", Toast.LENGTH_LONG).show();
// imageView.setImageResource(R.drawable.image2);
super.onAuthenticationError(errorCode, errString);
}
@Override
public void onAuthenticationHelp(int helpCode, CharSequence helpString) {
//textView.setText("Help");
// imageView.setImageResource(R.drawable.image1);
super.onAuthenticationHelp(helpCode, helpString);
}
//private String currentDate = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(new Date());
//
@Override
public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {
super.onAuthenticationSucceeded(result);
// textView.setText( "Otentikasi Berhasil");
// imageView.setImageResource(R.drawable.image3);
//FirebaseUser user = mAuth.getInstance().getCurrentUser();
final String userID = userFirebase.getUid();
final String currentDate = new SimpleDateFormat("dd MMMM yyyy", Locale.getDefault()).format(new Date());
databaseReference = FirebaseDatabase.getInstance().getReference("attendance");
historyRef = FirebaseDatabase.getInstance().getReference("history");
databaseReference.child(currentDate).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(!dataSnapshot.child("Check In").hasChild(userID)){
Attendance attendance = new Attendance(userID, timeStamp, "Masuk", "-", latLngList.get(0), latLngList.get(1));
databaseReference.child(currentDate).child("Check In").child(userID).setValue(attendance);
historyRef.child(userID).child(timeStamp).setValue(attendance);
}
else if (!dataSnapshot.child("Check Out").hasChild(userID)){
Attendance attendance = new Attendance(userID, timeStamp, "Keluar", "-", latLngList.get(0), latLngList.get(1));
databaseReference.child(currentDate).child("Check Out").child(userID).setValue(attendance);
historyRef.child(userID).child(timeStamp).setValue(attendance);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
bottomSheetDialog.dismiss();
Toast.makeText(MapActivity.this, "Otentikasi Berhasil", Toast.LENGTH_LONG).show();
Intent intent = new Intent(MapActivity.this, HistoryAttendance.class);
startActivity(intent);
finish();
}
@Override
public void onAuthenticationFailed() {
Toast.makeText(MapActivity.this, "Otentikasi Gagal", Toast.LENGTH_LONG).show();
super.onAuthenticationFailed();
}
};
}
public void scannerButton(View view){
}
}

View File

@ -0,0 +1,112 @@
package com.project.ilsaenterprise;
import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.cardview.widget.CardView;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.project.ilsaenterprise.monitoring.HistoryMonitoring;
import com.project.ilsaenterprise.monitoring.ListData;
import com.project.ilsaenterprise.monitoring.MainBeacon;
import com.project.ilsaenterprise.monitoring.Upload;
public class Monitoring extends Fragment {
private ProgressBar mProgressBar;
private CardView BtnUpload, BtnList, BtnHistory, BtnRule;
private RelativeLayout btnUploadPlant, btnListPlant, btnHistoryPlant, btnBeacon , btnDrone, btnIdentifySeed, btnUploadSeed, btnListSeed, btnHistorySeed, btnIrrigation, btnIdentify, btnProgress, btnSample;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View root = inflater.inflate(R.layout.fragment_monitoring, container, false);
getActivity().getWindow().setStatusBarColor(ContextCompat.getColor(getContext(), R.color.Dark));
((AppCompatActivity) getActivity()).getSupportActionBar().hide();
mProgressBar = root.findViewById(R.id.progress_bar);
btnUploadPlant = root.findViewById(R.id.btnUploadPlant);
btnListPlant = root.findViewById(R.id.btnListPlant);
btnHistoryPlant = root.findViewById(R.id.btnHistoryPlant);
btnBeacon = root.findViewById(R.id.btnBeacon);
btnDrone = root.findViewById(R.id.btnDrone);
btnIdentifySeed = root.findViewById(R.id.btnSeed);
btnUploadSeed = root.findViewById(R.id.btnReportSeed);
btnListSeed = root.findViewById(R.id.btnListSeed);
btnHistorySeed = root.findViewById(R.id.btnHistorySeed);
btnIrrigation = root.findViewById(R.id.btnIrrigation);
btnIdentify = root.findViewById(R.id.btnIdentify);
btnProgress = root.findViewById(R.id.btnProgress);
btnSample = root.findViewById(R.id.btnSample);
btnUploadPlant.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Change background color
Intent intent = new Intent(Monitoring.this.getActivity(), Upload.class);
startActivity(intent);
}
});
btnListPlant.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Monitoring.this.getActivity(), ListData.class);
startActivity(intent);
}
});
btnHistoryPlant.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Monitoring.this.getActivity(), HistoryMonitoring.class);
startActivity(intent);
}
});
btnBeacon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(Monitoring.this.getActivity(), MainBeacon.class));
}
});
btnIdentify.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(Monitoring.this.requireContext(), "UI On Progress.", Toast.LENGTH_SHORT).show();
}
});
btnProgress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(Monitoring.this.requireContext(), "UI On Progress.", Toast.LENGTH_SHORT).show();
}
});
btnSample.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(Monitoring.this.requireContext(), "UI On Progress.", Toast.LENGTH_SHORT).show();
}
});
return root;
}
}

View File

@ -0,0 +1,120 @@
package com.project.ilsaenterprise;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
public class OpenNewsActivity extends AppCompatActivity {
private WebView mWebView;
private LinearLayout tbTop;
String url = "https://www.google.com";
@SuppressLint("SetJavaScriptEnabled")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_open_news);
getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.Dark));
getSupportActionBar().hide();
//android toolbar
// setupToolbar();
// mProgressBar = findViewById(R.id.progress_bar);
tbTop = findViewById(R.id.tbTop);
// mProgressBar.setMax(100);
url = getIntent().getStringExtra("url");
mWebView = findViewById(R.id.read_news);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl(url);
// mProgressBar.setProgress(0);
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String newUrl) {
view.loadUrl(newUrl);
// mProgressBar.setProgress(0);
return true;
}
@Override
public void onPageStarted(WebView view, String urlStart, Bitmap favicon) {
//mProgressBar.setProgress(0);
url = urlStart;
invalidateOptionsMenu();
}
@Override
public void onPageFinished(WebView view, String urlPage) {
// mProgressBar.setVisibility(View.GONE);
tbTop.setVisibility(LinearLayout.GONE);
invalidateOptionsMenu();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_open_news, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.share) {//share news
shareUrl(url);
}
return super.onOptionsItemSelected(item);
}
//back pressed
@Override
public void onBackPressed() {
if (mWebView.canGoBack()) {
mWebView.goBack();
} else {
super.onBackPressed();
}
}
//setup toolbar
// private void setupToolbar() {
// Toolbar toolbar = findViewById(R.id.tbOpenNews);
// setSupportActionBar(toolbar);
// getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// toolbar.setNavigationOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// if (mWebView.canGoBack()) {
// mWebView.goBack();
// } else {
// finish();
// }
// }
// });
// }
//share news
private void shareUrl(String url) {
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("text/plain");
share.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
share.putExtra(Intent.EXTRA_TEXT, url);
startActivity(Intent.createChooser(share, "Bagikan ke : "));
}
}

View File

@ -0,0 +1,161 @@
package com.project.ilsaenterprise;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.pm.PackageManager;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;
import java.util.Locale;
public class QuestWfh extends AppCompatActivity {
private static final String TAG = "Location";
TextView tvDay, tvLoc, tvMonth;
private LocationManager locationManager;
private FusedLocationProviderClient mFusedLocationProviderClient;
Task location;
private static final int ERROR_DIALOG_REQUEST = 9001;
private Boolean mLocationPermissionsGranted = false;
private static final String FINE_LOCATION = Manifest.permission.ACCESS_FINE_LOCATION;
private static final String COURSE_LOCATION = Manifest.permission.ACCESS_COARSE_LOCATION;
private static final int LOCATION_PERMISSION_REQUEST_CODE = 1234;
private static Location currentLocation;
private RecyclerView rvMainTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quest_wfh);
getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.Dark));
getSupportActionBar().hide();
initialization();
getLocationPermission();
getDeviceLocation();
currentDate();
}
private void getStaggered(){
// rvMainTask.setAdapter(new TaskAdapter(bitmaps));
StaggeredGridLayoutManager mLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
rvMainTask.setLayoutManager(mLayoutManager);
}
private void initialization(){
tvDay = findViewById(R.id.tvDayWfh);
tvMonth = findViewById(R.id.tvMonthWfh);
tvLoc = findViewById(R.id.tvLocationWfh);
rvMainTask = findViewById(R.id.rvMainTask);
}
private void getDeviceLocation(){
mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
try{
if(mLocationPermissionsGranted){
location = mFusedLocationProviderClient.getLastLocation();
location.addOnCompleteListener(new OnCompleteListener() {
@SuppressLint("SetTextI18n")
@Override
public void onComplete(@NonNull Task task) {
if(task.isSuccessful() && task.getResult() != null){
currentLocation = (Location) task.getResult();
Geocoder geocoder = new Geocoder(getBaseContext(), Locale.getDefault());
List<Address> addresses = null;
try {
addresses = geocoder.getFromLocation(currentLocation.getLatitude(), currentLocation.getLongitude(),1);
} catch (IOException e) {
e.printStackTrace();
}
String address = addresses.get(0).getAddressLine(0);
if(address != null)
tvLoc.setText(address);
else {
tvLoc.setText("Lokasi tidak ditemukan");
}
} else{
Toast.makeText(getBaseContext(), "Pencarian Titik Gagal", Toast.LENGTH_SHORT).show();
mFusedLocationProviderClient.getLastLocation();
}
}
});
}
}catch (SecurityException e){
Log.e(TAG, "getDeviceLocation: SecurityException: " + e.getMessage() );
}
}
private void currentDate(){
Calendar calDate = Calendar.getInstance();
SimpleDateFormat currentDay = new SimpleDateFormat("dd");
SimpleDateFormat currentMonth = new SimpleDateFormat("MMMM");
String day = currentDay.format(calDate.getTime());
String month = currentMonth.format(calDate.getTime());
tvDay.setText(day);
tvMonth.setText(month);
}
private void getLocationPermission(){
String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION};
if(ContextCompat.checkSelfPermission(this.getApplicationContext(),
FINE_LOCATION) == PackageManager.PERMISSION_GRANTED){
if(ContextCompat.checkSelfPermission(this.getApplicationContext(),
COURSE_LOCATION) == PackageManager.PERMISSION_GRANTED)
{
mLocationPermissionsGranted = true;
}else{
ActivityCompat.requestPermissions(this,
permissions,
LOCATION_PERMISSION_REQUEST_CODE);
}
}else{
ActivityCompat.requestPermissions(this,
permissions,
LOCATION_PERMISSION_REQUEST_CODE);
}
}
public boolean isServicesOK() {
int available = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(getBaseContext());
if (available == ConnectionResult.SUCCESS) {
return true;
} else if (GoogleApiAvailability.getInstance().isUserResolvableError(available)) {
Dialog dialog = GoogleApiAvailability.getInstance().getErrorDialog(QuestWfh.this, available, ERROR_DIALOG_REQUEST);
dialog.show();
} else {
Toast.makeText(getBaseContext(), "You can't make map requests", Toast.LENGTH_SHORT).show();
}
return false;
}
}

View File

@ -0,0 +1,47 @@
package com.project.ilsaenterprise;
import android.content.Context;
import android.content.SharedPreferences;
public class SharedPref {
public static final String sharedPref = "sharedPref";
public static final String name = "name";
public static final String email = "email";
public static final String logined = "login";
SharedPreferences sp;
SharedPreferences.Editor spEditor;
public SharedPref(Context context){
sp = context.getSharedPreferences(sharedPref, Context.MODE_PRIVATE);
spEditor = sp.edit();
}
public void saveString(String keySP, String value){
spEditor.putString(keySP, value);
spEditor.commit();
}
public void saveInt(String keySP, int value){
spEditor.putInt(keySP, value);
spEditor.commit();
}
public void saveBoolean(String keySP, boolean value){
spEditor.putBoolean(keySP, value);
spEditor.commit();
}
public String getName(){
return sp.getString(name, "");
}
public String getEmail(){
return sp.getString(email, "");
}
public Boolean getLogined(){
return sp.getBoolean(logined, false);
}
}

View File

@ -0,0 +1,130 @@
package com.project.ilsaenterprise;
import android.os.Bundle;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.model.LatLngBounds;
import com.project.ilsaenterprise.adapter.UserRecyclerAdapter;
import com.project.ilsaenterprise.models.UserChat;
import java.util.ArrayList;
public class UserListFragment extends Fragment{
private static final String TAG = "UserListFragment";
private static final String MAPVIEW_BUNDLE_KEY = "MapViewBundleKey";
//widgets
private RecyclerView mUserListRecyclerView;
//vars
private ArrayList<UserChat> mUserList = new ArrayList<>();
private UserRecyclerAdapter mUserRecyclerAdapter;
public static UserListFragment newInstance() {
return new UserListFragment();
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
final ArrayList<UserChat> users = getArguments().getParcelableArrayList(getString(R.string.intent_user));
mUserList.addAll(users);
}
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_user_list, container, false);
mUserListRecyclerView = view.findViewById(R.id.user_list_recycler_view);
initUserListRecyclerView();
return view;
}
private Handler mHandler = new Handler();
private Runnable mRunnable;
private static final int LOCATION_UPDATE_INTERVAL = 3000;
private void initUserListRecyclerView() {
mUserRecyclerAdapter = new UserRecyclerAdapter(mUserList);
mUserListRecyclerView.setAdapter(mUserRecyclerAdapter);
mUserListRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Bundle mapViewBundle = outState.getBundle(MAPVIEW_BUNDLE_KEY);
if (mapViewBundle == null) {
mapViewBundle = new Bundle();
outState.putBundle(MAPVIEW_BUNDLE_KEY, mapViewBundle);
}
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onStop() {
super.onStop();
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public void onLowMemory() {
super.onLowMemory();
}
}

View File

@ -0,0 +1,472 @@
package com.project.ilsaenterprise;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.cardview.widget.CardView;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import android.Manifest;
import android.animation.AnimatorSet;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.Handler;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.airbnb.lottie.LottieAnimationView;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.project.ilsaenterprise.models.Employees;
import com.thekhaeng.pushdownanim.PushDownAnim;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
public class WorkFromHome extends AppCompatActivity {
private TextView nameText, dateView, greetView, jabatanText, namaLengkapText, kebunText, nikText, totPegawai, roleText, masukTxt, keluarTxt, hitungHadirTxt, tvDay, tvLoc, tvMonth, tvDate;
private DatabaseReference userRef;
//private String currentUser;
//private FirebaseAuth mAuth;
private static final String TAG = "ILSA";
private static final int ERROR_DIALOG_REQUEST = 9001;
private DatabaseReference checkAttendance;
private Task location;
private Location currentLocation;
private FusedLocationProviderClient mFusedLocationProviderClient;
private Boolean mLocationPermissionsGranted = false;
private static final String FINE_LOCATION = Manifest.permission.ACCESS_FINE_LOCATION;
private static final String COURSE_LOCATION = Manifest.permission.ACCESS_COARSE_LOCATION;
private static final int LOCATION_PERMISSION_REQUEST_CODE = 1234;
private SwipeRefreshLayout swipeRefreshLayout;
private Boolean deviceLocated = false;
private GoogleSignInAccount googleLogin;
private FirebaseAuth mAuth;
private FirebaseUser userFirebase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_work_from_home);
getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.Dark));
getSupportActionBar().hide();
googleLogin = GoogleSignIn.getLastSignedInAccount(getApplicationContext());
mAuth = FirebaseAuth.getInstance();
userFirebase = mAuth.getCurrentUser();
Calendar calDate = Calendar.getInstance();
SimpleDateFormat currentDateFormat = new SimpleDateFormat("dd MMMM yyyy");
String currentDate = currentDateFormat.format(calDate.getTime());
checkAttendance = FirebaseDatabase.getInstance().getReference("attendance").child(currentDate);
userRef = FirebaseDatabase.getInstance().getReference().child("users");
CardView btnWfh = findViewById(R.id.btnAttendance);
swipeRefreshLayout = findViewById(R.id.refreshLay);
// dateView = (TextView) findViewById(R.id.dateWfh);
greetView = (TextView) findViewById(R.id.greeting_text);
// dateView.setText(currentDate);
Date dt = new Date();
int hours = dt.getHours();
int min = dt.getMinutes();
if(hours>=0 && hours<=11){
greetView.setText("Selamat Pagi");
}else if(hours>=11 && hours<=15 && min > 0){
greetView.setText("Selamat Siang");
}else if(hours>=15 && hours<=18 && min > 0){
greetView.setText("Selamat Sore");
}else if(hours>=18 && hours<=24 && min > 0){
greetView.setText("Selamat Malam");
}
nameText = (TextView) findViewById(R.id.text_user);
namaLengkapText = (TextView) findViewById(R.id.tvFullname);
jabatanText = (TextView) findViewById(R.id.tvJabatan);
kebunText = (TextView) findViewById(R.id.tvDivision);
nikText = (TextView) findViewById(R.id.tvNIP);
roleText = (TextView) findViewById(R.id.tvPhone);
masukTxt = findViewById(R.id.masukTv);
keluarTxt = findViewById(R.id.keluarTv);
hitungHadirTxt = findViewById(R.id.countHadir);
tvDay = findViewById(R.id.tvDayWfh);
tvMonth = findViewById(R.id.tvMonthWfh);
tvDate = findViewById(R.id.tvDateWfh);
tvLoc = findViewById(R.id.tvLoc);
//retrieveData();
getKeluar();
getMasuk();
getCountHari();
showCurrentDate();
getDeviceLocation();
CardView btnHistory = findViewById(R.id.history_btnwfh);
CardView btnAddTodos = findViewById(R.id.list_btnWfh);
CardView btnSendData = findViewById(R.id.send_btnWfh);
if(isServicesOK()){
PushDownAnim.setPushDownAnimTo(btnWfh).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
checkAttendance.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.hasChild("Check In")){
if(snapshot.child("Check In").hasChild(userFirebase.getUid())){
Toast.makeText(getBaseContext(), "Anda tidak sedang WFH", Toast.LENGTH_LONG).show();
}
}
else {
Intent intent = new Intent(WorkFromHome.this, AttendanceWfh.class);
startActivity(intent);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
});
}
else
isServicesOK();
PushDownAnim.setPushDownAnimTo(btnHistory).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(WorkFromHome.this, CheckKehadiranWfh.class);
startActivity(intent);
}
});
PushDownAnim.setPushDownAnimTo(btnAddTodos).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(WorkFromHome.this, QuestWfh.class);
startActivity(intent);
}
});
PushDownAnim.setPushDownAnimTo(btnSendData).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(WorkFromHome.this, KirimData.class);
startActivity(intent);
}
});
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
final Handler setDelay = new Handler();
setDelay.postDelayed(new Runnable() {
@Override
public void run() {
//retrieveData();
getKeluar();
getMasuk();
getCountHari();
getDeviceLocation();
if(deviceLocated = false)
Toast.makeText(getBaseContext(), "Koordinat Perangkat tidak ditemukan", Toast.LENGTH_SHORT).show();
swipeRefreshLayout.setRefreshing(false);
}
}, 2000);
//========
}
});
}
private void getLocationPermission(){
String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION};
if(ContextCompat.checkSelfPermission(this.getApplicationContext(),
FINE_LOCATION) == PackageManager.PERMISSION_GRANTED){
if(ContextCompat.checkSelfPermission(this.getApplicationContext(),
COURSE_LOCATION) == PackageManager.PERMISSION_GRANTED)
{
mLocationPermissionsGranted = true;
}else{
ActivityCompat.requestPermissions(this,
permissions,
LOCATION_PERMISSION_REQUEST_CODE);
}
}else{
ActivityCompat.requestPermissions(this,
permissions,
LOCATION_PERMISSION_REQUEST_CODE);
}
}
private void getDeviceLocation(){
getLocationPermission();
mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
try{
if(mLocationPermissionsGranted){
//&& task.getResult() != null
location = mFusedLocationProviderClient.getLastLocation();
location.addOnCompleteListener(new OnCompleteListener() {
@SuppressLint("SetTextI18n")
@Override
public void onComplete(@NonNull Task task) {
if(task.isSuccessful() && task.getResult() != null){
currentLocation = (Location) task.getResult();
if (currentLocation != null) {
Geocoder geocoder = new Geocoder(WorkFromHome.this, Locale.getDefault());
List<Address> addresses = null;
try {
addresses = geocoder.getFromLocation(currentLocation.getLatitude(), currentLocation.getLongitude(),1);
} catch (IOException e) {
e.printStackTrace();
}
String address = addresses.get(0).getAddressLine(0);
if(address != null){
tvLoc.setText(address);
deviceLocated = true;
}
else {
tvLoc.setText("Lokasi tidak ditemukan");
}
}
} else{
// Toast.makeText(getBaseContext(), "Pencarian Titik Gagal", Toast.LENGTH_SHORT).show();
mFusedLocationProviderClient.getLastLocation();
}
}
});
}
}catch (SecurityException e){
Log.e(TAG, "getDeviceLocation: SecurityException: " + e.getMessage() );
}
}
private void showCurrentDate(){
Calendar calDate = Calendar.getInstance();
SimpleDateFormat currentDay = new SimpleDateFormat("dd");
SimpleDateFormat currentMonth = new SimpleDateFormat("MMMM");
String day = currentDay.format(calDate.getTime());
String month = currentMonth.format(calDate.getTime());
getDay();
tvDay.setText(day);
tvMonth.setText(month);
}
private void getDay(){
Calendar calendar = Calendar.getInstance();
int day = calendar.get(Calendar.DAY_OF_WEEK);
switch (day) {
case Calendar.SUNDAY:
tvDate.setText("Minggu");
break;
case Calendar.MONDAY:
tvDate.setText("Senin");
break;
case Calendar.TUESDAY:
tvDate.setText("Selasa");
break;
case Calendar.WEDNESDAY:
tvDate.setText("Rabu");
break;
case Calendar.THURSDAY:
tvDate.setText("Kamis");
break;
case Calendar.FRIDAY:
tvDate.setText("Jumat");
break;
case Calendar.SATURDAY:
tvDate.setText("Sabtu");
break;
}
}
@Override
protected void onStart() {
super.onStart();
}
@Override
public void onBackPressed() {
super.onBackPressed();
startActivity(new Intent(WorkFromHome.this, Home.class));
finish();
}
private void getMasuk(){
DatabaseReference attRef = FirebaseDatabase.getInstance().getReference("attendanceWFH");
String mAuth = FirebaseAuth.getInstance().getCurrentUser().getUid();
attRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.hasChild(getCurrentDate())){
if(snapshot.child(getCurrentDate()).hasChild("Check In")){
if(snapshot.child(getCurrentDate()).child("Check In").hasChild(mAuth)){
long time = Long.parseLong(snapshot.child(getCurrentDate()).child("Check In").child(mAuth).child("time").getValue().toString());
masukTxt.setText(getTime(time));
}
}
}
else
return;
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
private String getCurrentDate(){
Calendar calDate = Calendar.getInstance();
SimpleDateFormat currentDateFormat = new SimpleDateFormat("dd MMMM yyyy");
String currentDate = currentDateFormat.format(calDate.getTime());
return currentDate;
}
private void getCountHari(){
DatabaseReference attRef = FirebaseDatabase.getInstance().getReference("historyWFH");
String mAuth = FirebaseAuth.getInstance().getCurrentUser().getUid();
attRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.hasChild(mAuth)){
int hari = 0;
for(DataSnapshot ds : snapshot.child(mAuth).getChildren()){
if(ds.child("keterangan").getValue().equals("Keluar"))
hari++;
else
continue;
}
hitungHadirTxt.setText(String.valueOf(hari));
}
else
return;
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
private void getKeluar(){
DatabaseReference attRef = FirebaseDatabase.getInstance().getReference("attendanceWFH");
String mAuth = FirebaseAuth.getInstance().getCurrentUser().getUid();
attRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.hasChild(getCurrentDate())){
if(snapshot.child(getCurrentDate()).hasChild("Check Out")){
if(snapshot.child(getCurrentDate()).child("Check Out").hasChild(mAuth)){
long time = Long.parseLong(snapshot.child(getCurrentDate()).child("Check Out").child(mAuth).child("time").getValue().toString());
keluarTxt.setText(getTime(time));
}
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
private String getTime(long time) {
Calendar cal = Calendar.getInstance(Locale.ENGLISH);
cal.setTimeInMillis(time);
String date = DateFormat.format("HH:mm:ss", cal).toString();
return date;
}
public boolean isServicesOK(){
int available = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(WorkFromHome.this);
if(available == ConnectionResult.SUCCESS){
return true;
}
else if(GoogleApiAvailability.getInstance().isUserResolvableError(available)){
Dialog dialog = GoogleApiAvailability.getInstance().getErrorDialog(WorkFromHome.this, available, ERROR_DIALOG_REQUEST);
dialog.show();
}else{
Toast.makeText(WorkFromHome.this, "You can't make map requests", Toast.LENGTH_SHORT).show();
}
return false;
}
private void retrieveData(){
userRef.child(userFirebase.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Employees employees = dataSnapshot.getValue(Employees.class);
nikText.setText(employees.getNoPeg());
nameText.setText(employees.getNamaLengkap());
namaLengkapText.setText(employees.getNamaLengkap());
jabatanText.setText(employees.getJabatan());
kebunText.setText(employees.getAlamat());
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});
}
}

View File

@ -0,0 +1,105 @@
package com.project.ilsaenterprise.account;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.Manifest;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.SharedPref;
import java.util.HashMap;
import de.hdodenhof.circleimageview.CircleImageView;
public class ChangeName extends AppCompatActivity {
private EditText edtName;
private RelativeLayout btnSave;
private CircleImageView userProfileImage;
private DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("users")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid());
private DatabaseReference userRef;
private FirebaseAuth mAuth;
private FirebaseUser userFirebase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getSupportActionBar() != null) {
getSupportActionBar().hide();
}
setContentView(R.layout.activity_change_name);
edtName = findViewById(R.id.nameProfile);
btnSave = findViewById(R.id.btnSaveName);
Bundle bundle = getIntent().getExtras();
if(bundle.getString("name") != null){
edtName.setText(bundle.getString("name"));
}
mAuth = FirebaseAuth.getInstance();
userFirebase = mAuth.getCurrentUser();
userRef = FirebaseDatabase.getInstance().getReference().child("users");
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
updateUser();
}
});
}
private void updateUser(){
String userId = userFirebase.getUid();
String setUserName = edtName.getText().toString();
if(TextUtils.isEmpty(setUserName))
Toast.makeText(this, "Mohon lengkapi data anda", Toast.LENGTH_SHORT).show();
else
{
try {
userRef.child(userId).child("namaLengkap").setValue(setUserName).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void unused) {
Toast.makeText(getBaseContext(), "Data telah disimpan.", Toast.LENGTH_SHORT).show();
startActivity(new Intent(ChangeName.this, UserProfile.class));
edtName.setFocusable(false);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getBaseContext(), "Gagal menyimpan data "+ e, Toast.LENGTH_SHORT).show();
}
});
}catch (Exception e){
Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_SHORT).show();
}
}
}
}

View File

@ -0,0 +1,92 @@
package com.project.ilsaenterprise.account;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.project.ilsaenterprise.R;
import de.hdodenhof.circleimageview.CircleImageView;
public class ChangePhone extends AppCompatActivity {
private EditText edtHp;
private RelativeLayout btnSave;
private DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("users")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid());
private DatabaseReference userRef;
private FirebaseAuth mAuth;
private FirebaseUser userFirebase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getSupportActionBar() != null) {
getSupportActionBar().hide();
}
setContentView(R.layout.activity_change_phone);
edtHp = findViewById(R.id.tvNoHp);
btnSave = findViewById(R.id.btnSaveName);
Bundle bundle = getIntent().getExtras();
if(bundle.getString("phone") != null){
edtHp.setText(bundle.getString("phone"));
}
mAuth = FirebaseAuth.getInstance();
userFirebase = mAuth.getCurrentUser();
userRef = FirebaseDatabase.getInstance().getReference().child("users");
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
updateUser();
}
});
}
private void updateUser(){
String userId = userFirebase.getUid();
String setUserName = edtHp.getText().toString();
if(TextUtils.isEmpty(setUserName))
Toast.makeText(this, "Mohon lengkapi data anda", Toast.LENGTH_SHORT).show();
else
{
try {
userRef.child(userId).child("noHp").setValue(setUserName).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void unused) {
Toast.makeText(getBaseContext(), "Data telah disimpan.", Toast.LENGTH_SHORT).show();
startActivity(new Intent(ChangePhone.this, UserProfile.class));
finish();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getBaseContext(), "Gagal menyimpan data "+ e, Toast.LENGTH_SHORT).show();
}
});
}catch (Exception e){
Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_SHORT).show();
}
}
}
}

View File

@ -0,0 +1,664 @@
package com.project.ilsaenterprise.account;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.content.ContentValues;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
import android.text.InputType;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.OnProgressListener;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.project.ilsaenterprise.Home;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.SharedPref;
import com.squareup.picasso.Picasso;
import com.theartofdev.edmodo.cropper.CropImage;
import com.thekhaeng.pushdownanim.PushDownAnim;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import de.hdodenhof.circleimageview.CircleImageView;
public class CreateUser extends AppCompatActivity {
private static final int PICK_IMAGE_INTENT = 1;
private TextView tvName, tvNoPeg, tvJabatan, tvLokasi, tvEmail, tvHp;
private RelativeLayout updateAccountBtn, editAccountBtn;
private CircleImageView userProfileImage;
private final DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("users")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid());
SharedPref sharedPreference;
private DatabaseReference userRef;
private DatabaseReference userPhotoRef;
private FirebaseAuth mAuth;
private FirebaseUser userFirebase;
private static final int GalleryPick = 1;
private StorageReference UserProfileImgRef;
private ProgressBar progressUpload;
private TextView progressTxt;
private String android_id;
HashMap<String, String> profileMap;
Uri media_camera;
private com.getbase.floatingactionbutton.FloatingActionButton btnAddCam, btnAddGallery;
private static final String WRITE_STORAGE = Manifest.permission.WRITE_EXTERNAL_STORAGE;
private static final String CAMERA_USAGE = Manifest.permission.CAMERA;
private static final int LOCATION_PERMISSION_REQUEST_CODE = 101;
private static final int STORAGE_PERMISSION_REQUEST_CODE = 102;
private static final int CAMERA_PERMISSION_REQUEST_CODE = 103;
private Boolean mWriteExternalStorage = false;
private Boolean mCameraPermission = false;
private static final int IMAGE_CAPTURE_CODE = 101;
private GoogleSignInAccount googleLogin;
private String valHp;
TextView tvGender, tvClass, tvCompany, tvDOB, tvAddress, tvNIP, tvDivision;
ImageView btnChangeName, btnChangeDOB, btnChangeGender, btnChangeAddress, btnChangeClass, btnChangeCompany, btnChangePhone, btnChangeDivision, btnChangeNIP;
RelativeLayout btnSaveEnable, btnSaveDisable;
private DatePickerDialog datePickerDialog;
private SimpleDateFormat dateFormatter;
private int selectedCompany;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(getSupportActionBar() != null)
getSupportActionBar().hide();
setContentView(R.layout.activity_create_user);
sharedPreference = new SharedPref(this);
mAuth = FirebaseAuth.getInstance();
userFirebase = mAuth.getCurrentUser();
userRef = FirebaseDatabase.getInstance().getReference().child("users");
UserProfileImgRef = FirebaseStorage.getInstance().getReference().child("profileImage");
userPhotoRef = FirebaseDatabase.getInstance().getReference().child("usersPhoto");
googleLogin = GoogleSignIn.getLastSignedInAccount(getApplicationContext());
userRef.child(userFirebase.getUid()).child("uid").setValue(userFirebase.getUid());
dateFormatter = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
selectedCompany = 1;
InitializeFields();
btnChangeName = findViewById(R.id.ivChangeName);
btnChangeDOB = findViewById(R.id.ivChangeDOB);
btnChangeGender = findViewById(R.id.ivChangeGender);
btnChangeDivision = findViewById(R.id.ivChangeDivision);
btnChangeClass = findViewById(R.id.ivChangeClass);
btnChangeCompany = findViewById(R.id.ivChangeCompany);
btnChangePhone = findViewById(R.id.ivChangeHP);
btnChangeAddress = findViewById(R.id.ivChangeAddress);
btnChangeNIP = findViewById(R.id.ivChangeNIP);
final Resources res = getResources();
String[] gender = res.getStringArray(R.array.gender);
String[] userClass = res.getStringArray(R.array.userClass);
String[] company = res.getStringArray(R.array.company);
String[] division = res.getStringArray(R.array.userDivision);
btnChangeName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showAlertDialogInsert(R.layout.layout_popup_insert, "Nama Lengkap");
}
});
btnChangePhone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showAlertDialogInsert(R.layout.layout_popup_insert, "Handphone");
}
});
btnChangeDOB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showDateDialog();
}
});
btnChangeAddress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showAlertDialogInsert(R.layout.layout_popup_insert, "Alamat");
}
});
btnChangeGender.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showAlertDialog(R.layout.layout_popup_selected, "Gender", gender);
}
});
btnChangeClass.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showAlertDialog(R.layout.layout_popup_selected, "Jabatan", userClass);
}
});
btnChangeCompany.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showAlertDialog(R.layout.layout_popup_selected, "Perusahaan", company);
}
});
btnChangeNIP.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showAlertDialogInsert(R.layout.layout_popup_insert, "NIP");
}
});
btnChangeDivision.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showAlertDialog(R.layout.layout_popup_selected, "Divisi", division);
}
});
btnSaveEnable.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
saveData();
}
});
retrieveInfo();
}
private void saveData(){
try{
userRef.child(userFirebase.getUid()).child("uid").setValue(userFirebase.getUid());
userRef.child(userFirebase.getUid()).child("namaLengkap").setValue(tvName.getText().toString());
userRef.child(userFirebase.getUid()).child("noPeg").setValue(tvNoPeg.getText().toString());
userRef.child(userFirebase.getUid()).child("jabatan").setValue(tvClass.getText().toString());
userRef.child(userFirebase.getUid()).child("noHp").setValue(tvHp.getText().toString());
userRef.child(userFirebase.getUid()).child("email").setValue(tvEmail.getText().toString());
userRef.child(userFirebase.getUid()).child("perusahaan").setValue(String.valueOf(selectedCompany));
userRef.child(userFirebase.getUid()).child("penempatan").setValue(tvAddress.getText().toString());
userRef.child(userFirebase.getUid()).child("DOB").setValue(tvDOB.getText().toString());
userRef.child(userFirebase.getUid()).child("gender").setValue(tvGender.getText().toString());
userRef.child(userFirebase.getUid()).child("alamat").setValue(tvAddress.getText().toString());
userRef.child(userFirebase.getUid()).child("divisi").setValue(tvDivision.getText().toString());
userRef.child(userFirebase.getUid()).child("nip").setValue(tvNIP.getText().toString());
userRef.child(userFirebase.getUid()).child("deviceId").setValue(getDeviceName());
Toast.makeText(getBaseContext(), "Profil telah diperbarui", Toast.LENGTH_SHORT).show();
toHomeActivity();
}catch (Exception ex){
Toast.makeText(getBaseContext(), ex.getMessage(), Toast.LENGTH_LONG).show();
}
}
private void toHomeActivity(){
Intent homeIntent = new Intent(CreateUser.this, Home.class);
homeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(homeIntent);
finish();
}
private void showAlertDialog(int layout, String selection, String[] SelectionArr){
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(CreateUser.this);
View layoutView = getLayoutInflater().inflate(layout, null);
//Button dialogButton = layoutView.findViewById(R.id.btnDialog);
dialogBuilder.setView(layoutView);
final AlertDialog alertDialog = dialogBuilder.create();
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
alertDialog.show();
List<String> listSelection = new ArrayList<>(Arrays.asList(SelectionArr));
ListView lvItem = layoutView.findViewById(R.id.lvDistrict);
TextView tvSelection = layoutView.findViewById(R.id.tvSelection);
tvSelection.setText(selection);
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.list_item_simple, R.id.tvItem, listSelection);
lvItem.setAdapter(arrayAdapter);
final String[] selected = {""};
lvItem.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) {
selected[0] = adapterView.getItemAtPosition(pos).toString();
if(selection.equals("Gender")){
tvGender.setText(selected[0]);
checkForm();
}
else if(selection.equals("Jabatan")){
tvClass.setText(selected[0]);
checkForm();
}
else if(selection.equals("Perusahaan")){
tvCompany.setText(selected[0]);
selectedCompany = pos + 1;
checkForm();
}
else if(selection.equals("Divisi")){
tvDivision.setText(selected[0]);
checkForm();
}
alertDialog.cancel();
}
});
}
private void showAlertDialogInsert(int layout, String selection){
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(CreateUser.this);
View layoutView = getLayoutInflater().inflate(layout, null);
dialogBuilder.setView(layoutView);
final AlertDialog alertDialog = dialogBuilder.create();
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
alertDialog.show();
TextView tvSelection = layoutView.findViewById(R.id.tvSelection);
EditText edtItem = layoutView.findViewById(R.id.edtItem);
tvSelection.setText(selection);
if(selection.equals("Handphone"))
edtItem.setInputType(InputType.TYPE_CLASS_PHONE);
else if(selection.equals("NIP"))
edtItem.setInputType(InputType.TYPE_CLASS_NUMBER);
layoutView.findViewById(R.id.btnFinish).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(selection.equals("Nama Lengkap")){
tvName.setText(edtItem.getText());
checkForm();
}
else if(selection.equals("Handphone")){
tvHp.setText(edtItem.getText());
checkForm();
}
else if(selection.equals("Alamat")){
tvAddress.setText(edtItem.getText());
checkForm();
}
else if(selection.equals("NIP")){
tvNIP.setText(edtItem.getText());
checkForm();
}
alertDialog.cancel();
}
});
}
private void InitializeFields() {
tvGender = findViewById(R.id.tvGender);
tvClass = findViewById(R.id.tvClass);
tvCompany = findViewById(R.id.tvCompany);
tvDOB = findViewById(R.id.tvDOB);
tvAddress = findViewById(R.id.tvAddress);
btnSaveEnable = findViewById(R.id.btnSaveEnable);
btnSaveDisable = findViewById(R.id.btnSaveDisable);
tvName = findViewById(R.id.tvName);
tvNoPeg = findViewById(R.id.tvUID);
tvEmail = findViewById(R.id.tvEmail);
tvHp = findViewById(R.id.tvHp);
tvNIP = findViewById(R.id.tvNIP);
tvDivision = findViewById(R.id.tvDivision);
userProfileImage = findViewById(R.id.profile_image);
progressTxt = findViewById(R.id.progressTxt);
progressUpload = findViewById(R.id.progressBar_profil);
}
public String getDeviceName() {
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL;
if (model.startsWith(manufacturer)) {
return capitalize(model);
} else {
return capitalize(manufacturer) + " " + model;
}
}
private void showDateDialog(){
Calendar newCalendar = Calendar.getInstance();
datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar newDate = Calendar.getInstance();
newDate.set(year, monthOfYear, dayOfMonth);
NumberFormat formatter = new DecimalFormat("00");
StringBuilder str = new StringBuilder();
str.append(formatter.format(dayOfMonth));
str.append(" - ");
str.append(formatter.format(monthOfYear + 1));
str.append(" - ");
str.append(year);
tvDOB.setText(str.toString());
checkForm();
}
}, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
datePickerDialog.show();
}
private void checkForm(){
if(!tvName.getText().equals("") && !tvDOB.getText().equals("") && !tvGender.getText().equals("") && !tvClass.getText().equals("") &&
!tvCompany.getText().equals("") && !tvHp.getText().equals("") && !tvDivision.getText().equals("") && !tvName.getText().equals("-") &&
!tvDOB.getText().equals("-") && !tvGender.getText().equals("-") && !tvClass.getText().equals("-") && !tvCompany.getText().equals("-") &&
!tvHp.getText().equals("-") && !tvDivision.getText().equals("-") && tvHp.getText().length() > 2 && tvNIP.getText().length() > 2 &&
tvName.getText().length() > 2 && tvAddress.getText().length() > 2){
btnSaveEnable.setVisibility(View.VISIBLE);
btnSaveDisable.setVisibility(View.GONE);
Log.d("CEK", "AA");
Log.d("CEK", tvHp.getText().toString());
}
else
{
btnSaveEnable.setVisibility(View.GONE);
btnSaveDisable.setVisibility(View.VISIBLE);
Log.d("CEK", "BB");
}
}
private void addCam(){
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, "New Picture");
values.put(MediaStore.Images.Media.DESCRIPTION, "From the Camera");
media_camera = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, media_camera);
startActivityForResult(cameraIntent, IMAGE_CAPTURE_CODE);
}
private void addPic() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture(s)"), PICK_IMAGE_INTENT);
}
private void retrieveInfo(){
tvName.setText(userFirebase.getDisplayName());
Picasso.get().load(userFirebase.getPhotoUrl()).placeholder(R.drawable.employee_img).into(userProfileImage);
tvNoPeg.setText(googleLogin.getId());
tvEmail.setText(googleLogin.getEmail());
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
String userId = userFirebase.getUid();
if(requestCode == PICK_IMAGE_INTENT)
{
if(resultCode == RESULT_OK){
Uri resultUri = data.getData();
StorageReference filePath = UserProfileImgRef.child(userId + ".jpg");
progressUpload.setVisibility(View.VISIBLE);
progressUpload.setIndeterminate(false);
filePath.putFile(resultUri).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(@NonNull UploadTask.TaskSnapshot snapshot) {
double progress = (100 * snapshot.getBytesTransferred()) / snapshot.getTotalByteCount();
progressUpload.setProgress((int) progress);
progressTxt.setText(progress + " %");
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
final Task<Uri> firebaseUri = taskSnapshot.getStorage().getDownloadUrl();
firebaseUri.addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
final String downloadUrl = uri.toString();
// complete the rest of your code
userRef.child(userId).child("image")
.setValue(downloadUrl)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Toast toast = Toast.makeText(CreateUser.this,
"Foto telah disimpan",
Toast.LENGTH_SHORT);
View toastView = toast.getView();
toastView.setBackgroundResource(R.drawable.toast_drawable);
toast.show();
progressTxt.append(" File Uploaded");
finish();
startActivity(getIntent());
}
else
{
String message = task.getException().toString();
Toast toast = Toast.makeText(CreateUser.this,
"Error: " + message,
Toast.LENGTH_SHORT);
View toastView = toast.getView();
toastView.setBackgroundResource(R.drawable.toast_drawable);
toast.show();
}
}
});
}
});
}
});
}
}
else if(requestCode == IMAGE_CAPTURE_CODE){//Camera
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if(resultCode == RESULT_OK)
{
Uri resultUri = media_camera;
StorageReference filePath = UserProfileImgRef.child(userId + ".jpg");
progressUpload.setVisibility(View.VISIBLE);
progressUpload.setIndeterminate(false);
filePath.putFile(resultUri).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(@NonNull UploadTask.TaskSnapshot snapshot) {
double progress = (100 * snapshot.getBytesTransferred()) / snapshot.getTotalByteCount();
progressUpload.setProgress((int) progress);
progressTxt.setText(progress + " %");
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
final Task<Uri> firebaseUri = taskSnapshot.getStorage().getDownloadUrl();
firebaseUri.addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
final String downloadUrl = uri.toString();
// complete the rest of your code
userRef.child(userId).child("image")
.setValue(downloadUrl)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Toast toast = Toast.makeText(CreateUser.this,
"Foto telah disimpan",
Toast.LENGTH_SHORT);
View toastView = toast.getView();
toastView.setBackgroundResource(R.drawable.toast_drawable);
toast.show();
progressTxt.append(" File Uploaded");
finish();
startActivity(getIntent());
}
else
{
String message = task.getException().toString();
Toast.makeText(CreateUser.this, "Error: " + message, Toast.LENGTH_SHORT).show();
}
}
});
}
});
}
});
}
}
}
private void updateUser(){
String userId = userFirebase.getUid();
String setUserName = tvName.getText().toString();
String setnoPeg = tvNoPeg.getText().toString();
String setJabatan = tvJabatan.getText().toString();
String setEmail = userFirebase.getEmail();
String setHp = tvHp.getText().toString();
String setLokasi = tvLokasi.getText().toString();
if(TextUtils.isEmpty(setUserName) || TextUtils.isEmpty(setnoPeg) || TextUtils.isEmpty(setJabatan) || TextUtils.isEmpty(setHp) || TextUtils.isEmpty(setLokasi) || TextUtils.isEmpty(setEmail))
Toast.makeText(this, "Mohon lengkapi data anda", Toast.LENGTH_SHORT).show();
else
{
try {
userRef.child(userId).child("uid").setValue(userId);
userRef.child(userId).child("namaLengkap").setValue(setUserName);
userRef.child(userId).child("noPeg").setValue(setnoPeg);
userRef.child(userId).child("jabatan").setValue(setJabatan);
userRef.child(userId).child("noHp").setValue(setHp);
userRef.child(userId).child("email").setValue(setEmail);
userRef.child(userId).child("penempatan").setValue(setLokasi);
userRef.child(userId).child("deviceId").setValue(getDeviceName());
Toast.makeText(getBaseContext(), "Profil telah diperbarui", Toast.LENGTH_SHORT).show();
// toHomeActivity();
// profileMap = new HashMap<>();
// profileMap.put("uid", userId);
// profileMap.put("namaLengkap", setUserName);
// profileMap.put("noPeg", setnoPeg);
// profileMap.put("jabatan", setJabatan);
// profileMap.put("noHp", setHp);
// profileMap.put("email", setEmail);
// profileMap.put("penempatan", setLokasi);
// profileMap.put("deviceId", getDeviceName());
// userRef.child(userId).setValue(profileMap).addOnCompleteListener(new OnCompleteListener<Void>() {
// @Override
// public void onComplete(@NonNull Task<Void> task) {
// if(task.isSuccessful()) {
// profileMap.clear();
// Toast.makeText(getBaseContext(), "Profil telah diperbarui", Toast.LENGTH_SHORT).show();
// toHomeActivity();
// }
// else
// {
// String message = task.getException().toString();
// Toast.makeText(getBaseContext(), "Error: " + message, Toast.LENGTH_LONG).show();
// }
// }
// });
}catch (Exception e){
Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_SHORT).show();
}
}
}
// private void toHomeActivity(){
// Intent homeIntent = new Intent(CreateUser.this, Home.class);
// homeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
// startActivity(homeIntent);
// finish();
// }
private String capitalize(String s) {
if (s == null || s.length() == 0) {
return "";
}
char first = s.charAt(0);
if (Character.isUpperCase(first)) {
return s;
} else {
return Character.toUpperCase(first) + s.substring(1);
}
}
private void getWriteStorage(){
String[] permission = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};
if(ContextCompat.checkSelfPermission(this.getApplicationContext(),
WRITE_STORAGE) == PackageManager.PERMISSION_GRANTED){
mWriteExternalStorage = true;
}else{
ActivityCompat.requestPermissions(this, permission,
STORAGE_PERMISSION_REQUEST_CODE);
}
}
private void getCameraPermission(){
if(ContextCompat.checkSelfPermission(this.getApplicationContext(),
CAMERA_USAGE) == PackageManager.PERMISSION_GRANTED){
mCameraPermission = true;
}else{
ActivityCompat.requestPermissions(this, new String[] {CAMERA_USAGE},
CAMERA_PERMISSION_REQUEST_CODE);
}
}
}

View File

@ -0,0 +1,567 @@
package com.project.ilsaenterprise.account;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.ContentValues;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.OnProgressListener;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.project.ilsaenterprise.Home;
import com.project.ilsaenterprise.Login;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.SharedPref;
import com.project.ilsaenterprise.models.Employees;
import com.squareup.picasso.Picasso;
import com.theartofdev.edmodo.cropper.CropImage;
import com.thekhaeng.pushdownanim.PushDownAnim;
import org.w3c.dom.Text;
import java.util.HashMap;
import de.hdodenhof.circleimageview.CircleImageView;
public class UserProfile extends AppCompatActivity {
private static final String TAG = "UserProfil";
private static final int PICK_IMAGE_INTENT = 1;
private TextView tvName, tvNoPeg, tvJabatan, tvLokasi, tvEmail, tvHp, tvDOB, tvGender;
private RelativeLayout updateAccountBtn, editAccountBtn;
private CircleImageView userProfileImage;
private DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("users")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid());
SharedPref sharedPreference;
private DatabaseReference userRef;
private DatabaseReference userPhotoRef;
private FirebaseAuth mAuth;
private FirebaseUser userFirebase;
private static final int GalleryPick = 1;
private StorageReference UserProfileImgRef;
private ProgressBar progressUpload;
private TextView progressTxt;
private String android_id;
HashMap<String, String> profileMap;
Uri media_camera;
private com.getbase.floatingactionbutton.FloatingActionButton btnAddCam, btnAddGallery;
private static final String WRITE_STORAGE = Manifest.permission.WRITE_EXTERNAL_STORAGE;
private static final String CAMERA_USAGE = Manifest.permission.CAMERA;
private static final int LOCATION_PERMISSION_REQUEST_CODE = 101;
private static final int STORAGE_PERMISSION_REQUEST_CODE = 102;
private static final int CAMERA_PERMISSION_REQUEST_CODE = 103;
private Boolean mWriteExternalStorage = false;
private Boolean mCameraPermission = false;
private static final int IMAGE_CAPTURE_CODE = 101;
private GoogleSignInAccount googleLogin;
private String valHp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.Dark));
if (getSupportActionBar() != null) {
getSupportActionBar().hide();
}
setContentView(R.layout.activity_user_profile);
sharedPreference = new SharedPref(this);
mAuth = FirebaseAuth.getInstance();
userFirebase = mAuth.getCurrentUser();
userRef = FirebaseDatabase.getInstance().getReference().child("users");
UserProfileImgRef = FirebaseStorage.getInstance().getReference().child("profileImage");
userPhotoRef = FirebaseDatabase.getInstance().getReference().child("usersPhoto");
btnAddCam = findViewById(R.id.addCamProfile);
btnAddGallery = findViewById(R.id.addGalleryProfile);
googleLogin = GoogleSignIn.getLastSignedInAccount(getApplicationContext());
InitializeFields();
PushDownAnim.setPushDownAnimTo(btnAddCam).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
getWriteStorage();
getCameraPermission();
if(mCameraPermission == true){
addCam();
}
else
{
Toast.makeText(getBaseContext(), "Izinkan akses kamera", Toast.LENGTH_SHORT).show();
getCameraPermission();
}
}catch(Exception error){
Toast.makeText(getBaseContext(), error.toString(), Toast.LENGTH_SHORT).show();
}
}
});
PushDownAnim.setPushDownAnimTo(btnAddGallery).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getWriteStorage();
getCameraPermission();
if(mWriteExternalStorage == true){
addPic();
}
else
{
Toast.makeText(getBaseContext(), "Izinkan akses galeri", Toast.LENGTH_SHORT).show();
getWriteStorage();
}
}
});
TextView btnChangeName = findViewById(R.id.textView4);
TextView btnChangePhone = findViewById(R.id.tvPhone);
btnChangeName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(UserProfile.this, ChangeName.class).putExtra("name", tvName.getText()));
}
});
btnChangePhone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(UserProfile.this, ChangePhone.class).putExtra("phone", valHp));
}
});
ImageView btnBack = findViewById(R.id.ivBack);
btnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
checkUser();
}
});
// FloatingActionButton addPhotoFab = findViewById(R.id.fab_camera);
// addPhotoFab.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
//// Intent galleryIntent = new Intent();
//// galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
//// galleryIntent.setType("image/*");
//// startActivityForResult(galleryIntent, GalleryPick);
// addCam();
// }
// });
}
@Override
public void onBackPressed() {
checkUser();
}
public boolean checkUser(){
DatabaseReference firebaseDatabase = FirebaseDatabase.getInstance().getReference("users");
FirebaseUser userId = mAuth.getCurrentUser();
firebaseDatabase.child(userId.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.exists()){
startActivity(new Intent(UserProfile.this, Home.class));
finish();
}
else
Toast.makeText(getBaseContext(), "Mohon lengkapi data terlebih dahulu.", Toast.LENGTH_LONG).show();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(getBaseContext(), "Data Error" + error.getMessage(), Toast.LENGTH_LONG).show();
}
});
return true;
}
@Override
protected void onStart() {
super.onStart();
retrieveInfo();
}
public String getDeviceName() {
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL;
if (model.startsWith(manufacturer)) {
return capitalize(model);
} else {
return capitalize(manufacturer) + " " + model;
}
}
private String capitalize(String s) {
if (s == null || s.length() == 0) {
return "";
}
char first = s.charAt(0);
if (Character.isUpperCase(first)) {
return s;
} else {
return Character.toUpperCase(first) + s.substring(1);
}
}
private void getWriteStorage(){
String[] permission = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};
if(ContextCompat.checkSelfPermission(this.getApplicationContext(),
WRITE_STORAGE) == PackageManager.PERMISSION_GRANTED){
mWriteExternalStorage = true;
}else{
ActivityCompat.requestPermissions(this, permission,
STORAGE_PERMISSION_REQUEST_CODE);
}
}
private void getCameraPermission(){
if(ContextCompat.checkSelfPermission(this.getApplicationContext(),
CAMERA_USAGE) == PackageManager.PERMISSION_GRANTED){
mCameraPermission = true;
}else{
ActivityCompat.requestPermissions(this, new String[] {CAMERA_USAGE},
CAMERA_PERMISSION_REQUEST_CODE);
}
}
private void InitializeFields() {
tvName = findViewById(R.id.nameProfile);
tvNoPeg = findViewById(R.id.noPegawai);
tvJabatan = findViewById(R.id.jabatanProfile);
tvLokasi = findViewById(R.id.lokasiProfile);
tvEmail = findViewById(R.id.emailProfile);
tvDOB = findViewById(R.id.tvDOB);
tvGender = findViewById(R.id.tvGender);
tvHp = findViewById(R.id.hpProfile);
userProfileImage = (CircleImageView) findViewById(R.id.profile_image);
progressTxt = (TextView) findViewById(R.id.progressTxt);
progressUpload = (ProgressBar) findViewById(R.id.progressBar_profil);
}
private void addCam(){
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, "New Picture");
values.put(MediaStore.Images.Media.DESCRIPTION, "From the Camera");
media_camera = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, media_camera);
startActivityForResult(cameraIntent, IMAGE_CAPTURE_CODE);
}
private void addPic() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture(s)"), PICK_IMAGE_INTENT);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
String userId = userFirebase.getUid();
if(requestCode == PICK_IMAGE_INTENT)
{
if(resultCode == RESULT_OK){
Uri resultUri = data.getData();
StorageReference filePath = UserProfileImgRef.child(userId + ".jpg");
progressUpload.setVisibility(View.VISIBLE);
progressUpload.setIndeterminate(false);
filePath.putFile(resultUri).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(@NonNull UploadTask.TaskSnapshot snapshot) {
double progress = (100 * snapshot.getBytesTransferred()) / snapshot.getTotalByteCount();
progressUpload.setProgress((int) progress);
progressTxt.setText(progress + " %");
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
final Task<Uri> firebaseUri = taskSnapshot.getStorage().getDownloadUrl();
firebaseUri.addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
final String downloadUrl = uri.toString();
// complete the rest of your code
userRef.child(userId).child("image")
.setValue(downloadUrl)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Toast toast = Toast.makeText(UserProfile.this,
"Foto telah disimpan",
Toast.LENGTH_SHORT);
View toastView = toast.getView();
toastView.setBackgroundResource(R.drawable.toast_drawable);
toast.show();
progressTxt.append(" File Uploaded");
finish();
startActivity(getIntent());
}
else
{
String message = task.getException().toString();
Toast toast = Toast.makeText(UserProfile.this,
"Error: " + message,
Toast.LENGTH_SHORT);
View toastView = toast.getView();
toastView.setBackgroundResource(R.drawable.toast_drawable);
toast.show();
}
}
});
}
});
}
});
}
}
else if(requestCode == IMAGE_CAPTURE_CODE){//Camera
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if(resultCode == RESULT_OK)
{
Uri resultUri = media_camera;
StorageReference filePath = UserProfileImgRef.child(userId + ".jpg");
progressUpload.setVisibility(View.VISIBLE);
progressUpload.setIndeterminate(false);
filePath.putFile(resultUri).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(@NonNull UploadTask.TaskSnapshot snapshot) {
double progress = (100 * snapshot.getBytesTransferred()) / snapshot.getTotalByteCount();
progressUpload.setProgress((int) progress);
progressTxt.setText(progress + " %");
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
final Task<Uri> firebaseUri = taskSnapshot.getStorage().getDownloadUrl();
firebaseUri.addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
final String downloadUrl = uri.toString();
// complete the rest of your code
userRef.child(userId).child("image")
.setValue(downloadUrl)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Toast toast = Toast.makeText(UserProfile.this,
"Foto telah disimpan",
Toast.LENGTH_SHORT);
View toastView = toast.getView();
toastView.setBackgroundResource(R.drawable.toast_drawable);
toast.show();
progressTxt.append(" File Uploaded");
finish();
startActivity(getIntent());
}
else
{
String message = task.getException().toString();
Toast.makeText(UserProfile.this, "Error: " + message, Toast.LENGTH_SHORT).show();
}
}
});
}
});
}
});
}
}
}
private void updateUser(){
String userId = userFirebase.getUid();
String setUserName = tvName.getText().toString();
String setnoPeg = tvNoPeg.getText().toString();
String setJabatan = tvJabatan.getText().toString();
String setEmail = userFirebase.getEmail();
String setHp = tvHp.getText().toString();
String setLokasi = tvLokasi.getText().toString();
if(TextUtils.isEmpty(setUserName) || TextUtils.isEmpty(setnoPeg) || TextUtils.isEmpty(setJabatan) || TextUtils.isEmpty(setHp) || TextUtils.isEmpty(setLokasi) || TextUtils.isEmpty(setEmail))
Toast.makeText(this, "Mohon lengkapi data anda", Toast.LENGTH_SHORT).show();
else
{
try {
userRef.child(userId).child("uid").setValue(userId);
userRef.child(userId).child("namaLengkap").setValue(setUserName);
userRef.child(userId).child("noPeg").setValue(setnoPeg);
userRef.child(userId).child("jabatan").setValue(setJabatan);
userRef.child(userId).child("noHp").setValue(setHp);
userRef.child(userId).child("email").setValue(setEmail);
userRef.child(userId).child("penempatan").setValue(setLokasi);
userRef.child(userId).child("deviceId").setValue(getDeviceName());
Toast.makeText(getBaseContext(), "Profil telah diperbarui", Toast.LENGTH_SHORT).show();
toHomeActivity();
// profileMap = new HashMap<>();
// profileMap.put("uid", userId);
// profileMap.put("namaLengkap", setUserName);
// profileMap.put("noPeg", setnoPeg);
// profileMap.put("jabatan", setJabatan);
// profileMap.put("noHp", setHp);
// profileMap.put("email", setEmail);
// profileMap.put("penempatan", setLokasi);
// profileMap.put("deviceId", getDeviceName());
// userRef.child(userId).setValue(profileMap).addOnCompleteListener(new OnCompleteListener<Void>() {
// @Override
// public void onComplete(@NonNull Task<Void> task) {
// if(task.isSuccessful()) {
// profileMap.clear();
// Toast.makeText(getBaseContext(), "Profil telah diperbarui", Toast.LENGTH_SHORT).show();
// toHomeActivity();
// }
// else
// {
// String message = task.getException().toString();
// Toast.makeText(getBaseContext(), "Error: " + message, Toast.LENGTH_LONG).show();
// }
// }
// });
}catch (Exception e){
Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_SHORT).show();
}
}
}
private void retrieveInfo(){
String userId = userFirebase.getUid();
tvEmail.setText(userFirebase.getEmail());
tvName.setText(userFirebase.getDisplayName());
tvHp.setText(userFirebase.getPhoneNumber());
tvNoPeg.setText(googleLogin.getId());
Picasso.get().load(userFirebase.getPhotoUrl()).placeholder(R.drawable.employee_img).into(userProfileImage);
Resources res = getResources();
String[] company = res.getStringArray(R.array.company);
userRef.child(userId).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.exists()){
Employees employees = snapshot.getValue(Employees.class);
if(employees.getImage() != null)
Picasso.get().load(employees.getImage()).placeholder(R.drawable.employee_img).into(userProfileImage);
if(employees.getNamaLengkap() == null || employees.getJabatan() == null){
editAccountBtn.setVisibility(View.GONE);
updateAccountBtn.setVisibility(View.VISIBLE);
Toast.makeText(UserProfile.this, "Mohon lengkapi data anda", Toast.LENGTH_SHORT).show();
}
if(employees.getNamaLengkap() != null || employees.getJabatan() != null){
tvName.setText(employees.getNamaLengkap());
tvNoPeg.setText(employees.getNoPeg());
tvJabatan.setText(employees.getJabatan());
tvLokasi.setText(company[Integer.parseInt(employees.getPerusahaan()) - 1]);
tvDOB.setText(snapshot.child("DOB").getValue().toString());
tvGender.setText(snapshot.child("gender").getValue().toString());
valHp = employees.getNoHp();
String tmp = employees.getNoHp();
StringBuilder noHp = new StringBuilder();
int i = 0, step = 1, step2 = 1;
while (i < tmp.length()){
if(step == 4 && step2 < 3){
noHp.append(tmp.charAt(i));
noHp.append(" - ");
step = 0;
step2++;
}
else if(step < 4 || step2 == 3){
noHp.append(tmp.charAt(i));
}
step++;
i++;
}
tvHp.setText(noHp.toString());
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
private String getIMEINumber() {
android_id = Settings.Secure.getString(UserProfile.this.getContentResolver(), Settings.Secure.ANDROID_ID);
return android_id;
}
private void toHomeActivity(){
Intent homeIntent = new Intent(UserProfile.this, Home.class);
homeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(homeIntent);
finish();
}
}

View File

@ -0,0 +1,109 @@
package com.project.ilsaenterprise.adapter;
import android.content.Context;
import android.location.Address;
import android.location.Geocoder;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.project.ilsaenterprise.HistoryAttendance;
import com.project.ilsaenterprise.MapActivity;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.models.Attendance;
import java.io.IOException;
import java.util.Calendar;
import java.util.List;
import java.util.Locale;
public class AttendanceAdapter extends ArrayAdapter<Attendance> {
private static final String TAG = "AttendanceAdapter" ;
private Context context;
private List<Attendance> attendanceList;
private DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("users");
private String workPos;
public AttendanceAdapter(List<Attendance> attendanceList, Context context){
super(context, R.layout.history_attendance_row, attendanceList);
this.context = context;
this.attendanceList = attendanceList;
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
viewHolder holder;
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(R.layout.history_attendance_row, null, true);
holder = new viewHolder();
holder.name = convertView.findViewById(R.id.nameTxt);
holder.date = convertView.findViewById(R.id.tvDate);
holder.time = convertView.findViewById(R.id.tvHour);
holder.lat = convertView.findViewById(R.id.lat_txt);
holder.lng = convertView.findViewById(R.id.long_txt);
holder.location = convertView.findViewById(R.id.tapping_txt);
holder.sideMarker = convertView.findViewById(R.id.sideMarker);
// holder.ket = convertView.findViewById(R.id.ket_text);
convertView.setTag(holder);
Attendance attendance = attendanceList.get(position);
reference.child(attendance.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
workPos = snapshot.child("penempatan").getValue(String.class);
holder.date.setText(attendance.getDate());
holder.time.setText(attendance.getTime());
holder.lat.setText(attendance.getLat());
holder.lng.setText(attendance.getLng());
holder.location.setText(attendance.getStrLoc());
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
if(attendance.getKeterangan().equals("Masuk"))
{
holder.name.setText("Masuk");
holder.sideMarker.setBackgroundColor(convertView.getResources().getColor(R.color.Dark));
}
if(attendance.getKeterangan().equals("Keluar")){
holder.name.setText("Keluar");
holder.sideMarker.setBackgroundColor(convertView.getResources().getColor(R.color.YellowLight));
}
return convertView;
}
static class viewHolder{
TextView name;
TextView date;
TextView lat;
TextView lng;
TextView time;
TextView location;
View sideMarker;
}
}

View File

@ -0,0 +1,26 @@
package com.project.ilsaenterprise.adapter;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.project.ilsaenterprise.R;
public class AttendanceHolder extends RecyclerView.ViewHolder {
TextView name, time, farm;
public AttendanceHolder(@NonNull View itemView) {
super(itemView);
this.time = itemView.findViewById(R.id.timeAtt);
this.name = itemView.findViewById(R.id.nameTxt);
//this.district = itemView.findViewById(R.id.districtAtt);
//this.farm = itemView.findViewById(R.id.farmAtt);
//this.commentBtn = itemView.findViewById(R.id.commentBtn);
}
}

View File

@ -0,0 +1,81 @@
package com.project.ilsaenterprise.adapter;
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 androidx.recyclerview.widget.RecyclerView;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.models.Beacon;
import java.util.List;
public class BeaconAdapter extends ArrayAdapter<Beacon> {
private List<Beacon> monitoringList;
private Context context;
public BeaconAdapter (List<Beacon> monitoringList, Context context){
super(context, R.layout.layout_item_beacon, monitoringList);
this.monitoringList = monitoringList;
this.context = context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
viewHolder holder;
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(R.layout.layout_item_beacon, null, true);
holder = new viewHolder();
holder.tvEntryId = convertView.findViewById(R.id.tvEntryID);
holder.tvCreatedAt = convertView.findViewById(R.id.tvCreatedAt);
holder.tvTemperature = convertView.findViewById(R.id.tvTemperature);
holder.tvHumidity = convertView.findViewById(R.id.tvHumidity);
holder.tvPressure = convertView.findViewById(R.id.tvPressure);
holder.tvCO = convertView.findViewById(R.id.tvCO);
holder.tvWindSpeed = convertView.findViewById(R.id.tvWindSpeed);
holder.tvWindDirection = convertView.findViewById(R.id.tvWindDirection);
holder.tvPrecipitation = convertView.findViewById(R.id.tvPrecipitation);
holder.tvHeatIndex = convertView.findViewById(R.id.tvHeatIndex);
convertView.setTag(holder);
Beacon beacon = monitoringList.get(position);
// String[] time = TUnits.getTimeAgo(monitoringAlat.getCreated_at());
//
// String date = time[2] + " " + time[1] + " " + time[0];
// String clock = String.format("%02d", Integer.parseInt(time[3])) + " : " + String.format("%02d", Integer.parseInt(time[4])) + " : " + String.format("%02d", Integer.parseInt(time[5])) + " WIB";
holder.tvEntryId.setText(beacon.getEntry_id());
holder.tvCreatedAt.setText(beacon.getCreated_at());
holder.tvTemperature.setText(beacon.getTemperature());
holder.tvHumidity.setText(beacon.getHumidity());
holder.tvPressure.setText(beacon.getPressure());
holder.tvCO.setText(beacon.getCO());
holder.tvWindSpeed.setText(beacon.getWind_speed());
holder.tvWindDirection.setText(beacon.getWind_direction());
holder.tvPrecipitation.setText(beacon.getPrecipitation());
holder.tvHeatIndex.setText(beacon.getHeat_index());
return convertView;
}
static class viewHolder{
TextView tvEntryId;
TextView tvCreatedAt;
TextView tvTemperature;
TextView tvHumidity;
TextView tvPressure;
TextView tvCO;
TextView tvWindSpeed;
TextView tvWindDirection;
TextView tvPrecipitation;
TextView tvHeatIndex;
}
}

View File

@ -0,0 +1,85 @@
package com.project.ilsaenterprise.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.RecyclerView;
import com.google.firebase.auth.FirebaseAuth;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.models.ChatMessage;
import com.project.ilsaenterprise.models.UserChat;
import java.util.ArrayList;
public class ChatMessageRecyclerAdapter extends RecyclerView.Adapter<ChatMessageRecyclerAdapter.ViewHolder>{
private ArrayList<ChatMessage> mMessages;
private ArrayList<UserChat> mUsers;
private Context mContext;
public ChatMessageRecyclerAdapter(ArrayList<ChatMessage> mMessages, ArrayList<UserChat> mUsers, Context mContext) {
this.mMessages = mMessages;
this.mUsers = mUsers;
this.mContext = mContext;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.chat_messages_list, parent, false);
final ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
if(FirebaseAuth.getInstance().getUid().equals(mMessages.get(position).getUser().getUser_id())){
((ViewHolder)holder).username.setTextColor(ContextCompat.getColor(mContext, R.color.Green1));
}
else{
((ViewHolder)holder).username.setTextColor(ContextCompat.getColor(mContext, R.color.Blue));
}
((ViewHolder)holder).username.setText(mMessages.get(position).getUser().getUsername());
((ViewHolder)holder).message.setText(mMessages.get(position).getMessage());
}
@Override
public int getItemCount() {
return mMessages.size();
}
public class ViewHolder extends RecyclerView.ViewHolder
{
TextView message, username;
public ViewHolder(View itemView) {
super(itemView);
message = itemView.findViewById(R.id.chat_message_message);
username = itemView.findViewById(R.id.chat_message_username);
}
}
}

View File

@ -0,0 +1,83 @@
package com.project.ilsaenterprise.adapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.models.Chatroom;
import java.util.ArrayList;
public class ChatroomRecyclerAdapter extends RecyclerView.Adapter<ChatroomRecyclerAdapter.ViewHolder>{
private ArrayList<Chatroom> mChatrooms = new ArrayList<>();
private ChatroomRecyclerClickListener mChatroomRecyclerClickListener;
public ChatroomRecyclerAdapter(ArrayList<Chatroom> chatrooms, ChatroomRecyclerClickListener chatroomRecyclerClickListener) {
this.mChatrooms = chatrooms;
mChatroomRecyclerClickListener = chatroomRecyclerClickListener;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.chatroom_row, parent, false);
final ViewHolder holder = new ViewHolder(view, mChatroomRecyclerClickListener);
return holder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
((ViewHolder)holder).chatroomTitle.setText(mChatrooms.get(position).getTitle());
}
@Override
public int getItemCount() {
return mChatrooms.size();
}
public class ViewHolder extends RecyclerView.ViewHolder implements
View.OnClickListener
{
TextView chatroomTitle;
ChatroomRecyclerClickListener clickListener;
public ViewHolder(View itemView, ChatroomRecyclerClickListener clickListener) {
super(itemView);
chatroomTitle = itemView.findViewById(R.id.chatroom_title);
this.clickListener = clickListener;
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
clickListener.onChatroomSelected(getAdapterPosition());
}
}
public interface ChatroomRecyclerClickListener {
public void onChatroomSelected(int position);
}
}

View File

@ -0,0 +1,102 @@
package com.project.ilsaenterprise.adapter;
import android.content.Context;
import android.net.Uri;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.models.Comment;
import com.project.ilsaenterprise.models.ContactModel;
import com.squareup.picasso.Picasso;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import de.hdodenhof.circleimageview.CircleImageView;
public class CommentAdapter extends ArrayAdapter<Comment> {
private static final String TAG = "CommentAdapter" ;
private Context context;
private List<Comment> commentList;
DatabaseReference refUser = FirebaseDatabase.getInstance().getReference("users");
private GoogleSignInAccount googleLogin;
private FirebaseAuth mAuth;
private FirebaseUser userFirebase;
public CommentAdapter(List<Comment> commentList, Context context){
super(context, R.layout.panen_row, commentList);
this.context = context;
this.commentList = commentList;
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
viewHolder holder;
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(R.layout.comment_row, null, true);
holder = new viewHolder();
holder.nama = convertView.findViewById(R.id.namaComment);
holder.waktu = convertView.findViewById(R.id.timeComment);
holder.komentar = convertView.findViewById(R.id.commentTv);
holder.image = convertView.findViewById(R.id.imageComment);
convertView.setTag(holder);
googleLogin = GoogleSignIn.getLastSignedInAccount(context);
mAuth = FirebaseAuth.getInstance();
userFirebase = mAuth.getCurrentUser();
Comment comment = commentList.get(position);
refUser.child(comment.getUser()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
ContactModel contactModel = snapshot.getValue(ContactModel.class);
if(contactModel.getImage() != null)
Picasso.get().load(contactModel.getImage()).placeholder(R.drawable.employee_img).into(holder.image);
if(contactModel.getUid().equals(userFirebase.getUid()))
Picasso.get().load(userFirebase.getPhotoUrl()).placeholder(R.drawable.employee_img).into(holder.image);
holder.nama.setText(contactModel.getNamaLengkap());
holder.waktu.setText(comment.getTimestamp());
holder.komentar.setText(comment.getKomentar());
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
return convertView;
}
static class viewHolder{
TextView nama, waktu, komentar;
CircleImageView image;
}
}

View File

@ -0,0 +1,59 @@
package com.project.ilsaenterprise.adapter;
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.project.ilsaenterprise.R;
import com.project.ilsaenterprise.models.ContactModel;
import com.squareup.picasso.Picasso;
import java.util.List;
import de.hdodenhof.circleimageview.CircleImageView;
public class ContactAdapter extends ArrayAdapter<ContactModel> {
private static final String TAG = "Chat Adapter" ;
private Context context;
private List<ContactModel> contactList;
public ContactAdapter(List<ContactModel> contactList, Context context){
super(context, R.layout.row_contact, contactList);
this.context = context;
this.contactList = contactList;
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
viewHolder holder;
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(R.layout.row_contact, null, true);
holder = new viewHolder();
holder.nama = convertView.findViewById(R.id.namaKontak);
holder.jabatan = convertView.findViewById(R.id.jabatanKontak);
holder.penempatan = convertView.findViewById(R.id.penempatanKontak);
holder.email = convertView.findViewById(R.id.emailKontak);
holder.image = convertView.findViewById(R.id.imageContact);
convertView.setTag(holder);
ContactModel contact = contactList.get(position);
Picasso.get().load(contact.getImage()).placeholder(R.drawable.employee_img).into(holder.image);
holder.nama.setText(contact.getNamaLengkap());
holder.jabatan.setText(contact.getJabatan());
holder.penempatan.setText(contact.getPenempatan());
holder.email.setText(contact.getEmail());
return convertView;
}
static class viewHolder{
TextView nama, jabatan, penempatan, email;
CircleImageView image;
}
}

View File

@ -0,0 +1,96 @@
package com.project.ilsaenterprise.adapter;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ProgressBar;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.utils.SquareImageView;
import java.util.ArrayList;
public class GridImageAdapter extends ArrayAdapter<String> {
private Context mContext;
private LayoutInflater mInflater;
private int layoutResource;
private String mAppend;
private ArrayList<String> imgURLs;
public GridImageAdapter(Context context, int layoutResource, String append, ArrayList<String> imgURLs) {
super(context, layoutResource, imgURLs);
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mContext = context;
this.layoutResource = layoutResource;
mAppend = append;
this.imgURLs = imgURLs;
}
private static class ViewHolder {
SquareImageView image;
ProgressBar mProgressBar;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(layoutResource, parent, false);
holder = new ViewHolder();
holder.mProgressBar = (ProgressBar) convertView.findViewById(R.id.gridImageProgressbar);
holder.image = (SquareImageView) convertView.findViewById(R.id.gridImageView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
String imgURL = getItem(position);
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.displayImage(mAppend + imgURL, holder.image, new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
if (holder.mProgressBar != null) {
holder.mProgressBar.setVisibility(View.VISIBLE);
}
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
if (holder.mProgressBar != null) {
holder.mProgressBar.setVisibility(View.GONE);
}
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
if (holder.mProgressBar != null) {
holder.mProgressBar.setVisibility(View.GONE);
}
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
if (holder.mProgressBar != null) {
holder.mProgressBar.setVisibility(View.GONE);
}
}
});
return convertView;
}
}

View File

@ -0,0 +1,99 @@
package com.project.ilsaenterprise.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.models.Attendance;
import com.project.ilsaenterprise.models.ListGroup;
import com.project.ilsaenterprise.models.MonitoringListModel;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
public class GroupListAdapter extends RecyclerView.Adapter<GroupListAdapter.GroupViewHolder> {
private Context context;
private ArrayList<ListGroup> listGroups;
private GroupListAdapter.onItemClickListener clickListener;
public interface onItemClickListener{
void onItemClick(View view, int position);
}
public GroupListAdapter(Context context, ArrayList<ListGroup> listGroups, onItemClickListener clickListener) {
this.context = context;
this.listGroups = listGroups;
this.clickListener = clickListener;
}
public class GroupViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView groupName, countMessages;
public GroupViewHolder(@NonNull View itemView) {
super(itemView);
groupName = itemView.findViewById(R.id.tvGroupName);
countMessages = itemView.findViewById(R.id.tvCount);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
clickListener.onItemClick(v, getAdapterPosition());
}
}
@NonNull
@Override
public GroupViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_chat, parent, false);
return new GroupViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull GroupViewHolder holder, int position) {
ListGroup currentItem = listGroups.get(position);
// String imgUrl = currentItem.getImageUrl();
// Picasso.get().load(imgUrl).into(holder.imageData);
// if(currentItem.getImgLink() != null){
// String imgProfile = currentItem.getImgLink();
// RequestOptions options = RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.ALL);
// Glide.with(context).load(imgProfile).thumbnail(0.25f).apply(options).into(holder.userImage);
// }
// else
// holder.userImage.setImageResource(R.drawable.user_farmer);
holder.groupName.setText(currentItem.getGroupName());
holder.countMessages.setText(currentItem.getCountMessages());
}
@Override
public int getItemCount() {
return listGroups.size();
}
}

View File

@ -0,0 +1,119 @@
package com.project.ilsaenterprise.adapter;
import android.app.Activity;
import android.content.Context;
import android.text.format.DateFormat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.models.Attendance;
import java.util.Calendar;
import java.util.List;
import java.util.Locale;
public class HistoryWfhAdapter extends ArrayAdapter<Attendance> {
private static final String TAG = "AttendanceAdapter" ;
private Context context;
private List<Attendance> attendanceList;
private DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("users");
private String workPos;
public HistoryWfhAdapter(List<Attendance> attendanceList, Context context){
super(context, R.layout.history_wfh_row, attendanceList);
this.context = context;
this.attendanceList = attendanceList;
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
viewHolder holder;
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(R.layout.history_wfh_row, null, true);
holder = new viewHolder();
holder.name = convertView.findViewById(R.id.nameTxt);
holder.date = convertView.findViewById(R.id.timeAtt);
holder.lat = convertView.findViewById(R.id.lat_txt);
holder.lng = convertView.findViewById(R.id.long_txt);
holder.location = convertView.findViewById(R.id.lokasi_txt);
holder.in = convertView.findViewById(R.id.enterIv);
holder.out = convertView.findViewById(R.id.outIv);
holder.locString = convertView.findViewById(R.id.tapping_txt);
// holder.ket = convertView.findViewById(R.id.ket_text);
convertView.setTag(holder);
Attendance attendance = attendanceList.get(position);
reference.child(attendance.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
workPos = snapshot.child("penempatan").getValue(String.class);
holder.date.setText(attendance.getTime());
holder.lat.setText(attendance.getLat());
holder.lng.setText(attendance.getLng());
holder.location.setText(workPos);
holder.locString.setText(attendance.getStrLoc());
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
if(attendance.getKeterangan().equals("Masuk"))
{
holder.name.setText("Masuk");
holder.in.setVisibility(View.VISIBLE);
holder.out.setVisibility(View.INVISIBLE);
}
if(attendance.getKeterangan().equals("Keluar")){
holder.name.setText("Keluar");
holder.in.setVisibility(View.INVISIBLE);
holder.out.setVisibility(View.VISIBLE);
}
// holder.ket.setText(attendance.getKeterangan());
return convertView;
}
private String getTime(long time) {
Calendar cal = Calendar.getInstance(Locale.ENGLISH);
cal.setTimeInMillis(time);
String date = DateFormat.format("HH:mm:ss", cal).toString();
return date;
}
private String getDate(long time) {
Calendar cal = Calendar.getInstance(Locale.ENGLISH);
cal.setTimeInMillis(time);
String date = DateFormat.format("dd MMMM yyyy", cal).toString();
return date;
}
static class viewHolder{
TextView name;
TextView date;
TextView lat;
TextView lng;
TextView location;
TextView timein;
ImageView out, in;
TextView locString;
}
}

View File

@ -0,0 +1,7 @@
package com.project.ilsaenterprise.adapter;
import android.view.View;
public interface ItemClickTodo {
void OnClick(View view, int pos, boolean isLongClick);
}

View File

@ -0,0 +1,58 @@
package com.project.ilsaenterprise.adapter;
import android.content.Context;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.project.ilsaenterprise.R;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
public class MediaAdapter extends RecyclerView.Adapter<MediaAdapter.MediaViewHolder>{
ArrayList<String> mediaList;
Context context;
public MediaAdapter(Context context, ArrayList<String> mediaList){
this.context = context;
this.mediaList = mediaList;
}
@NonNull
@Override
public MediaViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_media,null, false);
MediaViewHolder mediaViewHolder = new MediaViewHolder(layoutView);
return mediaViewHolder;
}
@Override
public void onBindViewHolder(@NonNull MediaViewHolder holder, int position) {
Glide.with(context).load(Uri.parse(mediaList.get(position))).into(holder.mMedia);
}
@Override
public int getItemCount() {
return mediaList.size();
}
public class MediaViewHolder extends RecyclerView.ViewHolder {
ImageView mMedia;
public MediaViewHolder(View itemView) {
super(itemView);
mMedia = itemView.findViewById(R.id.media);
}
}
}

View File

@ -0,0 +1,178 @@
package com.project.ilsaenterprise.adapter;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.models.GroupMessageModel;
import com.squareup.picasso.Picasso;
import java.util.List;
import java.util.Objects;
public class MessageGroupListAdapter extends RecyclerView.Adapter {
private static final int VIEW_TYPE_MESSAGE_SENT = 1;
private static final int VIEW_TYPE_MESSAGE_RECEIVED = 2;
//private FirebaseAuth mAuth = FirebaseAuth.getInstance();
private Context mContext;
private List<GroupMessageModel> mMessageList;
private String UID;
public MessageGroupListAdapter(Context context, List<GroupMessageModel> messageList, String getUID) {
mContext = context;
mMessageList = messageList;
UID = getUID;
}
@Override
public int getItemCount() {
return mMessageList.size();
}
@Override
public int getItemViewType(int position) {
GroupMessageModel message = (GroupMessageModel) mMessageList.get(position);
if (message.getSenderID().equals(UID)) {
return VIEW_TYPE_MESSAGE_SENT;
} else {
return VIEW_TYPE_MESSAGE_RECEIVED;
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view;
if (viewType == VIEW_TYPE_MESSAGE_SENT) {
view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_message_send, parent, false);
return new SentMessageHolder(view);
} else if (viewType == VIEW_TYPE_MESSAGE_RECEIVED) {
view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_message_received, parent, false);
return new ReceivedMessageHolder(view);
}
return null;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
GroupMessageModel message = (GroupMessageModel) mMessageList.get(position);
switch (holder.getItemViewType()) {
case VIEW_TYPE_MESSAGE_SENT:
((SentMessageHolder) holder).bind(message);
break;
case VIEW_TYPE_MESSAGE_RECEIVED:
((ReceivedMessageHolder) holder).bind(message);
}
}
private class SentMessageHolder extends RecyclerView.ViewHolder {
TextView messageText, timeText;
SentMessageHolder(View itemView) {
super(itemView);
messageText = (TextView) itemView.findViewById(R.id.text_message_body);
timeText = (TextView) itemView.findViewById(R.id.text_message_time);
}
void bind(GroupMessageModel message) {
messageText.setText(message.getMessage());
timeText.setText(message.getTime());
}
}
private class ReceivedMessageHolder extends RecyclerView.ViewHolder {
TextView messageText, timeText, nameText, jabatan1, jabatan2, jabatan3, jabatanNew;
ImageView profileImage;
DatabaseReference userJabatan = FirebaseDatabase.getInstance().getReference().child("users");
ReceivedMessageHolder(View itemView) {
super(itemView);
messageText = itemView.findViewById(R.id.text_message_body);
jabatan1 = itemView.findViewById(R.id.jabatanLevel1);
jabatan2 = itemView.findViewById(R.id.jabatanLevel2);
jabatan3 = itemView.findViewById(R.id.jabatanLevel3);
jabatanNew = itemView.findViewById(R.id.jabatanLevel4);
timeText = itemView.findViewById(R.id.text_message_time);
nameText = itemView.findViewById(R.id.text_message_name);
profileImage = itemView.findViewById(R.id.image_message_profile);
}
void bind(GroupMessageModel message) {
messageText.setText(message.getMessage());
timeText.setText(message.getTime());
nameText.setText(message.getName());
userJabatan.child(message.getSenderID()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if((snapshot.hasChild("role")))
{
if(Objects.equals(snapshot.child("role").getValue(), "Level 1")){
jabatan1.setText(Objects.requireNonNull(snapshot.child("role").getValue()).toString());
jabatan1.setVisibility(View.VISIBLE);
}
if(Objects.equals(snapshot.child("role").getValue(), "Level 2")){
jabatan2.setText(Objects.requireNonNull(snapshot.child("role").getValue()).toString());
jabatan2.setVisibility(View.VISIBLE);
}
if(Objects.equals(snapshot.child("role").getValue(), "Level 3")){
jabatan3.setText(Objects.requireNonNull(snapshot.child("role").getValue()).toString());
jabatan3.setVisibility(View.VISIBLE);
}
}
else {
jabatanNew.setVisibility(View.VISIBLE);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
userJabatan.child(message.getSenderID()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if((snapshot.hasChild("image")))
{
String imageUrl = snapshot.child("image").getValue().toString();
Picasso.get().load(imageUrl).placeholder(R.drawable.profile_image).into(profileImage);
}
else
return;
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
}
}

View File

@ -0,0 +1,141 @@
package com.project.ilsaenterprise.adapter;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.Priority;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.models.MonitoringListModel;
import com.squareup.picasso.Picasso;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Objects;
public class MonitoringAdapter extends RecyclerView.Adapter<MonitoringAdapter.MonitoringViewHolder> {
public ArrayList<MonitoringListModel> monitoringListModels;
private onItemClickListener clickListener;
private Context context;
public interface onItemClickListener{
void onItemClick(View view, int position);
}
public MonitoringAdapter(ArrayList<MonitoringListModel> monitoringListModels, onItemClickListener clickListener, Context context) {
this.monitoringListModels = monitoringListModels;
this.clickListener = clickListener;
this.context = context;
}
public class MonitoringViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public ImageView imageData, userImage, btnComment;
public TextView username, district, farm, decription, uploadDate, timestamp, totalSee, totalComment, jabatan1, jabatan2, jabatan3, jabatanNew, jabatan;
public MonitoringViewHolder(@NonNull View itemView) {
super(itemView);
imageData = itemView.findViewById(R.id.imageData);
userImage = itemView.findViewById(R.id.ivProfile);
username = itemView.findViewById(R.id.uploaderTxt);
district = itemView.findViewById(R.id.distrikPost);
farm = itemView.findViewById(R.id.kebunPost);
decription = itemView.findViewById(R.id.tvDescription);
uploadDate = itemView.findViewById(R.id.dayTxt);
timestamp = itemView.findViewById(R.id.idMonitoring);
totalSee = itemView.findViewById(R.id.countSee);
totalComment = itemView.findViewById(R.id.countComment);
btnComment = itemView.findViewById(R.id.icComment);
jabatan1 = itemView.findViewById(R.id.jabatanLevel1);
jabatan2 = itemView.findViewById(R.id.jabatanLevel2);
jabatan3 = itemView.findViewById(R.id.jabatanLevel3);
jabatanNew = itemView.findViewById(R.id.jabatanLevel4);
jabatan = itemView.findViewById(R.id.tvJabatan);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
clickListener.onItemClick(v, getAdapterPosition());
}
}
@NonNull
@Override
public MonitoringViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_data, parent, false);
return new MonitoringViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MonitoringViewHolder holder, int position) {
MonitoringListModel currentItem = monitoringListModels.get(position);
String imgUrl = currentItem.getImageUrl();
Picasso.get().load(imgUrl).into(holder.imageData);
if(currentItem.getImgLink() != null){
String imgProfile = currentItem.getImgLink();
RequestOptions options = RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.ALL);
Glide.with(context).load(imgProfile).thumbnail(0.25f).apply(options).into(holder.userImage);
}
else
holder.userImage.setImageResource(R.drawable.user_farmer);
holder.username.setText(currentItem.getFullName());
holder.district.setText(currentItem.getDistrict());
holder.farm.setText(currentItem.getFarm());
holder.decription.setText(currentItem.getDeskripsi());
holder.uploadDate.setText(currentItem.getDateUpload());
holder.timestamp.setText(currentItem.getTimestamp());
holder.totalSee.setText(String.valueOf(currentItem.getCountSee()));
holder.totalComment.setText(String.valueOf(currentItem.getCountComment()));
holder.jabatan.setText(currentItem.getJabatan());
if(Objects.equals(currentItem.getRole(), "Level 1")){
holder.jabatan1.setText(currentItem.getRole());
holder.jabatan1.setVisibility(View.VISIBLE);
}
if(Objects.equals(currentItem.getRole(), "Level 2")){
holder.jabatan2.setText(currentItem.getRole());
holder.jabatan2.setVisibility(View.VISIBLE);
}
if(Objects.equals(currentItem.getRole(), "Level 3")){
holder.jabatan3.setText(currentItem.getRole());
holder.jabatan3.setVisibility(View.VISIBLE);
}
else
holder.jabatanNew.setVisibility(View.VISIBLE);
holder.btnComment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "INFO " + currentItem.getImgLink(), Toast.LENGTH_LONG).show();
}
});
}
@Override
public int getItemCount() {
return monitoringListModels.size();
}
}

View File

@ -0,0 +1,73 @@
package com.project.ilsaenterprise.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.models.ModelNews;
import com.project.ilsaenterprise.models.NewsViewHolder;
import com.project.ilsaenterprise.services.TimeUnits;
import java.util.List;
public class NewsAdapter extends RecyclerView.Adapter<NewsViewHolder> {
public List<ModelNews> androidList;
private Context mContext;
private NewsAdapter.onSelectData onSelectData;
public interface onSelectData {
void onSelected(ModelNews mdlNews);
}
public NewsAdapter(Context context, List<ModelNews> android, NewsAdapter.onSelectData onSelectData) {
this.mContext = context;
this.androidList = android;
this.onSelectData = onSelectData;
}
@NonNull
@Override
public NewsViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(mContext).inflate(R.layout.list_item_berita, viewGroup, false);
return new NewsViewHolder(view);
}
@Override
public void onBindViewHolder(NewsViewHolder viewHolder, int i) {
final ModelNews berita = androidList.get(i);
Glide.with(mContext)
.load(berita.getUrlToImage())
.diskCacheStrategy(DiskCacheStrategy.ALL)
.placeholder(R.drawable.placeholder_news)
//.transform(new CenterInside(), new RoundedCorners(30))
.apply(RequestOptions.bitmapTransform(new RoundedCorners(30)))
.into(viewHolder.image);
viewHolder.title.setText(berita.getTitle());
viewHolder.publishedAt.setText(TimeUnits.getTimeAgo(berita.getPublishedAt()));
viewHolder.cvNews.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onSelectData.onSelected(berita);
}
});
}
@Override
public int getItemCount() {
return androidList.size();
}
}

View File

@ -0,0 +1,76 @@
package com.project.ilsaenterprise.adapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.models.UserChat;
import java.util.ArrayList;
public class UserRecyclerAdapter extends RecyclerView.Adapter<UserRecyclerAdapter.ViewHolder>{
private ArrayList<UserChat> mUsers = new ArrayList<>();
public UserRecyclerAdapter(ArrayList<UserChat> users) {
this.mUsers = users;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.user_list, parent, false);
final ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
((ViewHolder)holder).username.setText(mUsers.get(position).getUsername());
((ViewHolder)holder).email.setText(mUsers.get(position).getEmail());
}
@Override
public int getItemCount() {
return mUsers.size();
}
public class ViewHolder extends RecyclerView.ViewHolder
{
TextView username, email;
public ViewHolder(View itemView) {
super(itemView);
username = itemView.findViewById(R.id.username);
email = itemView.findViewById(R.id.email);
}
}
}

View File

@ -0,0 +1,119 @@
package com.project.ilsaenterprise.adapter.monitoring;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.models.MonitoringListModel;
import com.squareup.picasso.Picasso;
import java.util.List;
import java.util.Objects;
public class MonitoringAdapter extends ArrayAdapter<MonitoringListModel> {
private static final String TAG = "MonitoringAdapater" ;
Context context;
private List<MonitoringListModel> models;
public MonitoringAdapter(List<MonitoringListModel> models, Context context){
super(context, R.layout.row_data, models);
this.context = context;
this.models = models;
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
viewHolder holder;
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(R.layout.row_data, null, true);
DatabaseReference userJabatan = FirebaseDatabase.getInstance().getReference().child("users");
holder = new viewHolder();
holder.imageData = (ImageView) convertView.findViewById(R.id.imageData);
// holder.userImage = (ImageView) convertView.findViewById(R.id.image_comment_profile);
holder.username = convertView.findViewById(R.id.uploaderTxt);
holder.uploadDate = convertView.findViewById(R.id.dayTxt);
holder.district = convertView.findViewById(R.id.distrikPost);
holder.farm = convertView.findViewById(R.id.kebunPost);
holder.decription = convertView.findViewById(R.id.tvDescription);
holder.timestamp = convertView.findViewById(R.id.idMonitoring);
holder.totalSee = convertView.findViewById(R.id.countSee);
holder.layContent = convertView.findViewById(R.id.layContent);
// holder.jabatan1 = convertView.findViewById(R.id.jabatanLevel1);
// holder.jabatan2 = convertView.findViewById(R.id.jabatanLevel2);
// holder.jabatan3 = convertView.findViewById(R.id.jabatanLevel3);
// holder.jabatanNew = convertView.findViewById(R.id.jabatanLevel4);
holder.totalComment = convertView.findViewById(R.id.countComment);
convertView.setTag(holder);
MonitoringListModel monitoringModel = models.get(position);
// try{
// userJabatan.child(monitoringModel.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
// @Override
// public void onDataChange(@NonNull DataSnapshot snapshot) {
// if((snapshot.hasChild("role")))
// {
// if(Objects.equals(snapshot.child("role").getValue(), "Level 1")){
// holder.jabatan1.setText(Objects.requireNonNull(snapshot.child("role").getValue()).toString());
// holder.jabatan1.setVisibility(View.VISIBLE);
// }
// if(Objects.equals(snapshot.child("role").getValue(), "Level 2")){
// holder.jabatan2.setText(Objects.requireNonNull(snapshot.child("role").getValue()).toString());
// holder.jabatan2.setVisibility(View.VISIBLE);
// }
// if(Objects.equals(snapshot.child("role").getValue(), "Level 3")){
// holder.jabatan3.setText(Objects.requireNonNull(snapshot.child("role").getValue()).toString());
// holder.jabatan3.setVisibility(View.VISIBLE);
// }
// }
// }
//
// @Override
// public void onCancelled(@NonNull DatabaseError error) {
//
// }
// });
// }catch (Exception e){
// holder.jabatanNew.setVisibility(View.VISIBLE);
// }
String imgUrl = monitoringModel.getImageUrl();
Picasso.get().load(imgUrl).into(holder.imageData);
// Picasso.get().load(monitoringModel.getImgLink()).into(holder.userImage);
holder.username.setText(monitoringModel.getFullName());
holder.uploadDate.setText(monitoringModel.getDateUpload());
holder.district.setText(monitoringModel.getDistrict());
holder.decription.setText(monitoringModel.getDeskripsi());
holder.farm.setText(monitoringModel.getFarm());
holder.timestamp.setText(monitoringModel.getTimestamp());
holder.totalSee.setText(String.valueOf(monitoringModel.getCountSee()));
holder.totalComment.setText(String.valueOf(monitoringModel.getCountComment()));
return convertView;
}
static class viewHolder{
ImageView imageData, userImage;
TextView username, district, farm, decription, uploadDate, timestamp, totalSee, totalComment;
RelativeLayout layContent;
// jabatan1, jabatan2, jabatan3, jabatanNew,
}
}

View File

@ -0,0 +1,275 @@
package com.project.ilsaenterprise.fragment;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.text.InputType;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.ListenerRegistration;
import com.project.ilsaenterprise.ChatroomActivity;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.adapter.ChatroomRecyclerAdapter;
import com.project.ilsaenterprise.models.Chatroom;
import com.project.ilsaenterprise.models.UserChat;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
public class ChatFragment extends Fragment implements
View.OnClickListener,
ChatroomRecyclerAdapter.ChatroomRecyclerClickListener {
private static final String TAG = "MainActivity";
public static final int ERROR_DIALOG_REQUEST = 9001;
public static final int PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION = 9002;
public static final int PERMISSIONS_REQUEST_ENABLE_GPS = 9003;
//widgets
private ProgressBar mProgressBar;
//vars
private ArrayList<Chatroom> mChatrooms = new ArrayList<>();
private Set<String> mChatroomIds = new HashSet<>();
private ChatroomRecyclerAdapter mChatroomRecyclerAdapter;
private RecyclerView mChatroomRecyclerView;
private ListenerRegistration mChatroomEventListener;
private FirebaseFirestore mDb;
private boolean mLocationPermissionGranted = false;
private FusedLocationProviderClient mFusedLocationClient;
private DatabaseReference chatRef = FirebaseDatabase.getInstance().getReference();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View root = inflater.inflate(R.layout.fragment_room_chat, container, false);
mProgressBar = root.findViewById(R.id.progressBar);
mChatroomRecyclerView = root.findViewById(R.id.chatrooms_recycler_view);
root.findViewById(R.id.fab_create_chatroom).setOnClickListener(this);
mDb = FirebaseFirestore.getInstance();
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(getContext());
initSupportActionBar();
initChatroomRecyclerView();
return root;
}
private void getUserDetails(){
DocumentReference userRef = mDb.collection(getString(R.string.user_list))
.document(FirebaseAuth.getInstance().getUid());
userRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if(task.isSuccessful()){
Log.d(TAG, "onComplete: successfully set the user client.");
UserChat user = task.getResult().toObject(UserChat.class);
//Log.d(TAG, "Data" + user.getEmail());
}
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d(TAG, "onActivityResult: called.");
// getChatrooms();
getUserDetails();
}
private void initSupportActionBar(){
getActivity().setTitle("Chatrooms");
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.fab_create_chatroom:{
newChatroomDialog();
}
}
}
private void initChatroomRecyclerView(){
mChatroomRecyclerAdapter = new ChatroomRecyclerAdapter(mChatrooms, this);
mChatroomRecyclerView.setAdapter(mChatroomRecyclerAdapter);
mChatroomRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
}
private void createRooms(String inputGroupName){
chatRef.child("Chats").child("Group").child(inputGroupName).setValue("")
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful())
Toast.makeText(getActivity(), "Grup telah di buat.", Toast.LENGTH_SHORT).show();
}
});
}
// private void getChatrooms(){
//
// FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
// .setTimestampsInSnapshotsEnabled(true)
// .build();
// mDb.setFirestoreSettings(settings);
//
// CollectionReference chatroomsCollection = mDb
// .collection(getString(R.string.collection_chatrooms));
//
// mChatroomEventListener = chatroomsCollection.addSnapshotListener(new EventListener<QuerySnapshot>() {
// @Override
// public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
// Log.d(TAG, "onEvent: called.");
//
// if (e != null) {
// Log.e(TAG, "onEvent: Listen failed.", e);
// return;
// }
//
// if(queryDocumentSnapshots != null){
// for (QueryDocumentSnapshot doc : queryDocumentSnapshots) {
//
// Chatroom chatroom = doc.toObject(Chatroom.class);
// if(!mChatroomIds.contains(chatroom.getChatroom_id())){
// mChatroomIds.add(chatroom.getChatroom_id());
// mChatrooms.add(chatroom);
// }
// }
// Log.d(TAG, "onEvent: number of chatrooms: " + mChatrooms.size());
// mChatroomRecyclerAdapter.notifyDataSetChanged();
// }
//
// }
// });
// }
private void buildNewChatroom(String chatroomName){
// final Chatroom chatroom = new Chatroom();
// chatroom.setTitle(chatroomName);
//
// DocumentReference newChatroomRef = mDb
// .collection(getString(R.string.collection_chatrooms))
// .document();
//
// chatroom.setChatroom_id(newChatroomRef.getId());
//
// newChatroomRef.set(chatroom).addOnCompleteListener(new OnCompleteListener<Void>() {
// @Override
// public void onComplete(@NonNull Task<Void> task) {
// //hideDialog();
//
// if(task.isSuccessful()){
// //navChatroomActivity(chatroom);
// }else{
// View parentLayout = getView().findViewById(android.R.id.content);
// Snackbar.make(parentLayout, "Something went wrong.", Snackbar.LENGTH_SHORT).show();
// }
// }
// });
chatRef.child("Chats").child("Group").child(chatroomName).setValue("")
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful())
Toast.makeText(getActivity(), "Grup telah di buat.", Toast.LENGTH_SHORT).show();
}
});
}
private void navChatroomActivity(Chatroom chatroom){
Intent intent = new Intent(getActivity(), ChatroomActivity.class);
intent.putExtra(getString(R.string.intent_chatroom), chatroom);
startActivity(intent);
}
private void newChatroomDialog(){
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle("Masukkan nama grup");
final EditText input = new EditText(getContext());
input.setInputType(InputType.TYPE_CLASS_TEXT);
builder.setView(input);
builder.setPositiveButton("Buat", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(!input.getText().toString().equals("")){
buildNewChatroom(input.getText().toString());
}
else {
Toast.makeText(getActivity(), "Masukkan nama grup", Toast.LENGTH_SHORT).show();
}
}
});
builder.setNegativeButton("Batal", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
}
@Override
public void onDestroy() {
super.onDestroy();
if(mChatroomEventListener != null){
mChatroomEventListener.remove();
}
}
@Override
public void onResume() {
super.onResume();
// getChatrooms();
getUserDetails();
}
@Override
public void onChatroomSelected(int position) {
navChatroomActivity(mChatrooms.get(position));
}
private void showDialog(){
mProgressBar.setVisibility(View.VISIBLE);
}
private void hideDialog(){
mProgressBar.setVisibility(View.GONE);
}
}

View File

@ -0,0 +1,77 @@
package com.project.ilsaenterprise.fragment;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.Toast;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.adapter.ContactAdapter;
import com.project.ilsaenterprise.models.ContactModel;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
public class ContactFragment extends Fragment {
private DatabaseReference userRef;
private String currentUser, userImageUrl;
private FirebaseAuth mAuth;
private static final int GalleryPick = 1;
private StorageReference UserProfileImgRef;
private View contactFragment;
private List<ContactModel> contactList;
private ListView contactLv;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
contactFragment = inflater.inflate(R.layout.fragment_contact, container, false);
contactList = new ArrayList<>();
contactLv = contactFragment.findViewById(R.id.listViewContact);
userRef = FirebaseDatabase.getInstance().getReference().child("users");
UserProfileImgRef = FirebaseStorage.getInstance().getReference().child("profileImage");
loadKontak();
return contactFragment;
}
private void loadKontak(){
userRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
contactList.clear();
for (DataSnapshot ds : snapshot.getChildren()) {
ContactModel contactModel = ds.getValue(ContactModel.class);
contactList.add(contactModel);
}
Collections.reverse(contactList);
ContactAdapter contactAdapter = new ContactAdapter(contactList, ContactFragment.this.getActivity());
contactLv.setAdapter(contactAdapter);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(getActivity().getApplicationContext(), "Download Error : " + error.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
}

View File

@ -0,0 +1,150 @@
package com.project.ilsaenterprise.fragment;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Spinner;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.adapter.GridImageAdapter;
import com.project.ilsaenterprise.utils.FileSearch;
import com.project.ilsaenterprise.utils.ImagePaths;
import java.util.ArrayList;
import java.util.Objects;
public class GalleryFragment extends Fragment {
private static final String TAG = "GalleryFragment";
//constants
private static final int NUM_GRID_COLUMNS = 3;
//Widget
private GridView gridView;
private ImageView galleryImage;
private ProgressBar progressBar;
private Spinner dirSpinner;
private String mAppend = "file:/";
//var
private ArrayList<String> directoryList;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_select_image, container, false);
galleryImage = view.findViewById(R.id.galleryImageView);
gridView = view.findViewById(R.id.gridView);
dirSpinner = view.findViewById(R.id.spinnerDirectory);
progressBar = view.findViewById(R.id.progressBar);
progressBar.setVisibility(View.GONE);
directoryList = new ArrayList<>();
ImageView shareClose = view.findViewById(R.id.ivClose);
shareClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
requireActivity().finish();
}
});
TextView nextScreen = view.findViewById(R.id.tvNext);
nextScreen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
init();
return view;
}
private void init(){
ImagePaths imagePaths = new ImagePaths();
if(FileSearch.getDirectoryPaths(imagePaths.PICTURES) != null){
directoryList = FileSearch.getDirectoryPaths(imagePaths.PICTURES);
}
directoryList.add(imagePaths.CAMERA);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item, directoryList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
dirSpinner.setAdapter(adapter);
Log.d("TESSSTTTTT", directoryList.get(0));
Log.d("TESSSTTTTT", directoryList.get(1));
dirSpinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Log.d("TESSSTTTTT", directoryList.get(i));
setupGridView(directoryList.get(i));
}
});
}
private void setupGridView(String selectedDirectory){
final ArrayList<String> imgUrls = FileSearch.getFilePaths(selectedDirectory);
//set grid column width
int gridWidth = getResources().getDisplayMetrics().widthPixels;
int imageWidth = gridWidth / NUM_GRID_COLUMNS;
gridView.setColumnWidth(imageWidth);
//use grid adapter to adapter the images to gridview file
GridImageAdapter adapter = new GridImageAdapter(getActivity(), R.layout.layout_grid_imageview, mAppend, imgUrls);
gridView.setAdapter(adapter);
setImage(imgUrls.get(0), galleryImage, mAppend);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
setImage(imgUrls.get(i), galleryImage, mAppend);
}
});
}
private void setImage(String imgUrl, ImageView image, String append){
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.displayImage(append + imgUrl, image, new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
progressBar.setVisibility(View.VISIBLE);
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
progressBar.setVisibility(View.INVISIBLE);
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
progressBar.setVisibility(View.INVISIBLE);
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
progressBar.setVisibility(View.INVISIBLE);
}
});
}
}

View File

@ -0,0 +1,142 @@
package com.project.ilsaenterprise.fragment;
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.project.ilsaenterprise.GroupChatActivity;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.adapter.AttendanceAdapter;
import com.project.ilsaenterprise.adapter.GroupListAdapter;
import com.project.ilsaenterprise.adapter.MonitoringAdapter;
import com.project.ilsaenterprise.models.ListGroup;
import com.project.ilsaenterprise.monitoring.DisplayMonitoring;
import com.project.ilsaenterprise.monitoring.ListData;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
public class GroupFragment extends Fragment {
private static final String TAG = "GroupFragment";
private View groupFragmentView;
private RecyclerView listGroupView;
private ArrayAdapter<String> arrayAdapter;
private ArrayList<ListGroup> listGroup = new ArrayList<>();//List_of_group
private DatabaseReference GroupRef = FirebaseDatabase.getInstance().getReference().child("Chats");
private DatabaseReference chatRef = FirebaseDatabase.getInstance().getReference();
private BottomSheetDialog bottomSheetDialog;
private Toast toast;
private GroupListAdapter groupListAdapter;
private GroupListAdapter.onItemClickListener clickListener;
public GroupFragment(){
//Public Constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
groupFragmentView = inflater.inflate(R.layout.fragment_group, container, false);
return groupFragmentView;
}
@Override
public void onStart() {
super.onStart();
RetrieveDisplayGroup();
}
private void setClickListener(){
clickListener = new GroupListAdapter.onItemClickListener() {
@Override
public void onItemClick(View view, int position) {
String idGroup = listGroup.get(position).getGroupName();
// ref.child(idMonitoring).child("listLihat").child(cUser).setValue(true);//Add viewer report
Intent groupChatIntent = new Intent(GroupFragment.this.getContext(), GroupChatActivity.class);
groupChatIntent.putExtra("groupName", idGroup);
startActivity(groupChatIntent);
}
};
}
private void RetrieveDisplayGroup() {
GroupRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
listGroup.clear();
for (DataSnapshot ds : snapshot.getChildren()) {
ListGroup model = new ListGroup();
model.setGroupName(ds.getKey());
GroupRef.child(Objects.requireNonNull(ds.getKey())).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
model.setCountMessages(String.valueOf(snapshot.getChildrenCount()));
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
listGroup.add(model);
}
InitializeFields();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
private void InitializeFields() {
setClickListener();
listGroupView = groupFragmentView.findViewById(R.id.listViewGroup);
groupListAdapter = new GroupListAdapter(GroupFragment.this.getContext(), listGroup, clickListener);
listGroupView.setLayoutManager(new LinearLayoutManager(GroupFragment.this.getContext(), LinearLayoutManager.VERTICAL, false));
listGroupView.setAdapter(groupListAdapter);
}
@Override
public void onResume() {
super.onResume();
RetrieveDisplayGroup();
}
}

View File

@ -0,0 +1,25 @@
package com.project.ilsaenterprise.fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.project.ilsaenterprise.R;
public class PhotoFragment extends Fragment {
private static final String TAG = "PhotoFragment";
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_camera, container, false);
Log.d(TAG, "onCreateView: started.");
return view;
}
}

View File

@ -0,0 +1,101 @@
package com.project.ilsaenterprise.models;
public class Attendance {
private String uid;
private String time;
private String date;
private String keterangan;
private String informasi;
private String lat;
private String lng;
private String strLoc;
private String penempatan;
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getPenempatan() {
return penempatan;
}
public void setPenempatan(String penempatan) {
this.penempatan = penempatan;
}
public String getStrLoc() {
return strLoc;
}
public void setStrLoc(String strLoc) {
this.strLoc = strLoc;
}
public Attendance(){
}
public Attendance(String uid, String time, String keterangan, String informasi, String lat, String lng) {
this.uid = uid;
this.time = time;
this.keterangan = keterangan;
this.informasi = informasi;
this.lat = lat;
this.lng = lng;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getKeterangan() {
return keterangan;
}
public void setKeterangan(String keterangan) {
this.keterangan = keterangan;
}
public String getInformasi() {
return informasi;
}
public void setInformasi(String informasi) {
this.informasi = informasi;
}
public String getLat() {
return lat;
}
public void setLat(String lat) {
this.lat = lat;
}
public String getLng() {
return lng;
}
public void setLng(String lng) {
this.lng = lng;
}
}

View File

@ -0,0 +1,101 @@
package com.project.ilsaenterprise.models;
public class Beacon {
public String created_at, entry_id, wind_speed, wind_direction, precipitation, CO, Pressure, temperature, humidity, heat_index;
public Beacon() {
}
public Beacon(String created_at, String entry_id, String wind_speed, String wind_direction, String precipitation, String CO, String pressure, String temperature, String humidity, String heat_index) {
this.created_at = created_at;
this.entry_id = entry_id;
this.wind_speed = wind_speed;
this.wind_direction = wind_direction;
this.precipitation = precipitation;
this.CO = CO;
Pressure = pressure;
this.temperature = temperature;
this.humidity = humidity;
this.heat_index = heat_index;
}
public String getCreated_at() {
return created_at;
}
public void setCreated_at(String created_at) {
this.created_at = created_at;
}
public String getEntry_id() {
return entry_id;
}
public void setEntry_id(String entry_id) {
this.entry_id = entry_id;
}
public String getWind_speed() {
return wind_speed;
}
public void setWind_speed(String wind_speed) {
this.wind_speed = wind_speed;
}
public String getWind_direction() {
return wind_direction;
}
public void setWind_direction(String wind_direction) {
this.wind_direction = wind_direction;
}
public String getPrecipitation() {
return precipitation;
}
public void setPrecipitation(String precipitation) {
this.precipitation = precipitation;
}
public String getCO() {
return CO;
}
public void setCO(String CO) {
this.CO = CO;
}
public String getPressure() {
return Pressure;
}
public void setPressure(String pressure) {
Pressure = pressure;
}
public String getTemperature() {
return temperature;
}
public void setTemperature(String temperature) {
this.temperature = temperature;
}
public String getHumidity() {
return humidity;
}
public void setHumidity(String humidity) {
this.humidity = humidity;
}
public String getHeat_index() {
return heat_index;
}
public void setHeat_index(String heat_index) {
this.heat_index = heat_index;
}
}

View File

@ -0,0 +1,147 @@
package com.project.ilsaenterprise.models;
public class Channel {
public Long id;
public String name, latitude, longitude, wind_speed, wind_direction, precipitation, Pressure, MQ7, temperature, humidity, heat_index, created_at, updated_at, last_entry_id;
public Channel() {
}
public Channel(Long id, String name, String latitude, String longitude, String wind_speed, String wind_direction, String precipitation, String pressure, String MQ7, String temperature, String humidity, String heat_index, String created_at, String updated_at, String last_entry_id) {
this.id = id;
this.name = name;
this.latitude = latitude;
this.longitude = longitude;
this.wind_speed = wind_speed;
this.wind_direction = wind_direction;
this.precipitation = precipitation;
Pressure = pressure;
this.MQ7 = MQ7;
this.temperature = temperature;
this.humidity = humidity;
this.heat_index = heat_index;
this.created_at = created_at;
this.updated_at = updated_at;
this.last_entry_id = last_entry_id;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLatitude() {
return latitude;
}
public void setLatitude(String latitude) {
this.latitude = latitude;
}
public String getLongitude() {
return longitude;
}
public void setLongitude(String longitude) {
this.longitude = longitude;
}
public String getWind_speed() {
return wind_speed;
}
public void setWind_speed(String wind_speed) {
this.wind_speed = wind_speed;
}
public String getWind_direction() {
return wind_direction;
}
public void setWind_direction(String wind_direction) {
this.wind_direction = wind_direction;
}
public String getPrecipitation() {
return precipitation;
}
public void setPrecipitation(String precipitation) {
this.precipitation = precipitation;
}
public String getPressure() {
return Pressure;
}
public void setPressure(String pressure) {
Pressure = pressure;
}
public String getMQ7() {
return MQ7;
}
public void setMQ7(String MQ7) {
this.MQ7 = MQ7;
}
public String getTemperature() {
return temperature;
}
public void setTemperature(String temperature) {
this.temperature = temperature;
}
public String getHumidity() {
return humidity;
}
public void setHumidity(String humidity) {
this.humidity = humidity;
}
public String getHeat_index() {
return heat_index;
}
public void setHeat_index(String heat_index) {
this.heat_index = heat_index;
}
public String getCreated_at() {
return created_at;
}
public void setCreated_at(String created_at) {
this.created_at = created_at;
}
public String getUpdated_at() {
return updated_at;
}
public void setUpdated_at(String updated_at) {
this.updated_at = updated_at;
}
public String getLast_entry_id() {
return last_entry_id;
}
public void setLast_entry_id(String last_entry_id) {
this.last_entry_id = last_entry_id;
}
}

View File

@ -0,0 +1,67 @@
package com.project.ilsaenterprise.models;
import com.google.firebase.firestore.ServerTimestamp;
import java.util.Date;
public class ChatMessage {
private UserChat user;
private String message;
private String message_id;
private @ServerTimestamp
Date timestamp;
public ChatMessage(UserChat user, String message, String message_id, Date timestamp) {
this.user = user;
this.message = message;
this.message_id = message_id;
this.timestamp = timestamp;
}
public ChatMessage() {
}
public UserChat getUser() {
return user;
}
public void setUser(UserChat user) {
this.user = user;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getMessage_id() {
return message_id;
}
public void setMessage_id(String message_id) {
this.message_id = message_id;
}
public Date getTimestamp() {
return timestamp;
}
public void setTimestamp(Date timestamp) {
this.timestamp = timestamp;
}
@Override
public String toString() {
return "ChatMessage{" +
"user=" + user +
", message='" + message + '\'' +
", message_id='" + message_id + '\'' +
", timestamp=" + timestamp +
'}';
}
}

View File

@ -0,0 +1,72 @@
package com.project.ilsaenterprise.models;
import android.os.Parcel;
import android.os.Parcelable;
public class Chatroom implements Parcelable {
private String title;
private String chatroom_id;
public Chatroom(String title, String chatroom_id) {
this.title = title;
this.chatroom_id = chatroom_id;
}
public Chatroom() {
}
protected Chatroom(Parcel in) {
title = in.readString();
chatroom_id = in.readString();
}
public static final Creator<Chatroom> CREATOR = new Creator<Chatroom>() {
@Override
public Chatroom createFromParcel(Parcel in) {
return new Chatroom(in);
}
@Override
public Chatroom[] newArray(int size) {
return new Chatroom[size];
}
};
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getChatroom_id() {
return chatroom_id;
}
public void setChatroom_id(String chatroom_id) {
this.chatroom_id = chatroom_id;
}
@Override
public String toString() {
return "Chatroom{" +
"title='" + title + '\'' +
", chatroom_id='" + chatroom_id + '\'' +
'}';
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(title);
dest.writeString(chatroom_id);
}
}

View File

@ -0,0 +1,38 @@
package com.project.ilsaenterprise.models;
public class Comment {
private String user, komentar, timestamp;
public Comment() {
}
public Comment(String user, String komentar, String timestamp) {
this.user = user;
this.komentar = komentar;
this.timestamp = timestamp;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getKomentar() {
return komentar;
}
public void setKomentar(String komentar) {
this.komentar = komentar;
}
public String getTimestamp() {
return timestamp;
}
public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
}
}

View File

@ -0,0 +1,30 @@
package com.project.ilsaenterprise.models;
public class Company {
private String nama;
private String logo;
public Company() {
}
public Company(String nama, String logo) {
this.nama = nama;
this.logo = logo;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public String getLogo() {
return logo;
}
public void setLogo(String logo) {
this.logo = logo;
}
}

View File

@ -0,0 +1,101 @@
package com.project.ilsaenterprise.models;
public class ContactModel {
String deviceId, email, image, jabatan, namaLengkap, noHp, noPeg, penempatan, role, uid;
public ContactModel() {
}
public ContactModel(String deviceId, String email, String image, String jabatan, String namaLengkap, String noHp, String noPeg, String penempatan, String role, String uid) {
this.deviceId = deviceId;
this.email = email;
this.image = image;
this.jabatan = jabatan;
this.namaLengkap = namaLengkap;
this.noHp = noHp;
this.noPeg = noPeg;
this.penempatan = penempatan;
this.role = role;
this.uid = uid;
}
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getJabatan() {
return jabatan;
}
public void setJabatan(String jabatan) {
this.jabatan = jabatan;
}
public String getNamaLengkap() {
return namaLengkap;
}
public void setNamaLengkap(String namaLengkap) {
this.namaLengkap = namaLengkap;
}
public String getNoHp() {
return noHp;
}
public void setNoHp(String noHp) {
this.noHp = noHp;
}
public String getNoPeg() {
return noPeg;
}
public void setNoPeg(String noPeg) {
this.noPeg = noPeg;
}
public String getPenempatan() {
return penempatan;
}
public void setPenempatan(String penempatan) {
this.penempatan = penempatan;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
}

View File

@ -0,0 +1,151 @@
package com.project.ilsaenterprise.models;
public class Employees {
private String uid;
private String email;
private String jabatan;
private String namaLengkap;
private String noPeg;
private String noHp;
private String image;
private String perusahaan;
private String divisi;
private String nip;
private String DOB;
private String alamat;
private String deviceId;
private String gender;
public Employees(){
}
public Employees(String uid, String email, String jabatan, String namaLengkap, String noPeg, String noHp, String image, String perusahaan, String divisi, String nip, String DOB, String alamat, String deviceId, String gender) {
this.uid = uid;
this.email = email;
this.jabatan = jabatan;
this.namaLengkap = namaLengkap;
this.noPeg = noPeg;
this.noHp = noHp;
this.image = image;
this.perusahaan = perusahaan;
this.divisi = divisi;
this.nip = nip;
this.DOB = DOB;
this.alamat = alamat;
this.deviceId = deviceId;
this.gender = gender;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getJabatan() {
return jabatan;
}
public void setJabatan(String jabatan) {
this.jabatan = jabatan;
}
public String getNamaLengkap() {
return namaLengkap;
}
public void setNamaLengkap(String namaLengkap) {
this.namaLengkap = namaLengkap;
}
public String getNoPeg() {
return noPeg;
}
public void setNoPeg(String noPeg) {
this.noPeg = noPeg;
}
public String getNoHp() {
return noHp;
}
public void setNoHp(String noHp) {
this.noHp = noHp;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getPerusahaan() {
return perusahaan;
}
public void setPerusahaan(String perusahaan) {
this.perusahaan = perusahaan;
}
public String getDivisi() {
return divisi;
}
public void setDivisi(String divisi) {
this.divisi = divisi;
}
public String getNip() {
return nip;
}
public void setNip(String nip) {
this.nip = nip;
}
public String getDOB() {
return DOB;
}
public void setDOB(String DOB) {
this.DOB = DOB;
}
public String getAlamat() {
return alamat;
}
public void setAlamat(String alamat) {
this.alamat = alamat;
}
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}

View File

@ -0,0 +1,70 @@
package com.project.ilsaenterprise.models;
public class GroupMessageModel {
private String senderID;
private String name;
private String message;
private String date;
private String time;
private String urlImage;
public GroupMessageModel() {
}
public GroupMessageModel(String senderID, String name, String message, String date, String time, String urlImage) {
this.senderID = senderID;
this.name = name;
this.message = message;
this.date = date;
this.time = time;
this.urlImage = urlImage;
}
public String getSenderID() {
return senderID;
}
public void setSenderID(String senderID) {
this.senderID = senderID;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getUrlImage() {
return urlImage;
}
public void setUrlImage(String urlImage) {
this.urlImage = urlImage;
}
}

View File

@ -0,0 +1,29 @@
package com.project.ilsaenterprise.models;
public class ListGroup {
public String groupName, countMessages;
public ListGroup() {
}
public ListGroup(String groupName, String countMessages) {
this.groupName = groupName;
this.countMessages = countMessages;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public String getCountMessages() {
return countMessages;
}
public void setCountMessages(String countMessages) {
this.countMessages = countMessages;
}
}

View File

@ -0,0 +1,41 @@
package com.project.ilsaenterprise.models;
public class ModelNews {
private String title;
private String publishedAt;
private String url;
private String urlToImage;
public void setTitle(String title) {
this.title = title;
}
public void setPublishedAt(String publishedAt) {
this.publishedAt = publishedAt;
}
public void setUrl(String url) {
this.url = url;
}
public void setUrlToImage(String urlToImage) {
this.urlToImage = urlToImage;
}
public String getTitle() {
return title;
}
public String getPublishedAt() {
return publishedAt;
}
public String getUrl() {
return url;
}
public String getUrlToImage() {
return urlToImage;
}
}

View File

@ -0,0 +1,185 @@
package com.project.ilsaenterprise.models;
public class MonitoringListModel {
private String district, farm, deskripsi, timestamp, imageUrl, uid, latitude, longitude, fullName, role, jenisLaporan, dateUpload, imgLink, tipeLaporan, blok, afdeling, jabatan;
private long countSee, countComment;
public MonitoringListModel() {
}
public MonitoringListModel(String district, String farm, String deskripsi, String timestamp, String imageUrl, String uid, String latitude, String longitude, String fullName, String role, String jenisLaporan, String dateUpload, String imgLink, String tipeLaporan, String blok, String afdeling, String jabatan, long countSee, long countComment) {
this.district = district;
this.farm = farm;
this.deskripsi = deskripsi;
this.timestamp = timestamp;
this.imageUrl = imageUrl;
this.uid = uid;
this.latitude = latitude;
this.longitude = longitude;
this.fullName = fullName;
this.role = role;
this.jenisLaporan = jenisLaporan;
this.dateUpload = dateUpload;
this.imgLink = imgLink;
this.tipeLaporan = tipeLaporan;
this.blok = blok;
this.afdeling = afdeling;
this.jabatan = jabatan;
this.countSee = countSee;
this.countComment = countComment;
}
public String getDistrict() {
return district;
}
public void setDistrict(String district) {
this.district = district;
}
public String getFarm() {
return farm;
}
public void setFarm(String farm) {
this.farm = farm;
}
public String getDeskripsi() {
return deskripsi;
}
public void setDeskripsi(String deskripsi) {
this.deskripsi = deskripsi;
}
public String getTimestamp() {
return timestamp;
}
public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
}
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getLatitude() {
return latitude;
}
public void setLatitude(String latitude) {
this.latitude = latitude;
}
public String getLongitude() {
return longitude;
}
public void setLongitude(String longitude) {
this.longitude = longitude;
}
public String getFullName() {
return fullName;
}
public void setFullName(String fullName) {
this.fullName = fullName;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
public String getJenisLaporan() {
return jenisLaporan;
}
public void setJenisLaporan(String jenisLaporan) {
this.jenisLaporan = jenisLaporan;
}
public String getDateUpload() {
return dateUpload;
}
public void setDateUpload(String dateUpload) {
this.dateUpload = dateUpload;
}
public String getImgLink() {
return imgLink;
}
public void setImgLink(String imgLink) {
this.imgLink = imgLink;
}
public String getTipeLaporan() {
return tipeLaporan;
}
public void setTipeLaporan(String tipeLaporan) {
this.tipeLaporan = tipeLaporan;
}
public String getBlok() {
return blok;
}
public void setBlok(String blok) {
this.blok = blok;
}
public String getAfdeling() {
return afdeling;
}
public void setAfdeling(String afdeling) {
this.afdeling = afdeling;
}
public String getJabatan() {
return jabatan;
}
public void setJabatan(String jabatan) {
this.jabatan = jabatan;
}
public long getCountSee() {
return countSee;
}
public void setCountSee(long countSee) {
this.countSee = countSee;
}
public long getCountComment() {
return countComment;
}
public void setCountComment(long countComment) {
this.countComment = countComment;
}
}

View File

@ -0,0 +1,164 @@
package com.project.ilsaenterprise.models;
public class MonitoringModel {
private String fullName, district, farm, afdeling, deskripsi, jabatan, uploadDate, uploadTime, jenisLaporan, tipeLaporan, blok, timestamp, imageUrl, dilihat, uid, latitude, longitude;
public MonitoringModel() {
}
public MonitoringModel(String fullName, String district, String farm, String afdeling, String deskripsi, String jabatan, String uploadDate, String uploadTime, String jenisLaporan, String tipeLaporan, String blok, String timestamp, String imageUrl, String dilihat, String uid, String latitude, String longitude) {
this.fullName = fullName;
this.district = district;
this.farm = farm;
this.afdeling = afdeling;
this.deskripsi = deskripsi;
this.jabatan = jabatan;
this.uploadDate = uploadDate;
this.uploadTime = uploadTime;
this.jenisLaporan = jenisLaporan;
this.tipeLaporan = tipeLaporan;
this.blok = blok;
this.timestamp = timestamp;
this.imageUrl = imageUrl;
this.dilihat = dilihat;
this.uid = uid;
this.latitude = latitude;
this.longitude = longitude;
}
public String getFullName() {
return fullName;
}
public void setFullName(String fullName) {
this.fullName = fullName;
}
public String getDistrict() {
return district;
}
public void setDistrict(String district) {
this.district = district;
}
public String getFarm() {
return farm;
}
public void setFarm(String farm) {
this.farm = farm;
}
public String getAfdeling() {
return afdeling;
}
public void setAfdeling(String afdeling) {
this.afdeling = afdeling;
}
public String getDeskripsi() {
return deskripsi;
}
public void setDeskripsi(String deskripsi) {
this.deskripsi = deskripsi;
}
public String getJabatan() {
return jabatan;
}
public void setJabatan(String jabatan) {
this.jabatan = jabatan;
}
public String getUploadDate() {
return uploadDate;
}
public void setUploadDate(String uploadDate) {
this.uploadDate = uploadDate;
}
public String getUploadTime() {
return uploadTime;
}
public void setUploadTime(String uploadTime) {
this.uploadTime = uploadTime;
}
public String getJenisLaporan() {
return jenisLaporan;
}
public void setJenisLaporan(String jenisLaporan) {
this.jenisLaporan = jenisLaporan;
}
public String getTipeLaporan() {
return tipeLaporan;
}
public void setTipeLaporan(String tipeLaporan) {
this.tipeLaporan = tipeLaporan;
}
public String getBlok() {
return blok;
}
public void setBlok(String blok) {
this.blok = blok;
}
public String getTimestamp() {
return timestamp;
}
public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
}
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
public String getDilihat() {
return dilihat;
}
public void setDilihat(String dilihat) {
this.dilihat = dilihat;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getLatitude() {
return latitude;
}
public void setLatitude(String latitude) {
this.latitude = latitude;
}
public String getLongitude() {
return longitude;
}
public void setLongitude(String longitude) {
this.longitude = longitude;
}
}

View File

@ -0,0 +1,30 @@
package com.project.ilsaenterprise.models;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView;
import com.project.ilsaenterprise.R;
public class NewsViewHolder extends RecyclerView.ViewHolder {
public ImageView image;
public TextView title;
public TextView publishedAt;
public RelativeLayout cvNews;
public View view;
public NewsViewHolder(View view) {
super(view);
cvNews = view.findViewById(R.id.cvNews);
image = view.findViewById(R.id.image);
title = view.findViewById(R.id.title);
publishedAt = view.findViewById(R.id.publishedAt);
this.view = view;
}
}

View File

@ -0,0 +1,101 @@
package com.project.ilsaenterprise.models;
import android.os.Parcel;
import android.os.Parcelable;
public class UserChat implements Parcelable{
private String email;
private String user_id;
private String username;
private String avatar;
public UserChat(String email, String user_id, String username, String avatar) {
this.email = email;
this.user_id = user_id;
this.username = username;
this.avatar = avatar;
}
public UserChat() {
}
protected UserChat(Parcel in) {
email = in.readString();
user_id = in.readString();
username = in.readString();
avatar = in.readString();
}
public static final Creator<UserChat> CREATOR = new Creator<UserChat>() {
@Override
public UserChat createFromParcel(Parcel in) {
return new UserChat(in);
}
@Override
public UserChat[] newArray(int size) {
return new UserChat[size];
}
};
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
public static Creator<UserChat> getCREATOR() {
return CREATOR;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getUser_id() {
return user_id;
}
public void setUser_id(String user_id) {
this.user_id = user_id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@Override
public String toString() {
return "User{" +
"email='" + email + '\'' +
", user_id='" + user_id + '\'' +
", username='" + username + '\'' +
", avatar='" + avatar + '\'' +
'}';
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(email);
dest.writeString(user_id);
dest.writeString(username);
dest.writeString(avatar);
}
}

View File

@ -0,0 +1,540 @@
package com.project.ilsaenterprise.monitoring;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.content.ContextCompat;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions;
import com.denzcoskun.imageslider.ImageSlider;
import com.denzcoskun.imageslider.constants.ScaleTypes;
import com.denzcoskun.imageslider.interfaces.ItemClickListener;
import com.denzcoskun.imageslider.models.SlideModel;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MapStyleOptions;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.adapter.CommentAdapter;
import com.project.ilsaenterprise.models.Comment;
import com.project.ilsaenterprise.models.MonitoringListModel;
import com.project.ilsaenterprise.models.MonitoringModel;
import com.squareup.picasso.Picasso;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.TimeZone;
import de.hdodenhof.circleimageview.CircleImageView;
public class DisplayMonitoring extends AppCompatActivity {
private String idMonitoring;
private ImageSlider imageSlider;
List<MonitoringModel> postList;
ListView listView;
private TextView afdeling, blok, deskripsi, distrik, farm, fullName, jabatan, jenisLaporan, tipeLaporan, uploadDate, uploadTime, countComment, jabatan1, jabatan2, jabatan3, jabatanNew, yearBottom;
private GoogleMap googleMap;
private MapView mapView;
private ImageView btnComment, ivProfile;
SupportMapFragment mapFragment;
private static final float DEFAULT_ZOOM = 20.5f;
private static final int ERROR_DIALOG_REQUEST = 9001;
ArrayList<Double> myList = new ArrayList<Double>();
private BottomSheetDialog bottomSheetDialog;
private String uid, displayName, displayImage;
private String currentDate = new SimpleDateFormat("yyyy", Locale.getDefault()).format(new Date());
private DatabaseReference imageRef;
DatePicker datePicker;
private CircleImageView imageComment;
private RelativeLayout relComment;
DatabaseReference commentRef = FirebaseDatabase.getInstance().getReference("monitoring");
private HashMap<Object, String> commentMap = new HashMap<>();
private static final int SECOND_MILLIS = 1000;
private static final int MINUTE_MILLIS = 60 * SECOND_MILLIS;
private static final int HOUR_MILLIS = 60 * MINUTE_MILLIS;
private static final int DAY_MILLIS = 24 * HOUR_MILLIS;
DatabaseReference refUser = FirebaseDatabase.getInstance().getReference("users");
private GoogleSignInAccount googleLogin;
private FirebaseAuth mAuth;
private FirebaseUser userFirebase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.Dark));
setContentView(R.layout.activity_display_monitoring);
if(getSupportActionBar() != null){
getSupportActionBar().hide();
}
googleLogin = GoogleSignIn.getLastSignedInAccount(getApplicationContext());
mAuth = FirebaseAuth.getInstance();
idMonitoring = getIntent().getExtras().get("idMonitoring").toString();
mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapViewMonitoring);
imageSlider = (ImageSlider) findViewById(R.id.imageSlider);
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
bottomSheetDialog = new BottomSheetDialog(
DisplayMonitoring.this, R.style.BottomSheetDialogTheme
);
final List<SlideModel> slideModelList = new ArrayList<>();
imageRef = FirebaseDatabase.getInstance().getReference("users");
InitializeFields();
yearBottom = findViewById(R.id.yearBottom);
yearBottom.setText(String.valueOf(year));
countComment();
FirebaseDatabase.getInstance().getReference().child("monitoring").child(idMonitoring).child("media")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for(DataSnapshot data:snapshot.getChildren()){
slideModelList.add(new SlideModel(data.child("link").getValue().toString(), ScaleTypes.CENTER_INSIDE));
}
imageSlider.setImageList(slideModelList, ScaleTypes.FIT);
imageSlider.setItemClickListener(new ItemClickListener() {
@Override
public void onItemSelected(int i) {
String urlZoom = slideModelList.get(i).getImageUrl().toString();
Intent groupChatIntent = new Intent(DisplayMonitoring.this, ZoomMonitoring.class);
groupChatIntent.putExtra("urlZoom", urlZoom);
startActivity(groupChatIntent);
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
btnComment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
comment();
}
});
}
@Override
protected void onStart() {
super.onStart();
userFirebase = mAuth.getCurrentUser();
retrieveInfo();
}
private String getTimeAgo(long time) {
if (time < 1000000000000L) {
time *= 1000;
}
// String dateNow = getDateNow();
long now = System.currentTimeMillis();
if (time > now || time <= 0) {
return null;
}
final long diff = now - time;
if (diff < MINUTE_MILLIS) {
return "Baru saja";
} else if (diff < 2 * MINUTE_MILLIS) {
return "semenit yang lalu";
} else if (diff < 50 * MINUTE_MILLIS) {
return diff / MINUTE_MILLIS + " menit yang lalu";
} else if (diff < 90 * MINUTE_MILLIS) {
return "sejam yang lalu";
} else if (diff < 24 * HOUR_MILLIS) {
int count = Integer.parseInt(getDateNow()) - Integer.parseInt(getDateTS(time));
if(count == 0){
Calendar cal = Calendar.getInstance(Locale.ENGLISH);
cal.setTimeInMillis(time);
String date = DateFormat.format("HH:mm", cal).toString();
return "Hari ini, " + date;
}
else {
Calendar cal = Calendar.getInstance(Locale.ENGLISH);
cal.setTimeInMillis(time);
String date = DateFormat.format("HH:mm", cal).toString();
return "Kemarin, " + date;
}
// return diff / HOUR_MILLIS + " jam yang lalu";
}
// else if (diff < 48 * HOUR_MILLIS) {
// Calendar cal = Calendar.getInstance(Locale.ENGLISH);
// cal.setTimeInMillis(time);
// String date = DateFormat.format("HH:mm", cal).toString();
// return "Kemarin, " + date;
// return "kemarin";
else {
return ((diff / DAY_MILLIS) + 1) + " hari yang lalu";
}
}
private String getDateTS(long time){
Calendar cal = Calendar.getInstance(Locale.ENGLISH);
cal.setTimeInMillis(time);
String date = DateFormat.format("dd", cal).toString();
return date;
}
private String getDateNow(){
Date c = Calendar.getInstance().getTime();
SimpleDateFormat df = new SimpleDateFormat("dd", Locale.getDefault());
String formattedDate = df.format(c);
return formattedDate;
}
private void countComment(){
TextView showCount = findViewById(R.id.countComment);
commentRef.child(idMonitoring).child("komentar").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
showCount.setText(String.valueOf(dataSnapshot.getChildrenCount()));
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(getBaseContext(), "" +databaseError.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
private void comment(){
View bottomSheetView = LayoutInflater.from(getApplicationContext()).inflate(
R.layout.layout_comment_monitoring,
(LinearLayout)findViewById(R.id.bottomSheetContainer)
);
CircleImageView imageProfile = bottomSheetView.findViewById(R.id.image_message_profile);
ImageView closeView = bottomSheetView.findViewById(R.id.btnCloseView);
TextView komenTv = bottomSheetView.findViewById(R.id.komenTxt);
loadComment(bottomSheetView);
imageRef.child(userFirebase.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.hasChild("image")){
String retrieveImg = snapshot.child("image").getValue().toString();
Picasso.get().load(retrieveImg).placeholder(R.drawable.employee_img).into(imageProfile);
}
else
Picasso.get().load(userFirebase.getPhotoUrl()).placeholder(R.drawable.employee_img).into(imageProfile);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(getBaseContext(), error.toString(), Toast.LENGTH_SHORT).show();
}
});
bottomSheetDialog.setCancelable(false);
// bottomSheetDialog.setDismissWithAnimation(true);
bottomSheetDialog.setContentView(bottomSheetView);
bottomSheetDialog.show();
komenTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bottomSheetDialog.cancel();
View keyView = LayoutInflater.from(getApplicationContext()).inflate(
R.layout.layout_open_keyboard,
(ConstraintLayout)findViewById(R.id.keySheetContainer)
);
String cUser = userFirebase.getUid();
String timeStamp = String.valueOf(System.currentTimeMillis());
EditText comment = keyView.findViewById(R.id.komentarTxt);
ImageButton kirim = keyView.findViewById(R.id.kirimKomen);
kirim.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
commentMap.put("timestamp", timeStamp);
commentMap.put("komentar", comment.getText().toString());
commentMap.put("user", cUser);
commentRef.child(idMonitoring).child("komentar").child(timeStamp).setValue(commentMap);
Toast.makeText(keyView.getContext(), "Komentar ditambahkan", Toast.LENGTH_SHORT).show();
bottomSheetDialog.cancel();
}
});
bottomSheetDialog.setCancelable(true);
bottomSheetDialog.setContentView(keyView);
bottomSheetDialog.show();
}
});
closeView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bottomSheetDialog.cancel();
}
});
}
private void loadComment(View view) {
final ProgressBar progressBar = (ProgressBar) view.findViewById(R.id.progressBar);
progressBar.setVisibility(View.VISIBLE);
ListView listView = view.findViewById(R.id.lvComment);
List<Comment> commentList = new ArrayList<>();
commentRef.child(idMonitoring).child("komentar").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
commentList.clear();
for (DataSnapshot ds : dataSnapshot.getChildren()) {
Comment comment = ds.getValue(Comment.class);
comment.setTimestamp(getTimeAgo(Long.parseLong(comment.getTimestamp())));
commentList.add(comment);
}
Collections.reverse(commentList);
CommentAdapter commentAdapter = new CommentAdapter(commentList, getBaseContext());
listView.setAdapter(commentAdapter);
progressBar.setVisibility(View.INVISIBLE);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(getBaseContext(), "Data Error" + databaseError.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
private void retrieveInfo(){
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("monitoring").child(idMonitoring);
DatabaseReference userRef = FirebaseDatabase.getInstance().getReference("users");
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if((snapshot.exists())){
MonitoringModel monitoringModel = snapshot.getValue(MonitoringModel.class);
uid = monitoringModel.getUid();
userRef.child(uid).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String username = snapshot.child("namaLengkap").getValue(String.class);
String getJabatan = snapshot.child("jabatan").getValue(String.class);
String role = snapshot.child("role").getValue(String.class);
String imgProfile = snapshot.child("image").getValue(String.class);
getRoleUser(role);
fullName.setText(username);
jabatan.setText(getJabatan);
if(imgProfile != null){
Picasso.get().load(imgProfile).placeholder(R.drawable.employee_img).into(ivProfile);
}
else
ivProfile.setImageResource(R.drawable.user_farmer);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
double lat = Double.parseDouble(monitoringModel.getLatitude());
double lon = Double.parseDouble(monitoringModel.getLongitude());
myList.add(lat);
myList.add(lon);
afdeling.setText(monitoringModel.getAfdeling());
blok.setText(monitoringModel.getBlok());
deskripsi.setText(monitoringModel.getDeskripsi());
farm.setText(monitoringModel.getFarm());
distrik.setText(monitoringModel.getDistrict());
jenisLaporan.setText(monitoringModel.getJenisLaporan());
tipeLaporan.setText(monitoringModel.getTipeLaporan());
uploadDate.setText(getDate(Long.parseLong(monitoringModel.getTimestamp())));
mapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap mMap) {
googleMap = mMap;
googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
LatLng lokasi = new LatLng(lat, lon);
googleMap.addMarker(new MarkerOptions().position(lokasi).title(monitoringModel.getDistrict()).snippet(monitoringModel.getFarm()));
CameraPosition cameraPosition = new CameraPosition.Builder().target(lokasi).zoom(16).build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}
});
ImageView imgFullscreen = findViewById(R.id.imgFullscreen);
imgFullscreen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(DisplayMonitoring.this, LokasiMonitoring.class);
intent.putExtra("monitoringList", myList);
startActivity(intent);
}
});
}
else
{
Toast.makeText(DisplayMonitoring.this, "Kesalahan Jaringan", Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
userRef.child(userFirebase.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String imgProfile = snapshot.child("image").getValue(String.class);
if(imgProfile == null){
Picasso.get().load(userFirebase.getPhotoUrl()).placeholder(R.drawable.employee_img).into(imageComment);
}
if(imgProfile != null){
Picasso.get().load(imgProfile).placeholder(R.drawable.employee_img).into(imageComment);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
private String getDate(long time) {
Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
cal.setTimeInMillis(time);
String clock = cal.getTime().getHours() + ":" + cal.getTime().getMinutes();
String date = "";
int day = cal.get(Calendar.DATE);
int month = cal.get(Calendar.MONTH);
int year = cal.get(Calendar.YEAR);
if(month == 0)
date += day + " Januari " + year;
if(month == 1)
date += day + " Februari " + year;
if(month == 2)
date += day + " Maret " + year;
if(month == 3)
date += day + " April " + year;
if(month == 4)
date += day + " Mei " + year;
if(month == 5)
date += day + " Juni " + year;
if(month == 6)
date += day + " Juli " + year;
if(month == 7)
date += day + " Agustus " + year;
if(month == 8)
date += day + " September " + year;
if(month == 9)
date += day + " Oktober " + year;
if(month == 10)
date += day + " November " + year;
if(month == 11)
date += day + " Desember " + year;
return clock + " | " + date;
}
private void getRoleUser(String role){
if(role != null)
{
if(Objects.equals(role, "Level 1")){
jabatan1.setText(Objects.requireNonNull(role));
jabatan1.setVisibility(View.VISIBLE);
}
if(Objects.equals(role, "Level 2")){
jabatan2.setText(Objects.requireNonNull(role));
jabatan2.setVisibility(View.VISIBLE);
}
if(Objects.equals(role, "Level 3")){
jabatan3.setText(Objects.requireNonNull(role));
jabatan3.setVisibility(View.VISIBLE);
}
}
else {
jabatanNew.setVisibility(View.VISIBLE);
}
}
private void InitializeFields() {
afdeling = findViewById(R.id.afdelingMonitoring);
blok = findViewById(R.id.blokMonitoring);
deskripsi = findViewById(R.id.deskripsiMonitoring);
distrik = findViewById(R.id.distrikMonitoring);
farm = findViewById(R.id.kebunMonitoring);
fullName = findViewById(R.id.uploaderMonitoring);
jabatan = findViewById(R.id.tvJabatan);
tipeLaporan = findViewById(R.id.tvReport);
jenisLaporan = findViewById(R.id.tvSubReport);
uploadDate = findViewById(R.id.dayMonitoring);
countComment = findViewById(R.id.countComment);
btnComment = findViewById(R.id.imageViewComment);
jabatan1 = findViewById(R.id.jabatanLevel1);
jabatan2 = findViewById(R.id.jabatanLevel2);
jabatan3 = findViewById(R.id.jabatanLevel3);
jabatanNew = findViewById(R.id.jabatanLevel4);
ivProfile = findViewById(R.id.ivProfile);
imageComment = findViewById(R.id.image_comment_profile);
}
}

View File

@ -0,0 +1,207 @@
package com.project.ilsaenterprise.monitoring;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.adapter.MonitoringAdapter;
import com.project.ilsaenterprise.models.MonitoringListModel;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Locale;
import java.util.TimeZone;
public class HistoryMonitoring extends AppCompatActivity {
private ArrayList<MonitoringListModel> postList;
private RecyclerView listMonitoringView;
private ArrayList<String> listMonitoring = new ArrayList<>();
private FirebaseAuth mAuth;
private String currentDate = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(new Date());
private DatabaseReference ref = FirebaseDatabase.getInstance().getReference("monitoring");
private String cUser;
private RelativeLayout relNoList;
private DatabaseReference userRef = FirebaseDatabase.getInstance().getReference("users");
private MonitoringAdapter monitoringAdapter;
private MonitoringAdapter.onItemClickListener clickListener;
private GoogleSignInAccount googleLogin;
private LinearLayout layPlaceholder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.Dark));
setContentView(R.layout.activity_history_monitoring);
getSupportActionBar().hide();
googleLogin = GoogleSignIn.getLastSignedInAccount(getApplicationContext());
mAuth = FirebaseAuth.getInstance();
cUser = mAuth.getCurrentUser().getUid();
relNoList = findViewById(R.id.relNoList);
postList = new ArrayList<>();
loadPost();
}
private void InitializeFields() {
setClickListener();
listMonitoringView = findViewById(R.id.listHistoryMonitoring);
monitoringAdapter = new MonitoringAdapter(postList, clickListener, HistoryMonitoring.this);
listMonitoringView.setLayoutManager(new LinearLayoutManager(HistoryMonitoring.this, LinearLayoutManager.VERTICAL, false));
listMonitoringView.setAdapter(monitoringAdapter);
}
private void setClickListener(){
clickListener = new MonitoringAdapter.onItemClickListener() {
@Override
public void onItemClick(View view, int position) {
TextView currentGroupName = view.findViewById(R.id.idMonitoring);
String idMonitoring = currentGroupName.getText().toString();
TextView dilihatTxt = view.findViewById(R.id.countSee);
ref.child(idMonitoring).child("listLihat").child(cUser).setValue(true);
Intent groupChatIntent = new Intent(HistoryMonitoring.this, ShowSelfMonitoring.class);
groupChatIntent.putExtra("idMonitoring", idMonitoring);
startActivity(groupChatIntent);
}
};
}
private void loadPost() {
ProgressBar progressBar = findViewById(R.id.pbHistoryMonitoring);
layPlaceholder = findViewById(R.id.layPlaceholder);
progressBar.setVisibility(View.VISIBLE);
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
postList.clear();
for(DataSnapshot ds : dataSnapshot.getChildren()){
MonitoringListModel modelPost = ds.getValue(MonitoringListModel.class);
if(modelPost.getUid().equals(cUser))
{
Log.d("MASUK", modelPost.getUid());
long jlhLihat = dataSnapshot.child(modelPost.getTimestamp()).child("listLihat").getChildrenCount();
long jlhComment = dataSnapshot.child(modelPost.getTimestamp()).child("komentar").getChildrenCount();
modelPost.setCountSee(jlhLihat);
modelPost.setCountComment(jlhComment);
long tmp = Long.parseLong(modelPost.getTimestamp());
modelPost.setDateUpload(getDate(tmp));
userRef.child(modelPost.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String username = snapshot.child("namaLengkap").getValue(String.class);
String role = snapshot.child("role").getValue(String.class);
String userImg = snapshot.child("image").getValue(String.class);
String jabatan = snapshot.child("jabatan").getValue(String.class);
modelPost.setFullName(username);
modelPost.setRole(role);
modelPost.setImgLink(userImg);
modelPost.setJabatan(jabatan);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
postList.add(modelPost);
}
else
continue;
}
Collections.reverse(postList);
if(postList.size() == 0)
relNoList.setVisibility(View.VISIBLE);
final Handler handler = new Handler(Looper.getMainLooper());
handler.postDelayed(new Runnable() {
@Override
public void run() {
layPlaceholder.setVisibility(View.GONE);
InitializeFields();
}
}, 1000);
progressBar.setVisibility(View.INVISIBLE);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(HistoryMonitoring.this, ""+databaseError.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
private String getDate(long time) {
Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
cal.setTimeInMillis(time);
String clock = cal.getTime().getHours() + ":" + cal.getTime().getMinutes();
String date = "";
int day = cal.get(Calendar.DATE);
int month = cal.get(Calendar.MONTH);
int year = cal.get(Calendar.YEAR);
if(month == 0)
date += day + " Januari " + year;
if(month == 1)
date += day + " Februari " + year;
if(month == 2)
date += day + " Maret " + year;
if(month == 3)
date += day + " April " + year;
if(month == 4)
date += day + " Mei " + year;
if(month == 5)
date += day + " Juni " + year;
if(month == 6)
date += day + " Juli " + year;
if(month == 7)
date += day + " Agustus " + year;
if(month == 8)
date += day + " September " + year;
if(month == 9)
date += day + " Oktober " + year;
if(month == 10)
date += day + " November " + year;
if(month == 11)
date += day + " Desember " + year;
return clock + " | " + date;
}
}

View File

@ -0,0 +1,701 @@
package com.project.ilsaenterprise.monitoring;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.format.DateFormat;
import android.text.style.BulletSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.Toast;
import com.facebook.shimmer.ShimmerFrameLayout;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.adapter.MonitoringAdapter;
import com.project.ilsaenterprise.models.MonitoringListModel;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.TimeZone;
public class ListData extends AppCompatActivity{
private static final String TAG = "List Data";
ArrayList<MonitoringListModel> postList;
private RecyclerView listMonitoringView;
private ArrayList<String> listMonitoring = new ArrayList<>();
//private FirebaseAuth mAuth;
private String currentDate = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(new Date());
private ImageView filterBtn;
private BottomSheetDialog bottomSheetDialog;
private Spinner spinnerDis, spinnerKeb;
private String[] distrik, kebunD1, kebunD2, kebunD3, kebunD4;
private ArrayAdapter<String> arrayAdapter_farm, arrayAdapter_tLap;
private RadioGroup listFilter;
private RadioButton semuaRadio, hamaRadio;
private ProgressBar progressBar;
private SwipeRefreshLayout swipeRefreshLayout;
private DatabaseReference userRef = FirebaseDatabase.getInstance().getReference("users");
private DatabaseReference ref = FirebaseDatabase.getInstance().getReference("monitoring");
private MonitoringAdapter monitoringAdapter;
private MonitoringAdapter.onItemClickListener clickListener;
private GoogleSignInAccount googleLogin;
private LinearLayout layPlaceholder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.Dark));
setContentView(R.layout.activity_list_data);
getSupportActionBar().hide();
googleLogin = GoogleSignIn.getLastSignedInAccount(getApplicationContext());
filterBtn = findViewById(R.id.filterBtn);
listFilter = findViewById(R.id.listFilterGroup);
semuaRadio = findViewById(R.id.radio0);
hamaRadio = findViewById(R.id.radio1);
progressBar = findViewById(R.id.progressBar);
swipeRefreshLayout = findViewById(R.id.swipeRefresh1);
layPlaceholder = findViewById(R.id.layPlaceholder);
bottomSheetDialog = new BottomSheetDialog(
ListData.this, R.style.BottomSheetDialogTheme
);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
loadPost();
swipeRefreshLayout.setRefreshing(false);
}
});
//mAuth = FirebaseAuth.getInstance();
postList = new ArrayList<>();
filterBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
View bottomSheetView = LayoutInflater.from(getApplicationContext()).inflate(
R.layout.layout_popup_filter,
(LinearLayout)findViewById(R.id.bottomSheetContainer)
);
spinnerDis = bottomSheetView.findViewById(R.id.spinnerDistrikFilter);
spinnerKeb = bottomSheetView.findViewById(R.id.spinnerKebunFilter);
spinnerDis.setEnabled(true);
spinnerKeb.setEnabled(false);
final Resources res = getResources();
kebunD1 = res.getStringArray(R.array.kebun_distrik_1);
kebunD2 = res.getStringArray(R.array.kebun_distrik_2);
kebunD3 = res.getStringArray(R.array.kebun_distrik_3);
kebunD4 = res.getStringArray(R.array.kebun_distrik_4);
distrik = res.getStringArray(R.array.distrik);
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(ListData.this, android.R.layout.simple_spinner_item, distrik);
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerDis.setAdapter(adapter1);
spinnerDis.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if(position == 0){
spinnerKeb.setEnabled(false);
}
else if(position==1)
{
spinnerKeb.setEnabled(true);
arrayAdapter_farm = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_spinner_item, kebunD1);
}
else if(position==2)
{
spinnerKeb.setEnabled(true);
arrayAdapter_farm = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_spinner_item, kebunD2);
}
else if(position==3)
{
spinnerKeb.setEnabled(true);
arrayAdapter_farm = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_spinner_item, kebunD3);
}
else if(position==4)
{
spinnerKeb.setEnabled(true);
arrayAdapter_farm = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_spinner_item, kebunD4);
}
spinnerKeb.setAdapter(arrayAdapter_farm);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
bottomSheetDialog.setContentView(bottomSheetView);
bottomSheetDialog.show();
}
});
loadPost();
loadFilter();
}
private void loadFilter(){
listFilter.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@SuppressLint("NonConstantResourceId")
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.radio0:
postList.clear();
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()){
MonitoringListModel modelPost = ds.getValue(MonitoringListModel.class);
long jlhLihat = dataSnapshot.child(modelPost.getTimestamp()).child("listLihat").getChildrenCount();
long jlhComment = dataSnapshot.child(modelPost.getTimestamp()).child("komentar").getChildrenCount();
modelPost.setCountSee(jlhLihat);
modelPost.setCountComment(jlhComment);
long tmp = Long.parseLong(modelPost.getTimestamp());
modelPost.setDateUpload(getDate(tmp));
userRef.child(modelPost.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String username = snapshot.child("namaLengkap").getValue(String.class);
String role = snapshot.child("role").getValue(String.class);
String userImg = snapshot.child("image").getValue(String.class);
modelPost.setFullName(username);
modelPost.setRole(role);
modelPost.setImgLink(userImg);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
postList.add(modelPost);
}
Collections.reverse(postList);
final Handler handler = new Handler(Looper.getMainLooper());
handler.postDelayed(new Runnable() {
@Override
public void run() {
InitializeFields();
}
}, 1000);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(ListData.this, ""+databaseError.getMessage(), Toast.LENGTH_LONG).show();
}
});
break;
case R.id.radio1:
postList.clear();
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()){
MonitoringListModel modelPost = ds.getValue(MonitoringListModel.class);
if(modelPost.getJenisLaporan().equals("Pemeliharaan TM")){
long jlhLihat = dataSnapshot.child(modelPost.getTimestamp()).child("listLihat").getChildrenCount();
long jlhComment = dataSnapshot.child(modelPost.getTimestamp()).child("komentar").getChildrenCount();
modelPost.setCountSee(jlhLihat);
modelPost.setCountComment(jlhComment);
long tmp = Long.parseLong(modelPost.getTimestamp());
modelPost.setDateUpload(getDate(tmp));
userRef.child(modelPost.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String username = snapshot.child("namaLengkap").getValue(String.class);
String role = snapshot.child("role").getValue(String.class);
String userImg = snapshot.child("image").getValue(String.class);
modelPost.setFullName(username);
modelPost.setRole(role);
modelPost.setImgLink(userImg);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
postList.add(modelPost);
}
}
Collections.reverse(postList);
final Handler handler = new Handler(Looper.getMainLooper());
handler.postDelayed(new Runnable() {
@Override
public void run() {
InitializeFields();
}
}, 1000);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(ListData.this, ""+databaseError.getMessage(), Toast.LENGTH_LONG).show();
}
});
break;
case R.id.radio2:
postList.clear();
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()){
MonitoringListModel modelPost = ds.getValue(MonitoringListModel.class);
if(modelPost.getJenisLaporan().equals("Pemeliharaan TBM")){
long jlhLihat = dataSnapshot.child(modelPost.getTimestamp()).child("listLihat").getChildrenCount();
long jlhComment = dataSnapshot.child(modelPost.getTimestamp()).child("komentar").getChildrenCount();
modelPost.setCountSee(jlhLihat);
modelPost.setCountComment(jlhComment);
long tmp = Long.parseLong(modelPost.getTimestamp());
modelPost.setDateUpload(getDate(tmp));
userRef.child(modelPost.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String username = snapshot.child("namaLengkap").getValue(String.class);
String role = snapshot.child("role").getValue(String.class);
String userImg = snapshot.child("image").getValue(String.class);
modelPost.setFullName(username);
modelPost.setRole(role);
modelPost.setImgLink(userImg);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
postList.add(modelPost);
}
}
Collections.reverse(postList);
final Handler handler = new Handler(Looper.getMainLooper());
handler.postDelayed(new Runnable() {
@Override
public void run() {
InitializeFields();
}
}, 1000);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(ListData.this, ""+databaseError.getMessage(), Toast.LENGTH_LONG).show();
}
});
break;
case R.id.radio3:
postList.clear();
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()){
MonitoringListModel modelPost = ds.getValue(MonitoringListModel.class);
if(modelPost.getJenisLaporan().equals("Kondisi Jalan")){
long jlhLihat = dataSnapshot.child(modelPost.getTimestamp()).child("listLihat").getChildrenCount();
long jlhComment = dataSnapshot.child(modelPost.getTimestamp()).child("komentar").getChildrenCount();
modelPost.setCountSee(jlhLihat);
modelPost.setCountComment(jlhComment);
long tmp = Long.parseLong(modelPost.getTimestamp());
modelPost.setDateUpload(getDate(tmp));
userRef.child(modelPost.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String username = snapshot.child("namaLengkap").getValue(String.class);
String role = snapshot.child("role").getValue(String.class);
String userImg = snapshot.child("image").getValue(String.class);
modelPost.setFullName(username);
modelPost.setRole(role);
modelPost.setImgLink(userImg);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
postList.add(modelPost);
}
}
Collections.reverse(postList);
final Handler handler = new Handler(Looper.getMainLooper());
handler.postDelayed(new Runnable() {
@Override
public void run() {
InitializeFields();
}
}, 1000);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(ListData.this, ""+databaseError.getMessage(), Toast.LENGTH_LONG).show();
}
});
break;
case R.id.radio4:
postList.clear();
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()){
MonitoringListModel modelPost = ds.getValue(MonitoringListModel.class);
if(modelPost.getJenisLaporan().equals("Hama")){
long jlhLihat = dataSnapshot.child(modelPost.getTimestamp()).child("listLihat").getChildrenCount();
long jlhComment = dataSnapshot.child(modelPost.getTimestamp()).child("komentar").getChildrenCount();
modelPost.setCountSee(jlhLihat);
modelPost.setCountComment(jlhComment);
long tmp = Long.parseLong(modelPost.getTimestamp());
modelPost.setDateUpload(getDate(tmp));
userRef.child(modelPost.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String username = snapshot.child("namaLengkap").getValue(String.class);
String role = snapshot.child("role").getValue(String.class);
String userImg = snapshot.child("image").getValue(String.class);
modelPost.setFullName(username);
modelPost.setRole(role);
modelPost.setImgLink(userImg);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
postList.add(modelPost);
}
}
Collections.reverse(postList);
final Handler handler = new Handler(Looper.getMainLooper());
handler.postDelayed(new Runnable() {
@Override
public void run() {
InitializeFields();
}
}, 1000);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(ListData.this, ""+databaseError.getMessage(), Toast.LENGTH_LONG).show();
}
});
break;
case R.id.radio5:
postList.clear();
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()){
MonitoringListModel modelPost = ds.getValue(MonitoringListModel.class);
if(modelPost.getJenisLaporan().equals("Penyakit")){
long jlhLihat = dataSnapshot.child(modelPost.getTimestamp()).child("listLihat").getChildrenCount();
long jlhComment = dataSnapshot.child(modelPost.getTimestamp()).child("komentar").getChildrenCount();
modelPost.setCountSee(jlhLihat);
modelPost.setCountComment(jlhComment);
long tmp = Long.parseLong(modelPost.getTimestamp());
modelPost.setDateUpload(getDate(tmp));
userRef.child(modelPost.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String username = snapshot.child("namaLengkap").getValue(String.class);
String role = snapshot.child("role").getValue(String.class);
String userImg = snapshot.child("image").getValue(String.class);
modelPost.setFullName(username);
modelPost.setRole(role);
modelPost.setImgLink(userImg);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
postList.add(modelPost);
}
}
Collections.reverse(postList);
final Handler handler = new Handler(Looper.getMainLooper());
handler.postDelayed(new Runnable() {
@Override
public void run() {
InitializeFields();
}
}, 1000);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(ListData.this, ""+databaseError.getMessage(), Toast.LENGTH_LONG).show();
}
});
break;
case R.id.radio6:
postList.clear();
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()){
MonitoringListModel modelPost = ds.getValue(MonitoringListModel.class);
if(modelPost.getJenisLaporan().equals("Pencurian")){
long jlhLihat = dataSnapshot.child(modelPost.getTimestamp()).child("listLihat").getChildrenCount();
long jlhComment = dataSnapshot.child(modelPost.getTimestamp()).child("komentar").getChildrenCount();
modelPost.setCountSee(jlhLihat);
modelPost.setCountComment(jlhComment);
long tmp = Long.parseLong(modelPost.getTimestamp());
modelPost.setDateUpload(getDate(tmp));
userRef.child(modelPost.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String username = snapshot.child("namaLengkap").getValue(String.class);
String role = snapshot.child("role").getValue(String.class);
String userImg = snapshot.child("image").getValue(String.class);
modelPost.setFullName(username);
modelPost.setRole(role);
modelPost.setImgLink(userImg);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
postList.add(modelPost);
}
}
Collections.reverse(postList);
final Handler handler = new Handler(Looper.getMainLooper());
handler.postDelayed(new Runnable() {
@Override
public void run() {
InitializeFields();
}
}, 1000);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(ListData.this, ""+databaseError.getMessage(), Toast.LENGTH_LONG).show();
}
});
break;
}
}
});
}
@Override
protected void onStart() {
super.onStart();
}
@Override
protected void onResume() {
super.onResume();
// postList.clear();
// mShimmerViewContainer.startShimmerAnimation();
// loadPost();
// loadFilter();
}
@Override
protected void onStop() {
super.onStop();
}
private void InitializeFields() {
setClickListener();
listMonitoringView = findViewById(R.id.listViewMonit);
monitoringAdapter = new MonitoringAdapter(postList, clickListener, ListData.this);
listMonitoringView.setLayoutManager(new LinearLayoutManager(ListData.this, LinearLayoutManager.VERTICAL, false));
listMonitoringView.setAdapter(monitoringAdapter);
layPlaceholder.setVisibility(View.GONE);
}
private void setClickListener(){
clickListener = new MonitoringAdapter.onItemClickListener() {
@Override
public void onItemClick(View view, int position) {
String idMonitoring = postList.get(position).getTimestamp();
String cUser = googleLogin.getId();
ref.child(idMonitoring).child("listLihat").child(cUser).setValue(true);//Add viewer report
Intent groupChatIntent = new Intent(ListData.this, DisplayMonitoring.class);
groupChatIntent.putExtra("idMonitoring", idMonitoring);
startActivity(groupChatIntent);
}
};
}
private void loadPost() {
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
postList.clear();
for(DataSnapshot ds : dataSnapshot.getChildren()){
MonitoringListModel modelPost = ds.getValue(MonitoringListModel.class);
long jlhLihat = dataSnapshot.child(modelPost.getTimestamp()).child("listLihat").getChildrenCount();
long jlhComment = dataSnapshot.child(modelPost.getTimestamp()).child("komentar").getChildrenCount();
modelPost.setCountSee(jlhLihat);
modelPost.setCountComment(jlhComment);
long tmp = Long.parseLong(modelPost.getTimestamp());
modelPost.setDateUpload(getDate(tmp));
userRef.child(modelPost.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String username = snapshot.child("namaLengkap").getValue(String.class);
String role = snapshot.child("role").getValue(String.class);
String userImg = snapshot.child("image").getValue(String.class);
String jabatan = snapshot.child("jabatan").getValue(String.class);
modelPost.setFullName(username);
modelPost.setRole(role);
modelPost.setImgLink(userImg);
modelPost.setJabatan(jabatan);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
postList.add(modelPost);
}
Collections.reverse(postList);
final Handler handler = new Handler(Looper.getMainLooper());
handler.postDelayed(new Runnable() {
@Override
public void run() {
InitializeFields();
}
}, 1000);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(ListData.this, ""+databaseError.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
private String getDate(long time) {
Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
cal.setTimeInMillis(time);
String clock = cal.getTime().getHours() + ":" + cal.getTime().getMinutes();
String date = "";
int day = cal.get(Calendar.DATE);
int month = cal.get(Calendar.MONTH);
int year = cal.get(Calendar.YEAR);
if(month == 0)
date += day + " Januari " + year;
if(month == 1)
date += day + " Februari " + year;
if(month == 2)
date += day + " Maret " + year;
if(month == 3)
date += day + " April " + year;
if(month == 4)
date += day + " Mei " + year;
if(month == 5)
date += day + " Juni " + year;
if(month == 6)
date += day + " Juli " + year;
if(month == 7)
date += day + " Agustus " + year;
if(month == 8)
date += day + " September " + year;
if(month == 9)
date += day + " Oktober " + year;
if(month == 10)
date += day + " November " + year;
if(month == 11)
date += day + " Desember " + year;
return clock + " | " + date;
}
private String getName(String uid){
final String[] username = {""};
userRef.child(uid).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
username[0] = snapshot.child("namaLengkap").getValue(String.class);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
return username[0];
}
}

View File

@ -0,0 +1,89 @@
package com.project.ilsaenterprise.monitoring;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import android.Manifest;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.Point;
import android.os.Bundle;
import android.util.Log;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MapStyleOptions;
import com.google.android.gms.maps.model.MarkerOptions;
import com.project.ilsaenterprise.MapActivity;
import com.project.ilsaenterprise.R;
import java.util.ArrayList;
public class LokasiMonitoring extends AppCompatActivity implements OnMapReadyCallback {
private GoogleMap mMap;
ArrayList<Double> coordinateLocation;
private static final float DEFAULT_ZOOM = 16.5f;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lokasi_monitoring);
getSupportActionBar().hide();
coordinateLocation = (ArrayList<Double>) getIntent().getSerializableExtra("monitoringList");
// GraphicsOverlay graphicsOverlay = new GraphicsOverlay();
// mMapView.getGraphicsOverlays().add(graphicsOverlay);
//
// SimpleMarkerSymbol symbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.X, Color.rgb(235, 120, 0), 25); //size 12, style of circle
// //add a new graphic with a new point geometry
// Point graphicPoint = mapPointCon(myList.get(0), myList.get(1));
// Graphic graphic = new Graphic(graphicPoint, symbol);
// graphicsOverlay.getGraphics().add(graphic);
}
@Override
public void onMapReady(@NonNull GoogleMap googleMap) {
mMap = googleMap;
mMap.isIndoorEnabled();
try {
boolean success = googleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(this, R.raw.new_map));
LatLng location = new LatLng(coordinateLocation.get(0), coordinateLocation.get(1));
moveCamera(new LatLng(coordinateLocation.get(0), coordinateLocation.get(1)), DEFAULT_ZOOM);
googleMap.addMarker(new MarkerOptions()
.position(location)
.title("Location Report"));
if(!success){
return;
}
}catch (Resources.NotFoundException e){
//Log.e(TAG, "Error", e);
return;
}
//============
}
private void moveCamera(LatLng latLng, float zoom){
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoom));
mMap.clear();
}
private void initMap(){
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapView);
assert mapFragment != null;
mapFragment.getMapAsync(LokasiMonitoring.this);
}
@Override
protected void onStart() {
super.onStart();
initMap();
}
}

View File

@ -0,0 +1,271 @@
package com.project.ilsaenterprise.monitoring;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.os.Bundle;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import com.project.ilsaenterprise.Dashboard;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.models.Beacon;
import com.project.ilsaenterprise.models.Channel;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import pl.pawelkleczkowski.customgauge.CustomGauge;
public class MainBeacon extends AppCompatActivity {
//====================
private TextView tvHumidity, tvTemperature, tvPressure, tvWindSpeed, tvWindDirection, tvChannelId, tvLastEntry, tvFeed, tvTotal, btnShow, tvLocation, tvStatus;
//====================
private static final String JSON_URL = "https://api.thingspeak.com/channels/1603955/feeds.json?api_key=ND0HG1CVKUENHMZQ&results=1";
private ImageView ivWeather;
private List<Address> addresses;
private AlertDialog alertDialog;
private AlertDialog.Builder dialogBuilder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_beacon);
getSupportActionBar().hide();
dialogBuilder = new AlertDialog.Builder(MainBeacon.this);
alertDialog = dialogBuilder.create();
showProgress(R.layout.layout_loading);
tvHumidity = findViewById(R.id.tvHumidity);
tvTemperature = findViewById(R.id.tvTemperature);
tvPressure = findViewById(R.id.tvPressure);
tvWindSpeed = findViewById(R.id.tvSpeed);
tvWindDirection = findViewById(R.id.tvDirection);
tvChannelId = findViewById(R.id.tvChannelID);
tvLastEntry = findViewById(R.id.tvLastEntry);
tvFeed = findViewById(R.id.tvFeed);
tvTotal = findViewById(R.id.tvTotalData);
btnShow = findViewById(R.id.btnShow);
tvLocation = findViewById(R.id.tvLocation);
ivWeather = findViewById(R.id.ivWeather);
tvStatus = findViewById(R.id.tvStatus);
long date = System.currentTimeMillis();
SimpleDateFormat adf = new SimpleDateFormat("kk");
String hourString = adf.format(date);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int h = metrics.heightPixels;
int w = metrics.widthPixels;
Log.d("JAMM", hourString);
btnShow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(MainBeacon.this, ShowData.class));
}
});
loadData();
}
private void showProgress(int layout){
View layoutView = getLayoutInflater().inflate(layout, null);
dialogBuilder.setView(layoutView);
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
alertDialog.setCancelable(false);
alertDialog.show();
}
private void loadData(){
StringRequest stringRequest = new StringRequest(Request.Method.GET, JSON_URL, new Response.Listener<String>(){
@Override
public void onResponse(String response){
try {
JSONObject obj = new JSONObject(response);
JSONArray sensorArray = obj.getJSONArray("feeds");
Log.d("REQQ", obj.getJSONObject("channel").getString("id"));
// for (int i = sensorArray.length() - 1; i >= 0; i--) {
// }
JSONObject arrayObject = sensorArray.getJSONObject(sensorArray.length() - 1);
// JSONObject sensorObject2 = sensorArray.getJSONObject(sensorArray.length()-1);
//String parseLembab = String.valueOf(Math.round(Float.parseFloat(sensorObject.getString("field1"))));
Channel channelDetail = new Channel(Long.parseLong(obj.getJSONObject("channel").getString("id")), obj.getJSONObject("channel").getString("name"),
obj.getJSONObject("channel").getString("latitude"), obj.getJSONObject("channel").getString("longitude"), obj.getJSONObject("channel").getString("field1"),
obj.getJSONObject("channel").getString("field2"), obj.getJSONObject("channel").getString("field3"), obj.getJSONObject("channel").getString("field4"),
obj.getJSONObject("channel").getString("field5"), obj.getJSONObject("channel").getString("field6"), obj.getJSONObject("channel").getString("field7"),
obj.getJSONObject("channel").getString("field8"), obj.getJSONObject("channel").getString("created_at"), obj.getJSONObject("channel").getString("updated_at"),
obj.getJSONObject("channel").getString("last_entry_id"));
Beacon beaconData = new Beacon(arrayObject.getString("created_at"), arrayObject.getString("entry_id"), arrayObject.getString("field1"), arrayObject.getString("field2"), arrayObject.getString("field3"),
arrayObject.getString("field4"), arrayObject.getString("field5"), arrayObject.getString("field6"), arrayObject.getString("field7"), arrayObject.getString("field8"));
tvTemperature.setText(beaconData.getTemperature());
tvHumidity.setText(beaconData.getHumidity());
tvPressure.setText(beaconData.getPressure());
tvWindSpeed.setText(beaconData.getWind_speed());
tvWindDirection.setText(beaconData.getWind_direction());
tvChannelId.setText(String.valueOf(channelDetail.getId()));
tvLastEntry.setText(setLocalGMT(beaconData.getCreated_at()));
tvFeed.setText("8");
tvTotal.setText(channelDetail.getLast_entry_id());
getDeviceLocation(Double.parseDouble(channelDetail.getLatitude()), Double.parseDouble(channelDetail.getLongitude()));
alertDialog.cancel();
// ListViewAdapter adapter = new ListViewAdapter(sensorList, getApplicationContext());
//
// listView.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//displaying the error in toast if occur
Toast.makeText(getBaseContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(getBaseContext());
//adding the string request to request queue
requestQueue.add(stringRequest);
}
// private boolean getStatus(){
// Calendar calDate = Calendar.getInstance();
// SimpleDateFormat currentDateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.ENGLISH);
// String currentDate = currentDateFormat.format(calDate.getTime());
// }
private String setLocalGMT(String time){
StringBuilder sb = new StringBuilder();
String timeAgo = "";
String[] result = new String[6];
String[] date = time.replace("T", "-")
.replace("Z", "-")
.replace(":", "-")
.split("-");
Log.d("HARIII", date[0]);
int year = Integer.parseInt(date[0]);
int month = Integer.parseInt(date[1]);
int day = Integer.parseInt(date[2]);
int hour = Integer.parseInt(date[3]) + 7;
int minute = Integer.parseInt(date[4]);
int second = Integer.parseInt(date[5]);
DecimalFormat formatter = new DecimalFormat("00");
sb.append(formatter.format(day));
sb.append(" ");
sb.append(getMonth(month));
sb.append(" ");
sb.append(formatter.format(year));
sb.append(" | ");
sb.append(formatter.format(hour));
sb.append(":");
sb.append(formatter.format(minute));
sb.append(":");
sb.append(formatter.format(second));
return sb.toString();
}
private String getMonth(int m){
if(m == 1)
return "Januari";
if(m == 2)
return "Februari";
if(m == 3)
return "Maret";
if(m == 4)
return "April";
if(m == 5)
return "Mei";
if(m == 6)
return "Juni";
if(m == 7)
return "Juli";
if(m == 8)
return "Agustus";
if(m == 9)
return "September";
if(m == 10)
return "Oktober";
if(m == 11)
return "November";
if(m == 12)
return "Desember";
return "";
}
private void getDeviceLocation(double latitude, double longitude){
Geocoder geocoder = new Geocoder(MainBeacon.this, Locale.getDefault());
try {
addresses = geocoder.getFromLocation(latitude, longitude,1);
tvLocation.setText(addresses.get(0).getAddressLine(0));
} catch (IOException e) {
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,112 @@
package com.project.ilsaenterprise.monitoring;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.viewpager.widget.ViewPager;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import com.google.android.material.tabs.TabLayout;
import com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.fragment.GalleryFragment;
import com.project.ilsaenterprise.fragment.PhotoFragment;
import com.project.ilsaenterprise.utils.Permissions;
import com.project.ilsaenterprise.utils.SectionsPagerAdapter;
public class SelectImage extends AppCompatActivity {
private static final String TAG = "ShareActivity";
//constants
private static final int ACTIVITY_NUM = 2;
private static final int VERIFY_PERMISSIONS_REQUEST = 1;
private ViewPager mViewPager;
private Context mContext = SelectImage.this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_image);
if(checkPermissionsArray(Permissions.PERMISSIONS)){
setupViewPager();
}else{
verifyPermissions(Permissions.PERMISSIONS);
}
}
private void setupViewPager(){
SectionsPagerAdapter adapter = new SectionsPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new GalleryFragment());
adapter.addFragment(new PhotoFragment());
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(adapter);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabsBottom);
tabLayout.setupWithViewPager(mViewPager);
tabLayout.getTabAt(0).setText(getString(R.string.gallery));
tabLayout.getTabAt(1).setText(getString(R.string.photo));
}
/**
* verifiy all the permissions passed to the array
* @param permissions
*/
public void verifyPermissions(String[] permissions){
Log.d(TAG, "verifyPermissions: verifying permissions.");
ActivityCompat.requestPermissions(
SelectImage.this,
permissions,
VERIFY_PERMISSIONS_REQUEST
);
}
/**
* Check an array of permissions
* @param permissions
* @return
*/
public boolean checkPermissionsArray(String[] permissions){
Log.d(TAG, "checkPermissionsArray: checking permissions array.");
for(int i = 0; i< permissions.length; i++){
String check = permissions[i];
if(!checkPermissions(check)){
return false;
}
}
return true;
}
/**
* Check a single permission is it has been verified
* @param permission
* @return
*/
public boolean checkPermissions(String permission){
Log.d(TAG, "checkPermissions: checking permission: " + permission);
int permissionRequest = ActivityCompat.checkSelfPermission(SelectImage.this, permission);
if(permissionRequest != PackageManager.PERMISSION_GRANTED){
Log.d(TAG, "checkPermissions: \n Permission was not granted for: " + permission);
return false;
}
else{
Log.d(TAG, "checkPermissions: \n Permission was granted for: " + permission);
return true;
}
}
}

View File

@ -0,0 +1,86 @@
package com.project.ilsaenterprise.monitoring;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.adapter.BeaconAdapter;
import com.project.ilsaenterprise.models.Beacon;
import com.project.ilsaenterprise.models.Channel;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class ShowData extends AppCompatActivity {
private TextView mTextView;
ListView listView;
List<Beacon> listData;
private static final String JSON_URL = "https://api.thingspeak.com/channels/1603955/feeds.json?api_key=ND0HG1CVKUENHMZQ&results=8000";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(getSupportActionBar() != null)
getSupportActionBar().hide();
setContentView(R.layout.activity_show_data);
listView = findViewById(R.id.listView);
listData = new ArrayList<>();
loadData();
}
private void loadData(){
StringRequest stringRequest = new StringRequest(Request.Method.GET, JSON_URL, new Response.Listener<String>(){
@Override
public void onResponse(String response){
try {
JSONObject obj = new JSONObject(response);
JSONArray sensorArray = obj.getJSONArray("feeds");
for (int i = sensorArray.length() - 1; i >= 0; i--) {
JSONObject arrayObject = sensorArray.getJSONObject(i);
Beacon beaconData = new Beacon(arrayObject.getString("created_at"), arrayObject.getString("entry_id"), arrayObject.getString("field1"), arrayObject.getString("field2"), arrayObject.getString("field3"),
arrayObject.getString("field4"), arrayObject.getString("field5"), arrayObject.getString("field6"), arrayObject.getString("field7"), arrayObject.getString("field8"));
listData.add(beaconData);
}
BeaconAdapter adapter = new BeaconAdapter(listData, getApplicationContext());
listView.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//displaying the error in toast if occur
Toast.makeText(getBaseContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(getBaseContext());
//adding the string request to request queue
requestQueue.add(stringRequest);
}
}

View File

@ -0,0 +1,349 @@
package com.project.ilsaenterprise.monitoring;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.text.format.DateFormat;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.DatePicker;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.airbnb.lottie.LottieAnimationView;
import com.denzcoskun.imageslider.ImageSlider;
import com.denzcoskun.imageslider.constants.ScaleTypes;
import com.denzcoskun.imageslider.interfaces.ItemClickListener;
import com.denzcoskun.imageslider.models.SlideModel;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MapStyleOptions;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.models.MonitoringListModel;
import com.project.ilsaenterprise.models.MonitoringModel;
import com.squareup.picasso.Picasso;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import de.hdodenhof.circleimageview.CircleImageView;
public class ShowSelfMonitoring extends AppCompatActivity {
private String idMonitoring;
private ImageSlider imageSlider;
List<MonitoringModel> postList;
ListView listView;
private TextView afdeling, blok, deskripsi, distrik, farm, fullName, jabatan, jenisLaporan, tipeLaporan, uploadDate, uploadTime, jenisLap2, countComment, jabatan1, jabatan2, jabatan3, jabatanNew, yearBottom;
private GoogleMap googleMap;
private MapView mapView;
private ImageView btnComment, ivProfile;
SupportMapFragment mapFragment;
private static final float DEFAULT_ZOOM = 20.5f;
private static final int ERROR_DIALOG_REQUEST = 9001;
ArrayList<Double> myList = new ArrayList<Double>();
private BottomSheetDialog bottomSheetDialog;
private String uid, displayName, displayImage;
private String currentDate = new SimpleDateFormat("yyyy", Locale.getDefault()).format(new Date());
private DatabaseReference imageRef;
DatePicker datePicker;
private CircleImageView imageComment;
private RelativeLayout relComment, btnDelete;
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("monitoring");
private HashMap<Object, String> commentMap = new HashMap<>();
private static final int SECOND_MILLIS = 1000;
private static final int MINUTE_MILLIS = 60 * SECOND_MILLIS;
private static final int HOUR_MILLIS = 60 * MINUTE_MILLIS;
private static final int DAY_MILLIS = 24 * HOUR_MILLIS;
DatabaseReference refUser = FirebaseDatabase.getInstance().getReference("users");
private FirebaseAuth mAuth;
private FirebaseUser userFirebase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_self_monitoring);
if(getSupportActionBar() != null){
getSupportActionBar().hide();;
}
mAuth = FirebaseAuth.getInstance();
idMonitoring = getIntent().getExtras().get("idMonitoring").toString();
mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapViewMonitoring);
imageSlider = (ImageSlider) findViewById(R.id.imageSlider);
btnDelete = findViewById(R.id.btnDelete);
LinearLayout btnBack = findViewById(R.id.btnBack);
btnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(ShowSelfMonitoring.this, HistoryMonitoring.class));
finish();
}
});
btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
bottomSheetDialog = new BottomSheetDialog(
ShowSelfMonitoring.this, R.style.BottomSheetDialogTheme
);
bottomSheetDialog.setCancelable(false);
View bottomSheetView = LayoutInflater.from(getApplicationContext())
.inflate(
R.layout.layout_popup_delete_data,
(LinearLayout)findViewById(R.id.deleteSuccessContainer)
);
RelativeLayout btnCancel = bottomSheetView.findViewById(R.id.btnCancel);
RelativeLayout btnDelete = bottomSheetView.findViewById(R.id.btnOk);
bottomSheetDialog.setContentView(bottomSheetView);
bottomSheetDialog.show();
btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
ref.child(idMonitoring).removeValue();
Toast.makeText(getBaseContext(), "Laporan telah dihapus.", Toast.LENGTH_LONG).show();
bottomSheetDialog.cancel();
startActivity(new Intent(ShowSelfMonitoring.this, HistoryMonitoring.class));
finish();
}catch (Exception e){
e.printStackTrace();
}
}
});
btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
bottomSheetDialog.dismiss();
}
});
}
});
final List<SlideModel> slideModelList = new ArrayList<>();
InitializeFields();
FirebaseDatabase.getInstance().getReference().child("monitoring").child(idMonitoring).child("media")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for(DataSnapshot data:snapshot.getChildren()){
slideModelList.add(new SlideModel(data.child("link").getValue().toString(), ScaleTypes.CENTER_INSIDE));
}
imageSlider.setImageList(slideModelList, ScaleTypes.FIT);
imageSlider.setItemClickListener(new ItemClickListener() {
@Override
public void onItemSelected(int i) {
String urlZoom = slideModelList.get(i).getImageUrl().toString();
Intent groupChatIntent = new Intent(ShowSelfMonitoring.this, ZoomMonitoring.class);
groupChatIntent.putExtra("urlZoom", urlZoom);
startActivity(groupChatIntent);
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
@Override
protected void onStart() {
super.onStart();
userFirebase = mAuth.getCurrentUser();
retrieveInfo();
}
private void retrieveInfo(){
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("monitoring").child(idMonitoring);
DatabaseReference userRef = FirebaseDatabase.getInstance().getReference("users");
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if((snapshot.exists())){
MonitoringListModel monitoringModel = snapshot.getValue(MonitoringListModel.class);
uid = monitoringModel.getUid();
userRef.child(uid).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String username = snapshot.child("namaLengkap").getValue(String.class);
String getJabatan = snapshot.child("jabatan").getValue(String.class);
String role = snapshot.child("role").getValue(String.class);
String imgProfile = snapshot.child("image").getValue(String.class);
getRoleUser(role);
fullName.setText(username);
jabatan.setText(getJabatan);
if(imgProfile != null){
Picasso.get().load(imgProfile).placeholder(R.drawable.employee_img).into(ivProfile);
}
else
ivProfile.setImageResource(R.drawable.user_farmer);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
double lat = Double.parseDouble(monitoringModel.getLatitude());
double lon = Double.parseDouble(monitoringModel.getLongitude());
myList.add(lat);
myList.add(lon);
afdeling.setText(monitoringModel.getAfdeling());
blok.setText(monitoringModel.getBlok());
deskripsi.setText(monitoringModel.getDeskripsi());
farm.setText(monitoringModel.getFarm());
distrik.setText(monitoringModel.getDistrict());
jenisLaporan.setText(monitoringModel.getJenisLaporan());
tipeLaporan.setText(monitoringModel.getTipeLaporan());
uploadDate.setText(getDate(Long.parseLong(monitoringModel.getTimestamp())));
jenisLap2.append(monitoringModel.getJenisLaporan());
mapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap mMap) {
googleMap = mMap;
googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
LatLng lokasi = new LatLng(lat, lon);
googleMap.addMarker(new MarkerOptions().position(lokasi).title(monitoringModel.getDistrict()).snippet(monitoringModel.getFarm()));
CameraPosition cameraPosition = new CameraPosition.Builder().target(lokasi).zoom(16).build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}
});
ImageView imgFullscreen = findViewById(R.id.imgFullscreen);
imgFullscreen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(ShowSelfMonitoring.this, LokasiMonitoring.class);
intent.putExtra("monitoringList", myList);
startActivity(intent);
}
});
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
userRef.child(userFirebase.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String imgProfile = snapshot.child("image").getValue(String.class);
if(imgProfile == null){
Picasso.get().load(userFirebase.getPhotoUrl()).placeholder(R.drawable.employee_img).into(imageComment);
}
if(imgProfile != null){
Picasso.get().load(imgProfile).placeholder(R.drawable.employee_img).into(imageComment);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
private String getDate(long time) {
Calendar cal = Calendar.getInstance(Locale.ENGLISH);
cal.setTimeInMillis(time);
String date = DateFormat.format(" HH:mm | dd MMMM yyyy", cal).toString();
return date;
}
private void getRoleUser(String role){
if(role != null)
{
if(Objects.equals(role, "Level 1")){
jabatan1.setText(Objects.requireNonNull(role));
jabatan1.setVisibility(View.VISIBLE);
}
if(Objects.equals(role, "Level 2")){
jabatan2.setText(Objects.requireNonNull(role));
jabatan2.setVisibility(View.VISIBLE);
}
if(Objects.equals(role, "Level 3")){
jabatan3.setText(Objects.requireNonNull(role));
jabatan3.setVisibility(View.VISIBLE);
}
}
else {
jabatanNew.setVisibility(View.VISIBLE);
}
}
private void InitializeFields() {
afdeling = findViewById(R.id.afdelingMonitoring);
blok = findViewById(R.id.blokMonitoring);
deskripsi = findViewById(R.id.deskripsiMonitoring);
distrik = findViewById(R.id.distrikMonitoring);
farm = findViewById(R.id.kebunMonitoring);
fullName = findViewById(R.id.uploaderMonitoring);
jabatan = findViewById(R.id.tvJabatan);
jenisLaporan = findViewById(R.id.jenisLaporMonitoring);
tipeLaporan = findViewById(R.id.tipeLaporMonitoring);
uploadDate = findViewById(R.id.dayMonitoring);
jenisLap2 = findViewById(R.id.jenisLapor2Monitoring);
countComment = findViewById(R.id.countComment);
btnComment = findViewById(R.id.imageViewComment);
jabatan1 = findViewById(R.id.jabatanLevel1);
jabatan2 = findViewById(R.id.jabatanLevel2);
jabatan3 = findViewById(R.id.jabatanLevel3);
jabatanNew = findViewById(R.id.jabatanLevel4);
ivProfile = findViewById(R.id.ivProfile);
imageComment = findViewById(R.id.image_comment_profile);
}
}

View File

@ -0,0 +1,749 @@
package com.project.ilsaenterprise.monitoring;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.ContentValues;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.location.Location;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.project.ilsaenterprise.Home;
import com.project.ilsaenterprise.R;
import com.project.ilsaenterprise.adapter.MediaAdapter;
import com.project.ilsaenterprise.models.Employees;
import com.theartofdev.edmodo.cropper.CropImage;
import com.thekhaeng.pushdownanim.PushDownAnim;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
public class Upload extends AppCompatActivity {
private static final int IMAGE_CAPTURE_CODE = 101;
private EditText edtDistrik, edtKebun, edtAfdeling, edtLaporan, edtJenis;
private static final String TAG = "Upload";
private String[] kebunD1, kebunD2, kebunD3, kebunD4, distrik, afdeling, jenisLaporan, hama, penyakit, jalan, TM, TBM, curi, lainnya;
private String textTmp;
private ArrayAdapter<String> arrayAdapter_farm, arrayAdapter_tLap;
private RelativeLayout btnUpload;
private com.getbase.floatingactionbutton.FloatingActionButton btnAddCam, btnAddGallery;
private RecyclerView mMedia;
private RecyclerView.Adapter mMediaAdapter;
private RecyclerView.LayoutManager mMediaLayoutManager;
Task location;
FusedLocationProviderClient mFusedLocationProviderClient;
Location currentLocation;
double latitude, longitude;
private Boolean mLocationPermissionsGranted = false;
private Boolean mWriteExternalStorage = false;
private Boolean mCameraPermission = false;
private static final String FINE_LOCATION = Manifest.permission.ACCESS_FINE_LOCATION;
private static final String COURSE_LOCATION = Manifest.permission.ACCESS_COARSE_LOCATION;
private static final String WRITE_STORAGE = Manifest.permission.WRITE_EXTERNAL_STORAGE;
private static final String CAMERA_USAGE = Manifest.permission.CAMERA;
private static final int LOCATION_PERMISSION_REQUEST_CODE = 101;
private static final int STORAGE_PERMISSION_REQUEST_CODE = 102;
private static final int CAMERA_PERMISSION_REQUEST_CODE = 103;
private static final int PLAY_SERVICE_RESOLUTION_REQUEST = 4799;
ProgressDialog progressDialog;
private int upload_count = 0;
int totalMediaUploaded = 0;
private List<String> fileNameList;
private HashMap<Object, String> monitoringMap = new HashMap<>();
private String check;
private EditText posting, blok;
final String[] selectedDistrict = new String[1];
final String[] selectedFarm = new String[1];
final String[] selectedAfd = new String[1];
final String[] selectedJenisLaporan = new String[1];
final String[] selectedLaporan = new String[1];
int PICK_IMAGE_INTENT = 1;
ArrayList<String> mediaUriList = new ArrayList<>();
ArrayList<String> mediaIdList = new ArrayList<>();
Uri media_camera;
private GoogleSignInAccount googleLogin;
private FirebaseAuth mAuth;
private FirebaseUser userFirebase;
private DatabaseReference reference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.Dark));
setContentView(R.layout.activity_upload);
getSupportActionBar().hide();
googleLogin = GoogleSignIn.getLastSignedInAccount(getApplicationContext());
mAuth = FirebaseAuth.getInstance();
userFirebase = mAuth.getCurrentUser();
reference = FirebaseDatabase.getInstance().getReference().child("users").child(userFirebase.getUid());
progressDialog = new ProgressDialog(this);
progressDialog.setCancelable(false);
btnAddCam = findViewById(R.id.bt_Add);
btnAddGallery = findViewById(R.id.addPhotoGalery);
edtDistrik = findViewById(R.id.edtDistrict);
edtKebun = findViewById(R.id.edtKebun);
edtAfdeling = findViewById(R.id.edtAfdeling);
edtLaporan = findViewById(R.id.edtTipe);
edtJenis = findViewById(R.id.edtJenis);
posting = findViewById(R.id.posting_txt);
blok = findViewById(R.id.blok_txt);
edtDistrik.setEnabled(true);
edtKebun.setEnabled(false);
edtAfdeling.setEnabled(false);
edtLaporan.setEnabled(false);
edtJenis.setEnabled(false);
getLocationPermission();
getDeviceLocation();
mediaUriList.clear();
PushDownAnim.setPushDownAnimTo(btnAddCam).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
getWriteStorage();
getCameraPermission();
if(mWriteExternalStorage == true && mCameraPermission == true){
addCam();
}
else
{
Toast.makeText(getBaseContext(), "Izinkan akses kamera", Toast.LENGTH_SHORT).show();
getCameraPermission();
}
}catch(Exception error){
Toast.makeText(getBaseContext(), error.toString(), Toast.LENGTH_SHORT).show();
}
}
});
PushDownAnim.setPushDownAnimTo(btnAddGallery).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getWriteStorage();
getCameraPermission();
if(mWriteExternalStorage == true){
addPic();
}
else
{
Toast.makeText(getBaseContext(), "Izinkan akses galeri", Toast.LENGTH_SHORT).show();
getWriteStorage();
}
//New activity get image
// startActivity(new Intent(Upload.this, SelectImage.class));
}
});
initializeMedia();
fileNameList = new ArrayList<>();
String currentDate = new SimpleDateFormat("dd MMMM yyyy", Locale.getDefault()).format(new Date());
final String currentTime = new SimpleDateFormat("HH.mm", Locale.getDefault()).format(new Date()) + " WIB";
final DatabaseReference newMonit = FirebaseDatabase.getInstance().getReference("monitoring");
final Map newMessageMap = new HashMap<>();
final HashMap<Object, String> map = new HashMap<>();
edtDistrik.setFocusable(false);
edtDistrik.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showAlertDialog(R.layout.layout_popup_selected, "Distrik", distrik);
edtKebun.setEnabled(true);
}
});
edtKebun.setFocusable(false);
edtKebun.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("EDIT", edtDistrik.getText().toString());
if(edtDistrik.getText().toString().equals(distrik[0]))
showAlertDialog(R.layout.layout_popup_selected, "Kebun", kebunD1);
else if(edtDistrik.getText().toString().equals(distrik[1]))
showAlertDialog(R.layout.layout_popup_selected, "Kebun", kebunD2);
else if(edtDistrik.getText().toString().equals(distrik[2]))
showAlertDialog(R.layout.layout_popup_selected, "Kebun", kebunD3);
else if(edtDistrik.getText().toString().equals(distrik[3]))
showAlertDialog(R.layout.layout_popup_selected, "Kebun", kebunD4);
edtAfdeling.setEnabled(true);
}
});
edtAfdeling.setFocusable(false);
edtAfdeling.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showAlertDialog(R.layout.layout_popup_selected, "Afdeling", afdeling);
edtLaporan.setEnabled(true);
}
});
edtLaporan.setFocusable(false);
edtLaporan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showAlertDialog(R.layout.layout_popup_selected, "Laporan", jenisLaporan);
edtJenis.setEnabled(true);
}
});
edtJenis.setFocusable(false);
edtJenis.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(edtLaporan.getText().toString().equals(jenisLaporan[0]))
showAlertDialog(R.layout.layout_popup_selected, "Jenis Laporan", TM);
else if(edtLaporan.getText().toString().equals(jenisLaporan[1]))
showAlertDialog(R.layout.layout_popup_selected, "Jenis Laporan", TBM);
else if(edtLaporan.getText().toString().equals(jenisLaporan[2]))
showAlertDialog(R.layout.layout_popup_selected, "Jenis Laporan", jalan);
else if(edtLaporan.getText().toString().equals(jenisLaporan[3]))
showAlertDialog(R.layout.layout_popup_selected, "Jenis Laporan", hama);
else if(edtLaporan.getText().toString().equals(jenisLaporan[4]))
showAlertDialog(R.layout.layout_popup_selected, "Jenis Laporan", penyakit);
else if(edtLaporan.getText().toString().equals(jenisLaporan[5]))
edtJenis.setText("Pencurian");
else if(edtLaporan.getText().toString().equals(jenisLaporan[6]))
edtJenis.setText("Lainnya");
}
});
final String userID = userFirebase.getUid();
btnUpload = findViewById(R.id.btnUpload);
PushDownAnim.setPushDownAnimTo(btnUpload).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
progressDialog.show();
progressDialog.setTitle("Mengunggah Data");
check = "";
final String[] postingEdit = new String[1];
final String[] blokEdit = new String[1];
final String timeStamp = String.valueOf(System.currentTimeMillis());
int position = 0;
if(TextUtils.isEmpty(edtDistrik.getText())){
Toast.makeText(Upload.this, "Distrik tidak boleh kosong", Toast.LENGTH_LONG).show();
progressDialog.dismiss();
return;
}
if(TextUtils.isEmpty(edtAfdeling.getText())){
Toast.makeText(Upload.this, "Afdeling tidak boleh kosong", Toast.LENGTH_LONG).show();
progressDialog.dismiss();
return;
}
if(TextUtils.isEmpty(edtLaporan.getText())){
Toast.makeText(Upload.this, "Laporan tidak boleh kosong", Toast.LENGTH_LONG).show();
progressDialog.dismiss();
return;
}
if(TextUtils.isEmpty(posting.getText().toString())){
posting.setError("Silahkan masukkan deskripsi laporan");
progressDialog.dismiss();
return;
}
if(TextUtils.isEmpty(blok.getText().toString())){
blok.setError("Silahkan masukkan lokasi blok");
progressDialog.dismiss();
return;
}
if(mediaUriList.isEmpty()){
Toast.makeText(Upload.this, "Masukkan dokumentasi foto", Toast.LENGTH_LONG).show();
progressDialog.dismiss();
return;
}
if(latitude != 0.0 && longitude != 0.0){
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Employees employees = dataSnapshot.getValue(Employees.class);
check = reference.push().getKey();
selectedDistrict[0] = edtDistrik.getText().toString();
selectedAfd[0] = edtAfdeling.getText().toString();
selectedFarm[0] = edtKebun.getText().toString();
selectedJenisLaporan[0] = edtJenis.getText().toString();
selectedLaporan[0] = edtLaporan.getText().toString();
postingEdit[0] = posting.getText().toString();
blokEdit[0] = blok.getText().toString();
monitoringMap.put("uid", userID);
monitoringMap.put("fullName", employees.getNamaLengkap());
monitoringMap.put("district", selectedDistrict[0]);
monitoringMap.put("farm", selectedFarm[0]);
monitoringMap.put("afdeling", selectedAfd[0]);
monitoringMap.put("jabatan", employees.getJabatan());
monitoringMap.put("deskripsi", postingEdit[0]);
monitoringMap.put("jenisLaporan", selectedJenisLaporan[0]);
monitoringMap.put("tipeLaporan", selectedLaporan[0]);
monitoringMap.put("uploadDate", currentDate);
monitoringMap.put("uploadTime", currentTime);
monitoringMap.put("blok", blokEdit[0]);
monitoringMap.put("timestamp", timeStamp);
monitoringMap.put("latitude", String.valueOf(latitude));
monitoringMap.put("longitude", String.valueOf(longitude));
//monitoringMap.put( new dataMonitoring(employees.getNamaLengkap(), selectedAfd[0], selectedDistrict[0], selectedFarm[0], postingEdit[0], employees.getJabatan()));
newMonit.child(timeStamp).setValue(monitoringMap);
if(!mediaUriList.isEmpty()){
int uploaded = 0;
for(String mediaUri : mediaUriList){
progressDialog.setMessage("Uploading " + uploaded + " / " + mediaUriList.size());
String mediaId = newMonit.child(timeStamp).child("media").push().getKey();
mediaIdList.add(mediaId);
final StorageReference filepath = FirebaseStorage.getInstance().getReference().child("farmMonitoring").child(mediaId);
UploadTask uploadTask = filepath.putFile(Uri.parse(mediaUri));
uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
filepath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
if(totalMediaUploaded == 0){
String id = String.valueOf(totalMediaUploaded);
newMessageMap.put("/imageUrl/", uri.toString());
newMessageMap.put("/media/" + mediaIdList.get(totalMediaUploaded) + "/link/", uri.toString());
totalMediaUploaded++;
if(totalMediaUploaded == mediaUriList.size()){
newMonit.child(timeStamp).updateChildren(newMessageMap);
}
}else{
String id = String.valueOf(totalMediaUploaded);
//newMessageMap.put("/media/" + id, uri.toString());
newMessageMap.put("/media/" + mediaIdList.get(totalMediaUploaded) + "/link/", uri.toString());
totalMediaUploaded++;
if(totalMediaUploaded == mediaUriList.size()){
newMonit.child(timeStamp).updateChildren(newMessageMap);
}
}
}
});
}
});
uploaded++;
}
if(uploaded == mediaUriList.size()){
progressDialog.dismiss();
Toast.makeText(Upload.this, "Upload File Selesai",
Toast.LENGTH_LONG).show();
Intent intent = new Intent(Upload.this, Home.class);
startActivity(intent);
}
}else{
//tambah deskrip
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
progressDialog.dismiss();
}
});
}//GEO TAG NOT FOUND
else{
getLocationPermission();
}
}
});
final Resources res = getResources();
kebunD1 = res.getStringArray(R.array.kebun_distrik_1);
kebunD2 = res.getStringArray(R.array.kebun_distrik_2);
kebunD3 = res.getStringArray(R.array.kebun_distrik_3);
kebunD4 = res.getStringArray(R.array.kebun_distrik_4);
distrik = res.getStringArray(R.array.distrik);
afdeling = res.getStringArray(R.array.afdeling);
jenisLaporan = res.getStringArray(R.array.jenisLapor);
hama = res.getStringArray(R.array.Hama);
penyakit = res.getStringArray(R.array.Penyakit);
jalan = res.getStringArray(R.array.Jalan);
curi = res.getStringArray(R.array.curi);
lainnya = res.getStringArray(R.array.lainnya);
TM = res.getStringArray(R.array.TM);
TBM = res.getStringArray(R.array.TBM);
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, distrik);
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// spinnerDis.setAdapter(adapter1);
//
// spinnerDis.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
// @Override
// public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//
// if(position == 0){
// spinnerKeb.setEnabled(false);
// spinnerAfd.setEnabled(false);
// }
// else if(position==1)
// {
// spinnerKeb.setEnabled(true);
// arrayAdapter_farm = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_spinner_item, kebunD1);
// }
// else if(position==2)
// {
// spinnerKeb.setEnabled(true);
// arrayAdapter_farm = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_spinner_item, kebunD2);
// }
// else if(position==3)
// {
// spinnerKeb.setEnabled(true);
// arrayAdapter_farm = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_spinner_item, kebunD3);
// }
// else if(position==4)
// {
// spinnerKeb.setEnabled(true);
// arrayAdapter_farm = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_spinner_item, kebunD4);
// }
// spinnerKeb.setAdapter(arrayAdapter_farm);
// }
// @Override
// public void onNothingSelected(AdapterView<?> parent) {
//
// }
// });
// spinnerKeb.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
// @Override
// public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// if(position > 0){
// spinnerAfd.setEnabled(true);
// }
// }
// @Override
// public void onNothingSelected(AdapterView<?> parent) {
// return;
// }
// });
// spinnerAfd.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
// @Override
// public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// if(position > 0){
// spinnerJLap.setEnabled(true);
// }
// }
// @Override
// public void onNothingSelected(AdapterView<?> parent) {
// return;
// }
// });
//
// spinnerJLap.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
// @Override
// public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// if(position == 0){
// spinnerTLap.setEnabled(false);
// }
// else if(position == 1){
// arrayAdapter_tLap = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_spinner_item, TM);
// spinnerTLap.setAdapter(arrayAdapter_tLap);
// spinnerTLap.setEnabled(true);
// }
// else if(position == 2){
// arrayAdapter_tLap = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_spinner_item, TBM);
// spinnerTLap.setAdapter(arrayAdapter_tLap);
// spinnerTLap.setEnabled(true);
// }
// else if(position == 3){
// arrayAdapter_tLap = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_spinner_item, jalan);
// spinnerTLap.setAdapter(arrayAdapter_tLap);
// spinnerTLap.setEnabled(true);
// }
// else if(position == 4){
// arrayAdapter_tLap = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_spinner_item, hama);
// spinnerTLap.setAdapter(arrayAdapter_tLap);
// spinnerTLap.setEnabled(true);
// }
// else if(position == 5){
// arrayAdapter_tLap = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_spinner_item, penyakit);
// spinnerTLap.setAdapter(arrayAdapter_tLap);
// spinnerTLap.setEnabled(true);
// }
// else if(position == 6){
// arrayAdapter_tLap = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_spinner_item, curi);
// selectedLaporan[0] = spinnerJLap.getSelectedItem().toString();
// spinnerTLap.setAdapter(arrayAdapter_tLap);
// spinnerTLap.setEnabled(false);
// }
// else if(position == 7){
// arrayAdapter_tLap = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_spinner_item, lainnya);
// selectedLaporan[0] = spinnerJLap.getSelectedItem().toString();
// spinnerTLap.setAdapter(arrayAdapter_tLap);
// spinnerTLap.setEnabled(false);
// }
// }
// @Override
// public void onNothingSelected(AdapterView<?> parent) {
// return;
// }
// });
}
private String showAlertDialog(int layout, String selection, String[] SelectionArr){
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(Upload.this);
View layoutView = getLayoutInflater().inflate(layout, null);
//Button dialogButton = layoutView.findViewById(R.id.btnDialog);
dialogBuilder.setView(layoutView);
final AlertDialog alertDialog = dialogBuilder.create();
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
alertDialog.show();
List<String> listDistrict = new ArrayList<>(Arrays.asList(SelectionArr));
ListView lvDistrict = layoutView.findViewById(R.id.lvDistrict);
TextView tvSelection = layoutView.findViewById(R.id.tvSelection);
tvSelection.setText(selection);
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.list_item_simple, R.id.tvItem, listDistrict);
lvDistrict.setAdapter(arrayAdapter);
final String[] selected = {""};
lvDistrict.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) {
selected[0] = adapterView.getItemAtPosition(pos).toString();
if(selection.equals("Distrik")){
edtDistrik.setText(selected[0]);
edtKebun.setText(null);
}
else if (selection.equals("Kebun")){
edtKebun.setText(selected[0]);
}
else if (selection.equals("Afdeling")){
edtAfdeling.setText(selected[0]);
}
else if (selection.equals("Laporan")){
edtLaporan.setText(selected[0]);
}
else if (selection.equals("Jenis Laporan")){
edtJenis.setText(selected[0]);
}
alertDialog.cancel();
}
});
return selectedDistrict[0];
}
private void getDeviceLocation(){
mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
try{
if(mLocationPermissionsGranted){
location = mFusedLocationProviderClient.getLastLocation();
location.addOnCompleteListener(new OnCompleteListener() {
@SuppressLint("SetTextI18n")
@Override
public void onComplete(@NonNull Task task) {
if(task.isSuccessful() && task.getResult() != null){
currentLocation = (Location) task.getResult();
Log.d(TAG, "onComplete: found location!");
latitude = currentLocation.getLatitude();
longitude = currentLocation.getLongitude();
} else{
mFusedLocationProviderClient.getLastLocation();
}
}
});
}
}catch (SecurityException e){
Log.e(TAG, "getDeviceLocation: SecurityException: " + e.getMessage() );
}
}
private void getLocationPermission(){
String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION};
if(ContextCompat.checkSelfPermission(this.getApplicationContext(),
FINE_LOCATION) == PackageManager.PERMISSION_GRANTED){
if(ContextCompat.checkSelfPermission(this.getApplicationContext(),
COURSE_LOCATION) == PackageManager.PERMISSION_GRANTED)
{
mLocationPermissionsGranted = true;
}else{
ActivityCompat.requestPermissions(this,
permissions,
LOCATION_PERMISSION_REQUEST_CODE);
}
}else{
ActivityCompat.requestPermissions(this,
permissions,
LOCATION_PERMISSION_REQUEST_CODE);
}
}
private void getWriteStorage(){
String[] permission = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};
if(ContextCompat.checkSelfPermission(this.getApplicationContext(),
WRITE_STORAGE) == PackageManager.PERMISSION_GRANTED){
mWriteExternalStorage = true;
}else{
ActivityCompat.requestPermissions(this, permission,
STORAGE_PERMISSION_REQUEST_CODE);
}
}
private void getCameraPermission(){
if(ContextCompat.checkSelfPermission(this.getApplicationContext(),
CAMERA_USAGE) == PackageManager.PERMISSION_GRANTED){
mCameraPermission = true;
}else{
ActivityCompat.requestPermissions(this, new String[] {CAMERA_USAGE},
CAMERA_PERMISSION_REQUEST_CODE);
}
}
public String getFileName(Uri uri) {
String result = null;
if (uri.getScheme().equals("content")) {
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
try {
if (cursor != null && cursor.moveToFirst()) {
//result = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
}
} finally {
cursor.close();
}
}
if (result == null) {
result = uri.getPath();
int cut = result.lastIndexOf('/');
if (cut != -1) {
result = result.substring(cut + 1);
}
}
return result;
}
private void addPic() {
Intent intent = new Intent();
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
intent.setAction(intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture(s)"), PICK_IMAGE_INTENT);
}
private void addCam(){
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, "New Picture");
values.put(MediaStore.Images.Media.DESCRIPTION, "From the Camera");
media_camera = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, media_camera);
startActivityForResult(cameraIntent, IMAGE_CAPTURE_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == PICK_IMAGE_INTENT){//Galery
if(resultCode == RESULT_OK){
if(data.getClipData() == null){
mediaUriList.add(data.getData().toString());
}
else{
for(int i = 0; i < data.getClipData().getItemCount(); i++){
mediaUriList.add(data.getClipData().getItemAt(i).getUri().toString());
}
}
mMediaAdapter.notifyDataSetChanged();
}
}
else if(requestCode == IMAGE_CAPTURE_CODE){//Camera
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if(resultCode == RESULT_OK)
{
mediaUriList.add(media_camera.toString());
mMediaAdapter.notifyDataSetChanged();
}
}
}
@SuppressLint("WrongConstant")
private void initializeMedia() {
mediaUriList = new ArrayList<>();
mMedia = findViewById(R.id.mediaList);
mMedia.setNestedScrollingEnabled(false);
mMedia.setHasFixedSize(false);
mMediaLayoutManager = new LinearLayoutManager(getApplicationContext(), LinearLayout.HORIZONTAL, false);
mMedia.setLayoutManager(mMediaLayoutManager);
mMediaAdapter = new MediaAdapter(getApplicationContext(), mediaUriList);
mMedia.setAdapter(mMediaAdapter);
}
}

View File

@ -0,0 +1,33 @@
package com.project.ilsaenterprise.monitoring;
import androidx.appcompat.app.AppCompatActivity;
import android.animation.Animator;
import android.os.Bundle;
import android.view.WindowManager;
import android.widget.ImageView;
import com.github.chrisbanes.photoview.PhotoView;
import com.project.ilsaenterprise.R;
import com.squareup.picasso.Picasso;
public class ZoomMonitoring extends AppCompatActivity {
private static final String TAG = "ZOOM";
private String imgUrl;
private Animator currentAnimator;
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_zoom_monitoring);
getSupportActionBar().hide();
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
PhotoView zoomImage = findViewById(R.id.imageChooseView);
imgUrl = getIntent().getExtras().get("urlZoom").toString();
Picasso.get().load(imgUrl).placeholder(R.drawable.ilsa).into(zoomImage);
//zoomImage.setImageURI(Uri.parse(imgUrl));
}
}

View File

@ -0,0 +1,91 @@
package com.typroject.ilsa.services
class AnjasLatLong(private var Q_metres_per_second: Float) {
private val MinAccuracy = 1f
private var TimeStamp_milliseconds: Long = 0
private var lat = 0.0
private var lng = 0.0
private var variance // P matrix. Negative means object uninitialised.
: Float
// NB: units irrelevant, as long as same units used
// throughout
var consecutiveRejectCount: Int
fun get_TimeStamp(): Long {
return TimeStamp_milliseconds
}
fun get_lat(): Double {
return lat
}
fun get_lng(): Double {
return lng
}
fun get_accuracy(): Float {
return Math.sqrt(variance.toDouble()).toFloat()
}
fun SetState(lat: Double, lng: Double, accuracy: Float,
TimeStamp_milliseconds: Long) {
this.lat = lat
this.lng = lng
variance = accuracy * accuracy
this.TimeStamp_milliseconds = TimeStamp_milliseconds
}
// / <summary>
// / Kalman filter processing for lattitude and longitude
// / </summary>
// / <param name="lat_measurement_degrees">new measurement of
// lattidude</param>
// / <param name="lng_measurement">new measurement of longitude</param>
// / <param name="accuracy">measurement of 1 standard deviation error in
// metres</param>
// / <param name="TimeStamp_milliseconds">time of measurement</param>
// / <returns>new state</returns>
fun Process(lat_measurement: Double, lng_measurement: Double,
accuracy: Float, TimeStamp_milliseconds: Long, Q_metres_per_second: Float) {
var accuracy = accuracy
this.Q_metres_per_second = Q_metres_per_second
if (accuracy < MinAccuracy) accuracy = MinAccuracy
if (variance < 0) {
// if variance < 0, object is unitialised, so initialise with
// current values
this.TimeStamp_milliseconds = TimeStamp_milliseconds
lat = lat_measurement
lng = lng_measurement
variance = accuracy * accuracy
} else {
// else apply Kalman filter methodology
val TimeInc_milliseconds = (TimeStamp_milliseconds
- this.TimeStamp_milliseconds)
if (TimeInc_milliseconds > 0) {
// time has moved on, so the uncertainty in the current position
// increases
variance += (TimeInc_milliseconds * Q_metres_per_second
* Q_metres_per_second) / 1000
this.TimeStamp_milliseconds = TimeStamp_milliseconds
// TO DO: USE VELOCITY INFORMATION HERE TO GET A BETTER ESTIMATE
// OF CURRENT POSITION
}
// Kalman gain matrix K = Covarariance * Inverse(Covariance +
// MeasurementVariance)
// NB: because K is dimensionless, it doesn't matter that variance
// has different units to lat and lng
val K = variance / (variance + accuracy * accuracy)
// apply K
lat += K * (lat_measurement - lat)
lng += K * (lng_measurement - lng)
// new Covarariance matrix is (IdentityMatrix - K) * Covarariance
variance = (1 - K) * variance
}
}
init {
variance = -1f
consecutiveRejectCount = 0
}
}

View File

@ -0,0 +1,36 @@
package com.project.ilsaenterprise.services;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
public class BackServiceRestarter {
private Context context;
public BackServiceRestarter(Context context){
this.context = context;
}
public void setRestarter(){
Intent intent = new Intent(context, NewTrackerBroadcast.class);
PendingIntent sender = PendingIntent.getBroadcast(context, 2, intent, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
if(alarmManager != null){
long triggerAfter = 5000;
long triggerEvery = 5000;
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,triggerAfter, triggerEvery, sender);
}
}
public void cancelRestarter(){
Intent intent = new Intent(context, NewTrackerBroadcast.class);
PendingIntent sender = PendingIntent.getBroadcast(context, 2, intent, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
if(alarmManager != null)
alarmManager.cancel(sender);
}
}

View File

@ -0,0 +1,5 @@
package com.project.ilsaenterprise.services;
public class KursApi {
public static String Currency_JSON = "http://data.fixer.io/api/latest?access_key=29710cdbf93dcdcc68d367f83d2aba99";
}

View File

@ -0,0 +1,64 @@
package com.project.ilsaenterprise.services;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import com.google.android.gms.location.LocationResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
public class NewTrackerBroadcast extends BroadcastReceiver {
public static final String ACTION = "com.typroject.perkebunan_nusantara.UPDATE_LOCATION";
DatabaseReference silentTrackRef;
FirebaseAuth mAuth;
String currentUser;
String currentDate = new SimpleDateFormat("dd MMMM yyyy", Locale.getDefault()).format(new Date());
private ArrayList<Integer> listVal;
HashMap<String, String> profileMap;
public NewTrackerBroadcast(){
mAuth = FirebaseAuth.getInstance();
currentUser = mAuth.getCurrentUser().getUid();
silentTrackRef = FirebaseDatabase.getInstance().getReference("NewTracker").child(currentUser);
}
@Override
public void onReceive(Context context, Intent intent) {
Long tsLong = System.currentTimeMillis()/1000;
String ts = tsLong.toString();
if(intent != null){
final String action = intent.getAction();
if(action.equals(ACTION)){
LocationResult result = LocationResult.extractResult(intent);
if(result != null){
Location location = result.getLastLocation();
if(!currentUser.equals("")){
silentTrackRef.child(currentDate).child(ts).setValue(location);
}
else
{
//silentTrackRef.child(currentUser).setValue(location);
return;
}
}
}
else
return;
}
else
return;
}
}

View File

@ -0,0 +1,10 @@
package com.project.ilsaenterprise.services;
public class NewsApi {
public static String GET_TOP_HEADLINES = "https://newsapi.org/v2/top-headlines?country=id&apiKey=f3aa09e2f1d7494e9fded68f30d4e4c1";
public static String GET_CATEGORY_SPORTS = "https://newsapi.org/v2/top-headlines?country=id&category=sports&apiKey=f3aa09e2f1d7494e9fded68f30d4e4c1";
public static String GET_CATEGORY_TECHNOLOGY = "https://newsapi.org/v2/top-headlines?country=id&category=technology&apiKey=f3aa09e2f1d7494e9fded68f30d4e4c1";
public static String GET_CATEGORY_BUSINESS = "https://newsapi.org/v2/top-headlines?country=id&category=business&apiKey=f3aa09e2f1d7494e9fded68f30d4e4c1";
public static String GET_CATEGORY_HEALTH = "https://newsapi.org/v2/top-headlines?country=id&category=health&apiKey=f3aa09e2f1d7494e9fded68f30d4e4c1";
public static String GET_CATEGORY_ENTERTAINMENT = "https://newsapi.org/v2/top-headlines?country=id&category=entertainment&apiKey=f3aa09e2f1d7494e9fded68f30d4e4c1";
}

View File

@ -0,0 +1,19 @@
package com.project.ilsaenterprise.services;
import android.location.Location;
public class SendLocationToActivity {
private Location location;
public SendLocationToActivity(Location location) {
this.location = location;
}
public Location getLocation() {
return location;
}
public void setLocation(Location location) {
this.location = location;
}
}

View File

@ -0,0 +1,107 @@
package com.project.ilsaenterprise.services;
import java.util.Calendar;
public class TimeUnits {
//convert timestamp to time ago
public static String getTimeAgo(String timeStamp) {
String timeAgo = "";
String[] date = timeStamp.replace("T", "-")
.replace("Z", "-")
.replace(":", "-")
.split("-");
int year_a = Integer.parseInt(date[0]);
int month_a = Integer.parseInt(date[1]);
int day_a = Integer.parseInt(date[2]);
int hour_a = Integer.parseInt(getHour(date[3]));
int minute_a = Integer.parseInt(date[4]);
//calendar a / time a (last time / published at )
Calendar cal_a = Calendar.getInstance();
cal_a.set(year_a, month_a, day_a, hour_a, minute_a);
//calendar b / time b (time now)
Calendar cal_b = Calendar.getInstance();
int year_b = cal_b.get(Calendar.YEAR);
int month_b = cal_b.get(Calendar.MONTH) + 1;
int day_b = cal_b.get(Calendar.DAY_OF_MONTH);
int hour_b = cal_b.get(Calendar.HOUR_OF_DAY);
int minute_b = cal_b.get(Calendar.MINUTE);
cal_b.set(year_b, month_b, day_b, hour_b, minute_b);
final long MILIDETIK_SATU_MENIT = 60 * 1000;
long wA = cal_a.getTimeInMillis();
long wB = cal_b.getTimeInMillis();
//selisih
long selisih = wB - wA;
int selisih_menit = (int) (selisih / MILIDETIK_SATU_MENIT);
if (selisih_menit > 0) {
if (selisih_menit > 60 && selisih_menit < 1440) {
int jam = selisih_menit / 60;
timeAgo = jam + " jam yang lalu";
} else if (selisih_menit > 1440) {
int hari = selisih_menit / 1440;
timeAgo = hari + " hari yang lalu";
} else {
timeAgo = selisih_menit + " menit yang lalu";
}
}
return timeAgo;
}
public static String getHour(String hour) {
String result = "";
if (hour.equals("00")) {
result = "07";
} else if (hour.equals("01")) {
result = "08";
} else if (hour.equals("02")) {
result = "09";
} else if (hour.equals("03")) {
result = "10";
} else if (hour.equals("04")) {
result = "11";
} else if (hour.equals("05")) {
result = "12";
} else if (hour.equals("06")) {
result = "13";
} else if (hour.equals("07")) {
result = "14";
} else if (hour.equals("08")) {
result = "15";
} else if (hour.equals("09")) {
result = "16";
} else if (hour.equals("10")) {
result = "17";
} else if (hour.equals("11")) {
result = "18";
} else if (hour.equals("12")) {
result = "19";
} else if (hour.equals("13")) {
result = "20";
} else if (hour.equals("14")) {
result = "21";
} else if (hour.equals("15")) {
result = "22";
} else if (hour.equals("16")) {
result = "23";
} else if (hour.equals("17")) {
result = "00";
} else if (hour.equals("18")) {
result = "01";
} else if (hour.equals("19")) {
result = "02";
} else if (hour.equals("20")) {
result = "03";
} else if (hour.equals("21")) {
result = "04";
} else if (hour.equals("22")) {
result = "05";
} else if (hour.equals("23")) {
result = "06";
}
return result;
}
}

View File

@ -0,0 +1,70 @@
package com.project.ilsaenterprise.services;
import android.app.Service;
import android.content.Intent;
import android.location.Location;
import android.os.IBinder;
import androidx.annotation.Nullable;
import com.google.android.gms.location.LocationResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
public class TrackerServiceNew extends Service {
public static final String ACTION = "com.typroject.perkebunan_nusantara.UPDATE_LOCATION";
private static final String TAG = "PESAN";
DatabaseReference silentTrackRef, titikRef;
FirebaseAuth mAuth;
String currentUser;
String currentDate = new SimpleDateFormat("dd MMMM yyyy", Locale.getDefault()).format(new Date());
private ArrayList<Integer> listVal;
HashMap<String, String> profileMap;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
public void onCreate(){
mAuth = FirebaseAuth.getInstance();
currentUser = mAuth.getCurrentUser().getUid();
silentTrackRef = FirebaseDatabase.getInstance().getReference("NewTracker").child(currentUser);
}
@Override
public void onStart(Intent intent, int startId) {
Long tsLong = System.currentTimeMillis()/1000;
String ts = tsLong.toString();
if(intent != null){
LocationResult result = LocationResult.extractResult(intent);
if(result != null){
Location location = result.getLastLocation();
if(!currentUser.equals("")){
silentTrackRef.child(currentDate).child(ts).setValue(location);
}
else
{
//silentTrackRef.child(currentUser).setValue(location);
return;
}
}
}
else
return;
}
public void onDestroy(){
return;
}
}

View File

@ -0,0 +1,32 @@
package com.project.ilsaenterprise.utils;
import java.io.File;
import java.util.ArrayList;
public class FileSearch {
public static ArrayList<String> getDirectoryPaths(String directory){
ArrayList<String> pathArray = new ArrayList<>();
File file = new File(directory);
File[] listFiles = file.listFiles();
for(int i = 0; i < listFiles.length; i++){
if(listFiles[i].isDirectory())
pathArray.add(listFiles[i].getAbsolutePath());
}
return pathArray;
}
public static ArrayList<String> getFilePaths(String directory){
ArrayList<String> pathArray = new ArrayList<>();
File file = new File(directory);
File[] listFiles = file.listFiles();
for(int i = 0; i < listFiles.length; i++){
if(listFiles[i].isFile())
pathArray.add(listFiles[i].getAbsolutePath());
}
return pathArray;
}
}

View File

@ -0,0 +1,11 @@
package com.project.ilsaenterprise.utils;
import android.os.Environment;
public class ImagePaths {
public String ROOT_DIR = Environment.getExternalStorageDirectory().getPath();
public String PICTURES = ROOT_DIR + "/Pictures";
public String CAMERA = ROOT_DIR + "/DCIM/camera";
}

View File

@ -0,0 +1,11 @@
package com.project.ilsaenterprise.utils;
import android.Manifest;
public class Permissions {
public static final String[] PERMISSIONS = {
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.CAMERA
};
}

View File

@ -0,0 +1,36 @@
package com.project.ilsaenterprise.utils;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import java.util.ArrayList;
import java.util.List;
public class SectionsPagerAdapter extends FragmentPagerAdapter {
private static final String TAG = "SectionsPagerAdapter";
private final List<Fragment> mFragmentList = new ArrayList<>();
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment){
mFragmentList.add(fragment);
}
}

View File

@ -0,0 +1,26 @@
package com.project.ilsaenterprise.utils;
import android.content.Context;
import android.util.AttributeSet;
import androidx.appcompat.widget.AppCompatImageView;
public class SquareImageView extends AppCompatImageView {
public SquareImageView(Context context) {
super(context);
}
public SquareImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SquareImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, widthMeasureSpec);
}
}

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="0"
android:toXDelta="100%p"
android:duration="1500"
/>
</set>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true">
<translate
android:fromYDelta="100%"
android:toYDelta="0%"
android:duration="300" />
<scale
android:pivotY="50%"
android:pivotX="50%"
android:toYScale="0.8"
android:toXScale="0.8" />
<alpha
android:fromAlpha="0"
android:toAlpha="1"
android:duration="800" />
</set>

Some files were not shown because too many files have changed in this diff Show More