using System;
using AIMSDAL;
using AIMSModel;
using AIMSObjectQuery;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using HelperDB;
using AIMSExtension;
using System.Data.SqlClient;
namespace AIMSBLL
{
    public partial class BOperationRecord
    {
        /// 
        /// 得到手术的最大时间点
        /// 
        /// 
        /// 
        public static DateTime lastMaxOperationDate(int PatientId)
        {
            string sqlStr = "select top 1 * from (SELECT s.PatientId , s.EventEndTime etime FROM FactEvents s WHERE s.PatientId = " + PatientId + " union all SELECT s.PatientId , s.DrugEndTime FROM[dbo].[FactDrug]  s WHERE s.PatientId = " + PatientId + " ) a order by a.etime desc";
            DataTable dt = DBHelper.GetDataTable(sqlStr);
            return DateTime.Parse(dt.Rows[0][1].ToString());
        }
        public static DataTable getPhysioDataByTimeName(string IP, string name, DateTime starttime, DateTime endtime)
        {
            DataTable dt = new DataTable();
            string sqlStr = " exec [usp_GetPhysioDataByName] '" + IP + "','" + name + "','" + starttime + "','" + endtime + "'";//
            dt = DATADBHelper.GetDataTable(sqlStr);
            return dt;
        }
        public static DataTable getPhysioDataByIp(string IP, int operationId, DateTime starttime, DateTime endtime, int collectInterval)
        {
            DataTable dt = new DataTable();
            string sqlStr = " exec [usp_GetPhysioDataByIp] '" + IP + "','" + starttime + "','" + endtime + "'," + collectInterval;
            dt = DATADBHelper.GetDataTable(sqlStr);
            foreach (DataRow item in dt.Rows)
            {
                if (item[0].ToString() == "7")
                {
                    foreach (DataRow item1 in dt.Rows)
                    {
                        if (item1[0].ToString() == "5" && item1[1].ToString() == item[1].ToString())
                        {
                            item1[2] = "0";
                        }
                    }
                }
                if (item[0].ToString() == "8")
                {
                    foreach (DataRow item1 in dt.Rows)
                    {
                        if (item1[0].ToString() == "6" && item1[1].ToString() == item[1].ToString())
                        {
                            item1[2] = "0";
                        }
                    }
                }
            } 
            return dt;
        }
        public static int Update(string oql, ParameterList parameters)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    //解析过滤部份Sql语句
                    string updateString = oql;// SyntaxAnalyzer.ParseSql(oql, new OperationRecordMap());
                    cmd.CommandText = "update OperationRecord set " + updateString;
                    cmd.Parameters.Clear();
                    //添加参数
                    if (parameters != null)
                    {
                        foreach (string key in parameters.Keys)
                        {
                            cmd.Parameters.Add(new SqlParameter(key, parameters[key]));
                        }
                    }
                    return cmd.ExecuteNonQuery();
                }
            }
        }
    }
}