namespace Dominio { namespace Autorizaciones { using System; using Dominio.Planes; #region Clase Autorizacion public abstract class Autorizacion { #region Campos privados private int _codigo; private float _porcentajeCobertura; private DateTime _fechaSolicitud; private DateTime _fechaRealizacion; private DateTime _fechaVencimiento; private bool _aprobada; private string _fundamentosResolucion; private Prestador _prestador; private Prestacion _prestacion; #endregion Campos privados #region Propiedades Públicas public int Codigo { get { return this._codigo; } set { this._codigo = value; } } public float PorcentajeCobertura { get { return this._porcentajeCobertura; } set { this._porcentajeCobertura = value; } } public DateTime FechaSolicitud { get { return this._fechaSolicitud; } set { this._fechaSolicitud = value; } } public DateTime FechaRealizacion { get { return this._fechaRealizacion; } set { this._fechaRealizacion = value; } } public DateTime FechaVencimiento { get { return this._fechaVencimiento; } set { this._fechaVencimiento = value; } } public bool Aprobada { get { return this._aprobada; } set { this._aprobada = value; } } public string FundamentosResolucion { get { return this._fundamentosResolucion; } set { this._fundamentosResolucion = value; } } public Prestador Prestador { get { return this._prestador; } set { this._prestador = value; } } public Prestacion Prestacion { get { return this._prestacion; } set { this._prestacion = value; } } #endregion Propiedades Públicas #region Constructores public Autorizacion (Cobertura c, Prestador p, DateTime solicitud) { /* TODO */ _codigo = 0; _porcentajeCobertura = c.Porcentaje; _fechaSolicitud = solicitud; _aprobada = false; _prestador = p; _prestacion = c.Prestacion; } public Autorizacion (Autorizacion auth) { _codigo = auth._codigo; _porcentajeCobertura = auth._porcentajeCobertura; _fechaSolicitud = auth._fechaSolicitud; } #endregion Constructores #region Métodos Públicos public Autorizacion.Estado getEstado( ) { return getEstado( DateTime.Now ); } public Autorizacion.Estado getEstado( DateTime fecha ) { return 0; } public void setResolucion( string fundamentosResolucion, float porcentajeCobertura ) { } #endregion Métodos Públicos #region Estados de una autorización public enum Estado { Pendiente, Aprobada, Rechazada, Realizada, Vencida } #endregion Estados de una autorización } #endregion Clase Autorizacion #region Clases derivadas de Autorizacion public class AutorizacionManual : Autorizacion { #region Campos Privados private string _observaciones; private DateTime _fechaResolucion; #endregion Campos Privados #region Propiedades Públicas public string Observaciones { get { return this._observaciones; } set { this._observaciones = value; } } public DateTime FechaResolucion { get { return this._fechaResolucion; } set { this._fechaResolucion = value; } } #endregion Propiedades Públicas #region Constructores public AutorizacionManual (Autorizacion auth):base (auth) { } #endregion Constructores } public class AutorizacionAutomatica : Autorizacion { #region Constructores public AutorizacionAutomatica (Autorizacion auth):base (auth) { } #endregion Constructores } #endregion Clases derivadas de Autorizacion } }