private void CargaInicial_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         var migracionBL = new MigracionBL();
         MigracionCifrasControlInfo cifras = migracionBL.CrearCargaInicialAnimales(Contexto.Organizacion.OrganizacionID);
         if (cifras != null)
         {
             if (cifrasControl != null)
             {
                 cifrasControl.Add(cifras);
             }
             else
             {
                 cifrasControl = new List <MigracionCifrasControlInfo> {
                     cifras
                 };
             }
             gridDatos.ItemsSource = null;
             gridDatos.ItemsSource = cifrasControl;
             HabilitarControlesMigracion(4);
             SkMessageBox.Show(System.Windows.Application.Current.Windows[ConstantesVista.WindowPrincipal],
                               Properties.Resources.MigracionInventarioSIAP_OKCargaInicial,
                               MessageBoxButton.OK, MessageImage.Correct);
         }
     }
     catch (Exception ex)
     {
         SkMessageBox.Show(
             System.Windows.Application.Current.Windows[ConstantesVista.WindowPrincipal],
             Properties.Resources.MigracionInventarioSIAP_ErrorCargaInicial, MessageBoxButton.OK, MessageImage.Error);
         Logger.Error(ex);
     }
 }
        private void Migrar_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                MessageBoxResult result =
                    SkMessageBox.Show(System.Windows.Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.MigracionInventarioSIAP_SeguroMigrar, MessageBoxButton.YesNo,
                                      MessageImage.Question);
                if (result == MessageBoxResult.Yes)
                {
                    var migracionBL = new MigracionBL();
                    MigracionCifrasControlInfo cifras = migracionBL.GuardarAnimalesSIAP(Contexto.Organizacion.OrganizacionID);
                    if (cifras != null)
                    {
                        if (cifrasControl != null)
                        {
                            cifrasControl.Add(cifras);
                        }
                        else
                        {
                            cifrasControl = new List <MigracionCifrasControlInfo> {
                                cifras
                            };
                        }

                        gridDatos.ItemsSource = null;
                        gridDatos.ItemsSource = cifrasControl;
                        HabilitarControlesMigracion(5);
                        SkMessageBox.Show(System.Windows.Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                          Properties.Resources.MigracionInventarioSIAP_OKMigracion,
                                          MessageBoxButton.OK, MessageImage.Correct);
                    }
                }
            }
            catch (Exception ex)
            {
                SkMessageBox.Show(
                    System.Windows.Application.Current.Windows[ConstantesVista.WindowPrincipal],
                    Properties.Resources.MigracionInventarioSIAP_ErrorMigracion, MessageBoxButton.OK, MessageImage.Error);
                Logger.Error(ex);
            }
        }
        private void CargarArchivoImportar()
        {
            try
            {
                var archivoCarga = new FileInfo(Contexto.Ruta);
                listaResumen = new List <ResumenInfo>();
                // Open and read the XlSX file.
                using (var excel = new ExcelPackage(archivoCarga))
                {
                    ExcelWorkbook libro = excel.Workbook;
                    if (libro == null || libro.Worksheets.Count == 0)
                    {
                        SkMessageBox.Show(System.Windows.Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                          Properties.Resources.CargaMPPA_ArchivoSinDatos, MessageBoxButton.OK, MessageImage.Warning);
                        return;
                    }
                    // Get the first worksheet
                    ExcelWorksheet hojaExcel = libro.Worksheets.First();

                    if (!hojaExcel.Name.ToUpper().Equals(Properties.Resources.MigracionInventarioSIAP_NombreHoja.ToUpper(),
                                                         StringComparison.InvariantCultureIgnoreCase))
                    {
                        SkMessageBox.Show(System.Windows.Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                          Properties.Resources.MigracionInventarioSIAP_NombreIncorrectoHoja, MessageBoxButton.OK, MessageImage.Warning);
                        return;
                    }

                    if (!ValidarEncabezado(hojaExcel))
                    {
                        return;
                    }
                    for (int renglon = RenglonEncabezados + 1; renglon <= hojaExcel.Dimension.End.Row; renglon++)
                    {
                        var carga = new ResumenInfo();

                        object columnaVacia = hojaExcel.Cells[renglon, 1].Value;
                        if (columnaVacia == null || string.IsNullOrWhiteSpace(columnaVacia.ToString()))
                        {
                            continue;
                        }

                        #region AsignarPropiedades

                        var propiedades = carga.GetType().GetProperties();
                        foreach (var propInfo in propiedades)
                        {
                            dynamic customAttributes = carga.GetType().GetProperty(propInfo.Name).GetCustomAttributes(typeof(AtributoCargaMPPA), true);
                            if (customAttributes.Length > 0)
                            {
                                for (var indexAtributos = 0; indexAtributos < customAttributes.Length; indexAtributos++)
                                {
                                    var      atributos    = (AtributoCargaMPPA)customAttributes[indexAtributos];
                                    int      celdaArchivo = atributos.Celda;
                                    TypeCode tipoDato     = atributos.TipoDato;
                                    bool     aceptaVacio  = atributos.AceptaVacio;

                                    object dato = hojaExcel.Cells[renglon, celdaArchivo].Value;

                                    switch (tipoDato)
                                    {
                                    case TypeCode.String:
                                        string valorString;
                                        valorString = dato == null ? "" : dato.ToString();
                                        if (valorString == "")
                                        {
                                            if (aceptaVacio)
                                            {
                                                propInfo.SetValue(carga, "", null);
                                            }
                                            else
                                            {
                                                carga.MensajeAlerta =
                                                    string.Format(Properties.Resources.CargaMPPA_ErrorColumna,
                                                                  renglon, propInfo.Name);
                                                break;
                                            }
                                        }
                                        propInfo.SetValue(carga, valorString, null);
                                        break;

                                    case TypeCode.Int32:
                                        int valorInt;
                                        int.TryParse(dato == null ? "" : dato.ToString(), out valorInt);
                                        if (valorInt == 0)
                                        {
                                            if (aceptaVacio)
                                            {
                                                propInfo.SetValue(carga, 0, null);
                                            }
                                            else
                                            {
                                                carga.MensajeAlerta =
                                                    string.Format(Properties.Resources.CargaMPPA_ErrorColumna,
                                                                  renglon, propInfo.Name);
                                                break;
                                            }
                                        }
                                        propInfo.SetValue(carga, valorInt, null);
                                        break;

                                    case TypeCode.Decimal:
                                        decimal valorDecimal;
                                        decimal.TryParse(dato == null ? "" : dato.ToString(), out valorDecimal);
                                        if (valorDecimal == 0)
                                        {
                                            if (aceptaVacio)
                                            {
                                                propInfo.SetValue(carga, 0, null);
                                            }
                                            else
                                            {
                                                carga.MensajeAlerta =
                                                    string.Format(Properties.Resources.CargaMPPA_ErrorColumna,
                                                                  renglon, propInfo.Name);
                                                break;
                                            }
                                        }
                                        propInfo.SetValue(carga, valorDecimal, null);
                                        break;

                                    case TypeCode.Double:
                                        Double valorDouble;
                                        Double.TryParse(dato == null ? "" : dato.ToString(), out valorDouble);
                                        if (valorDouble == 0)
                                        {
                                            if (aceptaVacio)
                                            {
                                                propInfo.SetValue(carga, 0, null);
                                            }
                                            else
                                            {
                                                carga.MensajeAlerta =
                                                    string.Format(Properties.Resources.CargaMPPA_ErrorColumna,
                                                                  renglon, propInfo.Name);
                                                break;
                                            }
                                        }
                                        propInfo.SetValue(carga, valorDouble, null);
                                        break;

                                    case TypeCode.DateTime:
                                        DateTime valorFecha;
                                        DateTime.TryParse(dato == null ? "" : dato.ToString(), out valorFecha);
                                        if (valorFecha == DateTime.MinValue)
                                        {
                                            if (aceptaVacio)
                                            {
                                                propInfo.SetValue(carga, DateTime.MinValue, null);
                                            }
                                            else
                                            {
                                                carga.MensajeAlerta =
                                                    string.Format(Properties.Resources.CargaMPPA_ErrorColumna,
                                                                  renglon, propInfo.Name);
                                                break;
                                            }
                                        }
                                        propInfo.SetValue(carga, valorFecha, null);
                                        break;

                                    default:
                                        propInfo.SetValue(carga, null, null);
                                        break;
                                    }
                                }
                            }
                        }
                        #endregion AsignarPropiedades

                        listaResumen.Add(carga);
                    }

                    if (listaResumen != null && listaResumen.Any())
                    {
                        var migracionBL = new MigracionBL();
                        // Insertar la lista de resumen en la tabla de RESUMEN
                        MigracionCifrasControlInfo cifras = migracionBL.GuardarResumen(listaResumen, Contexto.Organizacion.OrganizacionID);
                        if (cifras != null)
                        {
                            cifrasControl = new List <MigracionCifrasControlInfo> {
                                cifras
                            };
                            gridDatos.ItemsSource = null;
                            gridDatos.ItemsSource = cifrasControl;
                            HabilitarControlesMigracion(3);
                            SkMessageBox.Show(System.Windows.Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                              string.Format(Properties.Resources.CargaMPPA_RegistroSinProblemas, listaResumen.Count),
                                              MessageBoxButton.OK,
                                              MessageImage.Correct);
                        }
                    }
                    else
                    {
                        SkMessageBox.Show(System.Windows.Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                          string.Format(Properties.Resources.MigracionInventarioSIAP_NoContieneRegistro, listaResumen.Count),
                                          MessageBoxButton.OK,
                                          MessageImage.Correct);
                    }
                }
            }
            catch (Exception ex)
            {
                SkMessageBox.Show(
                    System.Windows.Application.Current.Windows[ConstantesVista.WindowPrincipal],
                    Properties.Resources.CargaMPPA_ErrorValidar, MessageBoxButton.OK, MessageImage.Error);
                Logger.Error(ex);
            }
        }