BeaconRepository.php 2.24 KB
<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/1/30
 * Time: 11:23
 */

namespace App\Repositories\Backend\Beacon;


use App\Events\Backend\Access\Beacon\BeaconDeactivated;
use App\Events\Backend\Access\Beacon\BeaconReactivated;
use App\Modules\Models\Beacon\Beacon;
use Illuminate\Support\Facades\DB;
use App\Exceptions\GeneralException;
use App\Events\Backend\Access\Beacon\BeaconUpdated;
use App\Modules\Repositories\Beacon\BaseBeaconRepository;


class BeaconRepository extends BaseBeaconRepository
{


    public function getForDataTable()
    {
        return $this->query()->get();
    }

    public function update(Beacon $beacon, $input)
    {
        if ($input['explain_id'] == null) {
            unset($input['explain_id']);
            DB::transaction(function () use ($beacon, $input) {
                if ($beacon->update($input)) {
                    event(new BeaconUpdated($beacon));

                    return true;
                }
                throw new GeneralException(trans('exceptions.backend.beacon.update_error'));
            });

        } else {

            DB::transaction(function () use ($beacon, $input) {
                if ($beacon->update($input)) {
                    event(new BeaconUpdated($beacon));

                    return true;
                }

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


    }
     //beacon  启用禁用
    public  function  mark(Beacon $beacon ,$status){
        
        $beacon->status = $status;

        switch ($status) {
            case 0:
                event(new BeaconDeactivated($beacon));
                break;

            case 1:
                event(new BeaconReactivated($beacon));
                break;
        }

        if ($beacon->save()) {
            return true;
        }

        throw new GeneralException(trans('exceptions.backend.access.users.mark_error'));
    }



    public function getinfo(){
        return   $this->query()->select('beacon.id','explain.name','beacon.device_id','beacon.major','beacon.minor','beacon.rssi','beacon.sd','beacon.status','beacon.created_at','beacon.updated_at')->leftjoin('explain','beacon.explain_id','=','explain.id')->get();
        
    }
}