4 namespace Autorizaciones
9 #region Clase Autorizacion
11 public abstract class Autorizacion
13 #region Campos privados
15 private int _codigo = int.MinValue;
16 private float _porcentajeCobertura = 0;
17 private DateTime _fechaSolicitud = DateTime.MinValue;
18 private DateTime _fechaRealizacion = DateTime.MinValue;
19 private DateTime _fechaVencimiento = DateTime.MinValue;
20 private bool _aprobada = false;
21 private string _fundamentosResolucion = string.Empty;
22 private Prestador _prestador = null;
23 private Prestacion _prestacion = null;
25 #endregion Campos privados
27 #region Propiedades Públicas
31 get { return this._codigo; }
32 set { this._codigo = value; }
35 public float PorcentajeCobertura
37 get { return this._porcentajeCobertura; }
38 set { this._porcentajeCobertura = value; }
41 public DateTime FechaSolicitud
43 get { return this._fechaSolicitud; }
44 set { this._fechaSolicitud = value; }
47 public DateTime FechaRealizacion
49 get { return this._fechaRealizacion; }
50 set { this._fechaRealizacion = value; }
53 public DateTime FechaVencimiento
55 get { return this._fechaVencimiento; }
56 set { this._fechaVencimiento = value; }
61 get { return this._aprobada; }
62 set { this._aprobada = value; }
65 public string FundamentosResolucion
67 get { return this._fundamentosResolucion; }
68 set { this._fundamentosResolucion = value; }
71 public Prestador Prestador
73 get { return this._prestador; }
74 set { this._prestador = value; }
77 public Prestacion Prestacion
79 get { return this._prestacion; }
80 set { this._prestacion = value; }
83 #endregion Propiedades Públicas
87 public Autorizacion( int codigo, DateTime fechaSolicitud )
89 #warning Ver cómo manejar los códigos con DB4O
91 this.FechaSolicitud = fechaSolicitud;
94 #endregion Constructores
96 #region Métodos Públicos
98 public abstract Autorizacion.Estado getEstado( DateTime fecha );
100 public Autorizacion.Estado getEstado( )
102 return this.getEstado( DateTime.Now );
105 public void setResolucion( string fundamentosResolucion, float porcentajeCobertura )
109 #endregion Métodos Públicos
111 #region Estados de una autorización
120 Invalida, //Corresponde a inconsistencia de datos en el sistema
121 Inexistente //La autorizacion todavía no existía en la fecha que se está consultando
124 #endregion Estados de una autorización
127 #endregion Clase Autorizacion
129 #region Clases derivadas de Autorizacion
131 public class AutorizacionManual : Autorizacion
133 #region Campos Privados
135 private string _observaciones;
136 private DateTime _fechaResolucion;
138 #endregion Campos Privados
140 #region Propiedades Públicas
142 public string Observaciones
144 get { return this._observaciones; }
145 set { this._observaciones = value; }
148 public DateTime FechaResolucion
150 get { return this._fechaResolucion; }
151 set { this._fechaResolucion = value; }
154 #endregion Propiedades Públicas
156 #region Constructores
158 public AutorizacionManual( int codigo, DateTime fechaSolicitud )
159 : base( codigo, fechaSolicitud )
163 #endregion Constructores
165 #region Métodos Públicos
167 public override Autorizacion.Estado getEstado( DateTime fecha )
169 Autorizacion.Estado estado = Autorizacion.Estado.Invalida; //inicialización
171 //Evalúo Fecha SOLICITUD
172 if ( this.FechaSolicitud != DateTime.MinValue )
174 if ( this.FechaSolicitud <= fecha )
176 //Evalúo Fecha RESOLUCIÓN
177 if ( (this.FechaResolucion != DateTime.MinValue) && (this.FechaResolucion <= fecha) )
179 //Evalúo si está APROBADA
182 //Evalúo Fecha REALIZACIÓN
183 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
185 estado = Autorizacion.Estado.Realizada;
189 //Aprobada pero NO realizada
190 //Evalúo Fecha VENCIMIENTO
191 if ( (this.FechaVencimiento != DateTime.MinValue) && (this.FechaVencimiento <= fecha) )
193 estado = Autorizacion.Estado.Vencida;
197 estado = Autorizacion.Estado.Aprobada;
203 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
205 estado = Autorizacion.Estado.Invalida; //Desaprobada y Realizada!
208 estado = Autorizacion.Estado.Rechazada;
213 if ( (this.FechaRealizacion == DateTime.MinValue) || (this.FechaRealizacion > fecha) )
214 estado = Autorizacion.Estado.Pendiente; //no está resuelta, ni realizada en "fecha"
216 estado = Autorizacion.Estado.Invalida;
219 //FechaSolicitud > fecha
220 estado = Autorizacion.Estado.Inexistente;
223 //FechaSolicitud no seteada
224 estado = Autorizacion.Estado.Invalida;
229 #endregion Métodos Públicos
232 public class AutorizacionAutomatica : Autorizacion
234 #region Constructores
236 public AutorizacionAutomatica( int codigo, DateTime fechaSolicitud )
237 : base( codigo, fechaSolicitud )
241 #endregion Constructores
243 #region Métodos Públicos
245 public override Autorizacion.Estado getEstado( DateTime fecha )
247 Autorizacion.Estado estado = Autorizacion.Estado.Invalida; //inicialización
249 //Evalúo Fecha SOLICITUD
250 if ( this.FechaSolicitud != DateTime.MinValue )
252 if ( this.FechaSolicitud <= fecha )
254 //Evalúo si está APROBADA
257 //Evalúo Fecha REALIZACIÓN
258 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
260 estado = Autorizacion.Estado.Realizada;
264 //Aprobada pero NO realizada
265 //Evalúo Fecha VENCIMIENTO
266 if ( (this.FechaVencimiento != DateTime.MinValue) && (this.FechaVencimiento <= fecha) )
268 estado = Autorizacion.Estado.Vencida;
272 estado = Autorizacion.Estado.Aprobada;
278 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
280 estado = Autorizacion.Estado.Invalida; //Desaprobada y Realizada!
283 estado = Autorizacion.Estado.Rechazada;
287 //FechaSolicitud > fecha
288 estado = Autorizacion.Estado.Inexistente;
291 //FechaSolicitud no seteada
292 estado = Autorizacion.Estado.Invalida;
297 #endregion Métodos Públicos
300 #endregion Clases derivadas de Autorizacion