<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\ApiBaseController;
use App\Http\Requests\Api\BiometricAttendanceLogs\IndexRequest;
use App\Http\Requests\Api\BiometricAttendanceLogs\BiometricEmployeeUpdateRequest;
use App\Models\BiometricAttendanceLogs;
use App\Models\User;
use Examyou\RestAPI\ApiResponse;

class BiometricAttendanceLogController extends ApiBaseController
{
	protected $model = BiometricAttendanceLogs::class;

	protected $modifySelect = true;

	protected $indexRequest = IndexRequest::class;

	protected function modifyIndex($query)
	{
		$company = company();

		return $query->join('users', 'users.employee_number', '=', 'biometric_attendance_logs.employee_number')
			->where('users.company_id', $company->id)
			->where('biometric_attendance_logs.company_id', $company->id)
			->select(
				'biometric_attendance_logs.employee_number',
				'biometric_attendance_logs.date_time',
				'users.name as name',
				'biometric_attendance_logs.id',
			);
	}

	public function updateMapEmployee(BiometricEmployeeUpdateRequest $request, $id)
	{
		$userId = $this->getIdFromHash($id);
		$user = User::findOrFail($userId);

		$isModified = (
			$user->name !== $request->name ||
			$user->biometric_card_number !== $request->biometric_card_number
		);

		$user->name = $request->name;
		$user->biometric_card_number = $request->biometric_card_number;
		$user->biometric_user_modified = $isModified ? 1 : 0;

		$user->save();
	}
	public function pushSelectedEmployee()
	{
		$request = request();
		$ids = $request->ids;

		if (!$ids || !is_array($ids) || count($ids) === 0) {
			return;
		}

		foreach ($ids as $id) {
			$userId = $this->getIdFromHash($id);
			$user = User::findOrFail($userId);
			$user->biometric_user_modified = 1;

			$user->save();
		}
		return ApiResponse::make('Success', []);
	}
}
