]> git.llucax.com Git - z.facultad/75.10/miklolife.git/blob - demo/src/Dominio/Autorizacion.cs
Para guille :)
[z.facultad/75.10/miklolife.git] / demo / src / Dominio / Autorizacion.cs
1
2 namespace Dominio 
3 {
4         namespace Autorizaciones 
5         {
6                 using System;
7                 using Dominio.Planes;
8                 using Dominio.Afiliados;
9
10                 #region Clase Autorizacion
11
12                 public abstract class Autorizacion
13                 {
14                         #region Campos privados
15                         
16                         private int _codigo = int.MinValue;
17                         private float _porcentajeCobertura = 0;
18                         private DateTime _fechaSolicitud = DateTime.MinValue;
19                         private DateTime _fechaRealizacion = DateTime.MinValue;
20                         private DateTime _fechaVencimiento = DateTime.MinValue;
21                         private bool _aprobada = false;
22                         private string _fundamentosResolucion = string.Empty;
23                         private Prestador _prestador = null;
24                         private Prestacion _prestacion = null;
25                         private Afiliado _afiliado = null;
26                         
27                         #endregion Campos privados
28
29                         #region Propiedades Públicas
30         
31                         public int Codigo
32                         {
33                                 get { return this._codigo; }
34                                 set { this._codigo = value; }
35                         }
36                         
37                         public Afiliado Afiliado
38                         {
39                                 get { return this._afiliado; }
40                                 set { this._afiliado = value; }
41                         }
42
43                         public float PorcentajeCobertura
44                         {
45                                 get { return this._porcentajeCobertura; }
46                                 set { this._porcentajeCobertura = value; }
47                         }
48
49                         public DateTime FechaSolicitud
50                         {
51                                 get { return this._fechaSolicitud; }
52                                 set { this._fechaSolicitud = value; }
53                         }
54
55                         public DateTime FechaRealizacion
56                         {
57                                 get { return this._fechaRealizacion; }
58                                 set { this._fechaRealizacion = value; }
59                         }
60
61                         public DateTime FechaVencimiento
62                         {
63                                 get { return this._fechaVencimiento; }
64                                 set { this._fechaVencimiento = value; }
65                         }
66
67                         public bool Aprobada
68                         {
69                                 get { return this._aprobada; }
70                                 set { this._aprobada = value; }
71                         }
72
73                         public string FundamentosResolucion
74                         {
75                                 get { return this._fundamentosResolucion; }
76                                 set { this._fundamentosResolucion = value; }
77                         }
78
79                         public Prestador Prestador
80                         {
81                                 get { return this._prestador; }
82                                 set { this._prestador = value; }
83                         }
84
85                         public Prestacion Prestacion
86                         {
87                                 get { return this._prestacion; }
88                                 set { this._prestacion = value; }
89                         }       
90
91                         #endregion Propiedades Públicas
92
93                         #region Constructores
94
95                         public Autorizacion( DateTime fechaSolicitud )
96                         {
97                                 this.FechaSolicitud = fechaSolicitud;
98                         }
99
100                         //GR. Lo agrego por comodidad para hacer consultas a db4o
101                         public Autorizacion( int codigo )
102                         {
103                                 this.Codigo = codigo;
104                         }
105
106                         //Se necesita alguno vacio por tema de consultas en db4.
107                         public Autorizacion()\r
108                         {
109                         }
110
111                         #endregion Constructores
112
113                         #region Métodos Públicos
114
115                         public abstract Autorizacion.Estado getEstado( DateTime fecha );
116
117                         public Autorizacion.Estado getEstado( )
118                         {
119                                 return this.getEstado( DateTime.Now );
120                         }
121
122                         public void setResolucion( string fundamentosResolucion, float porcentajeCobertura )
123                         {
124                                 this.FundamentosResolucion = fundamentosResolucion;
125                                 this.PorcentajeCobertura = porcentajeCobertura;
126                         }
127                         
128                         public override string ToString()\r
129                         {\r
130                                 string strAut = string.Empty;\r
131 \r
132                                 strAut += "Tipo: " + this.GetType().Name + "\n";\r
133                                 \r
134                                 System.Reflection.PropertyInfo[] properties = this.GetType().GetProperties();\r
135                                 foreach ( System.Reflection.PropertyInfo property in properties )\r
136                                 {\r
137                                         strAut += property.Name + " = " + property.GetValue( this, null ) + "\n";\r
138                                 }\r
139                         \r
140                                 return strAut;\r
141                         }\r
142
143
144                         #endregion Métodos Públicos
145
146                         #region Estados de una autorización
147                         
148                         public enum Estado
149                         {
150                                 Pendiente,
151                                 Aprobada,
152                                 Rechazada,
153                                 Realizada,
154                                 Vencida,
155                                 Invalida,       //Corresponde a inconsistencia de datos en el sistema
156                                 Inexistente //La autorizacion todavía no existía en la fecha que se está consultando
157                         }
158
159                         #endregion Estados de una autorización
160                 }
161
162                 #endregion Clase Autorizacion
163
164                 #region Clases derivadas de Autorizacion
165
166                 public class AutorizacionManual : Autorizacion
167                 {
168                         #region Campos Privados
169                         
170                         private string _observaciones;
171                         private DateTime _fechaResolucion = DateTime.MinValue;
172                         private int _nroDeLegajo = int.MinValue;                
173         
174                         #endregion Campos Privados
175
176                         #region Propiedades Públicas
177                         
178                         public string Observaciones
179                         {
180                                 get { return this._observaciones; }
181                                 set { this._observaciones = value; }
182                         }
183
184                         public DateTime FechaResolucion
185                         {
186                                 get { return this._fechaResolucion; }
187                                 set { this._fechaResolucion = value; }
188                         }
189                         
190                         public int NroDeLegajo
191                         {
192                                 get { return this._nroDeLegajo ;  }
193                                 set { this._nroDeLegajo = value ; }
194
195                         }
196                         #endregion Propiedades Públicas
197
198                         #region Constructores
199
200                         public AutorizacionManual( DateTime fechaSolicitud )
201                                 : base( fechaSolicitud )
202                         {
203                         }
204
205                         public AutorizacionManual()\r
206                         {
207                         }
208                         
209                         //para consultas a db4o
210                         public AutorizacionManual( int codigo )
211                         {
212                                 this.Codigo = codigo;
213                         }
214
215                         #endregion Constructores
216
217                         #region Métodos Públicos
218                         
219                         public override Autorizacion.Estado getEstado( DateTime fecha )
220                         {
221                                 Autorizacion.Estado estado = Autorizacion.Estado.Invalida; //inicialización
222
223                                 //Evalúo Fecha SOLICITUD
224                                 if ( this.FechaSolicitud != DateTime.MinValue )
225                                 {
226                                         if ( this.FechaSolicitud <= fecha )
227                                         {
228                                                 //Evalúo Fecha RESOLUCIÓN
229                                                 if ( (this.FechaResolucion != DateTime.MinValue) && (this.FechaResolucion <= fecha) )
230                                                 {
231                                                         //Evalúo si está APROBADA
232                                                         if ( this.Aprobada )
233                                                         {
234                                                                 //Evalúo Fecha REALIZACIÓN
235                                                                 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
236                                                                 {
237                                                                         estado = Autorizacion.Estado.Realizada;
238                                                                 }
239                                                                 else
240                                                                 {
241                                                                         //Aprobada pero NO realizada
242                                                                         //Evalúo Fecha VENCIMIENTO
243                                                                         if ( (this.FechaVencimiento != DateTime.MinValue) && (this.FechaVencimiento <= fecha) )
244                                                                         {
245                                                                                 estado = Autorizacion.Estado.Vencida;
246                                                                         }
247                                                                         else
248                                                                                 //Sin vencer
249                                                                                 estado = Autorizacion.Estado.Aprobada;
250                                                                 }
251                                                         }
252                                                         else
253                                                                 //DESAPROBADA
254                                                         {
255                                                                 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
256                                                                 {
257                                                                         estado = Autorizacion.Estado.Invalida; //Desaprobada y Realizada!
258                                                                 }
259                                                                 else
260                                                                         estado = Autorizacion.Estado.Rechazada;
261                                                         }
262                                                 }
263                                                 else
264                                                         //No está resuelta
265                                                         if ( (this.FechaRealizacion == DateTime.MinValue) || (this.FechaRealizacion > fecha) )
266                                                                 estado = Autorizacion.Estado.Pendiente; //no está resuelta, ni realizada en "fecha"
267                                                         else 
268                                                                 estado = Autorizacion.Estado.Invalida;
269                                         }
270                                         else
271                                                 //FechaSolicitud > fecha
272                                                 estado = Autorizacion.Estado.Inexistente;
273                                 }
274                                 else
275                                         //FechaSolicitud no seteada
276                                         estado = Autorizacion.Estado.Invalida;
277
278                                 return estado;
279                         }
280
281                         #endregion Métodos Públicos
282                 }
283
284                 public class AutorizacionAutomatica : Autorizacion
285                 {
286                         #region Constructores
287
288                         public AutorizacionAutomatica( DateTime fechaSolicitud )
289                                 : base( fechaSolicitud )
290                         {
291                         }
292                         
293                         public AutorizacionAutomatica()         
294                         {
295                         }
296
297                         //para consultas a db4o
298                         public AutorizacionAutomatica( int codigo )
299                         {
300                                 this.Codigo = codigo;
301                         }
302
303                         #endregion Constructores
304
305                         #region Métodos Públicos
306
307                         public override Autorizacion.Estado getEstado( DateTime fecha )
308                         {
309                                 Autorizacion.Estado estado = Autorizacion.Estado.Invalida; //inicialización
310
311                                 //Evalúo Fecha SOLICITUD
312                                 if ( this.FechaSolicitud != DateTime.MinValue )
313                                 {
314                                         if ( this.FechaSolicitud <= fecha )
315                                         {
316                                                 //Evalúo si está APROBADA
317                                                 if ( this.Aprobada )
318                                                 {
319                                                         //Evalúo Fecha REALIZACIÓN
320                                                         if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
321                                                         {
322                                                                 estado = Autorizacion.Estado.Realizada;
323                                                         }
324                                                         else
325                                                         {
326                                                                 //Aprobada pero NO realizada
327                                                                 //Evalúo Fecha VENCIMIENTO
328                                                                 if ( (this.FechaVencimiento != DateTime.MinValue) && (this.FechaVencimiento <= fecha) )
329                                                                 {
330                                                                         estado = Autorizacion.Estado.Vencida;
331                                                                 }
332                                                                 else
333                                                                         //Sin vencer
334                                                                         estado = Autorizacion.Estado.Aprobada;
335                                                         }
336                                                 }
337                                                 else
338                                                         //DESAPROBADA
339                                                 {
340                                                         if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
341                                                         {
342                                                                 estado = Autorizacion.Estado.Invalida; //Desaprobada y Realizada!
343                                                         }
344                                                         else
345                                                                 estado = Autorizacion.Estado.Rechazada;
346                                                 }
347                                         }
348                                         else
349                                                 //FechaSolicitud > fecha
350                                                 estado = Autorizacion.Estado.Inexistente;
351                                 }
352                                 else
353                                         //FechaSolicitud no seteada
354                                         estado = Autorizacion.Estado.Invalida;
355
356                                 return estado;
357                         }
358
359                         #endregion Métodos Públicos
360                 }
361
362                 #endregion Clases derivadas de Autorizacion
363         }
364 }
365