public void MarcarSiniestroComoProcesado(Dominio.Entidades.TableroSiniestro Siniestro)
        {
            ITableroSiniestroRepositorio            repositorioTableroSiniestro            = IoC.GetObjectRepositorio <ITableroSiniestroRepositorio>();
            ITableroSiniestroObservacionRepositorio repositorioTableroSiniestroObservacion = IoC.GetObjectRepositorio <ITableroSiniestroObservacionRepositorio>();

            // Busco el siniestro
            TableroSiniestro _siniestro = repositorioTableroSiniestro.GetOne(s => s.TableroSiniestroID == Siniestro.TableroSiniestroID);

            // TableroSiniestro _siniestroAnterior = repositorioTableroSiniestro.GetOne(s => s.NroPreCaso == Siniestro.NroPreCaso);


            // Reviso si el siniestro no ha sido marcado como procesado
            if (_siniestro == null)
            {
                throw new DatosInvalidosException("No se encontraron datos del siniestro");
            }
            else if (_siniestro.EstadoID == (Int32)NegociosSisPackInterface.SisPack.TableroSiniestroEstadoEnum.Solucionado)
            {
                throw new DatosInvalidosException("El siniestro ya ha sido cerrado");
            }
            //else if (_siniestroAnterior != null)
            //{
            //    throw new DatosInvalidosException("Ya existe un siniestro con el numero de precaso ingresado");
            //}

            // Marco el siniestro como solucionado
            _siniestro.EstadoID    = (Int32)NegociosSisPackInterface.SisPack.TableroSiniestroEstadoEnum.Solucionado;
            _siniestro.Observacion = Siniestro.Observacion;
            _siniestro.NroPreCaso  = Siniestro.NroPreCaso;
            repositorioTableroSiniestro.Update(_siniestro);
        }
        public Dominio.Entidades.TableroSiniestro MarcarSiniestroEnTratamiento(Int32 GuiaID, List <Dominio.Entidades.ObservacionGuia> Observaciones, Int32 UsuarioID)
        {
            ITableroSiniestroRepositorio            repositorioTableroSiniestro            = IoC.GetObjectRepositorio <ITableroSiniestroRepositorio>();
            ITableroSiniestroObservacionRepositorio repositorioTableroSiniestroObservacion = IoC.GetObjectRepositorio <ITableroSiniestroObservacionRepositorio>();

            // Reviso si se puede procesar el siniestro
            foreach (Dominio.Entidades.ObservacionGuia o in Observaciones)
            {
                if (repositorioTableroSiniestroObservacion.GetOne(tso => tso.ObservacionID == o.ObservacionID && tso.Fecha == o.Fecha && o.GuiaID == o.GuiaID) != null)
                {
                    throw new DatosInvalidosException("El siniestro está siendo tratado por otro usuario");
                }
            }

            // Proceso las guías
            using (System.Transactions.TransactionScope Transaccion = new TransactionScope())
            {
                TableroSiniestro _siniestro = repositorioTableroSiniestro.Insert(new TableroSiniestro()
                {
                    GuiaID      = GuiaID,
                    EstadoID    = (Int32)NegociosSisPackInterface.SisPack.TableroSiniestroEstadoEnum.EnTratamiento,
                    UsuarioID   = UsuarioID,
                    Observacion = ""
                });

                foreach (Dominio.Entidades.ObservacionGuia o in Observaciones)
                {
                    repositorioTableroSiniestroObservacion.Insert(new TableroSiniestroObservacion()
                    {
                        TableroSiniestroID = _siniestro.TableroSiniestroID,
                        ObservacionID      = o.ObservacionID,
                        Fecha = o.Fecha
                    });
                }

                Transaccion.Complete();

                return(_siniestro);
            }
        }
        public List <TableroSiniestro> GetTableroSiniestros()
        {
            List <TableroSiniestroResult> lst        = IoC.GetObjectRepositorio <ITableroSiniestroRepositorio>().GetTableroSiniestro();
            List <TableroSiniestro>       lstTablero = new List <TableroSiniestro>();
            TableroSiniestro auxTablero;

            foreach (TableroSiniestroResult item in lst)
            {
                auxTablero = lstTablero.Where(t => t.TableroSiniestroID == (item.TableroSiniestroID ?? 0) && t.GuiaID == item.GuiaID && t.TableroSiniestroPrioridadID == item.TableroSiniestroPrioridadID).FirstOrDefault();

                if (auxTablero == null)
                {
                    auxTablero = new TableroSiniestro()
                    {
                        TableroSiniestroID = item.TableroSiniestroID ?? 0,
                        GuiaID             = item.GuiaID,
                        Guia = new Dominio.Entidades.Guia()
                        {
                            TipoGuia        = item.TipoGuia,
                            NroSucursalGuia = item.NroSucursalGuia,
                            NroGuia         = item.NroGuia,
                            Observaciones   = item.EstaRendida,//Si esta rendidda o no

                            Agencia = new Agencia()
                            {
                                RazonSocial = item.AgenciaRinde ?? "", //la agencia en la cual rindieron la HR
                                Email       = item.Entregada           //Es para no agregar otro atributo. Verificar si esta bien.
                            },
                        },

                        EstadoID  = item.EstadoID,
                        UsuarioID = item.UsuarioID,
                        Usuario   = new Usuario()
                        {
                            Login = item.Usuario ?? ""
                        },
                        Cliente                = item.Cliente,
                        Observacion            = "",
                        TableroSiniestroEstado = new TableroSiniestroEstado()
                        {
                            Estado = item.Estado
                        },
                        TableroSiniestroPrioridadID = item.TableroSiniestroPrioridadID
                    };

                    lstTablero.Add(auxTablero);
                }

                auxTablero.TableroSiniestroObservaciones.Add(new TableroSiniestroObservacion()
                {
                    TableroSiniestroObservacionID = item.TableroSiniestroObservacionID ?? 0,
                    TableroSiniestroID            = item.TableroSiniestroID,
                    ObservacionID = item.ObservacionID,
                    Fecha         = item.Fecha,
                    Observacion   = new Observacion()
                    {
                        ObsDescrip = item.Observacion,
                        ConfiguracionTableroSiniestro = new TableroSiniestroConfiguracion()
                        {
                            TableroSiniestroPrioridadID = item.TableroSiniestroPrioridadID
                        }
                    },
                    ObservacionGuia = new ObservacionGuia()
                    {
                        UsuarioID = item.UsuarioID ?? 0,
                        Usuario   = new Usuario()
                        {
                            Agencia = new Agencia()
                            {
                                RazonSocial = item.Agencia,
                                Nombre      = item.EstaRendida
                            }
                        }
                    }
                });
            }

            return(lstTablero.OrderBy(t => t.EstadoID).ToList());
        }