Commit 88a14bdd authored by Sajal Narang's avatar Sajal Narang Committed by GitHub

Merge pull request #29 from Mrunzzz/createEventApi

Create event 
parents ab656736 29e4fa09
...@@ -2,8 +2,9 @@ ...@@ -2,8 +2,9 @@
<project version="4"> <project version="4">
<component name="ProjectModuleManager"> <component name="ProjectModuleManager">
<modules> <modules>
<module fileurl="file://$PROJECT_DIR$/IITB-App.iml" filepath="$PROJECT_DIR$/IITB-App.iml" />
<module fileurl="file://$PROJECT_DIR$/IITBApp.iml" filepath="$PROJECT_DIR$/IITBApp.iml" /> <module fileurl="file://$PROJECT_DIR$/IITBApp.iml" filepath="$PROJECT_DIR$/IITBApp.iml" />
<module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" /> <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
</modules> </modules>
</component> </component>
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="in.ac.iitb.gymkhana.iitbapp">
package="in.ac.iitb.gymkhana.iitbapp" >
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
......
package in.ac.iitb.gymkhana.iitbapp.api; package in.ac.iitb.gymkhana.iitbapp.api;
import in.ac.iitb.gymkhana.iitbapp.api.model.EventCreateRequest;
import in.ac.iitb.gymkhana.iitbapp.api.model.EventCreateResponse;
import in.ac.iitb.gymkhana.iitbapp.api.model.LoginRequest; import in.ac.iitb.gymkhana.iitbapp.api.model.LoginRequest;
import in.ac.iitb.gymkhana.iitbapp.api.model.LoginResponse; import in.ac.iitb.gymkhana.iitbapp.api.model.LoginResponse;
import in.ac.iitb.gymkhana.iitbapp.api.model.NewsFeedRequest; import in.ac.iitb.gymkhana.iitbapp.api.model.NewsFeedRequest;
...@@ -14,6 +16,9 @@ public interface RetrofitInterface { ...@@ -14,6 +16,9 @@ public interface RetrofitInterface {
@POST("login/") @POST("login/")
Call<LoginResponse> login(@Body LoginRequest loginRequest); Call<LoginResponse> login(@Body LoginRequest loginRequest);
@POST("/createEvent/")
Call<EventCreateResponse> eventCreate(@Body EventCreateRequest eventCreateRequest);
@POST("getNewsFeed/") @POST("getNewsFeed/")
Call<NewsFeedResponse> getNewsFeed(@Body NewsFeedRequest newsFeedRequest); Call<NewsFeedResponse> getNewsFeed(@Body NewsFeedRequest newsFeedRequest);
......
package in.ac.iitb.gymkhana.iitbapp.api.model;
import android.media.Image;
import android.support.annotation.Nullable;
import com.google.gson.annotations.SerializedName;
import java.sql.Timestamp;
/**
* Created by mrunz on 15/7/17.
*/
public class EventCreateRequest {
@SerializedName("event_name")
private String eventName;
@SerializedName("event_description")
private String eventDescription;
@SerializedName("event_timing_from")
private Timestamp eventTimingFrom;
@SerializedName("event_timing_to")
private Timestamp eventTimingTo;
@SerializedName("event_venue_id")
private int eventVenueID;
@SerializedName("event_maplocation_id")
private int eventMapLocationId;
@SerializedName("event_venue")
private String eventVenue;
@SerializedName("public_status")
private int publicStatus;
public EventCreateRequest(String eventName, String eventDescription,String eventVenue,Timestamp eventTimingFrom,Timestamp eventTimingTo,int publicStatus,@Nullable int eventVenueID,@Nullable int eventMapLocationId) {
this.eventName=eventName;
this.eventDescription=eventDescription;
this.eventTimingFrom=eventTimingFrom;
this.eventTimingTo=eventTimingTo;
this.eventVenueID=eventVenueID;
this.eventMapLocationId=eventMapLocationId;
this.eventVenue=eventVenue;
this.publicStatus=publicStatus;
}
public String getEventName() {
return eventName;
}
public void setEventName(String eventName) {
this.eventName = eventName;
}
public String getEventDescription() {
return eventDescription;
}
public void setEventDescription(String eventDescription) {
this.eventDescription = eventDescription;
}
public Timestamp getEventTimingFrom() {
return eventTimingFrom;
}
public void setEventTimingFrom(Timestamp eventTimingFrom) {
this.eventTimingFrom = eventTimingFrom;
}
public Timestamp getEventTimingTo() {
return eventTimingTo;
}
public void setEventTimingTo(Timestamp eventTimingTo) {
this.eventTimingTo = eventTimingTo;
}
public int getEventVenueID() {
return eventVenueID;
}
public void setEventVenueID(@Nullable int eventVenueID) {
this.eventVenueID = eventVenueID;
}
public int getEventMapLocationId() {
return eventMapLocationId;
}
public void setEventMapLocationId(@Nullable int eventMapLocationId) {
this.eventMapLocationId = eventMapLocationId;
}
public String getEventVenue() {
return eventVenue;
}
public void setEventVenue(String eventVenue) {
this.eventVenue = eventVenue;
}
public int getPublicStatus() {
return publicStatus;
}
public void setPublicStatus(int publicStatus) {
this.publicStatus = publicStatus;
}
}
package in.ac.iitb.gymkhana.iitbapp.api.model;
import com.google.gson.annotations.SerializedName;
/**
* Created by mrunz on 15/7/17.
*/
public class EventCreateResponse {
private String result;
private String eventId;
public EventCreateResponse(String result,String eventId){
this.result=result;
this.eventId=eventId;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public String getEventId() {
return eventId;
}
public void setEventId(String eventId) {
this.eventId = eventId;
}
}
...@@ -2,8 +2,10 @@ package in.ac.iitb.gymkhana.iitbapp.fragment; ...@@ -2,8 +2,10 @@ package in.ac.iitb.gymkhana.iitbapp.fragment;
import android.app.DatePickerDialog; import android.app.DatePickerDialog;
import android.app.TimePickerDialog; import android.app.TimePickerDialog;
import android.media.Image;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v7.widget.ListPopupWindow;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
...@@ -13,26 +15,37 @@ import android.widget.DatePicker; ...@@ -13,26 +15,37 @@ import android.widget.DatePicker;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import android.widget.TimePicker; import android.widget.TimePicker;
import android.widget.Toast; import android.widget.Toast;
import java.sql.Timestamp;
import java.util.Calendar; import java.util.Calendar;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import in.ac.iitb.gymkhana.iitbapp.R; import in.ac.iitb.gymkhana.iitbapp.R;
import in.ac.iitb.gymkhana.iitbapp.api.RetrofitInterface;
import in.ac.iitb.gymkhana.iitbapp.api.ServiceGenerator;
import in.ac.iitb.gymkhana.iitbapp.api.model.EventCreateRequest;
import in.ac.iitb.gymkhana.iitbapp.api.model.EventCreateResponse;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class AddEventFragment extends Fragment { public class AddEventFragment extends Fragment {
@BindView(R.id.button_createEvent) @BindView(R.id.button_createEvent)
Button createEvent; Button createEvent;
@BindView(R.id.cb_public)
CheckBox publicCheckBox; @BindView(R.id.tv_start)
@BindView(R.id.tv_date) TextView start;
TextView date; @BindView(R.id.et_eventName)
@BindView(R.id.tv_time) EditText eventName;
TextView time; @BindView(R.id.tv_end)
TextView end;
@BindView(R.id.et_venue) @BindView(R.id.et_venue)
EditText venue; EditText venue;
@BindView(R.id.et_eventDetails) @BindView(R.id.et_eventDetails)
...@@ -41,6 +54,22 @@ public class AddEventFragment extends Fragment { ...@@ -41,6 +54,22 @@ public class AddEventFragment extends Fragment {
ImageView eventImage; ImageView eventImage;
@BindView(R.id.ib_eventImage) @BindView(R.id.ib_eventImage)
ImageButton imageButton; ImageButton imageButton;
Timestamp timestamp_start;
Timestamp timestamp_end;
@BindView(R.id.advanced_menu)
RelativeLayout advancedMenu;
@BindView(R.id.cb_public)
CheckBox cb_public;
@BindView(R.id.cb_permission)
CheckBox cb_permission;
@BindView(R.id.map_location)
EditText et_mapLocation;
@BindView(R.id.open)
ImageView open;
@BindView(R.id.close)
ImageView close;
int publicStatus;
View view; View view;
...@@ -57,44 +86,110 @@ public class AddEventFragment extends Fragment { ...@@ -57,44 +86,110 @@ public class AddEventFragment extends Fragment {
view = inflater.inflate(R.layout.fragment_add_event, container, false); view = inflater.inflate(R.layout.fragment_add_event, container, false);
ButterKnife.bind(this, view); ButterKnife.bind(this, view);
date.setOnClickListener(new View.OnClickListener() { cb_permission.setVisibility(View.GONE);
cb_public.setVisibility(View.GONE);
et_mapLocation.setVisibility(View.GONE);
close.setVisibility(View.GONE);
open.setVisibility(View.VISIBLE);
start.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
int mYear = calendar.get(Calendar.YEAR); int mYear = calendar.get(Calendar.YEAR);
int mMonth = calendar.get(Calendar.MONTH); int mMonth = calendar.get(Calendar.MONTH);
int mDay = calendar.get(Calendar.DAY_OF_MONTH); int mDay = calendar.get(Calendar.DAY_OF_MONTH);
final int mHour = calendar.get(Calendar.HOUR_OF_DAY);
final int mMin = calendar.get(Calendar.MINUTE);
long millis = calendar.getTimeInMillis();
DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), new DatePickerDialog.OnDateSetListener() { DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), new DatePickerDialog.OnDateSetListener() {
@Override @Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { public void onDateSet(DatePicker view, final int year, final int month, final int dayOfMonth) {
date.setText(dayOfMonth + "/" + month + "/" + year); TimePickerDialog timePickerDialog = new TimePickerDialog(getContext(), new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
start.setText(dayOfMonth + "/" + month + "/" + year + " " + hourOfDay + ":" + minute);
}
}, mHour, mMin, true);
timePickerDialog.show();
} }
}, mYear, mMonth, mDay); }, mYear, mMonth, mDay);
datePickerDialog.show(); datePickerDialog.show();
timestamp_start = new Timestamp(millis);
} }
}); });
time.setOnClickListener(new View.OnClickListener() {
end.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
int mHour = calendar.get(Calendar.HOUR_OF_DAY); int mYear = calendar.get(Calendar.YEAR);
int mMin = calendar.get(Calendar.MINUTE); int mMonth = calendar.get(Calendar.MONTH);
int mDay = calendar.get(Calendar.DAY_OF_MONTH);
final int mHour = calendar.get(Calendar.HOUR_OF_DAY);
final int mMin = calendar.get(Calendar.MINUTE);
long millis = calendar.getTimeInMillis();
DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), new DatePickerDialog.OnDateSetListener() {
TimePickerDialog timePickerDialog = new TimePickerDialog(getContext(), new TimePickerDialog.OnTimeSetListener() {
@Override @Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) { public void onDateSet(DatePicker view, final int year, final int month, final int dayOfMonth) {
time.setText(hourOfDay + ":" + minute); TimePickerDialog timePickerDialog = new TimePickerDialog(getContext(), new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
end.setText(dayOfMonth + "/" + month + "/" + year + " " + hourOfDay + ":" + minute);
}
}, mHour, mMin, true);
timePickerDialog.show();
} }
}, mHour, mMin, true); }, mYear, mMonth, mDay);
timePickerDialog.show();
datePickerDialog.show();
timestamp_end = new Timestamp(millis);
} }
}); });
if (cb_permission.isChecked()) {
publicStatus = 1;
} else publicStatus = 0;
advancedMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (cb_public.getVisibility() == View.VISIBLE) {
open.setVisibility(View.VISIBLE);
close.setVisibility(View.GONE);
cb_permission.setVisibility(View.GONE);
cb_public.setVisibility(View.GONE);
et_mapLocation.setVisibility(View.GONE);
} else {
close.setVisibility(View.VISIBLE);
open.setVisibility(View.GONE);
cb_permission.setVisibility(View.VISIBLE);
cb_public.setVisibility(View.VISIBLE);
et_mapLocation.setVisibility(View.VISIBLE);
}
}
});
imageButton.setOnClickListener(new View.OnClickListener() { imageButton.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
...@@ -105,12 +200,31 @@ public class AddEventFragment extends Fragment { ...@@ -105,12 +200,31 @@ public class AddEventFragment extends Fragment {
createEvent.setOnClickListener(new View.OnClickListener() { createEvent.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
Toast.makeText(getContext(), "Add Event", Toast.LENGTH_SHORT).show(); Toast.makeText(getContext(), "Add Event", Toast.LENGTH_SHORT).show();
//TODO (2) save event //TODO (2) save event
} }
}); });
return view; return view;
} }
//TODO(3) configure onBackPressed
public void addEvent() {
EventCreateRequest eventCreateRequest = new EventCreateRequest(eventName.getText().toString(), details.getText().toString(), venue.getText().toString(), timestamp_start, timestamp_end, publicStatus, 0, 0);
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
retrofitInterface.eventCreate(eventCreateRequest).enqueue(new Callback<EventCreateResponse>() {
@Override
public void onResponse(Call<EventCreateResponse> call, Response<EventCreateResponse> response) {
Toast.makeText(getContext(), "Event Created", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Call<EventCreateResponse> call, Throwable t) {
Toast.makeText(getContext(), "Event Creation Failed", Toast.LENGTH_SHORT).show();
}
});
}
} }
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<shape android:shape="rectangle"> <shape android:shape="rectangle">
<corners android:radius="50dip" /> <corners android:radius="50dip" />
<stroke android:width="0dip" android:color="#667162" /> <stroke android:width="0dip" android:color="#667162" />
<gradient android:angle="-90" android:endColor="#FFEA00" android:startColor="#FFEA00" /> <gradient android:angle="-90" android:endColor="@color/colorAccent" android:startColor="@color/colorAccent" />
</shape> </shape>
</item> </item>
</selector> </selector>
\ No newline at end of file
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<!-- Customize your theme here. --> <!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">#FFEB3B</item> <item name="colorAccent">#ecf833</item>
<item name="android:colorBackground">?attr/colorButtonNormal</item> <item name="android:colorBackground">?attr/colorButtonNormal</item>
<item name="android:textColorPrimaryInverse">@android:color/darker_gray</item> <item name="android:textColorPrimaryInverse">@android:color/darker_gray</item>
<item name="android:windowBackground">?android:attr/colorButtonNormal</item> <item name="android:windowBackground">?android:attr/colorButtonNormal</item>
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
<!-- Customize your theme here. --> <!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">#FFEA00</item> <item name="colorAccent">#ecf833</item>
<item name="android:colorBackground">@android:color/darker_gray</item> <item name="android:colorBackground">@android:color/darker_gray</item>
<item name="android:textColorPrimaryInverse">@android:color/darker_gray</item> <item name="android:textColorPrimaryInverse">@android:color/darker_gray</item>
<item name="android:windowBackground">@android:color/darker_gray</item> <item name="android:windowBackground">@android:color/darker_gray</item>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment