private static Empleado CrearEmpleadoDesdeArray(string[] arrayCamposEmpleado, string nombreArchivo) { Empleado empleado; try { empleado = new Empleado() { nombre = arrayCamposEmpleado[0], apellido = arrayCamposEmpleado[1], dni = arrayCamposEmpleado[2], idPuesto = int.Parse(arrayCamposEmpleado[3]), horasTrabajadasUltimoMes = int.Parse(arrayCamposEmpleado[4]), cuitEmpresa = arrayCamposEmpleado[5], }; if (nombreArchivo != null) { empleado.archivo = nombreArchivo; } } catch (IndexOutOfRangeException) { throw HttpResponseException.BadRequest("Los campos del archivo no corresponden a los definidos en la API"); } catch (Exception e) { throw HttpResponseException.InternalServer(e.Message); } return(empleado); }
public async Task <List <EmpleadoDTO> > ImportarArchivoEmpleados(IFormFile file) { ArchivoEmpleados archivoDB = await _context.ArchivosEmpleados .Where(a => a.archivo == file.FileName).FirstOrDefaultAsync(); if (archivoDB != null) { throw HttpResponseException.BadRequest("El archivo a importar ya fue procesado o tiene el mismo nombre"); } List <Empleado> empleados = new List <Empleado>(); bool formatoDeArchivoEsCorrecto = await DeserializadorArchivoEmpleados.FormatoDeDatosDeArchivoEsCorrecto(file.OpenReadStream()); if (formatoDeArchivoEsCorrecto) { empleados = await DeserializadorArchivoEmpleados.DeserializarArchivo(file.OpenReadStream(), file.FileName); empleados = await EliminarEmpleadosExistentesEnDB(empleados); if (empleados.Count == 0) { throw HttpResponseException .BadRequest("Los empleados del archivo ya estan registrados. Pertenecen a otro de nombre diferente"); } ArchivoEmpleados archivoDb = await SubirArchivo(file); if (archivoDb != null) { _context.Empleados.AddRange(empleados); int filasAfectadasDeEmpleados = await _context.SaveChangesAsync(); if (filasAfectadasDeEmpleados == 0) { throw HttpResponseException.InternalServer("Error al insertar los Empleados del archivo"); } } else { throw HttpResponseException.InternalServer("Error al insertar el archivo"); } } List <EmpleadoDTO> resul = CrearListaEmpleadosDTO(empleados); return(resul); }