/// <summary> /// Realiza carga en tablas temporales del contenido del archivo Excel /// </summary> /// <param name="IdTipoPrestacion">Id. de tipo de prestación</param> /// <param name="NombreArchivo">Nombre del archivo adjunto</param> /// <param name="ContenidoArchivo">Contenido binario del archivo adjunto</param> /// <returns>Retorna Id. de encabezado de carga de prestaciones</returns> public int UploadArchivoPrestaciones(int IdTipoPrestacion, string NombreArchivo, byte[] ContenidoArchivo) { Init(); try { using (LQCEEntities context = new LQCEEntities()) { if (string.IsNullOrEmpty(NombreArchivo)) throw new Exception("No se ha señalado nombre de archivo Excel"); if (ContenidoArchivo == null) throw new Exception("No se ha incluido contenido del archivo Excel"); RepositorioTIPO_PRESTACION _RepositorioTIPO_PRESTACION = new RepositorioTIPO_PRESTACION(context); RepositorioCARGA_PRESTACIONES_ESTADO _RepositorioCARGA_PRESTACIONES_ESTADO = new RepositorioCARGA_PRESTACIONES_ESTADO(context); RepositorioCARGA_PRESTACIONES_DETALLE_ESTADO _RepositorioCARGA_PRESTACIONES_DETALLE_ESTADO = new RepositorioCARGA_PRESTACIONES_DETALLE_ESTADO(context); var objTipoPrestacion = _RepositorioTIPO_PRESTACION.GetById(IdTipoPrestacion); if (objTipoPrestacion == null) throw new Exception("No se ha encontrado información del Tipo de Prestación"); var objEstado = _RepositorioCARGA_PRESTACIONES_ESTADO.GetById((int)ENUM_CARGA_PRESTACIONES_ESTADO.Pendiente); if (objEstado == null) throw new Exception("No se ha encontrado información del Estado de Carga de Prestaciones"); var objEstadoDetalle = _RepositorioCARGA_PRESTACIONES_DETALLE_ESTADO.GetById((int)ENUM_CARGA_PRESTACIONES_DETALLE_ESTADO.Pendiente); if (objEstadoDetalle == null) throw new Exception("No se ha encontrado información del Estado de Detalle de Carga de Prestaciones"); string archivo = DateTime.Now.ToString("yyyyMMddHHmmss") + "_" + NombreArchivo; File.WriteAllBytes(Properties.Settings.Default.DIR_CARGA_EXCEL + archivo, ContenidoArchivo); var datos = ISExcel.ReadExcelFile(Properties.Settings.Default.DIR_CARGA_EXCEL + archivo, true); if (datos == null) throw new Exception("No se ha leido información en la planilla Excel"); CARGA_PRESTACIONES_ENCABEZADO objEncabezado = new CARGA_PRESTACIONES_ENCABEZADO(); objEncabezado.FECHA_CARGA = DateTime.Now; objEncabezado.TIPO_PRESTACION = objTipoPrestacion; objEncabezado.CARGA_PRESTACIONES_ESTADO = objEstado; objEncabezado.ARCHIVO = archivo; objEncabezado.ACTIVO = true; context.AddToCARGA_PRESTACIONES_ENCABEZADO(objEncabezado); if (IdTipoPrestacion == (int)ENUM_TIPO_PRESTACION.Humanas) { foreach (DataRow item in datos.Rows) { bool TieneDatos = false; foreach (var col in item.ItemArray) { if (!string.IsNullOrEmpty(col.ToString())) TieneDatos = true; } if (TieneDatos) { // Convertir fecha formato dd.mm.aa DateTime? pasoFR = null; if (!string.IsNullOrEmpty(item["FECHA RECEPCION"].ToString())) { string[] arrFechaRecepcion = item["FECHA RECEPCION"].ToString().Split('.'); if (arrFechaRecepcion.Count() == 3) { int? dias = ISConvert.ToNullableInteger(arrFechaRecepcion[0]); int? mes = ISConvert.ToNullableInteger(arrFechaRecepcion[1]); int? año = ISConvert.ToNullableInteger(arrFechaRecepcion[2]); if (dias.HasValue && mes.HasValue && año.HasValue) { if (año < 100) { año = año + 2000; } string fr = dias.Value.ToString() + "-" + mes.Value.ToString() + "-" + año.Value.ToString(); pasoFR = ISConvert.ToNullableDateTime(fr); } } } CARGA_PRESTACIONES_HUMANAS_DETALLE objDetalle = new CARGA_PRESTACIONES_HUMANAS_DETALLE(); objDetalle.CARGA_PRESTACIONES_ENCABEZADO = objEncabezado; objDetalle.NOMBRE = item["NOMBRE"].ToString(); objDetalle.FICHA = item["FICHA"].ToString(); if (pasoFR.HasValue) { objDetalle.FECHA_RECEPCION = pasoFR.Value.ToString("dd-MM-yyyy") + " " + item["HORA RECEPCION"].ToString(); } else { objDetalle.FECHA_RECEPCION = item["FECHA RECEPCION"].ToString() + "." + item["HORA RECEPCION"].ToString(); } objDetalle.TELEFONO = item["TELEFONO"].ToString(); objDetalle.MEDICO = item["MEDICO"].ToString(); objDetalle.PROCEDENCIA = item["PROCEDENCIA"].ToString(); objDetalle.PREVISION = item["PREVISION"].ToString(); objDetalle.GARANTIA = item["GARANTIA"].ToString(); objDetalle.PENDIENTE = item["PENDIENTE"].ToString(); objDetalle.PAGADO = item["PAGADO"].ToString(); objDetalle.TOTAL = item["TOTAL"].ToString(); objDetalle.RECEPCION = item["RECEPCION"].ToString(); objDetalle.EDAD = item["EDAD"].ToString(); objDetalle.RUT = item["RUT"].ToString(); objDetalle.ACTIVO = true; objDetalle.CARGA_PRESTACIONES_DETALLE_ESTADO = objEstadoDetalle; objDetalle.MENSAJE_ERROR = ""; objDetalle.FECHA_ACTUALIZACION = DateTime.Now; objDetalle.CLIENTE = null; objDetalle.VALOR_FICHA = null; objDetalle.VALOR_FECHA_MUESTRA = null; objDetalle.VALOR_FECHA_RECEPCION = null; objDetalle.PREVISION1 = null; objDetalle.GARANTIA1 = null; objDetalle.VALOR_FECHA_ENTREGA_RESULTADOS = null; AgregarExamenHumano(context, objDetalle, item, "EXAMEN 1", "VALOR 1"); AgregarExamenHumano(context, objDetalle, item, "EXAMEN 2", "VALOR 2"); AgregarExamenHumano(context, objDetalle, item, "EXAMEN 3", "VALOR 3"); AgregarExamenHumano(context, objDetalle, item, "EXAMEN 4", "VALOR 4"); AgregarExamenHumano(context, objDetalle, item, "EXAMEN 5", "VALOR 5"); AgregarExamenHumano(context, objDetalle, item, "EXAMEN 6", "VALOR 6"); AgregarExamenHumano(context, objDetalle, item, "EXAMEN 7", "VALOR 7"); AgregarExamenHumano(context, objDetalle, item, "EXAMEN 8", "VALOR 8"); AgregarExamenHumano(context, objDetalle, item, "EXAMEN 9", "VALOR 9"); ValidarPrestacionHumana(context, objDetalle); context.AddToCARGA_PRESTACIONES_HUMANAS_DETALLE(objDetalle); } } } else if (IdTipoPrestacion == (int)ENUM_TIPO_PRESTACION.Veterinarias) { foreach (DataRow item in datos.Rows) { // Convertir fecha formato dd.mm.aa DateTime? pasoFR = null; if (!string.IsNullOrEmpty(item["FECHA RECEPCION"].ToString())) { string[] arrFechaRecepcion = item["FECHA RECEPCION"].ToString().Split('.'); if (arrFechaRecepcion.Count() == 3) { int? dias = ISConvert.ToNullableInteger(arrFechaRecepcion[0]); int? mes = ISConvert.ToNullableInteger(arrFechaRecepcion[1]); int? año = ISConvert.ToNullableInteger(arrFechaRecepcion[2]); if (dias.HasValue && mes.HasValue && año.HasValue) { if (año < 100) { año = año + 2000; } string fr = dias.Value.ToString() + "-" + mes.Value.ToString() + "-" + año.Value.ToString(); pasoFR = ISConvert.ToNullableDateTime(fr); } } } CARGA_PRESTACIONES_VETERINARIAS_DETALLE objDetalle = new CARGA_PRESTACIONES_VETERINARIAS_DETALLE(); objDetalle.CARGA_PRESTACIONES_ENCABEZADO = objEncabezado; objDetalle.FICHA = item["INGRESO"].ToString(); objDetalle.NOMBRE = item["NOMBRE"].ToString(); objDetalle.ESPECIE = item["ESPECIE"].ToString(); objDetalle.RAZA = item["RAZA"].ToString(); objDetalle.SEXO = item["SEXO"].ToString(); objDetalle.EDAD = item["EDAD"].ToString(); objDetalle.TELEFONO = item["TELEFONO"].ToString(); objDetalle.PROCEDENCIA = item["PROCEDENCIA"].ToString(); objDetalle.GARANTIA = item["GARANTIA"].ToString(); objDetalle.PENDIENTE = item["PENDIENTE"].ToString(); objDetalle.TOTAL = item["TOTAL"].ToString(); objDetalle.RECEPCION = item["RECEPCION"].ToString(); objDetalle.MEDICO = item["MEDICO"].ToString(); objDetalle.SOLICITA = item["SOLICITANTE"].ToString(); if (pasoFR.HasValue) { objDetalle.FECHA_RECEPCION = pasoFR.Value.ToString("dd-MM-yyyy") + " " + item["HORA RECEPCION"].ToString(); } else { objDetalle.FECHA_RECEPCION = item["FECHA RECEPCION"].ToString() + "." + item["HORA RECEPCION"].ToString(); } objDetalle.FICHA_CLINICA = item["FICHA"].ToString(); //objDetalle.FECHA_MUESTRA = item["FECHA MUESTRA"].ToString(); //objDetalle.FECHA_RESULTADOS = item["FECHA RESULTADOS"].ToString(); //objDetalle.PAGADO = item["PAGADO"].ToString(); objDetalle.ACTIVO = true; objDetalle.CARGA_PRESTACIONES_DETALLE_ESTADO = objEstadoDetalle; objDetalle.MENSAJE_ERROR = ""; objDetalle.FECHA_ACTUALIZACION = DateTime.Now; objDetalle.VALOR_FICHA = null; objDetalle.CLIENTE = null; //objDetalle.VALOR_FECHA_MUESTRA = null; objDetalle.VALOR_FECHA_RECEPCION = null; objDetalle.PREVISION = null; objDetalle.GARANTIA1 = null; //objDetalle.VALOR_FECHA_ENTREGA_RESULTADOS = null; objDetalle.ESPECIE1 = null; objDetalle.RAZA1 = null; AgregarExamenVeterinario(context, objDetalle, item, "EXAMEN 1", "VALOR 1"); AgregarExamenVeterinario(context, objDetalle, item, "EXAMEN 2", "VALOR 2"); AgregarExamenVeterinario(context, objDetalle, item, "EXAMEN 3", "VALOR 3"); AgregarExamenVeterinario(context, objDetalle, item, "EXAMEN 4", "VALOR 4"); AgregarExamenVeterinario(context, objDetalle, item, "EXAMEN 5", "VALOR 5"); ValidarPrestacionVeterinaria(context, objDetalle); context.AddToCARGA_PRESTACIONES_VETERINARIAS_DETALLE(objDetalle); } } else { throw new Exception("Tipo de prestación no válido"); } context.SaveChanges(); return objEncabezado.ID; } } catch (Exception ex) { ISException.RegisterExcepcion(ex); Error = ex.Message; throw ex; } }