Current File : /home/getxxhzo/app.genicards.com/app/Repositories/BlogRepository.php
<?php

namespace App\Repositories;

use App\Models\Blog;
use DB;
use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException;
use Yajra\DataTables\Exceptions\Exception;

class BlogRepository extends BaseRepository
{
    /**
     * @var array
     */
    public $fieldSearchable = [
        'title',
    ];

    /**
     * {@inheritDoc}
     */
    public function getFieldsSearchable()
    {
        return $this->fieldSearchable;
    }

    /**
     * {@inheritDoc}
     */
    public function model()
    {
        return Blog::class;
    }

    /**
     * @return mixed
     */
    public function store($input)
    {

        try {
            DB::beginTransaction();
            $blog = Blog::create($input);

            if (isset($input['blog_image']) && !empty($input['blog_image'])) {
                $blog->addMedia($input['blog_image'])->toMediaCollection(Blog::BLOGIMAGE, config('app.media_disc'));
            }

            DB::commit();

            return $blog;
        } catch (Exception $e) {
            DB::rollBack();

            throw new UnprocessableEntityHttpException($e->getMessage());
        }
    }

    public function update($input, $id)
    {
        try {
            DB::beginTransaction();
            $blog = Blog::findOrFail($id);
            $blog->update($input);
            if (isset($input['blog_image']) && !empty($input['blog_image'])) {
                $blog->clearMediaCollection(Blog::BLOGIMAGE);
                $blog->addMedia($input['blog_image'])->toMediaCollection(Blog::BLOGIMAGE, config('app.media_disc'));
            }
            DB::commit();
            return $blog;
        } catch (Exception $e) {
            DB::rollBack();
            throw new UnprocessableEntityHttpException($e->getMessage());
        }
    }
}