]> git.llucax.com Git - z.facultad/75.10/miklolife.git/blob - demo/src/Controlador/AutorizacionController.cs
Ctor( codigo, nombre ) agregado
[z.facultad/75.10/miklolife.git] / demo / src / Controlador / AutorizacionController.cs
1 \r
2 #region Usings\r
3 \r
4 using System;\r
5 using System.Collections;\r
6 \r
7 using Dominio;\r
8 using Dominio.Autorizaciones;\r
9 using Dominio.Afiliados;\r
10 \r
11
12 using com.db4o;
13 using com.db4o.query;
14
15 #endregion Usings\r
16 \r
17 namespace Controlador\r
18 {\r
19         /// <summary>\r
20         /// Clase controlador que lleva a cabo los CU de "Pedir autorizacion automatica",\r
21         /// "Pedir autorizacion manual" y actualizar "autorizacion manual"\r
22         /// </summary>\r
23         public class AutorizacionController : Controller\r
24         {\r
25                 #region Constructores\r
26                 \r
27                 public AutorizacionController(DateTime fechaSolicitud): base()\r
28                 {\r
29 \r
30                 }\r
31 \r
32                 #endregion Constructores\r
33 \r
34                 #region Campos Privados \r
35 \r
36                 private Autorizacion _currentAutorizacion = null ;              \r
37                 \r
38                 #endregion Campos Privados\r
39 \r
40                 #region Propiedades privadas\r
41 \r
42                 public Autorizacion CurrentAutorizacion\r
43                 {
44                         get { return _currentAutorizacion; }                    
45                 }\r
46                 #endregion Propiedades privadas\r
47 \r
48                 #region Métodos Públicos\r
49                 \r
50                 /// <summary>\r
51                 /// Guarda un pedido de autorizacion manual.\r
52                 /// </summary>\r
53                 public bool guardarAutorizacionManual(String codPrestacion, String cuitPrestador\r
54                         , int codAfiliado, String observaciones)\r
55                 {\r
56                         bool codigosOk = true;\r
57                                 \r
58                         AutorizacionManual aut = new AutorizacionManual(DateTime.Now);\r
59                         \r
60                         #region Se insancia prestador, prestacion y afiliado, y se asocia a aut\r
61                         //Seteo prestacion\r
62                         \r
63                         ArrayList al = this.ObjectSetToArrayList( this.Db.get( new Prestacion(codPrestacion) ) );\r
64                         if (null==(aut.Prestacion = ( (al.Count == 0)? null : al[0] ) as Prestacion))\r
65                                 codigosOk=false;\r
66 \r
67                         //Seteo prestador\r
68                         al = this.ObjectSetToArrayList( this.Db.get( new Prestador(cuitPrestador) ) );\r
69                         if (null==(aut.Prestador = ( (al.Count == 0)? null : al[0] ) as Prestador))\r
70                                 codigosOk=false;\r
71 \r
72                                 \r
73 \r
74                         //Seteo afiliado\r
75                         al = this.ObjectSetToArrayList( this.Db.get( new Afiliado(codAfiliado) ) );\r
76                         if (null==(aut.Afiliado = ( (al.Count == 0)? null : al[0] ) as Afiliado))\r
77                                 codigosOk=false;\r
78         \r
79                         #endregion Se insancia prestador, prestacion y afiliado, y se asocia a aut\r
80                         //Seteo fecha de vencimiento como dentro de 60 días\r
81                         aut.FechaVencimiento = DateTime.Now.AddDays(60);\r
82 \r
83 \r
84                         aut.Observaciones = observaciones;                      \r
85 \r
86                         //Signo prox codigo para autorizacion\r
87                         AutoIncrementable c = new AutoIncrementable ();\r
88                         using (c)\r
89                         {\r
90                                 aut.Codigo = c.NextAutorizacion();\r
91                         }\r
92 \r
93                         if (codigosOk) this.Db.set(aut);\r
94 \r
95                         return codigosOk;                       \r
96                 \r
97                 }\r
98 \r
99                 //PRE: No hay autorizaciones manuales y automaticas con mismo codigo!!\r
100                 public Autorizacion obtener(int codigo)\r
101                 {                       \r
102                         //Busco manual\r
103                         ArrayList al = this.ObjectSetToArrayList( this.Db.get( new AutorizacionManual(codigo) ) );\r
104                         Autorizacion a = ((al.Count == 0)? null : al[0] ) as Autorizacion;\r
105                         \r
106                         if (null==a)\r
107                         //Busco automatica, si no hay manual para ese codigo\r
108                         {\r
109                                 al = this.ObjectSetToArrayList( this.Db.get( new AutorizacionAutomatica(codigo) ) );\r
110                                 a = ((al.Count == 0)? null : al[0] ) as Autorizacion;\r
111                         }\r
112                         return a;\r
113                 }\r
114 \r
115                 public float evaluarAutorizacionAutomatica(String cuitPrestador, String codPrestacion, int codAfiliado, out int codAutorizacion)
116                 {
117
118                         bool codigosOk = true;\r
119                         float porcentajeDeCobertura = 0;\r
120                         string fundamentosResolucion = "Todo ok";\r
121                         \r
122                         AutorizacionAutomatica aut = new AutorizacionAutomatica(DateTime.Now);\r
123                         \r
124                         #region Se insancia prestador, prestacion y afiliado, y se asocia a aut\r
125                         //Seteo prestacion\r
126                         \r
127                         ArrayList al = this.ObjectSetToArrayList( this.Db.get( new Prestacion(codPrestacion) ) );\r
128                         if (null==(aut.Prestacion = ( (al.Count == 0)? null : al[0] ) as Prestacion))\r
129                                 codigosOk=false;\r
130 \r
131                         //Seteo prestador\r
132                         al = this.ObjectSetToArrayList( this.Db.get( new Prestador(cuitPrestador) ) );\r
133                         if (null==(aut.Prestador = ( (al.Count == 0)? null : al[0] ) as Prestador))\r
134                                 codigosOk=false;\r
135 \r
136                                 \r
137 \r
138                         //Seteo afiliado\r
139                         al = this.ObjectSetToArrayList( this.Db.get( new Afiliado(codAfiliado) ) );\r
140                         if (null==(aut.Afiliado = ( (al.Count == 0)? null : al[0] ) as Afiliado))\r
141                                 codigosOk=false;\r
142         \r
143                         #endregion Se insancia prestador, prestacion y afiliado, y se asocia a aut\r
144                         //Seteo fecha de vencimiento como dentro de 60 días\r
145                         \r
146 \r
147                         //Seteo fecha de vencimiento como dentro de 60 días\r
148                         aut.FechaVencimiento = DateTime.Now.AddDays(60);\r
149 \r
150                         try\r
151                         {
152                                 porcentajeDeCobertura = aut.Afiliado.VerificarCobertura(codPrestacion);
153                         }\r
154                         catch\r
155                         {
156                                 #warning verificar cobertura deberia tirar excepcion si explota, o se rechaza
157                                 //TODO Asignar motivo de rechazo a fundamentosResolucion
158                         }
159                         finally\r
160                         {
161                                 //Si porcentaje es 0, se registra rechazada
162                                 aut.setResolucion(fundamentosResolucion, porcentajeDeCobertura);
163                                 if (codigosOk) \r
164                                 {\r
165                                         this.Db.set(aut);\r
166                                         this._currentAutorizacion=aut;\r
167                                 }\r
168                                 #warning deberia obtener codigo de autorizacion ACA y devolverlo\r
169                                 codAutorizacion = 131313; //TODO SETEAR CODIGO BIEN!!\r
170                                 \r
171                                                 
172                         }
173                         return porcentajeDeCobertura;
174                 }
175 \r
176                 public ArrayList obtenerAutorizacionesPendientes()\r
177                 {                               
178                         Query query = Db.query();
179                         query.constrain(typeof(AutorizacionManual));
180                         query.descend("_fechaRealizacion").constrain(DateTime.MinValue);
181
182                         ObjectSet result = query.execute ();
183
184                         return ObjectSetToArrayList (result);
185                 }
186 \r
187                 //PRE: El codigo solicitado tiene que ser de una autorizacion manual.\r
188                 public bool  setResolucionAutorizacionManual(int codAutorizacion, \r
189                         String fundamentosResolucion, float porcentaje)\r
190                 {\r
191                         AutorizacionManual a = this.obtener(codAutorizacion) as AutorizacionManual;\r
192                         if (null==a) return false;\r
193                         a.Aprobada = (porcentaje==0)?false:true;\r
194                         a.PorcentajeCobertura = porcentaje;\r
195                         a.FundamentosResolucion = fundamentosResolucion;\r
196                         this.Db.set(a);\r
197 \r
198                         return true;\r
199                 }\r
200 \r
201 \r
202                 #endregion Métodos Públicos\r
203 \r
204                 #region Métodos Privados\r
205 \r
206                 /// <summary>\r
207                 /// Procesa las lineas del reporte una vez que el mismo ha sido validado:\r
208                 /// Si está aprobada, la registra en el sistema y la agrega al reporte de Consumo de los Afiliados. \r
209                 /// A todas las lineas las agrega al Informe de Aprobaciones/rechazos de Prestaciones Realizadas.\r
210                 /// </summary>\r
211                 /// <param name="ip">Reporte del cual se porcesarán las lineas</param>\r
212                 \r
213                 private void InsertarDatosNecesarios()\r
214                 {\r
215                         //PRESTADOR\r
216                         Prestador pre = new Prestador();\r
217                         pre.Cuit = "11-11111111-1";\r
218                         ObjectSet os = this.Db.get( pre );\r
219                         if ( (os == null) || (os.size() == 0) )\r
220                         {\r
221                                 Dominio.SDireccion dir;\r
222                                 dir.Calle = "Gaona"; dir.CodigoPostal = "AB1504"; dir.Departamento = "";\r
223                                 dir.Numero = 1234; dir.Piso = 0;  dir.Provincia = Dominio.EProvincia.CAPITAL_FEDERAL;\r
224                                 dir.Telefono = "5056-4567";\r
225                                 pre.Direccion = dir;\r
226                                 pre.Email = @"roberto@sancamilo.com";\r
227                                 pre.FechaBaja = DateTime.MinValue;\r
228                                 pre.Nombre = "Clinica San Camilo";\r
229                                 pre.Password = "camilo";\r
230                                 pre.Zona = new SZona( "Caballito", "Zona de Caballito" );\r
231                                 this.Db.set( pre );\r
232                         }\r
233 \r
234                         Prestacion p = new Prestacion();\r
235                         p.Codigo = "mierda" ;\r
236 \r
237                         Categoria c = new Categoria();\r
238                         c.Codigo=10;\r
239                         c.Nombre="categoria 1";\r
240                 \r
241                         p.Categoria = c;\r
242                         p.Nombre= "hospital de clinicas";\r
243                         this.Db.set(p);\r
244 \r
245                         Afiliado a = new Afiliado(69);\r
246                         a.Apellido = "apellido";\r
247                         a.EMail = "afiliado@aaa.com";\r
248 \r
249                         this.Db.set(a);\r
250                         \r
251 \r
252                         //AUTORIZACIONES\r
253                         /*AutorizacionAutomatica a = new AutorizacionAutomatica();\r
254                         a.Codigo = 123;\r
255                         os = this.Db.get( a );\r
256                         if ( (os == null) || (os.size() == 0) )\r
257                         {\r
258                                 a.Afiliado = new Dominio.Afiliados.Afiliado( 987 );\r
259                                 a.Prestacion = new Prestacion( "B01AC06" );\r
260                                 a.Prestador = pre;\r
261                                 a.FechaSolicitud = new DateTime( 2005, 5, 20 ); // 20 de mayo\r
262                                 a.FechaRealizacion = DateTime.MinValue;\r
263                                 a.FechaVencimiento = a.FechaSolicitud.AddMonths( 2 ); // 20 de julio, aprox\r
264                                 a.Aprobada = true;\r
265                                 a.PorcentajeCobertura = 12.5F;\r
266                                 this.Db.set( a );\r
267                         }*/\r
268                 }\r
269 \r
270                 #endregion Métodos Privados\r
271 \r
272         }\r
273 }\r