<?php

namespace App\Http\Controllers\Api\v1;

use App\Models\LogAction;
use App\User;
use Carbon\Carbon;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class LogController extends BaseController
{
    //
    /**
     * @api {get} /list Api lấy log
     * @apiName list
     * @apiGroup log
     * @apiDescription Api lấy log
     *
     * @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 getLogs(Request $request)
    {
        $ownerId = $this->user->id;
        if ($this->user->type == User::STAFF) {
            $ownerId = $this->user->staff_owner_id;
        }
        $limit = $request->input('limit', 10);
        $offset = $request->input('offset', 0);

        $users = User::query()
            ->where(function ($q) use ($ownerId) {
                $q->orWhere('id', $ownerId);
                $q->orWhere('staff_owner_id', $ownerId);
            })
            ->get();
        $items = LogAction::query()
            ->whereIn('user_id', $users->pluck('id')->toArray())
            ->orderBy('id', 'desc')
            ->limit($limit)
            ->offset($offset)
            ->get()
            ->map(function ($item) {
                $properties = $item->properties;
                if (isset($properties['is_allow_cycle'])) {
                    $properties['is_allow_cycle'] = intval($properties['is_allow_cycle']);
                }
                if (isset($properties['is_return_deposit'])) {
                    $properties['is_return_deposit'] = intval($properties['is_return_deposit']);
                }
                if (isset($properties['is_return_money_info'])) {
                    $properties['is_return_money_info'] = intval($properties['is_return_money_info']);
                }

                if (isset($properties['deleted_at'])) {
                    if(is_array($properties['deleted_at'])) {
                        $properties['deleted_at'] = Carbon::parse($properties['deleted_at']['date'])->toDateString();
                    }
                }


                if (isset($properties['is_collected'])) {
                    if (!is_numeric($properties['is_collected'])) {
                        if ($properties['is_collected'] == 'off') {
                            $properties['is_collected'] = 0;
                        } else {
                            $properties['is_collected'] = 1;
                        }
                    }
                }
                $item->properties = $properties;
                return $item;
            });

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