/// <summary>
        /// ParserLogic
        /// </summary>
        /// <param name="originalLogic">originalLogic</param>
        /// <param name="workType">workType</param>
        /// <param name="companyId">companyId</param>
        /// <returns></returns>
        public string ParserLogic(string originalLogic, string workType, int companyId)
        {
            string newLogic = "";

            if (workType == "Junction Lining")
            {
                if (originalLogic.Length > 0)
                {
                    newLogic = "(AASS.Deleted = 0) AND (LW.Deleted = 0) AND (AASL.Deleted = 0) AND (AASS.COMPANY_ID = {0}) AND (LW.ProjectID = {1}) AND (LW.WorkType = '{2}') AND ";
                }
                else
                {
                    newLogic = "(AASS.Deleted = 0) AND (LW.Deleted = 0) AND (AASL.Deleted = 0) AND (AASS.COMPANY_ID = {0}) AND (LW.ProjectID = {1}) AND (LW.WorkType = '{2}')";
                }
            }
            else
            {
                if (workType == "Manhole Rehabilitation")
                {
                    if (originalLogic.Length > 0)
                    {
                        newLogic = "(AASMHP.ProjectID = {1}) AND ";
                    }
                    else
                    {
                        newLogic = "(AASMHP.ProjectID = {1}) ";
                    }
                }
                else
                {
                    if (originalLogic.Length > 0)
                    {
                        newLogic = "(AASS.Deleted = 0) AND (LW.Deleted = 0) AND (AASS.COMPANY_ID = {0}) AND (LW.ProjectID = {1}) AND (LW.WorkType = '{2}') AND ";
                    }
                    else
                    {
                        newLogic = "(AASS.Deleted = 0) AND (LW.Deleted = 0) AND (AASS.COMPANY_ID = {0}) AND (LW.ProjectID = {1}) AND (LW.WorkType = '{2}')";
                    }
                }
            }

            WorkViewTDS.WorkViewConditionNewDataTable tableSorted = (WorkViewTDS.WorkViewConditionNewDataTable)Data.Tables["WorkViewConditionNew"];

            foreach (WorkViewTDS.WorkViewConditionNewRow rowNew in tableSorted.Select("", "ConditionNumber DESC"))
            {
                if (!rowNew.Deleted)
                {
                    string originalCondition = "Condition" + rowNew.ConditionNumber;

                    WorkTypeViewCondition workTypeViewCondition = new WorkTypeViewCondition();
                    workTypeViewCondition.LoadByWorkTypeConditionId(workType, rowNew.ConditionID, companyId);

                    WorkTypeViewConditionGateway workTypeViewConditionGateway = new WorkTypeViewConditionGateway(workTypeViewCondition.Data);
                    string tableName = workTypeViewConditionGateway.GetTable_(workType, companyId, rowNew.ConditionID);

                    if (tableName == "AM_ASSET_SEWER_SECTION") tableName = "AASS";
                    if (tableName == "AM_ASSET_SEWER_LATERAL") tableName = "AASL";
                    if (tableName == "LFS_ASSET_SEWER_SECTION") tableName = "LASS";
                    if (tableName == "LFS_ASSET_SEWER_LATERAL_CLIENT") tableName = "LASLC";
                    if (tableName == "LFS_WORK") tableName = "LW";
                    if (workType == "Rehab Assessment")
                    {
                        if (tableName == "LFS_WORK_FULLLENGTHLINING") tableName = "LWFLL";
                    }
                    else
                    {
                        if (tableName == "LFS_WORK_FULLLENGTHLINING") tableName = "LWF";
                    }
                    if (tableName == "LFS_WORK_FULLLENGTHLINING_M1") tableName = "LWFM1";
                    if (tableName == "LFS_WORK_FULLLENGTHLINING_M2") tableName = "LWFLLM2";
                    if (tableName == "LFS_WORK_FULLLENGTHLINING_P1") tableName = "LWFLP1";
                    if (tableName == "LFS_WORK_JUNCTIONLINING_SECTION") tableName = "LWJLS";
                    if (tableName == "LFS_WORK_JUNCTIONLINING_LATERAL") tableName = "LWJLL";
                    if (tableName == "LFS_WORK_REHABASSESSMENT") tableName = "LWR";
                    if (tableName == "LFS_WORK_POINT_REPAIRS") tableName = "LWPR";
                    if (tableName == "LFS_WORK_POINT_REPAIRS_REPAIR") tableName = "LWPRR";
                    if (tableName == "LFS_MIGRATED_SECTIONS") tableName = "LMS";
                    if (tableName == "LFS_WORK_MANHOLE_REHABILITATION") tableName = "LWMR";
                    if (tableName == "AM_ASSET_SEWER_MH") tableName = "AASMH";

                    string column = workTypeViewConditionGateway.GetColumn_(workType, companyId, rowNew.ConditionID);
                    string type = workTypeViewConditionGateway.GetType(workType, companyId, rowNew.ConditionID);
                    string sign = rowNew.Sign;
                    string conditionValue = rowNew.Value_;
                    string newCondition = "";

                    if (column == "USMH")
                    {
                        column = "MHID";
                        tableName = "AASUSMH";
                    }

                    if (column == "DSMH")
                    {
                        column = "MHID";
                        tableName = "AASDSMH";
                    }

                    if (column == "MN#")
                    {
                        column = "Address";
                    }

                    if (column == "USMHAddress")
                    {
                        column = "Address";
                        tableName = "AASUSMH";
                    }

                    if (column == "DSMHAddress")
                    {
                        column = "Address";
                        tableName = "AASDSMH";
                    }

                    // Search
                    if (conditionValue == "%")
                    {
                        if (type == "Boolean")
                        {
                            newCondition = newCondition + " ((" + tableName + "." + column + " = 1) OR (" + tableName + "." + column + " = 0))";
                        }
                        else
                        {
                            if ((workType == "Junction Lining") && ((column == "FlowOrderID") || (column == "LateralID")))
                            {
                                if (column == "FlowOrderID")
                                {
                                    newCondition = newCondition + " (((" + tableName + "." + column + " LIKE '%')";
                                    newCondition = newCondition + " OR (" + tableName + "." + column + " IS NULL))";
                                    newCondition = newCondition + " OR ((AASL.LateralID LIKE '%')";
                                    newCondition = newCondition + " OR (AASL.LateralID IS NULL)))";
                                }
                                else
                                {
                                    if (column == "LateralID")
                                    {
                                        newCondition = newCondition + " ((AASS.SectionID LIKE '%')";
                                        newCondition = newCondition + " OR (AASS.SectionID IS NULL))";
                                    }
                                }
                            }
                            else
                            {
                                if (type == "Date")
                                {
                                    if (sign == "=")
                                    {
                                        newCondition = newCondition + " ((CAST(CONVERT(varchar," + tableName + "." + column + ", 101) AS smalldatetime) IS NOT NULL)";
                                        newCondition = newCondition + " OR (CAST(CONVERT(varchar," + tableName + "." + column + ", 101) AS smalldatetime) IS NULL))";
                                    }
                                    else
                                    {
                                        if (sign == "<>")
                                        {
                                            newCondition = newCondition + " (CAST(CONVERT(varchar," + tableName + "." + column + ", 101) AS smalldatetime) IS NULL)";
                                        }
                                        else
                                        {
                                            newCondition = newCondition + " ((CAST(CONVERT(varchar," + tableName + "." + column + ", 101) AS smalldatetime) IS NOT NULL)";
                                            newCondition = newCondition + " OR (CAST(CONVERT(varchar," + tableName + "." + column + ", 101) AS smalldatetime) IS NULL))";
                                        }
                                    }
                                }
                                else
                                {
                                    if (column != "CXIsRemoved")
                                    {
                                        if (sign == "=")
                                        {
                                            newCondition = newCondition + " ((" + tableName + "." + column + " LIKE '%')";
                                            newCondition = newCondition + " OR (" + tableName + "." + column + " IS NULL))";
                                        }

                                        if (sign == "<>")
                                        {
                                            newCondition = newCondition + " (" + tableName + "." + column + " IS NULL)";
                                        }
                                        else
                                        {
                                            if (sign != "=")
                                            {
                                                newCondition = newCondition + " ((" + tableName + "." + column + " LIKE '%')";
                                                newCondition = newCondition + " OR (" + tableName + "." + column + " IS NULL))";
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        if (conditionValue == "")
                        {
                            if (sign == "<>")
                            {
                                if ((workType == "Junction Lining") && ((column == "FlowOrderID") || (column == "LateralID")))
                                {
                                    if (column == "FlowOrderID")
                                    {
                                        newCondition = newCondition + " ((" + tableName + "." + column + " IS NOT NULL)";
                                        newCondition = newCondition + " OR (AASL.LateralID IS NOT NULL))";
                                    }
                                    else
                                    {
                                        if (column == "LateralID")
                                        {
                                            newCondition = newCondition + " (AASS.SectionID IS NOT NULL)";
                                        }
                                    }
                                }
                                else
                                {
                                    if (column != "CXIsRemoved")
                                    {
                                        newCondition = newCondition + tableName + "." + column + " IS NOT NULL ";
                                    }
                                    else
                                    {
                                        newCondition = newCondition + " (AASS.AssetID IN " +
                                                    " (SELECT AASS1.AssetID" +
                                                   " FROM  AM_ASSET_SEWER_SECTION AASS1 INNER JOIN " +
                                 " LFS_WORK LW1 ON (AASS1.AssetID = LW1.AssetID) AND (LW1.WorkType = 'Full Length Lining') AND (LW1.ProjectID = LW.ProjectID) INNER JOIN " +
                                 " LFS_WORK_FULLLENGTHLINING_P1 LWFLP1 ON LW1.WorkID = LWFLP1.WorkID INNER JOIN LFS_WORK LW2 ON (AASS1.AssetID = LW2.AssetID) AND (LW2.WorkType = 'Rehab Assessment') AND (LW2.ProjectID = LW1.ProjectID) " +
                                 " WHERE ( (LWFLP1.CXIsRemoved IS NOT NULL) AND (AASS1.Deleted = 0) AND (LW1.Deleted = 0) AND (LWFLP1.Deleted = 0)) " +
                                                    " ) )";
                                    }
                                }
                            }
                            else
                            {
                                if ((workType == "Junction Lining") && ((column == "FlowOrderID") || (column == "LateralID")))
                                {
                                    if (column == "FlowOrderID")
                                    {
                                        newCondition = newCondition + " ((" + tableName + "." + column + " IS NULL)";
                                        newCondition = newCondition + " OR (AASL.LateralID IS NULL))";
                                    }

                                    if (column == "LateralID")
                                    {
                                        newCondition = newCondition + " (AASS.SectionID IS NULL)";
                                    }
                                }
                                else
                                {
                                    if (column != "CXIsRemoved")
                                    {
                                        newCondition = newCondition + tableName + "." + column + " IS NULL ";
                                    }
                                    else
                                    {
                                        newCondition = newCondition + " (AASS.AssetID IN " +
                                                    " (SELECT AASS1.AssetID" +
                                                   " FROM  AM_ASSET_SEWER_SECTION AASS1 INNER JOIN " +
                                 " LFS_WORK LW1 ON (AASS1.AssetID = LW1.AssetID) AND (LW1.WorkType = 'Full Length Lining') AND (LW1.ProjectID = LW.ProjectID) INNER JOIN " +
                                 " LFS_WORK_FULLLENGTHLINING_P1 LWFLP1 ON LW1.WorkID = LWFLP1.WorkID INNER JOIN LFS_WORK LW2 ON (AASS1.AssetID = LW2.AssetID) AND (LW2.WorkType = 'Rehab Assessment') AND (LW2.ProjectID = LW1.ProjectID) " +
                                 " WHERE ( (LWFLP1.CXIsRemoved IS NULL) AND (AASS1.Deleted = 0) AND (LW1.Deleted = 0) AND (LWFLP1.Deleted = 0)) " +
                                                    " ) )";
                                    }
                                }
                            }
                        }
                        else
                        {
                            conditionValue = conditionValue.Replace("'", "''");

                            if ((type == "Int") || (type == "Decimal") || (type == "Boolean"))
                            {
                                if (conditionValue == "Yes") conditionValue = "1";
                                if (conditionValue == "No") conditionValue = "0";

                                if (column != "CXIsRemoved")
                                {
                                    newCondition = newCondition + tableName + "." + column + sign + conditionValue;
                                }
                                else
                                {
                                    newCondition = newCondition + " (AASS.AssetID IN " +
                                                    " (SELECT AASS1.AssetID" +
                                                   " FROM  AM_ASSET_SEWER_SECTION AASS1 INNER JOIN " +
                                 " LFS_WORK LW1 ON (AASS1.AssetID = LW1.AssetID) AND (LW1.WorkType = 'Full Length Lining') AND (LW1.ProjectID = LW.ProjectID) INNER JOIN " +
                                 " LFS_WORK_FULLLENGTHLINING_P1 LWFLP1 ON LW1.WorkID = LWFLP1.WorkID INNER JOIN LFS_WORK LW2 ON (AASS1.AssetID = LW2.AssetID) AND (LW2.WorkType = 'Rehab Assessment') AND (LW2.ProjectID = LW1.ProjectID) " +
                                 " WHERE ( (LWFLP1.CXIsRemoved " + sign + conditionValue + ") AND (AASS1.Deleted = 0) AND (LW1.Deleted = 0) AND (LWFLP1.Deleted = 0)) " +
                                                    " ) )";
                                }
                            }
                            else
                            {
                                if (sign == "=")
                                {
                                    if ((workType == "Junction Lining") && ((column == "FlowOrderID") || (column == "LateralID")))
                                    {
                                        if (column == "FlowOrderID")
                                        {
                                            newCondition = newCondition + " ((" + tableName + "." + column + " LIKE '%" + conditionValue + "%')";
                                            newCondition = newCondition + " OR (AASL.LateralID LIKE '%" + conditionValue + "%'))";
                                        }
                                        else
                                        {
                                            if (column == "LateralID")
                                            {
                                                newCondition = newCondition + "(AASS.FlowOrderID + '-JL-' + AASL.LateralID LIKE '%" + conditionValue + "%')";
                                            }
                                        }
                                    }
                                    else
                                    {
                                        if (type != "Date")
                                        {
                                            if (conditionValue.Contains("\""))
                                            {
                                                if (column != "Gasket")
                                                {
                                                    if (column != "Size_" && column != "VideoLengthToPropertyLine" && column != "DepthOfLocated")
                                                    {
                                                        conditionValue = conditionValue.Replace("\"", "");
                                                    }
                                                }

                                                newCondition = newCondition + " (" + tableName + "." + column + " = '" + conditionValue + "')";
                                            }
                                            else
                                            {
                                                if (column == "Issue" && conditionValue == "(All)")
                                                {
                                                    newCondition = newCondition + " ((LWJLL.Issue LIKE '%')";
                                                    newCondition = newCondition + " OR (LWJLL.Issue IS NULL))";
                                                }
                                                else
                                                {
                                                    newCondition = newCondition + " (" + tableName + "." + column + " LIKE '%" + conditionValue + "%')";
                                                }
                                            }
                                        }
                                        else
                                        {
                                            // Date
                                            if (conditionValue.Length > 7)
                                            {
                                                newCondition = newCondition + " CAST(CONVERT(varchar," + tableName + "." + column + ", 101) AS smalldatetime) " + sign + "'" + conditionValue + "'";
                                            }
                                            else
                                            {
                                                newCondition = newCondition + " CAST(CONVERT(varchar," + tableName + "." + column + ", 101) AS smalldatetime) LIKE '%" + conditionValue + "%'";
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    if ((workType == "Junction Lining") && (column == "FlowOrderID"))
                                    {
                                        newCondition = newCondition + " ((" + tableName + "." + column + sign + "'" + conditionValue + "')";
                                        newCondition = newCondition + " OR (AASL.LateralID " + sign + "'" + conditionValue + "'))";
                                    }
                                    else
                                    {
                                        if ((workType == "Junction Lining") && (column == "LateralID"))
                                        {
                                            newCondition = newCondition + " ((AASS.FlowOrderID + '-JL-' + AASL.LateralID NOT LIKE '%" + conditionValue + "%')";
                                            newCondition = newCondition + "OR (AASS.FlowOrderID + '-JL-' + AASL.LateralID IS NULL))";
                                        }
                                        else
                                        {
                                            if (column == "Comments" || column == "History")
                                            {
                                                newCondition = newCondition + tableName + "." + column + " NOT LIKE '%" + conditionValue + "%'";
                                            }
                                            else
                                            {
                                                if (type != "Date")
                                                {
                                                    newCondition = newCondition + tableName + "." + column + sign + "'" + conditionValue + "'";
                                                }
                                                else
                                                {
                                                    // Date
                                                    if (conditionValue.Length > 7)
                                                    {
                                                        if (sign == "<>")
                                                        {
                                                            newCondition = newCondition + " ((CAST(CONVERT(varchar," + tableName + "." + column + ", 101) AS smalldatetime) " + sign + "'" + conditionValue + "')";
                                                            newCondition = newCondition + " OR (CAST(CONVERT(varchar," + tableName + "." + column + ", 101) AS smalldatetime) IS NULL))";
                                                        }
                                                        else
                                                        {
                                                            newCondition = newCondition + " CAST(CONVERT(varchar," + tableName + "." + column + ", 101) AS smalldatetime) " + sign + "'" + conditionValue + "'";
                                                        }
                                                    }
                                                    else
                                                    {
                                                        if (sign == "<>")
                                                        {
                                                            newCondition = newCondition + " ((CAST(CONVERT(varchar," + tableName + "." + column + ", 101) AS smalldatetime) NOT LIKE '%" + conditionValue + "%')";
                                                            newCondition = newCondition + " OR (CAST(CONVERT(varchar," + tableName + "." + column + ", 101) AS smalldatetime) IS NULL))";
                                                        }
                                                        else
                                                        {
                                                            if (sign == ">" || sign == "<=")
                                                            {
                                                                newCondition = newCondition + " CAST(CONVERT(varchar," + tableName + "." + column + ", 101) AS smalldatetime)" + sign + " '12/31/" + conditionValue + "'";
                                                            }
                                                            else
                                                            {
                                                                newCondition = newCondition + " CAST(CONVERT(varchar," + tableName + "." + column + ", 101) AS smalldatetime)" + sign + " '" + conditionValue + "'";
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }

                    originalLogic = originalLogic.Replace(originalCondition, newCondition);
                }
            }

            if (originalLogic.Length > 0)
            {
                newLogic = newLogic + originalLogic;
            }

            return newLogic;
        }
        /// <summary>
        /// GetConditionsForSummary
        /// </summary>
        /// <param name="workType"></param>
        /// <param name="companyId"></param>
        /// <returns></returns>
        public string GetConditionsForSummary(string workType, int companyId)
        {
            string conditions = "";

            foreach (WorkViewTDS.WorkViewConditionNewRow row in (WorkViewTDS.WorkViewConditionNewDataTable)Data.Tables["WorkViewConditionNew"])
            {
                if (!row.Deleted)
                {
                    WorkTypeViewCondition workTypeViewCondition = new WorkTypeViewCondition();
                    workTypeViewCondition.LoadByWorkTypeConditionId(workType, row.ConditionID, companyId);

                    WorkTypeViewConditionGateway workTypeViewConditionGateway = new WorkTypeViewConditionGateway(workTypeViewCondition.Data);
                    if (row.Value_ == "")
                    {
                        conditions = conditions + "Condition" + row.ConditionNumber + ": " + workTypeViewConditionGateway.GetName(workType, companyId, row.ConditionID) + " " + row.Sign + " (empty), ";
                    }
                    else
                    {
                        conditions = conditions + "Condition" + row.ConditionNumber + ": " + workTypeViewConditionGateway.GetName(workType, companyId, row.ConditionID) + " " + row.Sign + " " + row.Value_ + ", ";
                    }
                }
            }

            if (conditions.Length > 2)
            {
                conditions = conditions.Substring(0, conditions.Length - 2);
            }
            return conditions;
        }