/home/mip/mip/app/Modules/Client/Repositories/Directory/SpecializationsRepository.php
<?php

namespace QxCMS\Modules\Client\Repositories\Directory;

use QxCMS\Modules\AbstractRepository;
use QxCMS\Modules\Client\Models\Directory\Specializations;
use QxCMS\Modules\Client\Repositories\Directory\DirectoriesRepositoryInterface as Directory;

use Illuminate\Http\Request;

class SpecializationsRepository extends AbstractRepository implements SpecializationsRepositoryInterface
{

    protected $model;

    function __construct(Specializations $model, Directory $directory)
    {
        $this->model = $model;
        $this->directory = $directory;
    }

    public function create(array $request)
    {
        $specializations = $this->model->fill($request);
        $specializations->save();
        return $specializations;
    }

    public function update(Request $request)
    {
        $id = $request->input('id');
        $name = $request->input('name');

        $specialization = $this->findById($id);
        $specialization->name = $name;
        $specialization->save();
        return $specialization->name;
    }

    public function delete($id)
    {
        $specialization = $this->findById($id);
        if ($specialization->directory->count() > 0) {
            return response()->json(['error' => 'exists', 'id' => $id]);
        } else {
            $specialization->delete();
            return response()->json(['success' => 'yes', 'id' => $id]);
        }            
    }

    public function specializationsList()
    {
        return
            $this
            ->model
            ->orderBy('name','asc')
            ->pluck('name', 'id')
            ->toArray();
    }

}