<?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\Services\SystemService;
use App\Models\UserAddress;

/**
 *
 * Copyright: Copyright (c) 2019
 *
 * @Description: 地址控制器
 * @version: v1.0.0
 * @author: fengyichao
 * @date: 2019年8月14日 下午3:24:45
 *
 * Modification History:
 * Date         Author          Version            Description
 *---------------------------------------------------------*
 * 2019年8月14日     fengyichao           v1.0.0               修改原因
 */
class UserAddressController extends ApiController {
	// 利用 Laravel 的自动解析功能注入 CartService 类
	public function __construct(SystemService $systemService) {
		$this->systemService = $systemService;
	}
	/**
	 *
	 * @api {post} address/create 收货地址-新增
	 * @apiName address/create
	 * @apiGroup address
	 * @apiParam {string} province 省
	 * @apiParam {string} city 市
	 * @apiParam {string} district 区
	 * @apiParam {string} address 具体地址
	 * @apiParam {string} contact_name 收货人姓名
	 * @apiParam {string} contact_phone 收货人电话 
	 * @apiParamExample {curl} Example usage:
	 * http://59.110.137.245:8080/api/address/create?token=c81e728d9d4c2f636f067f89cc14862c&province=北京市&city=市辖区&district=东城区&address=八大胡同甲1号&contact_name=冯逸超&contact%20phone=13810456667
	 */
	function create(Request $request) {
		$rules = [ 
				'user_id' => [ 
						'required'
				],
				'province' => [ 
						'required'
				],
				'city' => [ 
						'required'
				],
				'district' => [ 
						'required'
				],
				'address' => [ 
						'required'
				],
// 				'zip' => [ 
// 						'required'
// 				],
				'contact_name' => [ 
						'required'
				],
				'contact_phone' => [ 
						'required'
				]
		];
		$validator = app ( 'validator' )->make ( $request->all (), $rules );
		if ($validator->fails ()) {
			return $this->throwErrors ( $validator );
		}
		
		UserAddress::create($request->all());
		return $this->success ();
	}
	
	/**
	 *
	 * @api {post} address/update 收货地址-更新
	 * @apiName address/update
	 * @apiGroup address
	 * @apiParam {int} address_id 地址id
	 * @apiParam {string} province 省  (非必传)
	 * @apiParam {string} city 市   (非必传)
	 * @apiParam {string} district 区   (非必传)
	 * @apiParam {string} address 具体地址  (非必传)
	 * @apiParam {string} contact_name 收货人姓名  (非必传)
	 * @apiParam {string} contact_phone 收货人电话  (非必传)
	 * @apiParamExample {curl} Example usage:
	 * http://59.110.137.245:8080/api/address/create?token=c81e728d9d4c2f636f067f89cc14862c&address_id=1
	 */
	function update(Request $request) {
		$rules = [
				'address_id' => [
						'required'
				]
		];
		$validator = app ( 'validator' )->make ( $request->all (), $rules );
		if ($validator->fails ()) {
			return $this->throwErrors ( $validator );
		}
		$userAddress=UserAddress::find($request->address_id);
		$userAddress->update($request->all());
		return $this->success ();
	}
	
	/**
	 *
	 * @api {post} address/delete 收货地址-删除
	 * @apiName address/delete
	 * @apiGroup address
	 * @apiParam {int} address_id 地址id
	 * @apiParamExample {curl} Example usage:
	 * http://59.110.137.245:8080/api/address/create?token=c81e728d9d4c2f636f067f89cc14862c&address_id=1
	 */
	function delete(Request $request) {
		$rules = [
				'address_id' => [
						'required'
				]
		];
		$validator = app ( 'validator' )->make ( $request->all (), $rules );
		if ($validator->fails ()) {
			return $this->throwErrors ( $validator );
		}
		$userAddress=UserAddress::find($request->address_id);
		$userAddress->delete();
		return $this->success ();
	}
	
	/**
	 *
	 * @api {post} address/list 收货地址-列表
	 * @apiName address/list
	 * @apiGroup address
	 * @apiSuccess  {int} id 地址id
	 * @apiSuccess  {string} contact_phone 手机号
	 * @apiSuccess  {string} contact_name 姓名
	 * @apiSuccess  {string} full_address 姓名
	 * @apiParamExample {curl} Example usage:
	 * http://59.110.137.245:8080/api/address/list?token=c81e728d9d4c2f636f067f89cc14862c
	 */
	
	function list(Request $request) {
		$page = $request->input ( 'page', 1 );
		$queryBuild = UserAddress::select ( [
				'id',
				'contact_name',
				'contact_phone',
				'city',
				'district',
				'province',
				'address'
		] );
		$items = $queryBuild->orderBy ( 'id', 'desc' )->paginate ( 15, [
				'id',
				'address'
		], 'page', $page );
		
		return $this->success ( $items );
	}
}
