Esempio n. 1
0
        public static int ObtenerExisteArete(string corralCodigo, string arete, bool validarDeteccion)
        {
            int    retorno = 0;
            string areteDeteccion = string.Empty, areteMuerte = string.Empty;

            try
            {
                SeguridadInfo      seguridad = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;
                IList <AnimalInfo> animales  = null;
                int organizacionId           = seguridad.Usuario.Organizacion.OrganizacionID;

                var animalPl = new AnimalPL();
                var corralPl = new CorralPL();
                var lotePL   = new LotePL();

                AnimalInfo animal = null;
                CorralInfo corral = null;
                LoteInfo   lote   = null;

                corral = corralPl.ObtenerCorralPorCodigo(organizacionId, corralCodigo);
                corral.Organizacion = new OrganizacionInfo {
                    OrganizacionID = organizacionId
                };

                if (validarDeteccion)
                {
                    areteDeteccion = animalPl.obtenerExisteDeteccion(arete);
                }

                if (areteDeteccion == string.Empty)
                {
                    areteMuerte = animalPl.obtenerExisteMuerte(arete);
                    if (areteMuerte == string.Empty)
                    {
                        if (corral.TipoCorral.TipoCorralID != (int)TipoCorral.Recepcion &&
                            corral.TipoCorral.TipoCorralID != (int)TipoCorral.CorraletaSacrificio)
                        {
                            animales = animalPl.ObtenerAnimalesPorCorral(corral, organizacionId);
                            if (animales != null)
                            {
                                for (int i = 0; i < animales.Count; i++)
                                {
                                    if (arete == animales[i].Arete)
                                    {
                                        return(1);
                                    }
                                }
                            }
                            /* Validar Si el arete existe en el inventario  y es carga inicial */
                            var animalInventario = animalPl.ObtenerAnimalPorArete(arete, organizacionId);
                            if (animalInventario == null)
                            {
                                retorno = 0;
                            }
                        }
                        else if (corral.TipoCorral.TipoCorralID == (int)TipoCorral.CorraletaSacrificio)
                        {
                            animal = animalPl.ObtenerAnimalPorArete(arete, organizacionId);
                            if (animal != null)
                            {
                                if (animalPl.ObtenerExisteSalida(animal.AnimalID) > 0)
                                {
                                    retorno = 1;
                                }
                            }
                        }
                        else
                        {
                            var entrada = new EntradaGanadoPL();
                            lote = lotePL.ObtenerLotesActivos(organizacionId, corral.CorralID);

                            if (lote != null)
                            {
                                var datosEntrada = entrada.ObtenerEntradaPorLote(lote);

                                if (datosEntrada != null)
                                {
                                    if (datosEntrada.TipoOrganizacionOrigenId != (int)TipoOrganizacion.CompraDirecta)
                                    {
                                        int salida = corralPl.ObtenerExisteInterfaceSalida(organizacionId, corralCodigo, arete);
                                        if (salida > 0)
                                        {
                                            retorno = 1; // Existe arete en la interface
                                        }
                                        else
                                        {
                                            retorno = 0;//Valido, pero aqui va la validacion de interfaz salida
                                        }
                                    }
                                    else
                                    {
                                        /* Si es compra directa validar q el arete no exista en el inventario */
                                        var animalInventario = animalPl.ObtenerAnimalPorArete(arete, organizacionId);
                                        if (animalInventario != null)
                                        {
                                            retorno = 0;// el arete ya existe en el inventario
                                        }
                                        else
                                        {
                                            retorno = 1;//Valido, es compra directa y no existe en el inventario
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        retorno = 3;//Muerto
                    }
                }
                else
                {
                    retorno = 2;//Detectado
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
            return(retorno);
        }