]> git.llucax.com Git - z.facultad/75.10/miklolife.git/blob - demo/src/Dominio/Autorizacion.cs
* Cosas por commitear y nueva clase importante AUTOINCREMENT!, leer mail aparte!!
[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                         public AutorizacionManual()\r
205                         {
206                         }
207
208                         #endregion Constructores
209
210                         #region Métodos Públicos
211                         
212                         public override Autorizacion.Estado getEstado( DateTime fecha )
213                         {
214                                 Autorizacion.Estado estado = Autorizacion.Estado.Invalida; //inicialización
215
216                                 //Evalúo Fecha SOLICITUD
217                                 if ( this.FechaSolicitud != DateTime.MinValue )
218                                 {
219                                         if ( this.FechaSolicitud <= fecha )
220                                         {
221                                                 //Evalúo Fecha RESOLUCIÓN
222                                                 if ( (this.FechaResolucion != DateTime.MinValue) && (this.FechaResolucion <= fecha) )
223                                                 {
224                                                         //Evalúo si está APROBADA
225                                                         if ( this.Aprobada )
226                                                         {
227                                                                 //Evalúo Fecha REALIZACIÓN
228                                                                 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
229                                                                 {
230                                                                         estado = Autorizacion.Estado.Realizada;
231                                                                 }
232                                                                 else
233                                                                 {
234                                                                         //Aprobada pero NO realizada
235                                                                         //Evalúo Fecha VENCIMIENTO
236                                                                         if ( (this.FechaVencimiento != DateTime.MinValue) && (this.FechaVencimiento <= fecha) )
237                                                                         {
238                                                                                 estado = Autorizacion.Estado.Vencida;
239                                                                         }
240                                                                         else
241                                                                                 //Sin vencer
242                                                                                 estado = Autorizacion.Estado.Aprobada;
243                                                                 }
244                                                         }
245                                                         else
246                                                                 //DESAPROBADA
247                                                         {
248                                                                 if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
249                                                                 {
250                                                                         estado = Autorizacion.Estado.Invalida; //Desaprobada y Realizada!
251                                                                 }
252                                                                 else
253                                                                         estado = Autorizacion.Estado.Rechazada;
254                                                         }
255                                                 }
256                                                 else
257                                                         //No está resuelta
258                                                         if ( (this.FechaRealizacion == DateTime.MinValue) || (this.FechaRealizacion > fecha) )
259                                                                 estado = Autorizacion.Estado.Pendiente; //no está resuelta, ni realizada en "fecha"
260                                                         else 
261                                                                 estado = Autorizacion.Estado.Invalida;
262                                         }
263                                         else
264                                                 //FechaSolicitud > fecha
265                                                 estado = Autorizacion.Estado.Inexistente;
266                                 }
267                                 else
268                                         //FechaSolicitud no seteada
269                                         estado = Autorizacion.Estado.Invalida;
270
271                                 return estado;
272                         }
273
274                         #endregion Métodos Públicos
275                 }
276
277                 public class AutorizacionAutomatica : Autorizacion
278                 {
279                         #region Constructores
280
281                         public AutorizacionAutomatica( DateTime fechaSolicitud )
282                                 : base( fechaSolicitud )
283                         {
284                         }
285                         public AutorizacionAutomatica()         
286                         {
287                         }
288
289                         #endregion Constructores
290
291                         #region Métodos Públicos
292
293                         public override Autorizacion.Estado getEstado( DateTime fecha )
294                         {
295                                 Autorizacion.Estado estado = Autorizacion.Estado.Invalida; //inicialización
296
297                                 //Evalúo Fecha SOLICITUD
298                                 if ( this.FechaSolicitud != DateTime.MinValue )
299                                 {
300                                         if ( this.FechaSolicitud <= fecha )
301                                         {
302                                                 //Evalúo si está APROBADA
303                                                 if ( this.Aprobada )
304                                                 {
305                                                         //Evalúo Fecha REALIZACIÓN
306                                                         if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
307                                                         {
308                                                                 estado = Autorizacion.Estado.Realizada;
309                                                         }
310                                                         else
311                                                         {
312                                                                 //Aprobada pero NO realizada
313                                                                 //Evalúo Fecha VENCIMIENTO
314                                                                 if ( (this.FechaVencimiento != DateTime.MinValue) && (this.FechaVencimiento <= fecha) )
315                                                                 {
316                                                                         estado = Autorizacion.Estado.Vencida;
317                                                                 }
318                                                                 else
319                                                                         //Sin vencer
320                                                                         estado = Autorizacion.Estado.Aprobada;
321                                                         }
322                                                 }
323                                                 else
324                                                         //DESAPROBADA
325                                                 {
326                                                         if ( (this.FechaRealizacion != DateTime.MinValue) && (this.FechaRealizacion <= fecha) )
327                                                         {
328                                                                 estado = Autorizacion.Estado.Invalida; //Desaprobada y Realizada!
329                                                         }
330                                                         else
331                                                                 estado = Autorizacion.Estado.Rechazada;
332                                                 }
333                                         }
334                                         else
335                                                 //FechaSolicitud > fecha
336                                                 estado = Autorizacion.Estado.Inexistente;
337                                 }
338                                 else
339                                         //FechaSolicitud no seteada
340                                         estado = Autorizacion.Estado.Invalida;
341
342                                 return estado;
343                         }
344
345                         #endregion Métodos Públicos
346                 }
347
348                 #endregion Clases derivadas de Autorizacion
349         }
350 }
351