]> git.llucax.com Git - z.facultad/75.10/miklolife.git/blob - demo/src/Controlador/RecibirPrestacionesController.cs
Se cargan los datos de la autorizacion para que el auditor los pueda ver y decidir
[z.facultad/75.10/miklolife.git] / demo / src / Controlador / RecibirPrestacionesController.cs
1 #region Usings\r
2 \r
3 using System;\r
4 using System.Collections;\r
5 \r
6 using Dominio;\r
7 using Dominio.Autorizaciones;\r
8 using Dominio.Afiliados;\r
9 using Dominio.Planes;\r
10 using Reportes;\r
11 \r
12 using com.db4o;\r
13 \r
14 #endregion Usings\r
15 \r
16 namespace Controlador\r
17 {\r
18         /// <summary>\r
19         /// Clase controlador que lleva a cabo el CU "Recibir y Cotejar Consumos y Prestaciones"\r
20         /// </summary>\r
21         public class RecibirPrestacionesController : Controller\r
22         {\r
23                 #region Constructores\r
24                 \r
25                 public RecibirPrestacionesController()\r
26                         : base()\r
27                 {\r
28                 }\r
29 \r
30                 #endregion Constructores\r
31 \r
32                 #region Campos Privados \r
33                 \r
34                 private ConsumoAfiliadosReport _reporteConsumo = new ConsumoAfiliadosReport();\r
35                 private PrestacionesRealizadasReport _reporteAprobaciones = new PrestacionesRealizadasReport();\r
36                 \r
37                 #endregion Campos Privados\r
38 \r
39                 #region Creacion de Datos en la BD\r
40                 public void InsertarDatosNecesarios()\r
41                 {\r
42                         //PRESTADOR\r
43                         Prestador pre = new Prestador();\r
44                         pre.Cuit = "30-12345678-1";\r
45                         ObjectSet os = this.Db.get( pre );\r
46                         if ( (os == null) || (os.size() == 0) )\r
47                         {\r
48                                 Dominio.SDireccion dir;\r
49                                 dir.Calle = "Gaona"; dir.CodigoPostal = "AB1504"; dir.Departamento = "";\r
50                                 dir.Numero = 1234; dir.Piso = 0;  dir.Provincia = Dominio.EProvincia.CAPITAL_FEDERAL;\r
51                                 dir.Telefono = "5056-4567";\r
52                                 pre.Direccion = dir;\r
53                                 pre.Email = @"roberto@sancamilo.com";\r
54                                 pre.FechaBaja = DateTime.MinValue;\r
55                                 pre.Nombre = "Clinica San Camilo";\r
56                                 pre.Password = "camilo";\r
57                                 pre.Zona = new SZona( "Caballito", "Zona de Caballito" );\r
58                                 this.Db.set( pre );\r
59                         }\r
60 \r
61                         //AUTORIZACIONES\r
62                         AutorizacionAutomatica a = new AutorizacionAutomatica();\r
63                         a.Codigo = 123;\r
64                         os = this.Db.get( a );\r
65                         if ( (os == null) || (os.size() == 0) )\r
66                         {\r
67                                 Solicitante sol = new Solicitante( ETipoDocumento.DNI, 28123456, "Jorge", "Drexler" );\r
68                                 Plan plan = new Plan( 10F ); plan.Codigo = 3; \r
69                                 Afiliado afil = new Afiliado( sol, plan, new DateTime(2004, 4, 30 ) );\r
70                                 a.Afiliado = new Dominio.Afiliados.Afiliado( 987 );\r
71                                 a.Prestacion = new Prestacion( "B01AC06" );\r
72                                 a.Prestador = pre;\r
73                                 a.FechaSolicitud = new DateTime( 2005, 5, 20 ); // 20 de mayo\r
74                                 a.FechaRealizacion = DateTime.MinValue;\r
75                                 a.FechaVencimiento = a.FechaSolicitud.AddMonths( 2 ); // 20 de julio, aprox\r
76                                 a.Aprobada = true;\r
77                                 a.PorcentajeCobertura = 12.5F;\r
78                                 this.Db.set( a );\r
79                         }\r
80                         else\r
81                         {\r
82                                 Autorizacion aut = (ObjectSetToArrayList( os )[0] as Autorizacion );\r
83                                 aut.FechaRealizacion = DateTime.MinValue;\r
84                                 this.Db.set( aut );\r
85                         }\r
86                         \r
87                 }\r
88 \r
89                 #endregion Creacion de Datos en la BD\r
90 \r
91                 #region Métodos Públicos\r
92                 \r
93                 /// <summary>\r
94                 /// Dispara el proceso de recepción y procesamiento de la info recibida de los Presadores\r
95                 /// </summary>\r
96                 public void procesarInfoRecibida()\r
97                 {\r
98                         try\r
99                         {\r
100                                 //1. Obtener todos los prestadores\r
101                                 ArrayList prestadores = this.ObjectSetToArrayList( this.Db.get(new Prestador()) );\r
102 \r
103                                 InfoPrestacionesAdmin ipAdmin = new InfoPrestacionesAdmin();\r
104 \r
105                                 //2. recorrer los prestadores\r
106                                 foreach ( Prestador p in prestadores )\r
107                                 {\r
108                                         //Obtener archivos enviados del prestador\r
109                                         InfoPrestacionesReport[] informes = ipAdmin.ObtenerInfoPendiente( p );\r
110                         \r
111                                         if ( informes.Length <= 0 )\r
112                                         {\r
113                                                 this.NotificarPrestador( NotificacionPrestador.Tipo.InfoNoRecibida, null );\r
114                                                 this.NotificarPagos( "Archivos no recibidos", "Prestador=" + p.Nombre + "\n" + "CUIT=" + p.Cuit );\r
115                                         }\r
116                                         else\r
117                                         {\r
118                                                 //Recorro informe por informe\r
119                                                 foreach ( InfoPrestacionesReport ip in informes )\r
120                                                 {\r
121                                                         if ( (ip.ValidarFormato()) && ( ip.CuitPrestador == p.Cuit ) )\r
122                                                         {       //OK\r
123                                                                 ip.ValidarLineas( p ); //Las marca como aprobadas/rechazadas\r
124                                                                 this.ProcesarLineas( p, ip );\r
125                                                                 ipAdmin.MoverArchivoAceptado( ip );\r
126                                                                 this.NotificarPrestador( NotificacionPrestador.Tipo.ProcesoExitoso, ip );\r
127                                                         }\r
128                                                         else\r
129                                                         {\r
130                                                                 //ERROR. \r
131                                                                 // 1. Mover el archivo a "rechazados"\r
132                                                                 ipAdmin.MoverArchivoRechazado( ip );\r
133                                                                 // 2. Enviar mail al Prestador y a Pagos\r
134                                                                 this.NotificarPrestador( NotificacionPrestador.Tipo.ErrorGrave, ip );\r
135                                                                 this.NotificarPagos( "Error al procesar archivo", "Nombre=" + ip.PathArchivo );\r
136                                                         }\r
137                                                 } //foreach informes\r
138                                         } //else\r
139                                 } // foreach prestadores\r
140 \r
141                                 //Envío los reportes creados:\r
142                                 ipAdmin.EnviarReporte( this._reporteAprobaciones );\r
143                                 ipAdmin.EnviarReporte( this._reporteConsumo );\r
144                         }\r
145                         catch ( Exception e )\r
146                         {\r
147                                 Console.WriteLine( e.Message );\r
148                                 Console.Read();\r
149                         }\r
150                 }\r
151 \r
152                 #endregion Métodos Públicos\r
153 \r
154                 #region Métodos Privados\r
155 \r
156                 /// <summary>\r
157                 /// Procesa las lineas del reporte una vez que el mismo ha sido validado:\r
158                 /// Si está aprobada, la registra en el sistema y la agrega al reporte de Consumo de los Afiliados. \r
159                 /// A todas las lineas las agrega al Informe de Aprobaciones/rechazos de Prestaciones Realizadas.\r
160                 /// </summary>\r
161                 /// <param name="ip">Reporte del cual se porcesarán las lineas</param>\r
162                 private void ProcesarLineas( Prestador p, InfoPrestacionesReport ip )\r
163                 {\r
164                         foreach ( LineaInfoPrestacionesReport linea in ip.Lineas )\r
165                         {\r
166                                 this._reporteAprobaciones.AgregarInfo( p, ip.FechaEnvio, linea );\r
167 \r
168                                 if ( linea.Aprobada )\r
169                                 {\r
170                                         //actualizo en el sistema\r
171                                         Autorizacion a = this.getAutorizacion( linea.CodigoAutorizacion );\r
172                                         a.FechaRealizacion = linea.FechaRealizacion;\r
173                                         this.Db.set( a );\r
174                                         \r
175                                         //agrego info al reporte de consumo\r
176                                         this._reporteConsumo.AgregarInfo( p, linea );\r
177                                 }\r
178                         }\r
179                 }\r
180 \r
181                 private void NotificarPrestador( NotificacionPrestador.Tipo tipoNotif, InfoPrestacionesReport ip )\r
182                 {\r
183                         //NotificacionesAdmin.\r
184                 }\r
185 \r
186                 private void NotificarPagos( string titulo, string contenido )\r
187                 {\r
188                         \r
189                 }\r
190 \r
191 \r
192                 private Autorizacion getAutorizacion( int codigo )\r
193                 {       \r
194                         ArrayList al = new ArrayList();\r
195 \r
196                         al = this.ObjectSetToArrayList( this.Db.get( new AutorizacionManual(codigo) ) );\r
197                         Autorizacion a = ( (al.Count == 0)? null : al[0] ) as AutorizacionManual;\r
198 \r
199                         if ( a == null )\r
200                         {\r
201                                 al = this.ObjectSetToArrayList( this.Db.get( new AutorizacionAutomatica(codigo) ) );\r
202                                 a = ( (al.Count == 0)? null : al[0] ) as AutorizacionAutomatica;\r
203                         }\r
204 \r
205                         return a;\r
206                 }\r
207 \r
208                 #endregion Métodos Privados\r
209 \r
210         }\r
211 }\r