Passed
Push — main ( 3cebb0...a2c37a )
by PRATIK
03:46
created

MakeAPIResource::makeResource()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Pratiksh\Adminetic\Services;
4
5
use Illuminate\Support\Facades\Artisan;
6
use Illuminate\Support\Str;
7
use Pratiksh\Adminetic\Services\Helper\CommandHelper;
8
9
class MakeAPIResource extends CommandHelper
10
{
11
    public static function makeRestAPI($name, $path)
12
    {
13
        // Making API Resource Controller
14
        self::makeRestAPIController($name, $path);
15
    }
16
17
    public static function makeClientAPI($name, $path)
18
    {
19
        self::makeClientAPIResource($name, $path);
20
    }
21
22
    public static function makeAPI($name, $path)
23
    {
24
        // Making Resource and Collection
25
        self::makeAPIResource($name, $path);
26
        // Making Resource API Controller
27
        self::makeClientAPIResource($name, $path);
28
        // Making Client API Controller
29
        self::makeRestAPIController($name, $path);
30
    }
31
32
    /**
33
     * Make API Resourceful Controller.
34
     */
35
    protected static function makeRestAPIController($name, $path)
36
    {
37
        if (!file_exists($dir_path = app_path('Http/Controllers/Admin/API/Restful'))) {
38
            mkdir($dir_path, 0777, true);
39
        }
40
41
        $controllerTemplate = str_replace(
42
            [
43
                '{{modelName}}',
44
                '{{modelPath}}',
45
                '{{modelNamePluralLowerCase}}',
46
                '{{modelNameSingularLowerCase}}',
47
            ],
48
            [
49
                $name,
50
                $path,
51
                strtolower(Str::plural($name)),
52
                strtolower($name),
53
            ],
54
            self::getStub('API/Restful/RestAPIController')
55
        );
56
        file_put_contents(app_path("/Http/Controllers/Admin/API/Restful/{$name}RestAPIController.php"), $controllerTemplate);
57
    }
58
59
60
    /**
61
     * Make Client API Resource.
62
     */
63
    protected static function makeClientAPIResource($name, $path)
64
    {
65
        // Making API Resource
66
        self::makeAPIResource($name, $path);
67
        // Making Controller
68
        if (!file_exists($dir_path = app_path('Http/Controllers/Admin/API/Client'))) {
69
            mkdir($dir_path, 0777, true);
70
        }
71
        $controllerTemplate = str_replace(
72
            [
73
                '{{modelName}}',
74
                '{{modelPath}}',
75
                '{{modelNamePluralLowerCase}}',
76
                '{{modelNameSingularLowerCase}}',
77
            ],
78
            [
79
                $name,
80
                $path,
81
                strtolower(Str::plural($name)),
82
                strtolower($name),
83
            ],
84
            self::getStub('API/Client/ClientAPIController')
85
        );
86
        file_put_contents(app_path("/Http/Controllers/Admin/API/Client/{$name}ClientAPIController.php"), $controllerTemplate);
87
    }
88
89
    protected static function makeAPIResource($name, $path)
90
    {
91
        if (!file_exists($dir_path = app_path("/Http/Resources/{$name}"))) {
92
            mkdir($dir_path, 0777, true);
93
        }
94
        // Making Collection
95
        $collectionTemplate = str_replace(
96
            [
97
                '{{modelName}}',
98
                '{{modelPath}}',
99
                '{{modelNamePluralLowerCase}}',
100
                '{{modelNameSingularLowerCase}}',
101
            ],
102
            [
103
                $name,
104
                $path,
105
                strtolower(Str::plural($name)),
106
                strtolower($name),
107
            ],
108
            self::getStub('API/Collection')
109
        );
110
        file_put_contents(app_path("/Http/Resources/{$name}/{$name}Collection.php"), $collectionTemplate);
111
112
        // Making Resource
113
        $resourceTemplate = str_replace(
114
            [
115
                '{{modelName}}',
116
                '{{modelPath}}',
117
                '{{modelNamePluralLowerCase}}',
118
                '{{modelNameSingularLowerCase}}',
119
            ],
120
            [
121
                $name,
122
                $path,
123
                strtolower(Str::plural($name)),
124
                strtolower($name),
125
            ],
126
            self::getStub('API/Resource')
127
        );
128
        file_put_contents(app_path("/Http/Resources/{$name}/{$name}Resource.php"), $resourceTemplate);
129
    }
130
}
131