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.AVLE
{
    /// <summary>
    /// AntiVirusResult 掃毒LOG
    /// </summary>
    [Route("api/[controller]")]
    [ApiController]
    public class AntiVirusResultController : Controller
    {
        private readonly AMESContext _context;
        private readonly IConfiguration _config;

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

        /// <summary>
        /// AntiVirusResult 掃毒LOG
        /// </summary>
        /// <param name="WIP">工單</param>
        /// <param name="Model"></param>
        /// <param name="STime"></param>
        /// <param name="ETime"></param>
        /// <returns></returns>
        [HttpGet("GetAntiVirusResult")]
        public  ResultModel<dynamic> GetAntiVirusResult(string WIP, string Model, string STime, string ETime)
        {
            ResultModel<dynamic> result = new ResultModel<dynamic>();
            var context = _config.GetConnectionString("AVLEContext");
            using (IDbConnection _AVLE_context = new SqlConnection(context))
            {
                DynamicParameters p = new DynamicParameters();
                string sql = string.Format(@" SELECT A.WIP,A.Model Models,A.Station,A.Prg_Name,A.Disk_Number,A.Virusname,
                                            (case A.Scan_Status when 'McAfee未發現病毒' then 'OK' else  A.Scan_Status end) Scan_Status ,
                                            A.User_Name,A.Time,A.root_cause result
                                            FROM [iFactory].[PE].[Sacnvirus_Table_View]  A 
                                            WHERE 1=1");
                if (WIP != null)
                {
                    sql += string.Format(@" AND A.WIP = @WIP");
                    p.Add("WIP", WIP, DbType.String);
                }

                if (Model != null)
                {
                    sql += string.Format(@" AND A.Model = @Model");
                    p.Add("Model", Model, DbType.String);
                }

                if (STime != null )
                {
                    sql += string.Format(@" AND A.Time >= @STime");
                    p.Add("STime", STime, DbType.DateTime);
                }

                if (ETime != null)
                {
                    sql += string.Format(@" AND A.Time <= @ETime");
                    p.Add("ETime", ETime, DbType.DateTime);
                }
                sql += string.Format(@" ORDER BY A.TIME DESC");

                if (_AVLE_context.State != ConnectionState.Open)
                {
                    _AVLE_context.Open();
                }
                var query = sql;
                var q =  _AVLE_context.QueryAsync(query, p);


                result.DataTotal = q.Result.Count();

                result.Data = q.Result;

                if (result == null)
                {
                    result.Msg = "查無資料";
                    result.Success = false;
                    return result;
                }

                result.Success = true;
                result.Msg = "OK";
                return result;


                //return q.ToList();
            }
        }
    }
}