function(ContainerInterface $container) { return new Incoviba\Service\Login( $container->get(Incoviba\Repository\Login::class), $container->get(Incoviba\Repository\User::class), $container->get('COOKIE_NAME'), $container->get('MAX_LOGIN_HOURS'), $container->has('COOKIE_DOMAIN') ? $container->get('COOKIE_DOMAIN') : '', $container->has('COOKIE_PATH') ? $container->get('COOKIE_PATH') : '', $container->has('COOKIE_SEPARATOR') ? $container->get('COOKIE_SEPARATOR') : 'g' ); }, Incoviba\Service\Money::class => function(ContainerInterface $container) { $mindicador = new Incoviba\Service\Money\MiIndicador(new GuzzleHttp\Client([ 'base_uri' => 'https://mindicador.cl/api/', 'headers' => ['Accept' => 'application/json'] ])); $ine = new Incoviba\Service\Money\Ine(new GuzzleHttp\Client([ 'base_uri' => 'https://api-calculadora.ine.cl/ServiciosCalculadoraVariacion' ])); $sii = new Incoviba\Service\Money\SII(new GuzzleHttp\Client([ 'base_uri' => 'https://www.sii.cl/valores_y_fechas/' ]), $container->get(Incoviba\Repository\UF::class)); return (new Incoviba\Service\Money($container->get(Psr\Log\LoggerInterface::class))) ->register('uf', $mindicador) ->register('uf', $sii) ->register('usd', $mindicador) ->register('ipc', $ine); }, Predis\ClientInterface::class => function(ContainerInterface $container) { $options = [ 'scheme' => 'tcp', 'host' => $container->get('REDIS_HOST'), 'port' => $container->get('REDIS_PORT') ]; if ($container->has('REDIS_USER')) { $options['username'] = $container->get('REDIS_USER'); } if ($container->has('REDIS_PASSWORD')) { $options['password'] = $container->get('REDIS_PASSWORD'); } return new Predis\Client($options); }, Incoviba\Service\Contabilidad\Cartola::class => function(ContainerInterface $container) { return (new Incoviba\Service\Contabilidad\Cartola( $container->get(Psr\Log\LoggerInterface::class), $container->get(Psr\Http\Message\StreamFactoryInterface::class), $container->get(Incoviba\Common\Define\Contabilidad\Exporter::class), $container->get(Incoviba\Repository\Inmobiliaria::class), $container->get(Incoviba\Repository\Inmobiliaria\Cuenta::class), $container->get(Incoviba\Repository\Contabilidad\Movimiento::class), $container->get(Incoviba\Service\Contabilidad\Movimiento::class), $container->get(Incoviba\Repository\Contabilidad\Cartola::class) )) ->register('security', $container->get(Incoviba\Service\Contabilidad\Cartola\Security::class)) ->register('itau', $container->get(Incoviba\Service\Contabilidad\Cartola\Itau::class)) ->register('santander', $container->get(Incoviba\Service\Contabilidad\Cartola\Santander::class)) ->register('bci', $container->get(Incoviba\Service\Contabilidad\Cartola\BCI::class)); }, Incoviba\Common\Define\Contabilidad\Exporter::class => function(ContainerInterface $container) { return $container->get(Incoviba\Service\Contabilidad\Exporter\Nubox::class); }, Incoviba\Service\Contabilidad\Exporter\Nubox::class => function(ContainerInterface $container) { return new Incoviba\Service\Contabilidad\Exporter\Nubox($container->get(Incoviba\Repository\Contabilidad\CentroCosto::class), $container->get('folders')->get('uploads')); }, Incoviba\Service\Contabilidad\Nubox::class => function(ContainerInterface $container) { return new Incoviba\Service\Contabilidad\Nubox( $container->get(Psr\Log\LoggerInterface::class), $container->get(Incoviba\Repository\Contabilidad\Nubox::class), $container->get(Incoviba\Service\Redis::class), new GuzzleHttp\Client([ 'defaults' => [ 'config' => [ 'curl' => [ CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1_3 ], 'verify' => false ] ], ]), $container->get(Psr\Http\Message\RequestFactoryInterface::class), $container->get('nubox')->get('url')); }, Incoviba\Service\Informe::class => function(ContainerInterface $container) { return (new Incoviba\Service\Informe( $container->get(Psr\Log\LoggerInterface::class), $container->get('folders')->get('informes')) ) ->register('xlsx', Incoviba\Service\Informe\Excel::class); }, Incoviba\Service\Contabilidad\Informe\Tesoreria\Output\Excel::class => function(ContainerInterface $container) { return new Incoviba\Service\Contabilidad\Informe\Tesoreria\Output\Excel( $container->get(Psr\Log\LoggerInterface::class), $container->get('folders')->get('informes'), $container->get(Incoviba\Service\UF::class), $container->get(Incoviba\Service\USD::class) ); }, Incoviba\Service\Contabilidad\Cartola\Santander::class => function(ContainerInterface $container) { return (new Incoviba\Service\Contabilidad\Cartola\Santander( $container->get(Psr\Log\LoggerInterface::class), )) ->registerSub($container->get(Incoviba\Service\Contabilidad\Cartola\Santander\OfficeBanking::class)); }, Incoviba\Service\Contabilidad\Cartola\BCI::class => function(ContainerInterface $container) { return (new Incoviba\Service\Contabilidad\Cartola\BCI( $container->get(Psr\Log\LoggerInterface::class), )) ->registerSub($container->get(Incoviba\Service\Contabilidad\Cartola\BCI\Mes::class)); }, 'TokuClient' => function(ContainerInterface $container) { return new GuzzleHttp\Client([ 'base_uri' => $container->get('TOKU_URL'), 'headers' => [ 'x-api-key' => $container->get('TOKU_TOKEN'), 'accept' => 'application/json' ] ]); }, Incoviba\Service\Venta\MediosPago\Toku\Customer::class => function(ContainerInterface $container) { $service = new Incoviba\Service\Venta\MediosPago\Toku\Customer( $container->get('TokuClient'), $container->get(Incoviba\Repository\Venta\MediosPago\Toku\Customer::class) ); $service->setLogger($container->get('externalLogger')); return $service; }, Incoviba\Service\Venta\MediosPago\Toku\Subscription::class => function(ContainerInterface $container) { $service = new Incoviba\Service\Venta\MediosPago\Toku\Subscription( $container->get('TokuClient'), $container->get(Incoviba\Repository\Venta\MediosPago\Toku\Subscription::class), $container->get(Incoviba\Service\Venta::class) ); $service->setLogger($container->get('externalLogger')); return $service; }, Incoviba\Service\Venta\MediosPago\Toku\Invoice::class => function(ContainerInterface $container) { $service = new Incoviba\Service\Venta\MediosPago\Toku\Invoice( $container->get('TokuClient'), $container->get(Incoviba\Repository\Venta\MediosPago\Toku\Invoice::class), $container->get(Incoviba\Service\Venta\Pago::class), $container->get(Incoviba\Service\UF::class) ); $service->setLogger($container->get('externalLogger')); $service->setAltLogger($container->get('jsonLogger')); return $service; }, Incoviba\Service\Venta\MediosPago\Toku::class => function(ContainerInterface $container) { return new Incoviba\Service\Venta\MediosPago\Toku( $container->get('externalLogger'), $container->get(Incoviba\Common\Define\Connection::class), $container->get(Incoviba\Service\HMAC::class) ) ->register('customer', $container->get(Incoviba\Service\Venta\MediosPago\Toku\Customer::class)) ->register('subscription', $container->get(Incoviba\Service\Venta\MediosPago\Toku\Subscription::class)) ->register('invoice', $container->get(Incoviba\Service\Venta\MediosPago\Toku\Invoice::class)); }, Pheanstalk\Pheanstalk::class => function(ContainerInterface $container) { return Pheanstalk\Pheanstalk::create( $container->get('BEANSTALKD_HOST'), $container->has('BEANSTALKD_PORT') ? $container->get('BEANSTALKD_PORT') : 11300 ); }, Incoviba\Service\MQTT::class => function(ContainerInterface $container) { return new Incoviba\Service\MQTT() ->register('default', $container->get(Incoviba\Service\MQTT\Pheanstalk::class)); }, Incoviba\Service\Queue::class => function(ContainerInterface $container) { return new Incoviba\Service\Queue( $container->get(Psr\Log\LoggerInterface::class), $container->get(Incoviba\Service\Job::class), $container->get(Incoviba\Service\Worker\Request::class) ) ->register('request', $container->get(Incoviba\Service\Worker\Request::class)) ->register('service', $container->get(Incoviba\Service\Worker\Service::class)) ->register('dummy', $container->get(Incoviba\Service\Worker\Dummy::class)) ->register('checkExternal', $container->get(Incoviba\Service\Worker\CheckExternal::class)); }, Incoviba\Service\Worker\Request::class => function(ContainerInterface $container) { $apiKey = md5($container->get('API_KEY')); $key = $apiKey; $loginService = $container->get(Incoviba\Service\Login::class); if ($loginService->isIn()) { $token = $loginService->getToken(); $key = "{$apiKey}{$loginService->getSeparator()}{$token}"; } return new Incoviba\Service\Worker\Request( $container->get(Psr\Log\LoggerInterface::class), new GuzzleHttp\Client([ 'base_uri' => 'http://incoviba_proxy/api', 'headers' => [ 'Authorization' => "Bearer {$key}" ] ]) ); }, Incoviba\Service\Worker\CheckExternal::class => function(ContainerInterface $container) { return new Incoviba\Service\Worker\CheckExternal( $container->get('externalLogger'), $container ); }, Incoviba\Service\External::class => function(ContainerInterface $container) { return new Incoviba\Service\External( $container->get('externalLogger'), $container->get(Incoviba\Service\Queue::class) ) ->register($container->get(Incoviba\Service\Venta\MediosPago\Toku::class)); } ];