public void AgregarProyectoExcel(Entidades.Proyecto proyecto) { var orden = new int[100]; orden[0] = 1; _proyAux = proyecto; OpenFile(proyecto.path + "\\" + proyecto.nombre_proyecto + ".xlsx"); foreach (IXLWorksheet worksheet in _xlworkbook.Worksheets) { if (worksheet.Name.ToLower().Contains("proyecto")) { ImportarControlesPredeterminados(worksheet, proyecto); SUBPROYECTO subAux; //22 es la fila donde empiezan los nombres de los subproyectos, columna 2. for (var i = 3; !string.IsNullOrEmpty(worksheet.Cell(i, 2).Value.ToString()); i++) { int id; SUBPROYECTO sub = null; bool existeSubproyecto = false; if (int.TryParse(worksheet.Cell(i, 1).Value.ToString(), out id)) { sub = ControladorSubproyecto.BuscarPorId(id); } if (sub == null) { subAux = new SUBPROYECTO { nombre = worksheet.Cell(i, 3).Value.ToString(), fecha_fin_estimada = DateTime.Today, asignacion_automatica = true, fecha_inicio_estimada = DateTime.Today, fecha_inicio_real = DateTime.Today, fecha_fin_real = DateTime.Today, ot_cliente = worksheet.Cell(i, 6).Value.ToString(), horas_estimadas = string.IsNullOrEmpty(worksheet.Cell(i, 7).Value.ToString()) ? 0 : Convert.ToInt32(worksheet.Cell(i, 7).Value.ToString()), id_tipo_subproyecto = ControladorSubproyecto.ObtenerTipoSubproyectoPorNombre(worksheet.Cell(i, 4).Value.ToString()).id_tipo_subproyecto, orden = 0, id_hora_tipo_subproyecto = 0, id_prioridad = 0, observaciones = "", ot = 0, id_estado_proyecto = 0, forzada_fecha_fin_estimada = false, forzada_fecha_inicio_estimada = false, genera_ot = worksheet.Cell(i, 5).Value.ToString() == "SI", id_proyecto = _proyAux.id_proyecto }; ControladorSubproyecto.InsertarSubproyecto(subAux); } else { //Actualizacion de datos subAux = sub; subAux.nombre = worksheet.Cell(i, 3).Value.ToString(); subAux.ot_cliente = worksheet.Cell(i, 6).Value.ToString(); subAux.horas_estimadas = string.IsNullOrEmpty(worksheet.Cell(i, 6).Value.ToString()) ? 0 : Convert.ToInt32(worksheet.Cell(i, 7).Value.ToString()); subAux.genera_ot = worksheet.Cell(i, 5).Value.ToString() != "NO"; subAux.id_tipo_subproyecto = ControladorSubproyecto.ObtenerTipoSubproyectoPorNombre(worksheet.Cell(i, 4).Value.ToString()).id_tipo_subproyecto; } if (subAux.nombre == null || subAux.nombre == "") { ControladorSubproyecto.EliminarSubproyecto(subAux); } else { //Asigna el nivel del subproyecto int nivel = Convert.ToInt32(worksheet.Cell(i, 2).Value.ToString()); orden[nivel] = subAux.id_subproyecto; subAux.id_subproyecto_padre = orden[nivel - 1]; //Actualiza la informacion ControladorSubproyecto.ActualizarSubproyecto(subAux); //Orden de trabajo. TODO verificar si ya tiene que no asigne otra if (subAux.genera_ot == true) { ControladorSubproyecto.AsignarOT(subAux.id_subproyecto); } } } } else if (!worksheet.Name.ToLower().Contains("Template Dispositivo") && !worksheet.Name.ToLower().Contains("SOPORTE")) { AgregarUnidades(worksheet); } } CloseFile(); ControladorProyecto.ActualizarHorasSubproyecto(ControladorProyecto.ObtenerPorID(_proyAux.id_proyecto)); }