@@ -40,6 +40,37 @@ public async Task<IEnumerable<PedidoDTO>> ObterListaPorClienteId(Guid clienteId)
40
40
return pedidos . Select ( PedidoDTO . ParaPedidoDTO ) ;
41
41
}
42
42
43
+ public async Task < PedidoDTO > ObterPedidosAutorizados ( )
44
+ {
45
+ // Correção para pegar todos os itens do pedido e ordernar pelo pedido mais antigo
46
+ const string sql = @"SELECT
47
+ P.ID as 'PedidoId', P.ID, P.CLIENTEID,
48
+ PI.ID as 'PedidoItemId', PI.ID, PI.PRODUTOID, PI.QUANTIDADE
49
+ FROM PEDIDOS P
50
+ INNER JOIN PEDIDOITEMS PI ON P.ID = PI.PEDIDOID
51
+ WHERE P.PEDIDOSTATUS = 1
52
+ ORDER BY P.DATACADASTRO" ;
53
+
54
+ // Utilizacao do lookup para manter o estado a cada ciclo de registro retornado
55
+ var lookup = new Dictionary < Guid , PedidoDTO > ( ) ;
56
+
57
+ await _pedidoRepository . ObterConexao ( ) . QueryAsync < PedidoDTO , PedidoItemDTO , PedidoDTO > ( sql ,
58
+ ( p , pi ) =>
59
+ {
60
+ if ( ! lookup . TryGetValue ( p . Id , out var pedidoDTO ) )
61
+ lookup . Add ( p . Id , pedidoDTO = p ) ;
62
+
63
+ pedidoDTO . PedidoItems ??= new List < PedidoItemDTO > ( ) ;
64
+ pedidoDTO . PedidoItems . Add ( pi ) ;
65
+
66
+ return pedidoDTO ;
67
+
68
+ } , splitOn : "PedidoId,PedidoItemId" ) ;
69
+
70
+ // Obtendo dados o lookup
71
+ return lookup . Values . OrderBy ( p => p . Data ) . FirstOrDefault ( ) ;
72
+ }
73
+
43
74
private PedidoDTO MapearPedido ( dynamic result )
44
75
{
45
76
var pedido = new PedidoDTO
0 commit comments