using System;
using System.Data;
using System.Web;
using System.Web.Configuration;
using System.Xml.Linq;
using System.Web.Script.Serialization;


namespace BeginScreen
{
    /// <summary>
    /// RoomHandler 的摘要说明
    /// </summary>
    public class RoomHandler : HandlerBase
    { 
        private DateTime _beginDate;
        private DateTime _endDate;
        private int dSum; //数据表的总记录
        private int startRecond; //起始记录
        private int endRecond; //结束记录
        private static int PageSum = 9; //每页显示的记录数
        private int countPage; //总页数
        private int currentPage; //当前页

        private DataTable dts;


        #region 配置文件的属性
        public static XElement xmlOpe = null;
        private string fontSize = "27px";
        private string fontFamily = "黑体"; 
        private string rowOddBgColor = "#000000";
        private string rowEvenBgColor = "#000000";
        private string opeBeforColor = "DodgerBlue"; 
        private string opeInColor = "yellow";
        private string opeAfterColor = "rgb(32, 218, 112)";
        private string opeInColor1 = "Orange";
        private string opeAfterColor1 = "Wheat";
        private string defaultColor = "LightSkyBlue";           //1
        private string PatientNames = "";
        private string OpeTime = "";
        private string DeptId = "";
        #endregion

        private string body = "";
        private string messageStr = "";
        private string systemType = "";
        private string sendType = "";
        private int messId = 0;

        private static void InitConfig()
        {
            #region 加载配置文件
            string baseDirectory = AppDomain.CurrentDomain.BaseDirectory + "RoomConfig.xml";
            xmlOpe = XElement.Load(baseDirectory);
            #endregion
        }

        public string GetHtml(HttpContext context)
        {
            //设置显示信息的开始和结束时间
            InitConfig();
            SetViewTime();
            currentPage = int.Parse(xmlOpe.Element("currentPage").Value);
            PatientNames = xmlOpe.Element("PatientName").Value;
            OpeTime = xmlOpe.Element("OpeTime").Value;
            DeptId = xmlOpe.Element("DeptId").Value;
            DataTable dt = new DataTable();
            dt = PublicMethod.GetPlanNoticeNew(_beginDate, _endDate, OpeTime == "" ? "5" : OpeTime, DeptId);

            dts = dt;
            //总记录数
            dSum = dts.Rows.Count;
            countPage = GetPageCount();
            string tdRows = string.Empty;
            if (HttpContext.Current.Request["WorkerCurrentPage"] != null && HttpContext.Current.Request["WorkerCurrentPage"] != "")
            {
                LoadWaitNurseOpe(Convert.ToInt32(HttpContext.Current.Request["WorkerCurrentPage"]));
            }
            JavaScriptSerializer jss = new JavaScriptSerializer();
            message1 msg = new message1(true, body, messageStr, systemType, sendType, messId, countPage.ToString(), "");


            context.Response.Write(jss.Serialize(msg));//返回给前台页面  
            context.Response.End();
            return body;
        }
         
        #region //计算总页数

        public int GetPageCount()
        {
            if (PageSum == 0)
                PageSum = 9; //每页显示的记录条数为"0",则默认为"20" 
            if (dSum % PageSum == 0)
                return (dSum / PageSum);
            else
                return (dSum / PageSum) + 1;
        }

        #endregion

