private void AgregarUnidades(IXLWorksheet worksheet) { var sub = ControladorSubproyecto.BuscarPorOTDeExportacion(worksheet.Name, _proyAux.id_proyecto); if (sub == null) { return; } decimal horasOC; bool isNumericOC = decimal.TryParse(worksheet.Cell(3, 3).GetFormattedString(), out horasOC); if (isNumericOC) { sub.horas_orden_compra = horasOC; } else { sub.horas_orden_compra = null; } ControladorSubproyecto.ActualizarSubproyecto(sub); int i; //Por si las dudas hayan escrito algo en la fila 9 (no deberian) porque anda mal la exportacion de Excel int j = 9; //Que columna? for (i = j; !string.IsNullOrEmpty(worksheet.Cell(i, 2).Value.ToString()); i++) { int n; bool isNumeric = int.TryParse(worksheet.Cell(i, 4).GetFormattedString(), out n); HORA_TIPO_SUBPROYECTO hora_tipo = ControladorSubproyecto.ObtenerHoraTipoSubproyecto(worksheet.Cell(i, 3).Value.ToString()); decimal?dec = null; var subAux = new SUBPROYECTO { nombre = worksheet.Cell(i, 2).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 = "", id_tipo_subproyecto = 4, orden = 0, id_hora_tipo_subproyecto = hora_tipo == null ? 0: hora_tipo.id_hora_tipo_subproyecto, horas_estimadas = isNumeric ? n : hora_tipo == null ? 0 : hora_tipo.id_hora_tipo_subproyecto > 0 ? ControladorSubproyecto.ObtenerHoraTipoSubproyecto(worksheet.Cell(i, 3).Value.ToString()).horas : 0, id_prioridad = 0, observaciones = "", ot = i - 9, id_estado_proyecto = 0, forzada_fecha_fin_estimada = false, forzada_fecha_inicio_estimada = false, genera_ot = false, id_proyecto = _proyAux.id_proyecto }; //mp existe //TODO ACTUALIZAR int id; SUBPROYECTO subPro = null; bool existeSubproyecto = false; SUBPROYECTO sub2 = null; if (int.TryParse(worksheet.Cell(i, 1).Value.ToString(), out id)) { sub2 = ControladorSubproyecto.BuscarPorId(id); } if (sub2 == null) { ControladorSubproyecto.InsertarSubproyecto(subAux); subAux.id_subproyecto_padre = sub.id_subproyecto; ControladorSubproyecto.ActualizarSubproyecto(subAux); //Check CrearActividades(subAux); subAux.horas_orden_compra = (decimal)ControladorSubproyecto.CalcularHorasOrdenCompra(subAux); ControladorSubproyecto.ActualizarSubproyecto(subAux); } else { sub2.nombre = worksheet.Cell(i, 2).Value.ToString(); sub2.id_hora_tipo_subproyecto = subAux.id_hora_tipo_subproyecto; sub2.horas_estimadas = ControladorSubproyecto.CalcularHorasOrdenCompra(subAux) != null?Convert.ToDecimal(ControladorSubproyecto.CalcularHorasOrdenCompra(subAux).Value.ToString("#.##")) : 0; sub2.orden = subAux.orden; //Eliminar subproyecto if (sub2.nombre == null || sub2.nombre == "") { ControladorSubproyecto.EliminarSubproyecto(sub2); } else { ControladorSubproyecto.ActualizarSubproyecto(sub2); decimal?valor = (decimal)ControladorSubproyecto.CalcularHorasOrdenCompra(sub2); sub2.horas_orden_compra = ControladorSubproyecto.CalcularHorasOrdenCompra(sub2).HasValue ? decimal.Round((decimal)ControladorSubproyecto.CalcularHorasOrdenCompra(sub2).Value, 2, MidpointRounding.AwayFromZero) : 0; ControladorSubproyecto.ActualizarSubproyecto(sub2); } } } List <Actividad> listaActividades = ControladorActividades.ObtenerActividadesDeSubproyecto(sub); for (i = 9; !string.IsNullOrEmpty(worksheet.Cell(i, 7).Value.ToString()); i++) { string nombre = worksheet.Cell(i, 7).Value.ToString(); if (listaActividades.Count == 0 || !listaActividades.Where(x => x.nombre_actividad == nombre).Any()) { CrearActividad(sub, ControladorActividades.ObtenerTipoActividad(nombre) == null ? 1 : ControladorActividades.ObtenerTipoActividad(nombre).id_tipo_actividad, nombre, listaActividades.Count == 0 ? 1 : listaActividades.Count + 1); } } }