diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c1412fb..141a262 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,7 +9,7 @@ android:fullBackupContent="false" android:icon="@drawable/app_logo" android:label="@string/app_name" - android:roundIcon="@mipmap/ic_launcher_round" + android:roundIcon="@drawable/app_logo" android:supportsRtl="true" android:theme="@style/AppTheme"> diff --git a/app/src/main/java/com/mobilecomputing/sahayak/Fragments/proposalShowFragment.java b/app/src/main/java/com/mobilecomputing/sahayak/Fragments/proposalShowFragment.java index 1f796b8..b20acaf 100644 --- a/app/src/main/java/com/mobilecomputing/sahayak/Fragments/proposalShowFragment.java +++ b/app/src/main/java/com/mobilecomputing/sahayak/Fragments/proposalShowFragment.java @@ -20,12 +20,17 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; +import java.util.Collections; import java.util.Date; +import java.util.List; +import java.util.concurrent.TimeUnit; import cn.pedant.SweetAlert.SweetAlertDialog; public class proposalShowFragment extends Fragment { + public static final String TAG = "PROPOSAL-FRAGMENT"; + public proposalShowFragment() { // Required empty public constructor } @@ -44,16 +49,21 @@ public proposalShowFragment() { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final int[] numberOfChecks = {0}; + final int[] durationTracker = {0}; final ArrayList checkedTimes = new ArrayList(); + final ArrayList taken = new ArrayList(); // Inflate the layout for this fragment View v = inflater.inflate(R.layout.fragment_proposal_show, container, false); final Button b = (Button) v.findViewById(R.id.submitButton); final Proposal mProposal = (Proposal) getArguments().getSerializable("PROPOSAL_INFO"); - LinearLayout sessionsLayout= (LinearLayout) v.findViewById(R.id.sessionsList); + final int durationCap = mProposal.getDurationCap(); + + final LinearLayout sessionsLayout = (LinearLayout) v.findViewById(R.id.sessionsList); TextView mProposal_skill = (TextView) v.findViewById(R.id.proposal_skill); - mProposal_skill.setText(mProposal.getSkill()); + String mSkill = mProposal.getSkill(); + mProposal_skill.setText(mSkill); TextView mProposal_rating = (TextView) v.findViewById(R.id.proposal_rating); mProposal_rating.setText("Instructor Rating: " + mProposal.getRating()); @@ -62,54 +72,165 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, mProposal_description.setText("Category: " + mProposal.getCategory()); //mProposal_description.setText("Description: " + mProposal.getDescription()); - final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm"); + final SimpleDateFormat dateFormat = new SimpleDateFormat("E, HH:mm"); Calendar startCalendar = Calendar.getInstance(); startCalendar.setTime(mProposal.getStartDate()); int quanta = 15; int running_sum = 0; - while(running_sum existingSessions = sl.getSessions(); + ArrayList eSessions_mProposal = new ArrayList(); + for (int i = 0; i < existingSessions.size(); i++) { + Session e = existingSessions.get(i); + if (e.getTeacher().equals(mProposal.getMentorName()) & e.getSkill().equals(mSkill)) { + eSessions_mProposal.add(e); + } + } + + while (running_sum < mProposal.getDuration()) { final Date start = startCalendar.getTime(); startCalendar.add(Calendar.MINUTE, quanta); - running_sum+=quanta; + running_sum += quanta; Date end = startCalendar.getTime(); - final CheckBox sessionCheckBox = new CheckBox(getContext()); - sessionCheckBox.setText(dateFormat.format(start)+" - "+dateFormat.format(end)); + sessionCheckBox.setText(dateFormat.format(start) + " - " + dateFormat.format(end)); sessionsLayout.addView(sessionCheckBox); + //if taken, then set enabled to false + taken.add(false); + for (int i = 0; i < eSessions_mProposal.size(); i++) { + Session e = eSessions_mProposal.get(i); + Date ssDate = e.getInteractionDate(); + int ssDuration = e.getDuration(); + + Calendar cal = Calendar.getInstance(); + cal.setTime(ssDate); + + while (ssDuration>0){ + if (start.equals(cal.getTime())) { + sessionCheckBox.setEnabled(false); + taken.set((taken.size() - 1), true); + durationTracker[0] += quanta; + } + cal.add(Calendar.MINUTE, 15); + ssDuration-=15; + } + } + sessionCheckBox.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if(isChecked){ - numberOfChecks[0] +=1; - checkedTimes.add(start); - } - else if(!isChecked){ - numberOfChecks[0] -=1; + if (!isChecked) { + numberOfChecks[0] -= 1; + durationTracker[0] -= 15; checkedTimes.remove(start); + + if (durationTracker[0] <= durationCap) { + //enable all others + for (int i = 0; i < sessionsLayout.getChildCount(); i++) { + View cbView = sessionsLayout.getChildAt(i); + if (cbView instanceof CheckBox) { + if (!(((CheckBox) cbView).isEnabled())) { + if (taken.get(i) == false) { + cbView.setEnabled(true); + } + } + } + } + + } + } else if (isChecked) { + numberOfChecks[0] += 1; + durationTracker[0] += 15; + + if (durationTracker[0] <= durationCap) checkedTimes.add(start); + + if (durationTracker[0] >= durationCap) { + //if strictly greater, then uncheck this also and show dialogue + new SweetAlertDialog(getContext()) + .setContentText("The mentor is not available for more than " + durationCap + " minutes") + .show(); + if (durationTracker[0] > durationCap) { + numberOfChecks[0] -= 1; + durationTracker[0] -= 15; + sessionCheckBox.toggle(); + new SweetAlertDialog(getContext()) + .setTitleText("Oops :(") + .setContentText("The mentor is not available for more than " + durationCap + " minutes") + .show(); + + } + //disable all others + for (int i = 0; i < sessionsLayout.getChildCount(); i++) { + View cbView = sessionsLayout.getChildAt(i); + if (cbView instanceof CheckBox) { + if (!(((CheckBox) cbView).isChecked())) { + cbView.setEnabled(false); + } + } + } + + + } + } - if(numberOfChecks[0]<=0){ + if (numberOfChecks[0] <= 0) { b.setEnabled(false); - } - else if(numberOfChecks[0]>0){ + } else if (numberOfChecks[0] > 0) { b.setEnabled(true); } + } }); } + if (durationTracker[0] >= durationCap) { + for (int i = 0; i < sessionsLayout.getChildCount(); i++) { + View cbView = sessionsLayout.getChildAt(i); + if (cbView instanceof CheckBox) { + cbView.setEnabled(false); + + } + } + } + + b.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { SessionLab sl = SessionLab.get(view.getContext()); - for(int i=0; i0){ + long difference = TimeUnit.MILLISECONDS.toMinutes(checkedTimes.get(0).getTime() - ssDate.getTime()); + + ssDate = checkedTimes.get(0); + checkedTimes.remove(ssDate); + if(difference>15){ + newSession.setDuration(ssDuration); + sl.AddSession(newSession); + + newSession = new Session(sl.getSessions().size(), mProposal); + newSession.setInteractionDate(ssDate); + ssDuration = 15; + + } + else { + ssDuration+=15; + } + } + newSession.setDuration(ssDuration); + sl.AddSession(newSession); + //Toast.makeText(view.getContext(), "Session for " + newSession.getSkill() + " requested successfully!", Toast.LENGTH_SHORT).show(); new SweetAlertDialog(getContext(), SweetAlertDialog.SUCCESS_TYPE) .setTitleText("Session requested successfully!") diff --git a/app/src/main/res/layout/fragment_proposal_show.xml b/app/src/main/res/layout/fragment_proposal_show.xml index dc00ba1..4edd5e2 100644 --- a/app/src/main/res/layout/fragment_proposal_show.xml +++ b/app/src/main/res/layout/fragment_proposal_show.xml @@ -51,7 +51,7 @@