1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Newtonsoft.Json;
using backstage.Helpers;
using backstage.Models.Users;
using System.Net.Http;
using System.Security.Claims;
using Microsoft.AspNetCore.Localization;
using Microsoft.AspNetCore.Http;
using TokenVault_management.Models;
using backstage.Models.TokenVault;
namespace backstage.Controllers
{
[Authorize]
public class HomeController : Controller
{
private readonly IConfiguration _config;
private readonly ICallApi _callApi;
/// <summary>
/// 讀取組態用
/// </summary>
public HomeController(IConfiguration config, ICallApi callApi)
{
_config = config;
_callApi = callApi;
}
public async Task<IActionResult> token()
{
// 確認使用者是否已經登入
if (User.Identity.IsAuthenticated)
{
return Ok( User.FindFirstValue("token"));
}
return Ok();
}
public async Task<IActionResult> Index()
{
#region department數量
var DepartmentsResponse = new DepartmentsResponse();
var url = _config["IP"] + "/merchant/list";
var httpMethod = HttpMethod.Post;
// 取得使用者的 "token" Claim 值
string token = User.FindFirstValue("token");
var parameters = new Dictionary<string, string>
{
{ "token", token }
};
var departmentCount = 0;
var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
DepartmentsResponse = JsonConvert.DeserializeObject<DepartmentsResponse>(apiResult.Data.ToString());
if (DepartmentsResponse.r == 0)
{
departmentCount = DepartmentsResponse.count;
}
}
ViewBag.departmentCount = departmentCount;
#endregion
#region Token Vault 數量
url = _config["IP"] + "/tsp/merchant/vault/list";
parameters = new Dictionary<string, string>
{
};
var vaultCount = 0;
apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
var response = JsonConvert.DeserializeObject<Response>(apiResult.Data.ToString());
if (response.r == 0)
{
vaultCount = response.count;
}
}
ViewBag.vaultCount = vaultCount;
#endregion
#region Token Vault Entry 資料數量
var departmentList = DepartmentsResponse.merchants;
int totalEntry = 0;
url = _config["IP"] + "/v2/vault/get";
if (departmentList != null)
{
foreach (var d in departmentList)
{
parameters = new Dictionary<string, string>
{
{ "Merchant_id", d.merchant_id.ToString() }
};
apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
var TokenVaultResponse = JsonConvert.DeserializeObject<TokenVaultResponse>(apiResult.Data.ToString());
if (TokenVaultResponse.r == 0)
{
if (TokenVaultResponse.info!=null)
{
foreach (var v in TokenVaultResponse.info)
{
totalEntry += v.tokenCount;
}
}
}
}
}
}
ViewBag.totalEntry = totalEntry;
#endregion
#region Token Vualt Entry 本月新增資料數量
#endregion
#region Token Vualt Entry 本月修改資料數量
#endregion
return View();
}
public IActionResult ChangeLanguage(string lang, string returnUrl)
{
// 設置所選語言
Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(lang)),
new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }
);
// 重新導向到先前的頁面或首頁
return Redirect("~" + returnUrl);
}
public IActionResult Error()
{
return View();
}
public IActionResult AccessDenied()
{
TempData["IsSuccess"] = false;
TempData["msg"] = "您沒有訪問此頁面的權限。";
return RedirectToAction("Index");
}
}
}