]> git.llucax.com Git - z.facultad/75.10/miklolife.git/blob - demo/src/Dominio/Autorizacion.cs
- Agrego constructores e identacion
[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                                 #warning Ver cómo manejar los códigos con DB4O
98                                 this.FechaSolicitud = fechaSolicitud;
99                         }
100                         
101                         //Se necesita alguno vacio por tema de consultas en db4.
102                         public Autorizacion()\r
103                         {
104                         }
105
106                         #endregion Constructores
107
108                         #region Métodos Públicos
109
110                         public abstract Autorizacion.Estado getEstado( DateTime fecha );
111
112                         public Autorizacion.Estado getEstado( )
113                         {
114                                 return this.getEstado( DateTime.Now );
115                         }
116
117                         public void setResolucion( string fundamentosResolucion, float porcentajeCobertura )
118                         {
119                                 this.FundamentosResolucion = fundamentosResolucion;
120                                 this.PorcentajeCobertura = porcentajeCobertura;
121                         }
122                         
123                         public override string ToString()\r
124                         {\r
125                                 string strAut = string.Empty;\r
126 \r
127                                 strAut += "Tipo: " + this.GetType().Name + "\n";\r
128                                 \r
129                                 System.Reflection.PropertyInfo[] properties = this.GetType().GetProperties();\r
130                                 foreach ( System.Reflection.PropertyInfo property in properties )\r
131                                 {\r
132                                         strAut += property.Name + " = " + property.GetValue( this, null ) + "\n";\r
133                                 }\r
134                         \r
135                                 return strAut;\r
136                         }\r
137
138
139                         #endregion Métodos Públicos
140
141                         #region Estados de una autorización
142                         
143                         public enum Estado
144                         {
145                                 Pendiente,
146                                 Aprobada,
147                                 Rechazada,
148                                 Realizada,
149                                 Vencida,
150                                 Invalida,       //Corresponde a inconsistencia de datos en el sistema
151                                 Inexistente //La autorizacion todavía no existía en la fecha que se está consultando
152                         }
153
154                         #endregion Estados de una autorización
155                 }
156
157                 #endregion Clase Autorizacion
158
159                 #region Clases derivadas de Autorizacion
160
161                 public class AutorizacionManual : Autorizacion
162                 {
163                         #region Campos Privados
164                         
165                         private string _observaciones;
166                         private DateTime _fechaResolucion = DateTime.MinValue;
167                         private int _nroDeLegajo = int.MinValue;                
168         
169                         #endregion Campos Privados
170
171                         #region Propiedades Públicas
172                         
173                         public string Observaciones
174                         {
175                                 get { return this._observaciones; }
176                                 set { this._observaciones = value; }
177                         }
178
179                         public DateTime FechaResolucion
180                         {
181                                 get { return this._fechaResolucion; }
182                                 set { this._fechaResolucion = value; }
183                         }
184                         
185                         public int NroDeLegajo
186                         {
187                                 get { return this._nroDeLegajo ;  }
188                                 set { this._nroDeLegajo = value ; }
189
190                         }
191                         #endregion Propiedades Públicas
192
193                         #region Constructores
194
195                         public AutorizacionManual( DateTime fechaSolicitud )
196                                 : base( fechaSolicitud )
197                         {
198                         }
199                         public AutorizacionManual()\r
200                         {
201                         }
202
203                         #endregion Constructores
204
205                         #region Métodos Públicos
206                         
207                         public override Autorizacion.Estado getEstado( DateTime fecha )
208                         {
209                                 Autorizacion.Estado estado = Autorizacion.Estado.Invalida; //inicialización
210
211                                 //Evalúo Fecha SOLICITUD
212                                 if ( this.FechaSolicitud != DateTime.MinValue )
213                                 {
214                                         if ( this.FechaSolicitud <= fecha )
215                                         {
216                                                 //Evalúo Fecha RESOLUCIÓN
217                                                 if ( (this.FechaResolucion != DateTime.MinValue) && (this.FechaResolucion <= fecha) )
218                                                 {
219                                                         //Evalúo si está APROBADA
220                                                         if ( this.Aprobada )
221                                                         {
222                                                                 //Evalúo Fecha REALIZACIÓN
223                                                                 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
224                                                                 {
225                                                                         estado = Autorizacion.Estado.Realizada;
226                                                                 }
227                                                                 else
228                                                                 {
229                                                                         //Aprobada pero NO realizada
230                                                                         //Evalúo Fecha VENCIMIENTO
231                                                                         if ( (this.FechaVencimiento != DateTime.MinValue) && (this.FechaVencimiento <= fecha) )
232                                                                         {
233                                                                                 estado = Autorizacion.Estado.Vencida;
234                                                                         }
235                                                                         else
236                                                                                 //Sin vencer
237                                                                                 estado = Autorizacion.Estado.Aprobada;
238                                                                 }
239                                                         }
240                                                         else
241                                                                 //DESAPROBADA
242                                                         {
243                                                                 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
244                                                                 {
245                                                                         estado = Autorizacion.Estado.Invalida; //Desaprobada y Realizada!
246                                                                 }
247                                                                 else
248                                                                         estado = Autorizacion.Estado.Rechazada;
249                                                         }
250                                                 }
251                                                 else
252                                                         //No está resuelta
253                                                         if ( (this.FechaRealizacion == DateTime.MinValue) || (this.FechaRealizacion > fecha) )
254                                                                 estado = Autorizacion.Estado.Pendiente; //no está resuelta, ni realizada en "fecha"
255                                                         else 
256                                                                 estado = Autorizacion.Estado.Invalida;
257                                         }
258                                         else
259                                                 //FechaSolicitud > fecha
260                                                 estado = Autorizacion.Estado.Inexistente;
261                                 }
262                                 else
263                                         //FechaSolicitud no seteada
264                                         estado = Autorizacion.Estado.Invalida;
265
266                                 return estado;
267                         }
268
269                         #endregion Métodos Públicos
270                 }
271
272                 public class AutorizacionAutomatica : Autorizacion
273                 {
274                         #region Constructores
275
276                         public AutorizacionAutomatica( DateTime fechaSolicitud )
277                                 : base( fechaSolicitud )
278                         {
279                         }
280                         public AutorizacionAutomatica()         
281                         {
282                         }
283
284                         #endregion Constructores
285
286                         #region Métodos Públicos
287
288                         public override Autorizacion.Estado getEstado( DateTime fecha )
289                         {
290                                 Autorizacion.Estado estado = Autorizacion.Estado.Invalida; //inicialización
291
292                                 //Evalúo Fecha SOLICITUD
293                                 if ( this.FechaSolicitud != DateTime.MinValue )
294                                 {
295                                         if ( this.FechaSolicitud <= fecha )
296                                         {
297                                                 //Evalúo si está APROBADA
298                                                 if ( this.Aprobada )
299                                                 {
300                                                         //Evalúo Fecha REALIZACIÓN
301                                                         if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
302                                                         {
303                                                                 estado = Autorizacion.Estado.Realizada;
304                                                         }
305                                                         else
306                                                         {
307                                                                 //Aprobada pero NO realizada
308                                                                 //Evalúo Fecha VENCIMIENTO
309                                                                 if ( (this.FechaVencimiento != DateTime.MinValue) && (this.FechaVencimiento <= fecha) )
310                                                                 {
311                                                                         estado = Autorizacion.Estado.Vencida;
312                                                                 }
313                                                                 else
314                                                                         //Sin vencer
315                                                                         estado = Autorizacion.Estado.Aprobada;
316                                                         }
317                                                 }
318                                                 else
319                                                         //DESAPROBADA
320                                                 {
321                                                         if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
322                                                         {
323                                                                 estado = Autorizacion.Estado.Invalida; //Desaprobada y Realizada!
324                                                         }
325                                                         else
326                                                                 estado = Autorizacion.Estado.Rechazada;
327                                                 }
328                                         }
329                                         else
330                                                 //FechaSolicitud > fecha
331                                                 estado = Autorizacion.Estado.Inexistente;
332                                 }
333                                 else
334                                         //FechaSolicitud no seteada
335                                         estado = Autorizacion.Estado.Invalida;
336
337                                 return estado;
338                         }
339
340                         #endregion Métodos Públicos
341                 }
342
343                 #endregion Clases derivadas de Autorizacion
344         }
345 }
346