Exemple #1
0
        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();
            }
        }