<?php

namespace App\Cells\Customer;

use App\Services\PaymentService;
use App\Services\Customer\ServiceService;

class ServiceCell extends CustomerCell
{

  private ?PaymentService $_paymentService = null;
  public function __construct()
  {
    parent::__construct(new ServiceService());
  }
  final public function getPaymentService(): PaymentService
  {
    if (!$this->_paymentService) {
      $this->_paymentService = new PaymentService();
    }
    return $this->_paymentService;
  }

  public function detail(array $params): string
  {
    $this->getService()->setAction(__FUNCTION__);
    $this->getService()->setFormFields();
    $this->getService()->setFormFilters();
    $this->getService()->setFormRules();
    $this->getService()->setFormOptions();
    $unPaids  = $this->getPaymentService()->getUnPaids('serviceinfo_uid', ['clientinfo_uid' => $params['clientinfo_uid']]);
    $entities = $this->getService()->getEntities(['clientinfo_uid' => $params['clientinfo_uid']]);
    $template = array_key_exists('template', $params) ? $params['template'] : __FUNCTION__;
    return view('cells/service/' . $template, [
      'serviceCellDatas' => [
        'control' => $this->getService()->getControlDatas(),
        'service' => $this->getService(),
        'entities' => $entities,
        'unPaids' => $unPaids
      ]
    ]);
  }
}
