<?php

namespace App\Http\Controllers\Api;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use JiGuang\JSMS as JSMS;
use Illuminate\Support\Facades\Redis;
use Dingo\Api\Http\Response;
use Validator;
use DB;
use App\Models\User;
use App\Models\CartItem;

/**
 *
 * Copyright: Copyright (c) 2019 LanRu-Caifu
 *
 * @Description: 购物车控制器
 * @version: v1.0.0
 * @author: fengyichao
 * @date: 2019年8月5日 下午6:36:38
 *
 * Modification History:
 * Date         Author          Version            Description
 *---------------------------------------------------------*
 * 2019年8月5日     fengyichao           v1.0.0               修改原因
 */
class CartController extends ApiController {

	/**
	 *
	 * @api {post} cart/update 购物车-新增/数量变动
	 * @apiName cart/update
	 * @apiGroup cart
	 * @apiParam {int} product_id 产品id
	 * @apiParamExample {curl} Example usage:
	 * http://59.110.137.245:8080/api/cart/update?token=c81e728d9d4c2f636f067f89cc14862c&product_id=1
	 * @apiPermission token 必传
	 */
	function update(Request $request) {
		$rules = [ 
				'product_id' => [ 
						'required'
				]
		];
		$validator = app ( 'validator' )->make ( $request->all (), $rules );
		if ($validator->fails ()) {
			return $this->throwErrors ( $validator );
		}
		$cartItem=CartItem::firstOrNew (  [ 
				'user_id' => $request->user_id,
				'product_id' => $request->product_id
		]);
		
		$cartItem->amount=$cartItem->amount+1;
		$cartItem->save();
		return $this->success ();
	}
	
	/**
	 *
	 * @api {post} cart/delete 购物车-删除
	 * @apiName cart/delete
	 * @apiGroup cart
	 * @apiParam {int} product_id 产品id
	 * @apiParamExample {curl} Example usage:
	 * http://59.110.137.245:8080/api/cart/delete?token=c81e728d9d4c2f636f067f89cc14862c&product_id=40
	 * @apiPermission token 必传
	 */
	function delete(Request $request){
		$rules = [
				'product_id' => [
						'required'
				]
		];
		$condition=['user_id'=>$request->user_id,'product_id'=>$request->product_id];
		CartItem::where($condition)->delete();
		return $this->success ();
	}
	/**
	 *
	 * @api {post} cart/list 购物车-列表
	 * @apiName cart/list
	 * @apiGroup cart
	 * @apiParam {int} product_id 产品id
	 * @apiParamExample {curl} Example usage:
	 * http://59.110.137.245:8080/api/cart/list?token=c81e728d9d4c2f636f067f89cc14862c
	 * @apiPermission token 必传
	 */
	function list(Request $request){
		$carts=CartItem::where('user_id',$request->user_id)->get();
		$resData=[];
		foreach($carts as $key=>$cart){
			$product=$cart->product;
			$resData[$key]['product_id']=$product->id;
			$resData[$key]['price']=$product->price;
			$resData[$key]['long_title']=$product->long_title;
			$resData[$key]['image']=env('OSS_URL').$product->image;
		}
		return $this->success ($resData);
	}
}
