using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using VEPROMS.CSLA.Library;

namespace VEPROMS
{
	public partial class dlgCheckedOutProcedure : Form
	{
		public dlgCheckedOutProcedure(ProcedureInfo pi, SectionInfo si, UserInfo ui)
		{
			InitializeComponent();
			_MyProcedureInfo = pi;
			_MySectionInfo = si;
			if (_MyProcedureInfo != null)
				_MyOwnerInfo = OwnerInfo.GetByItemID(pi.ItemID, CheckOutType.Procedure);
			else
				_MyOwnerInfo = OwnerInfo.GetByItemID(si.MyContent.MyEntry.DocID, CheckOutType.Document);
			_MySessionInfo = SessionInfo.Get(_MyOwnerInfo.SessionID);
			_MyUserInfo = ui;
		}
		private ProcedureInfo _MyProcedureInfo;
		public ProcedureInfo MyProcedureInfo
		{
			get { return _MyProcedureInfo; }
		}
		private SectionInfo _MySectionInfo;
		public SectionInfo MySectionInfo
		{
			get { return _MySectionInfo; }
		}
		private OwnerInfo _MyOwnerInfo;
		public OwnerInfo MyOwnerInfo
		{
			get { return _MyOwnerInfo; }
		}
		private SessionInfo _MySessionInfo;
		public SessionInfo MySessionInfo
		{
			get { return _MySessionInfo; }
		}
		private UserInfo _MyUserInfo;
		public UserInfo MyUserInfo
		{
			get { return _MyUserInfo; }
		}
		StringBuilder sb = new StringBuilder();

		private void dlgCheckedOutProcedure_Load(object sender, EventArgs e)
		{
			if (MyProcedureInfo != null)
				sb.AppendLine(string.Format("The procedure {0} - {1}", MyProcedureInfo.DisplayNumber, MyProcedureInfo.DisplayText));
			else
				sb.AppendLine(string.Format("The document {0}", MySectionInfo.DisplayText));
			sb.AppendLine();
			sb.AppendLine(string.Format("is currently checked out by {0} starting on {1}", MySessionInfo.UserID, MyOwnerInfo.DTSStart.ToString("MM/dd/yyyy @ HH:mm:ss")));
			sb.AppendLine();
			sb.AppendLine(string.Format("in a VEPROMS session on computer {0} that was started on {1}", MySessionInfo.MachineName, MySessionInfo.DTSDtart.ToString("MM/dd/yyyy @ HH:mm:ss")));
			lblInfo.Text = sb.ToString();
			if(MyProcedureInfo != null)
				btnForce.Visible = UserInfo.CanEdit(MyUserInfo,MyProcedureInfo.MyDocVersion) && MyOwnerInfo.OwnerItemID == MyProcedureInfo.ItemID;
			else
				btnForce.Visible = MyUserInfo.IsAdministrator() || MyUserInfo.IsSetAdministrator(MySectionInfo.MyProcedure.MyDocVersion);
		}

		private void btnForce_Click(object sender, EventArgs e)
		{
			MySessionInfo.CheckInItem(MyOwnerInfo.OwnerID);
			sb.AppendLine();
			sb.AppendLine("Forced Check In has been completed");
			lblInfo.Text = sb.ToString();
			btnForce.Enabled = false;
		}

	}
}