Skip to content

Commit 28a152c

Browse files
committed
Improved deposit activity
1 parent bf8aab2 commit 28a152c

11 files changed

+246
-136
lines changed

app/app.iml

+9-8
Original file line numberDiff line numberDiff line change
@@ -66,14 +66,6 @@
6666
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
6767
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
6868
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
69-
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
70-
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
71-
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
72-
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
73-
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
74-
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
75-
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
76-
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
7769
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
7870
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
7971
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
@@ -82,8 +74,17 @@
8274
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
8375
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
8476
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
77+
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
78+
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
79+
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
80+
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
81+
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
82+
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
83+
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
84+
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
8585
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
8686
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
87+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
8788
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
8889
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
8990
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/animated-vector-drawable/24.2.1/jars" />

app/src/main/java/com/razikallayi/suraksha/data/SurakshaProvider.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ public class SurakshaProvider extends ContentProvider {
4444
SurakshaContract.AccountEntry.TABLE_NAME +
4545
"." + SurakshaContract.AccountEntry.COLUMN_ACCOUNT_NUMBER + " = ? ";
4646
//location.location_setting = ? AND date >= ?
47-
private static final String sMemberNameOrAccountSelection =
48-
SurakshaContract.MemberEntry.TABLE_NAME +
49-
"." + SurakshaContract.MemberEntry.COLUMN_NAME + " = ? OR " +
50-
SurakshaContract.AccountEntry.COLUMN_ACCOUNT_NUMBER + " = ? ";
47+
// private static final String sMemberNameOrAccountSelection =
48+
// SurakshaContract.MemberEntry.TABLE_NAME +
49+
// "." + SurakshaContract.MemberEntry.COLUMN_NAME + " = ? OR " +
50+
// SurakshaContract.AccountEntry.COLUMN_ACCOUNT_NUMBER + " = ? ";
5151

5252
static {
5353
sAccountsOfMemberQueryBuilder = new SQLiteQueryBuilder();

app/src/main/java/com/razikallayi/suraksha/deposit/DepositAdapter.java

+32-11
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,19 @@ public class DepositAdapter extends RecyclerView.Adapter<DepositAdapter.ViewHold
3131
private Context mContext;
3232
private List<Transaction> mDepositedTxnList;
3333
private Member mMember;
34+
private int mLateDepositBgColor;
35+
private DepositFragment.OnMakeDepositListener onMakeDepositListener;
3436

3537
// Provide a suitable constructor (depends on the kind of dataset)
36-
public DepositAdapter(Context context, Member member) {
38+
DepositAdapter(Context context, Member member) {
3739
mContext = context;
3840
mMember = member;
3941
mDepositedTxnList = member.fetchDeposits(context);
42+
mLateDepositBgColor= mContext.getResources().getColor(R.color.lateDepositBgColor);
43+
}
44+
45+
public void setOnMakeDepositListener(DepositFragment.OnMakeDepositListener listener){
46+
onMakeDepositListener = listener;
4047
}
4148

4249
// Create new views (invoked by the layout manager)
@@ -57,14 +64,24 @@ public void onBindViewHolder(final ViewHolder holder, int position) {
5764
// holder.mAmountTextView.setText(Utility.formatAmountInRupees(holder.mAmountTextView.getContext(),
5865
// Utility.getMonthlyDepositAmount()));
5966
Transaction depositedTxns = mDepositedTxnList.get(position);
60-
String monthAndYear = CalendarUtils.readableDepositMonth(depositedTxns.getDefinedDepositMonth());
67+
long depositMonth = depositedTxns.getDefinedDepositMonth();
68+
String monthAndYear = CalendarUtils.readableDepositMonth(depositMonth);
6169
holder.mMonthTextView.setText(monthAndYear);
62-
holder.mCreatedAtTextView.setText(CalendarUtils.getFriendlyDayString(mContext,depositedTxns.getCreatedAt()));
70+
long createdAt = depositedTxns.getCreatedAt();
71+
holder.mCreatedAtTextView.setText(CalendarUtils.getFriendlyDayString(mContext,createdAt));
72+
if(depositedTxns.isLateDeposit()){
73+
holder.mDepositItemLayout.setBackgroundColor(mLateDepositBgColor);
74+
}else{
75+
holder.mDepositItemLayout.setBackgroundColor(1);//white
76+
}
6377
holder.mOfficerTextView.setText(Officer.getOfficerFromId(mContext, depositedTxns.getOfficer_id()).getName());
6478
if(!depositedTxns.getNarration().equals("")) {
6579
holder.mRemarksTextView.setText(depositedTxns.getNarration());
6680
holder.mRemarksTextView.setVisibility(View.VISIBLE);
81+
}else{
82+
holder.mRemarksTextView.setVisibility(View.GONE);
6783
}
84+
6885
}
6986

7087
// Return the size of your dataset (invoked by the layout manager)
@@ -73,7 +90,7 @@ public int getItemCount() {
7390
return mDepositedTxnList.size();
7491
}
7592

76-
public void onMakeDepositClick(View view, LayoutInflater inflater) {
93+
void onMakeDepositClick(View view, LayoutInflater inflater) {
7794
//Get Next deposit Month
7895
Calendar depositMonth = mMember.getNextDepositMonthCalendar(mDepositedTxnList);
7996

@@ -89,6 +106,10 @@ public void onMakeDepositClick(View view, LayoutInflater inflater) {
89106
public void onClick(DialogInterface dialog, int which) {
90107
String remarks = ((EditText) remarks_dialog_content.findViewById(R.id.txtRemarks)).getText().toString();
91108
makeDeposit(nextDepositMonth.getTimeInMillis(), remarks);
109+
if (onMakeDepositListener != null) {
110+
onMakeDepositListener.onMakeDeposit();
111+
}
112+
92113
}
93114
});
94115
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@@ -124,18 +145,18 @@ public void makeDeposit(long depositMonth, String remarks) {
124145
// you provide access to all the views for a data item in a view holder
125146
public class ViewHolder extends RecyclerView.ViewHolder {
126147
// each data item is just a string in this case
127-
public LinearLayout mDepositItemLayout;
128-
// public TextView mAmountTextView;
129-
public TextView mCreatedAtTextView;
130-
public TextView mOfficerTextView;
131-
public TextView mRemarksTextView;
132-
public TextView mMonthTextView;
148+
LinearLayout mDepositItemLayout;
149+
// TextView mAmountTextView;
150+
TextView mCreatedAtTextView;
151+
TextView mOfficerTextView;
152+
TextView mRemarksTextView;
153+
TextView mMonthTextView;
133154

134155
public ViewHolder(View v) {
135156
super(v);
136157
mDepositItemLayout = (LinearLayout) v.findViewById(R.id.deposit_item_layout);
137158
mMonthTextView = (TextView) mDepositItemLayout.findViewById(R.id.depositMonth);
138-
// mAmountTextView = (TextView) mDepositItemLayout.findViewById(R.id.depositAmount);
159+
// mAmountTextView = (TextView) mDepositItemLayout.findViewById(R.id.depositAmount);
139160
mCreatedAtTextView = (TextView) mDepositItemLayout.findViewById(R.id.depositCreatedAt);
140161
mOfficerTextView = (TextView) mDepositItemLayout.findViewById(R.id.depositOfficer);
141162
mRemarksTextView = (TextView) mDepositItemLayout.findViewById(R.id.depositRemarks);

app/src/main/java/com/razikallayi/suraksha/deposit/DepositFragment.java

+30-9
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
import com.razikallayi.suraksha.R;
1616
import com.razikallayi.suraksha.member.Member;
17+
import com.razikallayi.suraksha.utils.Utility;
1718

1819
public class DepositFragment extends Fragment {
1920
public static final String TAG = DepositFragment.class.getSimpleName();
@@ -22,10 +23,10 @@ public class DepositFragment extends Fragment {
2223
* represents.
2324
*/
2425
public static final String ARG_ACCOUNT_NUMBER = "account_number";
25-
private int mAccountNumber;
2626
private Context mContext;
27-
private RecyclerView mDepositRecyclerView;
2827
private Member mMember;
28+
private TextView mNoOfDeposits;
29+
private TextView mTotalDepositAmount;
2930

3031
public DepositFragment() {
3132
// Required empty public constructor
@@ -37,20 +38,26 @@ public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bun
3738
mContext = getContext();
3839

3940
final View rootView = inflater.inflate(R.layout.deposit_fragment, container, false);
40-
mDepositRecyclerView = (RecyclerView) rootView.findViewById(R.id.deposited_list);
41-
mDepositRecyclerView.setHasFixedSize(true);
41+
RecyclerView depositRecyclerView = (RecyclerView) rootView.findViewById(R.id.deposited_list);
42+
depositRecyclerView.setHasFixedSize(true);
4243

4344
// // use a linear layout manager
4445
LinearLayoutManager layoutManager = new LinearLayoutManager(mContext);
45-
mDepositRecyclerView.setLayoutManager(layoutManager);
46+
depositRecyclerView.setLayoutManager(layoutManager);
4647

4748
// use a grid layout manager with 4 columns
4849
// GridLayoutManager layoutManager = new GridLayoutManager(mContext, 4);
49-
// mDepositRecyclerView.setLayoutManager(layoutManager);
50+
// depositRecyclerView.setLayoutManager(layoutManager);
5051

5152
//get AccountNumber From Intent
52-
mAccountNumber = getArguments().getInt(ARG_ACCOUNT_NUMBER);
53-
mMember = Member.getMemberFromAccountNumber(mContext, mAccountNumber);
53+
int accountNumber = getArguments().getInt(ARG_ACCOUNT_NUMBER);
54+
mMember = Member.getMemberFromAccountNumber(mContext, accountNumber);
55+
56+
mNoOfDeposits = (TextView) rootView.findViewById(R.id.tvNoOfDeposits);
57+
int depositCount = mMember.getTotalDeposits(mContext);
58+
mNoOfDeposits.setText(String.valueOf(depositCount));
59+
mTotalDepositAmount = (TextView) rootView.findViewById(R.id.tvTotalDepositAmount);
60+
mTotalDepositAmount.setText(Utility.formatAmountInRupees(mContext,depositCount * Utility.getMonthlyDepositAmount()));
5461

5562
TextView memberNameTv = (TextView) rootView.findViewById(R.id.depositMemberName);
5663
memberNameTv.setText(mMember.getName());
@@ -59,7 +66,7 @@ public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bun
5966

6067
// specify an adapter
6168
final DepositAdapter depositAdapter = new DepositAdapter(getContext(), mMember);
62-
mDepositRecyclerView.setAdapter(depositAdapter);
69+
depositRecyclerView.setAdapter(depositAdapter);
6370

6471
Button makeDepositBtn = (Button) rootView.findViewById(R.id.makeDepositButton);
6572
if (makeDepositBtn != null) {
@@ -71,6 +78,20 @@ public void onClick(View view) {
7178
});
7279
}
7380

81+
depositAdapter.setOnMakeDepositListener(new OnMakeDepositListener() {
82+
@Override
83+
public void onMakeDeposit() {
84+
int depositCount = mMember.getTotalDeposits(mContext);
85+
mNoOfDeposits.setText(String.valueOf(depositCount));
86+
mTotalDepositAmount.setText(Utility.formatAmountInRupees(mContext,depositCount * Utility.getMonthlyDepositAmount()));
87+
}
88+
});
89+
7490
return rootView;
7591
}
92+
93+
// The callback interface
94+
public interface OnMakeDepositListener {
95+
void onMakeDeposit();
96+
}
7697
}

app/src/main/java/com/razikallayi/suraksha/member/Member.java

+51-33
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import com.razikallayi.suraksha.utils.WordUtils;
1818

1919
import java.io.Serializable;
20-
import java.util.ArrayList;
2120
import java.util.Calendar;
2221
import java.util.List;
2322

@@ -49,7 +48,7 @@ public class Member implements Serializable {
4948
private long closedAt;
5049
private long createdAt;
5150
private long updatedAt;
52-
private List<Integer> accountNumbers = null;
51+
// private List<Integer> accountNumbers = null;
5352

5453

5554
public Member() {
@@ -183,16 +182,16 @@ public static ContentValues getMemberContentValues(Member member) {
183182
return values;
184183
}
185184

186-
public static List<Transaction> fetchDeposits(Context context, String accountNumber) {
187-
Cursor cursor = context.getContentResolver().query(
188-
SurakshaContract.TxnEntry.buildFetchAllDepositsUri(),
189-
Transaction.TxnQuery.PROJECTION,
190-
SurakshaContract.TxnEntry.COLUMN_LEDGER + "= ? AND "
191-
+ SurakshaContract.TxnEntry.COLUMN_FK_ACCOUNT_NUMBER + "= ?",
192-
new String[]{String.valueOf(SurakshaContract.TxnEntry.DEPOSIT_LEDGER), accountNumber},
193-
SurakshaContract.TxnEntry.COLUMN_CREATED_AT + " DESC");
194-
return Transaction.getTxnListFromCursor(context, cursor);
195-
}
185+
// public static List<Transaction> fetchDeposits(Context context, String accountNumber) {
186+
// Cursor cursor = context.getContentResolver().query(
187+
// SurakshaContract.TxnEntry.buildFetchAllDepositsUri(),
188+
// Transaction.TxnQuery.PROJECTION,
189+
// SurakshaContract.TxnEntry.COLUMN_LEDGER + "= ? AND "
190+
// + SurakshaContract.TxnEntry.COLUMN_FK_ACCOUNT_NUMBER + "= ?",
191+
// new String[]{String.valueOf(SurakshaContract.TxnEntry.DEPOSIT_LEDGER), accountNumber},
192+
// SurakshaContract.TxnEntry.COLUMN_CREATED_AT + " DESC");
193+
// return Transaction.getTxnListFromCursor(context, cursor);
194+
// }
196195

197196
//Get count of all active members
198197
public static int getActiveMembersCount(Context context) {
@@ -303,7 +302,7 @@ public boolean hasLoanDue(Context context) {
303302
// LoanIssued date
304303
LoanIssue loanIssued = getActiveLoan(context);
305304
Calendar nextInstalmentCalendar = getNextInstalmentCalendar(context, loanIssued);
306-
return nextInstalmentCalendar != null && CalendarUtils.getDueDate() >= nextInstalmentCalendar.getTimeInMillis();
305+
return nextInstalmentCalendar != null && CalendarUtils.getDepositStartDay() >= nextInstalmentCalendar.getTimeInMillis();
307306
}
308307
}
309308

@@ -336,12 +335,12 @@ public Calendar getNextDepositMonthCalendar(Context context) {
336335
}
337336

338337
public boolean hasDepositDue(Context context) {
339-
if (!CalendarUtils.isDueDate()) {
338+
if (!CalendarUtils.isDepositStartDay()) {
340339
return false;
341340
}
342341
Calendar nextDepositMonth = getNextDepositMonthCalendar(context);
343342
nextDepositMonth.set(Calendar.DATE, CalendarUtils.getDueDay());
344-
return CalendarUtils.getDueDate() >= CalendarUtils.normalizeDate(nextDepositMonth.getTimeInMillis());
343+
return CalendarUtils.getDepositStartDay() >= CalendarUtils.normalizeDate(nextDepositMonth.getTimeInMillis());
345344
}
346345

347346
public List<Transaction> fetchDeposits(Context context) {
@@ -356,27 +355,46 @@ public List<Transaction> fetchDeposits(Context context) {
356355
return Transaction.getTxnListFromCursor(context, cursor);
357356
}
358357

359-
@Deprecated
360-
public List<Integer> fetchAccountNumbers(Context context) {
361-
List<Integer> acNumbers = new ArrayList<>();
362-
//Fetching accountNumbers
363-
Cursor cursorAccountNumbers = context.getContentResolver().query(
364-
SurakshaContract.AccountEntry.buildAccountsOfMemberUri(this.id), new String[]{
365-
SurakshaContract.AccountEntry.TABLE_NAME + "."
366-
+ SurakshaContract.AccountEntry.COLUMN_ACCOUNT_NUMBER}, null, null, null);
367-
if (cursorAccountNumbers != null) {
368-
while (cursorAccountNumbers.moveToNext()) {
369-
acNumbers.add(cursorAccountNumbers.getInt(0));
370-
}
371-
cursorAccountNumbers.close();
358+
public int getTotalDeposits(Context context) {
359+
Cursor cursor = context.getContentResolver().query(
360+
SurakshaContract.TxnEntry.buildFetchAllDepositsUri(),
361+
new String[]{
362+
SurakshaContract.TxnEntry.TABLE_NAME + "." + SurakshaContract.TxnEntry._ID} ,
363+
SurakshaContract.TxnEntry.COLUMN_LEDGER + "= ? AND "
364+
+ SurakshaContract.TxnEntry.COLUMN_FK_ACCOUNT_NUMBER + "= ?",
365+
new String[]{String.valueOf(SurakshaContract.TxnEntry.DEPOSIT_LEDGER),
366+
String.valueOf(accountNo)},null);
367+
368+
if (cursor==null || cursor.getCount() <= 0) {
369+
return 0;
370+
}else {
371+
int count = cursor.getCount();
372+
cursor.close();
373+
return count;
372374
}
373-
this.accountNumbers = acNumbers;
374-
return acNumbers;
375375
}
376376

377-
public List<Integer> getAccountNumbers() {
378-
return accountNumbers;
379-
}
377+
// @Deprecated
378+
// public List<Integer> fetchAccountNumbers(Context context) {
379+
// List<Integer> acNumbers = new ArrayList<>();
380+
// //Fetching accountNumbers
381+
// Cursor cursorAccountNumbers = context.getContentResolver().query(
382+
// SurakshaContract.AccountEntry.buildAccountsOfMemberUri(this.id), new String[]{
383+
// SurakshaContract.AccountEntry.TABLE_NAME + "."
384+
// + SurakshaContract.AccountEntry.COLUMN_ACCOUNT_NUMBER}, null, null, null);
385+
// if (cursorAccountNumbers != null) {
386+
// while (cursorAccountNumbers.moveToNext()) {
387+
// acNumbers.add(cursorAccountNumbers.getInt(0));
388+
// }
389+
// cursorAccountNumbers.close();
390+
// }
391+
// this.accountNumbers = acNumbers;
392+
// return acNumbers;
393+
// }
394+
395+
// public List<Integer> getAccountNumbers() {
396+
// return accountNumbers;
397+
// }
380398

381399
public byte[] getAvatar() {
382400
return ImageUtils.drawableToByteArray(avatar);

app/src/main/java/com/razikallayi/suraksha/txn/Transaction.java

+9
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import java.io.Serializable;
1111
import java.util.ArrayList;
12+
import java.util.Calendar;
1213
import java.util.List;
1314

1415
/**
@@ -130,6 +131,14 @@ public static Double getTotalLoanReturn(Context context) {
130131
}
131132

132133

134+
public boolean isLateDeposit(){
135+
Calendar depositForDate = Calendar.getInstance();
136+
depositForDate.setTimeInMillis(this.depositForDate);
137+
depositForDate.add(Calendar.DAY_OF_MONTH,15);
138+
return createdAt > depositForDate.getTimeInMillis();
139+
}
140+
141+
133142
public static List<Transaction> getTxnListFromCursor(Context context, Cursor c) {
134143
List<Transaction> txnList = new ArrayList<>();
135144
if (c.getCount() <= 0) {

0 commit comments

Comments
 (0)