package crmdna.api.servlet; 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.group.Group; import crmdna.practice.Practice; import crmdna.practice.Practice.PracticeProp; import crmdna.program.Program; import crmdna.program.ProgramProp; import crmdna.program.SessionProp; import crmdna.programtype.ProgramType; import crmdna.programtype.ProgramTypeProp; import crmdna.registration.Registration; import crmdna.teacher.Teacher; import crmdna.teacher.Teacher.TeacherProp; import crmdna.user.User; import crmdna.venue.Venue; import crmdna.venue.Venue.VenueProp; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class ProgramServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { String action = request.getParameter("action"); if (action == null) { ServletUtils.setJson(response, new APIResponse().status(Status.ERROR_RESOURCE_NOT_FOUND)); } else { String client = request.getParameter("client"); if (client == null) client = "isha"; String login = ServletUtils.getLogin(request); try { if (action.equals("getOngoingSessions")) { List<SessionProp> sessionProps = Program.getOngoingSessions(client, ServletUtils.getIntParam(request, "dateYYYYMMDD"), login); ServletUtils.setJson(response, new APIResponse().status(Status.SUCCESS).object(sessionProps)); } else if (action.equals("query")) { List<ProgramProp> programProps = Program.query(client, ServletUtils.getIntParam(request, "startYYYYMMDD"), ServletUtils.getIntParam(request, "endYYYYMMDD"), ServletUtils.getLongParamsAsSet(request, "programTypeId"), null, null, null); ServletUtils.setJson(response, new APIResponse().status(Status.SUCCESS).object(programProps)); } else if (action.equals("queryDetailed")) { List<ProgramProp> _programProps = Program.query(client, ServletUtils.getIntParam(request, "startYYYYMMDD"), ServletUtils.getIntParam(request, "endYYYYMMDD"), ServletUtils.getLongParamsAsSet(request, "programTypeId"), null, null, null); ArrayList<ProgramProp> programProps = new ArrayList<>(); for (ProgramProp programProp : _programProps) { programProp.regSummary = Registration.getSummary(client, programProp.programId, User.SUPER_USER); programProps.add(programProp); } ServletUtils.setJson(response, new APIResponse().status(Status.SUCCESS).object(programProps)); } else if (action.equals("get")) { ProgramProp programProp = Program.safeGet(client, ServletUtils.getLongParam(request, "programId")).toProp( client); ServletUtils.setJson(response, new APIResponse().status(Status.SUCCESS).object(programProp)); } else if (action.equals("getAllProgramTypes")) { List<ProgramTypeProp> props = ProgramType.getAll(client); ServletUtils.setJson(response, new APIResponse().status(Status.SUCCESS).object(props)); } else if (action.equals("getAllPractices")) { List<PracticeProp> props = Practice.getAll(client); ServletUtils.setJson(response, new APIResponse().status(Status.SUCCESS).object(props)); } else if (action.equals("getAllTeachers")) { List<TeacherProp> props = Teacher.getAll(client); ServletUtils.setJson(response, new APIResponse().status(Status.SUCCESS).object(props)); } else if (action.equals("getAllVenues")) { List<VenueProp> props = Venue.getAll(client); ServletUtils.setJson(response, new APIResponse().status(Status.SUCCESS).object(props)); } else if (action.equals("create")) { long groupId = Group.safeGetByIdOrName( client, ServletUtils.getStrParam(request, "group")).toProp().groupId; ProgramProp programProp = Program.create(client, groupId, ServletUtils.getLongParam(request, "programTypeId"), ServletUtils.getLongParam(request, "venueId"), ServletUtils.getLongParam(request, "teacherId"), ServletUtils.getIntParam(request, "startYYYYMMDD"), ServletUtils.getIntParam(request, "endYYYYMMDD"), 1, "", ServletUtils.getDoubleParam(request, "fee"), Utils.Currency.SGD, login); programProp = Program.setSpecialInstruction(client, programProp.programId, ServletUtils.getStrParam(request, "specialInstruction")); List<String> batch1SessionTimings = new ArrayList<>(); for (int i = 0; i < 15; i++) { String timings = ServletUtils.getStrParam(request, "batch1SessionTimings[" + i + "]"); if (timings != null) { batch1SessionTimings.add(timings); } } programProp = Program.setSessionTimings(client, programProp.programId, batch1SessionTimings, null, null, null, null); programProp = Program.setMaxParticipants(client, programProp.programId, ServletUtils.getIntParam(request, "maxParticipants")); ServletUtils.setJson(response, new APIResponse().status(Status.SUCCESS).object(programProp)); } else if (action.equals("update")) { ProgramProp programProp = Program.update(client, ServletUtils.getLongParam(request, "programId"), ServletUtils.getLongParam(request, "venueId"), ServletUtils.getLongParam(request, "teacherId"), ServletUtils.getIntParam(request, "startYYYYMMDD"), ServletUtils.getIntParam(request, "endYYYYMMDD"), 1, "", ServletUtils.getDoubleParam(request, "fee"), Utils.Currency.SGD, login); List<String> batch1SessionTimings = new ArrayList<>(); for (int i = 0; i < 15; i++) { String timings = ServletUtils.getStrParam(request, "batch1SessionTimings[" + i + "]"); if (timings != null) { batch1SessionTimings.add(timings); } } programProp = Program.setSessionTimings(client, programProp.programId, batch1SessionTimings, null, null, null, null); programProp = Program.setMaxParticipants(client, programProp.programId, ServletUtils.getIntParam(request, "maxParticipants")); programProp = Program.setDisabled(client, programProp.programId, ServletUtils.getBoolParam(request, "disabled")); ServletUtils.setJson(response, new APIResponse().status(Status.SUCCESS).object(programProp)); } else if (action.equals("setDisabled")) { ProgramProp programProp = Program.setDisabled(client, ServletUtils.getLongParam(request, "programId"), ServletUtils.getBoolParam(request, "disabled")); ServletUtils.setJson(response, new APIResponse().status(Status.SUCCESS).object(programProp)); } else { ServletUtils.setJson(response, new APIResponse().status(Status.ERROR_RESOURCE_INCORRECT)); } } catch (Exception ex) { ServletUtils.setJson(response, APIUtils.toAPIResponse(ex, true, new RequestInfo().client(client).req(request).login(login))); } } } }