diff --git a/mifosng-android/build.gradle b/mifosng-android/build.gradle index f4f4c7e6c96..fe86de58c8c 100644 --- a/mifosng-android/build.gradle +++ b/mifosng-android/build.gradle @@ -17,6 +17,7 @@ buildscript { repositories { mavenCentral() maven { url 'http://download.crashlytics.com/maven' } + maven { url 'http://dl.bintray.com/amulyakhare/maven' } } apply plugin: 'com.android.application' @@ -114,6 +115,7 @@ dependencies { compile 'com.crashlytics.android:crashlytics:1.+' compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0' compile 'com.squareup.okhttp:okhttp:2.0.0' + compile 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' // Test libraries provided by https://code.google.com/p/android-test-kit/ diff --git a/mifosng-android/src/main/java/com/mifos/mifosxdroid/adapters/ClientChooseAdapter.java b/mifosng-android/src/main/java/com/mifos/mifosxdroid/adapters/ClientChooseAdapter.java new file mode 100644 index 00000000000..87dbce5dd3e --- /dev/null +++ b/mifosng-android/src/main/java/com/mifos/mifosxdroid/adapters/ClientChooseAdapter.java @@ -0,0 +1,55 @@ +package com.mifos.mifosxdroid.adapters; +import android.content.Context; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; +import com.amulyakhare.textdrawable.TextDrawable; +import com.amulyakhare.textdrawable.util.ColorGenerator; +import com.mifos.mifosxdroid.R; +import com.mifos.mifosxdroid.core.adapters.BaseListAdapter; +import com.mifos.objects.client.Client; +import java.util.List; + +/** + * Created by Nasim Banu on 19,January,2016. + */ +public class ClientChooseAdapter extends BaseListAdapter { + private ColorGenerator mColorGenerator = ColorGenerator.MATERIAL; + private TextDrawable.IBuilder mDrawableBuilder; + + public ClientChooseAdapter(Context context, List list, int layoutId) { + super(context, list, layoutId); + mDrawableBuilder = TextDrawable.builder().round(); + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder holder; + final Client item; + + if (convertView == null) { + convertView = getLayout(); + holder = new ViewHolder(convertView); + convertView.setTag(holder); + } else { + holder = (ViewHolder) convertView.getTag(); + } + item = getItem(position); + holder.tv_clientName.setText(item.getDisplayName()); + TextDrawable drawable = mDrawableBuilder.build(String.valueOf(item.getDisplayName().charAt(0)), mColorGenerator.getColor(item.getDisplayName())); + holder.iv_clientImage.setImageDrawable(drawable); + return convertView; + } + + public static class ViewHolder { + private ImageView iv_clientImage; + private TextView tv_clientName; + + public ViewHolder(View view) { + iv_clientImage = (ImageView) view.findViewById(R.id.icon); + tv_clientName = (TextView) view.findViewById(R.id.name); + } + } +} + diff --git a/mifosng-android/src/main/java/com/mifos/mifosxdroid/adapters/SurveyListAdapter.java b/mifosng-android/src/main/java/com/mifos/mifosxdroid/adapters/SurveyListAdapter.java new file mode 100644 index 00000000000..10badec61e8 --- /dev/null +++ b/mifosng-android/src/main/java/com/mifos/mifosxdroid/adapters/SurveyListAdapter.java @@ -0,0 +1,75 @@ +package com.mifos.mifosxdroid.adapters; +import android.content.Context; +import android.content.res.Resources; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.mifos.mifosxdroid.R; +import com.mifos.objects.survey.Survey; + +import java.util.List; + +import butterknife.ButterKnife; +import butterknife.InjectView; +import android.widget.BaseAdapter; + +/** + * Created by Nasim Banu on 19,January,2016. + */ +public class SurveyListAdapter extends BaseAdapter{ + private LayoutInflater layoutInflater; + private List listSurvey; + private Resources resources; + + public SurveyListAdapter(Context context, List listSurvey){ + + layoutInflater = LayoutInflater.from(context); + this.listSurvey = listSurvey; + resources = context.getResources(); + } + @Override + public int getCount() { + return this.listSurvey.size(); + } + + @Override + public Survey getItem(int i) { + return this.listSurvey.get(i); + } + + @Override + public long getItemId(int i) { + return 0; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + + ViewHolder viewHolder; + if(view==null){ + view = layoutInflater.inflate(R.layout.row_survey_list_item,viewGroup,false); + viewHolder = new ViewHolder(view); + view.setTag(viewHolder); + }else{ + viewHolder = (ViewHolder) view.getTag(); + } + final Survey survey = listSurvey.get(i); + viewHolder.tv_survey_name.setText(survey.getName()); + viewHolder.tv_description.setText(survey.getDescription()); + return view; + } + + public static class ViewHolder{ + @InjectView(R.id.tv_survey_name) + TextView tv_survey_name; + @InjectView(R.id.tv_description) + TextView tv_description; + + public ViewHolder(View view) { + ButterKnife.inject(this, view); + } + + } +} diff --git a/mifosng-android/src/main/java/com/mifos/mifosxdroid/core/BaseActivityCallback.java b/mifosng-android/src/main/java/com/mifos/mifosxdroid/core/BaseActivityCallback.java new file mode 100644 index 00000000000..d80d158321f --- /dev/null +++ b/mifosng-android/src/main/java/com/mifos/mifosxdroid/core/BaseActivityCallback.java @@ -0,0 +1,14 @@ +package com.mifos.mifosxdroid.core; + +/** + * Created by Nasim Banu on 19,January,2016. + */ +public interface BaseActivityCallback { + void showProgress(String message); + + void hideProgress(); + + void logout(); + + int getActionbarHeight(); +} diff --git a/mifosng-android/src/main/java/com/mifos/mifosxdroid/core/BaseFragment.java b/mifosng-android/src/main/java/com/mifos/mifosxdroid/core/BaseFragment.java new file mode 100644 index 00000000000..9357bf9a2a4 --- /dev/null +++ b/mifosng-android/src/main/java/com/mifos/mifosxdroid/core/BaseFragment.java @@ -0,0 +1,52 @@ +package com.mifos.mifosxdroid.core; + +import android.app.Activity; +import android.content.Context; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v7.widget.Toolbar; +import android.view.View; +import android.view.inputmethod.InputMethodManager; + +/** + * Created by Nasim Banu on 19,January,2016. + */ +public class BaseFragment extends Fragment{ + private BaseActivityCallback callback; + private Activity activity; + private InputMethodManager inputManager; + + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + this.activity = activity; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + inputManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); + } + + public Toolbar getToolbar() { + return ((BaseActivity) getActivity()).getToolbar(); + } + + protected void showProgress(String message) { + if (callback != null) + callback.showProgress(message); + } + + protected void hideProgress() { + if (callback != null) + callback.hideProgress(); + } + + protected void logout() { + callback.logout(); + } + + public void hideKeyboard(View view) { + inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY); + } +} diff --git a/mifosng-android/src/main/java/com/mifos/mifosxdroid/core/adapters/BaseListAdapter.java b/mifosng-android/src/main/java/com/mifos/mifosxdroid/core/adapters/BaseListAdapter.java new file mode 100644 index 00000000000..b0b428f7b24 --- /dev/null +++ b/mifosng-android/src/main/java/com/mifos/mifosxdroid/core/adapters/BaseListAdapter.java @@ -0,0 +1,200 @@ +package com.mifos.mifosxdroid.core.adapters; + +import android.content.Context; +import android.content.res.Resources; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ListView; + +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +/** + * Created by Nasim Banu on 19,January,2016. + */ +public abstract class BaseListAdapter extends BaseAdapter { + private final Object mLock = new Object(); + + private List list; + private Context context; + private int layoutId; + private LayoutInflater inflater; + + public BaseListAdapter(Context context, List list, int layoutId) { + this.context = context; + this.layoutId = layoutId; + this.list = list; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + return getLayout(); + } + + /** + * Adds the specified object at the end of the array. + * + * @param object The object to add at the end of the array. + */ + public void add(T object) { + synchronized (mLock) { + list.add(object); + } + notifyDataSetChanged(); + } + + /** + * Adds the specified Collection at the end of the array. + * + * @param collection The Collection to add at the end of the array. + */ + public void addAll(Collection collection) { + synchronized (mLock) { + list.addAll(collection); + } + notifyDataSetChanged(); + } + + /** + * Adds the specified items at the end of the array. + * + * @param items The items to add at the end of the array. + */ + public void addAll(T... items) { + synchronized (mLock) { + Collections.addAll(list, items); + } + notifyDataSetChanged(); + } + + /** + * Inserts the specified object at the specified index in the array. + * + * @param object The object to insert into the array. + * @param index The index at which the object must be inserted. + */ + public void insert(T object, int index) { + synchronized (mLock) { + list.add(index, object); + } + notifyDataSetChanged(); + } + + /** + * Removes the specified object from the array. + * + * @param object The object to remove. + */ + public void remove(T object) { + synchronized (mLock) { + list.remove(object); + } + notifyDataSetChanged(); + } + + /** + * Remove all elements from the list. + */ + public void clear() { + synchronized (mLock) { + list.clear(); + } + notifyDataSetChanged(); + } + + /** + * Sorts the content of this adapter using the specified comparator. + * + * @param comparator The comparator used to sort the objects contained + * in this adapter. + */ + public void sort(Comparator comparator) { + synchronized (mLock) { + Collections.sort(list, comparator); + } + notifyDataSetChanged(); + } + + /** + * {@inheritDoc} + */ + public int getCount() { + return list != null ? list.size() : 0; + } + + /** + * {@inheritDoc} + */ + public T getItem(int position) { + return (list != null && position >= 0 && position < getCount()) ? list.get(position) : null; + } + + /** + * Returns the position of the specified item in the array. + * + * @param item The item to retrieve the position of. + * @return The position of the specified item. + */ + public int getPosition(T item) { + return list != null ? list.indexOf(item) : -1; + } + + /** + * {@inheritDoc} + */ + public long getItemId(int position) { + return position; + } + + /** + * Returns the context associated with this array adapter. The context is used + * to create views from the resource passed to the constructor. + * + * @return The Context associated with this adapter. + */ + public Context getContext() { + return context; + } + + public Resources getResources() { + return getContext().getResources(); + } + + public void setList(List list) { + synchronized (mLock) { + this.list = list; + } + notifyDataSetChanged(); + } + + public List getList() { + return list; + } + + public View getLayout() { + return getInflater().inflate(layoutId, null); + } + + public LayoutInflater getInflater() { + if (inflater == null) { + inflater = LayoutInflater.from(context); + } + return inflater; + } + + /** + * Handler for button elements in listview + */ + View.OnClickListener buttonListener = new View.OnClickListener() { + @Override + public void onClick(View v) { + ListView listView = (ListView) v.getParent(); + int position = listView.getPositionForView(v); + listView.performItemClick(listView.getChildAt(position), position, listView.getItemIdAtPosition(position)); + } + }; +} diff --git a/mifosng-android/src/main/java/com/mifos/mifosxdroid/online/ClientChooseFragment.java b/mifosng-android/src/main/java/com/mifos/mifosxdroid/online/ClientChooseFragment.java new file mode 100644 index 00000000000..19a0a04556c --- /dev/null +++ b/mifosng-android/src/main/java/com/mifos/mifosxdroid/online/ClientChooseFragment.java @@ -0,0 +1,121 @@ +package com.mifos.mifosxdroid.online; + +import android.os.Bundle; +import android.text.TextUtils; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.ListView; + +import com.mifos.mifosxdroid.R; +import com.mifos.mifosxdroid.adapters.ClientChooseAdapter; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentTransaction; +import com.mifos.mifosxdroid.core.BaseFragment; +import com.mifos.objects.SearchedEntity; +import com.mifos.objects.client.Client; +import com.mifos.objects.client.Page; +import com.mifos.utils.Constants; +import com.mifos.utils.MifosApplication; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import butterknife.ButterKnife; +import android.content.SharedPreferences; +import butterknife.InjectView; +import butterknife.OnClick; +import retrofit.Callback; +import retrofit.RetrofitError; +import retrofit.client.Response; +import android.content.Context; +import android.widget.Toast; + + +/** + * Created by Nasim Banu on 19,January,2016. + */ +public class ClientChooseFragment extends BaseFragment implements AdapterView.OnItemClickListener{ + private static final String TAG = ClientChooseFragment.class.getSimpleName(); + public static final String PREFS_NAME = "MY_PREFS"; + + @InjectView(R.id.lv_clients) + ListView results; + private List clients = new ArrayList<>(); + List clientIds = new ArrayList(); + private ClientChooseAdapter adapter; + + public static ClientChooseFragment newInstance() { + ClientChooseFragment clientChooseFragment = new ClientChooseFragment(); + return clientChooseFragment; + } + + public ClientChooseFragment() { + // Required empty public constructor + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View rootView = inflater.inflate(R.layout.fragment_client_choose, null); + ButterKnife.inject(this, rootView); + adapter = new ClientChooseAdapter(getContext(), clients, R.layout.list_item_client); + results.setAdapter(adapter); + results.setOnItemClickListener(this); + loadClients(); + return rootView; + } + + public void loadClients() { + ((MifosApplication) getActivity().getApplication()).api.clientService.listAllClients(new Callback>() { + @Override + public void success(Page page, Response response) { + + clients = page.getPageItems(); + adapter.setList(clients); + adapter.notifyDataSetChanged(); + if (!clients.isEmpty()) { + Iterator iterator = clients.iterator(); + clientIds.clear(); + while (iterator.hasNext()) { + Client client = iterator.next(); + clientIds.add(client.getId()); + } + } + } + + @Override + public void failure(RetrofitError retrofitError) { + Toast.makeText(getActivity(), "Cannot get clients, There might be some problem!", Toast.LENGTH_SHORT).show(); + + } + }); + } + + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + } + + @Override + public void onViewStateRestored(Bundle savedInstanceState) { + super.onViewStateRestored(savedInstanceState); + } + + @Override + public void onItemClick(AdapterView adapterView, View view, int i, long l) { + + SharedPreferences preferences = getActivity().getSharedPreferences(PREFS_NAME,Context.MODE_PRIVATE); + SharedPreferences.Editor edt = preferences.edit(); + edt.putInt("CLIENT_ID", clientIds.get(i)); + edt.commit(); + FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); + Fragment surveyListFragment = new SurveyListFragment(); + fragmentTransaction + .replace(R.id.container, surveyListFragment); + fragmentTransaction.addToBackStack(null); + fragmentTransaction.commit(); + } + +} diff --git a/mifosng-android/src/main/java/com/mifos/mifosxdroid/online/DashboardFragmentActivity.java b/mifosng-android/src/main/java/com/mifos/mifosxdroid/online/DashboardFragmentActivity.java index 32843e3b2aa..618afd6765a 100644 --- a/mifosng-android/src/main/java/com/mifos/mifosxdroid/online/DashboardFragmentActivity.java +++ b/mifosng-android/src/main/java/com/mifos/mifosxdroid/online/DashboardFragmentActivity.java @@ -6,6 +6,7 @@ package com.mifos.mifosxdroid.online; import android.content.Intent; +import android.support.v4.app.FragmentTransaction; import android.os.Bundle; import android.util.Log; import android.view.Menu; @@ -45,9 +46,9 @@ public boolean onOptionsItemSelected(MenuItem item) { case R.id.mItem_list: loadClientList(); break; - //case R.id.item_collection_sheet : - //startActivity(new Intent(DashboardFragmentActivity.this, GenerateCollectionSheet.class)); - // break; + case R.id.item_survey: + loadClientListForSurvey(); + break; case R.id.item_offline_centers: startActivity(new Intent(this, OfflineCenterInputActivity.class)); break; @@ -66,7 +67,9 @@ public boolean onOptionsItemSelected(MenuItem item) { public void loadClientList() { replaceFragment(ClientListFragment.newInstance(null), true, R.id.container); } - + public void loadClientListForSurvey() { + replaceFragment(ClientChooseFragment.newInstance(), true, R.id.container); + } public void openCreateClient() { replaceFragment(CreateNewClientFragment.newInstance(), true, R.id.container); } diff --git a/mifosng-android/src/main/java/com/mifos/mifosxdroid/online/SurveyListFragment.java b/mifosng-android/src/main/java/com/mifos/mifosxdroid/online/SurveyListFragment.java new file mode 100644 index 00000000000..f93ee7c5552 --- /dev/null +++ b/mifosng-android/src/main/java/com/mifos/mifosxdroid/online/SurveyListFragment.java @@ -0,0 +1,97 @@ +package com.mifos.mifosxdroid.online; + +import android.app.Activity; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.preference.PreferenceManager; +import android.support.v7.app.ActionBarActivity; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.ListView; + +import com.mifos.mifosxdroid.R; +import com.mifos.objects.client.Client; +import com.mifos.utils.MifosApplication; +import com.mifos.utils.SafeUIBlockingUtility; + +import java.util.List; +import android.content.Context; + +import retrofit.Callback; +import retrofit.RetrofitError; +import retrofit.client.Response; +import com.mifos.objects.survey.Survey; +import com.mifos.mifosxdroid.adapters.SurveyListAdapter; + + +/** + * Created by Nasim Banu on 19,January,2016. + */ +public class SurveyListFragment extends Fragment { + private static final String TAG = "SurveyListFragment"; + private View rootView; + private ListView lv_surveys_list; + private List surveys; + private SafeUIBlockingUtility safeUIBlockingUtility; + private SurveyListAdapter surveyListAdapter; + private Context context; + private OnFragmentInteractionListener mListener; + + public SurveyListFragment(){ + + } + + public static SurveyListFragment newInstance(List surveyList) { + SurveyListFragment surveyListFragment = new SurveyListFragment(); + return surveyListFragment; + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + + rootView = inflater.inflate(R.layout.fragment_surveys_list,container,false); + context = getActivity().getApplicationContext(); + setupUI(); + safeUIBlockingUtility = new SafeUIBlockingUtility(getActivity()); + + safeUIBlockingUtility.safelyBlockUI(); + ((MifosApplication)getActivity().getApplication()).api.surveyService.getAllSurveys(new Callback>() { + @Override + public void success(final List surveys, Response response) { + + surveyListAdapter = new SurveyListAdapter(getActivity(), surveys); + lv_surveys_list.setAdapter(surveyListAdapter); + lv_surveys_list.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int i, long l) { + + mListener.loadSurveyQuestion(surveys.get(i).getId()); + } + }); + safeUIBlockingUtility.safelyUnBlockUI(); + } + + @Override + public void failure(RetrofitError retrofitError) { + safeUIBlockingUtility.safelyUnblockUIForFailure(TAG, "Couldn't Fetch List of Surveys"); + } + }); + return rootView; + } + + public void setupUI(){ + + lv_surveys_list = (ListView) rootView.findViewById(R.id.lv_surveys_list); + } + public interface OnFragmentInteractionListener { + + public void loadSurveyQuestion(int surveyId); + } + + +} diff --git a/mifosng-android/src/main/java/com/mifos/objects/survey/QuestionDatas.java b/mifosng-android/src/main/java/com/mifos/objects/survey/QuestionDatas.java new file mode 100644 index 00000000000..13659e84efe --- /dev/null +++ b/mifosng-android/src/main/java/com/mifos/objects/survey/QuestionDatas.java @@ -0,0 +1,66 @@ +package com.mifos.objects.survey; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Nasim Banu on 19,January,2016. + */ +public class QuestionDatas { + private String componentKey; + + private Integer id; + private String key; + private String text; + private String description; + private Integer sequenceNo; + private List responseDatas = new ArrayList(); + + public List getResponseDatas() { + return responseDatas; + } + + public void setResponseDatas(List responseDatas) { + this.responseDatas = responseDatas; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSequenceNo() { + return sequenceNo; + } + + public void setSequenceNo(int sequenceNo) { + this.sequenceNo = sequenceNo; + } + + public int getQuestionId() { + return id; + } + + public void setQuestionId(int id) { + this.id = id; + } +} diff --git a/mifosng-android/src/main/java/com/mifos/objects/survey/ResponseDatas.java b/mifosng-android/src/main/java/com/mifos/objects/survey/ResponseDatas.java new file mode 100644 index 00000000000..dca248454a9 --- /dev/null +++ b/mifosng-android/src/main/java/com/mifos/objects/survey/ResponseDatas.java @@ -0,0 +1,39 @@ +package com.mifos.objects.survey; + +/** + * Created by Nasim Banu on 19,January,2016. + */ +public class ResponseDatas { + private String text; + private Integer sequenceNo; + private int value; + private int id; + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + public int getSequenceNo() { + return sequenceNo; + } + + public void setSequenceNo(int sequenceNo) { + this.sequenceNo = sequenceNo; + } + public int getValue() { + return value; + } + + public void setValue(int value) { + this.value = value; + } + public int getResponseId() { + return id; + } + + public void setResponseId(int id) { + this.id = id; + } +} diff --git a/mifosng-android/src/main/java/com/mifos/objects/survey/Survey.java b/mifosng-android/src/main/java/com/mifos/objects/survey/Survey.java new file mode 100644 index 00000000000..19fdbd280ec --- /dev/null +++ b/mifosng-android/src/main/java/com/mifos/objects/survey/Survey.java @@ -0,0 +1,68 @@ +package com.mifos.objects.survey; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Nasim Banu on 19,January,2016. + */ +public class Survey { + private int id; + private String key; + private String name; + private String description; + private String countryCode; + + private List questionDatas = new ArrayList(); + + + + + public List getQuestionDatas() { + return questionDatas; + } + + public void setQuestionDatas(List questionDatas) { + this.questionDatas = questionDatas;} + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode; + } + +} diff --git a/mifosng-android/src/main/java/com/mifos/services/API.java b/mifosng-android/src/main/java/com/mifos/services/API.java index e3754bb9e25..79bf1ec56ca 100644 --- a/mifosng-android/src/main/java/com/mifos/services/API.java +++ b/mifosng-android/src/main/java/com/mifos/services/API.java @@ -47,6 +47,7 @@ import com.mifos.utils.Constants; import com.mifos.utils.MFErrorResponse; import com.squareup.okhttp.OkHttpClient; +import com.mifos.objects.survey.Survey; import org.apache.http.HttpStatus; @@ -114,6 +115,7 @@ public class API { public IdentifierService identifierService; public OfficeService officeService; public StaffService staffService; + public SurveyService surveyService; public API(final String url, final String tenantIdentifier, boolean shouldByPassSSLSecurity) { @@ -167,6 +169,7 @@ public void intercept(RequestFacade request) { identifierService = restAdapter.create(IdentifierService.class); officeService = restAdapter.create(OfficeService.class); staffService = restAdapter.create(StaffService.class); + surveyService = restAdapter.create(SurveyService.class); } @@ -338,6 +341,19 @@ public void uploadClientImage(@Path("clientId") int clientId, @POST(APIEndPoint.CLIENTS) void createClient(@Body ClientPayload clientPayload, Callback callback); } + + public interface SurveyService { + + @Headers({ACCEPT_JSON, CONTENT_TYPE_JSON}) + @GET(APIEndPoint.SURVEYS) + public void getAllSurveys(Callback> callback); + + @Headers({ACCEPT_JSON, CONTENT_TYPE_JSON}) + @GET(APIEndPoint.SURVEYS + "/{surveyId}") + public void getSurvey(@Path("surveyId") int surveyId, Callback surveyCallback); + + } + public interface SearchService { @Headers({ACCEPT_JSON, CONTENT_TYPE_JSON}) diff --git a/mifosng-android/src/main/java/com/mifos/services/data/APIEndPoint.java b/mifosng-android/src/main/java/com/mifos/services/data/APIEndPoint.java index f579465de41..a71a5cd9eca 100644 --- a/mifosng-android/src/main/java/com/mifos/services/data/APIEndPoint.java +++ b/mifosng-android/src/main/java/com/mifos/services/data/APIEndPoint.java @@ -16,6 +16,7 @@ public class APIEndPoint { public static final String CLIENTS = "/clients"; public static final String LOANS = "/loans"; public static final String CENTERS = "/centers"; + public static final String SURVEYS = "/surveys"; public static final String SEARCH = "/search"; public static final String SAVINGSACCOUNTS = "savingsaccounts"; public static final String RECURRING_ACCOUNTS = "recurringdepositaccounts"; diff --git a/mifosng-android/src/main/res/drawable/card_blueborder.9.png b/mifosng-android/src/main/res/drawable/card_blueborder.9.png new file mode 100644 index 00000000000..a44658e63e1 Binary files /dev/null and b/mifosng-android/src/main/res/drawable/card_blueborder.9.png differ diff --git a/mifosng-android/src/main/res/layout/fragment_client_choose.xml b/mifosng-android/src/main/res/layout/fragment_client_choose.xml new file mode 100644 index 00000000000..99f47c7d468 --- /dev/null +++ b/mifosng-android/src/main/res/layout/fragment_client_choose.xml @@ -0,0 +1,17 @@ + + + + + + + + \ No newline at end of file diff --git a/mifosng-android/src/main/res/layout/fragment_surveys_list.xml b/mifosng-android/src/main/res/layout/fragment_surveys_list.xml new file mode 100644 index 00000000000..79652aa3d87 --- /dev/null +++ b/mifosng-android/src/main/res/layout/fragment_surveys_list.xml @@ -0,0 +1,29 @@ + + + + + + + diff --git a/mifosng-android/src/main/res/layout/list_item_client.xml b/mifosng-android/src/main/res/layout/list_item_client.xml new file mode 100644 index 00000000000..3c2919250bd --- /dev/null +++ b/mifosng-android/src/main/res/layout/list_item_client.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/mifosng-android/src/main/res/layout/row_survey_list_item.xml b/mifosng-android/src/main/res/layout/row_survey_list_item.xml new file mode 100644 index 00000000000..3f5b9922b7f --- /dev/null +++ b/mifosng-android/src/main/res/layout/row_survey_list_item.xml @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/mifosng-android/src/main/res/menu/client_search.xml b/mifosng-android/src/main/res/menu/client_search.xml index feffc128524..1821ca9e508 100644 --- a/mifosng-android/src/main/res/menu/client_search.xml +++ b/mifosng-android/src/main/res/menu/client_search.xml @@ -17,20 +17,19 @@ android:enabled="true" android:title="@string/create_client" app:showAsAction="never" /> - - + Group Cancel Review Payment + Please choose a Client from the list Center Name Center Id Create Client @@ -148,6 +149,7 @@ Centers Hello world! Center List + Survey Hello blank fragment Type Upload diff --git a/mifosng-android/src/main/res/values/styles_image.xml b/mifosng-android/src/main/res/values/styles_image.xml new file mode 100644 index 00000000000..1ec67eac70e --- /dev/null +++ b/mifosng-android/src/main/res/values/styles_image.xml @@ -0,0 +1,16 @@ + + + + + + + + \ No newline at end of file