<?php

namespace App\Actions;

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use App\Services\LdapService;
use App\View\Pages;

class OperatorAction
{
    private $ldap;
    
    public function __construct(LdapService $ldap, Pages $view)
    {
        $this->ldap = $ldap;
	$this->view = $view;
    }

    public function list(ServerRequestInterface $request,
                         ResponseInterface $response, array $args): ResponseInterface
    {
        $params = $request->getQueryParams();
       	$operators = $this->ldap->operator_list();
        // echo var_dump($operators);
        if (isset($params['query']) AND $params['query']!=''){
            $query = $params['query'];
            $info = $this->ldap->search($query);
            // $info = $this->conn->search_with_group_without_list($query, $name);
            $groups = $this->ldap->search_departs($query);
            
            foreach($groups as $g) {
                $temp = $this->ldap->get_depart($g['name']);
                $info[$g['name']] = $temp[$g['name']];
                // echo var_dump($info);
            }
            return $this->view->render($request, $response, 'operator.html', [
                'operators' => $operators,
                'data' => $info,
                'groups' => $groups,
                'query' => $query
            ]);
        } else {
            
            return $this->view->render($request, $response, 'operator.html', [
		'operators' => $operators
            ]);
        }
    }

    public function delete(ServerRequestInterface $request,
                           ResponseInterface $response, array $args): ResponseInterface
    {
        $name = $args['name'];
        $operators = $this->ldap->del_operator($name);
	return $response->withStatus(302)
			->withHeader('Location', "/ui/operator");
    }

    public function edit(ServerRequestInterface $request,
                         ResponseInterface $response, array $args): ResponseInterface
    {
        $name = $args['name'];
        $operator = $this->ldap->get_operator($name);
        // echo var_dump($operator);
        return $this->view->render($request, $response, 'edit_operator.html', [
            'operator' => $operator
        ]);
    }

    public function create(ServerRequestInterface $request,
                           ResponseInterface $response, array $args): ResponseInterface
    {
        $data = $request->getParsedBody();
        $name = $args['name'];
        $operator['login'] = $data['login'];
        $operator['role'] = $data['role'];
        $operator['password'] = $data['password'];
        
        $operator = $this->ldap->edit_operator($name, $operator);
        /* echo var_dump($operator); */
        return $response->withStatus(302)
			->withHeader('Location', "/ui/operator");
    }
}
