コード例 #1
0
        private Marca ToMarca(Marca marca, MarcaViewModelImport viewImport)
        {
            try
            {
                if (!string.IsNullOrEmpty(viewImport.Fecha))
                {
                    marca.Fecha = DateTime.Parse(viewImport.Fecha);
                }

                if (!string.IsNullOrEmpty(viewImport.HoraEntrada))
                {
                    marca.HoraEntrada = TimeSpan.Parse(viewImport.HoraEntrada);
                }

                if (!string.IsNullOrEmpty(viewImport.HoraSalida))
                {
                    marca.HoraSalida = TimeSpan.Parse(viewImport.HoraSalida);
                }

                if (!string.IsNullOrEmpty(viewImport.HoraOT))
                {
                    marca.HoraOT = TimeSpan.Parse(viewImport.HoraOT);
                }

                return(marca);
            }
            catch (Exception)
            {
                return(marca);
            }
        }
コード例 #2
0
        private async void button1_Click(object sender, EventArgs e)
        {
            lblMensaje.Text      = "Procesando...";
            lblMensaje.ForeColor = System.Drawing.Color.Gray;

            OpenFileDialog openFileDialog1 = new OpenFileDialog();


            openFileDialog1.Title = "Buscar Importar";

            openFileDialog1.CheckFileExists = true;

            openFileDialog1.CheckPathExists = true;



            openFileDialog1.DefaultExt = ".xlsx";

            openFileDialog1.Filter = "Text files (*.xlsx)|*.xls|All files (*.*)|*.*";

            openFileDialog1.FilterIndex = 2;

            openFileDialog1.RestoreDirectory = true;



            openFileDialog1.ReadOnlyChecked = true;

            openFileDialog1.ShowReadOnly = true;



            if (openFileDialog1.ShowDialog() == DialogResult.OK)

            {
                textBox1.Text = openFileDialog1.FileName;
            }
            if (openFileDialog1.FileName.EndsWith("xls") || openFileDialog1.FileName.EndsWith("xlsx"))
            {
                //readv data file
                Microsoft.Office.Interop.Excel.Application application = new Microsoft.Office.Interop.Excel.Application();
                Microsoft.Office.Interop.Excel.Workbook    workbook    = application.Workbooks.Open(textBox1.Text);
                Microsoft.Office.Interop.Excel.Worksheet   worksheet   = workbook.ActiveSheet;
                Microsoft.Office.Interop.Excel.Range       range       = worksheet.UsedRange;
                var fila = 0;
                try
                {
                    Marca marca = new Marca();
                    MarcaViewModelImport viewImport = new MarcaViewModelImport();

                    for (int row = 2; row <= range.Rows.Count; row++)
                    {
                        fila             = row;
                        lblContador.Text = "(" + (row - 1).ToString() + "/" + (range.Rows.Count - 1).ToString() + ")";

                        var ubicacionId = FindUbicacionId(((Microsoft.Office.Interop.Excel.Range)range.Cells[row, 1]).Text);

                        var personaId = FindPersonaId(((Microsoft.Office.Interop.Excel.Range)range.Cells[row, 2]).Text, ubicacionId);

                        if (personaId > 0)
                        {
                            marca.UbicacionId      = ubicacionId;
                            marca.PersonaId        = personaId;
                            viewImport.Fecha       = ((Microsoft.Office.Interop.Excel.Range)range.Cells[row, 3]).Text;
                            viewImport.HoraEntrada = ((Microsoft.Office.Interop.Excel.Range)range.Cells[row, 4]).Text;
                            viewImport.HoraSalida  = ((Microsoft.Office.Interop.Excel.Range)range.Cells[row, 5]).Text;
                            viewImport.HoraOT      = ((Microsoft.Office.Interop.Excel.Range)range.Cells[row, 6]).Text;

                            var persona = await db.Personas.FindAsync(marca.PersonaId);

                            marca = ToMarca(marca, viewImport);

                            //Ponemos estado normal en caso de que las horas sean las mismas
                            if (marca.HorasTrabajadas.Hours == persona.Puesto.Horas)
                            {
                                marca.EstadoMarcaId = 1;
                            }

                            db.Marcas.Add(marca);
                            db.SaveChanges();

                            if (marca.HorasTrabajadas.Hours != persona.Puesto.Horas)
                            {
                                var justificacion = new Justificacion
                                {
                                    FechaCreacion = DateTime.Now,
                                    SubordinadoId = personaId,
                                    SupervisorId  = persona.SupervisorId,
                                };
                                db.Justificaciones.Add(justificacion);
                                await db.SaveChangesAsync();

                                var notificacion = new NotificacionPersona
                                {
                                    Activo    = true,
                                    Fecha     = DateTime.Now,
                                    Nota      = "Solicitud de Justificación " + persona.NombreCompleto,
                                    Titulo    = "Justificación",
                                    PersonaId = persona.SupervisorId.Value,
                                };

                                db.NotificacionPersonas.Add(notificacion);
                                await db.SaveChangesAsync();
                            }
                        }
                    }

                    range     = null;
                    worksheet = null;
                    workbook.Close(false, Type.Missing, Type.Missing);

                    application.Quit();

                    KillExcel(application);

                    System.Runtime.InteropServices.Marshal.ReleaseComObject(application);
                    workbook    = null;
                    application = null;

                    lblMensaje.Text      = "Finalizado correctamente...";
                    lblMensaje.ForeColor = System.Drawing.Color.Green;
                }
                catch (Exception ex)
                {
                    lblMensaje.Text = "Error por favor revise el archivo - Fila (" + fila + ")";
                    if (ex.InnerException != null)
                    {
                        lblMensaje.Text      = (Char)13 + ex.InnerException.Message.ToString();
                        lblMensaje.ForeColor = System.Drawing.Color.Red;
                    }
                    else if (ex.Message != null)
                    {
                        lblMensaje.Text      = (Char)13 + ex.Message.ToString();
                        lblMensaje.ForeColor = System.Drawing.Color.Red;
                    }
                }
            }
            else
            {
                lblMensaje.Text      = "El archivo no es correcto...";
                lblMensaje.ForeColor = System.Drawing.Color.Red;
            }
        }