private static void GenerarPolizasMuerte() { if (!enEjecucion) { var thread = new Thread(delegate() { try { enEjecucion = true; var fecha = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); var animalHistoricoBL = new AnimalMovimientoHistoricoBL(); IEnumerable <AnimalMovimientoInfo> animalesMovimiento = animalHistoricoBL.ObtenerMovimientosMuertes(fecha); if (animalesMovimiento != null && animalesMovimiento.Any()) { logger.WriteEntry("INICIA A LA EJECUCION DE LA MUERTE", EventLogEntryType.Information); List <AnimalInfo> animales = animalesMovimiento.Select(x => new AnimalInfo { AnimalID = x.AnimalID, OrganizacionIDEntrada = x.OrganizacionID }).ToList(); var animalCostoBL = new AnimalCostoBL(); List <AnimalCostoInfo> animalCosto = animalCostoBL.ObtenerCostosAnimal(animales); if (animalCosto != null && animalCosto.Any()) { logger.WriteEntry(string.Format("PROCESARA {0} MUERTES", animalCosto.Count), EventLogEntryType.Information); List <long> animalesId = animalCosto.Where(costo => costo.CostoID == 1).Select( x => x.AnimalID).Distinct().ToList (); int organizacionID = animalesMovimiento.ElementAt(0).OrganizacionID; animalCosto.ForEach( org => org.OrganizacionID = organizacionID); var poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza( TipoPoliza.SalidaMuerte); var polizaBL = new PolizaPL(); IList <PolizaInfo> polizaGuardada; IList <PolizaInfo> polizaSalidaMuerte; List <AnimalCostoInfo> costosPorAnimal; for (var indexAnimales = 0; indexAnimales < animalesId.Count; indexAnimales++) { polizaGuardada = polizaBL.ObtenerPoliza(TipoPoliza.SalidaMuerte, organizacionID, fecha, animalesId[indexAnimales]. ToString(), "SM", 1); if (polizaGuardada == null || !polizaGuardada.Any()) { costosPorAnimal = animalCosto.Where( id => id.AnimalID == animalesId[indexAnimales]). ToList(); polizaSalidaMuerte = poliza.GeneraPoliza(costosPorAnimal); if (polizaSalidaMuerte != null && polizaSalidaMuerte.Any()) { polizaSalidaMuerte.ToList().ForEach(datos => { datos . UsuarioCreacionID = 0; datos . OrganizacionID = organizacionID; }); polizaBL.GuardarPolizaEntradaGanado( polizaSalidaMuerte, TipoPoliza.SalidaMuerte); logger.WriteEntry( string.Format( "ESCRIBIO POLIZA DE MUERTE {0}", animalesId[indexAnimales]), EventLogEntryType.Information); } } } logger.WriteEntry("FINALIZA A LA EJECUCION DE LA MUERTE", EventLogEntryType.Information); enEjecucion = false; } else { enEjecucion = false; } } else { enEjecucion = false; } } catch (Exception) { logger.WriteEntry("ERROR AL QUERER ESCRIBIR POLIZA DE MUERTE", EventLogEntryType.Error); } }); thread.SetApartmentState(ApartmentState.STA); thread.Start(); thread.Join(); } }