<?php

namespace App\Http\Controllers\Api;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\User;
class UserController extends ApiController {
	/**
	 * @api {post} /user/create-info 新增-用户资料
	 * @apiName create-info
	 * @apiGroup User
	 * @apiParam {String} sex 性别
	 * @apiParam {String} nickname 昵称
	 * @apiParam {String} realname 真实姓名
	 * @apiParam {String} photo 只传入七牛返回的key
	 * @apiParam {String} underwrite 签名
	 * @apiPermission token
	 */
	function createInfo(Request $request){
		$this->validate($request, [
				'sex' => 'required',
				'realname'=>'required'
		]);
		if(isset($request->photo) && $request->photo!=''){
			$request['photo']=getQiniuImgUrl($request->photo);
		}
		$user=User::find($request->user_id);
		$user->sex=$request->sex;
 		$user->photo=$request->photo;
		$user->nickname=$request->nickname;
		$user->realname=$request->realname;
		$user->underwrite=$request->underwrite;
		$user->save();
		return $this->success ();
	}
	/**
	 * @api {post} /user/edit-info 编辑-用户资料
	 * @apiName edit-info
	 * @apiGroup User
	 * @apiParam {String} sex 性别 必填
	 * @apiParam {String} nickname 昵称
	 * @apiParam {String} realname 真实姓名 必填
	 * @apiParam {String} photo 只传入七牛返回的key
	 * @apiParam {String} underwrite 签名
	 * @apiPermission token
	 */
	function editInfo(Request $request){
		if(isset($request->photo) && $request->photo!=''){
			$request['photo']=getQiniuImgUrl($request->photo);
		}
		$user=User::find($request->user_id);
		$user->update($request->all());
		return $this->success ();
	}
	/**
	 * @api {post} /user/coupon-lists 【改】优惠券列表
	 * @apiName coupon-list
	 * @apiGroup User
	 * @apiParam {String} page 页码 default:1
	 * @apiSuccess {int} current_page 当前页码
	 * @apiSuccess {int} total 总数 
	 * @apiSuccess {list[]} data 分页数据
	 * @apiSuccess (data){int} id 
	 * @apiSuccess (data){String} name 劵名
	 * @apiSuccess (data){String} is_used 1:已使用 0:未使用
	 * @apiSuccess (data){String} content 描述
	 * @apiSuccess (data){String} created_at 领劵时间
	 * @apiPermission token
	 */
	function couponLists(Request $request){
		$userId=$request->user_id;
		$page=$request->input('page',1);
		$userCoupons=UserCoupon::leftJoin('coupons','user_coupon.coupon_id','=','coupons.id')->where('user_id',$userId)->paginate(20,['user_coupon.id','coupons.type','coupons.name','coupons.content','user_coupon.is_used','user_coupon.created_at'],'page',$page);
		return $this->success ($userCoupons);
	}
	/**
	 * @api {post} /user/msg-lists 消息列表
	 * @apiName msg-list
	 * @apiGroup User
	 * @apiParam {String} page 页码 default:1
	 * @apiSuccess {int} current_page 当前页码
	 * @apiSuccess {int} total 总数
	 * @apiSuccess {list[]} data 分页数据
	 * @apiSuccess (data){int} id 消息ID
	 * @apiSuccess (data){String} title 标题
	 * @apiSuccess (data){String} content 内容
	 * @apiSuccess (data){String} type 类型
	 * @apiSuccess (data){String} created_at 收到消息时间
	 * @apiPermission token
	 */
	function msgLists(Request $request){
		$userId=$request->user_id;
		$page=$request->input('page',1);
		$userMsg=UserMsg::where('user_id',$userId)->orWhere('user_id',0)->orderBy('created_at','desc')->paginate(15,['*'],'page',$page);
		return $this->success ($userMsg);
	}
	/**
	 * @api {post} /user/info 用户资料详情
	 * @apiName info
	 * @apiGroup User
	 * @apiSuccess {Int} id 用户id
	 * @apiSuccess {String} realname 真实姓名
	 * @apiSuccess {String} nickname 昵称
	 * @apiSuccess {String} sex 性别
	 * @apiSuccess {String} photo 图片完整链接
	 * @apiSuccess {String} underwrite 签名
	 * @apiSuccess {String} orgname 所属机构(只有教师端会返回此字段)
	 * @apiPermission token
	 */
	function info(Request $request){
		$userId=$request->user_id;
		$user=User::where('id',$userId)->select(['id','realname','nickname','sex','photo','underwrite','type','oid'])->first();
	
		if($user->type==2){
			$org=Organize::find($user->oid);
			$user->orgname=$org->name;
		}
		return $this->success ($user);
	}
	/**
	 * @api {post} /user/account-lists 消费记录
	 * @apiName account-lists
	 * @apiGroup User
	 * @apiParam {String} page 页码 default:1
	 * @apiSuccess {int} current_page 当前页码
	 * @apiSuccess {int} total 总数
	 * @apiSuccess {list[]} data 分页数据
	 * @apiSuccess (data){int} money 金额
	 * @apiSuccess (data){int} type 消费类型
	 * @apiSuccess (data){string} type_cn 消费类型中文值
	 * @apiSuccess (data){string} created_at 消费时间
	 * @apiPermission token
	 */
	function accountLists(Request $request){
		$userId=$request->user_id;
		$page=$request->input('page',1);
		$accountLists=UserAccount::where('user_id',$userId)->paginate(15,['money','type','created_at'],'page',$page);
		foreach($accountLists->items() as $userAccount){
			$userAccount->type_cn=UserAccount::$typeArr[$userAccount->type];
		}
		return $this->success ($accountLists);
	}
	/**
	 * @api {post} /user/center 会员中心
	 * @apiName center
	 * @apiGroup User
	 * @apiSuccess (返回值) {Object} user_info 当前页码
	 * @apiSuccess (user_info) {string} nickname 昵称
	 * @apiSuccess (user_info) {string} photo 头像
	 * @apiSuccess (user_info) {int} is_vip 是否是会员
	 * @apiSuccess (user_info) {string} vip_endtime 过期时间
	 * @apiSuccess (返回值) {list[]} show_privilege 展示特权
	 * @apiSuccess (返回值) {list[]} function_privilege 功能特权 
	 * @apiPermission token
	 */
	function center(Request $request){
		$userId=$request->user_id;
		$user=User::where('id',$userId)->select(['nickname','photo','vip_expire'])->first();
		$showPrivilege=['昵称特殊显示','头像特殊标识'];
		$functionPrivilege=['打卡图片清晰显示','随时查看机构监控','点赞、评论、转发不受限制'];
		$isVip=$user->vip_expire;
		$user->is_vip=$user->vip_expire>time()?1:0;
		if($user->is_vip){
			$user->vip_endtime=date("Y-m-d H:i",$user->vip_expire);
		}
		unset($user->vip_expire);
		$res['user_info']=$user;
		$res['show_privilege']=$showPrivilege;
		$res['function_privilege']=$functionPrivilege;
		
		return $this->success ($res);
	}
	/**
	 * @api {post} /coupon/use 【新】使用优惠券
	 * @apiName useCoupon
	 * @apiGroup User
	 * @apiParam {String} id 唯一标识(优惠券列表页id号)
	 * @apiPermission token
	 */
	function useCoupon(Request $request){
		$id=$request->id;
		$userCoupon=UserCoupon::find($id);
		$userCoupon->is_used=1;
		$userCoupon->save();
		$user=User::find($request->user_id);
		$user->vip_expire=$user->vip_expire>time()?$user->vip_expire+1296000:strtotime('+15 day',time());
		$user->save();
		return $this->success ();
	}
	/**
	 * @api {post} /user/collect-lists 【0312增】收藏列表
	 * @apiName collect-list
	 * @apiGroup User
	 * @apiDescription 此接口UI、数据结构与发现列表完全一致！！
	 * @apiPermission token
	 */
	function collectLists(Request $request){
		$page = $request->input ( 'page', 1 );
		$userId = $request->user_id;
		$orgDiscoveryIds=OrgDiscoveryCollent::where('user_id',$userId)->pluck('org_discovery_id');
		$discovers = OrgDiscovery::whereIn ( 'id', $orgDiscoveryIds )->orderBy('created_at','desc')->paginate ( 15, [
				'id',
				'user_id',
				'content',
				'content_img',
				'type',
				'clock_at',
				'created_at'
		], 'page', $page );
		foreach ( $discovers as $discover ) {
			$discover->content_img = json_decode ( $discover->content_img, true );
			//发现
			if ($discover->type == OrgDiscovery::DISCOVERY) {
				$discover->comment_num = OrgDiscoveryComment::where ( 'org_discovery_id', $discover->id )->count ();
				$is_like = OrgDiscoveryLike::where ( 'org_discovery_id', $discover->id )->where ( 'user_id', $userId )->count ();
				$discover->is_like = $is_like;
				$user = User::find ( $discover->user_id );
				$org = Organize::find ( $user->oid );
				$discover->org_name = $org->name;
				$discover->realname = $user->realname;
				$discover->photo = $user->photo;
				$discover->like = OrgDiscoveryLike::where('org_discovery_id',$discover->id)->count();
				$is_collect=OrgDiscoveryCollent::where ( 'org_discovery_id', $discover->id )->where ( 'user_id', $userId )->count ();
				$discover->is_collect=$is_collect;
				unset ( $discover->clock_at );
			}
			//打卡
			if ($discover->type == OrgDiscovery::CLOCK) {
				$discover->des = "午打卡";
				$clockTime = date ( 'H:i:s', strtotime ( $discover->clock_at ) );
				if ($clockTime >= '14:00:00') {
					$discover->des = "晚打卡";
				}
				unset ( $discover->content );
				unset ( $discover->user_id );
				unset ( $discover->created_at );
				unset ( $discover->like );
			}
		}
		return $this->success ( $discovers );
	}
	
	/**
	 * @Description:
	 * @param Request $request
	 */
	function logout(Request $request){
		
		$user=User::find($request->user_id);
		$user->wx_openid='';
		$user->save();
		return $this->success ();
	}
	
	function check(Request $request){
		return $this->success ();
	}
}
