Completed
Push — dev ( 7b715a...818eb2 )
by Darko
07:50
created

NntmuxResetPostProcessing::resetTv()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 17
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 12
c 2
b 0
f 0
dl 0
loc 17
rs 9.8666
cc 3
nc 3
nop 0
1
<?php
2
3
namespace App\Console\Commands;
4
5
use App\Models\Release;
6
use App\Models\Category;
7
use Blacklight\ColorCLI;
8
use Blacklight\ConsoleTools;
9
use Illuminate\Console\Command;
10
11
class NntmuxResetPostProcessing extends Command
12
{
13
    /**
14
     * @var array
15
     */
16
    private static $allowedCategories = [
17
        'music',
18
        'console',
19
        'movie',
20
        'game',
21
        'tv',
22
        'adult',
23
        'misc',
24
    ];
25
    /**
26
     * The name and signature of the console command.
27
     *
28
     * @var string
29
     */
30
    protected $signature = 'nntmux:resetpp {--c|category=* : Reset all, multiple or single category}';
31
32
    /**
33
     * The console command description.
34
     *
35
     * @var string
36
     */
37
    protected $description = 'Reset all, multiple or single release category postprocessing';
38
    /**
39
     * @var ColorCLI
40
     */
41
    private $colorCli;
42
43
    /**
44
     * @var ConsoleTools
45
     */
46
    private $consoleTools;
47
48
    /**
49
     * Create a new command instance.
50
     *
51
     * @return void
52
     */
53
    public function __construct()
54
    {
55
        parent::__construct();
56
        $this->colorCli = new ColorCLI();
57
        $this->consoleTools = new ConsoleTools();
58
    }
59
60
    /**
61
     * Execute the console command.
62
     *
63
     * @return mixed
64
     */
65
    public function handle()
66
    {
67
        if (empty($this->option('category'))) {
68
            $qry = Release::query()->select(['id'])->get();
69
            $affected = 0;
70
            $total = \count($qry);
71
            if ($total > 0) {
72
                $this->colorCli->header('Resetting all postprocessing');
73
                foreach ($qry as $releases) {
74
                    Release::query()->where('id', $releases->id)->update(
75
                        [
76
                            'consoleinfo_id' => null,
77
                            'gamesinfo_id' => null,
78
                            'imdbid' => null,
79
                            'movieinfo_id' => null,
80
                            'musicinfo_id' => null,
81
                            'bookinfo_id' => null,
82
                            'videos_id' => 0,
83
                            'tv_episodes_id' => 0,
84
                            'xxxinfo_id' => 0,
85
                            'passwordstatus' => -1,
86
                            'haspreview' => -1,
87
                            'jpgstatus' => 0,
88
                            'videostatus' => 0,
89
                            'audiostatus' => 0,
90
                            'nfostatus' => -1,
91
                        ]
92
                    );
93
                    $this->consoleTools->overWritePrimary('Resetting Releases:  '.$this->consoleTools->percentString(++$affected, $total));
94
                }
95
            } else {
96
                $this->colorCli->header('No releases to reset');
97
            }
98
        } else {
99
            foreach ($this->option('category') as $option) {
100
                $adjusted = str_replace('=', '', $option);
101
                if (\in_array($adjusted, self::$allowedCategories, false)) {
102
                    $this->info('Resetting postprocessing for '.$adjusted.' category');
103
                    switch ($adjusted) {
104
                        case 'console':
105
                            $this->resetConsole();
106
                            break;
107
                        case 'movie':
108
                            $this->resetMovies();
109
                            break;
110
                        case 'game':
111
                            $this->resetGames();
112
                            break;
113
                        case 'book':
114
                            $this->resetBooks();
115
                            break;
116
                        case 'music':
117
                            $this->resetMusic();
118
                            break;
119
                        case 'adult':
120
                            $this->resetAdult();
121
                            break;
122
                        case 'tv':
123
                            $this->resetTv();
124
                            break;
125
                        case 'misc':
126
                            $this->resetMisc();
127
                            break;
128
                    }
129
                }
130
            }
131
        }
132
    }
133
134
    private function resetConsole(): void
135
    {
136
        $qry = Release::query()->whereNotNull('consoleinfo_id')->whereBetween('categories_id', [Category::GAME_ROOT, Category::GAME_OTHER])->get();
137
        $total = $qry->count();
138
        if ($total > 0) {
139
            $conCount = 0;
140
            foreach ($qry as $releases) {
141
                Release::query()->where('id', $releases->id)->update(
142
                    [
143
                        'consoleinfo_id' => null,
144
                    ]);
145
                $this->consoleTools->overWritePrimary('Resetting console releases:  '.$this->consoleTools->percentString(++$conCount, $total));
146
            }
147
            $this->colorCli->header(number_format($conCount).' consoleinfo_id\'s reset.');
148
        } else {
149
            $this->colorCli->header('No releases to reset');
150
        }
151
    }
152
153
    private function resetMovies(): void
154
    {
155
        $qry = Release::query()->whereNotNull('movieinfo_id')->whereBetween('categories_id', [Category::MOVIE_ROOT, Category::MOVIE_OTHER])->get();
156
        $total = $qry->count();
157
        if ($total > 0) {
158
            $conCount = 0;
159
            foreach ($qry as $releases) {
160
                Release::query()->where('id', $releases->id)->update(
161
                    [
162
                        'movieinfo_id' => null,
163
                        'imdbid' => null,
164
                    ]);
165
                $this->consoleTools->overWritePrimary('Resetting Movie releases:  '.$this->consoleTools->percentString(++$conCount, $total));
166
            }
167
            $this->colorCli->header(number_format($conCount).' movieinfo_id\'s reset.');
168
        } else {
169
            $this->colorCli->header('No releases to reset');
170
        }
171
    }
172
173
    private function resetGames(): void
174
    {
175
        $qry = Release::query()->whereNotNull('gamesinfo_id')->where('categories_id', '=', Category::PC_GAMES)->get();
176
        $total = $qry->count();
177
        if ($total > 0) {
178
            $conCount = 0;
179
            foreach ($qry as $releases) {
180
                Release::query()->where('id', $releases->id)->update(
181
                    [
182
                        'gamesinfo_id' => null,
183
                    ]);
184
                $this->consoleTools->overWritePrimary('Resetting PC GAME releases:  '.$this->consoleTools->percentString(++$conCount, $total));
185
            }
186
            $this->colorCli->header(number_format($conCount).' gamesinfo_id\'s reset.');
187
        } else {
188
            $this->colorCli->header('No releases to reset');
189
        }
190
    }
191
192
    private function resetBooks(): void
193
    {
194
        $qry = Release::query()->whereNotNull('bookinfo_id')->whereBetween('categories_id', [Category::BOOKS_ROOT, Category::BOOKS_UNKNOWN])->get();
195
        $total = $qry->count();
196
        if ($total > 0) {
197
            $conCount = 0;
198
            foreach ($qry as $releases) {
199
                Release::query()->where('id', $releases->id)->update(
200
                    [
201
                        'bookinfo_id' => null,
202
                    ]);
203
                $this->consoleTools->overWritePrimary('Resetting book releases:  '.$this->consoleTools->percentString(++$conCount, $total));
204
            }
205
            $this->colorCli->header(number_format($conCount).' bookinfo_id\'s reset.');
206
        } else {
207
            $this->colorCli->header('No releases to reset');
208
        }
209
    }
210
211
    private function resetMusic(): void
212
    {
213
        $qry = Release::query()->whereNotNull('musicinfo_id')->whereBetween('categories_id', [Category::MUSIC_ROOT, Category::MUSIC_OTHER])->get();
214
        $total = $qry->count();
215
        if ($total > 0) {
216
            $conCount = 0;
217
            foreach ($qry as $releases) {
218
                Release::query()->where('id', $releases->id)->update(
219
                    [
220
                        'musicinfo_id' => null,
221
                    ]);
222
                $this->consoleTools->overWritePrimary('Resetting music releases:  '.$this->consoleTools->percentString(++$conCount, $total));
223
            }
224
            $this->colorCli->header(number_format($conCount).' musicinfo_id\'s reset.');
225
        } else {
226
            $this->colorCli->header('No releases to reset');
227
        }
228
    }
229
230
    private function resetAdult(): void
231
    {
232
        $qry = Release::query()->whereNotNull('xxxinfo_id')->whereBetween('categories_id', [Category::XXX_ROOT, Category::XXX_OTHER])->get();
233
        $total = $qry->count();
234
        if ($total > 0) {
235
            $conCount = 0;
236
            foreach ($qry as $releases) {
237
                Release::query()->where('id', $releases->id)->update(
238
                    [
239
                        'xxxinfo_id' => null,
240
                    ]);
241
                $this->consoleTools->overWritePrimary('Resetting xxx releases:  '.$this->consoleTools->percentString(++$conCount, $total));
242
            }
243
            $this->colorCli->header(number_format($conCount).' xxxinfo_id\'s reset.');
244
        } else {
245
            $this->colorCli->header('No releases to reset');
246
        }
247
    }
248
249
    private function resetTv(): void
250
    {
251
        $qry = Release::query()->where('videos_id', '!=', 0)->where('tv_episodes_id', '!=', 0)->whereBetween('categories_id', [Category::TV_ROOT, Category::TV_OTHER])->get();
252
        $total = $qry->count();
253
        if ($total > 0) {
254
            $conCount = 0;
255
            foreach ($qry as $releases) {
256
                Release::query()->where('id', $releases->id)->update(
257
                    [
258
                        'videos_id' => 0,
259
                        'tv_episodes_id' => 0,
260
                    ]);
261
                $this->consoleTools->overWritePrimary('Resetting tv releases:  '.$this->consoleTools->percentString(++$conCount, $total));
262
            }
263
            $this->colorCli->header(number_format($conCount).' video_id\'s reset.');
264
        } else {
265
            $this->colorCli->header('No releases to reset');
266
        }
267
    }
268
269
    private function resetMisc(): void
270
    {
271
        $qry = Release::query()->whereBetween('categories_id', [Category::OTHER_ROOT, Category::OTHER_HASHED])->get();
272
        $total = $qry->count();
273
        if ($total > 0) {
274
            $conCount = 0;
275
            foreach ($qry as $releases) {
276
                Release::query()->where('id', $releases->id)->update(
277
                    [
278
                        'passwordstatus' => -1,
279
                        'haspreview' => -1,
280
                        'jpgstatus' => 0,
281
                        'videostatus' => 0,
282
                        'audiostatus' => 0,
283
                        'nfostatus' => -1,
284
                    ]);
285
                $this->consoleTools->overWritePrimary('Resetting misc releases:  '.$this->consoleTools->percentString(++$conCount, $total));
286
            }
287
            $this->colorCli->header(number_format($conCount).' misc releases reset.');
288
        } else {
289
            $this->colorCli->header('No releases to reset');
290
        }
291
    }
292
}
293