using System;
using System.Data.OleDb;
using System.Data.SqlClient;
using banco1.persistencia;

namespace banco1.domain
{
	/// <summary>
	/// Representa un Movimiento de una cuenta corriente.
	/// </summary>
	public class Movimiento
	{
		protected int mId;
		protected String mConcepto;
		protected DateTime mFecha;
		protected double mImporte;
		protected Producto mProducto;

		public Movimiento(int id) 
		{
			String SQL="Select Importe, Fecha, Concepto from Movimientos where Id=?";
			OleDbCommand cmd = new OleDbCommand(SQL);
			cmd.Parameters.Add("", OleDbType.Integer).Value=id;
			cmd.Connection = Broker.getBD();
			OleDbDataReader r=cmd.ExecuteReader();
			while (r.Read()) 
			{
				mId=id;
				mImporte=r.GetDouble(0);
				mFecha=r.GetDateTime(1);
				mConcepto=r.GetString(2);
			}
			cmd.Connection.Close();
		}

		public Movimiento(String concepto, DateTime fecha, double importe, Producto p)
		{
			mConcepto=(concepto.Length>25 ? concepto.Substring(0, 25) : concepto);
			mFecha=fecha;
			mImporte=importe;
			mProducto=p;
		}

		public void insert() 
		{
			String SQL="Insert into Movimientos " +
				"(Sucursal, CCC, Importe, Fecha, Concepto) values (?, ?, ?, ?, ?)";
			OleDbCommand cmd = Broker.getCommand(SQL);
			cmd.Parameters.Add("", OleDbType.VarChar).Value=mProducto.sucursal;
			cmd.Parameters.Add("", OleDbType.VarChar).Value=mProducto.ccc;
			cmd.Parameters.Add("", OleDbType.Double).Value=this.mImporte;
			cmd.Parameters.Add("", OleDbType.Date).Value=mFecha;
			cmd.Parameters.Add("", OleDbType.VarChar).Value=mConcepto;
			cmd.ExecuteNonQuery();
			cmd.Connection.Close();
		}

		public String concepto 
		{
			get { return mConcepto; }
			set { mConcepto=value; }
		}

		public String getConcepto() 
		{
			return mConcepto;
		}

		public void setConcepto(String concepto) 
		{
			mConcepto=concepto;
		}

		public DateTime fecha 
		{
			get { return mFecha; }
		}

		public double importe 
		{
			get { return mImporte; }
		}
	}
}
