public C_Maint_Decision() { // // TODO: Add constructor logic here // DataTable dt = new MaintDecision().GetMaintDecisionsLimits(); if (dt.Rows.Count > 0) { DataRow dr = dt.Rows[0]; UDI_LIMIT_SM = int.Parse(dr["UDI_LIMIT_SM"].ToString()); UDI_LIMIT_S = int.Parse(dr["UDI_LIMIT_S"].ToString()); IRI_LIMIT_S = int.Parse(dr["IRI_LIMIT_S"].ToString()); FWD_LIMIT_S = int.Parse(dr["FWD_LIMIT_S"].ToString()); FWD_LIMIT_MED_S = int.Parse(dr["FWD_LIMIT_MED_S"].ToString()); GPR_LIMIT_S = int.Parse(dr["GPR_LIMIT_S"].ToString()); SKID_LIMIT_S = int.Parse(dr["SKID_LIMIT_S"].ToString()); UDI_LIMIT_I = int.Parse(dr["UDI_LIMIT_I"].ToString()); IRI_LIMIT_I = int.Parse(dr["IRI_LIMIT_I"].ToString()); GPR_LIMIT_I = int.Parse(dr["GPR_LIMIT_I"].ToString()); SKID_LIMIT_I = int.Parse(dr["SKID_LIMIT_I"].ToString()); UDI_LIMIT_IS = int.Parse(dr["UDI_LIMIT_IS"].ToString()); UDI_LIMIT_R = int.Parse(dr["UDI_LIMIT_R"].ToString()); UDI_LIMIT_SEC_ST = int.Parse(dr["UDI_LIMIT_SEC_ST"].ToString()); } }
protected void ddlMaintDecisions_SelectedIndexChanged(object sender, EventArgs e) { try { int?udiAfter = new MaintDecision().GetMaintDecisionNewUDI(int.Parse(ddlMaintDecisions.SelectedValue), lblUdiBefore.Text); lblUdiAfter.Text = (udiAfter == null) ? "" : udiAfter.ToString(); } catch (Exception ex) { lblFeedback.Text = ex.Message; } }
protected void btnShowReport_Click(object sender, EventArgs e) { try { lblFeedback.Text = ""; lblTotal.Visible = false; if (radAreas.Checked) { if (raddtpFrom.SelectedDate == null) { throw new Exception("الرجاء تحديد التاريخ"); } lblTotal.Text = new JpmmsCharting().GetDailyDataEntryTotalArea(raddtpFrom.SelectedDate).ToString("N2"); lblTotal.Visible = true; } else if (radLENGTH.Checked) { if (ddlRegions.SelectedValue == "0") { throw new Exception("الرجاء اختيار المنطقة"); } lblTotal.Text = new Region().GetRegionSamplesTotalLength(int.Parse(ddlRegions.SelectedValue)).ToString(); lblTotal.Visible = true; } else if (radNetworkArea.Checked) { PavementStatusReport total = new JpmmsCharting().GetWholeNetworkArea(); lblTotal.Text = string.Format("مقاطع: {0} م2 \n تقاطعات: {1} م2 \n مناطق فرعية: {2} م2 \n المجموع: {3} م2", total.MainStSectionsTotal.ToString("N2"), total.MainStIntersectsTotal.ToString("N2"), total.RegionsTotal.ToString("N2"), total.WholeNetworkTotal.ToString("N2")); lblTotal.Visible = true; } else if (radIntersectTypes.Checked) { DataTable dt = new GeneralPmmsReporting().GetIntersectionTypes(); Session.Add("option", "radIntersectTypes"); Session.Add("ReportData", dt); string url = "ViewOtherReports.aspx"; ScriptManager.RegisterStartupScript(Page, Page.GetType(), "RedirectScriptCoupon", "window.open('" + url + "', '_blank')", true); } else if (radMaintDeciding.Checked) { DataTable dt = new MaintDeciding().GetAllMaintDeciding(); Session.Add("option", "radMaintDeciding"); Session.Add("ReportData", dt); string url = "ViewOtherReports.aspx"; ScriptManager.RegisterStartupScript(Page, Page.GetType(), "RedirectScriptCoupon", "window.open('" + url + "', '_blank')", true); } else if (radSurveyors.Checked) { DataTable dt = new Surveyor().GetAllSurveyors(); Session.Add("option", "radSurveyors"); Session.Add("ReportData", dt); string url = "ViewOtherReports.aspx"; ScriptManager.RegisterStartupScript(Page, Page.GetType(), "RedirectScriptCoupon", "window.open('" + url + "', '_blank')", true); } else if (radMaintDecisions.Checked) { DataTable dt = new MaintDecision().GetAllDecisions(); Session.Add("option", "radMaintDecisions"); Session.Add("ReportData", dt); string url = "ViewOtherReports.aspx"; ScriptManager.RegisterStartupScript(Page, Page.GetType(), "RedirectScriptCoupon", "window.open('" + url + "', '_blank')", true); } else if (radFWD.Checked) { lblTotal.Text = " Point " + new MaintDecision().GetAllDecisionsFWD_HAFRIAT(); lblTotal.Visible = true; } else if (radGPR.Checked) { lblTotal.Text = " km/Lane " + new MainStreet().TOTALSUMGPR().Rows[0][0].ToString(); //lblTotal.Text = "1510.21 km/Lane"; lblTotal.Visible = true; } else if (radSKID.Checked) { lblTotal.Text = " km/Lane " + new MainStreet().TOTALSUMSKID().Rows[0][0].ToString(); lblTotal.Visible = true; } else if (radIRI.Checked) { lblTotal.Text = " km/Lane " + new MaintDecision().GetAllDecisionsIRI(); lblTotal.Visible = true; } else if (radDIST.Checked) { lblTotal.Text = " km/Lane " + new MaintDecision().GetAllDecisionsDDF(); lblTotal.Visible = true; } else if (radAssets.Checked) { lblTotal.Text = " km/direction " + new MaintDecision().GetAllDecisionsAssets(); lblTotal.Visible = true; } else if (radRegionsALL.Checked) { lblTotal.Text = " m2 " + new MaintDecision().GetAllSURVEYORS_REGIONS(); lblTotal.Visible = true; } } catch (Exception ex) { lblFeedback.Text = ex.Message; } }
public bool CalculateMaintenanceDecisionForStreetIntersections(int m_MAIN_ST_ID, int SRV_ID) { int rows = 0; int mdID = 0; double intersectArea = 0; double sampleArea = 0; //double sumMaintDArea = 0; //double sampleMaintArea = 0; double deepPatchingDistsArea = 0; double iri; string iri_value = ""; MaintDecision maintD; MaintDecision[] intersectMaintD; MaintDecision[,] sampleMaintD; DataTable dtSmpDist, dtSmpUDI; double[] sampleMaintArea; // MAIN_ST_ID string sql = string.Format("select STREET_ID, INTERSECTION_ID, INTER_NO, INTERSECTION_AREA, UDI_VALUE, to_char(SURVEY_DATE,'DD/MM/YYYY','NLS_CALENDAR=''GREGORIAN''') as SURVEY_DATE, " + " to_char(UDI_DATE,'DD/MM/YYYY','NLS_CALENDAR=''GREGORIAN''') as UDI_DATE, SURVEY_NO from UDI_INTERSECTION where STREET_ID={0} and SURVEY_NO={1} ", m_MAIN_ST_ID, SRV_ID); Shared.LogMdStatment(sql); DataTable dtIntersectUDI = db.ExecuteQuery(sql); foreach (DataRow dr in dtIntersectUDI.Rows) { iri = 0; iri = m_C_Get_Data.GET_INTERSECTION_IRI(dr["INTER_NO"].ToString()); iri_value = (iri == -1) ? "NULL" : iri.ToString("0.00"); // //for (int i = 1; i <= 9; i++) //{ // intersectMaintD[i] = new MaintDecision(); // intersectMaintD[i].AffectedSamples = new Dictionary<int, int>(); //} intersectArea = double.Parse(dr["INTERSECTION_AREA"].ToString()); if (double.Parse(dr["UDI_VALUE"].ToString()) >= UDI_LIMIT_I) // udi>=70 { #region IRI //if (iri == -1) // continue; else if (iri != -1 && iri > IRI_LIMIT_I) { // IRI>4: mill and repace for the whole intersection mdID = (int)MaintenanceDecisions.Mill_Repave_5cm; // 0 1 2 3 4 5 6 7 8 sql = string.Format("Insert Into MAINTENANCE_DECISIONS (RECORD_ID, RECOMMENDED_DECISION_ID, INTERSECTION_ID, MAINT_AREA, SURVEY_DATE, UDI_DATE, SURVEY_NO, USING_UDI, USING_IRI, STREET_ID, THICKNESS, UDI, IRI) " + " Values(SEQ_MAINTENANCE_DECISION.nextval, {0}, {1}, {2}, To_date('{3}', 'DD/MM/YYYY'), To_date('{4}', 'DD/MM/YYYY'), {5}, 1, 1, {6}, " + " (select THICKNESS from MAINT_DECISIONS where RECOMMENDED_DECISION_ID={0}), {7}, {8}) ", mdID, dr["INTERSECTION_ID"].ToString(), intersectArea.ToString("0.00"), dr["SURVEY_DATE"].ToString(), dr["UDI_DATE"].ToString(), SRV_ID, m_MAIN_ST_ID, dr["UDI_VALUE"].ToString(), iri_value); Shared.LogMdStatment(sql); rows += db.ExecuteNonQuery(sql); } else if ((iri != -1 && iri <= IRI_LIMIT_I) || iri == -1) { #region perSample intersectMaintD = new MaintDecision[10]; for (int i = 1; i <= 9; i++) { intersectMaintD[i] = new MaintDecision(); //intersectMaintD[i].AffectedSamples = new Dictionary<int, int>(); } sql = string.Format("select STREET_ID, INTER_ID, INTER_NO, INTER_SAMP_ID, INTER_SAMP_NO, INTER_SAMP_AREA, UDI_VALUE, UDI_DATE, SURVEY_DATE, SURVEY_NO " + " from UDI_INTERSECTION_SAMPLE where INTER_ID={0} and SURVEY_NO={1} ", dr["INTERSECTION_ID"].ToString(), SRV_ID); Shared.LogMdStatment(sql); dtSmpUDI = db.ExecuteQuery(sql); sampleMaintD = new MaintDecision[10, dtSmpUDI.Rows.Count]; for (int i = 1; i <= 9; i++) { for (int j = 0; j < dtSmpUDI.Rows.Count; j++) { sampleMaintD[i, j] = new MaintDecision(); } } int c = 0; sampleMaintArea = new Double[dtSmpUDI.Rows.Count]; foreach (DataRow drSmpUDI in dtSmpUDI.Rows) { //sampleMaintArea = 0; deepPatchingDistsArea = 0; sampleArea = double.Parse(drSmpUDI["INTER_SAMP_AREA"].ToString()); if (double.Parse(drSmpUDI["UDI_VALUE"].ToString()) < UDI_LIMIT_IS) { // sample UDI < 70: mill and repave the whole sample sampleMaintArea[c] = sampleArea; mdID = (int)MaintenanceDecisions.Mill_Repave_5cm; intersectMaintD[(int)MaintenanceDecisions.Mill_Repave_5cm].MaintArea += sampleArea; sampleMaintD[(int)MaintenanceDecisions.Mill_Repave_5cm, c].MaintArea = sampleArea; sampleMaintD[(int)MaintenanceDecisions.Mill_Repave_5cm, c].UDI = int.Parse(drSmpUDI["UDI_VALUE"].ToString()); sampleMaintD[(int)MaintenanceDecisions.Mill_Repave_5cm, c].AffectedSampleID = int.Parse(drSmpUDI["INTER_SAMP_ID"].ToString()); } else { // sample UDI >= 70: check maintenance decisions for sample distresses sql = string.Format("select DIST_CODE, DIST_SEVERITY, DIST_AREA, DIST_DENSITY from V_INTERSECT_SAMPLE_DECISIONS " + " where INTER_SAMP_ID={0} and SURVEY_NO={1} ", drSmpUDI["INTER_SAMP_ID"].ToString(), SRV_ID); Shared.LogMdStatment(sql); dtSmpDist = db.ExecuteQuery(sql); foreach (DataRow drDist in dtSmpDist.Rows) { maintD = deciding.GetMaintDecision(int.Parse(drDist["DIST_CODE"].ToString()), drDist["DIST_SEVERITY"].ToString()[0], double.Parse(drDist["DIST_DENSITY"].ToString()), double.Parse(drDist["DIST_AREA"].ToString())); if (maintD.MaintDecisionID != 0 && maintD.MaintArea < (sampleArea / 2)) { sampleMaintArea[c] += maintD.MaintArea; intersectMaintD[maintD.MaintDecisionID].MaintArea += maintD.MaintArea; sampleMaintD[maintD.MaintDecisionID, c].MaintArea += maintD.MaintArea; sampleMaintD[maintD.MaintDecisionID, c].UDI = int.Parse(drSmpUDI["UDI_VALUE"].ToString()); sampleMaintD[maintD.MaintDecisionID, c].AffectedSampleID = int.Parse(drSmpUDI["INTER_SAMP_ID"].ToString()); //intersectMaintD[maintD.MaintDecisionID].MaintArea += maintD.MaintArea; //intersectMaintD[maintD.MaintDecisionID].AffectedSamples.Remove(int.Parse(drSmpUDI["INTER_SAMP_ID"].ToString())); //intersectMaintD[maintD.MaintDecisionID].AffectedSamples.Add(int.Parse(drSmpUDI["INTER_SAMP_ID"].ToString()), int.Parse(drSmpUDI["UDI_VALUE"].ToString())); //if (maintD.MaintDecisionID != 1) // intersectMaintD[(int)MaintenanceDecisions.DoNothing].AffectedSamples.Remove(int.Parse(drSmpUDI["INTER_SAMP_ID"].ToString())); } else { // remove all previously decisions taken on sample and take "Deep Patching" and "Mill-repave" decisions for (int i = 1; i <= 9; i++) { sampleMaintD[i, c].AffectedSampleID = 0; sampleMaintD[i, c].MaintArea = 0; sampleMaintD[i, c].UDI = int.Parse(drSmpUDI["UDI_VALUE"].ToString()); } sampleMaintArea[c] += sampleArea; sql = string.Format("select nvl(sum(DIST_AREA), 0) as sum_dist_area from V_INTERSECT_SAMPLE_DECISIONS where INTER_SAMP_ID= {0} and survey_no={1} " + " and ((dist_code in (6, 7, 8, 13) and DIST_SEVERITY='H') or (dist_code=1 and DIST_SEVERITY='M')) ", drSmpUDI["INTER_SAMP_ID"].ToString(), SRV_ID); Shared.LogMdStatment(sql); deepPatchingDistsArea = double.Parse(db.ExecuteScalar(sql).ToString()); intersectMaintD[(int)MaintenanceDecisions.DeepPatching].MaintArea += deepPatchingDistsArea; intersectMaintD[(int)MaintenanceDecisions.Mill_Repave_5cm].MaintArea += sampleArea; sampleMaintD[(int)MaintenanceDecisions.DeepPatching, c].MaintArea = deepPatchingDistsArea; sampleMaintD[(int)MaintenanceDecisions.DeepPatching, c].UDI = int.Parse(drSmpUDI["UDI_VALUE"].ToString()); sampleMaintD[(int)MaintenanceDecisions.DeepPatching, c].AffectedSampleID = int.Parse(drSmpUDI["INTER_SAMP_ID"].ToString()); sampleMaintD[(int)MaintenanceDecisions.Mill_Repave_5cm, c].MaintArea = sampleArea; sampleMaintD[(int)MaintenanceDecisions.Mill_Repave_5cm, c].UDI = int.Parse(drSmpUDI["UDI_VALUE"].ToString()); sampleMaintD[(int)MaintenanceDecisions.Mill_Repave_5cm, c].AffectedSampleID = int.Parse(drSmpUDI["INTER_SAMP_ID"].ToString()); break; } } } if (sampleMaintArea[c] == 0) { sampleMaintD[(int)MaintenanceDecisions.DoNothing, c].AffectedSampleID = int.Parse(drSmpUDI["INTER_SAMP_ID"].ToString()); sampleMaintD[(int)MaintenanceDecisions.DoNothing, c].UDI = int.Parse(drSmpUDI["UDI_VALUE"].ToString()); sampleMaintD[(int)MaintenanceDecisions.DoNothing, c].MaintArea = 0; } else { sampleMaintD[(int)MaintenanceDecisions.DoNothing, c].AffectedSampleID = 0; } c += 1; } // check maintenance area not exceeding 50% of intersection area for (int md = 1; md <= 9; md++) { if (intersectMaintD[md].MaintArea > intersectArea / 2) { intersectMaintD[md].MaintArea = intersectArea; for (c = 0; c < dtSmpUDI.Rows.Count; c++) { sampleMaintD[(int)MaintenanceDecisions.DoNothing, c].AffectedSampleID = 0; sampleMaintD[md, c].AffectedSampleID = int.Parse(dtSmpUDI.Rows[c]["INTER_SAMP_ID"].ToString()); sampleMaintD[md, c].UDI = int.Parse(dtSmpUDI.Rows[c]["UDI_VALUE"].ToString()); sampleMaintD[md, c].MaintArea = double.Parse(dtSmpUDI.Rows[c]["INTER_SAMP_AREA"].ToString()); } //foreach (DataRow drSample in dtSmpUDI.Rows) //{ // intersectMaintD[i].AffectedSamples.Remove(int.Parse(drSample["INTER_SAMP_ID"].ToString())); // intersectMaintD[i].AffectedSamples.Add(int.Parse(drSample["INTER_SAMP_ID"].ToString()), int.Parse(drSample["UDI_VALUE"].ToString())); //} } // save lane maintenance decision to DB if ((md != 1 && intersectMaintD[md].MaintArea == 0)) { continue; } else { for (c = 0; c < dtSmpUDI.Rows.Count; c++) { if (sampleMaintD[md, c].AffectedSampleID != 0) { // 0 1 2 3 4 5 6 7 8 9 sql = string.Format("Insert Into MAINTENANCE_DECISIONS (RECORD_ID, RECOMMENDED_DECISION_ID, INTERSECTION_ID, MAINT_AREA, SURVEY_DATE, UDI_DATE, SURVEY_NO, USING_UDI, USING_IRI, STREET_ID, THICKNESS, UDI, INT_SMP_ID, IRI) " + " Values(SEQ_MAINTENANCE_DECISION.nextval, {0}, {1}, {2}, To_date('{3}', 'DD/MM/YYYY'), To_date('{4}', 'DD/MM/YYYY'), " + " {5}, 1, 1, {6}, (select THICKNESS from MAINT_DECISIONS where RECOMMENDED_DECISION_ID={0}), {7}, {8}, {9}) ", md, dr["INTERSECTION_ID"].ToString(), sampleMaintD[md, c].MaintArea.ToString("0.00"), dr["SURVEY_DATE"].ToString(), dr["UDI_DATE"].ToString(), SRV_ID, m_MAIN_ST_ID, sampleMaintD[md, c].UDI, sampleMaintD[md, c].AffectedSampleID, iri_value); Shared.LogMdStatment(sql); rows += db.ExecuteNonQuery(sql); } else { continue; } } } } #endregion } #endregion } else // udi <70 { mdID = (int)MaintenanceDecisions.Mill_Repave_5cm; // 0 1 2 3 4 5 6 7 8 sql = string.Format("Insert Into MAINTENANCE_DECISIONS (RECORD_ID, RECOMMENDED_DECISION_ID, INTERSECTION_ID, MAINT_AREA, SURVEY_DATE, UDI_DATE, SURVEY_NO, USING_UDI, USING_IRI, STREET_ID, THICKNESS, UDI, IRI) " + " Values(SEQ_MAINTENANCE_DECISION.nextval, {0}, {1}, {2}, To_date('{3}', 'DD/MM/YYYY'), To_date('{4}', 'DD/MM/YYYY'), {5}, 1, 1, {6}, " + " (select THICKNESS from MAINT_DECISIONS where RECOMMENDED_DECISION_ID={0}), {7}, {8}) ", mdID, dr["INTERSECTION_ID"].ToString(), intersectArea.ToString("0.00"), dr["SURVEY_DATE"].ToString(), dr["UDI_DATE"].ToString(), SRV_ID, m_MAIN_ST_ID, dr["UDI_VALUE"].ToString(), iri_value); Shared.LogMdStatment(sql); rows += db.ExecuteNonQuery(sql); } } return(rows > 0); }
protected void btnShowReport_Click(object sender, EventArgs e) { try { lblFeedback.Text = ""; lblTotal.Visible = false; if (radAreas.Checked) { if (raddtpFrom.SelectedDate == null) { throw new Exception("الرجاء تحديد التاريخ"); } lblTotal.Text = new JpmmsCharting().GetDailyDataEntryTotalArea(raddtpFrom.SelectedDate).ToString("N2"); lblTotal.Visible = true; } else if (radNetworkArea.Checked) { PavementStatusReport total = new JpmmsCharting().GetWholeNetworkArea(); lblTotal.Text = string.Format("مقاطع: {0} م2 \n تقاطعات: {1} م2 \n مناطق فرعية: {2} م2 \n المجموع: {3} م2", total.MainStSectionsTotal.ToString("N2"), total.MainStIntersectsTotal.ToString("N2"), total.RegionsTotal.ToString("N2"), total.WholeNetworkTotal.ToString("N2")); lblTotal.Visible = true; } else if (radIntersectTypes.Checked) { DataTable dt = new GeneralPmmsReporting().GetIntersectionTypes(); Session.Add("option", "radIntersectTypes"); Session.Add("ReportData", dt); string url = "ViewOtherReports.aspx"; ScriptManager.RegisterStartupScript(Page, Page.GetType(), "RedirectScriptCoupon", "window.open('" + url + "', '_blank')", true); } else if (radMaintDeciding.Checked) { DataTable dt = new MaintDeciding().GetAllMaintDeciding(); Session.Add("option", "radMaintDeciding"); Session.Add("ReportData", dt); string url = "ViewOtherReports.aspx"; ScriptManager.RegisterStartupScript(Page, Page.GetType(), "RedirectScriptCoupon", "window.open('" + url + "', '_blank')", true); } else if (radSurveyors.Checked) { DataTable dt = new Surveyor().GetAllSurveyors(); Session.Add("option", "radSurveyors"); Session.Add("ReportData", dt); string url = "ViewOtherReports.aspx"; ScriptManager.RegisterStartupScript(Page, Page.GetType(), "RedirectScriptCoupon", "window.open('" + url + "', '_blank')", true); } else if (radMaintDecisions.Checked) { DataTable dt = new MaintDecision().GetAllDecisions(); Session.Add("option", "radMaintDecisions"); Session.Add("ReportData", dt); string url = "ViewOtherReports.aspx"; ScriptManager.RegisterStartupScript(Page, Page.GetType(), "RedirectScriptCoupon", "window.open('" + url + "', '_blank')", true); } } catch (Exception ex) { lblFeedback.Text = ex.Message; } }