<?php


namespace App\Repositories\Dummy;


use App\Repositories\BaseRepository;
use App\Model\Dummy\Dummy;
use App\Tools\Response;
use App\Tools\ImageUploader;

use Illuminate\Support\Facades\DB;

class DummyRepository extends BaseRepository implements DummyInterface
{
    use ImageUploader;
    protected $Dummy;
    /**
     * CompanyRepository constructor.
     *
     * @param Company $company
     */
    public function __construct(Dummy $model)
    {
        parent::__construct($model);
    }

    public function getData($request)
    {
        try {
            $query = $this->query();
            $data['records'] = $query
                                ->with('createdBy','updatedBy')
                                ->paginate(10);
            $returnData = Response::prepare(false, 'list_success', $data, []);
            return response()->json($returnData, 200);
        } catch (\Exception $e) {
            $returnData = Response::prepare(true, $e->getMessage(), [], []);
            return response()->json($returnData, 500);
        }
    }

    public function storeEntry($request)
    {
        try {
            DB::beginTransaction();
            $request['created_id']=auth()->user()->id;
            $Dummy = $this->create($request);
            if ($request->file) {
                $this->uploadMultipleFile($request,$Dummy);
            }
            $returnData = Response::prepare(false, 'Record Created', [], []);
            DB::commit();
            return response()->json($returnData, 200);
        } catch (\Exception $e) {
            $returnData = Response::prepare(true, $e->getMessage(), [], []);
            DB::rollBack();
            return response()->json($returnData, 500);
        }
    }

    public function getEntry($id)
    {
        try {
            $data['record'] = $this->first([
                ['id', '=', $id],
            ])->load('files');
            $returnData = Response::prepare(false, 'edit_success', $data, []);
            return response()->json($returnData, 200);
        } catch (\Exception $e) {
            $returnData = Response::prepare(true, $e->getMessage(), [], []);
            return response()->json($returnData, 500);
        }
    }

    public function updateEntry($request, $id)
    {
        try {
            DB::beginTransaction();
            $request['updated_id']=auth()->user()->id;
            $entry = $this->update($request, $id);
            if ($request->file) {
                $this->uploadMultipleFile($request,$entry);
            }
            $returnData = Response::prepare(false, 'Record Updated Successfully', [], []);
            DB::commit();
            return response()->json($returnData, 200);
        } catch (\Exception $e) {
            $returnData = Response::prepare(true, $e->getMessage(), [], []);
            DB::rollBack();
            return response()->json($returnData, 500);
        }
    }

    public function deleteEntry($id)
    {
        try {
            DB::beginTransaction();
            $this->delete($id);
            $returnData = Response::prepare(false, 'Record Deleted Successfully', [], []);
            DB::commit();
            return response()->json($returnData, 200);
        } catch (\Exception $e) {
            $returnData = Response::prepare(true, $e->getMessage(), [], []);
            DB::rollBack();
            return response()->json($returnData, 500);
        }
    }
}
