
<?php
use Tuupola\Middleware\JwtAuthentication;



/*
// rotas para atualização de pedidos e estoque da api
$app->group('/update', function(){
  //insere produtos por tabela csv
  $this->get('/table', 'App\Controllers\DB\TableItemsController:table');//ok


  //verifica novos pedidos
  $this->get('/orders', 'App\Controllers\DB\OrdersDBController:all');//ok

  //lista os pedidos novos um por um (se existir)
  $this->get('/order-seller', 'App\Controllers\DB\DataOrderSellerDBController:get');//ok

  //pega itens de cada pedido
  $this->get('/items-order', 'App\Controllers\DB\ItemsOrderDBController:get');//ok

  //verifica status do item
  $this->get('/stock-status', 'App\Controllers\DB\StatusStockDBController:get');//ok

  //adiciona status de estoque para saber se existe algum item com estoque da fábrica
  $this->get('/order-status', 'App\Controllers\DB\OrdersStatusStockDBController:status');//ok

  //lista pedidos e coloca no status para faturar
  $this->get('/alt-status-orders', 'App\Controllers\DB\OrdersStatusDBController:get');

  //verifica se o seller está null e preenche valor
  $this->get('/seller-id', 'App\Controllers\DB\SellerDBController:get');//ok

  //verifica estoque da fabrica e envia pra doca da convicto (method get)
  //$this->get('/stock', 'App\Controllers\DB\StockDBController:get');
});
*/





//rota autenticação para seller
$app->post('/club/seller', 'App\Controllers\Seller\SellerAuth:login');

//rotas para seller
$app->group('/seller', function(){
  //pega email e grava a doca no session storage
  $this->get('/dash/{dock}', 'App\Controllers\Seller\SellerDash:all');

  //busca os pedidos por status (canceled, invoiced, ready)
  $this->get('/dash/{dock}/{action}', 'App\Controllers\Seller\SellerDash:get');

  //lista os pedidos do seller por id
  $this->get('/dock/{id}', 'App\Controllers\Seller\SellerOrderList:get');
  //lista pedido da doca do seller
  $this->get('/dock/{id}/{order}', 'App\Controllers\Seller\SellerOrderList:order');

  //lista por data
  $this->get('/dock/{id}/{start}/{end}', 'App\Controllers\Seller\SellerOrderList:orderdata');


  //lista items do pedido
  $this->get('/items/{order}', 'App\Controllers\Seller\SellerOrderList:items');

  //fatura pedidos
  $this->post('/dock/{order}', 'App\Controllers\Seller\SellerInvoiceNotification:post');

  //lista de produtos
  $this->get('/products', 'App\Controllers\Seller\Warehouse\ItemsAll:all');
  //retorna um item com o parametro ean
  $this->get('/products/{dock}/{item}', 'App\Controllers\Seller\Warehouse\ItemsDock:get');
  //atualiza estoque na doca do seller (alterar put)
  $this->put('/products/{dock}/{item}', 'App\Controllers\Seller\Warehouse\UpdateItemsDock:up');
  
  //retorna lista com estoque da doca do seller
  $this->get('/products/{dock}/group/{item}', 'App\Controllers\Seller\Warehouse\ItemsSeller:searchgrid');
  //atualiza estoque na doca do seller (alterar put)
  $this->put('/products/{dock}/group/{item}', 'App\Controllers\Seller\Warehouse\UpdateItemsSeller:updategrid');
  
  
  // retorna lista de promoções
  $this->get('/promotion/{dock}', 'App\Controllers\Seller\SellerPromotions:get');

  // cria nova promoção
  $this->post('/promotion/{dock}', 'App\Controllers\Seller\SellerPromotions:create');

  // exclui promoção
  $this->delete('/promotion/{id}', 'App\Controllers\Seller\SellerPromotions:delete');
  
})->add(function($request, $response, $next){
  $token = $request->getAttribute('jwt');
  $response = $next($request, $response);
  return $response;
})->add(new JwtAuthentication([
  'secret' => getenv('jwt_key'),
  'attribute' => 'jwt'
]));


//rotas para painel admin FA
$app->post('/cvto/admin', 'App\Controllers\Admin\Auth:auth');
$app->group('/cvto', function(){
  //lista todos os sellers parceiros cadastrados
  $this->get('/sellers', 'App\Controllers\Admin\ClientOrderList:all');
  // lista os pedidos de cada seller get(parametro)
  $this->get('/sellers/{warehouseId}', 'App\Controllers\Admin\ClientOrderList:get');
  // lista os detalhes de cada sellers
  $this->get('/sellers/details/{id}', 'App\Controllers\Admin\ClientOrderList:byId');
  //novo seller
  $this->post('/sellers', 'App\Controllers\Admin\ClientOrderList:create');
  //altera o seller
  $this->put('/sellers/details/{id}', 'App\Controllers\Admin\ClientOrderList:update');
  // rota para criar filtro por data e doca
  $this->get('/seller-orders/{warehouseId}/{start}/{end}','App\Controllers\Admin\ClientOrderList:dateseller');

  // lista os pedidos de todos sellers
  $this->get('/orders', 'App\Controllers\Admin\OrdersList:all');
  // pega pedido por parametro orderId
  $this->get('/orders/{id}', 'App\Controllers\Admin\OrdersList:get');

  // pega pedido por parametro data inicio e fim
  $this->get('/orders-data/{start}/{end}', 'App\Controllers\Admin\OrdersList:orderdata');


  //itens por pedidos
  $this->get('/items/{order}', 'App\Controllers\Admin\ItemsList:get');
  //status do pedido
  $this->get('/orders-status', 'App\Controllers\Admin\StatusOrders:all');
  //status do pedido por action
  $this->get('/orders-status/{action}', 'App\Controllers\Admin\StatusOrders:get');
})->add(function($request, $response, $next){
  $token = $request->getAttribute('jwt');
  $response = $next($request, $response);
  return $response;
})->add(new JwtAuthentication([
  'secret' => getenv('jwt_key'),
  'attribute' => 'jwt'
]));
