Skip to content

Commit a1ba63d

Browse files
committed
Add orders and download PDF
1 parent a718a37 commit a1ba63d

28 files changed

+625
-194
lines changed

android/.idea/dictionaries/iramml.xml

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

android/app/src/main/AndroidManifest.xml

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:tools="http://schemas.android.com/tools"
34
package="com.iramml.bookstore.app">
45

56
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
@@ -14,8 +15,9 @@
1415
android:roundIcon="@mipmap/ic_launcher_round"
1516
android:supportsRtl="true"
1617
android:theme="@style/AppTheme"
17-
android:usesCleartextTraffic="true">
18-
18+
android:usesCleartextTraffic="true"
19+
tools:targetApi="m">
20+
<activity android:name=".activity.OrderDetailActivity"></activity>
1921
<activity
2022
android:name=".activity.BookDetailsActivity"
2123
android:parentActivityName=".activity.HomeActivity"

android/app/src/main/java/com/iramml/bookstore/app/activity/BookDetailsActivity.java

+4-10
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import androidx.appcompat.app.AppCompatActivity;
55
import androidx.appcompat.widget.Toolbar;
66

7-
import android.content.Intent;
87
import android.os.Bundle;
98
import android.util.Log;
109
import android.view.View;
@@ -18,16 +17,11 @@
1817
import com.iramml.bookstore.app.api.BookStoreAPI;
1918
import com.iramml.bookstore.app.fragment.BottomSheetBuyPDF;
2019
import com.iramml.bookstore.app.fragment.BottomSheetBuyPhysic;
21-
import com.iramml.bookstore.app.interfaces.HttpResponse;
20+
import com.iramml.bookstore.app.listener.HttpResponseListener;
2221
import com.iramml.bookstore.app.model.Book;
2322
import com.iramml.bookstore.app.model.BookDetailResponse;
24-
import com.iramml.bookstore.app.model.BooksResponse;
25-
import com.iramml.bookstore.app.model.GenericResponse;
2623
import com.squareup.picasso.Picasso;
2724

