Quintiq file version 2.0
#parent: #root
Method CreateEdit (
  SWF_Step step
) id:Method_SWF_DialogCreateEditActivity_CreateEdit
{
  #keys: '[136682.0.604858867]'
  Body:
  [*
    // Create new activity or edit activity
    
    currentdate := SWF_WorkflowDataset.GlobalParameter().CurrentDate();
    createdon := currentdate;
    description := "";
    id := Key::ZeroKey();
    isdefaultopen := true;
    
    //set data for edit                                                                                               
    if( not isnull( DataHolderOriginActivity.Data() ) )
    {
      data := DataHolderOriginActivity.Data();
      id := data.ID()
      isdefaultopen := data.IsDefaultOpen();
      description := EditFieldDescription.Text();
      createdon := data.CreatedOn();
      
    }
    else// set for new activity
    {
      id := SWF_WorkflowDataset.GetNewGlobalID();  
      
    //Auto set created time and created user name
      description :=SWF_Translation::TRANSLATE_NewActivityCreatedBy( DateTime::Now(), SWF_WorkflowDataset.GetCurrentUser().Name() ) + String::NewLine() + EditFieldDescription.Text();  
    }
    
    selectedelement := this.GetSelectionAuthorizationElement();
    
    selected_authorization := SWF_AuthorizationBase::GetSelectedAuthorizationFromStringSelections( SWF_WorkflowDataset,DropDownStringListAssignedTo.Text(),
                                                                                                   selectedelement );
                                                                                                  
    step := DropDownListStep.Data();
    
    service := SWF_WorkflowDataset.Service();
    service.TR_CreateUpdateActivity(  id,
                                      EditFieldTitle.Text(),
                                      description,
                                      isdefaultopen, // user-created activities can still be linked to a step for the progress KPIs, but the status of the activity never depend on the step dependencies.
                                      true,
                                      DateTimeSelectorDueDate.DateTime().Date(),
                                      createdon,
                                      SWF_WorkflowDataset.GetCurrentUserID(),
                                      guard( selected_authorization.DisplayName(), '' ),
                                      ifexpr( isnull( step ), Key::ZeroKey(), step.ID() ),
                                      guard( DataHolderOriginActivity.Data().ViewLink(), '' ),
                                      guard( DropDownListView.Data().Id(), '' ) );
  *]
}
