package org.karmaexchange.resources.msg;
import static org.karmaexchange.util.OfyService.ofy;
import java.util.List;
import javax.annotation.Nullable;
import javax.xml.bind.annotation.XmlRootElement;
import org.karmaexchange.dao.CauseType;
import org.karmaexchange.dao.Event;
import org.karmaexchange.dao.KeyWrapper;
import org.karmaexchange.dao.Organization;
import org.karmaexchange.dao.Review;
import org.karmaexchange.dao.User;
import org.karmaexchange.dao.Event.RegistrationInfo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
@XmlRootElement
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper=true)
@ToString(callSuper=true)
public class ExpandedEventSearchView extends EventSearchView {
private String description;
private EventParticipantView firstOrganizer;
private int numOrganizers;
// TODO(avaliani): need to expand causes.
private List<CauseType> causes;
public static ExpandedEventSearchView create(Event event) {
// Only fetch the review if the current user is registered for the event.
Review review = null;
if (event.getRegistrationInfo() == RegistrationInfo.REGISTERED) {
review = ofy().load().key(Review.getKeyForCurrentUser(event)).now();
}
Organization sponsoringOrg =
ofy().load().key(KeyWrapper.toKey(event.getSponsoringOrg())).now();
return new ExpandedEventSearchView(event, sponsoringOrg, review);
}
private ExpandedEventSearchView(Event event, @Nullable Organization fetchedOrg,
@Nullable Review currentUserReview) {
super(event, fetchedOrg, currentUserReview, null);
description = event.getDescription();
User user = ofy().load().key(KeyWrapper.toKey(event.getOrganizers().get(0))).now();
if (user != null) {
firstOrganizer = EventParticipantView.create(user);
}
numOrganizers = event.getOrganizers().size();
causes = event.getCauses();
}
}