@@ -40,6 +40,58 @@ public function __construct()
4040 //
4141 }
4242
43+ public function create ($ id , array $ data )
44+ {
45+ $ option = Models \ServiceOptions::findOrFail ($ id );
46+
47+ $ validator = Validator::make ($ data , [
48+ 'name ' => 'required|string|min:1|max:255 ' ,
49+ 'description ' => 'required|string ' ,
50+ 'env_variable ' => 'required|regex:/^[\w]{1,255}$/ ' ,
51+ 'default_value ' => 'required|string|max:255 ' ,
52+ 'user_viewable ' => 'sometimes|required|numeric|size:1 ' ,
53+ 'user_editable ' => 'sometimes|required|numeric|size:1 ' ,
54+ 'required ' => 'sometimes|required|numeric|size:1 ' ,
55+ 'regex ' => 'required|string|min:1 '
56+ ]);
57+
58+ if ($ validator ->fails ()) {
59+ throw new DisplayValidationException ($ validator ->errors ());
60+ }
61+
62+ if (!preg_match ($ data ['regex ' ], $ data ['default_value ' ])) {
63+ throw new DisplayException ('The default value you entered cannot violate the regex requirements. ' );
64+ }
65+
66+ if (Models \ServiceVariables::where ('env_variable ' , $ data ['env_variable ' ])->where ('option_id ' , $ option ->id )->first ()) {
67+ throw new DisplayException ('An environment variable with that name already exists for this option. ' );
68+ }
69+
70+ $ data ['user_viewable ' ] = (isset ($ data ['user_viewable ' ]) && in_array ((int ) $ data ['user_viewable ' ], [0 , 1 ])) ? $ data ['user_viewable ' ] : 0 ;
71+ $ data ['user_editable ' ] = (isset ($ data ['user_editable ' ]) && in_array ((int ) $ data ['user_editable ' ], [0 , 1 ])) ? $ data ['user_editable ' ] : 0 ;
72+ $ data ['required ' ] = (isset ($ data ['required ' ]) && in_array ((int ) $ data ['required ' ], [0 , 1 ])) ? $ data ['required ' ] : 0 ;
73+
74+ $ variable = new Models \ServiceVariables ;
75+ $ variable ->option_id = $ option ->id ;
76+ $ variable ->fill ($ data );
77+ $ variable ->save ();
78+ }
79+
80+ public function delete ($ id ) {
81+ $ variable = Models \ServiceVariables::findOrFail ($ id );
82+
83+ DB ::beginTransaction ();
84+ try {
85+ Models \ServerVariables::where ('variable_id ' , $ variable ->id )->delete ();
86+ $ variable ->delete ();
87+
88+ DB ::commit ();
89+ } catch (\Exception $ ex ) {
90+ DB ::rollBack ();
91+ throw $ ex ;
92+ }
93+ }
94+
4395 public function update ($ id , array $ data )
4496 {
4597 $ variable = Models \ServiceVariables::findOrFail ($ id );
@@ -48,7 +100,7 @@ public function update($id, array $data)
48100 'name ' => 'sometimes|required|string|min:1|max:255 ' ,
49101 'description ' => 'sometimes|required|string ' ,
50102 'env_variable ' => 'sometimes|required|regex:/^[\w]{1,255}$/ ' ,
51- 'default_value ' => 'sometimes|required|string ' ,
103+ 'default_value ' => 'sometimes|required|string|max:255 ' ,
52104 'user_viewable ' => 'sometimes|required|numeric|size:1 ' ,
53105 'user_editable ' => 'sometimes|required|numeric|size:1 ' ,
54106 'required ' => 'sometimes|required|numeric|size:1 ' ,
@@ -66,6 +118,10 @@ public function update($id, array $data)
66118 throw new DisplayException ('The default value you entered cannot violate the regex requirements. ' );
67119 }
68120
121+ if (Models \ServiceVariables::where ('id ' , '!= ' , $ variable ->id )->where ('env_variable ' , $ data ['env_variable ' ])->where ('option_id ' , $ variable ->option_id )->first ()) {
122+ throw new DisplayException ('An environment variable with that name already exists for this option. ' );
123+ }
124+
69125 $ data ['user_viewable ' ] = (isset ($ data ['user_viewable ' ]) && in_array ((int ) $ data ['user_viewable ' ], [0 , 1 ])) ? $ data ['user_viewable ' ] : $ variable ->user_viewable ;
70126 $ data ['user_editable ' ] = (isset ($ data ['user_editable ' ]) && in_array ((int ) $ data ['user_editable ' ], [0 , 1 ])) ? $ data ['user_editable ' ] : $ variable ->user_editable ;
71127 $ data ['required ' ] = (isset ($ data ['required ' ]) && in_array ((int ) $ data ['required ' ], [0 , 1 ])) ? $ data ['required ' ] : $ variable ->required ;
0 commit comments