1
- using System . Collections . Generic ;
1
+ using System ;
2
+ using System . Collections . Generic ;
2
3
using System . Diagnostics ;
3
4
using System . Linq ;
4
5
using System . Threading . Tasks ;
5
6
using DevOpsMetrics . Core . DataAccess . TableStorage ;
6
7
using DevOpsMetrics . Core . Models . AzureDevOps ;
7
8
using DevOpsMetrics . Core . Models . Common ;
8
9
using DevOpsMetrics . Core . Models . GitHub ;
10
+ using DevOpsMetrics . Service . Controllers ;
9
11
using DevOpsMetrics . Web . Models ;
10
12
using DevOpsMetrics . Web . Services ;
11
13
using Microsoft . AspNetCore . Mvc ;
12
14
using Microsoft . AspNetCore . Mvc . Rendering ;
15
+ using Microsoft . CodeAnalysis ;
13
16
using Microsoft . Extensions . Configuration ;
17
+ using NuGet . Protocol ;
14
18
15
19
namespace DevOpsMetrics . Web . Controllers
16
20
{
@@ -23,18 +27,73 @@ public HomeController(IConfiguration configuration)
23
27
Configuration = configuration ;
24
28
}
25
29
26
- public async Task < IActionResult > Index ( )
30
+ public async Task < IActionResult > Index ( string projectId = null , string log = null )
27
31
{
28
32
//Get a list of settings
29
33
ServiceApiClient serviceApiClient = new ( Configuration ) ;
30
34
List < AzureDevOpsSettings > azureDevOpsSettings = await serviceApiClient . GetAzureDevOpsSettings ( ) ;
31
35
List < GitHubSettings > githubSettings = await serviceApiClient . GetGitHubSettings ( ) ;
32
36
33
37
//Return the resultant list
34
- ( List < AzureDevOpsSettings > , List < GitHubSettings > ) result = ( azureDevOpsSettings , githubSettings ) ;
38
+ IndexViewModel result = new ( )
39
+ {
40
+ AzureDevOpsSettings = azureDevOpsSettings ,
41
+ GitHubSettings = githubSettings ,
42
+ ProjectId = projectId ,
43
+ Log = log
44
+ } ;
35
45
return View ( result ) ;
36
46
}
37
47
48
+ [ HttpGet ( "RefreshMetric" ) ]
49
+ public async Task < IActionResult > RefreshMetric ( string projectId )
50
+ {
51
+ ServiceApiClient serviceApiClient = new ( Configuration ) ;
52
+ List < AzureDevOpsSettings > azureDevOpsSettings = await serviceApiClient . GetAzureDevOpsSettings ( ) ;
53
+ List < GitHubSettings > githubSettings = await serviceApiClient . GetGitHubSettings ( ) ;
54
+ bool foundRecord = false ;
55
+ string log = "" ;
56
+ foreach ( AzureDevOpsSettings item in azureDevOpsSettings )
57
+ {
58
+ if ( item . RowKey == projectId )
59
+ {
60
+ foundRecord = true ;
61
+ DateTime startTime = DateTime . Now ;
62
+ await serviceApiClient . UpdateDORASummaryItem ( item . Organization ,
63
+ item . Project , item . Repository , item . Branch ,
64
+ item . BuildName , item . BuildId ,
65
+ item . ProductionResourceGroup ,
66
+ 30 , 20 , false ) ;
67
+ DateTime endTime = DateTime . Now ;
68
+ projectId = item . RowKey ;
69
+ log = $ "Successfully refreshed { item . Organization } { item . Project } { item . Repository } in { ( endTime - startTime ) . TotalSeconds } seconds";
70
+ break ;
71
+ }
72
+ }
73
+ if ( foundRecord == false )
74
+ {
75
+ foreach ( GitHubSettings item in githubSettings )
76
+ {
77
+ if ( item . RowKey == projectId )
78
+ {
79
+ foundRecord = true ;
80
+ DateTime startTime = DateTime . Now ;
81
+ await serviceApiClient . UpdateDORASummaryItem ( item . Owner ,
82
+ "" , item . Repo , item . Branch ,
83
+ item . WorkflowName , item . WorkflowId ,
84
+ item . ProductionResourceGroup ,
85
+ 30 , 20 , true ) ;
86
+ DateTime endTime = DateTime . Now ;
87
+ projectId = item . RowKey ;
88
+ log = $ "Successfully refreshed { item . Owner } { item . Repo } in { ( endTime - startTime ) . TotalSeconds } seconds";
89
+ break ;
90
+ }
91
+ }
92
+ }
93
+
94
+ return RedirectToAction ( "Index" , "Home" , new { projectId = projectId , log = log } ) ;
95
+ }
96
+
38
97
[ HttpPost ]
39
98
public IActionResult ProjectUpdate ( string RowKey , int NumberOfDaysSelected = 30 )
40
99
{
0 commit comments