private async Task <portCallMessage> genMessage() { //----------- Message --------------- var message = new portCallMessage { portCallId = portCallIdHiddenField.Value, vesselId = "urn:mrn:stm:vessel:IMO:" + shipImoHiddenField.Value, messageId = "urn:mrn:stm:portcdm:message:" + messageIdGenerator.generateMessageId(), reportedAt = dateHandler.getCurrentTimeString(), comment = commentBox.Text }; //--------- Service state ----------- if (!locationStateChosen()) { message.serviceState = new ServiceState(); message.serviceState.serviceObject = (ServiceObject)Enum.Parse(typeof(ServiceObject), messageTypeHiddenField.Value); message.serviceState.timeSequence = (ServiceTimeSequence)Enum.Parse(typeof(ServiceTimeSequence), serviceTimeSequenceDropDown.SelectedValue); message.serviceState.timeType = (TimeType)Enum.Parse(typeof(TimeType), timeTypeDropDown.SelectedValue); string serviceStateTime = setYearDropDown.SelectedValue + "-" + setMonthDropDown.SelectedValue + "-" + setDayDropDown.SelectedValue + "T" + setHourDropDown.SelectedValue + ":" + setMinuteDropDown.SelectedValue + ":00Z"; message.serviceState.time = dateHandler.stringToDate(serviceStateTime); //--------- Service state, location At ----------- if (atRadioButton.Checked) { message.serviceState.at = new Location(); message.serviceState.at.locationMRN = atLocationName.SelectedValue; } //--------- Service state, location between -------- else if (betweenRadioButton.Checked) { message.serviceState.between = new ServiceStateBetween(); message.serviceState.between.from = new Location(); message.serviceState.between.from.locationMRN = fixTrafficAreaBug(fromLocationName.SelectedValue); message.serviceState.between.to = new Location(); message.serviceState.between.to.locationMRN = fixTrafficAreaBug(toLocationName.SelectedValue); } } else { message.locationState = new LocationState(); message.locationState.referenceObject = LocationReferenceObject.VESSEL; string locationStateTime = setYearDropDown.SelectedValue + "-" + setMonthDropDown.SelectedValue + "-" + setDayDropDown.SelectedValue + "T" + setHourDropDown.SelectedValue + ":" + setMinuteDropDown.SelectedValue + ":00Z"; message.locationState.time = dateHandler.stringToDate(locationStateTime); message.locationState.timeType = (TimeType)Enum.Parse(typeof(TimeType), timeTypeDropDown.SelectedValue); if (messageTypeHiddenField.Value == "DEPARTURE_VESSEL") { message.locationState.departureLocation = new LocationStateDepartureLocation(); //------ Location State , departure location, from if (fromCheckBox.Checked) { message.locationState.departureLocation.from = new Location(); message.locationState.departureLocation.from.locationMRN = fixTrafficAreaBug(fromLocationName.SelectedValue); } //------ Location State , departure location, to if (toCheckBox.Checked) { message.locationState.departureLocation.to = new Location(); message.locationState.departureLocation.to.locationMRN = fixTrafficAreaBug(fromLocationName.SelectedValue); } } else if (messageTypeHiddenField.Value == "ARRIVAL_VESSEL") { message.locationState.arrivalLocation = new LocationStateArrivalLocation(); //------ Location State , arrival location, from if (fromCheckBox.Checked) { message.locationState.arrivalLocation.from = new Location(); message.locationState.arrivalLocation.from.locationMRN = fixTrafficAreaBug(fromLocationName.SelectedValue); } //------ Location State , arrival location, to if (toCheckBox.Checked) { message.locationState.arrivalLocation.to = new Location(); message.locationState.arrivalLocation.to.locationMRN = fixTrafficAreaBug(toLocationName.SelectedValue); } } } return(message); }