<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019-08-21
 * Time: 10:26
 */

namespace App\Repositories;


use App\Models\Upgrade;
use Illuminate\Database\QueryException;
use Illuminate\Support\Facades\DB;
use Dingo\Api\Http\Response;
use Illuminate\Support\Facades\Log;

class UpgradeRepository {
    public function __construct(Upgrade $upgrade) {
        $this->upgrade = $upgrade;
    }
    //列表
    public function index($request){
        $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
        $where = [];
        if(isset($request['os'])){
            $where[] = ['os', $request['os']];
        }
        return $this->upgrade->where($where)->orderBy('id', 'desc')->paginate($perPage);
    }
    //详情
    public function view($request){
        return $this->upgrade->where(['id'=>$request['id']])->first();
    }
    //创建
    public function create($request){
        $upgrade = $this->upgrade->where(['os'=>$request['os'],'version'=>$request['version']])->first();
        if($upgrade){
            return Response::create([
                'message'  => '该版本已存在',
                'status_code'   => 500
            ]);
        }
        $data = [
            'os' => $request['os'],
            'version' => $request['version'],
            'version_code' => $request['version_code'],
            'url' => $request['url']??'',
            'title' => $request['title'],
            'content' => $request['content'],
            'is_forced_update' => $request['is_forced_update'],
        ];
        DB::beginTransaction();
        try{
            $this->upgrade->create($data);
            DB::commit();
            return Response::create();
        }catch (QueryException $exception){
            DB::rollBack();
            Log::debug('新增版本:'.$exception->getMessage());
            return Response::create([
                'message'  => '新增升级版本失败,请重试',
                'error' => $exception->getMessage(),
                'status_code'   => 500
            ]);
        }
    }
}