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;

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 apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
            if (apiResult.IsSuccess)
            {
                DepartmentsResponse = JsonConvert.DeserializeObject<DepartmentsResponse>(apiResult.Data.ToString());
                if (DepartmentsResponse.r == 0)
                {
                    ViewBag.departmentCount = DepartmentsResponse.count;
                }

            }


            #endregion

            #region Token Vault 數量

            #endregion

            #region Token Vault Entry  資料數量

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






    }
}