private void AgregarIngresosAnterioresSistema()
 {
     try
     {
         if (emiActual != null)
         {
             if (LstIAS != null)
             {
                 foreach (var ias in LstIAS)
                 {
                     if (ias.Seleccione != null)
                     {
                         if (ias.Seleccione.Value)
                         {
                             if (LstIngresosAnteriores == null)
                             {
                                 LstIngresosAnteriores = new ObservableCollection <EMI_INGRESO_ANTERIOR>();
                             }
                             ///TODO: cambios delito
                             LstIngresosAnteriores.Add(new EMI_INGRESO_ANTERIOR()
                             {
                                 ID_TIPO           = 2,
                                 ID_EMISOR         = ias.Emisor.ID_EMISOR,
                                 PERIODO_RECLUSION = ias.PerioroReclusion,
                                 SANCIONES         = ias.Sanciones,
                                 ID_DELITO         = ias.Delito.ID_DELITO,
                                 ID_FUERO          = ias.Delito.ID_FUERO,
                                 EMISOR            = ias.Emisor,
                                 //DELITO = ias.Delito,
                                 ID_CENTRO   = ias.IdCentro,
                                 ID_ANIO     = ias.IdAnio,
                                 ID_IMPUTADO = ias.IdImputado,
                                 ID_INGRESO  = ias.IdIngreso
                             });
                         }
                     }
                 }
             }
             if (LstIngresosAnteriores != null)
             {
                 if (LstIngresosAnteriores.Count > 0)
                 {
                     EmptyIngresosAnteriores = false;
                 }
                 else
                 {
                     EmptyIngresosAnteriores = true;
                 }
             }
             else
             {
                 EmptyIngresosAnteriores = true;
             }
         }
     }
     catch (Exception ex)
     {
         StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error agregar ingreso anterior sistema", ex);
     }
 }
        //MAYORES
        private void AgregarIngresoAnterior()
        {
            try
            {
                if (LstIngresosAnteriores == null)
                {
                    LstIngresosAnteriores = new ObservableCollection <EMI_INGRESO_ANTERIOR>();
                }

                if (SelectedIngresoAnterior == null)//agregamos un nuevo ingreso
                {
                    LstIngresosAnteriores.Add(new EMI_INGRESO_ANTERIOR()
                    {///TODO: cambios delito
                        ID_TIPO           = 2,
                        ID_EMISOR         = selectedEmisorIngreso.ID_EMISOR,
                        PERIODO_RECLUSION = PeriodoReclusionIngreso,
                        SANCIONES         = SancionesIngreso,
                        ID_DELITO         = SelectedDelitoIngreso != null ? SelectedDelitoIngreso.ID_DELITO : new long?(),
                        ID_FUERO          = SelectedDelitoIngreso != null ? SelectedDelitoIngreso.ID_FUERO : string.Empty,
                        EMISOR            = SelectedEmisorIngreso,
                        DELITO            = DelitoDescripcion
                                            //DELITO = SelectedDelitoIngreso
                    });
                }
                else//editamos un ingreso
                {///TODO: cambios delito
                    SelectedIngresoAnterior.ID_EMISOR         = selectedEmisorIngreso.ID_EMISOR;
                    SelectedIngresoAnterior.PERIODO_RECLUSION = PeriodoReclusionIngreso;
                    SelectedIngresoAnterior.SANCIONES         = SancionesIngreso;
                    SelectedIngresoAnterior.ID_DELITO         = SelectedDelitoIngreso != null ? SelectedDelitoIngreso.ID_DELITO : new long?();
                    SelectedIngresoAnterior.ID_FUERO          = SelectedDelitoIngreso != null ? SelectedDelitoIngreso.ID_FUERO : string.Empty;
                    SelectedIngresoAnterior.EMISOR            = SelectedEmisorIngreso;
                    SelectedIngresoAnterior.DELITO            = DelitoDescripcion;
                    //SelectedIngresoAnterior.DELITO = SelectedDelitoIngreso;
                    LstIngresosAnteriores = new ObservableCollection <EMI_INGRESO_ANTERIOR>(LstIngresosAnteriores);
                }
                //LIMPIAMOS LOS CAMPOS
                EmptyIngresosAnteriores = true;
                LimpiarIngresoanterior();
                if (LstIngresosAnteriores.Count > 0)
                {
                    EmptyIngresosAnteriores = false;
                }
                else
                {
                    EmptyIngresosAnteriores = true;
                }
            }
            catch (Exception ex)
            {
                StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error al agregar ingreso anterior", ex);
            }
        }
 private void EliminarIngresoAnterior()
 {
     try
     {
         if (SelectedIngresoAnterior != null)
         {
             LstIngresosAnteriores.Remove(SelectedIngresoAnterior);
             if (LstIngresosAnteriores.Count > 0)
             {
                 EmptyIngresosAnteriores = false;
             }
             else
             {
                 EmptyIngresosAnteriores = true;
             }
         }
     }
     catch (Exception ex)
     {
         StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error al eliminar ingreso anterior", ex);
     }
 }
        private void GuardarIngresoAnterior()
        {
            try
            {
                if (emiActual != null)
                {
                    if (LstIngresosAnteriores != null)
                    {
                        //short index = 1;
                        //var ingresos = new List<EMI_INGRESO_ANTERIOR>();
                        //foreach (var ingreso in LstIngresosAnteriores)
                        //{
                        //    ingresos.Add(new EMI_INGRESO_ANTERIOR()
                        //    {
                        //        ID_EMI = emiActual.ID_EMI,
                        //        ID_EMI_CONS = emiActual.ID_EMI_CONS,
                        //        ID_TIPO = ingreso.ID_TIPO,
                        //        ID_CONSEC = index,
                        //        ID_EMISOR = ingreso.ID_EMISOR,
                        //        PERIODO_RECLUSION = ingreso.PERIODO_RECLUSION,
                        //        SANCIONES = ingreso.SANCIONES,
                        //        ID_FUERO = ingreso.ID_FUERO,
                        //        ID_DELITO = ingreso.ID_DELITO,
                        //        ID_CENTRO = ingreso.ID_CENTRO,
                        //        ID_ANIO = ingreso.ID_ANIO,
                        //        DELITO = ingreso.DELITO,
                        //        ID_IMPUTADO = ingreso.ID_IMPUTADO,
                        //        ID_INGRESO = ingreso.ID_INGRESO
                        //    });
                        //    index++;
                        //}
                        var ingresos = new List <EMI_INGRESO_ANTERIOR>(LstIngresosAnteriores == null ? null : LstIngresosAnteriores.Select((w, i) => new EMI_INGRESO_ANTERIOR()
                        {
                            ID_EMI            = emiActual.ID_EMI,
                            ID_EMI_CONS       = emiActual.ID_EMI_CONS,
                            ID_TIPO           = w.ID_TIPO,
                            ID_CONSEC         = Convert.ToInt16(i + 1),
                            ID_EMISOR         = w.ID_EMISOR,
                            PERIODO_RECLUSION = w.PERIODO_RECLUSION,
                            SANCIONES         = w.SANCIONES,
                            ID_FUERO          = w.ID_FUERO,
                            ID_DELITO         = w.ID_DELITO,
                            ID_CENTRO         = w.ID_CENTRO,
                            ID_ANIO           = w.ID_ANIO,
                            DELITO            = w.DELITO,
                            ID_IMPUTADO       = w.ID_IMPUTADO,
                            ID_INGRESO        = w.ID_INGRESO
                        }));

                        if (emiActual.EMI_INGRESO_ANTERIOR.Count(w => w.ID_TIPO == 2) > 0)
                        {
                            if (!PEditar)
                            {
                                StaticSourcesViewModel.Mensaje("Validación", "Su usuario no cuenta con permisos para realizar esta acción.", StaticSourcesViewModel.enumTipoMensaje.MESNAJE_ADVERTENCIA, 5);
                                return;
                            }
                        }
                        else
                        {
                            if (!PInsertar)
                            {
                                StaticSourcesViewModel.Mensaje("Validación", "Su usuario no cuenta con permisos para realizar esta acción.", StaticSourcesViewModel.enumTipoMensaje.MESNAJE_ADVERTENCIA, 5);
                                return;
                            }
                        }

                        if (new cEMIIngresosAnteriores().Insertar(emiActual.ID_EMI, emiActual.ID_EMI_CONS, 2, ingresos))
                        {
                            IngresoAnteriorMenorEnabled = true;
                            LstIngresosAnteriores       = new ObservableCollection <EMI_INGRESO_ANTERIOR>(new cEMIIngresosAnteriores().Obtener(emiActual.ID_EMI, emiActual.ID_EMI_CONS, 2));
                            Mensaje(true, "Ingresos Anteriores CE.RE.SO.");
                        }
                        else
                        {
                            Mensaje(false, "Ingresos Anteriores CE.RE.SO.");
                        }
                    }
                }
                else
                {
                    AvisoImputadoVacio();
                }
            }
            catch (Exception ex)
            {
                StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error al guardar ingreso anterior", ex);
            }
        }
        //private void PopulateIngresosAnteriores2()
        //{
        //    if (emiActual != null)
        //    {
        //        LstIngresosAnteriores = new ObservableCollection<EMI_INGRESO_ANTERIOR>(new cEMIIngresosAnteriores().Obtener(emiActual.ID_EMI, emiActual.ID_EMI_CONS, 2));
        //        if (LstIngresosAnteriores != null)
        //        {
        //            if (LstIngresosAnteriores.Count > 0)
        //                EmptyIngresosAnteriores = false;
        //            else
        //                EmptyIngresosAnteriores = true;
        //        }
        //        else
        //        {
        //            EmptyIngresosAnteriores = true;
        //        }
        //    }
        //    else
        //    {
        //        LstIngresosAnteriores = new ObservableCollection<EMI_INGRESO_ANTERIOR>();
        //        EmptyIngresosAnteriores = true;
        //    }
        //}

        private void PopulateIngresosAnterioresSistema()
        {
            try
            {
                LstIAS = new ObservableCollection <Clases.IngresoAinterior>();
                int?anios, meses, dias;
                if (emiActual != null)
                {
                    if (LstEmisor == null)
                    {
                        LstEmisor = new ObservableCollection <EMISOR>(new cEmisor().Obtener());
                    }
                    if (LstDelitosCP == null)
                    {
                        LstDelitosCP = new ObservableCollection <DELITO>(new cDelito().ObtenerTodos());
                    }
                    //if (emiActual.INGRESO != null)
                    //if (SelectIngreso != null)
                    //if (emiActual.INGRESO.IMPUTADO != null)
                    //if (SelectIngreso.IMPUTADO != null)
                    //if (emiActual.INGRESO.IMPUTADO.INGRESO != null)
                    if (SelectIngreso != null)
                    {
                        //var anteriores = emiActual.INGRESO.IMPUTADO.INGRESO.Where(w => w.ID_INGRESO < emiActual.INGRESO.ID_INGRESO);
                        var anteriores = SelectIngreso.IMPUTADO.INGRESO.Where(w => w.ID_INGRESO < SelectIngreso.ID_INGRESO);
                        if (anteriores != null)
                        {
                            foreach (var ing in anteriores)
                            {
                                if (LstIngresosAnteriores.Where(w => w.ID_CENTRO == ing.ID_CENTRO && w.ID_ANIO == ing.ID_ANIO && w.ID_IMPUTADO == ing.ID_IMPUTADO && w.ID_INGRESO == ing.ID_INGRESO).Count() == 0)
                                {
                                    anios = meses = dias = 0;
                                    var obj = new IngresoAinterior();
                                    obj.Seleccione = false;
                                    obj.IdCentro   = ing.ID_CENTRO;
                                    obj.IdAnio     = ing.ID_ANIO;
                                    obj.IdImputado = ing.ID_IMPUTADO;
                                    obj.IdIngreso  = ing.ID_INGRESO;
                                    ////EMISOR
                                    obj.Emisor = ing.CENTRO.EMISOR;
                                    //DELITO
                                    if (ing.CAUSA_PENAL != null)
                                    {
                                        var cp = ing.CAUSA_PENAL.Where(w => w.ID_ESTATUS_CP == 4).FirstOrDefault();        //estatus concluido
                                        if (cp != null)
                                        {
                                            if (cp.CAUSA_PENAL_DELITO != null)
                                            {
                                                if (cp.CAUSA_PENAL_DELITO.Count > 0)
                                                {
                                                    var del = cp.CAUSA_PENAL_DELITO.FirstOrDefault();
                                                    if (del != null)
                                                    {
                                                        obj.Delito = LstDelitosCP.Where(w => w.ID_FUERO == del.ID_FUERO && w.ID_DELITO == del.ID_DELITO).FirstOrDefault();
                                                    }
                                                }
                                            }
                                        }

                                        //OBTENEMOS LA SENTENCIA
                                        foreach (var x in ing.CAUSA_PENAL)
                                        {
                                            foreach (var y in x.SENTENCIA)
                                            {
                                                anios = anios + y.ANIOS;
                                                meses = meses + y.MESES;
                                                dias  = dias + y.DIAS;
                                            }
                                        }
                                    }
                                    while (dias > 30)
                                    {
                                        meses++;
                                        dias = dias - 30;
                                    }
                                    while (meses > 12)
                                    {
                                        anios++;
                                        meses = meses - 12;
                                    }
                                    //CARGAMOS LOS INRSOS ANTERIORES
                                    var periodo = string.Empty;
                                    if (anios > 0)
                                    {
                                        periodo = string.Format("{0} AÑOS ", anios);
                                    }
                                    if (meses > 0)
                                    {
                                        periodo = string.Format("{0}{1} MESES ", periodo, meses);
                                    }
                                    if (dias > 0)
                                    {
                                        periodo = string.Format("{0}{1} DIAS ", periodo, dias);
                                    }
                                    obj.PerioroReclusion = periodo;
                                    LstIAS.Add(obj);
                                }
                            }
                        }
                    }
                }
                if (LstIAS.Count > 0)
                {
                    EmptyIAS = false;
                }
                else
                {
                    EmptyIAS = true;
                }
            }
            catch (Exception ex)
            {
                StaticSourcesViewModel.ShowMessageError("Algo pasó...", "Ocurrió un error al establecer el ingreso anterior sistema", ex);
            }
        }