yanweiyuan3
2023-08-09 588bc7829387dfc761cc25f06f77d4c81818bd10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Quintiq file version 2.0
#parent: #root
StaticMethod ValidateInput (
  output String feedback_o,
  MacroPlan owner_i,
  OptimizerPuzzleWIP optimizerpuzzlewip_i,
  String optimizerpuzzlename_i
) declarative remote as Boolean
{
  Description:
  [*
    Verify if optimizer puzzle is valid
    - empty name
    - unique name
  *]
  TextBody:
  [*
    // Check if the values commited are valid
    feedback_o := '';
    
    // Check if name is empty
    // First check for performance reason
    if( optimizerpuzzlename_i = '' )
    {
      feedback_o := Translations::MP_OptimizerPuzzle_ValidateInput_IsNameEmpty(); 
    }
    // Check if opimizer is World
    else if( optimizerpuzzlewip_i.IsWorld() )
    {
      feedback_o := Translations::MP_OptimizerPuzzleBase_CannotEditWorld(); 
    }
    
    // Check if name is unique
    else if( exists( owner_i,
                     OptimizerPuzzle,
                     op,
                     optimizerpuzzlewip_i.CreateAsNew() or         // CreateAsNew = copy (versus edit), we always want consider all puzzle for name unique check
                     op <> optimizerpuzzlewip_i.OptimizerPuzzle(), // not preventing user from editing and keeping the same name
                     op.Name() = optimizerpuzzlename_i ) )
    {
      feedback_o := Translations::MP_OptimizerPuzzle_ValidateInput_IsNameUnique();
    }
        
    return feedback_o = '';
  *]
}