Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
Y
Your Cashier
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ahmad Abi Mulya
Your Cashier
Commits
64e20e3e
Commit
64e20e3e
authored
Sep 02, 2020
by
Trio Saputra
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://git.mdd.co.id:44195/abimulya/your-cashier
parents
bfcf7a7a
17865116
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
306 additions
and
92 deletions
+306
-92
ABI.xml
.idea/dictionaries/ABI.xml
+7
-0
ASUS.xml
.idea/dictionaries/ASUS.xml
+7
-0
CartActivity.java
.../com/example/yourcashiertest/activities/CartActivity.java
+18
-0
LoginActivity.java
...com/example/yourcashiertest/activities/LoginActivity.java
+3
-7
OrderActivity.java
...com/example/yourcashiertest/activities/OrderActivity.java
+32
-1
PaymentActivity.java
...m/example/yourcashiertest/activities/PaymentActivity.java
+19
-0
RegisterActivity.java
.../example/yourcashiertest/activities/RegisterActivity.java
+2
-1
OrderAdapter.java
...va/com/example/yourcashiertest/adapters/OrderAdapter.java
+79
-0
TransaksiDao.java
...n/java/com/example/yourcashiertest/daos/TransaksiDao.java
+9
-4
DBHelper.java
.../java/com/example/yourcashiertest/databases/DBHelper.java
+11
-0
LocalDatabase.java
.../com/example/yourcashiertest/databases/LocalDatabase.java
+9
-8
Product.java
...in/java/com/example/yourcashiertest/entities/Product.java
+1
-2
Transaksi.java
.../java/com/example/yourcashiertest/entities/Transaksi.java
+5
-0
TransaksiRepository.java
...ple/yourcashiertest/repositories/TransaksiRepository.java
+16
-2
TransaksiViewModel.java
...xample/yourcashiertest/viewmodels/TransaksiViewModel.java
+17
-0
activity_order.xml
app/src/main/res/layout/activity_order.xml
+62
-53
item_order.xml
app/src/main/res/layout/item_order.xml
+9
-14
No files found.
.idea/dictionaries/ABI.xml
0 → 100644
View file @
64e20e3e
<component
name=
"ProjectDictionaryState"
>
<dictionary
name=
"ABI"
>
<words>
<w>
transaksi
</w>
</words>
</dictionary>
</component>
\ No newline at end of file
.idea/dictionaries/ASUS.xml
0 → 100644
View file @
64e20e3e
<component
name=
"ProjectDictionaryState"
>
<dictionary
name=
"ASUS"
>
<words>
<w>
transaksi
</w>
</words>
</dictionary>
</component>
\ No newline at end of file
app/src/main/java/com/example/yourcashiertest/activities/CartActivity.java
View file @
64e20e3e
...
@@ -15,8 +15,10 @@ import com.example.yourcashiertest.adapters.CartAdapter;
...
@@ -15,8 +15,10 @@ import com.example.yourcashiertest.adapters.CartAdapter;
import
com.example.yourcashiertest.databinding.ActivityCartBinding
;
import
com.example.yourcashiertest.databinding.ActivityCartBinding
;
import
com.example.yourcashiertest.entities.Cart
;
import
com.example.yourcashiertest.entities.Cart
;
import
com.example.yourcashiertest.entities.Product
;
import
com.example.yourcashiertest.entities.Product
;
import
com.example.yourcashiertest.entities.Transaksi
;
import
com.example.yourcashiertest.utils.Convert
;
import
com.example.yourcashiertest.utils.Convert
;
import
com.example.yourcashiertest.viewmodels.CartViewModel
;
import
com.example.yourcashiertest.viewmodels.CartViewModel
;
import
com.example.yourcashiertest.viewmodels.TransaksiViewModel
;
public
class
CartActivity
extends
AppCompatActivity
{
public
class
CartActivity
extends
AppCompatActivity
{
...
@@ -25,6 +27,7 @@ public class CartActivity extends AppCompatActivity {
...
@@ -25,6 +27,7 @@ public class CartActivity extends AppCompatActivity {
private
static
int
SUM
=
0
;
private
static
int
SUM
=
0
;
public
static
String
PRICE
=
"price"
;
public
static
String
PRICE
=
"price"
;
Product
product
;
Product
product
;
TransaksiViewModel
transaksiViewModel
;
@SuppressLint
(
"SetTextI18n"
)
@SuppressLint
(
"SetTextI18n"
)
@Override
@Override
...
@@ -38,6 +41,8 @@ public class CartActivity extends AppCompatActivity {
...
@@ -38,6 +41,8 @@ public class CartActivity extends AppCompatActivity {
product
=
new
Product
();
product
=
new
Product
();
transaksiViewModel
=
new
ViewModelProvider
(
this
).
get
(
TransaksiViewModel
.
class
);
CartViewModel
cartViewModel
=
new
ViewModelProvider
(
this
).
get
(
CartViewModel
.
class
);
CartViewModel
cartViewModel
=
new
ViewModelProvider
(
this
).
get
(
CartViewModel
.
class
);
cartViewModel
.
getCarts
().
observe
(
this
,
carts
->
adapter
.
setCartList
(
carts
));
cartViewModel
.
getCarts
().
observe
(
this
,
carts
->
adapter
.
setCartList
(
carts
));
...
@@ -79,6 +84,19 @@ public class CartActivity extends AppCompatActivity {
...
@@ -79,6 +84,19 @@ public class CartActivity extends AppCompatActivity {
startActivity
(
new
Intent
(
CartActivity
.
this
,
PaymentActivity
.
class
).
putExtra
(
PRICE
,
SUM
));
startActivity
(
new
Intent
(
CartActivity
.
this
,
PaymentActivity
.
class
).
putExtra
(
PRICE
,
SUM
));
finish
();
finish
();
});
});
binding
.
saveOrder
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
view
)
{
saveTransaction
(
SUM
);
}
});
}
private
void
saveTransaction
(
int
amount
)
{
Transaksi
transaksi
=
new
Transaksi
(
0
,
""
);
transaksi
.
setAmount
(
amount
);
transaksi
.
setStatus
(
"Pending"
);
transaksiViewModel
.
insertTransaksi
(
transaksi
);
}
}
@Override
@Override
...
...
app/src/main/java/com/example/yourcashiertest/activities/LoginActivity.java
View file @
64e20e3e
...
@@ -25,7 +25,6 @@ import retrofit2.Response;
...
@@ -25,7 +25,6 @@ import retrofit2.Response;
public
class
LoginActivity
extends
AppCompatActivity
{
public
class
LoginActivity
extends
AppCompatActivity
{
ActivityLoginBinding
binding
;
ActivityLoginBinding
binding
;
private
PrefManager
prefManager
;
private
PrefManager
prefManager
;
UserViewModel
viewModel
;
UserViewModel
viewModel
;
@Override
@Override
...
@@ -43,10 +42,6 @@ public class LoginActivity extends AppCompatActivity {
...
@@ -43,10 +42,6 @@ public class LoginActivity extends AppCompatActivity {
binding
.
btnLogin
.
setOnClickListener
(
view
->
{
binding
.
btnLogin
.
setOnClickListener
(
view
->
{
if
(
binding
.
etUsername
.
getText
().
toString
().
length
()
==
0
||
binding
.
etPassword
.
getText
().
toString
().
length
()
==
0
){
if
(
binding
.
etUsername
.
getText
().
toString
().
length
()
==
0
||
binding
.
etPassword
.
getText
().
toString
().
length
()
==
0
){
Toast
.
makeText
(
getApplicationContext
(),
"Please input Username and Password"
,
Toast
.
LENGTH_SHORT
).
show
();
Toast
.
makeText
(
getApplicationContext
(),
"Please input Username and Password"
,
Toast
.
LENGTH_SHORT
).
show
();
}
else
if
(!
binding
.
etPassword
.
getText
().
toString
().
matches
(
"[A-Za-z0-9]+"
)){
binding
.
etPassword
.
setError
(
"Passwords can only contain Alphanumeric"
);
}
else
if
(
binding
.
etPassword
.
getText
().
toString
().
length
()
<
8
)
{
binding
.
etPassword
.
setError
(
"Password length cannot be less than 8 characters"
);
}
else
{
}
else
{
binding
.
setLoading
(
true
);
binding
.
setLoading
(
true
);
viewModel
.
setListUser
();
viewModel
.
setListUser
();
...
@@ -72,10 +67,11 @@ public class LoginActivity extends AppCompatActivity {
...
@@ -72,10 +67,11 @@ public class LoginActivity extends AppCompatActivity {
ApiClient
.
client
(
UserService
.
class
,
UserViewModel
.
BASE_URL
).
loginUser
(
login
).
enqueue
(
new
Callback
<
ResponseLogin
>()
{
ApiClient
.
client
(
UserService
.
class
,
UserViewModel
.
BASE_URL
).
loginUser
(
login
).
enqueue
(
new
Callback
<
ResponseLogin
>()
{
@Override
@Override
public
void
onResponse
(
Call
<
ResponseLogin
>
call
,
Response
<
ResponseLogin
>
response
)
{
public
void
onResponse
(
Call
<
ResponseLogin
>
call
,
Response
<
ResponseLogin
>
response
)
{
if
(
response
.
code
()
>=
200
&
response
.
code
()
<=
299
){
if
(
response
.
body
()!=
null
){
Log
.
d
(
"body"
,
String
.
valueOf
(
response
.
body
().
getData
().
getFullName
()));
Log
.
d
(
"body"
,
String
.
valueOf
(
response
.
body
().
getData
().
getFullName
()));
prefManager
.
setFirstLogin
(
false
);
prefManager
.
setFirstLogin
(
false
);
binding
.
setLoading
(
false
);
binding
.
setLoading
(
false
);
Toast
.
makeText
(
getApplicationContext
(),
response
.
body
().
getMessages
(),
Toast
.
LENGTH_LONG
).
show
();
startActivity
(
new
Intent
(
LoginActivity
.
this
,
MainActivity
.
class
)
startActivity
(
new
Intent
(
LoginActivity
.
this
,
MainActivity
.
class
)
.
addFlags
(
Intent
.
FLAG_ACTIVITY_CLEAR_TASK
).
addFlags
(
Intent
.
FLAG_ACTIVITY_CLEAR_TOP
));
.
addFlags
(
Intent
.
FLAG_ACTIVITY_CLEAR_TASK
).
addFlags
(
Intent
.
FLAG_ACTIVITY_CLEAR_TOP
));
prefManager
.
setDataUser
(
response
.
body
().
getData
().
getFullName
());
prefManager
.
setDataUser
(
response
.
body
().
getData
().
getFullName
());
...
@@ -84,7 +80,7 @@ public class LoginActivity extends AppCompatActivity {
...
@@ -84,7 +80,7 @@ public class LoginActivity extends AppCompatActivity {
Toast
.
makeText
(
getApplicationContext
(),
"Please verify your account!"
,
Toast
.
LENGTH_LONG
).
show
();
Toast
.
makeText
(
getApplicationContext
(),
"Please verify your account!"
,
Toast
.
LENGTH_LONG
).
show
();
binding
.
setLoading
(
false
);
binding
.
setLoading
(
false
);
}
else
{
}
else
{
Toast
.
makeText
(
getApplicationContext
(),
"Email or password wrong"
,
Toast
.
LENGTH_LONG
).
show
();
Toast
.
makeText
(
getApplicationContext
(),
response
.
body
().
getMessages
()
,
Toast
.
LENGTH_LONG
).
show
();
binding
.
setLoading
(
false
);
binding
.
setLoading
(
false
);
}
}
}
}
...
...
app/src/main/java/com/example/yourcashiertest/activities/OrderActivity.java
View file @
64e20e3e
package
com
.
example
.
yourcashiertest
.
activities
;
package
com
.
example
.
yourcashiertest
.
activities
;
import
androidx.appcompat.app.AppCompatActivity
;
import
androidx.appcompat.app.AppCompatActivity
;
import
androidx.databinding.DataBindingUtil
;
import
androidx.lifecycle.Observer
;
import
androidx.lifecycle.ViewModelProvider
;
import
androidx.recyclerview.widget.LinearLayoutManager
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
com.example.yourcashiertest.R
;
import
com.example.yourcashiertest.R
;
import
com.example.yourcashiertest.adapters.OrderAdapter
;
import
com.example.yourcashiertest.databinding.ActivityOrderBinding
;
import
com.example.yourcashiertest.entities.Transaksi
;
import
com.example.yourcashiertest.viewmodels.TransaksiViewModel
;
import
java.util.List
;
public
class
OrderActivity
extends
AppCompatActivity
{
public
class
OrderActivity
extends
AppCompatActivity
{
ActivityOrderBinding
binding
;
OrderAdapter
adapter
;
TransaksiViewModel
viewModel
;
@Override
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_order
);
binding
=
DataBindingUtil
.
setContentView
(
this
,
R
.
layout
.
activity_order
);
viewModel
=
new
ViewModelProvider
(
this
).
get
(
TransaksiViewModel
.
class
);
binding
.
rvListOrder
.
setLayoutManager
(
new
LinearLayoutManager
(
this
));
binding
.
rvListOrder
.
setAdapter
(
adapter
);
viewModel
.
getList
().
observe
(
this
,
transaksi
->
adapter
.
setTransaksiList
(
transaksi
));
// adapter.setListener(new OrderAdapter.TransaksiListener() {
// @Override
// public void onCancel(Transaksi transaksi) {
//
// }
//
// @Override
// public void onContinue(Transaksi transaksi) {
//
// }
// });
}
}
}
}
\ No newline at end of file
app/src/main/java/com/example/yourcashiertest/activities/PaymentActivity.java
View file @
64e20e3e
...
@@ -19,11 +19,13 @@ import com.example.yourcashiertest.databases.DBHelper;
...
@@ -19,11 +19,13 @@ import com.example.yourcashiertest.databases.DBHelper;
import
com.example.yourcashiertest.databinding.ActivityPaymentBinding
;
import
com.example.yourcashiertest.databinding.ActivityPaymentBinding
;
import
com.example.yourcashiertest.entities.Cart
;
import
com.example.yourcashiertest.entities.Cart
;
import
com.example.yourcashiertest.entities.Product
;
import
com.example.yourcashiertest.entities.Product
;
import
com.example.yourcashiertest.entities.Transaksi
;
import
com.example.yourcashiertest.models.ResponsePayment
;
import
com.example.yourcashiertest.models.ResponsePayment
;
import
com.example.yourcashiertest.utils.Convert
;
import
com.example.yourcashiertest.utils.Convert
;
import
com.example.yourcashiertest.utils.ViewUtil
;
import
com.example.yourcashiertest.utils.ViewUtil
;
import
com.example.yourcashiertest.viewmodels.CartViewModel
;
import
com.example.yourcashiertest.viewmodels.CartViewModel
;
import
com.example.yourcashiertest.viewmodels.ProductViewModel
;
import
com.example.yourcashiertest.viewmodels.ProductViewModel
;
import
com.example.yourcashiertest.viewmodels.TransaksiViewModel
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
...
@@ -37,6 +39,7 @@ public class PaymentActivity extends AppCompatActivity {
...
@@ -37,6 +39,7 @@ public class PaymentActivity extends AppCompatActivity {
public
int
amount
;
public
int
amount
;
CartViewModel
cartViewModel
;
CartViewModel
cartViewModel
;
ProductViewModel
viewModel
;
ProductViewModel
viewModel
;
TransaksiViewModel
payViewModel
;
public
static
final
String
PAY_WITH
=
"pay_with"
;
public
static
final
String
PAY_WITH
=
"pay_with"
;
private
ArrayList
<
ResponsePayment
>
responsePayments
=
new
ArrayList
<>();
private
ArrayList
<
ResponsePayment
>
responsePayments
=
new
ArrayList
<>();
...
@@ -47,6 +50,7 @@ public class PaymentActivity extends AppCompatActivity {
...
@@ -47,6 +50,7 @@ public class PaymentActivity extends AppCompatActivity {
super
.
onCreate
(
savedInstanceState
);
super
.
onCreate
(
savedInstanceState
);
binding
=
DataBindingUtil
.
setContentView
(
this
,
R
.
layout
.
activity_payment
);
binding
=
DataBindingUtil
.
setContentView
(
this
,
R
.
layout
.
activity_payment
);
payViewModel
=
new
ViewModelProvider
(
this
).
get
(
TransaksiViewModel
.
class
);
cartViewModel
=
new
ViewModelProvider
(
this
).
get
(
CartViewModel
.
class
);
cartViewModel
=
new
ViewModelProvider
(
this
).
get
(
CartViewModel
.
class
);
viewModel
=
new
ViewModelProvider
(
this
).
get
(
ProductViewModel
.
class
);
viewModel
=
new
ViewModelProvider
(
this
).
get
(
ProductViewModel
.
class
);
amount
=
getIntent
().
getIntExtra
(
CartActivity
.
PRICE
,
0
);
amount
=
getIntent
().
getIntExtra
(
CartActivity
.
PRICE
,
0
);
...
@@ -86,6 +90,14 @@ public class PaymentActivity extends AppCompatActivity {
...
@@ -86,6 +90,14 @@ public class PaymentActivity extends AppCompatActivity {
List
<
Product
>
products
=
DBHelper
.
getAllProduct
(
getApplicationContext
());
List
<
Product
>
products
=
DBHelper
.
getAllProduct
(
getApplicationContext
());
List
<
Cart
>
carts
=
DBHelper
.
getAllCart
(
getApplicationContext
());
List
<
Cart
>
carts
=
DBHelper
.
getAllCart
(
getApplicationContext
());
// just checking data
List
<
Transaksi
>
list
=
DBHelper
.
getAllTransaksi
(
getApplicationContext
());
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++){
Log
.
d
(
"transaction"
,
String
.
valueOf
(
list
.
get
(
i
).
getOrderId
()));
}
createTransaksi
(
amount
);
for
(
int
c
=
0
;
c
<
carts
.
size
();
c
++){
for
(
int
c
=
0
;
c
<
carts
.
size
();
c
++){
for
(
int
p
=
0
;
p
<
products
.
size
();
p
++){
for
(
int
p
=
0
;
p
<
products
.
size
();
p
++){
if
(
carts
.
get
(
c
).
getIdProduct
()
==
products
.
get
(
p
).
getId
()){
if
(
carts
.
get
(
c
).
getIdProduct
()
==
products
.
get
(
p
).
getId
()){
...
@@ -99,6 +111,13 @@ public class PaymentActivity extends AppCompatActivity {
...
@@ -99,6 +111,13 @@ public class PaymentActivity extends AppCompatActivity {
}
}
}
}
private
void
createTransaksi
(
int
amount
)
{
Transaksi
transaksi
=
new
Transaksi
(
0
,
""
);
transaksi
.
setAmount
(
amount
);
transaksi
.
setStatus
(
"Success"
);
payViewModel
.
insertTransaksi
(
transaksi
);
}
@Override
@Override
protected
void
onDestroy
()
{
protected
void
onDestroy
()
{
super
.
onDestroy
();
super
.
onDestroy
();
...
...
app/src/main/java/com/example/yourcashiertest/activities/RegisterActivity.java
View file @
64e20e3e
...
@@ -40,7 +40,7 @@ public class RegisterActivity extends AppCompatActivity {
...
@@ -40,7 +40,7 @@ public class RegisterActivity extends AppCompatActivity {
binding
.
etPassword
.
setError
(
"Passwords can only contain Alphanumeric"
);
binding
.
etPassword
.
setError
(
"Passwords can only contain Alphanumeric"
);
}
else
if
(
binding
.
etPassword
.
getText
().
toString
().
length
()
<
8
)
{
}
else
if
(
binding
.
etPassword
.
getText
().
toString
().
length
()
<
8
)
{
binding
.
etPassword
.
setError
(
"Password length cannot be less than 8 characters"
);
binding
.
etPassword
.
setError
(
"Password length cannot be less than 8 characters"
);
}
else
if
(
binding
.
etPassword
.
getText
().
toString
()
!=
binding
.
etConfirmPassword
.
getText
().
toString
(
)){
}
else
if
(
!
binding
.
etPassword
.
getText
().
toString
().
equals
(
binding
.
etConfirmPassword
.
getText
().
toString
()
)){
binding
.
etConfirmPassword
.
setError
(
"Password doesn't match!"
);
binding
.
etConfirmPassword
.
setError
(
"Password doesn't match!"
);
}
else
{
}
else
{
user
.
setEmail
(
binding
.
etEmail
.
getText
().
toString
());
user
.
setEmail
(
binding
.
etEmail
.
getText
().
toString
());
...
@@ -51,6 +51,7 @@ public class RegisterActivity extends AppCompatActivity {
...
@@ -51,6 +51,7 @@ public class RegisterActivity extends AppCompatActivity {
Toast
.
makeText
(
getApplicationContext
(),
viewModel
.
getMessages
(),
Toast
.
LENGTH_LONG
).
show
();
Toast
.
makeText
(
getApplicationContext
(),
viewModel
.
getMessages
(),
Toast
.
LENGTH_LONG
).
show
();
startActivity
(
new
Intent
(
getApplicationContext
(),
LoginActivity
.
class
));
startActivity
(
new
Intent
(
getApplicationContext
(),
LoginActivity
.
class
));
finish
();
}
}
});
});
}
}
...
...
app/src/main/java/com/example/yourcashiertest/adapters/OrderAdapter.java
0 → 100644
View file @
64e20e3e
package
com
.
example
.
yourcashiertest
.
adapters
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
androidx.annotation.NonNull
;
import
androidx.databinding.DataBindingUtil
;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.example.yourcashiertest.R
;
import
com.example.yourcashiertest.databinding.ItemOrderBinding
;
import
com.example.yourcashiertest.entities.Transaksi
;
import
com.example.yourcashiertest.utils.Convert
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
OrderAdapter
extends
RecyclerView
.
Adapter
<
OrderAdapter
.
ViewHolder
>
{
private
List
<
Transaksi
>
transaksiList
=
new
ArrayList
<>();
public
interface
TransaksiListener
{
void
onCancel
(
Transaksi
transaksi
);
void
onContinue
(
Transaksi
transaksi
);
}
private
TransaksiListener
listener
;
public
void
setListener
(
TransaksiListener
listener
)
{
this
.
listener
=
listener
;
}
public
void
setTransaksiList
(
List
<
Transaksi
>
transaksiList
)
{
this
.
transaksiList
=
transaksiList
;
notifyDataSetChanged
();
}
@NonNull
@Override
public
ViewHolder
onCreateViewHolder
(
@NonNull
ViewGroup
parent
,
int
viewType
)
{
return
new
OrderAdapter
.
ViewHolder
(
DataBindingUtil
.
inflate
(
LayoutInflater
.
from
(
parent
.
getContext
()),
R
.
layout
.
item_order
,
parent
,
false
)
);
}
@Override
public
void
onBindViewHolder
(
@NonNull
ViewHolder
holder
,
int
position
)
{
holder
.
bindData
(
transaksiList
.
get
(
position
),
listener
);
}
@Override
public
int
getItemCount
()
{
if
(
transaksiList
.
size
()
!=
0
){
return
transaksiList
.
size
();
}
else
return
0
;
}
public
class
ViewHolder
extends
RecyclerView
.
ViewHolder
{
private
ItemOrderBinding
binding
;
public
ViewHolder
(
@NonNull
ItemOrderBinding
binding
)
{
super
(
binding
.
getRoot
());
this
.
binding
=
binding
;
}
public
void
bindData
(
Transaksi
transaksi
,
TransaksiListener
listener
){
binding
.
setTransaction
(
transaksi
);
binding
.
setAmount
(
Convert
.
changeToCurrency
(
transaksi
.
getAmount
()));
binding
.
btnCancel
.
setOnClickListener
(
view
->
listener
.
onCancel
(
transaksi
));
binding
.
btnContinue
.
setOnClickListener
(
view
->
listener
.
onContinue
(
transaksi
));
}
}
}
app/src/main/java/com/example/yourcashiertest/daos/TransaksiDao.java
View file @
64e20e3e
package
com
.
example
.
yourcashiertest
.
daos
;
package
com
.
example
.
yourcashiertest
.
daos
;
import
androidx.lifecycle.LiveData
;
import
androidx.room.Dao
;
import
androidx.room.Dao
;
import
androidx.room.Delete
;
import
androidx.room.Delete
;
import
androidx.room.Insert
;
import
androidx.room.Insert
;
...
@@ -13,15 +14,19 @@ import java.util.List;
...
@@ -13,15 +14,19 @@ import java.util.List;
@Dao
@Dao
public
interface
TransaksiDao
{
public
interface
TransaksiDao
{
@Query
(
"SELECT * FROM Transaksi"
)
@Query
(
"SELECT * FROM Transaksi"
)
public
List
<
Transaksi
>
getAll
();
List
<
Transaksi
>
getTransaksi
();
@Query
(
"SELECT * FROM Transaksi ORDER BY orderId DESC"
)
LiveData
<
List
<
Transaksi
>>
getAll
();
@Insert
(
onConflict
=
OnConflictStrategy
.
IGNORE
)
@Insert
(
onConflict
=
OnConflictStrategy
.
IGNORE
)
public
void
insertTransaksi
(
Transaksi
transaksi
);
void
insertTransaksi
(
Transaksi
transaksi
);
@Update
@Update
public
void
updateTransaksi
(
Transaksi
transaksi
);
void
updateTransaksi
(
Transaksi
transaksi
);
@Delete
@Delete
public
void
deleteTransaksi
(
Transaksi
transaksi
);
void
deleteTransaksi
(
Transaksi
transaksi
);
}
}
app/src/main/java/com/example/yourcashiertest/databases/DBHelper.java
View file @
64e20e3e
...
@@ -2,8 +2,12 @@ package com.example.yourcashiertest.databases;
...
@@ -2,8 +2,12 @@ package com.example.yourcashiertest.databases;
import
android.content.Context
;
import
android.content.Context
;
import
androidx.lifecycle.LiveData
;
import
com.example.yourcashiertest.entities.Cart
;
import
com.example.yourcashiertest.entities.Cart
;
import
com.example.yourcashiertest.entities.Product
;
import
com.example.yourcashiertest.entities.Product
;
import
com.example.yourcashiertest.entities.Transaksi
;
import
com.example.yourcashiertest.utils.Convert
;
import
java.util.List
;
import
java.util.List
;
...
@@ -21,4 +25,11 @@ public class DBHelper {
...
@@ -21,4 +25,11 @@ public class DBHelper {
list
=
db
.
cartDao
().
getAllCarts
();
list
=
db
.
cartDao
().
getAllCarts
();
return
list
;
return
list
;
}
}
public
static
List
<
Transaksi
>
getAllTransaksi
(
Context
context
){
List
<
Transaksi
>
list
;
LocalDatabase
db
=
LocalDatabase
.
getDatabase
(
context
);
list
=
db
.
transaksiDao
().
getTransaksi
();
return
list
;
}
}
}
app/src/main/java/com/example/yourcashiertest/databases/LocalDatabase.java
View file @
64e20e3e
...
@@ -17,11 +17,12 @@ import com.example.yourcashiertest.daos.ProductDao;
...
@@ -17,11 +17,12 @@ import com.example.yourcashiertest.daos.ProductDao;
import
com.example.yourcashiertest.daos.TransaksiDao
;
import
com.example.yourcashiertest.daos.TransaksiDao
;
import
com.example.yourcashiertest.entities.Cart
;
import
com.example.yourcashiertest.entities.Cart
;
import
com.example.yourcashiertest.entities.Product
;
import
com.example.yourcashiertest.entities.Product
;
import
com.example.yourcashiertest.entities.Transaksi
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.Executors
;
@Database
(
entities
=
{
Product
.
class
,
Cart
.
class
},
version
=
4
,
exportSchema
=
false
)
@Database
(
entities
=
{
Product
.
class
,
Cart
.
class
,
Transaksi
.
class
},
version
=
5
,
exportSchema
=
false
)
public
abstract
class
LocalDatabase
extends
RoomDatabase
{
public
abstract
class
LocalDatabase
extends
RoomDatabase
{
public
abstract
ProductDao
productDao
();
public
abstract
ProductDao
productDao
();
...
@@ -42,13 +43,6 @@ public abstract class LocalDatabase extends RoomDatabase {
...
@@ -42,13 +43,6 @@ public abstract class LocalDatabase extends RoomDatabase {
}
}
};
};
public
static
final
Migration
MIGRATION_4_5
=
new
Migration
(
4
,
5
)
{
@Override
public
void
migrate
(
@NonNull
SupportSQLiteDatabase
database
)
{
database
.
execSQL
(
"CREATE TABLE IF NOT EXISTS Transaksi (orderId INTEGER NOT NULL, "
+
"amount INTEGER NOT NULL, status TEXT NOT NULL, PRIMARY KEY(orderId))"
);
}
};
public
static
final
Migration
MIGRATION_2_3
=
new
Migration
(
2
,
3
)
{
public
static
final
Migration
MIGRATION_2_3
=
new
Migration
(
2
,
3
)
{
@Override
@Override
...
@@ -64,6 +58,13 @@ public abstract class LocalDatabase extends RoomDatabase {
...
@@ -64,6 +58,13 @@ public abstract class LocalDatabase extends RoomDatabase {
}
}
};
};
public
static
final
Migration
MIGRATION_4_5
=
new
Migration
(
4
,
5
)
{
@Override
public
void
migrate
(
@NonNull
SupportSQLiteDatabase
database
)
{
database
.
execSQL
(
"CREATE TABLE IF NOT EXISTS Transaksi (orderId INTEGER NOT NULL, "
+
"amount INTEGER NOT NULL, status TEXT NOT NULL, PRIMARY KEY(orderId))"
);
}
};
public
static
LocalDatabase
getDatabase
(
Context
context
)
{
public
static
LocalDatabase
getDatabase
(
Context
context
)
{
if
(
INSTANCE
==
null
)
{
if
(
INSTANCE
==
null
)
{
synchronized
(
LocalDatabase
.
class
)
{
synchronized
(
LocalDatabase
.
class
)
{
...
...
app/src/main/java/com/example/yourcashiertest/entities/Product.java
View file @
64e20e3e
...
@@ -5,9 +5,8 @@ import android.os.Parcelable;
...
@@ -5,9 +5,8 @@ import android.os.Parcelable;
import
android.text.TextUtils
;
import
android.text.TextUtils
;
import
android.widget.ImageView
;
import
android.widget.ImageView
;
import
androidx.annotation.NonNull
;
import
androidx.databinding.BindingAdapter
;
import
androidx.databinding.BindingAdapter
;
import
androidx.room.ColumnInfo
;
import
androidx.room.Entity
;
import
androidx.room.Entity
;
import
androidx.room.PrimaryKey
;
import
androidx.room.PrimaryKey
;
...
...
app/src/main/java/com/example/yourcashiertest/entities/Transaksi.java
View file @
64e20e3e
...
@@ -29,6 +29,11 @@ public class Transaksi implements Parcelable {
...
@@ -29,6 +29,11 @@ public class Transaksi implements Parcelable {
status
=
in
.
readString
();
status
=
in
.
readString
();
}
}
public
Transaksi
(
long
amount
,
String
status
){
this
.
amount
=
amount
;
this
.
status
=
status
;
}
public
static
final
Creator
<
Transaksi
>
CREATOR
=
new
Creator
<
Transaksi
>()
{
public
static
final
Creator
<
Transaksi
>
CREATOR
=
new
Creator
<
Transaksi
>()
{
@Override
@Override
public
Transaksi
createFromParcel
(
Parcel
in
)
{
public
Transaksi
createFromParcel
(
Parcel
in
)
{
...
...
app/src/main/java/com/example/yourcashiertest/repositories/TransaksiRepository.java
View file @
64e20e3e
...
@@ -3,6 +3,8 @@ package com.example.yourcashiertest.repositories;
...
@@ -3,6 +3,8 @@ package com.example.yourcashiertest.repositories;
import
android.app.Application
;
import
android.app.Application
;
import
androidx.lifecycle.LiveData
;
import
com.example.yourcashiertest.daos.TransaksiDao
;
import
com.example.yourcashiertest.daos.TransaksiDao
;
import
com.example.yourcashiertest.databases.LocalDatabase
;
import
com.example.yourcashiertest.databases.LocalDatabase
;
import
com.example.yourcashiertest.entities.Transaksi
;
import
com.example.yourcashiertest.entities.Transaksi
;
...
@@ -11,7 +13,7 @@ import java.util.List;
...
@@ -11,7 +13,7 @@ import java.util.List;
public
class
TransaksiRepository
{
public
class
TransaksiRepository
{
private
TransaksiDao
dao
;
private
TransaksiDao
dao
;
private
Li
st
<
Transaksi
>
allTransaksi
;
private
Li
veData
<
List
<
Transaksi
>
>
allTransaksi
;
public
TransaksiRepository
(
Application
application
){
public
TransaksiRepository
(
Application
application
){
LocalDatabase
db
=
LocalDatabase
.
getDatabase
(
application
);
LocalDatabase
db
=
LocalDatabase
.
getDatabase
(
application
);
...
@@ -19,7 +21,19 @@ public class TransaksiRepository {
...
@@ -19,7 +21,19 @@ public class TransaksiRepository {
allTransaksi
=
dao
.
getAll
();
allTransaksi
=
dao
.
getAll
();
}
}
public
Li
st
<
Transaksi
>
getAllTransaksi
(){
public
Li
veData
<
List
<
Transaksi
>
>
getAllTransaksi
(){
return
this
.
allTransaksi
;
return
this
.
allTransaksi
;
}
}
public
void
insert
(
Transaksi
transaksi
){
LocalDatabase
.
databaseWriteExecutor
.
execute
(()
->
dao
.
insertTransaksi
(
transaksi
));
}
public
void
update
(
Transaksi
transaksi
){
LocalDatabase
.
databaseWriteExecutor
.
execute
(()
->
dao
.
updateTransaksi
(
transaksi
));
}
public
void
delete
(
Transaksi
transaksi
){
LocalDatabase
.
databaseWriteExecutor
.
execute
(()
->
dao
.
deleteTransaksi
(
transaksi
));
}
}
}
app/src/main/java/com/example/yourcashiertest/viewmodels/TransaksiViewModel.java
View file @
64e20e3e
...
@@ -19,5 +19,22 @@ public class TransaksiViewModel extends AndroidViewModel {
...
@@ -19,5 +19,22 @@ public class TransaksiViewModel extends AndroidViewModel {
public
TransaksiViewModel
(
@NonNull
Application
application
)
{
public
TransaksiViewModel
(
@NonNull
Application
application
)
{
super
(
application
);
super
(
application
);
repository
=
new
TransaksiRepository
(
application
);
repository
=
new
TransaksiRepository
(
application
);
list
=
repository
.
getAllTransaksi
();
}
public
LiveData
<
List
<
Transaksi
>>
getList
()
{
return
list
;
}
public
void
insertTransaksi
(
Transaksi
transaksi
){
repository
.
insert
(
transaksi
);
}
public
void
updateTransaksi
(
Transaksi
transaksi
){
repository
.
update
(
transaksi
);
}
public
void
deleteTransaksi
(
Transaksi
transaksi
){
repository
.
delete
(
transaksi
);
}
}
}
}
app/src/main/res/layout/activity_order.xml
View file @
64e20e3e
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<
androidx.constraintlayout.widget.ConstraintL
ayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<
l
ayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:tools=
"http://schemas.android.com/tools"
>
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:padding=
"8dp"
tools:context=
".activities.OrderActivity"
>
<TextView
android:id=
"@+id/tvListOrder"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:gravity=
"top"
android:layout_marginBottom=
"4dp"
android:text=
"TRANSACTION LIST"
android:textAppearance=
"@style/payment"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintHorizontal_bias=
"0.0"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintVertical_bias=
"0.105"
/>
<com.google.android.material.button.MaterialButton
android:id=
"@+id/btnPending"
android:layout_width=
"160dp"
android:layout_height=
"wrap_content"
android:text=
"PENDING"
android:textSize=
"10dp"
android:backgroundTint=
"@color/colorPending"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/tvListOrder"
app:layout_constraintBottom_toTopOf=
"@id/rvListOrder"
tools:layout_editor_absoluteX=
"16dp"
tools:layout_editor_absoluteY=
"654dp"
/>
<com.google.android.material.button.MaterialButton
<data>
android:id=
"@+id/btnSuccess"
android:layout_width=
"160dp"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"4dp"
android:text=
"SUCCESS"
android:textSize=
"10dp"
app:layout_constraintBottom_toTopOf=
"@id/rvListOrder"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/tvListOrder"
app:layout_constraintVertical_bias=
"0.0"
/>
<androidx.recyclerview.widget.RecyclerView
</data>
android:id=
"@+id/rvListOrder"
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_height=
"match_parent"
android:padding=
"@dimen/space_small"
android:padding=
"8dp"
app:layoutManager=
"androidx.recyclerview.widget.LinearLayoutManager"
tools:context=
".activities.OrderActivity"
>
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
<TextView
app:layout_constraintStart_toStartOf=
"parent"
android:id=
"@+id/tvListOrder"
app:layout_constraintTop_toBottomOf=
"@id/btnPending"
android:layout_width=
"wrap_content"
tools:listitem=
"@layout/item_order"
/>
android:layout_height=
"wrap_content"
</androidx.constraintlayout.widget.ConstraintLayout>
android:gravity=
"top"
\ No newline at end of file
android:layout_marginBottom=
"4dp"
android:text=
"TRANSACTION LIST"
android:textAppearance=
"@style/payment"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintHorizontal_bias=
"0.0"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintVertical_bias=
"0.105"
/>
<com.google.android.material.button.MaterialButton
android:id=
"@+id/btnPending"
android:layout_width=
"160dp"
android:layout_height=
"wrap_content"
android:text=
"PENDING"
android:textSize=
"10dp"
android:backgroundTint=
"@color/colorPending"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/tvListOrder"
app:layout_constraintBottom_toTopOf=
"@id/rvListOrder"
tools:layout_editor_absoluteX=
"16dp"
tools:layout_editor_absoluteY=
"654dp"
/>
<com.google.android.material.button.MaterialButton
android:id=
"@+id/btnSuccess"
android:layout_width=
"160dp"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"4dp"
android:text=
"SUCCESS"
android:textSize=
"10dp"
app:layout_constraintBottom_toTopOf=
"@id/rvListOrder"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/tvListOrder"
app:layout_constraintVertical_bias=
"0.0"
/>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rvListOrder"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:padding=
"@dimen/space_small"
app:layoutManager=
"androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/btnPending"
tools:listitem=
"@layout/item_order"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
app/src/main/res/layout/item_order.xml
View file @
64e20e3e
...
@@ -5,15 +5,11 @@
...
@@ -5,15 +5,11 @@
xmlns:tools=
"http://schemas.android.com/tools"
>
xmlns:tools=
"http://schemas.android.com/tools"
>
<data>
<data>
<variable
<variable
name=
"
cartProduct
"
name=
"
transaction
"
type=
"com.example.yourcashiertest.entities.
Cart
"
/>
type=
"com.example.yourcashiertest.entities.
Transaksi
"
/>
<variable
<variable
name=
"qty"
name=
"amount"
type=
"String"
/>
<variable
name=
"price"
type=
"String"
/>
type=
"String"
/>
</data>
</data>
...
@@ -47,6 +43,7 @@
...
@@ -47,6 +43,7 @@
android:id=
"@+id/tvOrderId"
android:id=
"@+id/tvOrderId"
android:layout_width=
"250dp"
android:layout_width=
"250dp"
android:layout_height=
"41dp"
android:layout_height=
"41dp"
android:text=
"@{transaction.orderId + ``}"
android:layout_alignParentLeft=
"true"
android:layout_alignParentLeft=
"true"
android:layout_alignParentTop=
"true"
android:layout_alignParentTop=
"true"
android:layout_marginStart=
"4dp"
android:layout_marginStart=
"4dp"
...
@@ -54,8 +51,7 @@
...
@@ -54,8 +51,7 @@
android:textAppearance=
"@style/some_id"
android:textAppearance=
"@style/some_id"
app:layout_constraintStart_toEndOf=
"@id/tvOrderNumber"
app:layout_constraintStart_toEndOf=
"@id/tvOrderNumber"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
tools:layout_editor_absoluteX=
"169dp"
tools:layout_editor_absoluteX=
"169dp"
/>
tools:text=
"@{price}"
/>
<TextView
<TextView
android:id=
"@+id/tvTotal"
android:id=
"@+id/tvTotal"
...
@@ -74,6 +70,7 @@
...
@@ -74,6 +70,7 @@
android:id=
"@+id/tvAmount"
android:id=
"@+id/tvAmount"
android:layout_width=
"250dp"
android:layout_width=
"250dp"
android:layout_height=
"41dp"
android:layout_height=
"41dp"
android:text=
"@{amount}"
android:layout_alignParentLeft=
"true"
android:layout_alignParentLeft=
"true"
android:layout_alignParentTop=
"true"
android:layout_alignParentTop=
"true"
android:layout_marginStart=
"4dp"
android:layout_marginStart=
"4dp"
...
@@ -81,8 +78,7 @@
...
@@ -81,8 +78,7 @@
android:textAppearance=
"@style/some_id"
android:textAppearance=
"@style/some_id"
app:layout_constraintStart_toEndOf=
"@id/tvTotal"
app:layout_constraintStart_toEndOf=
"@id/tvTotal"
app:layout_constraintTop_toBottomOf=
"@id/tvOrderId"
app:layout_constraintTop_toBottomOf=
"@id/tvOrderId"
tools:layout_editor_absoluteX=
"169dp"
tools:layout_editor_absoluteX=
"169dp"
/>
tools:text=
"@{price}"
/>
<TextView
<TextView
android:id=
"@+id/tvStatus"
android:id=
"@+id/tvStatus"
...
@@ -91,11 +87,10 @@
...
@@ -91,11 +87,10 @@
android:layout_marginStart=
"4dp"
android:layout_marginStart=
"4dp"
android:layout_marginTop=
"4dp"
android:layout_marginTop=
"4dp"
android:gravity=
"center"
android:gravity=
"center"
android:text=
"@{}"
android:text=
"@{
transaction.status
}"
android:textStyle=
"bold"
android:textStyle=
"bold"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/tvTotal"
app:layout_constraintTop_toBottomOf=
"@+id/tvTotal"
/>
tools:text=
"Success"
/>
<com.google.android.material.button.MaterialButton
<com.google.android.material.button.MaterialButton
android:id=
"@+id/btnContinue"
android:id=
"@+id/btnContinue"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment