package com.sandftechnologies.schoolmanagementStaff.bottomSheet; import android.app.Dialog; import android.support.design.widget.BottomSheetDialogFragment; import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.Snackbar; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.TextView; import android.widget.ViewSwitcher; import com.sandftechnologies.schoolmanagementStaff.DataCache; import com.sandftechnologies.schoolmanagementStaff.GsonModels.Response; import com.sandftechnologies.schoolmanagementStaff.GsonModels.StudentModel; import com.sandftechnologies.schoolmanagementStaff.GsonModels.studentID; import com.sandftechnologies.schoolmanagementStaff.Internet.GlobalVariables; import com.sandftechnologies.schoolmanagementStaff.Internet.NetworkCall; import com.sandftechnologies.schoolmanagementStaff.Internet.ServerResponseListner; import com.sandftechnologies.schoolmanagementStaff.R; import com.sandftechnologies.schoolmanagementStaff.RecyclerViewComponents.StudentSelectionRecyclerAdapter; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.List; /** * Created by PC4 on 8/31/2017. */ public class StudentSelectionSheet extends BottomSheetDialogFragment implements ServerResponseListner,GlobalVariables,SelectedStudentChangedListener { private List studentList; private List selectedStudents; private RecyclerView studentSelectionRecycler; private TextView selectionCount; private CheckBox selectAll; private Button done; private ViewSwitcher switcher; private DataCache mDataCache; private CoordinatorLayout baseLayout; private String ClassID,SubjectID; private Snackbar loadingStudents_snackbar; private StudentSelectionRecyclerAdapter adapter; private SelectionCompletedListener selectionDonelistener; public void setIDs(String classID, String subjectID) { this.ClassID = classID; this.SubjectID = subjectID; } public void setClassID(String classID) { this.ClassID = classID; } public void setSelectionCompletedListener(SelectionCompletedListener listener){ this.selectionDonelistener=listener; } @Override public void setupDialog(Dialog dialog, int style) { super.setupDialog(dialog, style); View contentView = View.inflate(getContext(), R.layout.student_selection, null); dialog.setContentView(contentView); mDataCache=DataCache.getInstance(); selectedStudents=new ArrayList<>(); switcher= (ViewSwitcher) contentView.findViewById(R.id.switcher); baseLayout= (CoordinatorLayout) dialog.findViewById(R.id.baseLayout); studentSelectionRecycler= (RecyclerView) contentView.findViewById(R.id.studentSelectionRecycler); done= (Button) contentView.findViewById(R.id.done_button); selectAll= (CheckBox) contentView.findViewById(R.id.checkboxSelectAll); selectionCount= (TextView) contentView.findViewById(R.id.selectedStudentsCount); switcher.setDisplayedChild(0); loadingStudents_snackbar=Snackbar.make(baseLayout,"Loading students",Snackbar.LENGTH_INDEFINITE); loadingStudents_snackbar.show(); if(mDataCache.getStudentMap().get(ClassID)!=null) { studentList=mDataCache.getStudentMap().get(ClassID); NetworkCall networkCall = new NetworkCall(TYPE_GET_STUDENTS_OF_SUBJECT); networkCall.setListener(StudentSelectionSheet.this); networkCall.execute(createSubjectID_JSON(), GET_SUBJECT_DETAILS_URL); }else { NetworkCall networkCall = new NetworkCall(TYPE_GET_STUDENT_LIST); networkCall.setListener(StudentSelectionSheet.this); networkCall.execute(createClassID_JSON(), STUDENT_LIST_URL); } done.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { selectedStudents=adapter.getSelectedIDs(); getDialog().dismiss(); selectionDonelistener.onSelectoinCompleted(selectedStudents); } }); selectAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(selectAll.isChecked()){ adapter.allStudentsSelected(); }else { if(adapter.getSelectedStudentsCount()==studentList.size()) { adapter.allStudentsUnselected(); } } } }); } private String createClassID_JSON() { String result=""; try { JSONObject object=new JSONObject(); object.put("id",ClassID); result=object.toString(); }catch (JSONException e){ e.printStackTrace(); } return result; } private String createSubjectID_JSON() { String result=""; try { JSONObject object=new JSONObject(); object.put("id",SubjectID); result=object.toString(); }catch (JSONException e){ e.printStackTrace(); } return result; } @Override public void onResponse(String type, Response response) throws Exception { if(type.equals(TYPE_GET_STUDENTS_OF_SUBJECT)){ loadingStudents_snackbar.dismiss(); switcher.setDisplayedChild(1); RecyclerView.ItemAnimator itemAnimator=new DefaultItemAnimator(); RecyclerView.LayoutManager layoutManager=new LinearLayoutManager(getActivity()); List studentIdList=response.getStudentListForSubjectResopnse(); if(studentIdList.size()==1){ if(studentIdList.get(0).getStudent_Id().equals("undefined")){ //No students opted for this subject studentSelectionRecycler.setLayoutManager( layoutManager ); studentSelectionRecycler.setItemAnimator( itemAnimator ); adapter=new StudentSelectionRecyclerAdapter(studentList); adapter.setClassID(ClassID); adapter.setSelectedStudentCountChangedListener(StudentSelectionSheet.this); adapter.setSelectedStudents(new ArrayList()); studentSelectionRecycler.setHasFixedSize(true); studentSelectionRecycler.setAdapter(adapter); } }else { for (int i=0;i