<?php
	function preencheVerificaCampos($I, &$funcionario, $restricao){
		$I->amOnPage(Url::create("funcionarios/update&id={$funcionario->FUN_IDFUNCIONARIO}"));

		$I->selectOption("#Funcionarios_FUN_RESTRICAOACESSO", $restricao);

		if($restricao == Funcionarios::SEM_RESTRICAO){
			$I->dontSeeElement("#dias_acessos");
			$I->dontSeeElement("horarios_acesso");
		}
		else{
			setlocale(LC_ALL, 'pt_BR', 'pt_BR.utf-8', 'pt_BR.utf-8', 'portuguese');
    		$id_dia = "Funcionarios_FUN_".strtoupper(gmstrftime('%A'));

			$I->seeElement("#dias_acessos");
			if($restricao == Funcionarios::DIAS_HORARIO){
				$I->seeElement("#horarios_acesso");
				$I->checkOption("input[id='$id_dia']");

				$horainicio = date('H:i', strtotime('-1 hour'));
				$horafim = date('H:i', strtotime("+1 minute",strtotime($horainicio)));

				$I->fillField("#Funcionarios_FUN_HORAMANHAINICIO", $horainicio);
				$I->fillField("#Funcionarios_FUN_HORAMANHAFIM", $horafim);
				$I->fillField("#Funcionarios_FUN_HORATARDEINICIO", $horainicio);
				$I->fillField("#Funcionarios_FUN_HORATARDEFIM", $horafim);
			}
			else{
				$I->dontSeeElement("#horarios_acesso");

    			$I->uncheckOption("input[id='$id_dia']");
			}
		}

		$I->click("#submit_button");
		$I->seeInCurrentUrl(Url::create("funcionarios/view&id={$funcionario->FUN_IDFUNCIONARIO}"));

		$funcionario = Funcionarios::model()->findByPk($funcionario->FUN_IDFUNCIONARIO);
		testaRestricao($I, $funcionario);
	}

	function testaRestricao($I, $funcionario){
		$funcionario_teste = $I->haveFriend("Restrição {$funcionario->FUN_RESTRICAOACESSO}");
		$funcionario_teste->does(function(AcceptanceTester $I) use ($funcionario)  {
			$I->expectTo("Verificar se o funcionário editado pode trabalhar");
			Auth::loginById($I, $funcionario->FUN_IDFUNCIONARIO);
			
			if($funcionario->FUN_RESTRICAOACESSO != Funcionarios::SEM_RESTRICAO){
				$I->assertEquals($funcionario->isWorking(), false);
			}
			else{
				$I->assertEquals($funcionario->isWorking(), true);
			}
		});
		$funcionario_teste->leave();
	}

	$I = new AcceptanceTester($scenario);

	$usuario = ModelFind::getRand("Funcionarios", "FUN_SITUACAO = 'A' AND FUN_TBL_FUNCIONARIOS = 1 AND not exists (select * from funcionarios_bloqueio t2 where t2.FUQ_FUNCIONARIO = FUN_IDFUNCIONARIO AND t2.FUQ_DATAFIM > NOW())");
	Auth::loginById($I, $usuario->FUN_IDFUNCIONARIO);

	$funcionario = ModelFind::getRand("Funcionarios", "FUN_IDSETOR = 5 AND FUN_SITUACAO = 'A' AND not exists (select * from funcionarios_bloqueio t2 where t2.FUQ_FUNCIONARIO = FUN_IDFUNCIONARIO AND t2.FUQ_DATAFIM > NOW())");


	preencheVerificaCampos($I, $funcionario, Funcionarios::SEM_RESTRICAO);

	preencheVerificaCampos($I, $funcionario, Funcionarios::SOMENTE_DIAS);

	preencheVerificaCampos($I, $funcionario, Funcionarios::DIAS_HORARIO);