import com.atlassian.jira.ComponentManager;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.customfields.manager.OptionsManager
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.component.ComponentAccessor;
import java.net.URL;
import java.net.URLEncoder;
import java.net.MalformedURLException;
import java.io.UnsupportedEncodingException;
import com.atlassian.jira.issue.comments.CommentManager
import com.onresolve.scriptrunner.runner.util.UserMessageUtil

Random random = new Random()
String scriptRunIdent = Math.abs(random.nextInt() % 99999 ) +1

String IssueKey = issue.key
//String currentUser = ((WorkflowContext) transientVars.get("context")).getCaller();
String projectKey = issue.getProjectObject().getKey()
String issueStatus = issue.getStatus().getName();


log.setLevel(org.apache.log4j.Level.INFO);
log.info "Script=MakeReport.groovy IssueKey=" + IssueKey + " ProjectKey=" + projectKey + " ScriptRunIdent=" + scriptRunIdent + " Action=StartScript"

CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();

CustomField ReportTypeField = customFieldManager.getCustomFieldObject("customfield_11204")
String ReportType = (String) issue.getCustomFieldValue(ReportTypeField)

CustomField ListIdField = customFieldManager.getCustomFieldObject("customfield_11207")
String ListId = (String)issue.getCustomFieldValue(ListIdField)

CustomField StatusField = customFieldManager.getCustomFieldObject("customfield_11300")
def StatusChoice = issue.getCustomFieldValue(StatusField)

log.info StatusChoice.getClass()

CustomField OutputField = customFieldManager.getCustomFieldObject("customfield_11301")
String Output = issue.getCustomFieldValue(OutputField)


if (ReportType == "RMF Structure")
{
ReportType = "rmf"
}

if (ReportType == "Issue Structure") 

ReportType = "forrest"
}

def requestMethod = "PUT";
def URLParam = []
def baseURL = "http://localhost/index.cgi/=/queue/"


def url = new java.net.URL(baseURL);
URLConnection connection = url.openConnection();
connection.setRequestMethod(requestMethod);
connection.doOutput = true
connection.setUseCaches(false);

//PUT Content
OutputStreamWriter out = new OutputStreamWriter(
connection.getOutputStream());

String Format = "0"
String Type = "0"
String Post = ""

if (Output.toLowerCase() == "csv")
{
Format="1"
}

Post = Post + "type=" + Type
Post = Post + "&format=" + Format
Post = Post + "&content_id=" + ListId
Post = Post + "&jira_key=" + IssueKey

if (StatusChoice)
{
// Post = Post + "&xoptions=%7B'status':'" + StatusChoice.getValue().toString() + "'%7D"
}

out.write(Post)
out.close();

try
{
log.info "Script=MakeReport.groovy IssueKey=" + IssueKey + " ScriptRunIdent=" + scriptRunIdent + " URL=" + baseURL
log.info "Script=MakeReport.groovy IssueKey=" + IssueKey + " ScriptRunIdent=" + scriptRunIdent + " Post=" + Post
log.info "Script=MakeReport.groovy IssueKey=" + IssueKey + " ScriptRunIdent=" + scriptRunIdent + " Action=GetHttpsConnection"
connection.connect();
try
{
connection.getContent()
}
catch (Exception ex)
{
log.info "Script=MakeReport.groovy IssueKey=" + IssueKey + " ScriptRunIdent=" + scriptRunIdent + " Error=ConnectionError Message="+ ex.getMessage()
}
String Status=connection.getResponseCode()
String Message=connection.getResponseMessage()

log.info "Script=MakeReport.groovy IssueKey=" + IssueKey + " ScriptRunIdent=" + scriptRunIdent + " Status=" + Status
log.info "Script=MakeReport.groovy IssueKey=" + IssueKey + " ScriptRunIdent=" + scriptRunIdent + " Message=" + Message
}
finally {}

log.info "Script=CreatePage.groovy IssueKey=" + IssueKey + " ScriptRunIdent=" + scriptRunIdent + " Action=EndScript"