Programmer Manual - Gil16/2018b-StudyGroup GitHub Wiki

Introduction

StudyGroup is an android application, requires api at least 16, that helps technion students to find study partners for any purpose, ie: homework partner, project partners, etc. Using our realtime database (firebase), we stored all of information that we need, like users, courses etc.

In our application there is an activity called courses, there we have a recycler view of all of the courses that is being taught in the technion during the current semester, we took the courses from the REP file that we found in the UG, we had to make a parser to the REP file in order to fit it to the JSON format of the firebase. the user can also search for a specific course by number/name, and he can also filter the courses by faculty. next to each course we have a favourite button that indicates that the course is important to the user and moves it to the top of the recycler view. pressing on one of the courses will open a new activity that holds all of the course current groups, pressing on one of the groups can open one of two activities: 1.if the user isnt a participant of the current group, then it will lead to an activity that shows the group info and two buttons, one is join request, pressing on it will send a join request to the group admin ,the second button is interested, pressing on it will mark the group as interesting . 2.if the user is a participant of the group it will lead him to the chat of the current group where users can chat and help each other, in the same activity the user can press on "Group details" where he can see the group details. In the same groups in a course activity we have a fab, pressing the fab will open a new activity which the user can create a new group with photo (which is optional) ,subject, location, date and max number of participants, the creator of the group is its admin, he can accept requests of other users to join the group, modify group setting and information, or even delete the group.

We also have the chat activity where the participants of each group can communicate, we loaded the messages from the fire base into a recycler view were we used three message binder, first is the sender message which included only the messages that the current user sent in order to load it in the right side of the chat activity, second is the recieved messages which we load the other participants messages in the left side of the chat activity including there facebook profile picture near each message, and the last one is the request, where we showed a message that a user want to join the group with two buttons: accept and reject which only the admin can press on it. the app also has groups activity with three fragments: first one is the joined fragment, the fragment has a recycler view that shows all of the current user joined groups. second is the interested fragment, the fragment has a recycler view that shows all of the current user interested groups. third is the requests fragment, where the user can see all of his requests of joining a group. We also supported push notification:

The user will be notified whenever a group is created in a course that he is following. When a user join a studyGroup all of the participants of the group will be notified. Participants of a group will be notified when the group details is modified. Database: in our database we have three main child: Users: here we save all the information of all of the users using our application, we store the favourite courses, Request, joined groups, interested groups,and my groups which means the group that i created, the name of the user that we extract from the facebook profile using Profile.getCurrentProfile().getName(), the token (a uniqe "id" of the user) using Profile.getCurrentProfile().getID(). and the Uri of the user facebook profile picture. Courses: here we save all of the courses in the current semester, for each group we save the faculty, id and name, which we get from the REP file that we got from the UG. Groups: here we save all of the groupes that have been created in our app, for each group we save the id of the admin (the user who created the group), current number of participants, the date of the meeting, the groupID which is a random string the the firebase creates when using child(), the id of the course of the group, the location of the meeting, max number of participants in the group, the name of the group, the subject of the group, the picture of the group which we save in the storage of the database, and the chat which we have two type of messages in the chat first is request, in case the user sends a request to join the group, and second is message which is a regular message, for each message we save: the message, the group admin id, the name of the one who sent the message, the profile picture of the sender in order to show it near the message in the chat, the time stamp of the message, the type (message/request), and the sender token.