//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: public org.boris.expr.Expr evaluateVariable(org.boris.expr.IEvaluationContext param1IEvaluationContext, org.boris.expr.ExprVariable param1ExprVariable) throws org.boris.expr.ExprException
            public virtual Expr evaluateVariable(IEvaluationContext param1IEvaluationContext, ExprVariable param1ExprVariable)
            {
                string str1 = param1ExprVariable.Name.ToUpper();

                if (outerInstance.hasAdditionalVariable(str1))
                {
                    return(outerInstance.getAdditionalVariableValue(str1));
                }
                if (outerInstance.localVariablesMap.ContainsKey(str1))
                {
                    return(new ExprDouble(((decimal)outerInstance.localVariablesMap[str1]).doubleValue()));
                }
                string str2 = BoqItemFormulaEvaluator.fieldFromVariable(str1);

                if (string.ReferenceEquals(str2, null))
                {
                    throw new ExprException("Variable " + str1 + " not found");
                }
                object @object = outerInstance.getFieldValue(outerInstance.boqTable, str2);

                if (@object == null)
                {
                    if (BoqItemTable.isFieldDate(str2))
                    {
                        @object = Convert.ToDouble(0.0D);
                    }
                    else
                    {
                        @object = "";
                    }
                }
                ExprBoolean exprBoolean = null;

                if (@object is Number)
                {
                    exprBoolean = new ExprDouble(((Number)@object).doubleValue());
                }
                else if (@object is string)
                {
                    ExprString exprString = new ExprString(@object.ToString());
                }
                else if (@object is DateTime)
                {
                    exprBoolean = new ExprDouble(ExcelDate.toExcelDate(((DateTime)@object).Ticks));
                }
                else if (@object is bool?)
                {
                    exprBoolean = new ExprBoolean(((bool?)@object).Value);
                }
                return(exprBoolean);
            }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: private void reloadVariables() throws org.boris.expr.ExprException
        private void reloadVariables()
        {
            this.assignmentsWithFormulasMap.Clear();
            this.updatedResourceToAssignmentQtyPerUnitSet.Clear();
            this.pvVarsCalled = new StringBuilder();
            foreach (string str in BoqItemTable.VIEWABLE_FIELDS)
            {
                if (!this.currentField.Equals(str))
                {
                    object @object = getFieldFormulaValue(this.boqTable, str + "Formula");
                    string str1    = variableFromField(str);
                    if (@object != null)
                    {
                        set(str1, "=" + @object.ToString());
                    }
                    else if (BoqItemTable.isFieldEditable(str))
                    {
                        object object1 = getFieldValue(this.boqTable, str);
                        if (BoqItemTable.isFieldDate(str))
                        {
                            object1 = Convert.ToDouble(0.0D);
                        }
                        else
                        {
                            object1 = "";
                        }
                        setExprValue(str1, object1);
                    }
                }
            }
            this.boqTable.PvVars       = (this.pvVarsCalled == null) ? "" : this.pvVarsCalled.ToString();
            this.boqTable.HasPVFormula = Convert.ToBoolean((this.pvVarsCalled != null && this.pvVarsCalled.ToString().Length > 0));
            foreach (object @object in this.boqTable.ResourceAssignmentsList)
            {
                ResourceToAssignmentTable resourceToAssignmentTable = (ResourceToAssignmentTable)@object;
                resourceToAssignmentTable.PvVars = "";
                ResourceWithAssignmentsTable resourceWithAssignmentsTable = resourceToAssignmentTable.getResourceTable();
                if (resourceToAssignmentTable.getResourceTable() is AssemblyTable)
                {
                    AssemblyTable assemblyTable = (AssemblyTable)resourceToAssignmentTable.getResourceTable();
                    loadLocalVariables(assemblyTable.Vars);
                }
                else if (resourceToAssignmentTable.getResourceTable() is BoqItemTable)
                {
                    BoqItemTable boqItemTable = (BoqItemTable)resourceToAssignmentTable.getResourceTable();
                    loadLocalVariables(boqItemTable.Vars);
                }
                if (resourceToAssignmentTable.QuantityPerUnitFormulaState == ResourceToAssignmentTable.QTYPUFORM_NOFORMULA)
                {
                    continue;
                }
                string str = resourceToAssignmentTable.QuantityPerUnitFormula;
                if (!StringUtils.isNullOrBlank(str))
                {
                    string str1 = System.Guid.randomUUID().ToString();
                    set(str1, "=" + str.ToString());
                    this.assignmentsWithFormulasMap[str1] = resourceToAssignmentTable;
                }
            }
            if (this.boqTable.BoqItemAssemblySet != null)
            {
                foreach (BoqItemAssemblyTable boqItemAssemblyTable in this.boqTable.BoqItemAssemblySet)
                {
                    AssemblyTable assemblyTable = boqItemAssemblyTable.AssemblyTable;
                    loadLocalVariables(assemblyTable.Vars);
                    QuantityPerUnitFieldFormula = assemblyTable;
                }
            }
        }