package hu.sch.web.rest;
import hu.sch.domain.user.User;
import hu.sch.services.MembershipManagerLocal;
import hu.sch.web.rest.dto.EntitlementProducer;
import hu.sch.web.rest.dto.ProfileResult;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author balo
*/
@Path("/profile")
public class Profile extends PekWebservice {
@Inject
private MembershipManagerLocal membershipManager;
@GET
@Produces(MediaType.APPLICATION_JSON)
@RequestScoped
@Path("/neptun/{neptun}")
public ProfileResult getProfileByNeptun(
@PathParam("neptun") final String neptun,
@Context UriInfo context) {
doAudit();
checkNeptun(neptun);
final User user = findUserByNeptun(neptun);
final ProfileResult result = new ProfileResult(user, createEntitlement(user));
return result;
}
@GET
@Produces(MediaType.APPLICATION_JSON)
@RequestScoped
@Path("/uid/{uid}")
public ProfileResult getProfileByUid(
@PathParam("uid") final String uid,
@Context UriInfo context) {
doAudit();
checkUid(uid.toLowerCase()); //toLowerCase needs because the UID_PATTERN is case sensitive
final User user = findUserByUid(uid);
final ProfileResult result = new ProfileResult(user, createEntitlement(user));
return result;
}
private String createEntitlement(User user) {
return new EntitlementProducer(user, membershipManager).createEntitlement();
}
}