├── app
├── .gitignore
├── src
│ ├── main
│ │ ├── ic_launcher-web.png
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ ├── slider1.png
│ │ │ │ ├── slider2.png
│ │ │ │ ├── slider3.png
│ │ │ │ ├── slider_background.png
│ │ │ │ ├── drawable-ldpi
│ │ │ │ │ └── Path 1.png
│ │ │ │ ├── drawable-mdpi
│ │ │ │ │ └── Path 1.png
│ │ │ │ ├── drawable-xhdpi
│ │ │ │ │ └── Path 1.png
│ │ │ │ ├── drawable-xxhdpi
│ │ │ │ │ └── Path 1.png
│ │ │ │ ├── drawable-xxxhdpi
│ │ │ │ │ └── Path 1.png
│ │ │ │ ├── drawable-hdpi
│ │ │ │ │ └── slider_background.png
│ │ │ │ ├── ic_decrease_white_24dp.xml
│ │ │ │ ├── ic_increase_white_24dp.xml
│ │ │ │ ├── ic_add_black_24dp.xml
│ │ │ │ ├── ic_home_black_24dp.xml
│ │ │ │ ├── ic_logs_black_24dp.xml
│ │ │ │ ├── gradient_rounded_button.xml
│ │ │ │ ├── ic_request_black_24dp.xml
│ │ │ │ ├── ic_logout_white_24dp.xml
│ │ │ │ ├── ic_search_white_24dp.xml
│ │ │ │ ├── ic_search_black_24dp.xml
│ │ │ │ ├── ic_shopping_basket_black_24dp.xml
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── mipmap-hdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_launcher_round.png
│ │ │ │ └── ic_launcher_foreground.png
│ │ │ ├── mipmap-mdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_launcher_round.png
│ │ │ │ └── ic_launcher_foreground.png
│ │ │ ├── mipmap-xhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_launcher_round.png
│ │ │ │ └── ic_launcher_foreground.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_launcher_round.png
│ │ │ │ └── ic_launcher_foreground.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_launcher_round.png
│ │ │ │ └── ic_launcher_foreground.png
│ │ │ ├── values
│ │ │ │ ├── colors.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── menu
│ │ │ │ ├── logout_menu.xml
│ │ │ │ ├── components_search.xml
│ │ │ │ ├── admin_bottom_navigation.xml
│ │ │ │ └── user_bottom_navigation.xml
│ │ │ ├── layout
│ │ │ │ ├── activity_user__main.xml
│ │ │ │ ├── user_home_fragment.xml
│ │ │ │ ├── user_search_fragment.xml
│ │ │ │ ├── user_logs_fragment.xml
│ │ │ │ ├── admin_home_fragment.xml
│ │ │ │ ├── admin_requests_fragment.xml
│ │ │ │ ├── admin_logs_fragment.xml
│ │ │ │ ├── activity_admin__main.xml
│ │ │ │ ├── slider_layout.xml
│ │ │ │ ├── admin_home_recycler_card.xml
│ │ │ │ ├── activity_main.xml
│ │ │ │ ├── add_component_bottom_fragment.xml
│ │ │ │ ├── user_return_dialog.xml
│ │ │ │ ├── admin_logs_recycler_card.xml
│ │ │ │ ├── admin_request_card.xml
│ │ │ │ ├── user_search_recycler_card.xml
│ │ │ │ ├── user_component_request_dialog.xml
│ │ │ │ ├── admin_component_dialog.xml
│ │ │ │ └── admin_requests_dialog.xml
│ │ │ └── drawable-v24
│ │ │ │ └── ic_launcher_foreground.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── example
│ │ │ │ └── inventory
│ │ │ │ ├── Models
│ │ │ │ ├── LoginModel.java
│ │ │ │ ├── ComponentModel.java
│ │ │ │ ├── LogsModel.java
│ │ │ │ ├── RequestModel.java
│ │ │ │ └── FinalRequestModel.java
│ │ │ │ ├── UserClass
│ │ │ │ ├── User_Main.java
│ │ │ │ ├── UserHomeFragment.java
│ │ │ │ ├── UserLogsFragment.java
│ │ │ │ └── UserSearchFragment.java
│ │ │ │ ├── Adapter
│ │ │ │ ├── Slider_Adapter.java
│ │ │ │ ├── Admin_Logs_Adapter.java
│ │ │ │ ├── Admin_Home_Adapter.java
│ │ │ │ ├── User_Home_Adapter.java
│ │ │ │ ├── User_Search_Adapter.java
│ │ │ │ └── Admin_Requests_Adapter.java
│ │ │ │ ├── AdminClass
│ │ │ │ ├── Admin_Main.java
│ │ │ │ ├── AdminLogsFragments.java
│ │ │ │ ├── AdminRequestsFragment.java
│ │ │ │ ├── AddComponentBottomSheet.java
│ │ │ │ └── AdminHomeFragment.java
│ │ │ │ └── MainActivity.java
│ │ └── AndroidManifest.xml
│ ├── test
│ │ └── java
│ │ │ └── com
│ │ │ └── example
│ │ │ └── inventory
│ │ │ └── ExampleUnitTest.java
│ └── androidTest
│ │ └── java
│ │ └── com
│ │ └── example
│ │ └── inventory
│ │ └── ExampleInstrumentedTest.java
├── credentials.json
├── proguard-rules.pro
├── google-services.json
└── build.gradle
├── settings.gradle
├── README.md
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── .idea
├── encodings.xml
├── vcs.xml
├── misc.xml
├── runConfigurations.xml
└── gradle.xml
├── .gitignore
├── gradle.properties
├── gradlew.bat
└── gradlew
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # SIESGST_Inventory
2 | An App To Maintain Inventory Items
3 |
--------------------------------------------------------------------------------
/app/src/main/ic_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/ic_launcher-web.png
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/app/src/main/res/drawable/slider1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/drawable/slider1.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/slider2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/drawable/slider2.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/slider3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/drawable/slider3.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/slider_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/drawable/slider_background.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/drawable-ldpi/Path 1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/drawable/drawable-ldpi/Path 1.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/drawable-mdpi/Path 1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/drawable/drawable-mdpi/Path 1.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/drawable-xhdpi/Path 1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/drawable/drawable-xhdpi/Path 1.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/drawable-xxhdpi/Path 1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/drawable/drawable-xxhdpi/Path 1.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/drawable-xxxhdpi/Path 1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/drawable/drawable-xxxhdpi/Path 1.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/drawable-hdpi/slider_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kriticalflare/SIESGST_Inventory/master/app/src/main/res/drawable/drawable-hdpi/slider_background.png
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/caches
5 | /.idea/libraries
6 | /.idea/modules.xml
7 | /.idea/workspace.xml
8 | /.idea/navEditor.xml
9 | /.idea/assetWizardSettings.xml
10 | .DS_Store
11 | /build
12 | /captures
13 | .externalNativeBuild
14 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Jun 29 14:59:19 IST 2019
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #8a00d4
4 | #d527b7
5 | #ff82c3
6 | #ffc46b
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/credentials.json:
--------------------------------------------------------------------------------
1 | {"web":{"client_id":"215751279497-81en9eht5q29e7bqj88v2qpljeou66iu.apps.googleusercontent.com","project_id":"siesgst-inventory","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"A1hb5b6xbFKKSz5kN3McyABp"}}
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_decrease_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_increase_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_add_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_home_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Inventory
3 |
4 | - Equipments
5 | - Chassis
6 | - Motors
7 | - ICs
8 | - Modules
9 | - Wires
10 | - Components
11 | - Others
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/logout_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_logs_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/gradient_rounded_button.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/test/java/com/example/inventory/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_request_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_logout_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/components_search.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_search_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_search_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/admin_bottom_navigation.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/user_bottom_navigation.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/inventory/Models/LoginModel.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory.Models;
2 |
3 | public class LoginModel {
4 | public LoginModel(String email, String status) {
5 | this.email = email;
6 | this.status = status;
7 | }
8 | public LoginModel(){}
9 |
10 | String email;
11 |
12 | public String getEmail() {
13 | return email;
14 | }
15 |
16 | public void setEmail(String email) {
17 | this.email = email;
18 | }
19 |
20 | public String getStatus() {
21 | return status;
22 | }
23 |
24 | public void setStatus(String status) {
25 | this.status = status;
26 | }
27 |
28 | String status;
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_shopping_basket_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | android.enableJetifier=true
10 | android.useAndroidX=true
11 | org.gradle.jvmargs=-Xmx1536m
12 | # When configured, Gradle will run in incubating parallel mode.
13 | # This option should only be used with decoupled projects. More details, visit
14 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
15 | # org.gradle.parallel=true
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/example/inventory/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory;
2 |
3 | import android.content.Context;
4 | import androidx.test.InstrumentationRegistry;
5 | import androidx.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumented test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.example.inventory", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/inventory/Models/ComponentModel.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory.Models;
2 |
3 | public class ComponentModel {
4 | public ComponentModel(){}
5 |
6 | public ComponentModel(String component, String adder, int count) {
7 | this.component = component;
8 | this.adder = adder;
9 | this.count = count;
10 | }
11 |
12 | public String getComponent() {
13 | return component;
14 | }
15 |
16 | public void setComponent(String component) {
17 | this.component = component;
18 | }
19 |
20 | public String getAdder() {
21 | return adder;
22 | }
23 |
24 | public void setAdder(String adder) {
25 | this.adder = adder;
26 | }
27 |
28 | public int getCount() {
29 | return count;
30 | }
31 |
32 | public void setCount(int count) {
33 | this.count = count;
34 | }
35 |
36 | String component,adder;
37 | int count;
38 | }
39 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_user__main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
15 |
16 |
17 |
18 |
19 |
20 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/user_home_fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
19 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/user_search_fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
18 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/user_logs_fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
19 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/admin_home_fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
19 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/inventory/Models/LogsModel.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory.Models;
2 |
3 | public class LogsModel {
4 |
5 | public LogsModel(){}
6 |
7 | public LogsModel(String uname, String component, String datetime, int count,int logtype) {
8 | this.uname = uname;
9 | this.component = component;
10 | this.datetime = datetime;
11 | this.count = count;
12 | this.logtype =logtype;
13 | }
14 |
15 | public String getUname() {
16 | return uname;
17 | }
18 |
19 | public void setUname(String uname) {
20 | this.uname = uname;
21 | }
22 |
23 | public String getComponent() {
24 | return component;
25 | }
26 |
27 | public void setComponent(String component) {
28 | this.component = component;
29 | }
30 |
31 | public String getDatetime() {
32 | return datetime;
33 | }
34 |
35 | public void setDatetime(String datetime) {
36 | this.datetime = datetime;
37 | }
38 |
39 | public int getCount() {
40 | return count;
41 | }
42 |
43 | public void setCount(int count) {
44 | this.count = count;
45 | }
46 |
47 | public int getLogtype() {
48 | return logtype;
49 | }
50 |
51 | public void setLogtype(int logtype) {
52 | this.logtype = logtype;
53 | }
54 | String uname,component,datetime;
55 | int count,logtype;
56 | }
--------------------------------------------------------------------------------
/app/src/main/res/layout/admin_requests_fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
19 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/admin_logs_fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
21 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
15 |
18 |
19 |
20 |
23 |
24 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/app/google-services.json:
--------------------------------------------------------------------------------
1 | {
2 | "project_info": {
3 | "project_number": "215751279497",
4 | "firebase_url": "https://siesgst-inventory.firebaseio.com",
5 | "project_id": "siesgst-inventory",
6 | "storage_bucket": "siesgst-inventory.appspot.com"
7 | },
8 | "client": [
9 | {
10 | "client_info": {
11 | "mobilesdk_app_id": "1:215751279497:android:3cded60a8ed0b07e",
12 | "android_client_info": {
13 | "package_name": "com.example.inventory"
14 | }
15 | },
16 | "oauth_client": [
17 | {
18 | "client_id": "215751279497-pg4sv4oaen27ivfppmbe7fo272sjt2pd.apps.googleusercontent.com",
19 | "client_type": 1,
20 | "android_info": {
21 | "package_name": "com.example.inventory",
22 | "certificate_hash": "3e65845c301c74477adb6cca8b11538012565a60"
23 | }
24 | },
25 | {
26 | "client_id": "215751279497-ltejk56cd8ns1f9k0di1er4vpv4d6puc.apps.googleusercontent.com",
27 | "client_type": 3
28 | }
29 | ],
30 | "api_key": [
31 | {
32 | "current_key": "AIzaSyARfpES228pdBmn731HGn1PWXyUI2lvsNE"
33 | }
34 | ],
35 | "services": {
36 | "appinvite_service": {
37 | "other_platform_oauth_client": [
38 | {
39 | "client_id": "215751279497-ltejk56cd8ns1f9k0di1er4vpv4d6puc.apps.googleusercontent.com",
40 | "client_type": 3
41 | }
42 | ]
43 | }
44 | }
45 | }
46 | ],
47 | "configuration_version": "1"
48 | }
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 | apply plugin: 'kotlin-android-extensions'
3 | apply plugin: 'kotlin-android'
4 | apply plugin: 'com.google.gms.google-services'
5 |
6 | android {
7 | compileSdkVersion 28
8 | defaultConfig {
9 | applicationId "com.example.inventory"
10 | minSdkVersion 21
11 | targetSdkVersion 28
12 | versionCode 1
13 | versionName "1.0"
14 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
15 | }
16 | buildTypes {
17 | release {
18 | minifyEnabled false
19 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
20 | }
21 | }
22 | }
23 |
24 | dependencies {
25 | implementation fileTree(dir: 'libs', include: ['*.jar'])
26 | //noinspection GradleCompatible
27 | implementation 'androidx.appcompat:appcompat:1.0.0'
28 | implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
29 | implementation 'com.google.firebase:firebase-database:18.0.0'
30 | testImplementation 'junit:junit:4.12'
31 | implementation 'com.google.android.material:material:1.0.0'
32 | androidTestImplementation 'androidx.test:runner:1.1.0'
33 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
34 | implementation 'androidx.recyclerview:recyclerview:1.0.0'
35 | implementation 'androidx.cardview:cardview:1.0.0'
36 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
37 | implementation 'com.google.firebase:firebase-auth:17.0.0'
38 | implementation 'com.google.android.gms:play-services-auth:17.0.0'
39 | }
40 | repositories {
41 | mavenCentral()
42 | }
43 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/inventory/Models/RequestModel.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory.Models;
2 |
3 | public class RequestModel {
4 | String component;
5 | String requestcount;
6 | String uemail;
7 | String uname;
8 | String datetime;
9 |
10 | public String getRequesttype() {
11 | return requesttype;
12 | }
13 |
14 | public void setRequesttype(String requesttype) {
15 | this.requesttype = requesttype;
16 | }
17 |
18 | String requesttype;
19 |
20 | public RequestModel(){}
21 |
22 | public String getComponent() {
23 | return component;
24 | }
25 |
26 | public void setComponent(String component) {
27 | this.component = component;
28 | }
29 |
30 | public String getRequestcount() {
31 | return requestcount;
32 | }
33 |
34 | public void setRequestcount(String requestcount) {
35 | this.requestcount = requestcount;
36 | }
37 |
38 | public String getUemail() {
39 | return uemail;
40 | }
41 |
42 | public void setUemail(String uemail) {
43 | this.uemail = uemail;
44 | }
45 |
46 | public String getUname() {
47 | return uname;
48 | }
49 |
50 | public void setUname(String uname) {
51 | this.uname = uname;
52 | }
53 |
54 | public String getDatetime() {
55 | return datetime;
56 | }
57 |
58 | public void setDatetime(String datetime) {
59 | this.datetime = datetime;
60 | }
61 |
62 | public RequestModel(String component, String requestcount, String uemail, String uname, String datetime,String requesttype) {
63 | this.component = component;
64 | this.requestcount = requestcount;
65 | this.uemail = uemail;
66 | this.uname = uname;
67 | this.datetime = datetime;
68 | this.requesttype =requesttype;
69 |
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_admin__main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
15 |
16 |
17 |
25 |
26 |
27 |
28 |
29 |
40 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
19 |
22 |
25 |
26 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/inventory/Models/FinalRequestModel.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory.Models;
2 |
3 | public class FinalRequestModel {
4 | String component;
5 | String requestcount;
6 | String uemail;
7 | String uname;
8 | String datetime;
9 | String requesttype;
10 |
11 | public String getRequesttype() {
12 | return requesttype;
13 | }
14 |
15 | public void setRequesttype(String requesttype) {
16 | this.requesttype = requesttype;
17 | }
18 |
19 | public FinalRequestModel() {}
20 |
21 | public String getComponent() {
22 | return component;
23 | }
24 |
25 | public void setComponent(String component) {
26 | this.component = component;
27 | }
28 |
29 | public String getRequestcount() {
30 | return requestcount;
31 | }
32 |
33 | public void setRequestcount(String requestcount) {
34 | this.requestcount = requestcount;
35 | }
36 |
37 | public String getUemail() {
38 | return uemail;
39 | }
40 |
41 | public void setUemail(String uemail) {
42 | this.uemail = uemail;
43 | }
44 |
45 | public String getUname() {
46 | return uname;
47 | }
48 |
49 | public void setUname(String uname) {
50 | this.uname = uname;
51 | }
52 |
53 | public String getDatetime() {
54 | return datetime;
55 | }
56 |
57 | public void setDatetime(String datetime) {
58 | this.datetime = datetime;
59 | }
60 |
61 | public Integer getCount() {
62 | return count;
63 | }
64 |
65 | public void setCount(Integer count) {
66 | this.count = count;
67 | }
68 |
69 | public FinalRequestModel(String component, String requestcount, String uemail, String uname, String datetime, Integer count,String requesttype) {
70 | this.component = component;
71 | this.requestcount = requestcount;
72 | this.uemail = uemail;
73 | this.uname = uname;
74 | this.datetime = datetime;
75 | this.count = count;
76 | this.requesttype =requesttype;
77 | }
78 |
79 | Integer count;
80 | }
81 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/inventory/UserClass/User_Main.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory.UserClass;
2 |
3 | import androidx.annotation.NonNull;
4 | import com.google.android.material.bottomnavigation.BottomNavigationView;
5 | import androidx.fragment.app.Fragment;
6 | import androidx.appcompat.app.AppCompatActivity;
7 | import android.os.Bundle;
8 | import android.view.MenuItem;
9 |
10 | import com.example.inventory.R;
11 |
12 | public class User_Main extends AppCompatActivity {
13 |
14 | private BottomNavigationView userBottomNav;
15 |
16 | @Override
17 | protected void onCreate(Bundle savedInstanceState) {
18 | super.onCreate(savedInstanceState);
19 | setContentView(R.layout.activity_user__main);
20 |
21 | userBottomNav = (BottomNavigationView)findViewById(R.id.bottom_navigation);
22 | userBottomNav.setOnNavigationItemSelectedListener(navListener);
23 | getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
24 | new UserHomeFragment()).commit();
25 |
26 | }
27 |
28 | private BottomNavigationView.OnNavigationItemSelectedListener navListener =
29 | new BottomNavigationView.OnNavigationItemSelectedListener() {
30 | @Override
31 | public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
32 | Fragment selectedFragment =null;
33 |
34 | switch ( menuItem.getItemId()){
35 | case R.id.home_icon:
36 | selectedFragment = new UserHomeFragment();
37 | break;
38 | case R.id.search_icon:
39 | selectedFragment = new UserSearchFragment();
40 | break;
41 | case R.id.logs_icon:
42 | selectedFragment = new UserLogsFragment();
43 | }
44 | getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
45 | selectedFragment).commit();
46 | return true;
47 |
48 |
49 |
50 | }
51 | };
52 |
53 |
54 |
55 |
56 | }
57 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | set DIRNAME=%~dp0
12 | if "%DIRNAME%" == "" set DIRNAME=.
13 | set APP_BASE_NAME=%~n0
14 | set APP_HOME=%DIRNAME%
15 |
16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
17 | set DEFAULT_JVM_OPTS=
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windows variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 |
53 | :win9xME_args
54 | @rem Slurp the command line arguments.
55 | set CMD_LINE_ARGS=
56 | set _SKIP=2
57 |
58 | :win9xME_args_slurp
59 | if "x%~1" == "x" goto execute
60 |
61 | set CMD_LINE_ARGS=%*
62 |
63 | :execute
64 | @rem Setup the command line
65 |
66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
67 |
68 | @rem Execute Gradle
69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
70 |
71 | :end
72 | @rem End local scope for the variables with windows NT shell
73 | if "%ERRORLEVEL%"=="0" goto mainEnd
74 |
75 | :fail
76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
77 | rem the _cmd.exe /c_ return code!
78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
79 | exit /b 1
80 |
81 | :mainEnd
82 | if "%OS%"=="Windows_NT" endlocal
83 |
84 | :omega
85 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/inventory/Adapter/Slider_Adapter.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory.Adapter;
2 |
3 | import android.content.Context;
4 | import androidx.annotation.NonNull;
5 | import androidx.viewpager.widget.PagerAdapter;
6 | import android.view.LayoutInflater;
7 | import android.view.View;
8 | import android.view.ViewGroup;
9 | import android.widget.ImageView;
10 | import android.widget.LinearLayout;
11 | import android.widget.TextView;
12 |
13 | import com.example.inventory.R;
14 |
15 | public class Slider_Adapter extends PagerAdapter {
16 |
17 | Context context;
18 | LayoutInflater layoutInflater;
19 |
20 | public Slider_Adapter(Context context){
21 | this.context = context;
22 | }
23 |
24 | public int[] slider_images ={
25 | R.drawable.slider1,
26 | R.drawable.slider2,
27 | R.drawable.slider3
28 | };
29 | public String[] slider_headings ={
30 | "Store",
31 | "Logs",
32 | "Save Time!"
33 | };
34 | public String[] slider_texts ={
35 | "Manage Database of All Components",
36 | "Manage Requests of Components",
37 | "Save Time in Organizing the Inventory "
38 | };
39 |
40 | @Override
41 | public int getCount() {
42 | return slider_headings.length;
43 | }
44 |
45 | @Override
46 | public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
47 | return view == (LinearLayout)o;
48 | }
49 |
50 | @NonNull
51 | @Override
52 | public Object instantiateItem(@NonNull ViewGroup container, int position) {
53 | layoutInflater = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
54 | View view =layoutInflater.inflate(R.layout.slider_layout,container,false);
55 |
56 | ImageView slider_image = (ImageView) view.findViewById(R.id.slider_image);
57 | TextView slider_heading = (TextView) view.findViewById(R.id.slider_heading);
58 | TextView slider_text =(TextView)view.findViewById(R.id.slider_text);
59 | slider_image.setImageResource(slider_images[position]);
60 | slider_heading.setText(slider_headings[position]);
61 | slider_text.setText(slider_texts[position] );
62 | container.addView(view);
63 | return view;
64 | }
65 |
66 | @Override
67 | public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
68 | container.removeView((LinearLayout)object);
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/slider_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
18 |
19 |
33 |
34 |
35 |
44 |
58 |
59 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/inventory/AdminClass/Admin_Main.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory.AdminClass;
2 |
3 | import androidx.annotation.NonNull;
4 | import com.google.android.material.bottomnavigation.BottomNavigationView;
5 | import com.google.android.material.floatingactionbutton.FloatingActionButton;
6 | import androidx.fragment.app.Fragment;
7 | import androidx.appcompat.app.AppCompatActivity;
8 | import android.os.Bundle;
9 | import android.view.MenuItem;
10 | import android.view.View;
11 |
12 | import com.example.inventory.R;
13 |
14 | public class Admin_Main extends AppCompatActivity {
15 |
16 | private BottomNavigationView bottomnavigate ;
17 | private FloatingActionButton addComp;
18 | // DatabaseHelper dbHelp;
19 |
20 |
21 | @Override
22 | protected void onCreate(Bundle savedInstanceState) {
23 | super.onCreate(savedInstanceState);
24 | setContentView(R.layout.activity_admin__main);
25 |
26 | // dbHelp = new DatabaseHelper(this);
27 | addComp = (FloatingActionButton)findViewById(R.id.add_components);
28 | bottomnavigate = (BottomNavigationView)findViewById(R.id.admin_bottom_navigation);
29 | bottomnavigate.setOnNavigationItemSelectedListener(admin_bottom_listener);
30 |
31 | getSupportFragmentManager().beginTransaction().replace(R.id.admin_fragment, new AdminHomeFragment()).commit();
32 |
33 | addComp.setOnClickListener(new View.OnClickListener() {
34 | @Override
35 | public void onClick(View v) {
36 | AddComponentBottomSheet addCompSheet = new AddComponentBottomSheet();
37 | addCompSheet.show(getSupportFragmentManager(),"Add Component Sheet");
38 | }
39 | });
40 | }
41 | private BottomNavigationView.OnNavigationItemSelectedListener admin_bottom_listener =
42 | new BottomNavigationView.OnNavigationItemSelectedListener() {
43 | @Override
44 | public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
45 | Fragment selectedFragment = null;
46 | switch (menuItem.getItemId()){
47 | case R.id.home_icon:
48 | selectedFragment = new AdminHomeFragment();
49 | break;
50 | case R.id.logs_icon:
51 | selectedFragment = new AdminLogsFragments();
52 | break;
53 | case R.id.request_icon:
54 | selectedFragment = new AdminRequestsFragment();
55 | break;
56 |
57 | }
58 | getSupportFragmentManager().beginTransaction().replace(R.id.admin_fragment,selectedFragment).commit();
59 | return true;
60 |
61 | }
62 | };
63 | }
64 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/admin_home_recycler_card.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
18 |
21 |
33 |
34 |
46 |
55 |
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
15 |
16 |
17 |
18 |
19 |
28 |
29 |
30 |
31 |
45 |
55 |
56 |
57 |
69 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/inventory/UserClass/UserHomeFragment.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory.UserClass;
2 |
3 | import android.os.Bundle;
4 | import androidx.annotation.NonNull;
5 | import androidx.annotation.Nullable;
6 | import androidx.fragment.app.Fragment;
7 | import androidx.recyclerview.widget.LinearLayoutManager;
8 | import androidx.recyclerview.widget.RecyclerView;
9 |
10 | import android.view.LayoutInflater;
11 | import android.view.View;
12 | import android.view.ViewGroup;
13 | import android.widget.SearchView;
14 | import android.widget.Toast;
15 |
16 | import com.example.inventory.Adapter.User_Home_Adapter;
17 | import com.example.inventory.Adapter.User_Search_Adapter;
18 | import com.example.inventory.Models.ComponentModel;
19 | import com.example.inventory.R;
20 | import com.google.android.gms.auth.api.signin.GoogleSignIn;
21 | import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
22 | import com.google.android.gms.auth.api.signin.GoogleSignInClient;
23 | import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
24 | import com.google.firebase.database.DataSnapshot;
25 | import com.google.firebase.database.DatabaseError;
26 | import com.google.firebase.database.DatabaseReference;
27 | import com.google.firebase.database.FirebaseDatabase;
28 | import com.google.firebase.database.ValueEventListener;
29 |
30 | import java.util.ArrayList;
31 |
32 | public class UserHomeFragment extends Fragment {
33 | RecyclerView home_recycler;
34 | DatabaseReference firerefComp;
35 | ArrayList componentList;
36 | GoogleSignInClient mGoogleSignInClient;
37 |
38 |
39 | @Nullable
40 | @Override
41 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
42 | View view = inflater.inflate(R.layout.user_home_fragment,container,false);
43 | home_recycler = (RecyclerView)view.findViewById(R.id.user_home_recycler);
44 |
45 | GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
46 | .requestEmail()
47 | .build();
48 | mGoogleSignInClient = GoogleSignIn.getClient(getContext(), gso);
49 | final GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(getContext());
50 |
51 | home_recycler.setLayoutManager(new LinearLayoutManager(getContext()));
52 | // FirebaseDatabase.getInstance().setPersistenceEnabled(true);
53 | firerefComp = FirebaseDatabase.getInstance().getReference("Components").child(account.getDisplayName());
54 | if(firerefComp!=null){
55 | firerefComp.addValueEventListener(new ValueEventListener() {
56 | @Override
57 | public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
58 | if(dataSnapshot.exists()){
59 | componentList = new ArrayList<>();
60 | for(DataSnapshot ds: dataSnapshot.getChildren()){
61 | componentList.add(ds.getValue(ComponentModel.class));
62 | }
63 | User_Home_Adapter user_home_adapter = new User_Home_Adapter(componentList);
64 | home_recycler.setAdapter(user_home_adapter);
65 | }
66 | }
67 | @Override
68 | public void onCancelled(@NonNull DatabaseError databaseError) {
69 | Toast.makeText(getContext(),databaseError.getMessage(),Toast.LENGTH_SHORT).show();
70 | }
71 | });
72 | }
73 | return view;
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/add_component_bottom_fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
21 |
31 |
41 |
42 |
54 |
55 |
68 |
69 |
82 |
83 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/inventory/Adapter/Admin_Logs_Adapter.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory.Adapter;
2 |
3 | import android.graphics.Color;
4 | import android.util.Log;
5 | import android.view.LayoutInflater;
6 | import android.view.View;
7 | import android.view.ViewGroup;
8 | import android.widget.TextView;
9 |
10 | import androidx.annotation.NonNull;
11 | import androidx.recyclerview.widget.RecyclerView;
12 |
13 | import com.example.inventory.Models.LogsModel;
14 | import com.example.inventory.R;
15 |
16 | import java.util.ArrayList;
17 |
18 | public class Admin_Logs_Adapter extends RecyclerView.Adapter {
19 |
20 | ArrayList logModel;
21 |
22 | public Admin_Logs_Adapter(ArrayList logModel){
23 | this.logModel = logModel;
24 | }
25 |
26 | @NonNull
27 | @Override
28 | public Admin_Logs_ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
29 | View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.admin_logs_recycler_card,viewGroup,false);
30 | Admin_Logs_ViewHolder adminLViewHold = new Admin_Logs_ViewHolder(view);
31 | return adminLViewHold;
32 | }
33 |
34 | @Override
35 | public void onBindViewHolder(@NonNull Admin_Logs_Adapter.Admin_Logs_ViewHolder admin_logs_viewHolder, int i) {
36 | admin_logs_viewHolder.Component.setText(logModel.get(i).getComponent());
37 | admin_logs_viewHolder.Count.setText(String.valueOf(logModel.get(i).getCount()));
38 | admin_logs_viewHolder.Uname.setText(logModel.get(i).getUname());
39 | admin_logs_viewHolder.Time.setText(logModel.get(i).getDatetime());
40 | //admin_logs_viewHolder.LogType.setText(String.valueOf(logModel.get(i).getLogtype()));
41 | switch (logModel.get(i).getLogtype()){
42 | case 0:
43 | admin_logs_viewHolder.LogType.setText("Added");
44 | Log.d("LogScreen", "onBindViewHolder: Logtype0");
45 | admin_logs_viewHolder.LogType.setTextColor(Color.MAGENTA);
46 | break;
47 | case 1:
48 | admin_logs_viewHolder.LogType.setText("REQUEST ACCEPTED");
49 | Log.d("LogScreen", "onBindViewHolder: Logtype1");
50 | admin_logs_viewHolder.LogType.setTextColor(Color.BLUE);
51 | break;
52 | case 2:
53 | admin_logs_viewHolder.LogType.setText("REJECTED");
54 | Log.d("LogScreen", "onBindViewHolder: Logtype2");
55 | admin_logs_viewHolder.LogType.setTextColor(Color.RED);
56 | break;
57 | case 3:
58 | admin_logs_viewHolder.LogType.setText("RETURN ACCEPTED");
59 | Log.e("LogScreen", "onBindViewHolder: Logtype3");
60 | admin_logs_viewHolder.LogType.setTextColor(Color.GREEN);
61 | }
62 | }
63 |
64 | @Override
65 | public int getItemCount() {
66 | return logModel.size();
67 | }
68 |
69 | class Admin_Logs_ViewHolder extends RecyclerView.ViewHolder{
70 | TextView Component,Count,Uname,Time,LogType;
71 |
72 |
73 | public Admin_Logs_ViewHolder(@NonNull View itemView) {
74 | super(itemView);
75 | Component = itemView.findViewById(R.id.admin_logs_card_component);
76 | Count = itemView.findViewById(R.id.admin_logs_card_count);
77 | Uname = itemView.findViewById(R.id.admin_logs_card_uname);
78 | Time = itemView.findViewById(R.id.admin_logs_time);
79 | LogType = itemView.findViewById(R.id.admin_logs_card_type);
80 | }
81 | }
82 |
83 | }
84 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/user_return_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
21 |
29 |
40 |
51 |
52 |
63 |
73 |
74 |
75 |
92 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/inventory/UserClass/UserLogsFragment.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory.UserClass;
2 |
3 | import android.content.Intent;
4 | import android.os.Bundle;
5 | import android.view.LayoutInflater;
6 | import android.view.Menu;
7 | import android.view.MenuInflater;
8 | import android.view.MenuItem;
9 | import android.view.View;
10 | import android.view.ViewGroup;
11 | import android.widget.Toast;
12 |
13 | import androidx.annotation.NonNull;
14 | import androidx.annotation.Nullable;
15 | import androidx.fragment.app.Fragment;
16 | import androidx.recyclerview.widget.RecyclerView;
17 |
18 | import com.example.inventory.Adapter.Admin_Logs_Adapter;
19 | import com.example.inventory.MainActivity;
20 | import com.example.inventory.Models.LogsModel;
21 | import com.example.inventory.R;
22 | import com.google.android.gms.auth.api.signin.GoogleSignIn;
23 | import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
24 | import com.google.android.gms.auth.api.signin.GoogleSignInClient;
25 | import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
26 | import com.google.android.gms.tasks.OnCompleteListener;
27 | import com.google.firebase.auth.FirebaseAuth;
28 | import com.google.firebase.database.DataSnapshot;
29 | import com.google.firebase.database.DatabaseError;
30 | import com.google.firebase.database.DatabaseReference;
31 | import com.google.firebase.database.FirebaseDatabase;
32 | import com.google.firebase.database.ValueEventListener;
33 |
34 | import java.util.ArrayList;
35 |
36 | public class UserLogsFragment extends Fragment {
37 | RecyclerView logs_recycler;
38 | ArrayList logList;
39 | DatabaseReference firereflog;
40 | GoogleSignInClient mGoogleSignInClient;
41 |
42 | @Nullable
43 | @Override
44 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
45 | View view = inflater.inflate(R.layout.user_logs_fragment,container,false);
46 | logs_recycler = (RecyclerView)view.findViewById(R.id.user_logs_recycler);
47 | setHasOptionsMenu(true);
48 |
49 |
50 | GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
51 | .requestEmail()
52 | .build();
53 | mGoogleSignInClient = GoogleSignIn.getClient(getContext(), gso);
54 | final GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(getContext());
55 |
56 |
57 |
58 |
59 | firereflog = FirebaseDatabase.getInstance().getReference("Logs");
60 | if(firereflog!=null){
61 | firereflog.orderByChild("uname").equalTo(account.getDisplayName()).addValueEventListener(new ValueEventListener(){
62 | @Override
63 | public void onDataChange(@NonNull DataSnapshot dataSnapshot){
64 | if(dataSnapshot.exists()){
65 | logList = new ArrayList<>();
66 | for(DataSnapshot ds : dataSnapshot.getChildren()){
67 | logList.add(ds.getValue(LogsModel.class));
68 | }
69 | Admin_Logs_Adapter admin_logs_adapter = new Admin_Logs_Adapter(logList);
70 | logs_recycler.setAdapter(admin_logs_adapter);
71 | }
72 | }
73 |
74 | @Override
75 | public void onCancelled(@NonNull DatabaseError databaseError){
76 | Toast.makeText(getContext(),databaseError.getMessage(),Toast.LENGTH_SHORT).show();
77 |
78 | }
79 |
80 | });
81 | }
82 |
83 | return view;
84 |
85 | }
86 |
87 |
88 | @Override
89 | public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
90 | inflater.inflate(R.menu.logout_menu,menu);
91 | MenuItem logoutBut = menu.findItem(R.id.action_logout);
92 | super.onCreateOptionsMenu(menu, inflater);
93 | }
94 | @Override
95 | public boolean onOptionsItemSelected(MenuItem item) {
96 | switch ((item.getItemId())){
97 | case R.id.action_logout:
98 | Toast.makeText(getContext(),"signout",Toast.LENGTH_SHORT).show();
99 | return true;
100 | default:
101 | return super.onOptionsItemSelected(item);
102 | }
103 |
104 |
105 | }
106 | }
107 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/inventory/AdminClass/AdminLogsFragments.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory.AdminClass;
2 |
3 | import android.content.Intent;
4 | import android.os.Bundle;
5 | import androidx.annotation.NonNull;
6 | import androidx.annotation.Nullable;
7 | import androidx.fragment.app.Fragment;
8 | import androidx.recyclerview.widget.RecyclerView;
9 |
10 | import android.view.LayoutInflater;
11 | import android.view.Menu;
12 | import android.view.MenuInflater;
13 | import android.view.MenuItem;
14 | import android.view.View;
15 | import android.view.ViewGroup;
16 | import android.widget.Toast;
17 |
18 | import com.example.inventory.Adapter.Admin_Logs_Adapter;
19 | import com.example.inventory.MainActivity;
20 | import com.example.inventory.Models.LogsModel;
21 | import com.example.inventory.Models.LogsModel;
22 | import com.example.inventory.R;
23 | import com.google.android.material.floatingactionbutton.FloatingActionButton;
24 | import com.google.firebase.auth.FirebaseAuth;
25 | import com.google.firebase.auth.FirebaseUser;
26 | import com.google.firebase.database.DataSnapshot;
27 | import com.google.firebase.database.DatabaseError;
28 | import com.google.firebase.database.DatabaseReference;
29 | import com.google.firebase.database.FirebaseDatabase;
30 | import com.google.firebase.database.ValueEventListener;
31 |
32 |
33 |
34 | import java.util.ArrayList;
35 |
36 | public class AdminLogsFragments extends Fragment {
37 | RecyclerView logs_recycler;
38 | ArrayList logList;
39 | DatabaseReference firereflog;
40 | private FloatingActionButton addComp;
41 |
42 |
43 | @Nullable
44 | @Override
45 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
46 | View view = inflater.inflate(R.layout.admin_logs_fragment,container,false);
47 | logs_recycler = (RecyclerView)view.findViewById(R.id.admin_logs_recycler);
48 | addComp = (FloatingActionButton)getActivity().findViewById(R.id.add_components);
49 | setHasOptionsMenu(true);
50 | firereflog = FirebaseDatabase.getInstance().getReference("Logs");
51 | if(firereflog!=null){
52 | firereflog.addValueEventListener(new ValueEventListener(){
53 | @Override
54 | public void onDataChange(@NonNull DataSnapshot dataSnapshot){
55 | if(dataSnapshot.exists()){
56 | logList = new ArrayList<>();
57 | for(DataSnapshot ds : dataSnapshot.getChildren()){
58 | logList.add(ds.getValue(LogsModel.class));
59 | }
60 | Admin_Logs_Adapter admin_logs_adapter = new Admin_Logs_Adapter(logList);
61 | logs_recycler.setAdapter(admin_logs_adapter);
62 | logs_recycler.addOnScrollListener(new RecyclerView.OnScrollListener() {
63 | @Override
64 | public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
65 | if (dy > 0)
66 | addComp.hide();
67 | else if (dy < 0)
68 | addComp.show();
69 | }
70 | });
71 | }
72 | }
73 |
74 | @Override
75 | public void onCancelled(@NonNull DatabaseError databaseError){
76 | Toast.makeText(getContext(),databaseError.getMessage(),Toast.LENGTH_SHORT).show();
77 |
78 | }
79 |
80 | });
81 | addComp.show(new FloatingActionButton.OnVisibilityChangedListener() {
82 | @Override
83 | public void onHidden(FloatingActionButton fab) {
84 | addComp.show();
85 | }
86 | });
87 | }
88 |
89 | return view;
90 |
91 | }
92 |
93 |
94 | @Override
95 | public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
96 | inflater.inflate(R.menu.logout_menu,menu);
97 | MenuItem logoutBut = menu.findItem(R.id.action_logout);
98 | super.onCreateOptionsMenu(menu, inflater);
99 | }
100 | @Override
101 | public boolean onOptionsItemSelected(MenuItem item) {
102 | switch ((item.getItemId())){
103 | case R.id.action_logout:
104 | Toast.makeText(getContext(),"signout",Toast.LENGTH_SHORT).show();
105 | return true;
106 | default:
107 | return super.onOptionsItemSelected(item);
108 | }
109 |
110 |
111 | }
112 | }
113 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
10 |
12 |
14 |
16 |
18 |
20 |
22 |
24 |
26 |
28 |
30 |
32 |
34 |
36 |
38 |
40 |
42 |
44 |
46 |
48 |
50 |
52 |
54 |
56 |
58 |
60 |
62 |
64 |
66 |
68 |
70 |
72 |
74 |
75 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/admin_logs_recycler_card.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
21 |
22 |
27 |
28 |
42 |
43 |
58 |
59 |
71 |
72 |
83 |
84 |
93 |
94 |
109 |
110 |
111 |
112 |
113 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/admin_request_card.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
16 |
19 |
20 |
32 |
42 |
52 |
62 |
73 |
87 |
99 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/user_search_recycler_card.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
19 |
22 |
33 |
42 |
50 |
60 |
69 |
80 |
88 |
100 |
109 |
110 |
111 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/inventory/UserClass/UserSearchFragment.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory.UserClass;
2 |
3 | import android.app.SearchManager;
4 | import android.content.Context;
5 | import android.database.sqlite.SQLiteDatabase;
6 | import android.os.Bundle;
7 | import androidx.annotation.NonNull;
8 | import androidx.annotation.Nullable;
9 | import androidx.fragment.app.Fragment;
10 | import androidx.recyclerview.widget.LinearLayoutManager;
11 | import androidx.recyclerview.widget.RecyclerView;
12 | import android.util.Log;
13 | import android.view.LayoutInflater;
14 | import android.view.Menu;
15 | import android.view.MenuInflater;
16 | import android.view.MenuItem;
17 | import android.view.View;
18 | import android.view.ViewGroup;
19 | import android.widget.SearchView;
20 | import android.widget.Toast;
21 |
22 | import com.example.inventory.Adapter.Admin_Home_Adapter;
23 | import com.example.inventory.Adapter.User_Search_Adapter;
24 | import com.example.inventory.Models.ComponentModel;
25 | import com.example.inventory.R;
26 | import com.google.firebase.database.DataSnapshot;
27 | import com.google.firebase.database.DatabaseError;
28 | import com.google.firebase.database.DatabaseReference;
29 | import com.google.firebase.database.FirebaseDatabase;
30 | import com.google.firebase.database.ValueEventListener;
31 |
32 | import java.util.ArrayList;
33 |
34 | public class UserSearchFragment extends Fragment {
35 | private SearchView searchView = null;
36 | private SearchView.OnQueryTextListener queryTextListener;
37 | RecyclerView search_recycler;
38 | DatabaseReference firerefComp;
39 | ArrayList componentList;
40 |
41 |
42 | @Nullable
43 | @Override
44 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
45 | View view = inflater.inflate(R.layout.user_search_fragment,container,false);
46 | search_recycler = (RecyclerView)view.findViewById(R.id.user_search_recycler);
47 | search_recycler.setLayoutManager(new LinearLayoutManager(getContext()));
48 | // FirebaseDatabase.getInstance().setPersistenceEnabled(true);
49 | firerefComp = FirebaseDatabase.getInstance().getReference("Components").child("Admin");
50 | if(firerefComp!=null){
51 | firerefComp.addValueEventListener(new ValueEventListener() {
52 | @Override
53 | public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
54 | if(dataSnapshot.exists()){
55 | componentList = new ArrayList<>();
56 | for(DataSnapshot ds: dataSnapshot.getChildren()){
57 | componentList.add(ds.getValue(ComponentModel.class));
58 | }
59 | User_Search_Adapter user_search_adapter = new User_Search_Adapter(componentList);
60 | search_recycler.setAdapter(user_search_adapter);
61 | }
62 | }
63 | @Override
64 | public void onCancelled(@NonNull DatabaseError databaseError) {
65 | Toast.makeText(getContext(),databaseError.getMessage(),Toast.LENGTH_SHORT).show();
66 | }
67 | });
68 | }
69 | return view;
70 | }
71 |
72 | @Override
73 | public void onCreate(@Nullable Bundle savedInstanceState) {
74 | super.onCreate(savedInstanceState);
75 | setHasOptionsMenu(true);
76 | }
77 | @Override
78 | public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
79 | inflater.inflate(R.menu.components_search, menu);
80 | MenuItem searchItem = menu.findItem(R.id.action_search);
81 | SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
82 |
83 | if (searchItem != null) {
84 | searchView = (SearchView) searchItem.getActionView();
85 | }
86 | if (searchView != null) {
87 | searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
88 |
89 | queryTextListener = new SearchView.OnQueryTextListener() {
90 | @Override
91 | public boolean onQueryTextChange(String newText) {
92 | searhComponets(newText);
93 | Log.i("onQueryTextChange", newText);
94 |
95 | return false;
96 | }
97 | @Override
98 | public boolean onQueryTextSubmit(String query) {
99 | searhComponets(query);
100 | Log.i("onQueryTextSubmit", query);
101 |
102 | return false;
103 | }
104 | };
105 | searchView.setOnQueryTextListener(queryTextListener);
106 | }
107 | super.onCreateOptionsMenu(menu, inflater);
108 | }
109 |
110 | private void searhComponets (String keyword){
111 | ArrayList searchlist = new ArrayList<>();
112 | if (componentList != null){
113 | for (ComponentModel object : componentList){
114 | if (object.getComponent().toLowerCase().contains(keyword.toLowerCase())) {
115 | searchlist.add(object);
116 | }
117 | }
118 | }
119 | User_Search_Adapter search_adapter = new User_Search_Adapter(searchlist);
120 | search_recycler.setAdapter(search_adapter);
121 |
122 |
123 |
124 | }
125 |
126 | @Override
127 | public boolean onOptionsItemSelected(MenuItem item) {
128 | switch (item.getItemId()) {
129 | case R.id.action_search:
130 | return false;
131 | default:
132 | break;
133 | }
134 | searchView.setOnQueryTextListener(queryTextListener);
135 | return super.onOptionsItemSelected(item);
136 | }
137 | }
138 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/inventory/AdminClass/AdminRequestsFragment.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory.AdminClass;
2 |
3 | import android.os.Bundle;
4 | import androidx.annotation.NonNull;
5 | import androidx.annotation.Nullable;
6 | import androidx.fragment.app.Fragment;
7 | import androidx.recyclerview.widget.LinearLayoutManager;
8 | import androidx.recyclerview.widget.RecyclerView;
9 |
10 | import android.view.LayoutInflater;
11 | import android.view.View;
12 | import android.view.ViewGroup;
13 | import android.widget.Toast;
14 |
15 | import com.example.inventory.Adapter.Admin_Home_Adapter;
16 | import com.example.inventory.Adapter.Admin_Requests_Adapter;
17 | import com.example.inventory.Models.ComponentModel;
18 | import com.example.inventory.Models.FinalRequestModel;
19 | import com.example.inventory.Models.RequestModel;
20 | import com.example.inventory.R;
21 | import com.google.android.material.floatingactionbutton.FloatingActionButton;
22 | import com.google.firebase.database.DataSnapshot;
23 | import com.google.firebase.database.DatabaseError;
24 | import com.google.firebase.database.DatabaseReference;
25 | import com.google.firebase.database.FirebaseDatabase;
26 | import com.google.firebase.database.ValueEventListener;
27 |
28 | import java.util.ArrayList;
29 |
30 | public class AdminRequestsFragment extends Fragment {
31 |
32 | RecyclerView request_recycler;
33 | DatabaseReference compref,requestref;
34 | ArrayListcomponentlist;
35 | ArrayListrequestlist;
36 | ArrayListfinalRequestlist;
37 | private FloatingActionButton addComp;
38 |
39 | boolean one,two;
40 |
41 |
42 | @Nullable
43 | @Override
44 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
45 | View view = inflater.inflate(R.layout.admin_requests_fragment,container,false);
46 | request_recycler = (RecyclerView)view.findViewById(R.id.admin_request_recycler);
47 | request_recycler.setLayoutManager(new LinearLayoutManager(getContext()));
48 | addComp = (FloatingActionButton)getActivity().findViewById(R.id.add_components);
49 | compref = FirebaseDatabase.getInstance().getReference("Components").child("Admin");
50 | if(compref!=null){
51 | compref.addValueEventListener(new ValueEventListener() {
52 | @Override
53 | public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
54 | if(dataSnapshot.exists()){
55 | componentlist = new ArrayList<>();
56 | for(DataSnapshot ds : dataSnapshot.getChildren()){
57 | componentlist.add(ds.getValue(ComponentModel.class)); } } }
58 | @Override
59 | public void onCancelled(@NonNull DatabaseError databaseError) {
60 | Toast.makeText(getContext(),databaseError.getMessage(),Toast.LENGTH_SHORT).show();
61 | }});
62 | }
63 | requestref = FirebaseDatabase.getInstance().getReference("Requests");
64 | if(requestref!=null){
65 | requestref.addValueEventListener(new ValueEventListener() {
66 | @Override
67 | public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
68 | if(dataSnapshot.exists()){
69 | requestlist = new ArrayList<>();
70 | for(DataSnapshot ds : dataSnapshot.getChildren()){
71 | requestlist.add(ds.getValue(RequestModel.class));
72 | }
73 | finalRequestlist =new ArrayList<>();
74 | if(componentlist!=null && requestlist!=null){
75 | for(RequestModel request : requestlist){
76 | if(componentlist!=null){
77 | for(ComponentModel component : componentlist){
78 | if(request.getComponent()!=null && component.getComponent()!= null){
79 | if(request.getComponent().equals(component.getComponent())) {
80 | finalRequestlist.add(new FinalRequestModel(
81 | request.getComponent(), request.getRequestcount(),
82 | request.getUemail(), request.getUname(), request.getDatetime(),
83 | component.getCount(),request.getRequesttype()));
84 | }}}}}}
85 | Admin_Requests_Adapter requests_adapter = new Admin_Requests_Adapter(finalRequestlist,getContext());
86 | request_recycler.setAdapter(requests_adapter);
87 | request_recycler.addOnScrollListener(new RecyclerView.OnScrollListener() {
88 | @Override
89 | public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
90 | if (dy > 0)
91 | addComp.hide();
92 | else if (dy < 0)
93 | addComp.show();
94 | }
95 | });
96 |
97 | }
98 | }
99 | @Override
100 | public void onCancelled(@NonNull DatabaseError databaseError) {
101 | Toast.makeText(getContext(),databaseError.getMessage(),Toast.LENGTH_SHORT).show();
102 | }
103 | });
104 | addComp.show(new FloatingActionButton.OnVisibilityChangedListener() {
105 | @Override
106 | public void onHidden(FloatingActionButton fab) {
107 | addComp.show();
108 | }
109 | });
110 | }
111 | return view;
112 |
113 | }
114 | }
115 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/user_component_request_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
21 |
29 |
40 |
51 |
52 |
64 |
74 |
75 |
87 |
88 |
99 |
110 |
121 |
122 |
134 |
135 |
136 |
137 |
138 |
139 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/inventory/AdminClass/AddComponentBottomSheet.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory.AdminClass;
2 |
3 | import android.database.sqlite.SQLiteDatabase;
4 | import android.os.Bundle;
5 | import androidx.annotation.NonNull;
6 | import androidx.annotation.Nullable;
7 | import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
8 | import android.text.TextUtils;
9 | import android.view.LayoutInflater;
10 | import android.view.View;
11 | import android.view.ViewGroup;
12 | import android.widget.Button;
13 | import android.widget.EditText;
14 | import android.widget.Spinner;
15 | import android.widget.Toast;
16 |
17 | import com.example.inventory.Models.ComponentModel;
18 | import com.example.inventory.Models.LogsModel;
19 | import com.example.inventory.R;
20 | import com.google.firebase.database.DataSnapshot;
21 | import com.google.firebase.database.DatabaseError;
22 | import com.google.firebase.database.DatabaseReference;
23 | import com.google.firebase.database.FirebaseDatabase;
24 | import com.google.firebase.database.ValueEventListener;
25 |
26 | import java.text.SimpleDateFormat;
27 |
28 | public class AddComponentBottomSheet extends BottomSheetDialogFragment {
29 |
30 | private SQLiteDatabase mDatabase;
31 | private Button addComp;
32 | private Spinner category_spinner;
33 | private EditText components,count,admin_name;
34 |
35 | FirebaseDatabase firedata;
36 | DatabaseReference firerefComponets;
37 | DatabaseReference firerefLogs;
38 |
39 | @Nullable
40 | @Override
41 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
42 | View v =inflater.inflate(R.layout.add_component_bottom_fragment,container,false);
43 |
44 | components = (EditText)v.findViewById(R.id.add_components);
45 | count = (EditText) v.findViewById(R.id.count_edit);
46 | addComp = (Button)v.findViewById(R.id.submit_components);
47 |
48 | firedata = FirebaseDatabase.getInstance();
49 | firerefComponets =firedata.getReference("Components");
50 | firerefLogs = firedata.getReference("Logs");
51 |
52 | addComp.setOnClickListener(new View.OnClickListener() {
53 | @Override
54 | public void onClick(View v) {
55 | if(TextUtils.isEmpty(components.getText().toString())){
56 | components.setError("Enter Components");
57 | }
58 | else if (TextUtils.isEmpty(count.getText().toString())){
59 | count.setError("Enter Count");
60 | }
61 | else {
62 | long date = System.currentTimeMillis();
63 | SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy , h:mm:ss a");
64 | final String dateString = sdf.format(date);
65 | final ComponentModel newcomponent = new ComponentModel(components.getText().toString(),
66 | "Admin",Integer.parseInt(count.getText().toString()));
67 | final LogsModel newLog = new LogsModel("Admin",components.getText().toString(),
68 | dateString,Integer.parseInt(count.getText().toString()),0);
69 | firerefComponets.addValueEventListener(new ValueEventListener() {
70 | @Override
71 | public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
72 | firerefComponets.child(newcomponent.getAdder()).child(newcomponent.getComponent())
73 | .child("count").setValue(newcomponent.getCount());
74 | firerefComponets.child(newcomponent.getAdder()).child(newcomponent.getComponent())
75 | .child("component").setValue(newcomponent.getComponent());
76 | firerefComponets.child(newcomponent.getAdder()).child(newcomponent.getComponent())
77 | .child("adder").setValue(newcomponent.getAdder());
78 | }
79 | @Override
80 | public void onCancelled(@NonNull DatabaseError databaseError) {
81 | Toast.makeText(getContext(),databaseError.getMessage(),Toast.LENGTH_SHORT).show();
82 | }
83 | });
84 | firerefLogs.addValueEventListener(new ValueEventListener() {
85 | @Override
86 | public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
87 | firerefLogs.child(String.valueOf(dateString))
88 | .child("uname").setValue(newLog.getUname());
89 | firerefLogs.child(String.valueOf(dateString))
90 | .child("component").setValue(newLog.getComponent());
91 | firerefLogs.child(String.valueOf(dateString))
92 | .child("count").setValue(newLog.getCount());
93 | firerefLogs.child(String.valueOf(dateString))
94 | .child("logtype").setValue(newLog.getLogtype());
95 | firerefLogs.child(String.valueOf(dateString))
96 | .child("datetime").setValue(newLog.getDatetime());
97 | }
98 | @Override
99 | public void onCancelled(@NonNull DatabaseError databaseError) {
100 | Toast.makeText(getContext(),databaseError.getMessage(),Toast.LENGTH_SHORT).show();
101 | }
102 | });
103 | Toast.makeText(getContext(),"Data Inserted",Toast.LENGTH_LONG).show();
104 | dismiss();
105 | }
106 | }
107 | });
108 |
109 | return v;
110 |
111 | }
112 | }
113 |
--------------------------------------------------------------------------------
/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | ##############################################################################
4 | ##
5 | ## Gradle start up script for UN*X
6 | ##
7 | ##############################################################################
8 |
9 | # Attempt to set APP_HOME
10 | # Resolve links: $0 may be a link
11 | PRG="$0"
12 | # Need this for relative symlinks.
13 | while [ -h "$PRG" ] ; do
14 | ls=`ls -ld "$PRG"`
15 | link=`expr "$ls" : '.*-> \(.*\)$'`
16 | if expr "$link" : '/.*' > /dev/null; then
17 | PRG="$link"
18 | else
19 | PRG=`dirname "$PRG"`"/$link"
20 | fi
21 | done
22 | SAVED="`pwd`"
23 | cd "`dirname \"$PRG\"`/" >/dev/null
24 | APP_HOME="`pwd -P`"
25 | cd "$SAVED" >/dev/null
26 |
27 | APP_NAME="Gradle"
28 | APP_BASE_NAME=`basename "$0"`
29 |
30 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
31 | DEFAULT_JVM_OPTS=""
32 |
33 | # Use the maximum available, or set MAX_FD != -1 to use that value.
34 | MAX_FD="maximum"
35 |
36 | warn () {
37 | echo "$*"
38 | }
39 |
40 | die () {
41 | echo
42 | echo "$*"
43 | echo
44 | exit 1
45 | }
46 |
47 | # OS specific support (must be 'true' or 'false').
48 | cygwin=false
49 | msys=false
50 | darwin=false
51 | nonstop=false
52 | case "`uname`" in
53 | CYGWIN* )
54 | cygwin=true
55 | ;;
56 | Darwin* )
57 | darwin=true
58 | ;;
59 | MINGW* )
60 | msys=true
61 | ;;
62 | NONSTOP* )
63 | nonstop=true
64 | ;;
65 | esac
66 |
67 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
68 |
69 | # Determine the Java command to use to start the JVM.
70 | if [ -n "$JAVA_HOME" ] ; then
71 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
72 | # IBM's JDK on AIX uses strange locations for the executables
73 | JAVACMD="$JAVA_HOME/jre/sh/java"
74 | else
75 | JAVACMD="$JAVA_HOME/bin/java"
76 | fi
77 | if [ ! -x "$JAVACMD" ] ; then
78 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
79 |
80 | Please set the JAVA_HOME variable in your environment to match the
81 | location of your Java installation."
82 | fi
83 | else
84 | JAVACMD="java"
85 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
86 |
87 | Please set the JAVA_HOME variable in your environment to match the
88 | location of your Java installation."
89 | fi
90 |
91 | # Increase the maximum file descriptors if we can.
92 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
93 | MAX_FD_LIMIT=`ulimit -H -n`
94 | if [ $? -eq 0 ] ; then
95 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
96 | MAX_FD="$MAX_FD_LIMIT"
97 | fi
98 | ulimit -n $MAX_FD
99 | if [ $? -ne 0 ] ; then
100 | warn "Could not set maximum file descriptor limit: $MAX_FD"
101 | fi
102 | else
103 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
104 | fi
105 | fi
106 |
107 | # For Darwin, add options to specify how the application appears in the dock
108 | if $darwin; then
109 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
110 | fi
111 |
112 | # For Cygwin, switch paths to Windows format before running java
113 | if $cygwin ; then
114 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
115 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
116 | JAVACMD=`cygpath --unix "$JAVACMD"`
117 |
118 | # We build the pattern for arguments to be converted via cygpath
119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
120 | SEP=""
121 | for dir in $ROOTDIRSRAW ; do
122 | ROOTDIRS="$ROOTDIRS$SEP$dir"
123 | SEP="|"
124 | done
125 | OURCYGPATTERN="(^($ROOTDIRS))"
126 | # Add a user-defined pattern to the cygpath arguments
127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
129 | fi
130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
131 | i=0
132 | for arg in "$@" ; do
133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
135 |
136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
138 | else
139 | eval `echo args$i`="\"$arg\""
140 | fi
141 | i=$((i+1))
142 | done
143 | case $i in
144 | (0) set -- ;;
145 | (1) set -- "$args0" ;;
146 | (2) set -- "$args0" "$args1" ;;
147 | (3) set -- "$args0" "$args1" "$args2" ;;
148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
154 | esac
155 | fi
156 |
157 | # Escape application args
158 | save () {
159 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
160 | echo " "
161 | }
162 | APP_ARGS=$(save "$@")
163 |
164 | # Collect all arguments for the java command, following the shell quoting and substitution rules
165 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
166 |
167 | # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
168 | if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
169 | cd "$(dirname "$0")"
170 | fi
171 |
172 | exec "$JAVACMD" "$@"
173 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/admin_component_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
22 |
30 |
41 |
52 |
53 |
54 |
65 |
76 |
77 |
88 |
99 |
111 |
112 |
129 |
130 |
143 |
144 |
145 |
146 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/inventory/Adapter/Admin_Home_Adapter.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory.Adapter;
2 |
3 | import androidx.annotation.NonNull;
4 | import androidx.recyclerview.widget.RecyclerView;
5 |
6 | import android.app.Dialog;
7 | import android.content.Context;
8 | import android.graphics.Color;
9 | import android.graphics.drawable.ColorDrawable;
10 | import android.inputmethodservice.KeyboardView;
11 | import android.text.TextUtils;
12 | import android.view.LayoutInflater;
13 | import android.view.View;
14 | import android.view.ViewGroup;
15 | import android.widget.Button;
16 | import android.widget.EditText;
17 | import android.widget.TextView;
18 | import android.widget.Toast;
19 |
20 | import androidx.cardview.widget.CardView;
21 |
22 |
23 | import com.example.inventory.Models.ComponentModel;
24 | import com.example.inventory.R;
25 | import com.google.firebase.auth.FirebaseAuth;
26 | import com.google.firebase.database.DatabaseReference;
27 | import com.google.firebase.database.FirebaseDatabase;
28 | import com.google.firebase.database.core.view.Change;
29 |
30 | import org.w3c.dom.Text;
31 |
32 | import java.util.ArrayList;
33 |
34 | public class Admin_Home_Adapter extends RecyclerView.Adapter{
35 |
36 | ArrayList componentModel;
37 | private Context context;
38 | Button button;
39 |
40 | Dialog homeDialog;
41 | public Admin_Home_Adapter(ArrayList componentModel, Context context) {
42 | this.componentModel = componentModel;
43 | this.context = context;
44 | }
45 |
46 | @NonNull
47 | @Override
48 | public Admin_Home_ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, final int i) {
49 | View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.admin_home_recycler_card,viewGroup,false);
50 | final Admin_Home_ViewHolder adminViewHold = new Admin_Home_ViewHolder(view);
51 |
52 | homeDialog = new Dialog(context);
53 | homeDialog.setContentView(R.layout.admin_component_dialog);
54 |
55 | adminViewHold.cardView.setOnClickListener(new View.OnClickListener() {
56 | @Override
57 | public void onClick(View v) {
58 | TextView admin_dialog_component = (TextView)homeDialog.findViewById(R.id.admin_dialog_component);
59 | TextView admin_dialog_quantity = (TextView)homeDialog.findViewById(R.id.admin_dialog_quantity);
60 | TextView admin_dialog_admin = (TextView)homeDialog.findViewById(R.id.admin_dialog_admin);
61 | EditText admin_dialog_count = (EditText) homeDialog.findViewById(R.id.admin_count);
62 |
63 | admin_dialog_component.setText(componentModel.get(adminViewHold.getLayoutPosition()).getComponent());
64 | admin_dialog_quantity.setText(String.valueOf(componentModel.get(adminViewHold.getLayoutPosition()).getCount()));
65 | admin_dialog_admin.setText(componentModel.get(adminViewHold.getLayoutPosition()).getAdder());
66 | admin_dialog_count.setHint(String.valueOf(componentModel.get(adminViewHold.getLayoutPosition()).getCount()));
67 |
68 | homeDialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
69 | homeDialog.show();
70 | }
71 | });
72 |
73 | button = homeDialog.findViewById(R.id.admin_dialog_change);
74 | button.setOnClickListener(new View.OnClickListener() {
75 | @Override
76 | public void onClick(View v) {
77 | EditText admin_dialog_count = (EditText) homeDialog.findViewById(R.id.admin_count);
78 | TextView admin_dialog_component = (TextView)homeDialog.findViewById(R.id.admin_dialog_component);
79 | if(admin_dialog_count.getText().toString() == null){
80 | admin_dialog_count.setError("Enter a value");
81 | }
82 | if(TextUtils.isEmpty(admin_dialog_count.getText().toString())){
83 | admin_dialog_count.setError("Enter new count");
84 | }else {
85 | String item = admin_dialog_component.getText().toString();
86 | String countString = admin_dialog_count.getText().toString();
87 |
88 | if(countString.equals("0")){
89 | DatabaseReference database = FirebaseDatabase.getInstance().getReference("Components").child("Admin");
90 | database.child(item).child("adder").setValue(null);
91 | database.child(item).child("component").setValue(null);
92 | database.child(item).child("count").setValue(null);
93 | }
94 | else {
95 | int count = Integer.parseInt(countString);
96 | FirebaseDatabase database = FirebaseDatabase.getInstance();
97 | DatabaseReference databaseReference = database.getReference("Components");
98 | databaseReference.child("Admin").child(item).child("count").setValue(count);
99 |
100 | }
101 |
102 | //int ActualCount = Integer.parseInt(count);
103 | //String test = admin_dialog_component.getText().toString();
104 | Toast toast = new Toast(context).makeText(context,"Data Updated" +
105 | "",Toast.LENGTH_SHORT);
106 | //toast.show();
107 | homeDialog.dismiss();
108 |
109 | }
110 |
111 |
112 | }
113 | });
114 |
115 |
116 | return adminViewHold;
117 | }
118 |
119 | @Override
120 | public void onBindViewHolder(@NonNull Admin_Home_ViewHolder admin_home_viewHolder, int i) {
121 | admin_home_viewHolder.Component.setText(componentModel.get(i).getComponent());
122 | admin_home_viewHolder.Count.setText(String.valueOf(componentModel.get(i).getCount()));
123 |
124 | }
125 |
126 |
127 | @Override
128 | public int getItemCount() {
129 | return componentModel.size();
130 | }
131 |
132 | class Admin_Home_ViewHolder extends RecyclerView.ViewHolder{
133 | TextView Component,Count;
134 | public CardView cardView;
135 |
136 |
137 | public Admin_Home_ViewHolder(@NonNull View itemView) {
138 | super(itemView);
139 | Component = itemView.findViewById(R.id.admin_home_card_component);
140 | Count = itemView.findViewById(R.id.admin_home_card_count);
141 | cardView = itemView.findViewById(R.id.admin_home_card);
142 | }
143 | }
144 |
145 | }
146 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/inventory/Adapter/User_Home_Adapter.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory.Adapter;
2 |
3 | import android.app.Dialog;
4 | import android.content.Context;
5 | import android.view.LayoutInflater;
6 | import android.view.View;
7 | import android.view.ViewGroup;
8 | import android.widget.TextView;
9 | import android.widget.Toast;
10 |
11 | import androidx.annotation.NonNull;
12 | import androidx.cardview.widget.CardView;
13 | import androidx.recyclerview.widget.RecyclerView;
14 |
15 | import com.example.inventory.Models.ComponentModel;
16 | import com.example.inventory.R;
17 | import com.google.android.gms.auth.api.signin.GoogleSignIn;
18 | import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
19 | import com.google.android.gms.auth.api.signin.GoogleSignInClient;
20 | import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
21 | import com.google.firebase.components.Component;
22 | import com.google.firebase.database.DataSnapshot;
23 | import com.google.firebase.database.DatabaseError;
24 | import com.google.firebase.database.DatabaseReference;
25 | import com.google.firebase.database.FirebaseDatabase;
26 | import com.google.firebase.database.ValueEventListener;
27 |
28 | import java.text.SimpleDateFormat;
29 | import java.util.ArrayList;
30 |
31 | public class User_Home_Adapter extends RecyclerView.Adapter {
32 |
33 | ArrayListcomponentModel;
34 | GoogleSignInClient mGoogleSignInClient;
35 | Dialog dialog;
36 |
37 | public User_Home_Adapter(ArrayList componentModel) {
38 | this.componentModel = componentModel;
39 | }
40 |
41 | @NonNull
42 | @Override
43 | public User_Home_ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
44 | View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.admin_home_recycler_card,parent,false);
45 | final User_Home_ViewHolder userViewHolder = new User_Home_ViewHolder(view);
46 |
47 | dialog = new Dialog(userViewHolder.context);
48 | dialog.setContentView(R.layout.user_return_dialog);
49 |
50 |
51 | userViewHolder.Card.setOnClickListener(new View.OnClickListener() {
52 | @Override
53 | public void onClick(View v) {
54 | GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
55 | .requestEmail()
56 | .build();
57 | mGoogleSignInClient = GoogleSignIn.getClient(userViewHolder.context, gso);
58 | final GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(userViewHolder.context);
59 |
60 | TextView user_dialog_component = (TextView)dialog.findViewById(R.id.return_dialog_component);
61 | TextView user_dialog_count = (TextView)dialog.findViewById(R.id.return_dialog_quantity);
62 |
63 | user_dialog_component.setText(componentModel.get(userViewHolder.getLayoutPosition()).getComponent());
64 | user_dialog_count.setText(String.valueOf(componentModel.get(userViewHolder.getLayoutPosition()).getCount()));
65 |
66 | dialog.setTitle("Request");
67 | dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
68 | dialog.show();
69 | dialog.findViewById(R.id.return_dialog_submit).setOnClickListener(new View.OnClickListener() {
70 | @Override
71 | public void onClick(View v) {
72 | long date = System.currentTimeMillis();
73 | SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy , h:mm:ss a");
74 | final String dateString = sdf.format(date);
75 | DatabaseReference myref;
76 | myref = FirebaseDatabase.getInstance().getReference("Components").child("Admin")
77 | .child(userViewHolder.Component.getText().toString()).child("count");
78 | myref.addValueEventListener(new ValueEventListener() {
79 | @Override
80 | public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
81 | Integer availcount = dataSnapshot.getValue(Integer.class);
82 | }
83 | @Override
84 | public void onCancelled(@NonNull DatabaseError databaseError) {
85 |
86 | }
87 | });
88 | DatabaseReference submitref;
89 | submitref = FirebaseDatabase.getInstance().getReference("Requests");
90 | submitref.child(dateString).child("component").setValue(userViewHolder.Component.getText().toString());
91 | submitref.child(dateString).child("datetime").setValue(dateString);
92 | submitref.child(dateString).child("requestcount").setValue(userViewHolder.Count.getText().toString());
93 | submitref.child(dateString).child("requesttype").setValue("return");
94 | submitref.child(dateString).child("uname").setValue(account.getDisplayName());
95 | submitref.child(dateString).child("uemail").setValue(account.getEmail());
96 | dialog.dismiss();
97 | Toast.makeText(userViewHolder.context,"Request Sent",Toast.LENGTH_SHORT).show();
98 | }
99 | });
100 |
101 |
102 |
103 | }
104 | });
105 |
106 |
107 | return userViewHolder;
108 | }
109 |
110 | @Override
111 | public void onBindViewHolder(@NonNull final User_Home_ViewHolder userViewHolder, int position) {
112 |
113 | userViewHolder.Component.setText(componentModel.get(position).getComponent());
114 | userViewHolder.Count.setText(String.valueOf(componentModel.get(position).getCount()));
115 |
116 | }
117 |
118 | @Override
119 | public int getItemCount() {
120 | return componentModel.size();
121 | }
122 |
123 | public class User_Home_ViewHolder extends RecyclerView.ViewHolder {
124 | TextView Component,Count;
125 | CardView Card;
126 | Context context;
127 |
128 | public User_Home_ViewHolder(@NonNull View itemView) {
129 | super(itemView);
130 | Component = itemView.findViewById(R.id.admin_home_card_component);
131 | Count = itemView.findViewById(R.id.admin_home_card_count);
132 | Card = itemView.findViewById(R.id.admin_home_card);
133 | context = itemView.getContext();
134 |
135 | }
136 | }
137 | }
138 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/inventory/AdminClass/AdminHomeFragment.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory.AdminClass;
2 |
3 | import android.app.SearchManager;
4 | import android.content.Context;
5 | import android.os.Bundle;
6 | import androidx.annotation.NonNull;
7 | import androidx.annotation.Nullable;
8 | import androidx.fragment.app.Fragment;
9 | import androidx.recyclerview.widget.LinearLayoutManager;
10 | import androidx.recyclerview.widget.RecyclerView;
11 | import android.util.Log;
12 | import android.view.LayoutInflater;
13 | import android.view.Menu;
14 | import android.view.MenuInflater;
15 | import android.view.MenuItem;
16 | import android.view.View;
17 | import android.view.ViewGroup;
18 | import android.widget.SearchView;
19 | import android.widget.Toast;
20 |
21 | import com.example.inventory.Adapter.Admin_Home_Adapter;
22 | import com.example.inventory.Models.ComponentModel;
23 | import com.example.inventory.R;
24 | import com.google.android.material.floatingactionbutton.FloatingActionButton;
25 | import com.google.firebase.database.DataSnapshot;
26 | import com.google.firebase.database.DatabaseError;
27 | import com.google.firebase.database.DatabaseReference;
28 | import com.google.firebase.database.FirebaseDatabase;
29 | import com.google.firebase.database.ValueEventListener;
30 |
31 | import java.util.ArrayList;
32 |
33 | public class AdminHomeFragment extends Fragment {
34 | private SearchView searchView = null;
35 | private SearchView.OnQueryTextListener queryTextListener;
36 | RecyclerView home_recycler;
37 | DatabaseReference firerefComp;
38 | ArrayList componentList;
39 | private FloatingActionButton addComp;
40 |
41 |
42 |
43 | @Nullable
44 | @Override
45 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
46 | View view = inflater.inflate(R.layout.admin_home_fragment,container,false);
47 | home_recycler = (RecyclerView)view.findViewById(R.id.admin_home_recycler);
48 | home_recycler.setLayoutManager(new LinearLayoutManager(getContext()));
49 |
50 | home_recycler.addOnScrollListener(new RecyclerView.OnScrollListener(){
51 | @Override
52 | public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
53 | super.onScrollStateChanged(recyclerView, newState);
54 | }
55 | @Override
56 | public void onScrolled(RecyclerView recyclerView, int dx, int dy){
57 | if (dy > 0)
58 | addComp.hide();
59 | else if (dy < 0)
60 | addComp.show();
61 | }
62 | });
63 |
64 | addComp = (FloatingActionButton)getActivity().findViewById(R.id.add_components);
65 | addComp.show();
66 | firerefComp = FirebaseDatabase.getInstance().getReference("Components").child("Admin");
67 | if(firerefComp!=null){
68 | firerefComp.addValueEventListener(new ValueEventListener() {
69 | @Override
70 | public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
71 | if(dataSnapshot.exists()){
72 | componentList = new ArrayList<>();
73 | for(DataSnapshot ds : dataSnapshot.getChildren()){
74 | componentList.add(ds.getValue(ComponentModel.class));
75 | }
76 | Admin_Home_Adapter admin_home_adapter = new Admin_Home_Adapter(componentList,getContext());
77 | home_recycler.setAdapter(admin_home_adapter);
78 | }
79 | }
80 | @Override
81 | public void onCancelled(@NonNull DatabaseError databaseError) {
82 | Toast.makeText(getContext(),databaseError.getMessage(),Toast.LENGTH_SHORT).show();
83 | }
84 | });
85 | addComp.show(new FloatingActionButton.OnVisibilityChangedListener() {
86 | @Override
87 | public void onHidden(FloatingActionButton fab) {
88 | addComp.show();
89 | }
90 | });
91 | }
92 | return view;
93 | }
94 |
95 | @Override
96 | public void onCreate(@Nullable Bundle savedInstanceState) {
97 | super.onCreate(savedInstanceState);
98 | setHasOptionsMenu(true);
99 | }
100 | @Override
101 | public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
102 | inflater.inflate(R.menu.components_search, menu);
103 | MenuItem searchItem = menu.findItem(R.id.action_search);
104 | SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
105 |
106 | if (searchItem != null) {
107 | searchView = (SearchView) searchItem.getActionView();
108 | }
109 | if (searchView != null) {
110 | searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
111 |
112 | queryTextListener = new SearchView.OnQueryTextListener() {
113 | @Override
114 | public boolean onQueryTextChange(String newText) {
115 | searhComponets(newText);
116 | Log.i("onQueryTextChange", newText);
117 |
118 | return false;
119 | }
120 | @Override
121 | public boolean onQueryTextSubmit(String query) {
122 | searhComponets(query);
123 | Log.i("onQueryTextSubmit", query);
124 |
125 | return false;
126 | }
127 | };
128 | searchView.setOnQueryTextListener(queryTextListener);
129 | }
130 | super.onCreateOptionsMenu(menu, inflater);
131 | }
132 |
133 | private void searhComponets (String keyword){
134 | ArrayList searchlist = new ArrayList<>();
135 | if(componentList != null){
136 | for (ComponentModel object : componentList){
137 | if (object.getComponent().toLowerCase().contains(keyword.toLowerCase())) {
138 | searchlist.add(object);
139 | }
140 | }
141 | }
142 | Admin_Home_Adapter home_adapter = new Admin_Home_Adapter(searchlist,getContext());
143 | home_recycler.setAdapter(home_adapter);
144 |
145 | }
146 |
147 | @Override
148 | public boolean onOptionsItemSelected(MenuItem item) {
149 | switch (item.getItemId()) {
150 | case R.id.action_search:
151 | return false;
152 | default:
153 | break;
154 | }
155 | searchView.setOnQueryTextListener(queryTextListener);
156 | return super.onOptionsItemSelected(item);
157 | }
158 |
159 |
160 | }
161 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/inventory/Adapter/User_Search_Adapter.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory.Adapter;
2 |
3 | import android.app.Dialog;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.graphics.Color;
7 | import android.graphics.drawable.ColorDrawable;
8 | import androidx.annotation.NonNull;
9 | import androidx.cardview.widget.CardView;
10 | import androidx.fragment.app.FragmentManager;
11 | import androidx.recyclerview.widget.RecyclerView;
12 | import android.view.LayoutInflater;
13 | import android.view.View;
14 | import android.view.ViewGroup;
15 | import android.widget.Button;
16 | import android.widget.TextView;
17 | import android.widget.Toast;
18 |
19 | import com.example.inventory.Models.ComponentModel;
20 | import com.example.inventory.R;
21 | import com.google.android.gms.auth.api.signin.GoogleSignIn;
22 | import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
23 | import com.google.android.gms.auth.api.signin.GoogleSignInClient;
24 | import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
25 | import com.google.firebase.database.DatabaseReference;
26 | import com.google.firebase.database.FirebaseDatabase;
27 |
28 | import java.text.SimpleDateFormat;
29 | import java.util.ArrayList;
30 |
31 | public class User_Search_Adapter extends RecyclerView.Adapter {
32 | ArrayList componentModel;
33 | GoogleSignInClient mGoogleSignInClient;
34 |
35 |
36 |
37 | public User_Search_Adapter(ArrayList componentModel){
38 | this.componentModel = componentModel;
39 | }
40 |
41 | @NonNull
42 | @Override
43 | public User_Search_ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
44 | View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.admin_home_recycler_card,viewGroup,false);
45 | User_Search_ViewHolder adminViewHold = new User_Search_ViewHolder(view);
46 |
47 | return adminViewHold;
48 | }
49 |
50 | @Override
51 | public void onBindViewHolder(@NonNull final User_Search_ViewHolder user_search_viewHolder, final int i) {
52 | user_search_viewHolder.Component.setText(componentModel.get(i).getComponent());
53 | user_search_viewHolder.Count.setText(String.valueOf(componentModel.get(i).getCount()));
54 | user_search_viewHolder.Card.setOnClickListener(new View.OnClickListener() {
55 | @Override
56 | public void onClick(View v) {
57 |
58 | GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
59 | .requestEmail()
60 | .build();
61 | mGoogleSignInClient = GoogleSignIn.getClient(user_search_viewHolder.context, gso);
62 | final GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(user_search_viewHolder.context);
63 |
64 |
65 | final Dialog dialog = new Dialog(user_search_viewHolder.context);
66 | dialog.setContentView(R.layout.user_component_request_dialog);
67 | dialog.setTitle("Request");
68 | final TextView component = dialog.findViewById(R.id.user_request_dialog_component);
69 | component.setText(componentModel.get(i).getComponent());
70 | TextView quantity = dialog.findViewById(R.id.user_request_dialog_quantity);
71 | quantity.setText(String.valueOf(componentModel.get(i).getCount()));
72 | final TextView counter = dialog.findViewById(R.id.request_count);
73 | counter.setText(String.valueOf(componentModel.get(i).getCount()));
74 | Button increment = dialog.findViewById(R.id.increment_button);
75 | Button decrement = dialog.findViewById(R.id.decrement_button);
76 | increment.setOnClickListener(new View.OnClickListener() {
77 | @Override
78 | public void onClick(View v) {
79 | int count = Integer.parseInt(counter.getText().toString());
80 | if(count < componentModel.get(i).getCount()){
81 | count= count + 1;
82 | counter.setText(String.valueOf(count));
83 | }
84 | }
85 | });
86 | decrement.setOnClickListener(new View.OnClickListener() {
87 | @Override
88 | public void onClick(View v) {
89 | int count = Integer.parseInt(counter.getText().toString());
90 | if(count >1){
91 | count= count - 1;
92 | counter.setText(String.valueOf(count));
93 | }
94 | }
95 | });
96 | Button submitRequest = dialog.findViewById(R.id.user_request_dialog_submit);
97 | submitRequest.setOnClickListener(new View.OnClickListener() {
98 | @Override
99 | public void onClick(View v) {
100 | long date = System.currentTimeMillis();
101 | SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy , h:mm:ss a");
102 | final String dateString = sdf.format(date);
103 | DatabaseReference myref;
104 | myref = FirebaseDatabase.getInstance().getReference("Requests");
105 | myref.child(dateString).child("component").setValue(component.getText());
106 | myref.child(dateString).child("uemail").setValue(account.getEmail());
107 | myref.child(dateString).child("requestcount").setValue(counter.getText());
108 | myref.child(dateString).child("uname").setValue(account.getDisplayName());
109 | myref.child(dateString).child("datetime").setValue(dateString);
110 | myref.child(dateString).child("requesttype").setValue("request");
111 | dialog.dismiss();
112 | Toast.makeText(user_search_viewHolder.context,"Request Sent",Toast.LENGTH_SHORT).show();
113 | }
114 | });
115 | dialog.setCancelable(true);
116 | dialog.setCanceledOnTouchOutside(true);
117 | dialog.show();
118 | dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
119 | }
120 | });
121 | }
122 | @Override
123 | public int getItemCount() {
124 | return componentModel.size();
125 | }
126 | class User_Search_ViewHolder extends RecyclerView.ViewHolder{
127 | TextView Component,Count;
128 | CardView Card;
129 | Context context;
130 | public User_Search_ViewHolder(@NonNull View itemView) {
131 | super(itemView);
132 | Component = itemView.findViewById(R.id.admin_home_card_component);
133 | Count = itemView.findViewById(R.id.admin_home_card_count);
134 | Card = itemView.findViewById(R.id.admin_home_card);
135 | context = itemView.getContext();
136 | }
137 | }
138 |
139 |
140 | }
141 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/admin_requests_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
23 |
34 |
46 |
58 |
70 |
82 |
94 |
106 |
107 |
120 |
139 |
140 |
151 |
152 |
164 |
165 |
178 |
179 |
193 |
205 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/inventory/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory;
2 |
3 | import android.content.Intent;
4 |
5 |
6 | import androidx.annotation.NonNull;
7 | import androidx.viewpager.widget.ViewPager;
8 | import androidx.appcompat.app.AppCompatActivity;
9 | import android.os.Bundle;
10 | import android.text.Html;
11 | import android.util.Log;
12 | import android.view.Gravity;
13 | import android.view.View;
14 | import android.widget.Button;
15 | import android.widget.LinearLayout;
16 | import android.widget.TextView;
17 | import android.widget.Toast;
18 |
19 | import com.example.inventory.Adapter.Slider_Adapter;
20 | import com.example.inventory.AdminClass.Admin_Main;
21 | import com.example.inventory.Models.ComponentModel;
22 | import com.example.inventory.Models.LoginModel;
23 | import com.example.inventory.UserClass.User_Main;
24 | import com.google.android.gms.auth.api.signin.GoogleSignIn;
25 | import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
26 | import com.google.android.gms.auth.api.signin.GoogleSignInClient;
27 | import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
28 | import com.google.android.gms.common.SignInButton;
29 | import com.google.android.gms.common.api.ApiException;
30 | import com.google.android.gms.common.api.GoogleApiClient;
31 | import com.google.android.gms.tasks.Task;
32 | import com.google.firebase.auth.FirebaseAuth;
33 | import com.google.firebase.database.DataSnapshot;
34 | import com.google.firebase.database.DatabaseError;
35 | import com.google.firebase.database.DatabaseReference;
36 | import com.google.firebase.database.FirebaseDatabase;
37 | import com.google.firebase.database.ValueEventListener;
38 |
39 | import java.util.ArrayList;
40 |
41 | public class MainActivity extends AppCompatActivity {
42 |
43 | private ViewPager viewPager;
44 | private LinearLayout bottomlayout;
45 | private Slider_Adapter slider_adapter;
46 | private TextView[] mDots ;
47 | private Button nextButton,backButton;
48 | private int CurrentPage ;
49 | private TextView GbutText;
50 | private SignInButton GsignIn;
51 | private static final int RC_SIGN_IN = 2;
52 | FirebaseAuth mAuth;
53 | GoogleApiClient mGoogleApiClient;
54 | GoogleSignInClient mGoogleSignInClient;
55 | DatabaseReference refLogin;
56 | ArrayList loginlist;
57 |
58 | // @Override
59 | // protected void onResume() {
60 | // super.onResume();
61 | // GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
62 | // .requestEmail()
63 | // .build();
64 | // mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
65 | // GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
66 | // updateUI(account);
67 | // }
68 |
69 |
70 | @Override
71 | protected void onCreate(Bundle savedInstanceState) {
72 | super.onCreate(savedInstanceState);
73 | setContentView(R.layout.activity_main);
74 |
75 | viewPager = (ViewPager)findViewById(R.id.viewpager);
76 | bottomlayout = (LinearLayout) findViewById(R.id.bottomlayout);
77 | nextButton = (Button)findViewById(R.id.nextbutton);
78 | backButton = (Button) findViewById(R.id.backbutton);
79 | GsignIn = (SignInButton)findViewById(R.id.google_sign);
80 | GsignIn.setVisibility(View.INVISIBLE);
81 | TextView GbutText = (TextView) GsignIn.getChildAt(0);
82 | GbutText.setText("Sign In With GST ID");
83 |
84 | // FirebaseDatabase.getInstance().setPersistenceEnabled(true);
85 | // refLogin = FirebaseDatabase.getInstance().getReference("Login");
86 | // refLogin.keepSynced(true);
87 | // if(refLogin!=null){
88 | // refLogin.addValueEventListener(new ValueEventListener() {
89 | // @Override
90 | // public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
91 | // if(dataSnapshot.exists()){
92 | // loginlist = new ArrayList<>();
93 | // for(DataSnapshot ds: dataSnapshot.getChildren()){
94 | // loginlist.add(ds.getValue(LoginModel.class));
95 | // }
96 | // }
97 | // }
98 | // @Override
99 | // public void onCancelled(@NonNull DatabaseError databaseError) {
100 | // Toast.makeText(getApplicationContext(),"CANCELLED",Toast.LENGTH_SHORT).show();
101 | //
102 | // }
103 | // });
104 | // }
105 | GsignIn.setOnClickListener(new View.OnClickListener() {
106 | @Override
107 | public void onClick(View v) {
108 | signIn();
109 | }
110 | });
111 | mAuth = FirebaseAuth.getInstance();
112 | GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
113 | .requestEmail()
114 | .build();
115 | mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
116 | GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
117 | updateUI(account);
118 |
119 | slider_adapter = new Slider_Adapter(this);
120 | viewPager.setAdapter(slider_adapter);
121 | addDotsIndicator(0);
122 | viewPager.addOnPageChangeListener(viewPagelistener);
123 |
124 | nextButton.setOnClickListener(new View.OnClickListener() {
125 | @Override
126 | public void onClick(View v) {
127 | viewPager.setCurrentItem(CurrentPage +1);
128 | }
129 | });
130 | backButton.setOnClickListener(new View.OnClickListener() {
131 | @Override
132 | public void onClick(View v) {
133 | viewPager.setCurrentItem(CurrentPage -1);
134 | }
135 | });
136 |
137 | }
138 |
139 | private void updateUI(GoogleSignInAccount account) {
140 | if (account != null) {
141 | if(account.getEmail().equals("karthiknaiduraj@gmail.com") || account.getEmail().equals("krithiksuvarna@gmail.com")) {
142 | Toast.makeText(getApplicationContext(), account.getEmail(), Toast.LENGTH_SHORT).show();
143 | Intent adminIntent = new Intent(this, Admin_Main.class);
144 | startActivity(adminIntent);
145 | finish();
146 | }
147 | else {
148 | Toast.makeText(getApplicationContext(), account.getEmail(), Toast.LENGTH_SHORT).show();
149 | Intent userIntent = new Intent(this, User_Main.class);
150 | userIntent.putExtra("ACCOUNT", account);
151 | startActivity(userIntent);
152 | finish();
153 |
154 | }
155 | // if (loginlist != null) {
156 | // for (LoginModel object : loginlist) {
157 | // if (object.getEmail().contains(account.getEmail())) {
158 | // if (object.getStatus().equals("admin")) {
159 | // Toast.makeText(getApplicationContext(), account.getEmail(), Toast.LENGTH_SHORT).show();
160 | // Intent adminIntent = new Intent(this, Admin_Main.class);
161 | // startActivity(adminIntent);
162 | // finish();
163 | // }
164 | // else {
165 | // Toast.makeText(getApplicationContext(), account.getEmail(), Toast.LENGTH_SHORT).show();
166 | // Intent userIntent = new Intent(this, User_Main.class);
167 | // userIntent.putExtra("ACCOUNT", account);
168 | // startActivity(userIntent);
169 | // finish();
170 | //
171 | // }
172 | // }
173 | // }
174 | // }
175 | }
176 | }
177 | private void signIn() {Intent signInIntent = mGoogleSignInClient.getSignInIntent();
178 | startActivityForResult(signInIntent, RC_SIGN_IN);
179 | }
180 | @Override
181 | public void onActivityResult(int requestCode, int resultCode, Intent data) {
182 | super.onActivityResult(requestCode, resultCode, data);
183 | if (requestCode == RC_SIGN_IN) {
184 | Task task = GoogleSignIn.getSignedInAccountFromIntent(data);
185 | handleSignInResult(task);
186 | }
187 | }
188 | private void handleSignInResult(Task completedTask) {
189 | try {
190 | GoogleSignInAccount account = completedTask.getResult(ApiException.class);
191 | updateUI(account);
192 | } catch (ApiException e) {
193 | Log.w("TAG", "signInResult:failed code=" + e.getStatusCode());
194 | updateUI(null);
195 | }
196 | }
197 |
198 |
199 | public void addDotsIndicator (int position ) {
200 | mDots = new TextView[3];
201 | bottomlayout.removeAllViews();
202 | for (int i = 0 ; i < mDots.length ; i++){
203 | mDots[i] = new TextView(this);
204 | mDots[i].setText(Html.fromHtml("•"));
205 | mDots[i].setTextSize(50);
206 | mDots[i].setTextColor( getResources().getColor( R.color.colorPrimaryDark));
207 | bottomlayout.setGravity(Gravity.CENTER_HORIZONTAL);
208 | bottomlayout.addView(mDots[i]);
209 | }
210 |
211 | if (mDots.length > 0 ){
212 | mDots[position].setTextColor( getResources().getColor(R.color.colorPrimary));
213 | }
214 | }
215 |
216 | ViewPager.OnPageChangeListener viewPagelistener = new ViewPager.OnPageChangeListener() {
217 | @Override
218 | public void onPageScrolled(int i, float v, int i1) {
219 |
220 | }
221 |
222 | @Override
223 | public void onPageSelected(int i) {
224 | addDotsIndicator(i);
225 | CurrentPage = i;
226 |
227 | if(i ==0 ){
228 | nextButton.setEnabled(true);
229 | backButton.setEnabled(false);
230 | backButton.setVisibility(View.INVISIBLE);
231 | GsignIn.setVisibility(View.INVISIBLE);
232 | nextButton.setText("Next");
233 | backButton.setText("");
234 | }else if ( i == mDots.length -1){
235 | nextButton.setEnabled(false);
236 | backButton.setEnabled(false);
237 | backButton.setVisibility(View.INVISIBLE);
238 | nextButton.setVisibility(View.INVISIBLE);
239 | GsignIn.setVisibility(View.VISIBLE);
240 | }else {
241 | nextButton.setEnabled(true);
242 | backButton.setEnabled(true);
243 | backButton.setVisibility(View.VISIBLE);
244 | nextButton.setVisibility(View.VISIBLE);
245 | nextButton.setText("Next");
246 | backButton.setText("Back");
247 | GsignIn.setVisibility(View.INVISIBLE);
248 | }
249 |
250 | }
251 |
252 | @Override
253 | public void onPageScrollStateChanged(int i) {
254 |
255 | }
256 | };
257 |
258 |
259 | }
260 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/inventory/Adapter/Admin_Requests_Adapter.java:
--------------------------------------------------------------------------------
1 | package com.example.inventory.Adapter;
2 |
3 | import android.app.Dialog;
4 | import android.content.Context;
5 | import android.graphics.Color;
6 | import android.os.CountDownTimer;
7 | import android.view.LayoutInflater;
8 | import android.view.View;
9 | import android.view.ViewGroup;
10 | import android.widget.Button;
11 | import android.widget.TextView;
12 | import android.widget.Toast;
13 |
14 | import androidx.annotation.NonNull;
15 | import androidx.cardview.widget.CardView;
16 | import androidx.recyclerview.widget.RecyclerView;
17 |
18 | import com.example.inventory.Models.FinalRequestModel;
19 | import com.example.inventory.R;
20 | import com.google.firebase.database.DatabaseReference;
21 | import com.google.firebase.database.FirebaseDatabase;
22 |
23 | import java.util.ArrayList;
24 | import java.util.logging.Handler;
25 |
26 | public class Admin_Requests_Adapter extends RecyclerView.Adapter {
27 |
28 | ArrayList requestModel;
29 | Context context;
30 |
31 |
32 | public Admin_Requests_Adapter(ArrayList requestModel,Context context){
33 | this.requestModel=requestModel;
34 | this.context=context;
35 | }
36 |
37 | @NonNull
38 | @Override
39 | public Admin_Requests_ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
40 | View view = LayoutInflater.from(parent.getContext())
41 | .inflate(R.layout.admin_request_card,parent,false);
42 | final Admin_Requests_ViewHolder adminViewHold = new Admin_Requests_ViewHolder(view);
43 |
44 | return adminViewHold;
45 | }
46 |
47 | @Override
48 | public void onBindViewHolder(@NonNull final Admin_Requests_ViewHolder holder, final int position) {
49 | holder.component.setText(requestModel.get(position).getComponent());
50 | holder.uname.setText(requestModel.get(position).getUname());
51 | holder.uemail.setText(requestModel.get(position).getUemail());
52 | holder.datetime.setText(requestModel.get(position).getDatetime());
53 | holder.requestcount.setText(requestModel.get(position).getRequestcount());
54 | holder.count.setText(String.valueOf(requestModel.get(position).getCount()));
55 | if(requestModel.get(position).getRequesttype().equals("return")){
56 | holder.requesttype.setText(requestModel.get(position).getRequesttype().toUpperCase());
57 | holder.requesttype.setTextColor(Color.GREEN);
58 | }
59 | if(requestModel.get(position).getRequesttype().equals("request")){
60 | holder.requesttype.setText(requestModel.get(position).getRequesttype().toUpperCase());
61 | holder.requesttype.setTextColor(Color.BLUE);
62 | }
63 |
64 | holder.cardView.setOnClickListener(new View.OnClickListener() {
65 | @Override
66 | public void onClick(View v) {
67 |
68 | final String componentval = (String) holder.component.getText();
69 | final String unameval = (String) holder.uname.getText();
70 | String uemailval = (String) holder.uemail.getText();
71 | final String datetimeval = (String) holder.datetime.getText();
72 | final String requestcountval = (String) holder.requestcount.getText();
73 | final String availcountval = (String) holder.count.getText();
74 |
75 | final Dialog dialog = new Dialog(holder.context);
76 | dialog.setContentView(R.layout.admin_requests_dialog);
77 | dialog.setTitle("Request");
78 | final TextView components = dialog.findViewById(R.id.request_dialog_component);
79 | TextView user_name = dialog.findViewById(R.id.request_dialog_uname);
80 | TextView user_email = dialog.findViewById(R.id.request_dialog_uemail);
81 | TextView datelog = dialog.findViewById(R.id.request_dialog_datetime);
82 | final TextView request_count = dialog.findViewById(R.id.request_dialog_requestcount);
83 | final TextView avail_count = dialog.findViewById(R.id.request_dialog_availcount);
84 | TextView dialogheading = dialog.findViewById(R.id.dialog_heading);
85 | Button positivebut = dialog.findViewById(R.id.request_dialog_accept_request);
86 | Button negativebut = dialog.findViewById(R.id.request_dialog_reject_request);
87 | TextView returncountheading = dialog.findViewById(R.id.request_dialog_requestcount_heading);
88 |
89 | components.setText(componentval);
90 | user_name.setText(unameval);
91 | user_email.setText(uemailval);
92 | datelog.setText(datetimeval);
93 | request_count.setText(requestcountval);
94 | avail_count.setText(availcountval);
95 |
96 |
97 | if(requestModel.get(position).getRequesttype().equals("return")){
98 | dialogheading.setText("Return");
99 | positivebut.setText("ACCEPT RETURN");
100 | negativebut.setText("REJECT RETURN");
101 | returncountheading.setText("Return Count : ");
102 | positivebut.setOnClickListener(new View.OnClickListener() {
103 | @Override
104 | public void onClick(View v) {
105 | DatabaseReference myref;
106 | myref = FirebaseDatabase.getInstance().getReference("Components");
107 |
108 |
109 |
110 | myref.child(unameval).child(componentval).child("component").setValue(null);
111 | myref.child(unameval).child(componentval).child("adder").setValue(null);
112 | myref.child(unameval).child(componentval).child("count").setValue(null);
113 | myref.child("Admin").child(componentval).child("count").setValue(
114 | Integer.parseInt(availcountval) + Integer.parseInt(requestcountval));
115 |
116 | DatabaseReference Logsref;
117 | Logsref = FirebaseDatabase.getInstance().getReference("Logs");
118 | Logsref.child(datetimeval).child("component").setValue(componentval);
119 | Logsref.child(datetimeval).child("count").setValue(Integer.parseInt(requestcountval));
120 | Logsref.child(datetimeval).child("datetime").setValue(datetimeval);
121 | Logsref.child(datetimeval).child("logtype").setValue(3);
122 | Logsref.child(datetimeval).child("uname").setValue(unameval);
123 | Toast.makeText(context,"return accepted",Toast.LENGTH_SHORT).show();
124 | dialog.dismiss();
125 |
126 | deleteRequest(datetimeval);
127 |
128 | removeitem(position);
129 | }
130 | });
131 | }
132 | if (requestModel.get(position).getRequesttype().equals("request")){
133 | positivebut.setOnClickListener(new View.OnClickListener() {
134 | @Override
135 | public void onClick(View v) {
136 |
137 | DatabaseReference myref;
138 | myref = FirebaseDatabase.getInstance().getReference("Components");
139 |
140 | if(Integer.parseInt(availcountval) >= Integer.parseInt(requestcountval)){
141 | Toast.makeText(context,"request accepted",Toast.LENGTH_SHORT).show();
142 | dialog.dismiss();
143 | DatabaseReference Logsref;
144 | Logsref = FirebaseDatabase.getInstance().getReference("Logs");
145 | Logsref.child(datetimeval).child("component").setValue(componentval);
146 | Logsref.child(datetimeval).child("count").setValue(Integer.parseInt(requestcountval));
147 | Logsref.child(datetimeval).child("datetime").setValue(datetimeval);
148 | Logsref.child(datetimeval).child("logtype").setValue(1);
149 | Logsref.child(datetimeval).child("uname").setValue(unameval);
150 |
151 |
152 | myref.child(unameval).child(componentval).child("component").setValue(componentval);
153 | myref.child(unameval).child(componentval).child("adder").setValue(unameval);
154 | myref.child(unameval).child(componentval).child("count").setValue(Integer.parseInt(requestcountval));
155 | myref.child("Admin").child(componentval).child("count").setValue(
156 | Integer.parseInt(availcountval) - Integer.parseInt(requestcountval));
157 |
158 | deleteRequest(datetimeval);
159 |
160 | removeitem(position);}else{
161 | Toast.makeText(context,unameval+" has requested for more items than currently available. Add components before approving request",Toast.LENGTH_LONG).show();
162 |
163 | }
164 |
165 | }
166 | });
167 | }
168 | negativebut.setOnClickListener(new View.OnClickListener() {
169 | @Override
170 | public void onClick(View v) {
171 | dialog.dismiss();
172 | deleteRequest(datetimeval);
173 | Toast.makeText(context,"reject",Toast.LENGTH_SHORT).show();
174 | removeitem(position);
175 | }
176 | });
177 | dialog.setCancelable(true);
178 | dialog.setCanceledOnTouchOutside(true);
179 | dialog.show();
180 | dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
181 | }
182 | });
183 | }
184 | public void deleteRequest(String datetime){
185 | DatabaseReference myref;
186 | myref = FirebaseDatabase.getInstance().getReference("Requests");
187 | myref.child(datetime).child("component").setValue(null);
188 | myref.child(datetime).child("datetime").setValue(null);
189 | myref.child(datetime).child("requestcount").setValue(null);
190 | myref.child(datetime).child("requesttype").setValue(null);
191 | myref.child(datetime).child("uemail").setValue(null);
192 | myref.child(datetime).child("uname").setValue(null);
193 | }
194 | public void removeitem(int position){
195 | requestModel.remove(position);
196 | notifyItemRemoved(position);
197 | notifyItemRangeChanged(position, requestModel.size());
198 | }
199 |
200 | @Override
201 | public int getItemCount() {
202 | return requestModel.size();
203 | }
204 |
205 | class Admin_Requests_ViewHolder extends RecyclerView.ViewHolder{
206 | TextView component,uname,uemail,datetime,requestcount,count,requesttype;
207 | CardView cardView;
208 | Context context;
209 |
210 | public Admin_Requests_ViewHolder(@NonNull View itemView) {
211 | super(itemView);
212 | component = itemView.findViewById(R.id.admin_request_card_component);
213 | uname = itemView.findViewById(R.id.admin_request_card_uname);
214 | uemail = itemView.findViewById(R.id.admin_request_card_uemail);
215 | datetime = itemView.findViewById(R.id.admin_request_card_datetime);
216 | requestcount = itemView.findViewById(R.id.admin_request_card_requestcount);
217 | count = itemView.findViewById(R.id.admin_request_card_count);
218 | cardView = itemView.findViewById(R.id.admin_request_card);
219 | requesttype = itemView.findViewById(R.id.admin_request_card_requesttype);
220 | context = itemView.getContext();
221 | }
222 | }
223 | }
224 |
--------------------------------------------------------------------------------