28-
import java.util.HashMap;
29-
import java.util.Map;
30-
3125
public class BookDetailsActivity extends AppCompatActivity {
3226
private ImageView ivBook;
3327
private TextView tvBookName, tvCategoryName, tvPrice, tvDescription;
@@ -96,11 +90,10 @@ private void initToolbar() {
9690
}
9791

9892
private void getProductDetails() {
99-
bookStoreAPI.getBookDetailsByID(bookID, new HttpResponse() {
93+
bookStoreAPI.getBookDetailsByID(bookID, new HttpResponseListener() {
10094
@Override
10195
public void httpResponseSuccess(String response) {
10296
Gson gson = new Gson();
103-
Log.d("BOOK_DETAILS_RES", "httpResponseSuccess: " + response);
10497
BookDetailResponse responseObject = gson.fromJson(response, BookDetailResponse.class);
10598

10699
if (responseObject.getCode().equals("200")) {
@@ -120,6 +113,7 @@ private void setDetails() {
120113
Picasso.get().load(bookDetails.getImageURL()).placeholder(R.drawable.placeholder).into(ivBook);
121114

122115
tvBookName.setText(bookDetails.getTitle());
116+
tvCategoryName.setText(bookDetails.getCategory_name());
123117
tvPrice.setText(String.format("$%s", bookDetails.getCost()));
124118
tvDescription.setText(bookDetails.getDescription());
125119

@@ -130,7 +124,7 @@ private void setDetails() {
130124
if (stock > 0)
131125
btnBuyPhysical.setVisibility(View.VISIBLE);
132126

133-
bottomSheetBuyPDF = BottomSheetBuyPDF.newInstance("PDF bottom sheet", bookID, bookDetails.getTitle());
127+
bottomSheetBuyPDF = BottomSheetBuyPDF.newInstance("PDF bottom sheet", bookID, bookDetails.getTitle(), bookDetails.getBookPDFURL());
134128
bottomSheetBuyPhysic = BottomSheetBuyPhysic.newInstance("Physic bottom sheet", bookID, bookDetails.getTitle());
135129
}
136130

android/app/src/main/java/com/iramml/bookstore/app/activity/EditProfile.java

+12-11
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,19 @@
77
import android.provider.MediaStore;
88
import androidx.annotation.Nullable;
99
import com.google.android.material.textfield.TextInputEditText;
10-
import androidx.appcompat.app.ActionBar;
10+
1111
import androidx.appcompat.app.AppCompatActivity;
1212
import android.os.Bundle;
1313
import androidx.cardview.widget.CardView;
14-
import androidx.appcompat.widget.Toolbar;
14+
1515
import android.util.Base64;
1616
import android.view.View;
1717
import android.widget.Toast;
1818

1919
import com.android.volley.VolleyError;
2020
import com.iramml.bookstore.app.api.BookStoreAPI;
2121
import com.iramml.bookstore.app.common.Common;
22-
import com.iramml.bookstore.app.interfaces.HttpResponse;
22+
import com.iramml.bookstore.app.listener.HttpResponseListener;
2323
import com.iramml.bookstore.app.R;
2424
import com.karumi.dexter.Dexter;
2525
import com.karumi.dexter.MultiplePermissionsReport;
@@ -42,7 +42,7 @@ public class EditProfile extends AppCompatActivity {
4242
private CardView cvBack;
4343
private CircleImageView ivAvatar;
4444

45-
private final int PERMISSION_PICK_IMG=200;
45+
private final int PERMISSION_PICK_IMG = 200;
4646
private Bitmap bitmapAvatar;
4747
private BookStoreAPI bookStoreAPI;
4848

@@ -56,18 +56,18 @@ protected void onCreate(Bundle savedInstanceState) {
5656
setValues();
5757
}
5858

59-
private void initViews(){
59+
private void initViews() {
6060
etFirstName = findViewById(R.id.et_first_name);
6161
etLastName = findViewById(R.id.et_last_name);
6262
ivAvatar = findViewById(R.id.iv_avatar);
6363
cvBack = findViewById(R.id.cv_back);
6464
}
6565

66-
private void initListeners(){
66+
private void initListeners() {
6767
ivAvatar.setOnClickListener(new View.OnClickListener() {
6868
@Override
6969
public void onClick(View v) {
70-
openImageFromGalery();
70+
openImageFromGallery();
7171
}
7272
});
7373
cvBack.setOnClickListener(new View.OnClickListener() {
@@ -88,8 +88,8 @@ private void setValues() {
8888
etLastName.setText(Common.currentUser.getLast_name());
8989
}
9090

91-
private void openImageFromGalery(){
92-
Dexter.withActivity(this)
91+
private void openImageFromGallery() {
92+
Dexter.withContext(this)
9393
.withPermissions(Manifest.permission.READ_EXTERNAL_STORAGE,
9494
Manifest.permission.WRITE_EXTERNAL_STORAGE)
9595
.withListener(new MultiplePermissionsListener() {
@@ -113,6 +113,7 @@ public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissio
113113

114114
@Override
115115
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
116+
super.onActivityResult(requestCode, resultCode, data);
116117
if (resultCode == RESULT_OK && requestCode == PERMISSION_PICK_IMG) {
117118
try {
118119
bitmapAvatar = MediaStore.Images.Media.getBitmap(this.getContentResolver(), data.getData());
@@ -125,7 +126,7 @@ protected void onActivityResult(int requestCode, int resultCode, @Nullable Inten
125126
postMap.put("image", getStringImage(bitmapAvatar));
126127
final AlertDialog waitingDialog = new SpotsDialog.Builder().setContext(EditProfile.this).build();
127128
waitingDialog.show();
128-
bookStoreAPI.uploadAvatar(postMap, new HttpResponse() {
129+
bookStoreAPI.uploadAvatar(postMap, new HttpResponseListener() {
129130
@Override
130131
public void httpResponseSuccess(String response) {
131132
waitingDialog.dismiss();
@@ -140,7 +141,7 @@ public void httpResponseError(VolleyError error) {
140141
}
141142
}
142143

143-
public String getStringImage(Bitmap bitmap){
144+
public String getStringImage(Bitmap bitmap) {
144145
ByteArrayOutputStream baos = new ByteArrayOutputStream();
145146
bitmap.compress(Bitmap.CompressFormat.PNG,100, baos);
146147
byte [] b = baos.toByteArray();

android/app/src/main/java/com/iramml/bookstore/app/activity/HomeActivity.java

+25-35
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import com.iramml.bookstore.app.fragment.BooksFragment;
2323
import com.iramml.bookstore.app.fragment.DomicilesFragment;
2424
import com.iramml.bookstore.app.fragment.OrdersFragment;
25-
import com.iramml.bookstore.app.interfaces.HttpResponse;
25+
import com.iramml.bookstore.app.listener.HttpResponseListener;
2626
import com.iramml.bookstore.app.R;
2727
import com.google.gson.Gson;
2828
import com.iramml.bookstore.app.model.UserResponse;
@@ -48,10 +48,10 @@ protected void onCreate(Bundle savedInstanceState) {
4848
}
4949

5050
private void getCurrentProfile() {
51-
bookStoreAPI.getCurrentUser(new HttpResponse() {
51+
bookStoreAPI.getCurrentUser(new HttpResponseListener() {
5252
@Override
5353
public void httpResponseSuccess(String response) {
54-
Gson gson=new Gson();
54+
Gson gson = new Gson();
5555
Log.d("PROFILE_RESPONSE", "httpResponseSuccess: " + response);
5656
UserResponse responseObject = gson.fromJson(response, UserResponse.class);
5757

@@ -89,23 +89,7 @@ public void initDrawer() {
8989
if (Common.currentUser.getImageURL() != null && !Common.currentUser.getImageURL().equals(""))
9090
Picasso.get().load(Common.currentUser.getImageURL()).into(imgAvatar);
9191

92-
FragmentTransaction fragmentTransaction = this.getSupportFragmentManager().beginTransaction();
93-
if (itemSelected == 0){
94-
navigationView.setCheckedItem(R.id.nav_search);
95-
BooksFragment booksFragment = new BooksFragment();
96-
fragmentTransaction.replace(R.id.flContent, booksFragment);
97-
}else if(itemSelected == 1) {
98-
navigationView.setCheckedItem(R.id.nav_orders);
99-
OrdersFragment ordersFragment = new OrdersFragment();
100-
fragmentTransaction.replace(R.id.flContent, ordersFragment);
101-
}else if(itemSelected == 2) {
102-
navigationView.setCheckedItem(R.id.nav_domiciles);
103-
DomicilesFragment domicilesFragment = new DomicilesFragment();
104-
fragmentTransaction.replace(R.id.flContent, domicilesFragment);
105-
}
106-
107-
fragmentTransaction.commit();
108-
92+
replaceFragment(itemSelected);
10993
}
11094

11195
@Override
@@ -118,38 +102,29 @@ public void onBackPressed() {
118102
}
119103
}
120104

121-
@SuppressWarnings("StatementWithEmptyBody")
122105
@Override
123106
public boolean onNavigationItemSelected(MenuItem item) {
124-
FragmentTransaction fragmentTransaction = this.getSupportFragmentManager().beginTransaction();
125-
126-
int id = item.getItemId();
127-
switch (id){
107+
switch (item.getItemId()){
128108
case R.id.nav_search:
129-
fragmentTransaction.replace(R.id.flContent, new BooksFragment());
130-
fragmentTransaction.commit();
109+
replaceFragment(0);
131110
break;
132111
case R.id.nav_orders:
133-
fragmentTransaction.replace(R.id.flContent, new OrdersFragment());
134-
fragmentTransaction.commit();
112+
replaceFragment(1);
135113
break;
136114
case R.id.nav_domiciles:
137-
fragmentTransaction.replace(R.id.flContent, new DomicilesFragment());
138-
fragmentTransaction.commit();
115+
replaceFragment(2);
139116
break;
140117
case R.id.nav_profile:
141118
goToProfile();
142119
break;
143120
case R.id.nav_log_out:
144121
logout();
145122
break;
146-
default:
147-
fragmentTransaction.replace(R.id.flContent, new BooksFragment());
148-
fragmentTransaction.commit();
149-
break;
150123
}
124+
151125
item.setChecked(true);
152126
setTitle(item.getTitle());
127+
153128
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
154129
drawer.closeDrawer(GravityCompat.START);
155130
return true;
@@ -166,4 +141,19 @@ private void logout() {
166141
startActivity(intent);
167142
finish();
168143
}
144+
145+
private void replaceFragment(int fragmentIndex){
146+
FragmentTransaction fragmentTransaction = this.getSupportFragmentManager().beginTransaction();
147+
switch (fragmentIndex){
148+
case 1:
149+
fragmentTransaction.replace(R.id.flContent, new OrdersFragment());
150+
break;
151+
case 2:
152+
fragmentTransaction.replace(R.id.flContent, new DomicilesFragment());
153+
break;
154+
default:
155+
fragmentTransaction.replace(R.id.flContent, new BooksFragment());
156+
}
157+
fragmentTransaction.commit();
158+
}
169159
}

0 commit comments

Comments
 (0)