package hu.sch.web.kp.valuation;
import hu.sch.domain.Group;
import hu.sch.services.ValuationManagerLocal;
import hu.sch.services.exceptions.PekEJBException;
import hu.sch.services.exceptions.PekErrorCode;
import hu.sch.web.kp.KorokPage;
import hu.sch.web.wicket.behaviors.KeepAliveBehavior;
import hu.sch.web.wicket.components.TinyMCEContainer;
import javax.inject.Inject;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.markup.head.JavaScriptReferenceHeaderItem;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.internal.HtmlHeaderContainer;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.resource.JavaScriptResourceReference;
import org.apache.wicket.util.string.StringValueConversionException;
/**
*
* @author hege
*/
public class NewValuation extends KorokPage {
@Inject
ValuationManagerLocal valuationManager;
private String valuationText;
private String principle;
private static final JavaScriptResourceReference NEW_VALUATION_JS = new JavaScriptResourceReference(NewValuation.class, "NewValuation.js");
public NewValuation(PageParameters params) {
final Group group;
Long groupId = null;
try {
groupId = params.get("id").toLong();
} catch (StringValueConversionException ex) {
}
if (groupId == null || (group = groupManager.findGroupById(groupId)) == null) {
getSession().error("Hibás paraméter!");
throw new RestartResponseException(getApplication().getHomePage());
}
if (!isUserGroupLeader(group)) {
// csak körvezető adhat le új értékelést
getSession().error(getLocalizer().getString("err.NincsJog", null));
throw new RestartResponseException(getApplication().getHomePage());
}
if (!valuationManager.isErtekelesLeadhato(group)) {
getSession().info(getLocalizer().getString("err.UjErtekelesNemAdhatoLe", this));
setResponsePage(Valuations.class);
return;
}
setHeaderLabelText(group.getName());
Form<Void> newValuationForm = new Form<Void>("newValuationForm") {
@Override
protected void onSubmit() {
try {
valuationManager.addNewValuation(group, getUser(), valuationText, principle);
} catch (PekEJBException ex) {
// on duplicate craete error do nothing
if (ex.getErrorCode() != PekErrorCode.DATABASE_CREATE_VALUATION_DUPLICATE) {
getSession().error(getLocalizer().getString("err.ErtekelesSikertelenMentes", this));
return;
}
}
getSession().info(getLocalizer().getString("info.ErtekelesMentve", this));
setResponsePage(Valuations.class);
}
};
newValuationForm.add(new KeepAliveBehavior());
newValuationForm.add(new TinyMCEContainer("valuationText", new PropertyModel<String>(this, "valuationText"), true));
newValuationForm.add(new TinyMCEContainer("principle", new PropertyModel<String>(this, "principle"), true));
add(newValuationForm);
}
@Override
public void renderHead(IHeaderResponse response) {
response.render(JavaScriptHeaderItem.forReference(getApplication().getJavaScriptLibrarySettings().getJQueryReference()));
response.render(JavaScriptReferenceHeaderItem.forReference(NEW_VALUATION_JS));
super.renderHead(response);
}
}