/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.api;
import java.io.IOException;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
import com.galaxy.meetup.client.android.content.EsAccount;
import com.galaxy.meetup.client.android.content.EsEventData;
import com.galaxy.meetup.client.android.network.PlusiOperation;
import com.galaxy.meetup.client.android.network.http.HttpOperation;
import com.galaxy.meetup.server.client.domain.EventSelector;
import com.galaxy.meetup.server.client.domain.request.EventRespondRequest;
import com.galaxy.meetup.server.client.domain.response.EventRespondResponse;
import com.galaxy.meetup.server.client.v2.request.Request;
import com.galaxy.meetup.server.client.v2.response.Response;
/**
*
* @author sihai
*
*/
public class SendEventRsvpOperation extends PlusiOperation {
private final String mAuthKey;
private final String mEventId;
private final String mRollbackRsvpType;
private final String mRsvpType;
public SendEventRsvpOperation(Context context, EsAccount esaccount, String s, String s1, String s2, String s3, Intent intent,
HttpOperation.OperationListener operationlistener)
{
super(context, esaccount, "eventrespond", null, null, EventRespondResponse.class);
mAuthKey = s1;
mEventId = s;
mRsvpType = s2;
mRollbackRsvpType = s3;
}
private void rollback()
{
if(TextUtils.equals(EsEventData.getRsvpType(EsEventData.getPlusEvent(mContext, mAccount, mEventId)), mRsvpType))
EsEventData.setRsvpType(mContext, mAccount, mEventId, mRollbackRsvpType);
EsEventData.refreshEvent(mContext, mAccount, mEventId);
}
protected final void handleResponse(Response response)
throws IOException
{
EventRespondResponse eventrespondresponse = (EventRespondResponse)response;
if(eventrespondresponse.result != null && !TextUtils.equals(eventrespondresponse.result, Status.SUCCESS.name()))
rollback();
else
EsEventData.setRsvpType(mContext, mAccount, mEventId, mRsvpType);
}
public final void onHttpOperationComplete(int i, String s, Exception exception)
{
if(i != 200 || exception != null)
rollback();
}
protected final Request populateRequest()
{
EventRespondRequest eventrespondrequest = new EventRespondRequest();
eventrespondrequest.eventId = mEventId;
eventrespondrequest.response = mRsvpType;
EventSelector eventselector = new EventSelector();
eventselector.authKey = mAuthKey;
eventselector.eventId = mEventId;
eventrespondrequest.eventSelector = eventselector;
return eventrespondrequest;
}
private static enum Status {
UNKNOWN,
SUCCESS,
REJECTED_OFF_NETWORK_DISPLAY_NAME;
}
}