using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
namespace DrawGraph
{
    public class FactOutputLiquids : EventObj
    {
        private int _id;
        private int _patientid;
        private int _outputliquidstypeid;
        private int _outputliquidsid;
        private int _outputliquidsName;
        private DateTime _begintime;
        private DateTime _endtime;
        private decimal _dosage;
        private string _dosageunit;
        private int _iscontinue;
        private string _remark;
        private string _operatorno;
        private string _operatorname;
        private DateTime _operatedate;
        public string OutputLiquidsName;
        /// 
        /// 
        /// 
        public int Id
        {
            set { _id = value; }
            get { return _id; }
        }
        /// 
        /// 
        /// 
        public int PatientId
        {
            set { _patientid = value; }
            get { return _patientid; }
        }
        public int OutputLiquidsTypeId
        {
            set { _outputliquidstypeid = value; }
            get { return _outputliquidstypeid; }
        }
        /// 
        /// 
        /// 
        public int OutputLiquidsId
        {
            set { _outputliquidsid = value; }
            get { return _outputliquidsid; }
        }
        /// 
        /// 
        /// 
        public DateTime BeginTime
        {
            set { _begintime = value; }
            get { return _begintime; }
        }
        /// 
        /// 
        /// 
        public DateTime EndTime
        {
            set { _endtime = value; }
            get { return _endtime; }
        }
        /// 
        /// 
        /// 
        public decimal Dosage
        {
            set { _dosage = value; }
            get { return _dosage; }
        }
        /// 
        /// 
        /// 
        public string DosageUnit
        {
            set { _dosageunit = value; }
            get { return _dosageunit; }
        }
        /// 
        /// 
        /// 
        public int IsContinue
        {
            set { _iscontinue = value; }
            get { return _iscontinue; }
        }
        /// 
        /// 
        /// 
        public string Remark
        {
            set { _remark = value; }
            get { return _remark; }
        }
        /// 
        /// 
        /// 
        public string OperatorNo
        {
            set { _operatorno = value; }
            get { return _operatorno; }
        }
        /// 
        /// 
        /// 
        public string OperatorName
        {
            set { _operatorname = value; }
            get { return _operatorname; }
        }
        /// 
        /// 
        /// 
        public DateTime OperateDate
        {
            set { _operatedate = value; }
            get { return _operatedate; }
        }
        public double nowY { get; set; }
        public string EqualDose { get; set; }
        public bool Equal(object drug1)
        {
            try
            {
                if ((this.DosageUnit == ((FactOutputLiquids)drug1).DosageUnit) && (this.OutputLiquidsName == ((FactOutputLiquids)drug1).OutputLiquidsName))
                {
                    return true;
                }
                return false;
            }
            catch (Exception)
            {
                return false;
            }
        }
        public override void clearAddObj(ZedGraphControl zgc)
        {
            //if (zgcAnas == null || zgcAnas != zgc)
            zgcAnas = zgc;
            clearAddObjPic(zgc);
            clearDNDTDD(zgc);
            delAddObj(this.OutputLiquidsName + this.OutputLiquidsId);
        }
        private void clearAddObjPic(ZedGraphControl zgc)
        {
            //if (zgcAnas == null || zgcAnas != zgc)
            zgcAnas = zgc;
            delAddObj(TextPrefix.DT + this.OutputLiquidsName + this.Id.ToString());
            delAddObj(TextPrefix.DD + this.OutputLiquidsName + this.Id.ToString());
            delAddObj(TextPrefix.DD + this.OutputLiquidsName + this.Id.ToString() + "spicle");
            delAddObj(TextPrefix.DU + this.OutputLiquidsName + this.Id.ToString());
            delAddArrows(TextPrefix.AR + this.OutputLiquidsName + this.Id.ToString());
            delLineObj("A" + TextPrefix.AR + this.OutputLiquidsName + this.Id.ToString());
            delLineObj("B" + TextPrefix.AR + this.OutputLiquidsName + this.Id.ToString());
        }
        public override void clearDNAndDT(ZedGraphControl zgc)
        {
            //if (zgcAnas == null)
            zgcAnas = zgc;
            delAddObj(TextPrefix.DN + this.OutputLiquidsName + this.Id.ToString());
            delAddObj(TextPrefix.DT + this.OutputLiquidsName + this.Id.ToString());
            delAddObj(TextPrefix.DU + this.OutputLiquidsName + this.Id.ToString());
            //delAddObj(TextPrefix.DD + this.OutputLiquidsName + this.Id.ToString());
            delAddObj(this.OutputLiquidsName + this.OutputLiquidsId);
        }
        /// 
        /// 画一条加药记录
        /// 
        /// 高度
        /// 总量
        public override void drawText(double x, double y)
        {
            if (zgcAnas == null) return;
            clearAddObj(zgcAnas);
            //画添加药品线,底部加加药次数和备注  
            this.nowY = y;
            paintAdd(y);
            //写加药的左边与右信息
            drawAddText(x, y);
        }
        /// 
        /// 画添加药品线,底部加加药次数和备注信息   
        /// 
        /// 
        /// 
        public void paintAdd(double y)
        {
            string tagName = this.OutputLiquidsName + this.Id.ToString();
            string DoseStr = "";
            if (Dosage != 0)
                DoseStr = (((double)this.Dosage).ToString());
            string RemarkStr = this.Remark;//   
            string s = "";
            if ((EqualDose == null || EqualDose == ""))
            {
                if (Dosage != 0)
                    EqualDose = ((double)Dosage).ToString();
            }
            DateTime dt = EndTime;
            DateTime drugDt = this.BeginTime;
            bool isContinued = false;
            if (IsContinue == 1 && BeginTime == EndTime)
            {
                dt = End;
                isContinued = true;
            }
            if (EndTime != null && BeginTime != null && BeginTime != EndTime)
            {
                TimeSpan tsp = EndTime - BeginTime;
                if (tsp.TotalMinutes >= 10)
                {
                    drugDt = BeginTime.AddMinutes(tsp.TotalMinutes / 2 - 3);
                }
            }
            if (((TimeSpan)(pageEnd - this.BeginTime)).TotalMinutes <= 2)
            {
                if (EqualDose == null)
                {
                    if (s.Trim() != "")
                        drawDoseObj(y, tagName, this.BeginTime, dt, drugDt, s + " " + RemarkStr, 5f, isContinued);
                    else
                        drawDoseObj(y, tagName, this.BeginTime, dt, drugDt, DoseStr + " " + RemarkStr, 5f, isContinued);
                }
                else
                {
                    if (s.Trim() != "")
                        drawDoseObj(y, tagName, this.BeginTime, dt, drugDt, s + "(" + EqualDose + ")" + RemarkStr, 5f, isContinued);
                    else
                        drawDoseObj(y, tagName, this.BeginTime, dt, drugDt, EqualDose + " " + RemarkStr, 5f, isContinued);
                }
            }
            else
            {
                if (EqualDose == null)
                {
                    if (s.Trim() != "")
                        drawDoseObj(y, tagName, this.BeginTime, dt, drugDt, s + " " + RemarkStr, 6f, isContinued);
                    else
                        drawDoseObj(y, tagName, this.BeginTime, dt, drugDt, DoseStr + " " + RemarkStr, 6f, isContinued);
                }
                else
                {
                    if (s.Trim() != "")
                        drawDoseObj(y, tagName, this.BeginTime, dt, drugDt, s + "(" + EqualDose + ")" + RemarkStr, 5.5f, isContinued);
                    else
                        drawDoseObj(y, tagName, this.BeginTime, dt, drugDt, EqualDose + " " + RemarkStr, 5.5f, isContinued);
                }
            }
        }
        /// 
        /// 写加药的左边与右信息
        /// 
        /// 高度
        /// 总量
        public void drawAddText(double x, double y)
        {
            //左边写药名
            TextObj text = (TextObj)zgcAnas.MasterPane.GraphObjList[TextPrefix.DN + this.OutputLiquidsName + this.Id.ToString()];
            if (text == null)
            {
                double x1 = x;// 0.05f;
                string DrName = this.OutputLiquidsName.Trim();
                //if (this.Remark != null && this.Remark != "") DrName += "(" + this.Remark + ")";  
                if (this.DosageUnit != null && this.DosageUnit != "") DrName += "(" + this.DosageUnit + ")";
                ZUtil.DrawText(DrName, x1, y, zgcAnas, TextPrefix.DN + this.OutputLiquidsName + this.Id.ToString(), Color.Black, 5.75f);
            }
        }
        public void clearDNDTDD(ZedGraphControl zgc)
        {
            //if (zgcAnas == null || zgcAnas != zgc)
            zgcAnas = zgc;
            delAddObj(TextPrefix.DN + this.OutputLiquidsName + this.Id.ToString());
            delAddObj(TextPrefix.DT + this.OutputLiquidsName + this.Id.ToString());
            delAddObj(TextPrefix.DU + this.OutputLiquidsName + this.Id.ToString());
            delAddObj(TextPrefix.DD + this.OutputLiquidsName + this.Id.ToString());
            delAddObj(this.OutputLiquidsName + this.OutputLiquidsId);
        }
    }
}