        /// <summary>
        ///     加载所有手术状态为“术前、术中、”的申请信息
        /// </summary>
        /// <param name="m"></param>
        /// <param name="n"></param>
        private void LoadWaitNurseOpe(int curPage)
        {
            //每次去查询时，要更新一下记录总数，RecondSum,每一页显示的记录数为，PageSum ,
            body = "";
            messageStr = "";
            systemType = "";
            sendType = "";

            curPage -= 1;
            startRecond = curPage * PageSum;
            endRecond = startRecond + PageSum;

            string tdRows = "";
            for (int i = startRecond; i < endRecond; i++)
            {
                string tdRow = "<tr>";
                #region 内容的着色设置
                if (i >= dSum)
                {
                    tdRow += "<td colspan='9'>　</td>";
                }
                else
                {
                    string intApplyID = dts.Rows[i]["ApplyId"].ToString();
                    string OperationRoom = dts.Rows[i]["OperationRoom"].ToString();
                    string vchrOpeStatus = dts.Rows[i]["State"].ToString();
                    string vchrFactBeginTime = "";
                    vchrFactBeginTime = dts.Rows[i]["OperationBeginTime"].ToString();
                    if (vchrFactBeginTime.Trim().ToString() != "")
                    {
                        vchrFactBeginTime = Convert.ToDateTime(vchrFactBeginTime).ToString("HH:mm");
                    }
                    if (vchrOpeStatus == "") continue;
                     
                    string rowStyle = "";
                    if (i % 2 == 0)
                    {
                        rowStyle = "bgcolor='" + rowEvenBgColor + "' align=left valie=middle style='border-bottom:1px solid #629069;height:50px;font-size:" +
                            fontSize + ";font-weight:bold; vertical-align: middle;font-family:\"" + fontFamily + "\"; ";
                    }
                    else
                    {
                        rowStyle = "bgcolor='" + rowOddBgColor + "' align=left valie=middle style='border-bottom:1px solid #629069;height:50px;font-size:" +
                            fontSize + ";font-weight:bold; vertical-align: middle;font-family:\"" + fontFamily + "\"; ";
                    }
                    switch (vchrOpeStatus)
                    {
                        case "等待手术":
                            rowStyle += " color:" + defaultColor + ";'";
                            break;
                        case "手术准备":
                            rowStyle += " color:" + opeBeforColor + ";'";
                            break;
                        case "手术进行中":
                            rowStyle += " color:" + opeInColor + ";'";
                            break;
                        case "术后恢复":
                            rowStyle += " color:" + opeAfterColor + ";'";
                            break;
                        case "手术结束转恢复室":
                            rowStyle += " color:" + opeInColor1 + ";'";
                            break;
                        case "手术结束安返病房":
                            rowStyle += " color:" + opeAfterColor1 + ";'";
                            break;
                        case "转入复苏室":
                            rowStyle += " color:" + opeInColor1 + ";'";
                            break;
                        case "离开复苏室":
                            rowStyle += " color:" + opeAfterColor1 + ";'";
                            break;
                        case "手术结束":
                            rowStyle += " color:" + opeAfterColor1 + ";'";
                            break;
                        default:
                            break;
                    }

                    #endregion
                    tdRow += "<td align='center' " + rowStyle + "></td>";
                        tdRow += "<td align='center' " + rowStyle + ">" + OperationRoom + "</td>";
                    tdRow += "<td align='center' " + rowStyle + ">" + dts.Rows[i]["ApplyDepName"] + "</td>";
                        tdRow += "<td align='center' " + rowStyle + ">" + dts.Rows[i]["PatientName"] + "</td>";
                        string SZOperation = dts.Rows[i]["OperationInfo"].ToString()  ;
                        tdRow += "<td align='center' " + rowStyle + ">" + SZOperation + "</td>";   
                        #region 读取医生的条件
                        string SZOperationDoctor = dts.Rows[i]["OperationDoctor"].ToString();
                        tdRow += "<td align='center' " + rowStyle + ">" + SZOperationDoctor + "</td>";
                        #endregion

                        #region 读取麻醉医生2
                        string SZAnesthesiaDoctor = dts.Rows[i]["AnesthesiaDoctor"].ToString() ;
                        SZAnesthesiaDoctor = SZAnesthesiaDoctor == "" ? "- -" : SZAnesthesiaDoctor;
                        if (SZAnesthesiaDoctor.Contains(","))
                        {
                            SZAnesthesiaDoctor = SZAnesthesiaDoctor.Replace(',', '/');
                        }
                        tdRow += "<td align='center' " + rowStyle + ">" + SZAnesthesiaDoctor + "</td>";
                        #endregion

                        #region 读取器械护士巡回护士
                        string SZTourNurse = dts.Rows[i]["TourNurse"].ToString();
                        string SZInstrumentNurse = dts.Rows[i]["InstrumentNurse"].ToString();
                        if (SZInstrumentNurse == "") SZInstrumentNurse = "- -";
                        if (SZTourNurse == "") SZTourNurse = "- -";
                        tdRow += "<td align='center' " + rowStyle + ">" + SZInstrumentNurse + "/" + SZTourNurse + "</td>";
                        #endregion

                        tdRow += "<td align='center' " + rowStyle + ">" + vchrFactBeginTime + "</td>";
                    tdRow += "<td align='center' " + rowStyle + ">" + vchrOpeStatus + "</td>";

                }
                tdRow += "</tr>";
                tdRows += tdRow;
            }
            //显示备注等
            body += tdRows;
        }


        private void SetViewTime()
        {
            _beginDate = PublicMethod.ServerTime().Date.AddSeconds(1);
            _endDate = PublicMethod.ServerTime().Date.AddHours(23).AddMinutes(59).AddSeconds(59);
        }

        public void GetHtmlTime(HttpContext context)
        {
            DateTime dt = PublicMethod.ServerTime();
            context.Response.Write(dt.ToString());//返回给前台页面  
            context.Response.End();

        }

    }
}