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"); } } }