@@ -26,6 +26,7 @@ public partial class BPFManager : PluginControlBase, IMessageBusHost, IGitHubPlu
2626 private List < Entity > entityViews = null ;
2727 private List < MigrationError > migrationErrors = null ;
2828 private Entity bpfSelected = null ;
29+ private Entity bpfStageSelected = null ;
2930 private MessageBusEventArgs callerArgs = null ;
3031 private string fetchxmlQuery = null ;
3132 private string recordEntityToMigrate = null ;
@@ -53,7 +54,7 @@ public BPFManager()
5354
5455 public override void UpdateConnection ( IOrganizationService newService , ConnectionDetail detail , string actionName , object parameter )
5556 {
56- dm = new DataManager ( detail . ServiceClient ) ;
57+ dm = new DataManager ( detail . ServiceClient , detail . OrganizationMajorVersion ) ;
5758 IsVersionSupported ( detail ) ;
5859
5960 base . UpdateConnection ( newService , detail , actionName , parameter ) ;
@@ -104,6 +105,7 @@ private void BPFMigration_Load(object sender, EventArgs e)
104105
105106 //displaying the proper control for query
106107 radioButtonQueryView . Checked = true ;
108+ rbEnabledDisabledRecordsNo . Checked = true ;
107109 }
108110
109111 private void LoadSetting ( )
@@ -290,7 +292,7 @@ private void btnLoadBPFs_Click(object sender, EventArgs evt)
290292
291293 foreach ( var record in bpfList )
292294 {
293- cbTargetBPFList . Items . Add ( record . Attributes [ "name" ] ) ;
295+ cbTargetBPFList . Items . Add ( record . GetAttributeValue < string > ( "name" ) ) ;
294296 }
295297
296298 cbTargetBPFList . Enabled = true ;
@@ -305,7 +307,8 @@ private void cbTargetBPFList_SelectedIndexChanged(object sender, EventArgs evt)
305307 cbTargetBPFStages . Items . Clear ( ) ;
306308 cbTargetBPFStages . SelectedIndex = - 1 ;
307309 stageList = new List < Entity > ( ) ;
308- bpfSelected = bpfList . FirstOrDefault ( x => x . Attributes [ "name" ] == cbTargetBPFList . SelectedItem ) ;
310+ bpfSelected = bpfList . FirstOrDefault ( x => x . GetAttributeValue < string > ( "name" ) == cbTargetBPFList . SelectedItem . ToString ( ) ) ;
311+ lblTargetStageEntityDiff . Visible = false ;
309312
310313 WorkAsync ( new WorkAsyncInfo
311314 {
@@ -331,9 +334,7 @@ private void cbTargetBPFList_SelectedIndexChanged(object sender, EventArgs evt)
331334 }
332335
333336 foreach ( var stage in stageList )
334- {
335- cbTargetBPFStages . Items . Add ( stage . Attributes [ "stagename" ] ) ;
336- }
337+ cbTargetBPFStages . Items . Add ( $ "{ stage . GetAttributeValue < string > ( "stagename" ) } ({ stage . GetAttributeValue < string > ( "primaryentitytypecode" ) } )") ;
337338
338339 cbTargetBPFStages . Enabled = true ;
339340
@@ -349,9 +350,20 @@ private void cbTargetBPFStages_SelectedIndexChanged(object sender, EventArgs e)
349350
350351 btnMigrateRecordBPF . Enabled = ( cbTargetBPFStages . SelectedItem != null || cbTargetBPFStages . SelectedItem . ToString ( ) != "" ) ;
351352
352- if ( recordToMigrateList != null && cbTargetBPFStages . SelectedItem != null &&
353- cbTargetBPFList . SelectedItem != null )
354- btnMigrateRecordBPF . Enabled = true ;
353+ if ( recordToMigrateList != null && cbTargetBPFStages . SelectedItem != null &&
354+ cbTargetBPFList . SelectedItem != null )
355+ {
356+ btnMigrateRecordBPF . Enabled = true ;
357+ rbEnabledDisabledRecordsNo . Enabled = true ;
358+ rbEnabledDisabledRecordsYes . Enabled = true ;
359+
360+ string targetStage = cbTargetBPFStages . SelectedItem . ToString ( ) . Split ( '(' ) [ 0 ] ;
361+ targetStage = targetStage . Remove ( targetStage . Length - 1 ) ;
362+ bpfStageSelected = stageList . FirstOrDefault ( w => w . GetAttributeValue < string > ( "stagename" ) == targetStage ) ;
363+
364+ lblTargetStageEntityDiff . Visible = bpfSelected . GetAttributeValue < string > ( "primaryentity" ) != bpfStageSelected . GetAttributeValue < string > ( "primaryentitytypecode" ) ;
365+ }
366+
355367 }
356368
357369 public bool AllowMigrateButton ( )
@@ -382,10 +394,7 @@ private void btnMigrateRecordBPF_Click(object sender, EventArgs evt)
382394 if ( ! AllowMigrateButton ( ) )
383395 return ;
384396
385- string bpfSelectedEntityTarget = bpfSelected . GetAttributeValue < string > ( "uniquename" ) ;
386- var stageId = stageList . FirstOrDefault ( w => w . Attributes [ "stagename" ] == cbTargetBPFStages . SelectedItem ) ;
387397 List < string > traversedpath = new List < string > ( ) ;
388- string targetStage = cbTargetBPFStages . SelectedItem . ToString ( ) ;
389398 var totalRecordMigrated = 0 ;
390399 totalRecordToMigrate = recordToMigrateList . Count ;
391400 migrationErrors = new List < MigrationError > ( ) ;
@@ -453,10 +462,40 @@ private void btnMigrateRecordBPF_Click(object sender, EventArgs evt)
453462
454463 var bpfInstanceExist = this . dm . GetExistingBpfInstance ( bpfSelectedEntityName , referencingAttributeEntityBpf , record . Id ) ;
455464
465+ if ( rbEnabledDisabledRecordsYes . Checked )
466+ {
467+ if ( record . GetAttributeValue < OptionSetValue > ( "statecode" ) . Value == 1 ) {
468+ record [ "statecode" ] = new OptionSetValue ( 0 ) ;
469+ UpsertRequest activateRecordRequest = new UpsertRequest ( )
470+ {
471+ Target = record
472+ } ;
473+
474+ executeMultipleRequestSetBPF . Requests . Add ( activateRecordRequest ) ;
475+ }
476+
477+ if ( bpfInstanceExist != null && bpfInstanceExist . GetAttributeValue < OptionSetValue > ( "statecode" ) . Value == 1 )
478+ {
479+ var bpfToUpdateActivate = new Entity ( bpfSelectedEntityName ) ;
480+ bpfToUpdateActivate . Id = bpfInstanceExist . Id ;
481+
482+ bpfToUpdateActivate [ "statecode" ] = new OptionSetValue ( 0 ) ;
483+ bpfToUpdateActivate [ "statuscode" ] = new OptionSetValue ( 1 ) ;
484+
485+ UpsertRequest upsertRequestBPFActivation = new UpsertRequest ( )
486+ {
487+ Target = bpfToUpdateActivate
488+ } ;
489+
490+ executeMultipleRequestSetBPF . Requests . Add ( upsertRequestBPFActivation ) ;
491+ }
492+ }
493+
456494 var bpfToUpdate = new Entity ( bpfSelectedEntityName ) ;
457495 if ( bpfInstanceExist != null ) bpfToUpdate . Id = bpfInstanceExist . Id ;
458496 bpfToUpdate [ referencingAttributeEntityBpf ] = record . ToEntityReference ( ) ;
459- bpfToUpdate [ "activestageid" ] = stageId . ToEntityReference ( ) ;
497+ bpfToUpdate [ "activestageid" ] = bpfStageSelected . ToEntityReference ( ) ;
498+
460499 UpsertRequest upsertRequest = new UpsertRequest ( )
461500 {
462501 Target = bpfToUpdate
@@ -628,9 +667,9 @@ private void comboBoxChooseEntity_SelectedIndexChanged(object sender, EventArgs
628667
629668 entityViews . AddRange ( systemViews . Union ( personalViews ) ) ;
630669 comboBoxChooseView . Items . Add ( "####### System Views #######" ) ;
631- comboBoxChooseView . Items . AddRange ( systemViews . Select ( x => x . Attributes [ "name" ] ) . OrderBy ( x => x ) . ToArray ( ) ) ;
670+ comboBoxChooseView . Items . AddRange ( systemViews . Select ( x => x . GetAttributeValue < string > ( "name" ) ) . OrderBy ( x => x ) . ToArray ( ) ) ;
632671 comboBoxChooseView . Items . Add ( "####### Personal Views #######" ) ;
633- comboBoxChooseView . Items . AddRange ( personalViews . Select ( x => x . Attributes [ "name" ] ) . OrderBy ( x => x ) . ToArray ( ) ) ;
672+ comboBoxChooseView . Items . AddRange ( personalViews . Select ( x => x . GetAttributeValue < string > ( "name" ) ) . OrderBy ( x => x ) . ToArray ( ) ) ;
634673 this . log . LogData ( EventType . Event , LogAction . BPFEntityViewsRetrieved ) ;
635674 } ,
636675 ProgressChanged = e => { SetWorkingMessage ( e . UserState . ToString ( ) ) ; }
@@ -690,7 +729,7 @@ private void comboBoxChooseView_SelectedIndexChanged(object sender, EventArgs e)
690729 return ;
691730 }
692731
693- var selectedView = entityViews . FirstOrDefault ( x => x . Attributes [ "name" ] == comboBoxChooseView . SelectedItem ) ;
732+ var selectedView = entityViews . FirstOrDefault ( x => x . GetAttributeValue < string > ( "name" ) == comboBoxChooseView . SelectedItem ) ;
694733 fetchxmlQuery = selectedView . GetAttributeValue < string > ( "fetchxml" ) ;
695734
696735 btnRetrieveRecordsFetchQuery . Enabled = ! String . IsNullOrEmpty ( fetchxmlQuery ) ;
@@ -741,11 +780,19 @@ private void manageEnablingOfControls(bool enabled)
741780 tsbCancel . Visible = ! enabled ;
742781 tssCancel . Visible = ! enabled ;
743782 pictureBoxPatience . Visible = ! enabled ;
783+ rbEnabledDisabledRecordsNo . Enabled = enabled ;
784+ rbEnabledDisabledRecordsYes . Enabled = enabled ;
785+
744786 }
745787
746788 private void tsbCancel_Click ( object sender , EventArgs e )
747789 {
748790 CancelWorker ( ) ;
749791 }
792+
793+ private void radioButton1_CheckedChanged ( object sender , EventArgs e )
794+ {
795+
796+ }
750797 }
751798}
0 commit comments