<?php

namespace App\Http\Controllers\Api\v2;

use App\Models\Achievement;
use App\Models\UserAchievement;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class AchievementController extends BaseController {
	//
	/**
	 * @api {post} v2/achievement/list Danh sách các nhiệm vụ
	 * @apiName /list
	 * @apiGroup achievement
	 *
	 * @apiDescription Api Danh sách các nhiệm vụ
	 * @apiSuccess {Number} status 1 hoặc 0. 1 là thành công, 0 là không thành công.
	 * @apiSuccess {String} message  Tin nhắn hệ thống.
	 * @apiSuccess {String} data
	 */
	public function getAchievements() {
		$userId = $this->user->id;
		$items  = Achievement::query()
		                     ->get()
		                     ->map( function ( $item ) use ( $userId ) {
			                     $userAchievement = UserAchievement::query()
			                                                       ->where( 'user_id', $userId )
			                                                       ->where( 'achievement_id', $item->id )
			                                                       ->first();

			                     return [
				                     'name'    => $item->name,
				                     'desc'    => $item->desc,
				                     'credits' => $item->credits,
				                     'type'    => $item->type,
				                     'done'    => ! empty( $userAchievement ) ? $userAchievement->done : 0,
				                     'target'  => $item->target
			                     ];
		                     } );

		return response( [
			'status' => 1,
			'data'   => $items
		] );
	}
}
