Quintiq file version 2.0
#parent: #root
Method InitializeDataHolder (
  structured[UnitPeriodTime] selection
) id:Method_DialogCreateEditUnitAvailability_InitializeDataHolder
{
  #keys: '[151892.0.49084539]'
  Body:
  [*
    //Initial dataholder
    
    DataHolderUnitPeriodTime.Data( selection.Copy() );
    
    // Get the shift patterns that are allowed on every selected unit.
    shiftpatterns := ShiftPattern::GetAvailableShiftPatterns( MacroPlan, selection );
    DataHolderShiftPattern.Data( &shiftpatterns );
    
    firstElement := minselect( selection, Elements, e, true, e.Start() );
    
    // Need this for excluding itself in pre-condition primary keys checking.
    data := shadow( firstElement.UnitAvailability() );
    
    // In case selection.Element( 0 ) doesn't bind to any unit availability, calling SetDefaultValue method will return null error.
    // Check start in case of editing from UPT later than the existing UA, the Start date will be off if we pass in existing UA
    if( isnull( data )
        or data.Start() <> firstElement.Start() )
    {
      data := firstElement.Unit().UnitAvailability( relshadow, UnitID := firstElement.Unit().ID(), Start := firstElement.Start() );
    }
    
    DataHolderDialogData.Data( &data );
    Form.SetDefaultValue( firstElement );
    ApplicationMacroPlanner.ShowFormModal( this );
  *]
}
