Quintiq file version 2.0
#parent: #root
Method OnOk () id:Method_DialogCreateEditCampaign_OnOk
{
  #keys: '[134266.1.1955254560]'
  Body:
  [*
    // Set data binding before apply changes
    data := DataHolderDialogData.Data();
    
    // Workaround: No databinding, so we set the dialog data manually before apply changes
    data.HasInputMaxQuantity( EditorCampaignMaxQuantity.Enabled() );
    data.HasInputMaxDuration( DurationSelectorMaxDuration.Enabled() );
    
    data.MinQuantity( ApplicationMacroPlanner.FormatStringToReal( EditorCampaignMinQuantity.Text() ) );
    data.MaxQuantity( ApplicationMacroPlanner.FormatStringToReal( EditorCampaignMaxQuantity.Text() ) );
    data.MinDuration( DurationSelectorMinDuration.Duration() );
    data.MaxDuration( DurationSelectorMaxDuration.Duration() );
    
    // Disabled button to prevent the possibility of multiple firing
    btnOK.Enabled( false, '' );
    
    // When the user clicks ok, 
    // we either create or edit the data
    this.ApplyChanges();
    
    
    
    if( isnull( data.WrappedInstance() ) )
    {
      newcampaign := null( Campaign_MP );
      campaignid := OS::GenerateGUIDAsString();
                                           
      if( CheckBoxIsCreateAndResequence.Checked() )
      {
        newcampaign := Campaign_MP::CreateAndResequence( selCampaignType_MP.Data().Unit(),
                                                         data.EarliestStart(),
                                                         data.SequenceNumberForExcel(),
                                                         data.MinQuantity(),
                                                         data.MaxQuantity(),
                                                         data.MinDuration(),
                                                         data.MaxDuration(),
                                                         selCampaignType_MP.Data().Name(),
                                                         campaignid,
                                                         data.Comment(),
                                                         data.HasInputMaxQuantity() and RadioButtonGroupQuantityDuration.BoundValue() = GlobalParameters_MP::GetCampaignTransitionsTypeQuantity(),
                                                         data.HasInputMaxDuration() and RadioButtonGroupQuantityDuration.BoundValue() = GlobalParameters_MP::GetCampaignTransitionsTypeDuration(),
                                                         false,
                                                         DataHolderTargetCampaignForResequence.Data(),
                                                         DataHolderTransitionForReseuqnece.Data(),
                                                         DateTimeSelectorDroptimeForResequence.DateTime() ); 
      }
      else
      {
        newcampaign := Campaign_MP::Create( selCampaignType_MP.Data().Unit(),
                                            data.EarliestStart(),
                                            data.SequenceNumberForExcel(),
                                            data.MinQuantity(),
                                            data.MaxQuantity(),
                                            data.MinDuration(),
                                            data.MaxDuration(),
                                            selCampaignType_MP.Data().Name(),
                                            campaignid,
                                            data.Comment(),
                                            data.HasInputMaxQuantity() and RadioButtonGroupQuantityDuration.BoundValue() = GlobalParameters_MP::GetCampaignTransitionsTypeQuantity(),
                                            data.HasInputMaxDuration() and RadioButtonGroupQuantityDuration.BoundValue() = GlobalParameters_MP::GetCampaignTransitionsTypeDuration(),
                                            false /*isfromdb*/ );  
      }  
      // Access the form, select the new campaign
      formCampaign := DataHolderForm.Data();
      // Update the form selection only if the dialog is opened from the form
      if( not isnull( formCampaign ) )
      {
        DataHolderForm.Data().ListCampaign().SelectByKey( newcampaign.Key() );
      }
      
    }
    else
    {
     data.WrappedInstance().Update( selCampaignType_MP.Data().Unit(),
                                    data.EarliestStart(),
                                    data.SequenceNumberForExcel(),
                                    data.MinQuantity(),
                                    data.MaxQuantity(),
                                    data.MinDuration(),
                                    data.MaxDuration(),
                                    selCampaignType_MP.Data().Name(),
                                    data.CampaignID(),
                                    data.Comment(),
                                    data.HasInputMaxQuantity() and RadioButtonGroupQuantityDuration.BoundValue() = GlobalParameters_MP::GetCampaignTransitionsTypeQuantity(),
                                    data.HasInputMaxDuration() and RadioButtonGroupQuantityDuration.BoundValue() = GlobalParameters_MP::GetCampaignTransitionsTypeDuration(),
                                    false /*isfromdb*/ );
    }
    
    this.Close();
  *]
}
