Ejemplo n.º 1
0
        /// <summary>
        /// Obteneri dias de engorda 70
        /// </summary>
        /// <param name="lote"></param>
        /// <returns></returns>
        internal int ObtnerDiasEngorda70(LoteInfo lote)
        {
            try
            {
                Logger.Info();

                var loteBL = new LoteBL();

                LoteInfo loteAnterior = loteBL.ObtenerLoteAnteriorAnimal(lote.LoteID);

                var animalBL     = new AnimalBL();
                var animalesLote = animalBL.ObtenerAnimalesPorLote(lote.OrganizacionID,
                                                                   lote.LoteID);

                if (animalesLote == null)
                {
                    return(0);
                }

                var    count = animalesLote.Count;
                double temp  = 0D;
                for (int i = 0; i < count; i++)
                {
                    temp += animalesLote[i].FechaEntrada.Ticks / (double)count;
                }
                var average = new DateTime((long)temp);

                var diferenciaFechas = DateTime.Now - average;

                int diasEngordaLote = Convert.ToInt32(diferenciaFechas.TotalDays);
                //Si los dias de engorda son mayor de 115, automaticamente se dejan 101 dias de Engorda en Grano
                if (diasEngordaLote > 115)
                {
                    return(101);
                }

                var loteFiltro = new LoteInfo
                {
                    LoteID         = 0,
                    OrganizacionID = lote.OrganizacionID
                };

                List <DiasEngordaGranoModel> diasEngorda = loteBL.ObtenerDiasEngordaGrano(loteFiltro); //Obtiene todos los Lotes



                //var repartoDal = new RepartoDAL();
                //var repartoDetalle = repartoDal.ObtenerDetalleRepartoPorLote(lote);
                int diasEngorda70 = 0;

                if (loteAnterior != null && loteAnterior.LoteID > 0)
                {
                    DiasEngordaGranoModel diasEngordaLoteAnterior =
                        diasEngorda.FirstOrDefault(dias => dias.LoteID == loteAnterior.LoteID);
                    if (diasEngordaLoteAnterior != null)
                    {
                        diasEngorda70 += diasEngordaLoteAnterior.DiasGrano;
                    }
                }

                DiasEngordaGranoModel diasEngordaLoteActual =
                    diasEngorda.FirstOrDefault(dias => dias.LoteID == lote.LoteID);
                if (diasEngordaLoteActual != null)
                {
                    diasEngorda70 += diasEngordaLoteActual.DiasGrano;
                }

                //if (repartoDetalle != null)
                //{
                //    var fechaActual = DateTime.Now;


                //    var listaVespertino = repartoDetalle.Where(repartoDetalleInfo => repartoDetalleInfo.TipoServicioID == (int)TipoServicioEnum.Vespertino).ToList();
                //    var listaMatutino = repartoDetalle.Where(repartoDetalleInfo => repartoDetalleInfo.TipoServicioID == (int) TipoServicioEnum.Matutino).ToList();
                //    var diasFormula = listaMatutino.Sum(detalleMatutino => listaVespertino.Count(detalleVespertino => detalleMatutino.RepartoID == detalleVespertino.RepartoID && detalleMatutino.FormulaIDServida == detalleVespertino.FormulaIDServida));

                //    var diferenciaFechasDiasEngorda = fechaActual - lote.FechaInicio;
                //    var diasEngorda = diferenciaFechasDiasEngorda.Days;

                //    if (diasEngorda > 0 && diasFormula > 0)
                //    {
                //        diasEngorda70 = (int) (((float)diasFormula / (float)diasEngorda) * 100);
                //    }

                //}
                return(diasEngorda70);
            }
            catch (ExcepcionGenerica ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }