.
This commit is contained in:
@@ -4,7 +4,9 @@ import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.net.Uri;
|
||||
import android.os.Handler;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
@@ -31,6 +33,7 @@ import java.util.ArrayList;
|
||||
|
||||
public abstract class AppUtil {
|
||||
|
||||
public static final String IMAGE_BASE_URL = "https://simplitend.betadelivery.com/storage/upload/";
|
||||
private static final String TAG = "AppUtil";
|
||||
|
||||
// fields
|
||||
@@ -269,4 +272,10 @@ public abstract class AppUtil {
|
||||
saveCgData(null, -1, context);
|
||||
setWantSecurityFlag(context, NOT_ASKED_CG_SECURITY);
|
||||
}
|
||||
|
||||
public static void dialPhone(Activity activity, String phone_number) {
|
||||
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel",
|
||||
phone_number, null));
|
||||
if (activity != null) activity.startActivity(intent);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.ssb.simplitend.articles;
|
||||
|
||||
import com.ssb.simplitend.welcome.welcomepatient.mvvm.models.CallResponse;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import retrofit2.Call;
|
||||
import retrofit2.http.GET;
|
||||
|
||||
public interface ArticleApiService {
|
||||
|
||||
@GET("api/get-list-of-news-articles")
|
||||
Call<CallResponse<ArrayList<ArticleResult>>> getArticles();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.ssb.simplitend.articles;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public interface ArticleContracts {
|
||||
|
||||
interface GetArticleCallback{
|
||||
void onArticlesFetched(ArrayList<ArticleResult> articleResults);
|
||||
|
||||
void onArticleFetchFailed(Throwable t, String message);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.ssb.simplitend.articles;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.ssb.simplitend.apputils.RetrofitHelper;
|
||||
import com.ssb.simplitend.welcome.welcomepatient.mvvm.models.CallResponse;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
public class ArticlePresenter {
|
||||
|
||||
private static ArticlePresenter articlePresenter;
|
||||
|
||||
private ArticleApiService apiService;
|
||||
|
||||
private ArticlePresenter(){
|
||||
this.apiService = RetrofitHelper.getRetrofit()
|
||||
.create(ArticleApiService.class);
|
||||
}
|
||||
|
||||
public static synchronized ArticlePresenter getArticlePresenter() {
|
||||
if (articlePresenter == null) {
|
||||
articlePresenter = new ArticlePresenter();
|
||||
}
|
||||
|
||||
return articlePresenter;
|
||||
}
|
||||
|
||||
public void getArticles(@NonNull ArticleContracts.GetArticleCallback getArticleCallback){
|
||||
apiService.getArticles()
|
||||
.enqueue(new Callback<CallResponse<ArrayList<ArticleResult>>>() {
|
||||
@Override
|
||||
public void onResponse(Call<CallResponse<ArrayList<ArticleResult>>> call, Response<CallResponse<ArrayList<ArticleResult>>> response) {
|
||||
if (response.body() != null){
|
||||
if (response.body().status != 200 || response.body().result == null){
|
||||
getArticleCallback.onArticleFetchFailed(new Exception(), response.body().message);
|
||||
return;
|
||||
}
|
||||
|
||||
getArticleCallback.onArticlesFetched(response.body().result);
|
||||
}else{
|
||||
getArticleCallback.onArticleFetchFailed(new Exception(), "Please try again later.");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<CallResponse<ArrayList<ArticleResult>>> call, Throwable t) {
|
||||
getArticleCallback.onArticleFetchFailed(new Exception(), "Please try again later.");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.ssb.simplitend.articles;
|
||||
|
||||
class ArticleCategory{
|
||||
public int id;
|
||||
public String title;
|
||||
}
|
||||
|
||||
public class ArticleResult{
|
||||
public int id;
|
||||
public String article_category_xid;
|
||||
public String article_title;
|
||||
public String article_detail;
|
||||
public String article_link;
|
||||
public String article_author;
|
||||
public String article_datetime;
|
||||
public String small_image;
|
||||
public String large_image;
|
||||
public String tags;
|
||||
public String active;
|
||||
public String deleted_at;
|
||||
public String created_by;
|
||||
public String updated_by;
|
||||
public String created_at;
|
||||
public String updated_at;
|
||||
public ArticleCategory article_category;
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
package com.ssb.simplitend.articles;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.webkit.WebSettings;
|
||||
import android.webkit.WebViewClient;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.ssb.simplitend.R;
|
||||
import com.ssb.simplitend.databinding.ActivityArticleShowerBinding;
|
||||
|
||||
public class ArticleShowerActivity extends AppCompatActivity {
|
||||
|
||||
protected ActivityArticleShowerBinding binding;
|
||||
|
||||
private String url, title;
|
||||
|
||||
public static final String ARTICLE_URL_KEY = "article_url";
|
||||
public static final String ARTICLE_TITLE = "article_title";
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
binding = ActivityArticleShowerBinding.inflate(getLayoutInflater());
|
||||
setContentView(binding.getRoot());
|
||||
|
||||
initViews();
|
||||
|
||||
clickEvents();
|
||||
|
||||
}
|
||||
|
||||
private void initViews() {
|
||||
|
||||
Intent intent = getIntent();
|
||||
if (intent != null){
|
||||
url = intent.getStringExtra(ARTICLE_URL_KEY);
|
||||
title = intent.getStringExtra(ARTICLE_TITLE);
|
||||
if (title != null){
|
||||
binding.toolbar.setTitle(title);
|
||||
}
|
||||
|
||||
loadUrl();
|
||||
}
|
||||
}
|
||||
|
||||
private void loadUrl() {
|
||||
if (url == null){
|
||||
Toast.makeText(this, "Couldn't load the article.", Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
binding.webView.getSettings().setJavaScriptEnabled(true);
|
||||
binding.webView.getSettings().setBuiltInZoomControls(true);
|
||||
binding.webView.getSettings().setDisplayZoomControls(false);
|
||||
|
||||
binding.webView.setWebViewClient(new WebViewClient());
|
||||
|
||||
binding.webView.loadUrl(url);
|
||||
}
|
||||
|
||||
private void clickEvents() {
|
||||
binding.toolbar.setNavigationOnClickListener(v -> {
|
||||
onBackPressed();
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
package com.ssb.simplitend.articles;
|
||||
|
||||
import static com.ssb.simplitend.articles.ArticleShowerActivity.ARTICLE_TITLE;
|
||||
import static com.ssb.simplitend.articles.ArticleShowerActivity.ARTICLE_URL_KEY;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.ssb.simplitend.R;
|
||||
import com.ssb.simplitend.databinding.ActivityArticlesBinding;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class ArticlesActivity extends AppCompatActivity
|
||||
implements ArticlesAdapter.ArticleClickListener, ArticleContracts.GetArticleCallback {
|
||||
|
||||
protected ActivityArticlesBinding binding;
|
||||
|
||||
private ArticlePresenter presenter;
|
||||
|
||||
private ArticlesAdapter articlesAdapter;
|
||||
|
||||
private ProgressDialog progressDialog;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
binding = ActivityArticlesBinding.inflate(getLayoutInflater());
|
||||
setContentView(binding.getRoot());
|
||||
|
||||
presenter = ArticlePresenter.getArticlePresenter();
|
||||
|
||||
initViews();
|
||||
|
||||
clickEvents();
|
||||
|
||||
getArticles();
|
||||
|
||||
}
|
||||
|
||||
private void getArticles() {
|
||||
progressDialog.setTitle("Please wait...");
|
||||
progressDialog.setMessage("while we fetch the articles");
|
||||
progressDialog.setCancelable(false);
|
||||
progressDialog.show();
|
||||
|
||||
presenter.getArticles(this);
|
||||
}
|
||||
|
||||
private void initViews() {
|
||||
|
||||
progressDialog = new ProgressDialog(this);
|
||||
|
||||
binding.articlesRv.setLayoutManager(new LinearLayoutManager(this));
|
||||
articlesAdapter = new ArticlesAdapter(this);
|
||||
binding.articlesRv.setAdapter(articlesAdapter);
|
||||
}
|
||||
|
||||
private void clickEvents() {
|
||||
binding.backBtn.setOnClickListener(v -> {
|
||||
onBackPressed();
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onArticleClick(ArticleResult articleResult) {
|
||||
Intent intent = new Intent(this, ArticleShowerActivity.class);
|
||||
intent.putExtra(ARTICLE_URL_KEY, articleResult.article_link);
|
||||
intent.putExtra(ARTICLE_TITLE, articleResult.article_title);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onArticlesFetched(ArrayList<ArticleResult> articleResults) {
|
||||
progressDialog.dismiss();
|
||||
|
||||
articlesAdapter.submitList(articleResults);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onArticleFetchFailed(Throwable t, String message) {
|
||||
progressDialog.dismiss();
|
||||
|
||||
Toast.makeText(this, "" + message, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
package com.ssb.simplitend.articles;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.DiffUtil;
|
||||
import androidx.recyclerview.widget.ListAdapter;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.ssb.simplitend.apputils.AppUtil;
|
||||
import com.ssb.simplitend.databinding.ArticleViewHolderBinding;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
import java.util.TimeZone;
|
||||
|
||||
public class ArticlesAdapter extends ListAdapter<ArticleResult, ArticlesAdapter.ArticleViewHOlder> {
|
||||
|
||||
private final ArticleClickListener articleClickListener;
|
||||
|
||||
private static final DiffUtil.ItemCallback<ArticleResult> DIFF_UTIL = new DiffUtil.ItemCallback<ArticleResult>() {
|
||||
@Override
|
||||
public boolean areItemsTheSame(@NonNull ArticleResult oldItem, @NonNull ArticleResult newItem) {
|
||||
return oldItem.id == newItem.id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean areContentsTheSame(@NonNull ArticleResult oldItem, @NonNull ArticleResult newItem) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
public ArticlesAdapter(@NonNull ArticleClickListener articleClickListener){
|
||||
super(DIFF_UTIL);
|
||||
this.articleClickListener = articleClickListener;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ArticleViewHOlder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
ArticleViewHolderBinding binding = ArticleViewHolderBinding.inflate(
|
||||
LayoutInflater.from(parent.getContext()),
|
||||
parent, false);
|
||||
return new ArticleViewHOlder(binding);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull ArticleViewHOlder holder, int position) {
|
||||
holder.setData(getItem(position));
|
||||
|
||||
holder.binding.card.setOnClickListener(v -> {
|
||||
articleClickListener.onArticleClick(getItem(position));
|
||||
});
|
||||
}
|
||||
|
||||
public static class ArticleViewHOlder extends RecyclerView.ViewHolder{
|
||||
public ArticleViewHolderBinding binding;
|
||||
|
||||
public ArticleViewHOlder(@NonNull ArticleViewHolderBinding binding) {
|
||||
super(binding.getRoot());
|
||||
this.binding = binding;
|
||||
}
|
||||
|
||||
public void setData(ArticleResult articleResult){
|
||||
if (articleResult == null) return;
|
||||
|
||||
Glide.with(itemView.getContext())
|
||||
.load(AppUtil.IMAGE_BASE_URL + articleResult.large_image)
|
||||
.placeholder(android.R.color.darker_gray)
|
||||
.error(android.R.color.darker_gray)
|
||||
.into(binding.articleImg);
|
||||
|
||||
if (articleResult.article_title == null){
|
||||
articleResult.article_title = "No title";
|
||||
}
|
||||
|
||||
binding.title.setText(articleResult.article_title);
|
||||
|
||||
if (articleResult.article_author == null){
|
||||
articleResult.article_author = "No author";
|
||||
}
|
||||
|
||||
binding.authorName.setText(articleResult.article_author);
|
||||
|
||||
try {
|
||||
if (articleResult.created_at == null) throw new Exception();
|
||||
// parsing time of created at
|
||||
SimpleDateFormat format = new SimpleDateFormat(
|
||||
"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
|
||||
format.setTimeZone(TimeZone.getTimeZone("UTC"));
|
||||
|
||||
Date date = format.parse(articleResult.created_at);
|
||||
if (date == null) throw new Exception();
|
||||
|
||||
SimpleDateFormat pretty_format = new SimpleDateFormat("dd MMM yy, HH:mm a", Locale.getDefault());
|
||||
String time = pretty_format.format(date);
|
||||
|
||||
binding.createdAt.setText(time);
|
||||
|
||||
}catch (Exception e){
|
||||
// do nothing
|
||||
String none = "None";
|
||||
binding.createdAt.setText(none);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// interfaces
|
||||
@FunctionalInterface
|
||||
public interface ArticleClickListener{
|
||||
void onArticleClick(ArticleResult articleResult);
|
||||
}
|
||||
}
|
||||
@@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import com.ssb.simplitend.R;
|
||||
import com.ssb.simplitend.apputils.CaregiverDataCache;
|
||||
import com.ssb.simplitend.articles.ArticlesActivity;
|
||||
import com.ssb.simplitend.caregiverdashboard.fragments.CaregiverChatsFragment;
|
||||
import com.ssb.simplitend.caregiverdashboard.fragments.DashBoardFragment;
|
||||
import com.ssb.simplitend.caregiverdashboard.fragments.MyPatientFragment;
|
||||
@@ -21,6 +22,7 @@ import com.ssb.simplitend.customsviews.HomeBottomNav;
|
||||
import com.ssb.simplitend.customsviews.MenuItem;
|
||||
import com.ssb.simplitend.databinding.CaregiverDashboardActivityBinding;
|
||||
import com.ssb.simplitend.databinding.CaregiverDashboardMenuBinding;
|
||||
import com.ssb.simplitend.faqs.FAQ_Activity;
|
||||
import com.ssb.simplitend.welcome.welcomecg.mvvm.CareGiverData;
|
||||
import com.yarolegovich.slidingrootnav.SlidingRootNavBuilder;
|
||||
import com.yarolegovich.slidingrootnav.callback.DragStateListener;
|
||||
@@ -77,6 +79,8 @@ public class CaregiverDashActivity extends AppCompatActivity implements
|
||||
|
||||
// initializing dashboard fragment
|
||||
replaceFragment(new DashBoardFragment());
|
||||
|
||||
setLayoutDetails();
|
||||
|
||||
}
|
||||
|
||||
@@ -96,6 +100,17 @@ public class CaregiverDashActivity extends AppCompatActivity implements
|
||||
binding.tint.setVisibility(View.GONE);
|
||||
}
|
||||
});
|
||||
|
||||
menuBinding.articles.setOnClickListener(v -> {
|
||||
Intent intent = new Intent(this, ArticlesActivity.class);
|
||||
startActivity(intent);
|
||||
});
|
||||
|
||||
menuBinding.faqs.setOnClickListener(v -> {
|
||||
Intent intent = new Intent(this, FAQ_Activity.class);
|
||||
startActivity(intent);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void watchSubscription(){
|
||||
@@ -112,6 +127,14 @@ public class CaregiverDashActivity extends AppCompatActivity implements
|
||||
}
|
||||
}
|
||||
|
||||
private void setLayoutDetails() {
|
||||
if (careGiverData == null || careGiverData.patientDetails == null){
|
||||
return;
|
||||
}
|
||||
|
||||
menuBinding.name.setText(careGiverData.patientDetails.first_name);
|
||||
}
|
||||
|
||||
private void replaceFragment(Fragment fragment){
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.replace(R.id.fcv_cg_home, fragment)
|
||||
@@ -143,7 +166,16 @@ public class CaregiverDashActivity extends AppCompatActivity implements
|
||||
// setting up toolbar accordingly
|
||||
binding.toolbar.setNavigationIcon(AppCompatResources.getDrawable(this, R.drawable.ic_menu));
|
||||
binding.toolbar.setNavigationIconTint(getResources().getColor(R.color.black));
|
||||
binding.toolbar.setTitle("Welcome Aditya");
|
||||
|
||||
String first_name = "";
|
||||
if (careGiverData != null && careGiverData.patientDetails != null && careGiverData.patientDetails.first_name != null){
|
||||
String[] name = careGiverData.patientDetails.first_name.split(" ");
|
||||
if (name.length > 0){
|
||||
first_name = name[0];
|
||||
}
|
||||
}
|
||||
|
||||
binding.toolbar.setTitle("Welcome " + first_name);
|
||||
|
||||
}else if (selectedItem == MenuItem.MY_PATIENT){
|
||||
replaceFragment(new MyPatientFragment());
|
||||
|
||||
@@ -1,22 +1,34 @@
|
||||
package com.ssb.simplitend.caregiverdashboard.fragments;
|
||||
|
||||
import static com.ssb.simplitend.caregiverdashboard.activities.PatientProfileShowerActivity.*;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.ssb.simplitend.apputils.AppUtil;
|
||||
import com.ssb.simplitend.apputils.CaregiverDataCache;
|
||||
import com.ssb.simplitend.caregiverdashboard.activities.PatientProfileInfoActivity;
|
||||
import com.ssb.simplitend.caregiverdashboard.activities.PatientProfileShowerActivity;
|
||||
import com.ssb.simplitend.cg_geofencing.CgGeoFencingActivity;
|
||||
import com.ssb.simplitend.databinding.CaregiverDashFragmentBinding;
|
||||
import com.ssb.simplitend.databinding.MyPatientFragmentBinding;
|
||||
import com.ssb.simplitend.welcome.welcomecg.mvvm.CareGiverData;
|
||||
|
||||
public class MyPatientFragment extends Fragment {
|
||||
|
||||
// view binding
|
||||
protected MyPatientFragmentBinding binding;
|
||||
|
||||
private CareGiverData careGiverData;
|
||||
|
||||
public MyPatientFragment(){
|
||||
// required empty
|
||||
}
|
||||
@@ -26,6 +38,66 @@ public class MyPatientFragment extends Fragment {
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
binding = MyPatientFragmentBinding.inflate(inflater, container, false);
|
||||
|
||||
initViews();
|
||||
|
||||
clickEvents();
|
||||
|
||||
return binding.getRoot();
|
||||
}
|
||||
|
||||
private void initViews() {
|
||||
CaregiverDataCache.getCaregiverData(requireContext(), (careGiverData1 -> {
|
||||
this.careGiverData = careGiverData1;
|
||||
if (careGiverData1 == null || careGiverData1.patientDetails == null){
|
||||
Toast.makeText(requireContext(), "Couldn't load patient details.", Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
binding.name.setText(careGiverData1.patientDetails.first_name);
|
||||
binding.phoneNumber.setText(careGiverData1.patientDetails.phone_number);
|
||||
|
||||
}), true);
|
||||
}
|
||||
|
||||
private void clickEvents() {
|
||||
|
||||
binding.peronalInfo.setOnClickListener(v -> {
|
||||
Intent intent = new Intent(requireActivity(), PatientProfileInfoActivity.class);
|
||||
startActivity(intent);
|
||||
});
|
||||
|
||||
binding.geofence.setOnClickListener(v -> {
|
||||
Intent intent = new Intent(requireActivity(), CgGeoFencingActivity.class);
|
||||
startActivity(intent);
|
||||
});
|
||||
|
||||
binding.medication.setOnClickListener(v -> {
|
||||
gotoProfileShower(MED_REMINDER_F);
|
||||
});
|
||||
|
||||
binding.contacts.setOnClickListener(v -> {
|
||||
gotoProfileShower(CONTACTS_F);
|
||||
});
|
||||
|
||||
binding.medRecords.setOnClickListener(v -> {
|
||||
gotoProfileShower(MED_INFO_F);
|
||||
});
|
||||
|
||||
binding.patActivities.setOnClickListener(v -> {
|
||||
gotoProfileShower(ACTIVITY_F);
|
||||
});
|
||||
|
||||
binding.phoneNumber.setOnClickListener(v -> {
|
||||
if (careGiverData != null && careGiverData.patientDetails != null){
|
||||
AppUtil.dialPhone(requireActivity(), careGiverData.patientDetails.phone_number);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void gotoProfileShower(String which_f) {
|
||||
Intent intent = new Intent(requireActivity(), PatientProfileShowerActivity.class);
|
||||
intent.putExtra(WHICH_FRAGMENT, which_f);
|
||||
startActivity(intent);
|
||||
}
|
||||
}
|
||||
|
||||
78
app/src/main/java/com/ssb/simplitend/faqs/FAQAdapter.java
Normal file
78
app/src/main/java/com/ssb/simplitend/faqs/FAQAdapter.java
Normal file
@@ -0,0 +1,78 @@
|
||||
package com.ssb.simplitend.faqs;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.AsyncDifferConfig;
|
||||
import androidx.recyclerview.widget.DiffUtil;
|
||||
import androidx.recyclerview.widget.ListAdapter;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.ssb.simplitend.R;
|
||||
import com.ssb.simplitend.databinding.FaqViewholderBinding;
|
||||
|
||||
public class FAQAdapter extends ListAdapter<FAQResult, FAQAdapter.FAQViewHolder> {
|
||||
|
||||
private static final DiffUtil.ItemCallback<FAQResult> DIFF_UTIL = new DiffUtil.ItemCallback<FAQResult>() {
|
||||
@Override
|
||||
public boolean areItemsTheSame(@NonNull FAQResult oldItem, @NonNull FAQResult newItem) {
|
||||
return oldItem.id == newItem.id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean areContentsTheSame(@NonNull FAQResult oldItem, @NonNull FAQResult newItem) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
public FAQAdapter(){
|
||||
super(DIFF_UTIL);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public FAQViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
FaqViewholderBinding binding = FaqViewholderBinding.inflate(LayoutInflater.from(parent.getContext()),
|
||||
parent, false);
|
||||
return new FAQViewHolder(binding);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull FAQViewHolder holder, int position) {
|
||||
holder.setDate(getItem(position));
|
||||
|
||||
holder.binding.addRemove.setOnClickListener(v -> {
|
||||
int visibility = holder.binding.answer.getVisibility();
|
||||
|
||||
if (visibility == View.VISIBLE){
|
||||
holder.binding.addRemove.setImageResource(R.drawable.ic_add_primary);
|
||||
holder.binding.answer.setVisibility(View.GONE);
|
||||
}else{
|
||||
holder.binding.addRemove.setImageResource(R.drawable.ic_remove_primary);
|
||||
holder.binding.answer.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public static class FAQViewHolder extends RecyclerView.ViewHolder{
|
||||
public FaqViewholderBinding binding;
|
||||
|
||||
public FAQViewHolder(@NonNull FaqViewholderBinding binding) {
|
||||
super(binding.getRoot());
|
||||
this.binding = binding;
|
||||
}
|
||||
|
||||
public void setDate(FAQResult result){
|
||||
if (result == null) return;
|
||||
|
||||
binding.title.setText(result.faq_question);
|
||||
binding.answer.setText(result.faq_answer);
|
||||
binding.answer.setVisibility(View.GONE);
|
||||
binding.addRemove.setImageResource(R.drawable.ic_add_primary);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
15
app/src/main/java/com/ssb/simplitend/faqs/FAQApiService.java
Normal file
15
app/src/main/java/com/ssb/simplitend/faqs/FAQApiService.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package com.ssb.simplitend.faqs;
|
||||
|
||||
import com.ssb.simplitend.welcome.welcomepatient.mvvm.models.CallResponse;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import retrofit2.Call;
|
||||
import retrofit2.http.GET;
|
||||
|
||||
public interface FAQApiService {
|
||||
|
||||
@GET("api/get-list-of-faqs")
|
||||
Call<CallResponse<ArrayList<FAQResult>>> getFAQs();
|
||||
|
||||
}
|
||||
13
app/src/main/java/com/ssb/simplitend/faqs/FAQContracts.java
Normal file
13
app/src/main/java/com/ssb/simplitend/faqs/FAQContracts.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package com.ssb.simplitend.faqs;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public interface FAQContracts {
|
||||
|
||||
interface GETFAQsCallback{
|
||||
void onFAQsFetched(ArrayList<FAQResult> faqResults);
|
||||
|
||||
void onFAQsFetchedFailed(Throwable t, String message);
|
||||
}
|
||||
|
||||
}
|
||||
22
app/src/main/java/com/ssb/simplitend/faqs/FAQResult.java
Normal file
22
app/src/main/java/com/ssb/simplitend/faqs/FAQResult.java
Normal file
@@ -0,0 +1,22 @@
|
||||
package com.ssb.simplitend.faqs;
|
||||
|
||||
class FaqCategory{
|
||||
public int id;
|
||||
public String title;
|
||||
}
|
||||
|
||||
public class FAQResult{
|
||||
public int id;
|
||||
public String faq_category_xid;
|
||||
public String faq_question;
|
||||
public String faq_answer;
|
||||
public String small_image;
|
||||
public String large_image;
|
||||
public String active;
|
||||
public String deleted_at;
|
||||
public String created_by;
|
||||
public String updated_by;
|
||||
public String created_at;
|
||||
public String updated_at;
|
||||
public FaqCategory faq_category;
|
||||
}
|
||||
79
app/src/main/java/com/ssb/simplitend/faqs/FAQ_Activity.java
Normal file
79
app/src/main/java/com/ssb/simplitend/faqs/FAQ_Activity.java
Normal file
@@ -0,0 +1,79 @@
|
||||
package com.ssb.simplitend.faqs;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import android.app.ProgressDialog;
|
||||
import android.os.Bundle;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.ssb.simplitend.R;
|
||||
import com.ssb.simplitend.articles.ArticlesAdapter;
|
||||
import com.ssb.simplitend.databinding.ActivityFaqBinding;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class FAQ_Activity extends AppCompatActivity implements FAQContracts.GETFAQsCallback {
|
||||
|
||||
private ActivityFaqBinding binding;
|
||||
|
||||
private FAQsPresenter presenter;
|
||||
|
||||
private ProgressDialog progressDialog;
|
||||
|
||||
private FAQAdapter faqAdapter;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
binding = ActivityFaqBinding.inflate(getLayoutInflater());
|
||||
setContentView(binding.getRoot());
|
||||
|
||||
presenter = FAQsPresenter.getFaqsPresenter();
|
||||
|
||||
initViews();
|
||||
|
||||
clickEvents();
|
||||
|
||||
getFAQs();
|
||||
|
||||
}
|
||||
|
||||
private void initViews() {
|
||||
progressDialog = new ProgressDialog(this);
|
||||
|
||||
binding.faqsRv.setLayoutManager(new LinearLayoutManager(this));
|
||||
faqAdapter = new FAQAdapter();
|
||||
binding.faqsRv.setAdapter(faqAdapter);
|
||||
}
|
||||
|
||||
private void clickEvents() {
|
||||
binding.backBtn.setOnClickListener(v -> {
|
||||
onBackPressed();
|
||||
});
|
||||
}
|
||||
|
||||
private void getFAQs() {
|
||||
progressDialog.setTitle("Please wait...");
|
||||
progressDialog.setMessage("while we fetch the FAQs");
|
||||
progressDialog.setCancelable(false);
|
||||
progressDialog.show();
|
||||
|
||||
presenter.getFAQs(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFAQsFetched(ArrayList<FAQResult> faqResults) {
|
||||
progressDialog.dismiss();
|
||||
|
||||
faqAdapter.submitList(faqResults);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFAQsFetchedFailed(Throwable t, String message) {
|
||||
progressDialog.dismiss();
|
||||
|
||||
Toast.makeText(this, "" + message, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
60
app/src/main/java/com/ssb/simplitend/faqs/FAQsPresenter.java
Normal file
60
app/src/main/java/com/ssb/simplitend/faqs/FAQsPresenter.java
Normal file
@@ -0,0 +1,60 @@
|
||||
package com.ssb.simplitend.faqs;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.ssb.simplitend.apputils.RetrofitHelper;
|
||||
import com.ssb.simplitend.articles.ArticleApiService;
|
||||
import com.ssb.simplitend.articles.ArticleContracts;
|
||||
import com.ssb.simplitend.articles.ArticleResult;
|
||||
import com.ssb.simplitend.welcome.welcomepatient.mvvm.models.CallResponse;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
public class FAQsPresenter {
|
||||
|
||||
private static FAQsPresenter faqsPresenter;
|
||||
|
||||
private FAQApiService apiService;
|
||||
|
||||
private FAQsPresenter(){
|
||||
this.apiService = RetrofitHelper.getRetrofit()
|
||||
.create(FAQApiService.class);
|
||||
}
|
||||
|
||||
public static synchronized FAQsPresenter getFaqsPresenter() {
|
||||
if (faqsPresenter == null) {
|
||||
faqsPresenter = new FAQsPresenter();
|
||||
}
|
||||
|
||||
return faqsPresenter;
|
||||
}
|
||||
|
||||
public void getFAQs(@NonNull FAQContracts.GETFAQsCallback faqCallbacks){
|
||||
apiService.getFAQs()
|
||||
.enqueue(new Callback<CallResponse<ArrayList<FAQResult>>>() {
|
||||
@Override
|
||||
public void onResponse(Call<CallResponse<ArrayList<FAQResult>>> call, Response<CallResponse<ArrayList<FAQResult>>> response) {
|
||||
if (response.body() != null){
|
||||
if (response.body().status != 200 || response.body().result == null){
|
||||
faqCallbacks.onFAQsFetchedFailed(new Exception(), response.body().message);
|
||||
return;
|
||||
}
|
||||
|
||||
faqCallbacks.onFAQsFetched(response.body().result);
|
||||
}else{
|
||||
faqCallbacks.onFAQsFetchedFailed(new Exception(), "Please try again later.");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<CallResponse<ArrayList<FAQResult>>> call, Throwable t) {
|
||||
faqCallbacks.onFAQsFetchedFailed(new Exception(), "Please try again later.");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -79,7 +79,7 @@ public class ContactInfoFragment extends Fragment implements WelcomeContracts.De
|
||||
|
||||
private void loadUserData() {
|
||||
Glide.with(requireContext())
|
||||
.load("https://simplitend.betadelivery.com/storage/upload/" + contactData.contact_photo)
|
||||
.load(AppUtil.IMAGE_BASE_URL + contactData.contact_photo)
|
||||
.placeholder(android.R.color.darker_gray)
|
||||
.error(R.drawable.ic_contact)
|
||||
.fitCenter().into(binding.image);
|
||||
|
||||
@@ -531,7 +531,7 @@ public class CreateContactFragment extends Fragment implements WelcomeContracts.
|
||||
|
||||
if (contactData.contact_photo != null) {
|
||||
Glide.with(requireContext())
|
||||
.load("https://simplitend.betadelivery.com/storage/upload/" + contactData.contact_photo)
|
||||
.load(AppUtil.IMAGE_BASE_URL + contactData.contact_photo)
|
||||
.placeholder(android.R.color.darker_gray)
|
||||
.error(R.drawable.ic_contact)
|
||||
.fitCenter().into(binding.image);
|
||||
|
||||
@@ -16,6 +16,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.ssb.simplitend.R;
|
||||
import com.ssb.simplitend.apputils.AppUtil;
|
||||
import com.ssb.simplitend.databinding.AddContactViewholderBinding;
|
||||
import com.ssb.simplitend.welcome.welcomepatient.fragments.contacts.mvvm.models.ContactData;
|
||||
|
||||
@@ -108,7 +109,7 @@ public class AddContactAdapter extends ListAdapter<ContactData, AddContactAdapte
|
||||
binding.imag.setVisibility(View.VISIBLE);
|
||||
|
||||
Glide.with(itemView.getContext())
|
||||
.load("https://simplitend.betadelivery.com/storage/upload/" + contact.contact_photo)
|
||||
.load(AppUtil.IMAGE_BASE_URL + contact.contact_photo)
|
||||
.placeholder(android.R.color.darker_gray)
|
||||
.error(R.drawable.ic_contact)
|
||||
.fitCenter().into(binding.imag);
|
||||
|
||||
Reference in New Issue
Block a user