using MESClassLibrary.BLL.Injection;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;

namespace MESWebSite.HttpHandlers
{
    /// <summary>
    /// ModelChangeRecordHandler 的摘要说明
    /// </summary>
    public class ModelChangeRecordHandler : IHttpHandler
    {

        HttpRequest Request = null;
        HttpResponse Response = null;

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            Request = context.Request;
            Response = context.Response;

            string method = Request.Params["method"];
            switch (method)
            {
                case "QueryExcel":
                    QueryExcel();
                    break;
                default:
                    break;

            }

        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
        void QueryExcel()
        {
            string StartTime = Request.Params["StartTime"];
            string EndTime = Request.Params["EndTime"];
            string ModelId = Request.Params["ModelId"];
            InjectionDownRecordBLL bll = new InjectionDownRecordBLL();
            List<List<string>> list = bll.SearchChangeRecordForExcel(StartTime, EndTime, ModelId);

            XSSFWorkbook book = new XSSFWorkbook();
            ISheet sheet = book.CreateSheet("Sheet1");

            for (int i = 0; i < list.Count; i++)
            {
                IRow row = sheet.CreateRow(i);

                for (int k = 0; k < list[i].Count; k++)
                {
                    row.CreateCell(k).SetCellValue(list[i][k].ToString());
                }

            }


            // 写入到客户端  
            MemoryStream ms = new MemoryStream();
            book.Write(ms);
            Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xlsx", DateTime.Now.ToString("yyyyMMddHHmmssfff")));
            Response.BinaryWrite(ms.ToArray());
            book = null;
            ms.Close();
            ms.Dispose();

        }


        public string GetModelValue(string FieldName, object obj)
        {
            try
            {
                Type Ts = obj.GetType();
                object o = Ts.GetProperty(FieldName).GetValue(obj, null);
                string Value = Convert.ToString(o);
                if (string.IsNullOrEmpty(Value)) return null;
                return Value;
            }
            catch
            {
                return null;
            }
        }
    }
}