5 using System.Collections;
\r
8 using Dominio.Autorizaciones;
\r
9 using Dominio.Afiliados;
\r
17 namespace Controlador
\r
20 /// Clase controlador que lleva a cabo los CU de "Pedir autorizacion automatica",
\r
21 /// "Pedir autorizacion manual" y actualizar "autorizacion manual"
\r
23 public class AutorizacionController : Controller
\r
25 #region Constructores
\r
27 public AutorizacionController(DateTime fechaSolicitud): base()
\r
32 #endregion Constructores
\r
34 #region Campos Privados
\r
36 private Autorizacion _currentAutorizacion = null ;
\r
38 #endregion Campos Privados
\r
40 #region Propiedades privadas
\r
42 public Autorizacion CurrentAutorizacion
\r
44 get { return _currentAutorizacion; }
46 #endregion Propiedades privadas
\r
48 #region Métodos Públicos
\r
51 /// Guarda un pedido de autorizacion manual.
\r
53 public bool guardarAutorizacionManual(String codPrestacion, String cuitPrestador
\r
54 , int codAfiliado, String observaciones)
\r
56 bool codigosOk = true;
\r
58 AutorizacionManual aut = new AutorizacionManual(DateTime.Now);
\r
60 #region Se insancia prestador, prestacion y afiliado, y se asocia a aut
\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
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
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
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
84 aut.Observaciones = observaciones;
\r
86 //Signo prox codigo para autorizacion
\r
87 AutoIncrementable c = new AutoIncrementable ();
\r
90 aut.Codigo = c.NextAutorizacion();
\r
93 if (codigosOk) this.Db.set(aut);
\r
99 //PRE: No hay autorizaciones manuales y automaticas con mismo codigo!!
\r
100 public Autorizacion obtener(int codigo)
\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
107 //Busco automatica, si no hay manual para ese codigo
\r
109 al = this.ObjectSetToArrayList( this.Db.get( new AutorizacionAutomatica(codigo) ) );
\r
110 a = ((al.Count == 0)? null : al[0] ) as Autorizacion;
\r
115 public float evaluarAutorizacionAutomatica(String cuitPrestador, String codPrestacion, int codAfiliado, out int codAutorizacion)
118 bool codigosOk = true;
\r
119 float porcentajeDeCobertura = 0;
\r
120 string fundamentosResolucion = "Todo ok";
\r
122 AutorizacionAutomatica aut = new AutorizacionAutomatica(DateTime.Now);
\r
124 #region Se insancia prestador, prestacion y afiliado, y se asocia a aut
\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
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
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
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
147 //Seteo fecha de vencimiento como dentro de 60 días
\r
148 aut.FechaVencimiento = DateTime.Now.AddDays(60);
\r
152 porcentajeDeCobertura = aut.Afiliado.VerificarCobertura(codPrestacion);
156 #warning verificar cobertura deberia tirar excepcion si explota, o se rechaza
157 //TODO Asignar motivo de rechazo a fundamentosResolucion
161 //Si porcentaje es 0, se registra rechazada
162 aut.setResolucion(fundamentosResolucion, porcentajeDeCobertura);
166 this._currentAutorizacion=aut;
\r
168 #warning deberia obtener codigo de autorizacion ACA y devolverlo
\r
169 codAutorizacion = 131313; //TODO SETEAR CODIGO BIEN!!
\r
173 return porcentajeDeCobertura;
176 public ArrayList obtenerAutorizacionesPendientes()
\r
178 Query query = Db.query();
179 query.constrain(typeof(AutorizacionManual));
180 query.descend("_fechaRealizacion").constrain(DateTime.MinValue);
182 ObjectSet result = query.execute ();
184 return ObjectSetToArrayList (result);
187 public ArrayList obtenerAutorizacionesPorAfiliado (int codafiliado)
189 Afiliado a = new Afiliado (codafiliado);
191 Query query = Db.query();
192 query.constrain(typeof(Autorizacion));
193 query.descend("_afiliado").constrain(a);
195 ObjectSet result = query.execute ();
197 return ObjectSetToArrayList (result);
199 //PRE: El codigo solicitado tiene que ser de una autorizacion manual.
\r
200 public bool setResolucionAutorizacionManual(int codAutorizacion,
\r
201 String fundamentosResolucion, float porcentaje)
\r
203 AutorizacionManual a = this.obtener(codAutorizacion) as AutorizacionManual;
\r
204 if (null==a) return false;
\r
205 a.Aprobada = (porcentaje==0)?false:true;
\r
206 a.PorcentajeCobertura = porcentaje;
\r
207 a.FundamentosResolucion = fundamentosResolucion;
\r
214 #endregion Métodos Públicos
\r
216 #region Métodos Privados
\r
219 /// Procesa las lineas del reporte una vez que el mismo ha sido validado:
\r
220 /// Si está aprobada, la registra en el sistema y la agrega al reporte de Consumo de los Afiliados.
\r
221 /// A todas las lineas las agrega al Informe de Aprobaciones/rechazos de Prestaciones Realizadas.
\r
223 /// <param name="ip">Reporte del cual se porcesarán las lineas</param>
\r
225 private void InsertarDatosNecesarios()
\r
229 Prestador pre = new Prestador();
\r
230 pre.Cuit = "11-11111111-1";
\r
231 ObjectSet os = this.Db.get( pre );
\r
232 if ( (os == null) || (os.size() == 0) )
\r
234 Dominio.SDireccion dir;
\r
235 dir.Calle = "Gaona"; dir.CodigoPostal = "AB1504"; dir.Departamento = "";
\r
236 dir.Numero = 1234; dir.Piso = 0; dir.Provincia = Dominio.EProvincia.CAPITAL_FEDERAL;
\r
237 dir.Telefono = "5056-4567";
\r
238 pre.Direccion = dir;
\r
239 pre.Email = @"roberto@sancamilo.com";
\r
240 pre.FechaBaja = DateTime.MinValue;
\r
241 pre.Nombre = "Clinica San Camilo";
\r
242 pre.Password = "camilo";
\r
243 pre.Zona = new SZona( "Caballito", "Zona de Caballito" );
\r
244 this.Db.set( pre );
\r
247 Prestacion p = new Prestacion();
\r
248 p.Codigo = "mierda" ;
\r
250 Categoria c = new Categoria();
\r
252 c.Nombre="categoria 1";
\r
255 p.Nombre= "hospital de clinicas";
\r
258 Afiliado a = new Afiliado(69);
\r
259 a.Apellido = "apellido";
\r
260 a.EMail = "afiliado@aaa.com";
\r
266 /*AutorizacionAutomatica a = new AutorizacionAutomatica();
\r
268 os = this.Db.get( a );
\r
269 if ( (os == null) || (os.size() == 0) )
\r
271 a.Afiliado = new Dominio.Afiliados.Afiliado( 987 );
\r
272 a.Prestacion = new Prestacion( "B01AC06" );
\r
274 a.FechaSolicitud = new DateTime( 2005, 5, 20 ); // 20 de mayo
\r
275 a.FechaRealizacion = DateTime.MinValue;
\r
276 a.FechaVencimiento = a.FechaSolicitud.AddMonths( 2 ); // 20 de julio, aprox
\r
278 a.PorcentajeCobertura = 12.5F;
\r
283 #endregion Métodos Privados
\r