--- /dev/null
+\r
+#region Usings\r
+\r
+using System;\r
+using System.Collections;\r
+\r
+using Dominio;\r
+using Dominio.Autorizaciones;\r
+using Dominio.Afiliados;\r
+\r
+\r
+#endregion Usings\r
+\r
+namespace Controlador\r
+{\r
+ /// <summary>\r
+ /// Clase controlador que lleva a cabo los CU de "Pedir autorizacion automatica",\r
+ /// "Pedir autorizacion manual" y actualizar "autorizacion manual"\r
+ /// </summary>\r
+ public class AutorizacionController : Controller\r
+ {\r
+ #region Constructores\r
+ \r
+ public AutorizacionController(DateTime fechaSolicitud): base()\r
+ {\r
+\r
+ }\r
+\r
+ #endregion Constructores\r
+\r
+ #region Campos Privados \r
+\r
+ private Autorizacion _currentAutorizacion = null ; \r
+ \r
+ #endregion Campos Privados\r
+\r
+ #region Propiedades privadas\r
+\r
+ public Autorizacion CurrentAutorizacion\r
+ {
+ get { return _currentAutorizacion; }
+ }\r
+ #endregion Propiedades privadas\r
+\r
+ #region Métodos Públicos\r
+ \r
+ /// <summary>\r
+ /// Guarda un pedido de autorizacion manual.\r
+ /// </summary>\r
+ public bool guardarAutorizacionManual(String codPrestacion, String cuitPrestador\r
+ , int codAfiliado, String observaciones)\r
+ {\r
+ bool codigosOk = true;\r
+ \r
+ AutorizacionManual aut = new AutorizacionManual(DateTime.Now);\r
+ \r
+\r
+\r
+ //Seteo prestacion\r
+ Prestacion prestacion = new Prestacion();\r
+ prestacion.Codigo=codPrestacion;\r
+ if (null==(aut.Prestacion = (Prestacion)this.ObjectSetToArrayList( this.Db.get(prestacion) )[0]))\r
+ codigosOk = false;\r
+\r
+ //Seteo prestador\r
+ Prestador prestador = new Prestador();\r
+ prestador.Cuit=cuitPrestador;\r
+ if (null==(aut.Prestador = (Prestador)this.ObjectSetToArrayList( this.Db.get(prestador) )[0]))\r
+ codigosOk=false;\r
+ \r
+\r
+ //Seteo afiliado\r
+ Afiliado afiliado = new Afiliado(codAfiliado); \r
+ if (null==(aut.Afiliado = ((Afiliado)this.ObjectSetToArrayList( this.Db.get(afiliado) )[0])))\r
+ codigosOk=false;\r
+ \r
+ //Seteo fecha de vencimiento como dentro de 60 días\r
+ aut.FechaVencimiento = DateTime.Now.AddDays(60);\r
+\r
+\r
+ aut.Observaciones = observaciones;\r
+\r
+ #warning Grabar en autorizacionController:ver manejo de codigos!!!!\r
+\r
+ if (codigosOk) this.Db.set(aut);\r
+\r
+ return codigosOk; \r
+ }\r
+\r
+ public float evaluarAutorizacionAutomatica(String cuitPrestador, String codPrestacion, int codAfiliado, out int codAutorizacion)
+ {
+
+ bool codigosOk = true;\r
+ float porcentajeDeCobertura = 0;\r
+ string fundamentosResolucion = "Todo ok";\r
+ \r
+ AutorizacionAutomatica aut = new AutorizacionAutomatica(DateTime.Now);\r
+ \r
+\r
+ #region Se insancia prestador, prestacion y afiliado, y se asocia a aut\r
+ //Seteo prestacion\r
+ Prestacion prestacion = new Prestacion();\r
+ prestacion.Codigo=codPrestacion;\r
+ if (null==(aut.Prestacion = (Prestacion)this.ObjectSetToArrayList( this.Db.get(prestacion) )[0]))\r
+ codigosOk = false;\r
+\r
+ //Seteo prestador\r
+ Prestador prestador = new Prestador();\r
+ prestador.Cuit=cuitPrestador;\r
+ if (null==(aut.Prestador = (Prestador)this.ObjectSetToArrayList( this.Db.get(prestador) )[0]))\r
+ codigosOk=false;\r
+ \r
+\r
+ //Seteo afiliado\r
+ Afiliado afiliado = new Afiliado(codAfiliado); \r
+ if (null==(aut.Afiliado = ((Afiliado)this.ObjectSetToArrayList( this.Db.get(afiliado) )[0])))\r
+ codigosOk=false;\r
+ #endregion Se insancia prestador, prestacion y afiliado, y se asocia a aut\r
+\r
+ //Seteo fecha de vencimiento como dentro de 60 días\r
+ aut.FechaVencimiento = DateTime.Now.AddDays(60);\r
+\r
+ try\r
+ {
+ porcentajeDeCobertura = afiliado.VerificarCobertura(codPrestacion);
+ }\r
+ catch\r
+ {
+ #warning verificar cobertura deberia tirar excepcion si explota, o se rechaza
+ //TODO Asignar motivo de rechazo a fundamentosResolucion
+ }
+ finally\r
+ {
+ //Si porcentaje es 0, se registra rechazada
+ aut.setResolucion(fundamentosResolucion, porcentajeDeCobertura);
+ if (codigosOk) \r
+ {\r
+ this.Db.set(aut);\r
+ this._currentAutorizacion=aut;\r
+ }\r
+ #warning deberia obtener codigo de autorizacion ACA y devolverlo\r
+ codAutorizacion = 131313; //TODO SETEAR CODIGO BIEN!!\r
+ \r
+
+ }
+ return porcentajeDeCobertura;
+ }
+\r
+ public ArrayList obtenerAutorizacionesPendientes()\r
+ {\r
+ \r
+ Autorizacion autorizacion = new AutorizacionManual();\r
+ // autorizacion.fe seleccionar nulls\r
+ //aut.Autorizacion = (Autorizacion)this.ObjectSetToArrayList( this.Db.get(autorizacion) )[0])\r
+\r
+ return null;\r
+\r
+\r
+ }\r
+ \r
+\r
+\r
+\r
+ #endregion Métodos Públicos\r
+\r
+ #region Métodos Privados\r
+\r
+ /// <summary>\r
+ /// Procesa las lineas del reporte una vez que el mismo ha sido validado:\r
+ /// Si está aprobada, la registra en el sistema y la agrega al reporte de Consumo de los Afiliados. \r
+ /// A todas las lineas las agrega al Informe de Aprobaciones/rechazos de Prestaciones Realizadas.\r
+ /// </summary>\r
+ /// <param name="ip">Reporte del cual se porcesarán las lineas</param>\r
+ \r
+ #endregion Métodos Privados\r
+\r
+ }\r
+}\r