@@ -122,5 +122,92 @@ public static function listarPesquisaPosDoutorandos()
122122
123123 return $ pesquisas_pos_doutorando ;
124124 }
125+
126+ /**
127+ * Retorna a quantidade de projetos PD por ano.
128+ *
129+ * Quando o parâmetro $statuses é nulo ou vazio, a função identifica
130+ * automaticamente todos os valores distintos existentes na coluna
131+ * `staatlprj` da tabela PDPROJETO, utilizando-os como filtro.
132+ *
133+ * Caso contrário, usa exatamente os status informados ou o padrão.
134+ *
135+ * Retorno:
136+ * - Array associativo onde:
137+ * - chave = ano (int)
138+ * - valor = quantidade de projetos nesse ano (int)
139+ *
140+ * @author Erickson Zanon
141+ * @date 14/11/2025
142+ * @param array|null $statuses Lista de status a filtrar ou NULL para autodetecção
143+ * @return array
144+ */
145+
146+ public static function contarPDporAno ($ statuses = ['Ativo ' ,'Aprovado ' ])
147+ {
148+ if (($ statuses === null ) or (count ($ statuses )==0 )) {
149+ $ query = "SELECT DISTINCT staatlprj FROM PDPROJETO " ;
150+ $ result = DB ::fetchAll ($ query );
151+ $ statuses = [];
152+ foreach ($ result as $ row ) {
153+ if (!empty ($ row ['staatlprj ' ])) {
154+ $ statuses [] = $ row ['staatlprj ' ];
155+ }
156+ }
157+ }
158+ $ query = DB ::getQuery ('Pesquisa.contarPDporAno.sql ' );
159+ $ statusesString = "' " . implode ("',' " , $ statuses ) . "' " ;
160+ $ query = str_replace ('__statuses__ ' , $ statusesString , $ query );
161+ $ contagem = DB ::fetchAll ($ query );
162+ $ contagemPorAno = array ();
163+ foreach ($ contagem as $ c ){
164+ $ contagemPorAno [$ c ['Ano ' ]] = $ c ['qtdProjetosAtivos ' ];
165+
166+ }
167+ return $ contagemPorAno ;
168+ }
169+
170+ /**
171+ * Retorna a quantidade de projetos PD por mês nos últimos 12 meses.
172+ *
173+ * Quando o parâmetro $statuses é nulo ou vazio, a função identifica
174+ * automaticamente todos os valores distintos existentes na coluna
175+ * `staatlprj` da tabela PDPROJETO, utilizando-os como filtro.
176+ *
177+ * Caso contrário, usa exatamente os status informados ou o padrão.
178+ *
179+ * Retorno:
180+ * - Array associativo onde:
181+ * - chave = "YYYY-MM" (string)
182+ * - valor = quantidade de projetos nesse mês (int)
183+ *
184+ * @author Erickson Zanon
185+ * @date 14/11/2025
186+ * @param array|null $statuses Lista de status a filtrar ou NULL para autodetecção
187+ * @return array
188+ */
189+
190+ public static function contarPDporUltimos12Meses ($ statuses = ['Ativo ' ,'Aprovado ' ])
191+ {
192+ if (($ statuses === null ) or (count ($ statuses )==0 )) {
193+ $ query = "SELECT DISTINCT staatlprj FROM PDPROJETO " ;
194+ $ result = DB ::fetchAll ($ query );
195+ $ statuses = [];
196+ foreach ($ result as $ row ) {
197+ if (!empty ($ row ['staatlprj ' ])) {
198+ $ statuses [] = $ row ['staatlprj ' ];
199+ }
200+ }
201+ }
202+ $ query = DB ::getQuery ('Pesquisa.contarPDporUltimos12Meses.sql ' );
203+ $ statusesString = "' " . implode ("',' " , $ statuses ) . "' " ;
204+ $ query = str_replace ('__statuses__ ' , $ statusesString , $ query );
205+ $ contagem = DB ::fetchAll ($ query );
206+ $ contagemPorMes = array ();
207+ foreach ($ contagem as $ c ){
208+ $ contagemPorMes [$ c ['AnoMes ' ]] = $ c ['qtdProjetosAtivos ' ];
209+ }
210+ return $ contagemPorMes ;
211+ }
125212
126213}
0 commit comments