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); } }
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; } }