Issues (185)

app/Services/FormFieldsService.php (4 issues)

Labels
Severity
1
<?php
2
3
namespace App\Services;
4
5
use App\Http\Requests\CreateFormFieldRequest;
6
use App\Http\Requests\FormFieldUpdateRequest;
7
use App\Models\FormField;
8
use Illuminate\Support\Facades\Auth;
9
use Illuminate\Support\Facades\DB;
10
11
class FormFieldsService
12
{
13
    public static function createField(CreateFormFieldRequest $request)
14
    {
15
        $order = FormField::where('recruitment_id', $request->recruitment_id)->max('order');
0 ignored issues
show
The property recruitment_id does not seem to exist on App\Http\Requests\CreateFormFieldRequest.
Loading history...
16
17
        $field = FormField::make($request->validated());
18
        $field->user_id = Auth::user()->id;
19
        $field->order = $order + 1;
20
        $field->save();
21
22
        $field->name = 'custom_field_'.$field->id;
23
        $field->save();
24
25
        return $field;
26
    }
27
28
    public static function updateField($fieldId, FormFieldUpdateRequest $request)
29
    {
30
        $field = FormField::findOrFail($fieldId);
31
        $input = $request->validated();
32
        $field->fill($input)->save();
33
34
        //TODO: if ($field->wasChanged('order')) reorder remaing fields
35
36
        return $field;
37
    }
38
39
    public static function deleteField($fieldId)
40
    {
41
        $field = FormField::findOrFail($fieldId);
42
        $field->delete();
43
44
        DB::connection('tenant')->table('form_fields')->where('recruitment_id', $field->recruitment_id)->where('order', '>', $field->order)->decrement('order');
0 ignored issues
show
The property recruitment_id does not exist on App\Models\FormField. Did you mean recruitment?
Loading history...
45
    }
46
47
    public static function reorder($dragId, $dropId)
48
    {
49
        $dropField = FormField::findOrFail($dropId);
50
        $dragField = FormField::findOrFail($dragId);
51
52
        DB::connection('tenant')->table('form_fields')
53
            ->where('recruitment_id', $dropField->recruitment_id)
0 ignored issues
show
The property recruitment_id does not exist on App\Models\FormField. Did you mean recruitment?
Loading history...
54
            ->where('order', '>', $dropField->order)
55
            ->where('order', '<', $dragField->order)
56
            ->increment('order');
57
58
        DB::connection('tenant')->table('form_fields')
59
            ->where('recruitment_id', $dropField->recruitment_id)
60
            ->where('order', '>', $dragField->order)
61
            ->where('order', '<=', $dropField->order)
62
            ->decrement('order');
63
64
        if ($dragField->order > $dropField->order) {
65
            $dragField->order = $dropField->order + 1;
0 ignored issues
show
The property order does not seem to exist on Illuminate\Database\Eloquent\Collection.
Loading history...
66
        } else {
67
            $dragField->order = $dropField->order;
68
        }
69
        $dragField->save();
70
71
        return FormField::where('recruitment_id', $dropField->recruitment_id)->orderBy('order')->get();
72
    }
73
}
74