package crmdna.api.endpoint;
import com.google.api.server.spi.config.Api;
import com.google.api.server.spi.config.ApiMethod;
import com.google.api.server.spi.config.ApiMethod.HttpMethod;
import com.google.appengine.api.users.User;
import crmdna.api.endpoint.ProgramIshaApi.IshaProgramType;
import crmdna.common.DateUtils;
import crmdna.common.Utils;
import crmdna.common.api.APIResponse;
import crmdna.common.api.APIResponse.Status;
import crmdna.common.api.APIUtils;
import crmdna.common.api.RequestInfo;
import crmdna.member.Member;
import crmdna.member.UnverifiedProgramProp;
import crmdna.programtype.ProgramType;
import javax.annotation.Nullable;
import javax.inject.Named;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import static crmdna.common.AssertUtils.ensure;
@Api(name = "member")
public class MemberIshaApi {
@ApiMethod(path = "addUnverifiedProgram", httpMethod = HttpMethod.POST)
public APIResponse addUnverifiedProgram(@Named("memberId") long memberId,
@Nullable @Named("programTypeDropDown") IshaProgramType programTypeEnum,
@Nullable @Named("programTypeIdOrName") String programTypeIdOrName,
@Named("month") DateUtils.Month month, @Named("year") int year, @Named("city") String city,
@Nullable @Named("country") String country, @Nullable @Named("teacher") String teacher,
@Nullable @Named("showStackTrace") Boolean showStackTrace, HttpServletRequest req, User user) {
String client = "isha";
String login = null;
try {
login = Utils.getLoginEmail(user);
ensure((programTypeEnum != null) ^ (programTypeIdOrName != null),
"Either programTypeDropDown or programTypeIdOrName (Exactly 1) should be specified");
if (programTypeEnum != null)
programTypeIdOrName = programTypeEnum.toString();
long programTypeId =
ProgramType.safeGetByIdOrName(client, programTypeIdOrName).toProp(client).programTypeId;
List<UnverifiedProgramProp> list =
Member.addUnverifiedProgram(client, memberId, programTypeId, month, year, city, country,
teacher, login);
return new APIResponse().status(Status.SUCCESS).object(list);
} catch (Exception ex) {
return APIUtils.toAPIResponse(ex, showStackTrace, new RequestInfo().client(client).req(req)
.login(login));
}
}
@ApiMethod(path = "deleteUnverifiedProgram", httpMethod = HttpMethod.POST)
public APIResponse deleteUnverifiedProgram(@Named("memberId") long memberId,
@Named("unverifiedProgramId") int unverifiedProgramId,
@Nullable @Named("showStackTrace") Boolean showStackTrace, HttpServletRequest req, User user) {
String client = "isha";
String login = null;
try {
login = Utils.getLoginEmail(user);
List<UnverifiedProgramProp> list =
Member.deleteUnverifiedProgram(client, memberId, unverifiedProgramId, login);
return new APIResponse().status(Status.SUCCESS).object(list);
} catch (Exception ex) {
return APIUtils.toAPIResponse(ex, showStackTrace, new RequestInfo().client(client).req(req)
.login(login));
}
}
}