using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using AMESCoreStudio.Web.Models;
using Microsoft.AspNetCore.Authorization;
using Newtonsoft.Json;
using System.Reflection;
using AMESCoreStudio.WebApi;

namespace AMESCoreStudio.Web.Controllers
{
    public class BulletinController : Controller
    {
        private readonly ILogger<BulletinController> _logger;
        public readonly IBulletin _bulletinApi;

        public BulletinController(ILogger<BulletinController> logger, IBulletin bulletinApi)
        {
            _logger = logger;
            _bulletinApi = bulletinApi;
        }

        public IActionResult Index()
        {
            if (Request.Cookies["_AMESCookie"] != null)
            {
                var userID = "";
                HttpContext.Request.Cookies.TryGetValue("UserID", out userID);
                if (int.Parse(userID.ToString()) >= 0)
                {
                    return View();
                }
            }
            return RedirectToAction("Index", "Login");
            //return View();
        }

        public IActionResult Create()
        {
            ViewBag.bdt = DateTime.Now.ToString("yyyy/MM/dd HH:mm");
            return View();
        }

        public IActionResult Stop()
        {
            return View();
        }

        //修改页面
        [HttpGet]
        public async Task<IActionResult> EditAsync(int id)
        {
            var result = await _bulletinApi.GetBulletin(id);

            if (result.Count==0)
            {
                return View();
            }
            return View(result[0]);
        }

        //表单提交,id=0 添加,id>0 修改
        [HttpPost]

        public async Task<IActionResult> SaveAsync(BulletinDTO model)
        {
            if (ModelState.IsValid)
            {
                IResultModel result;
                if (model.BulletinID == 0)
                {
                    result = await _bulletinApi.PostBulletin(JsonConvert.SerializeObject(model));
                }
                else
                {
                    //var result = await _bulletinApi.PutBulletin(model.BulletinID, model);
                    result = await _bulletinApi.PutBulletin(model.BulletinID, JsonConvert.SerializeObject(model));
                }

                if (!result.Success)
                {
                    var _msg = model.BulletinID == 0 ? "添加成功!" : "修改成功!";
                    return RedirectToAction("Refresh", "Home", new { msg = _msg });
                }
                else
                {
                    if (result.Errors.Count > 0)
                    {
                        ModelState.AddModelError(result.Errors[0].Id, result.Errors[0].Msg);
                    }
                    else
                    {
                        ModelState.AddModelError("error", result.Msg);
                    }
                }


            }
            if (model.BulletinID == 0)
            {
                return View("Create", model);
                //return Json(new Result() { success = true, msg = "" });
            }
            return View("Edit", model);
            //return Json(new Result() { success = true, msg = "" });
        }

        public async Task<IActionResult> DeleteAsync(int id)
        {
            var result = await _bulletinApi.DeleteBulletin(id);
            return Json(new Result() { success =true, msg = "" });
        }

        //Layui数据表格异步获取展示列表数据
        [ResponseCache(Duration = 0)]
        [HttpGet]
        //[Authorize]
        public async Task<IActionResult> GetBulletinAsync(int id)
        {
            var result = await _bulletinApi.GetBulletin(id);


            if (result.Count > 0)
            {
                string json_str = JsonConvert.SerializeObject(result);

                //string json_str = "[{\"BulletinID\":1,\"BulletinTitle\":\"系统版本1.0.0发布\",\"BulletinContent\":\"系统版本1.0.0发布\",\"BulletinTime\":\"2021 - 07 - 22T00: 00:00\",\"BulletinDays\":5}]";

                return Json(new Table() { code = 0, msg = "", data = result, count = result.Count });
                //return Json(new Table() { data = JsonConvert.DeserializeObject(json_str), count = result.Count });
                //return Json(new Table() { code = 0, msg = "", count = result.Count, data = result });
                //return Json(new Table() { data = json_str, count = result.Count });
            }


            return Json(new Table() { count = 0, data = null });

        }

        //Layui数据表格异步获取展示列表数据
        [ResponseCache(Duration = 0)]
        [HttpGet]
        //[Authorize]
        public async Task<IActionResult> GetBulletinsAsync()
        {
            var result = await _bulletinApi.GetBulletins();

            
            if (result.Count > 0)
            {
                string json_str = JsonConvert.SerializeObject(result);

                //string json_str = "[{\"BulletinID\":1,\"BulletinTitle\":\"系统版本1.0.0发布\",\"BulletinContent\":\"系统版本1.0.0发布\",\"BulletinTime\":\"2021 - 07 - 22T00: 00:00\",\"BulletinDays\":5}]";

                return Json(new Table() { code = 0, msg = "", data = result, count = result.Count });
                //return Json(new Table() { data = JsonConvert.DeserializeObject(json_str), count = result.Count });
                //return Json(new Table() { code = 0, msg = "", count = result.Count, data = result });
                //return Json(new Table() { data = json_str, count = result.Count });
            }
            

            return Json(new Table() {  count = 0,data = null });

        }
    }
}