HEX
Server: Apache
System: Linux WWW 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
User: web11 (1011)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /var/www/ivs.kaunokolegija.lt/laravel/app/Http/Controllers/Admin/ContactPersonController.php
<?php

namespace App\Http\Controllers\Admin;

use Gate;
use App\Models\User;
use App\Models\Company;
use App\Models\Department;
use App\Models\CompanySize;
use App\Models\LegalStatus;
use App\Models\StudyProgram;
use Illuminate\Http\Request;
use App\Models\ContactPerson;
use App\Models\CoopAgreement;
use App\Models\ReliabilityState;
use App\Models\AreasOfCooperation;
use App\Models\InternshipProvided;
use App\Http\Controllers\Controller;
use App\Models\DepartmentSubsection;
use App\Models\SubAreasOfCooperation;
use Yajra\DataTables\Facades\DataTables;
use Symfony\Component\HttpFoundation\Response;
use App\Http\Controllers\Traits\CsvImportTrait;
use App\Http\Requests\StoreContactPersonRequest;
use App\Http\Requests\UpdateContactPersonRequest;
use App\Http\Requests\MassDestroyContactPersonRequest;

class ContactPersonController extends Controller
{
    use CsvImportTrait;

    public function index(Request $request)
    {
        abort_if(Gate::denies('contact_person_access'), Response::HTTP_FORBIDDEN, '403 Forbidden');

        if ($request->ajax()) {
            $query = ContactPerson::with(['social_partner'])->select(sprintf('%s.*', (new ContactPerson)->table));
            $table = Datatables::of($query);

            $table->addColumn('placeholder', '&nbsp;');
            $table->addColumn('actions', '&nbsp;');

            $table->editColumn('actions', function ($row) {
                $viewGate      = 'contact_person_show';
                $editGate      = 'contact_person_edit';
                $deleteGate    = 'contact_person_delete';
                $crudRoutePart = 'contact-people';
                $modal         = true;
                $rowData       = $row;

                return view('partials.datatablesActions', compact(
                    'viewGate',
                    'editGate',
                    'deleteGate',
                    'crudRoutePart',
                    'row',
                    'modal',
                    'rowData'
                ));
            });

            $table->editColumn('id', function ($row) {
                return $row->id ? $row->id : '';
            });
            $table->addColumn('social_partner_name', function ($row) {
                return $row->social_partner ? $row->social_partner->name : '';
            });

            $table->editColumn('name', function ($row) {
                return $row->name ? $row->name : '';
            });
            $table->editColumn('email', function ($row) {
                return $row->email ? $row->email : '';
            });
            $table->editColumn('phone', function ($row) {
                return $row->phone ? $row->phone : '';
            });
            $table->editColumn('ismain', function ($row) {
                return '<input type="checkbox" disabled ' . ($row->ismain ? 'checked' : null) . '>';
            });
            $table->editColumn('type', function ($row) {
                return $row->type ? ContactPerson::TYPE_RADIO[$row->type] : '';
            });

            $table->rawColumns(['actions', 'placeholder', 'social_partner', 'ismain']);

            return $table->make(true);
        }

        $companies = Company::get();
        $legalstatuses = LegalStatus::pluck('name', 'id')->prepend(trans('global.pleaseSelect'), '');
        $contactpersons = ContactPerson::pluck('email', 'id');
        $social_partners = Company::pluck('name', 'id')->prepend(trans('global.pleaseSelect'), '');
        $coopagreements = CoopAgreement::pluck('number', 'id');
        $coopareas = AreasOfCooperation::pluck('name', 'id');
        $accountabledepartments = Department::pluck('name', 'id');
        $accountablesubsections = DepartmentSubsection::pluck('name', 'id');
        $accountablepersonkks = User::pluck('name', 'id');
        $reliabilities = ReliabilityState::pluck('name', 'id')->prepend(trans('global.pleaseSelect'), '');
        $subAreasOfCooperations = SubAreasOfCooperation::get();
        $studyprograms = StudyProgram::pluck('name', 'id');
        $internshipsprovided = InternshipProvided::pluck('title', 'id');
        $companysizes = CompanySize::pluck('name', 'id');


        return view('admin.contactPeople.index', compact('companies', 'legalstatuses', 'contactpersons', 'social_partners', 'coopagreements', 'coopareas', 'accountabledepartments', 'accountablesubsections', 'accountablepersonkks', 'reliabilities', 'subAreasOfCooperations', 'studyprograms', 'internshipsprovided', 'companysizes'));
    }

    public function create()
    {
        abort_if(Gate::denies('contact_person_create'), Response::HTTP_FORBIDDEN, '403 Forbidden');

        $social_partners = Company::pluck('name', 'id')->prepend(trans('global.pleaseSelect'), '');

        return view('admin.contactPeople.create', compact('social_partners'));
    }

    public function store(StoreContactPersonRequest $request)
    {
        $contactPerson = ContactPerson::create($request->all());

        if ($request->ajax()) {
            return response()->json([
                'success' => true,
                'message' => __('Sukurta sekmingai'),
                'data' => ['id' => $contactPerson->id, 'title' => $contactPerson->email, 'name' => $contactPerson->name],
            ], 201);
        }

        return redirect()->route('admin.contact-people.index');
    }

    public function edit(ContactPerson $contactPerson)
    {
        abort_if(Gate::denies('contact_person_edit'), Response::HTTP_FORBIDDEN, '403 Forbidden');

        $social_partners = Company::pluck('name', 'id')->prepend(trans('global.pleaseSelect'), '');

        $contactPerson->load('social_partner');

        return view('admin.contactPeople.edit', compact('contactPerson', 'social_partners'));
    }

    public function update(UpdateContactPersonRequest $request, ContactPerson $contactPerson)
    {
        $contactPerson->update($request->all());

        if ($request->ajax()){
            return response()->json([
                 'success' => true,
                   'data' => ['id' => $contactPerson->id, 'title' => $contactPerson->email],
             ]);
         }

        return redirect()->route('admin.contact-people.index');
    }

    public function destroy(ContactPerson $contactPerson)
    {
        abort_if(Gate::denies('contact_person_delete'), Response::HTTP_FORBIDDEN, '403 Forbidden');

        $contactPerson->delete();

        return back();
    }

    public function massDestroy(MassDestroyContactPersonRequest $request)
    {
        $contactPeople = ContactPerson::find(request('ids'));

        foreach ($contactPeople as $contactPerson) {
            $contactPerson->delete();
        }

        return response(null, Response::HTTP_NO_CONTENT);
    }
}