55use Webfactor \Laravel \Generators \Contracts \ServiceAbstract ;
66use Webfactor \Laravel \Generators \Contracts \ServiceInterface ;
77use Webfactor \Laravel \Generators \Helper \ShortSyntaxArray ;
8+ use Webfactor \Laravel \Generators \Schemas \CrudColumn ;
9+ use Webfactor \Laravel \Generators \Schemas \CrudField ;
810
911class BackpackCrudControllerService extends ServiceAbstract implements ServiceInterface
1012{
@@ -21,6 +23,10 @@ public function call()
2123 ]);
2224
2325 $ this ->addLatestFileToIdeStack ();
26+
27+ $ this ->setColumnsFromSchema ();
28+ $ this ->setFieldsFromSchema ();
29+
2430 $ this ->fillColumnsAndFieldsInGeneratedControllerFromSchema ();
2531 }
2632
@@ -29,37 +35,59 @@ public function getName(string $entity): string
2935 return ucfirst ($ entity );
3036 }
3137
32- private function fillColumnsAndFieldsInGeneratedControllerFromSchema ()
38+ private function fillColumnsAndFieldsInGeneratedControllerFromSchema (): void
3339 {
3440 $ controllerFile = end ($ this ->command ->filesToBeOpened );
3541
3642 $ controller = $ this ->filesystem ->get ($ controllerFile );
37- $ controller = str_replace ('__columns__ ' , $ this ->getColumnsFromSchema (), $ controller );
38- $ controller = str_replace ('__fields__ ' , $ this ->getFieldsFromSchema (), $ controller );
43+ $ controller = str_replace ('__columns__ ' , $ this ->getColumnsAsString (), $ controller );
44+ $ controller = str_replace ('__fields__ ' , $ this ->getfieldsAsString (), $ controller );
3945 $ this ->filesystem ->put ($ controllerFile , $ controller );
4046 }
4147
48+ private function setColumnsFromSchema (): void
49+ {
50+ $ this ->command ->schema ->getStructure ()->each (function ($ field ) {
51+ array_push ($ this ->columns , new CrudColumn ($ field ));
52+ });
53+ }
54+
55+ private function setFieldsFromSchema (): void
56+ {
57+ $ this ->command ->schema ->getStructure ()->each (function ($ field ) {
58+ array_push ($ this ->fields , new CrudField ($ field ));
59+ });
60+ }
61+
4262 /**
4363 * @return string
4464 */
45- private function getColumnsFromSchema ()
65+ private function getColumnsAsString (): string
4666 {
47- $ this ->command ->schema ->getStructure ()->each (function ($ field ) {
48- array_push ($ this ->columns , $ field ->makeColumn ());
49- });
67+ $ columnsArray = [];
5068
51- return ShortSyntaxArray::parse ($ this ->columns );
69+ foreach ($ this ->columns as $ crudColumn ) {
70+ if ($ column = $ crudColumn ->generateColumn ()) {
71+ array_push ($ columnsArray , $ column );
72+ }
73+ }
74+
75+ return ShortSyntaxArray::parse ($ columnsArray );
5276 }
5377
5478 /**
5579 * @return string
5680 */
57- private function getFieldsFromSchema ()
81+ private function getfieldsAsString (): string
5882 {
59- $ this ->command ->schema ->getStructure ()->each (function ($ field ) {
60- array_push ($ this ->fields , $ field ->makeField ());
61- });
83+ $ fieldsArray = [];
84+
85+ foreach ($ this ->fields as $ crudfield ) {
86+ if ($ field = $ crudfield ->generateField ()) {
87+ array_push ($ fieldsArray , $ field );
88+ }
89+ }
6290
63- return ShortSyntaxArray::parse ($ this -> fields );
91+ return ShortSyntaxArray::parse ($ fieldsArray );
6492 }
6593}
0 commit comments