/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package controllers.infra; import com.emc.storageos.model.TaskResourceRep; import controllers.Tasks; import play.Logger; import play.data.validation.Email; import play.data.validation.MaxSize; import play.data.validation.Required; import play.data.validation.Validation; import play.mvc.Controller; import play.mvc.With; import util.MessagesUtils; import util.SupportUtils; import util.UserPreferencesUtils; import controllers.Common; import controllers.deadbolt.Restrict; import controllers.deadbolt.Restrictions; @With(Common.class) @Restrictions({ @Restrict("TENANT_ADMIN"), @Restrict("SYSTEM_ADMIN"), @Restrict("RESTRICTED_SYSTEM_ADMIN") }) public class SupportRequest extends Controller { private static String SUCCESS_KEY = "supportRequest.successful"; private static String ERROR_KEY = "supportRequest.error"; private static String COMMENT_TEMPLATE_KEY = "supportRequest.comment.template"; /** Default time to include logs (15 minutes). */ private static final long DEFAULT_LOG_TIME = 15 * 60 * 1000; public static void createSupportRequest() { SupportRequestForm supportRequest = new SupportRequestForm(); supportRequest.loadDefaults(); render(supportRequest); } public static void submitSupportRequest(SupportRequestForm supportRequest) { supportRequest.validate(); if (Validation.hasErrors()) { params.flash(); Validation.keep(); createSupportRequest(); } TaskResourceRep task = null; try { task = submit(supportRequest); flash.put("info", MessagesUtils.get(SUCCESS_KEY)); } catch (RuntimeException e) { flash.error(MessagesUtils.get(ERROR_KEY, e.getMessage())); Logger.error(e, e.getMessage()); createSupportRequest(); } Tasks.details(task.getId().toString()); } protected static TaskResourceRep submit(SupportRequestForm supportRequest) { return SupportUtils.submitSupportRequest(supportRequest.email, supportRequest.comment, supportRequest.start, supportRequest.end); } public static class SupportRequestForm { @Required @Email public String email; @MaxSize(1000) public String comment; public long start; public long end; public boolean endIsCurrentTime; public SupportRequestForm() { } public void loadDefaults() { email = UserPreferencesUtils.getEmail(); comment = MessagesUtils.get(COMMENT_TEMPLATE_KEY); start = System.currentTimeMillis() - DEFAULT_LOG_TIME; end = System.currentTimeMillis(); endIsCurrentTime = true; } public void validate() { Validation.valid("supportRequest", this); if (start <= 0) { Validation.addError("supportRequest.start", "validation.required"); } if (end <= 0) { Validation.addError("supportRequest.end", "validation.required"); } if (end < start) { String error = "supportRequest.error.endBeforeStart"; Validation.addError("supportRequest.start", error); Validation.addError("supportRequest.end", error); } } } }