Explain_infoRepository.php 3.74 KB
<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/2/1
 * Time: 11:25
 */

namespace App\Repositories\Backend\Explain_info;

use App\Events\Backend\Explain_info\Explain_infoCreated;
use App\Modules\Models\Explain_info\Explain_info;
use App\Modules\Repositories\Explain_info\BaseExplain_infoRepository;
use App\Exceptions\GeneralException;
use Illuminate\Support\Facades\DB;
class Explain_infoRepository  extends BaseExplain_infoRepository
{
    public function getForDataTable()
    {
        return $this->query()->get();
    }


     public function getinfo()
     {
         return   $this->query()
             ->select('explain_info.id','explain_info.img_url','explain_info.audio_url','explain_info.language','explain.name')
             ->leftjoin('explain',"explain_info.explain_id",'=','explain.id')
             ->get();
     }

     
    public function create($input)
    {
        $info = $input['data'];

        $audio=$this->audio($input);

        $audio_url=$audio['path'];
        $size = $audio['size'];
        $info['audio_url']= $audio_url;
        $info['size']= $size;

        $explain_info = $this->createUserStub($info);

        DB::transaction(function () use ($explain_info, $info) {
            if ($explain_info->save()) {

                event(new Explain_infoCreated($explain_info));

                return true;
            }

            throw new GeneralException(trans('exceptions.backend.explain_info.create_error1'));
        });

    }


    public function update($input)
    {

         $key =array_keys($input['data']);
         $res=in_array('img_url',$key);
         if($res){
             $backet="img_url";
         } else{
             throw new GeneralException(trans('exceptions.backend.explain_info.backet_error'));
             die();
         }

        $img=$this->imgup($backet);
        $data=[];
        $data['size'] = $img['size'];
        $data['img_url'] = $img['path'];
        $data['id']= $input['data']['id'];
        DB::beginTransaction();
        $res=DB::table('explain_info')
            ->where(['id' => $data['id']])
             ->update(['img_url'=>$data['img_url'],'img_size'=>$data['size']]);
          if($res){
              DB::commit();
          } else{
              throw new GeneralException(trans('exceptions.backend.explain_info.upimg_error'));
              DB::rollback();
          }

          
    }
    protected function createUserStub($info)
    {
        $explain_info = self::MODEL;
        $explain_info = new $explain_info;
        $explain_info->title = $info['title'];
        $explain_info->describetion = $info['describetion'];
        $explain_info->audio_url = $info['audio_url'];
        $explain_info->language = $info['language'];
        $explain_info->audio_size = $info['size'];
        $explain_info->explain_id = $info['explain_id'];
        return $explain_info;
    }


    public  function change(Explain_info $explain_info,$input)
    {

       if(isset($input['audio_url'])){
           $info=[];
           $audio=$this->audio();
           $audio_url=$audio['path'];
           $size = $audio['size'];
           $info['audio_url']= $audio_url;
           $info['size']= $size;
           $info['language']=$input['language'];
           $info['describetion']=$input['describetion'] ;
       }else{
         
           $info=[];
           $info['language']=$input['language'];
           $info['describetion']=$input['describetion'] ;
       }
        DB::transaction(function () use ($explain_info, $info) {

            if ($explain_info->update($info)) {

//                   event(new Explain_infoCreated($explain_info));

                return true;
            }

            throw new GeneralException(trans('exceptions.backend.explain_info.update_error'));
        });
    }
}