package crmdna.program;
import com.googlecode.objectify.annotation.Cache;
import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Id;
import com.googlecode.objectify.annotation.Index;
import crmdna.common.DateUtils;
import crmdna.common.Utils.Currency;
import crmdna.group.Group;
import crmdna.programtype.ProgramType;
import crmdna.teacher.Teacher;
import crmdna.venue.Venue;
import java.util.List;
@Entity
@Cache
public class ProgramEntity {
@Id
long programId;
@Index
long programTypeId;
@Index
int startYYYYMMDD;
@Index
int endYYYYMMDD;
@Index
long venueId;
@Index
long teacherId;
@Index
long groupId;
String description; // free text
int numBatches;
int maxParticipants;
boolean disabled;
double fee;
Currency ccy;
List<String> batch1SessionTimings;
List<String> batch2SessionTimings;
List<String> batch3SessionTimings;
List<String> batch4SessionTimings;
List<String> batch5SessionTimings;
String specialInstruction; // free text
public ProgramProp toProp(String client) {
//TODO: use batch get to make this more efficient, better to move it into a helper class and support batch operations
ProgramProp programProp = new ProgramProp();
programProp.programId = programId;
programProp.programTypeProp = ProgramType.safeGet(client, programTypeId).toProp(client);
programProp.groupProp = Group.safeGet(client, groupId).toProp();
programProp.startYYYYMMDD = startYYYYMMDD;
programProp.endYYYYMMDD = endYYYYMMDD;
programProp.venueProp = Venue.safeGet(client, venueId).toProp();
programProp.teacherProp = Teacher.safeGet(client, teacherId).toProp();
programProp.description = description;
programProp.numBatches = numBatches;
programProp.fee = fee;
programProp.ccy = ccy;
programProp.disabled = disabled;
programProp.batch1SessionTimings = batch1SessionTimings;
programProp.batch2SessionTimings = batch2SessionTimings;
programProp.batch3SessionTimings = batch3SessionTimings;
programProp.batch4SessionTimings = batch4SessionTimings;
programProp.batch5SessionTimings = batch5SessionTimings;
programProp.specialInstruction = specialInstruction;
programProp.maxParticipants = maxParticipants;
programProp.name =
programProp.programTypeProp.displayName + " "
+ DateUtils.getDurationAsString(startYYYYMMDD, endYYYYMMDD) + " @ "
+ programProp.venueProp.displayName;
programProp.shortName =
programProp.programTypeProp.displayName + " "
+ DateUtils.getDurationAsString(startYYYYMMDD, endYYYYMMDD) + " @ "
+ programProp.venueProp.shortName;
// eg: IshaKriya 3 Feb 2014 @ Woodlands CC (Singapore)
return programProp;
}
}