Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.clickedu.Clickedu.fragments.sessions.register.tablet_register;
- import android.content.DialogInterface;
- import android.os.Bundle;
- import android.os.Parcelable;
- import android.support.v4.app.Fragment;
- import android.support.v7.app.AlertDialog;
- import android.support.v7.widget.LinearLayoutManager;
- import android.support.v7.widget.RecyclerView;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.ImageView;
- import android.widget.TextView;
- import android.widget.Toast;
- import org.clickedu.Clickedu.R;
- import org.clickedu.Clickedu.adapters.sessions.tablet_register.RegisterHeaderAdapter;
- import org.clickedu.Clickedu.adapters.sessions.tablet_register.RegisterHorizontalAdapter;
- import org.clickedu.Clickedu.adapters.sessions.tablet_register.RegisterVerticalAdapter;
- import org.clickedu.Clickedu.bus.BusManager;
- import org.clickedu.Clickedu.bus.events.OfflineRegisterEvent;
- import org.clickedu.Clickedu.bus.events.SetUIEnabledEvent;
- import org.clickedu.Clickedu.connection.ApiClient;
- import org.clickedu.Clickedu.connection.GsonHandler;
- import org.clickedu.Clickedu.connection.SessionsClient;
- import org.clickedu.Clickedu.fragments.sessions.model.AttendanceModel;
- import org.clickedu.Clickedu.fragments.sessions.model.MultipleModel;
- import org.clickedu.Clickedu.listeners.OnRecyclerListTouchListener;
- import org.clickedu.Clickedu.listeners.SelfRemovingOnScrollListener;
- import org.clickedu.Clickedu.model.AttachmentSend;
- import org.clickedu.Clickedu.model.User;
- import org.clickedu.Clickedu.model.persistence.OfflineModeManager;
- import org.clickedu.Clickedu.model.persistence.RegisterManager;
- import org.clickedu.Clickedu.model.persistence.SessionManager;
- import org.clickedu.Clickedu.model.persistence.UserManager;
- import org.clickedu.Clickedu.model.response.UpdateSessionResponse;
- import org.clickedu.Clickedu.model.sessions.Attendance;
- import org.clickedu.Clickedu.model.sessions.Board;
- import org.clickedu.Clickedu.model.sessions.Homework;
- import org.clickedu.Clickedu.model.sessions.ParamName;
- import org.clickedu.Clickedu.model.sessions.ParameterQuantifier;
- import org.clickedu.Clickedu.model.sessions.RegisterModel;
- import org.clickedu.Clickedu.model.sessions.SessionDay;
- import org.clickedu.Clickedu.model.sessions.SessionObject;
- import org.clickedu.Clickedu.model.sessions.SessionParam;
- import org.clickedu.Clickedu.model.sessions.SessionStudent;
- import org.clickedu.Clickedu.utils.RegisterStatusUtils;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import butterknife.Bind;
- import butterknife.ButterKnife;
- import butterknife.OnClick;
- import cz.msebera.android.httpclient.Header;
- import lombok.NonNull;
- /**
- * Created by Joanna on 09.08.2017.
- */
- public class TemporaryRegisterFragment extends Fragment {
- public static final int TEMP_LIST_SIZE = 10;
- @Bind(R.id.recycler_view_vertical) RecyclerView mVerticalRV;
- @Bind(R.id.recycler_view_header) RecyclerView mHorizontalHeaderRV;
- @Bind(R.id.back_button) ImageView mBackIV;
- @Bind(R.id.save_button) ImageView mSaveIV;
- @Bind(R.id.title) TextView mViewTitle;
- @OnClick(R.id.back_button) public void onBackClick(){
- getActivity().finish();
- }
- @OnClick(R.id.save_button)public void onSaveClick(){
- Toast.makeText(getContext(), "save data", Toast.LENGTH_LONG).show();
- if(!isAllAttendanceSelected()){
- Toast.makeText(getContext(), R.string.attendance_not_selected, Toast.LENGTH_SHORT).show();
- return;
- }
- mViewTitle.requestFocusFromTouch();
- User user = UserManager.get(getActivity()).getCurrentUser();
- if (!user.isOfflineMode()) {
- AttachmentSend attachmentSend = RegisterManager.get().getCurrentAttachment(RegisterManager.get().getCurrentSessionDay());
- SessionDay sessionDay = RegisterManager.get().getCurrentSessionDay();
- SessionObject sessionObject = RegisterManager.get().getCurrentSessionObject();
- SessionsClient.updateSession(getActivity(), RegisterManager.get().getCurrentAttachment(RegisterManager.get().getCurrentSessionDay()), RegisterManager.get().getCurrentSessionDay(), RegisterManager.get().getCurrentSessionObject(), new GsonHandler<UpdateSessionResponse>(UpdateSessionResponse.class) {
- @Override
- public void onGsonResponse(UpdateSessionResponse response) {
- if (response == null) return;
- RegisterManager.get().shouldSave(true);
- RegisterManager.get().getCurrentSessionDay().setSessionId(response.getSessionId());
- BusManager.get().post(new SetUIEnabledEvent(true));
- if (getActivity() == null) {
- return;
- }
- getActivity().finish();
- }
- @Override
- public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
- ApiClient.showError(getActivity(), statusCode);
- }
- });
- } else {
- OfflineModeManager.get().updateSessionObject(getActivity(), RegisterManager.get().getCurrentSessionDay(), RegisterManager.get().getCurrentSessionObject());
- BusManager.get().post(new OfflineRegisterEvent());
- getActivity().finish();
- }
- }
- private RegisterVerticalAdapter mVerticalAdapter;
- private RegisterHeaderAdapter mHeaderAdapter;
- private List<RecyclerView> mRecyclerViewList;
- private Map<Integer, ArrayList<MultipleModel>> data;
- private HashMap<String, ArrayList<SessionParam>> mSessionsParamData;
- List<String> headerList;
- List<Integer> headerType;
- List<ParameterQuantifier> quantifiers; //for spinner
- List<RegisterModel> attendanceList; //students
- int attendanceListIndex = 4;
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- View fragment = inflater.inflate(R.layout.register_attendance_layout, container, false);
- ButterKnife.bind(this, fragment);
- headerList = new ArrayList<>(Arrays.asList(getResources().getStringArray(R.array.register_type_selection_list)));
- headerType = new ArrayList<>();
- mRecyclerViewList = new ArrayList<>();
- attendanceList = new ArrayList<>();
- data = new HashMap<>();
- initData();
- setAdapter();
- return fragment;
- }
- private void initData(){
- SessionObject sessionObject = RegisterManager.get().getCurrentSessionObject();
- if(sessionObject==null){
- getActivity().finish();
- }
- initHeadersList(sessionObject);
- mSessionsParamData = sessionObject.getSessionList().getSessionParams();
- quantifiers = RegisterManager.get().getCurrentSessionObject().getSessionList().getParameterQuantifiers();
- if (sessionObject != null && sessionObject.getSessionList().getParamNames() != null) {
- for (SessionStudent student : sessionObject.getSessionList().getStudents()) {
- attendanceList.add(createRegisterModelForStudentSession(student, attendanceListIndex));
- ArrayList<MultipleModel> studentData = new ArrayList<>();
- String studentName = student.getName();
- int studentID = student.getId();
- for (ParamName pm : sessionObject.getSessionList().getParamNames()){
- HashMap<Integer, SessionParam> params = getParams(pm.getParamName());
- if (params.containsKey(studentID)) {
- SessionParam param = params.get(studentID);
- studentData.add(new MultipleModel(studentName, quantifiers, studentID, param.getParameterValue()));
- } else {
- studentData.add(new MultipleModel(studentName, quantifiers, studentID, null));
- }
- }
- data.put(studentID, studentData);
- }
- }
- }
- private void initHeadersList(SessionObject sessionObject){
- headerType.add(RegisterHorizontalAdapter.ATTENDANCE_VIEW_TYPE);
- headerType.add(RegisterHorizontalAdapter.HOMEWORK_VIEW_TYPE);
- headerType.add(RegisterHorizontalAdapter.BOARD_VIEW_TYPE);
- if (sessionObject != null && sessionObject.getSessionList().getParamNames() != null) {
- for (ParamName pm : sessionObject.getSessionList().getParamNames()) {
- headerList.add(pm.getParamName());
- headerType.add(Integer.parseInt(pm.getParamType()));
- }
- }
- }
- // setting vertical adapter
- public void setAdapter() {
- mHeaderAdapter = new RegisterHeaderAdapter(getContext(), headerList, this, headerType);
- LinearLayoutManager linearLayoutManagerHeader = new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false);
- mHorizontalHeaderRV.setLayoutManager(linearLayoutManagerHeader);
- mHorizontalHeaderRV.setAdapter(mHeaderAdapter);
- mRecyclerViewList.add(mHorizontalHeaderRV);
- mVerticalAdapter = new RegisterVerticalAdapter(getContext(), attendanceList, mRecyclerViewList, headerType, headerList);
- LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
- mVerticalRV.setLayoutManager(linearLayoutManager);
- mVerticalRV.setAdapter(mVerticalAdapter);
- }
- public void onAttendanceTextClicked(){
- final SessionObject sessionObject = RegisterManager.get().getCurrentSessionObject();
- if(sessionObject==null){
- getActivity().finish();
- }
- final CharSequence[] items = {"All day"," morning", "afternoom"};
- final int[] index = {0};
- AlertDialog dialog = new AlertDialog.Builder(getContext())
- .setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- index[0] = which;
- }
- }).setPositiveButton("OK", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int id) {
- attendanceList.clear();
- for (SessionStudent student : sessionObject.getSessionList().getStudents()) {
- attendanceList.add(createRegisterModelForStudentSession(student, index[0]));
- }
- mVerticalAdapter.changeAttendances(attendanceList);
- if(index[0]==0){
- attendanceListIndex = 4;
- }
- else if(index[0]==1){
- attendanceListIndex = 2;
- }
- else {
- attendanceListIndex = 3;
- }
- }
- }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int id) {
- }
- }).create();
- dialog.show();
- }
- public void selectAllAttendance(RegisterStatusUtils.AttendanceStatusType statusType, boolean isJustified) {
- final SessionObject sessionObject = RegisterManager.get().getCurrentSessionObject();
- boolean delayed = false;
- boolean justified = isJustified;
- boolean present = false;
- boolean absent = false;
- if (statusType == RegisterStatusUtils.AttendanceStatusType.PRESENT) {
- present = true;
- } else if (statusType == RegisterStatusUtils.AttendanceStatusType.LATE) {
- delayed = true;
- } else if (statusType == RegisterStatusUtils.AttendanceStatusType.ABSENT) {
- absent = true;
- }
- for (SessionStudent student : sessionObject.getSessionList().getStudents()) {
- Attendance attendance = null;
- List<Attendance> attendances = student.getAttendances();
- if (student.getAttendances() != null) {
- for(Attendance a : attendances){
- if(a.getType()==attendanceListIndex){
- attendance = a;
- }
- }
- if(attendance==null){
- attendance = new Attendance();
- attendance.setId(Integer.toString(student.getId()));
- attendance.setType(attendanceListIndex);
- attendances.add(attendance);
- }
- }
- attendance.setAbsent(absent);
- attendance.setJustified(justified);
- attendance.setDelayed(delayed);
- attendance.setPresent(present);
- /*if (attendance == null) {
- attendance = new Attendance();
- attendance.setAbsent(absent);
- attendance.setJustified(justified);
- attendance.setDelayed(delayed);
- attendance.setPresent(present);
- attendance.setType(4);
- attendance.setId(Integer.toString(student.getId()));
- attendances.add(attendance);
- } else {
- attendance.setId(Integer.toString(student.getId()));
- attendance.setAbsent(absent);
- attendance.setJustified(justified);
- attendance.setDelayed(delayed);
- attendance.setPresent(present);
- attendance.setType(4);
- }*/
- }
- mVerticalAdapter.selectAllAttendance(statusType, isJustified);
- }
- private void setAttendancePresentAll(){
- for (SessionStudent student : RegisterManager.get().getCurrentSessionObject().getSessionList().getStudents() ) {
- List<Attendance> attendanceMorningList = null;
- Attendance attendanceMorning = null;
- attendanceMorningList = student.getAttendances();
- for (Attendance a : attendanceMorningList) {
- if (a.getType() == 2) {
- attendanceMorning = a;
- } else if (a.getType() == 4) {
- a.setDelayed(false);
- a.setJustified(false);
- a.setAbsent(false);
- a.setPresent(false);
- }
- }
- if (attendanceMorning == null) {
- attendanceMorning = new Attendance();
- attendanceMorning.setType(2);
- attendanceMorning.setId(student.getId() + "");
- attendanceMorningList.add(attendanceMorning);
- }
- attendanceMorning.setAbsent(false);
- attendanceMorning.setDelayed(true);
- attendanceMorning.setJustified(false);
- attendanceMorning.setPresent(false);
- }
- }
- public void selectAllHomework(RegisterStatusUtils.HomeworkStatusType statusType) {
- if (statusType == RegisterStatusUtils.HomeworkStatusType.NONE) {
- Toast.makeText(getContext(), "None", Toast.LENGTH_SHORT).show();
- } else {
- Toast.makeText(getContext(), "All " + statusType.toString(), Toast.LENGTH_SHORT).show();
- }
- mVerticalAdapter.selectAllHomework(statusType);
- for (SessionStudent sessionStudent : RegisterManager.get().getCurrentSessionObject().getSessionList().getStudents()) {
- Homework hom = sessionStudent.getHomework();
- boolean done = false;
- boolean notDone = false;
- boolean notAsked = false;
- if(statusType== RegisterStatusUtils.HomeworkStatusType.DONE){
- done = true;
- }
- else if(statusType== RegisterStatusUtils.HomeworkStatusType.NOT_DONE){
- notDone = true;
- }
- else if(statusType == RegisterStatusUtils.HomeworkStatusType.NOT_COLLECTED){
- notAsked = true;
- }
- hom.setDone(done);
- hom.setNotDone(notDone);
- hom.setNotAsked(notAsked);
- }
- }
- public void selectAllBoard(RegisterStatusUtils.BoardStatusType statusType) {
- if (statusType == RegisterStatusUtils.BoardStatusType.NONE) {
- Toast.makeText(getContext(), "None", Toast.LENGTH_SHORT).show();
- } else {
- Toast.makeText(getContext(), "All " + statusType.toString(), Toast.LENGTH_SHORT).show();
- }
- mVerticalAdapter.selectAllBoard(statusType);
- for (SessionStudent sessionStudent : RegisterManager.get().getCurrentSessionObject().getSessionList().getStudents()) {
- Board board = sessionStudent.getBoard();
- boolean asked = false;
- boolean notAsked = false;
- if(statusType == RegisterStatusUtils.BoardStatusType.GOES_UP){
- asked = true;
- }
- else if(statusType == RegisterStatusUtils.BoardStatusType.NOT_GOES_UP){
- notAsked = true;
- }
- board.setAsked(asked);
- board.setNotAsked(notAsked);
- }
- }
- private RegisterModel createRegisterModelForStudentSession(SessionStudent student, int index){
- RegisterStatusUtils.AttendanceStatusType attendanceStatusType = getAttendanceStatusForStudent(student, index);
- RegisterStatusUtils.HomeworkStatusType homeworkStatusType = getHomeworkStatusForStudent(student);
- RegisterStatusUtils.BoardStatusType boardStatusType = getBoardStatusForStudent(student);
- boolean isJustified = false;
- if(student.getAttendances()!=null){
- for(Attendance a : student.getAttendances()){
- if(a.getType()==index){
- isJustified = a.isJustified();
- }
- }
- }
- RegisterModel model = new RegisterModel(student.getName(), student.getId(), attendanceStatusType, homeworkStatusType,
- boardStatusType, isJustified);
- return model;
- }
- private RegisterStatusUtils.AttendanceStatusType getAttendanceStatusForStudent(SessionStudent student, int index){
- if(student.getAttendances()!=null && student.getAttendances().size()>index){
- if(student.getAttendances().get(index).isPresent()){
- return RegisterStatusUtils.AttendanceStatusType.PRESENT;
- }
- else if (student.getAttendances().get(index).isDelayed()){
- return RegisterStatusUtils.AttendanceStatusType.LATE;
- }
- else if(student.getAttendances().get(index).isAbsent()){
- return RegisterStatusUtils.AttendanceStatusType.ABSENT;
- }
- else {
- return RegisterStatusUtils.AttendanceStatusType.NONE;
- }
- }
- return RegisterStatusUtils.AttendanceStatusType.NONE;
- }
- private RegisterStatusUtils.HomeworkStatusType getHomeworkStatusForStudent(SessionStudent student){
- if(student.getHomework()!=null) {
- if(student.getHomework().isDone()){
- return RegisterStatusUtils.HomeworkStatusType.DONE;
- }
- else if (student.getHomework().isNotAsked()){
- return RegisterStatusUtils.HomeworkStatusType.NOT_COLLECTED;
- }
- else if(student.getHomework().isNotDone()){
- return RegisterStatusUtils.HomeworkStatusType.NOT_DONE;
- }
- }
- return RegisterStatusUtils.HomeworkStatusType.NONE;
- }
- private RegisterStatusUtils.BoardStatusType getBoardStatusForStudent(SessionStudent student){
- if(student.getBoard()!=null) {
- if(student.getBoard().isNotAsked()){
- return RegisterStatusUtils.BoardStatusType.NOT_GOES_UP;
- }
- else if (student.getBoard().isAsked()){
- return RegisterStatusUtils.BoardStatusType.GOES_UP;
- }
- }
- return RegisterStatusUtils.BoardStatusType.NONE;
- }
- public HashMap<Integer, SessionParam> getParams(String paramName) {
- HashMap<Integer, SessionParam> params = new HashMap<>();
- ArrayList<SessionParam> sessionPamars;
- if (mSessionsParamData.containsKey(paramName)) {
- sessionPamars = mSessionsParamData.get(paramName);
- for (SessionParam sessionParam : sessionPamars) {
- params.put(sessionParam.getStudentId(), sessionParam);
- }
- }
- return params;
- }
- private boolean isAllAttendanceSelected() {
- if (!SessionManager.get().isPresentConfig()) {
- return true;
- }
- int attendanceSelectedCount = 0;
- for (SessionStudent student : RegisterManager.get().getCurrentSessionObject().getSessionList().getStudents()) {
- boolean studentAttendanceSelected = false;
- for (Attendance model : student.getAttendances()) {
- if (studentAttendanceSelected) continue;
- if (model.isAbsent() || model.isDelayed() || model.isPresent() || model.isJustified()) {
- attendanceSelectedCount++;
- studentAttendanceSelected = true;
- }
- }
- }
- return attendanceSelectedCount == RegisterManager.get().getCurrentSessionObject().getSessionList().getStudents().size();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement