/// <summary> /// Metodo para generar una deteccion generica /// </summary> /// <param name="entradaGanadoEnfermeria"></param> private int GenerarDeteccionAnimalGenerica(EntradaGanadoEnfermeriaInfo entradaGanadoEnfermeria) { try { Logger.Info(); var deteccionBl = new DeteccionBL(); int result = deteccionBl.GuardarDeteccionGenerica(entradaGanadoEnfermeria.Deteccion.DeteccionID); return(result); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Guardar entrada enfermeria /// </summary> internal EntradaGanadoEnfermeriaInfo GuardarEntradaEnfermeria(EntradaGanadoEnfermeriaInfo entradaGanadoEnfermeria) { entradaGanadoEnfermeria.Resultado = false; try { var resultadoCabezas = new CabezasActualizadasInfo(); var transactionOption = new TransactionOptions(); transactionOption.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; using (var transaction = new TransactionScope(TransactionScopeOption.Required, transactionOption)) { var animalDal = new AnimalDAL(); var animalMovimientoBL = new AnimalMovimientoBL(); var corralBL = new CorralBL(); var loteBL = new LoteBL(); bool actualizaAreteDeteccion = entradaGanadoEnfermeria.Deteccion.ActualizarAreteDeteccion; bool animalRecaido = entradaGanadoEnfermeria.AnimalRecaido; if (entradaGanadoEnfermeria.CambiarTipoGanado && entradaGanadoEnfermeria.Deteccion.Animal.AnimalID > 0 && entradaGanadoEnfermeria.Deteccion.Animal.TipoGanadoID != entradaGanadoEnfermeria.Animal.TipoGanadoID) { entradaGanadoEnfermeria.Animal.AnimalID = entradaGanadoEnfermeria.Deteccion.Animal.AnimalID; entradaGanadoEnfermeria.Animal.UsuarioModificacionID = entradaGanadoEnfermeria.UsuarioId; } if (entradaGanadoEnfermeria.Animal.AnimalID == 0) { entradaGanadoEnfermeria.Animal.AnimalID = entradaGanadoEnfermeria.Deteccion.Animal.AnimalID; entradaGanadoEnfermeria.Animal.AplicaBitacora = entradaGanadoEnfermeria.Deteccion.Animal.AplicaBitacora; } AnimalInfo animalInfo = animalDal.GuardarAnimal(entradaGanadoEnfermeria.Animal); if (actualizaAreteDeteccion) { //Si el flag esta activo se actualiza el arete en la deteccion de ganado cuando solo traen fotos var deteccionBl = new DeteccionBL(); deteccionBl.ActualizarDeteccionConFoto(entradaGanadoEnfermeria.Deteccion); } /* Si esta activo el flag de recaido generar la deteccion */ if (animalRecaido) { entradaGanadoEnfermeria.Deteccion.DeteccionID = GenerarDeteccionAnimalGenerica(entradaGanadoEnfermeria); } if (animalInfo != null && animalInfo.AnimalID > 0) { entradaGanadoEnfermeria.Animal = animalInfo; entradaGanadoEnfermeria.Movimiento.AnimalID = animalInfo.AnimalID; if (entradaGanadoEnfermeria.LoteDestino.LoteID == 0) { entradaGanadoEnfermeria.LoteDestino.LoteID = loteBL.GuardaLote(entradaGanadoEnfermeria.LoteDestino); entradaGanadoEnfermeria.Movimiento.LoteID = entradaGanadoEnfermeria.LoteDestino.LoteID; } //Se almacena el movimiento AnimalMovimientoInfo animalMovimientoInfo = animalMovimientoBL.GuardarAnimalMovimiento(entradaGanadoEnfermeria.Movimiento); if (animalMovimientoInfo != null && animalMovimientoInfo.AnimalMovimientoID > 0) { if (entradaGanadoEnfermeria.Tratamientos.Any(registro => registro.Seleccionado)) { var almacenpl = new AlmacenBL(); entradaGanadoEnfermeria.AlmacenMovimiento.AnimalMovimientoID = animalMovimientoInfo.AnimalMovimientoID; entradaGanadoEnfermeria.AlmacenMovimiento.AnimalID = animalInfo.AnimalID; almacenpl.GuardarDescontarTratamientos(entradaGanadoEnfermeria.Tratamientos, entradaGanadoEnfermeria.AlmacenMovimiento); } entradaGanadoEnfermeria.Deteccion.AnimalMovimiento = animalMovimientoInfo; GurdarDeteccion(entradaGanadoEnfermeria.Deteccion, entradaGanadoEnfermeria.ListaProblemas); /* Se desactiva la deteccion */ var deteccion = new DeteccionInfo { DeteccionID = entradaGanadoEnfermeria.Deteccion.DeteccionID, UsuarioCreacionID = entradaGanadoEnfermeria.UsuarioId, Arete = entradaGanadoEnfermeria.Animal.Arete }; EliminarDeteccion(deteccion); #region LOTE //Se decrementan las cabezas del lote if (entradaGanadoEnfermeria.LoteDestino.LoteID != entradaGanadoEnfermeria.LoteOrigen.LoteID) { entradaGanadoEnfermeria.LoteDestino = loteBL.ObtenerPorID(entradaGanadoEnfermeria.LoteDestino.LoteID); var animalBL = new AnimalBL(); List <AnimalInfo> animalesDestino = animalBL.ObtenerAnimalesPorLote(entradaGanadoEnfermeria.LoteOrigen.OrganizacionID, entradaGanadoEnfermeria.LoteDestino.LoteID); if (animalesDestino != null && animalesDestino.Any()) { entradaGanadoEnfermeria.LoteDestino.Cabezas = animalesDestino.Count; } //Una vez insertado el lote y el animal se incrementan las cabezas de lote entradaGanadoEnfermeria.LoteDestino.Cabezas = entradaGanadoEnfermeria.LoteDestino.Cabezas + 1; if (entradaGanadoEnfermeria.LoteDestino.Cabezas > entradaGanadoEnfermeria.LoteDestino.CabezasInicio) { entradaGanadoEnfermeria.LoteDestino.CabezasInicio = entradaGanadoEnfermeria.LoteDestino.CabezasInicio + 1; } entradaGanadoEnfermeria.LoteDestino.UsuarioModificacionID = entradaGanadoEnfermeria.Movimiento.UsuarioCreacionID; // ------ // entradaGanadoEnfermeria.LoteOrigen.Cabezas = entradaGanadoEnfermeria.LoteOrigen.Cabezas - 1; List <AnimalInfo> animales = animalBL.ObtenerAnimalesPorLote(entradaGanadoEnfermeria.LoteOrigen.OrganizacionID, entradaGanadoEnfermeria.LoteOrigen.LoteID); if (animales != null && animales.Any()) { entradaGanadoEnfermeria.LoteOrigen.Cabezas = animales.Count; } //Se actualizan las cabezas que tiene el lote var filtro = new FiltroActualizarCabezasLote { CabezasProcesadas = 1, LoteIDDestino = entradaGanadoEnfermeria.LoteDestino.LoteID, LoteIDOrigen = entradaGanadoEnfermeria.LoteOrigen.LoteID, UsuarioModificacionID = entradaGanadoEnfermeria.Movimiento.UsuarioCreacionID }; resultadoCabezas = loteBL.ActualizarCabezasProcesadas(filtro); } #endregion LOTE //Si ya no tenemos cabezas en el lote se actualizanb los pesos llegada if (resultadoCabezas.CabezasOrigen <= 0) { //Se obtiene el Corral para ver Si es de Recepcion CorralInfo corralInfo = corralBL.ObtenerCorralPorCodigo(entradaGanadoEnfermeria.LoteOrigen.OrganizacionID, entradaGanadoEnfermeria.LoteOrigen.Corral.Codigo); if (corralInfo.GrupoCorral == (int)GrupoCorralEnum.Recepcion) { /* Si el corral es de Recepcion */ var corteGanadoPl = new CorteGanadoBL(); corteGanadoPl.ObtenerPesosOrigenLlegada(entradaGanadoEnfermeria.LoteOrigen.OrganizacionID, entradaGanadoEnfermeria.LoteOrigen.CorralID, entradaGanadoEnfermeria.LoteOrigen.LoteID); } } transaction.Complete(); entradaGanadoEnfermeria.Resultado = true; } } } } catch (ExcepcionGenerica ex) { Logger.Error(ex); entradaGanadoEnfermeria.Resultado = false; } catch (Exception ex) { Logger.Error(ex); entradaGanadoEnfermeria.Resultado = false; throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(entradaGanadoEnfermeria); }