using AMESCoreStudio.CommonTools.Result;
using AMESCoreStudio.WebApi.Models.BAS;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System.Threading.Tasks;
using System;
using System.Net.Mail;
using Microsoft.Extensions.Configuration;
using System.Net;
using System.Linq;
using System.Text.RegularExpressions;
using System.IO;
using Dapper;
using AMESCoreStudio.WebApi.Extensions;
using AMESCoreStudio.WebApi.Models.AMES;
using System.Data;
using System.Collections.Generic;
using System.Data.SqlClient;
using Microsoft.Extensions.Options;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;

namespace AMESCoreStudio.WebApi.Controllers.BLL
{
    /// <summary>
    /// TestLog 測試Log
    /// </summary>
    [Route("api/[controller]")]
    [ApiController]
    public class TestLogController : Controller
    {
        private readonly AMESContext _context;
        private readonly IConfiguration _config;

        /// <summary>
        /// 建構式
        /// </summary>
        /// <param name="context"></param>
        public TestLogController(AMESContext context, IConfiguration config)
        {
            _config = config;
            _context = context;
        }


        /// <summary>
        /// 查詢 TestLog
        /// </summary>
        /// <param name="id">條碼</param>
        /// <returns></returns>
        [HttpGet("{id}")]
        public List<dynamic> GetTestLog(string id)
        {
            var query = @$" SELECT * FROM JHAMES.TEST_FUNCTION_TABLE WHERE SN=:id";

            DynamicParameters p = new DynamicParameters();
            p.Add("id", id, DbType.String);
            var q = _context.Database.DapperQuery<dynamic>(query, p);
            return q.ToList();
        }

        /// <summary>
        /// 查詢 TestLog ByMSSql
        /// </summary>
        /// <param name="id">條碼</param>
        /// <returns></returns>
        [HttpGet("ByMSSql/{id}")]
        public async Task<List<dynamic>> GetTestLogByMSSql(string id)
        {
            var context = _config.GetConnectionString("TestLogConnection");
            using (IDbConnection _TestLog_context = new SqlConnection(context))
            {
                if (_TestLog_context.State != ConnectionState.Open)
                {
                    _TestLog_context.Open();
                }
                var query = @$" SELECT * FROM TestAutomate.dbo.TEST_FUNCTION_TABLE WHERE SN=@id";
                DynamicParameters p = new DynamicParameters();
                p.Add("id", id, DbType.String);
                var q = await _TestLog_context.QueryAsync<dynamic>(query, p);
                return q.ToList();
            }
        }

        /// <summary>
        /// 查詢 是否有掃毒資料
        /// </summary>
        /// <param name="id">工單號碼</param>
        /// <returns></returns>
        [HttpGet("AcnvirusLog/{id}")]
        public async Task<List<dynamic>> GetSacnvirus(string id)
        {
            var context = _config.GetConnectionString("TestLogConnection");
            using (IDbConnection _TestLog_context = new SqlConnection(context))
            {
                if (_TestLog_context.State != ConnectionState.Open)
                {
                    _TestLog_context.Open();
                }
                var query = @$" SELECT * FROM iFactory.PE.Sacnvirus_Table_View WHERE WIP=@id";
                DynamicParameters p = new DynamicParameters();
                p.Add("id", id, DbType.String);
                var q = await _TestLog_context.QueryAsync<dynamic>(query, p);
                return q.ToList();
            }
        }
    }
}