public void doEnableDisableSegment(string segment_id, E_PORT_STATUS port_status, string laneCutType) { ASEGMENT segment = null; try { List <APORTSTATION> port_stations = PortStationBLL.OperateCatch.loadAllPortBySegmentID(segment_id, SectionBLL); using (TransactionScope tx = SCUtility.getTransactionScope()) { using (DBConnection_EF con = DBConnection_EF.GetUContext()) { switch (port_status) { case E_PORT_STATUS.InService: segment = RouteGuide.OpenSegment(segment_id); break; case E_PORT_STATUS.OutOfService: segment = RouteGuide.CloseSegment(segment_id); break; } foreach (APORTSTATION port_station in port_stations) { PortStationBLL.OperateDB.updatePortStationStatus(port_station.PORT_ID, port_status); PortStationBLL.OperateCatch.updatePortStationStatus(port_station.PORT_ID, port_status); } tx.Complete(); } } List <AMCSREPORTQUEUE> reportqueues = new List <AMCSREPORTQUEUE>(); List <ASECTION> sections = SectionBLL.cache.loadSectionsBySegmentID(segment_id); string segment_start_adr = sections.First().FROM_ADR_ID; string segment_end_adr = sections.Last().TO_ADR_ID; switch (port_status) { case E_PORT_STATUS.InService: ReportBLL.newReportLaneInService(segment_start_adr, segment_end_adr, laneCutType, reportqueues); break; case E_PORT_STATUS.OutOfService: ReportBLL.newReportLaneOutOfService(segment_start_adr, segment_end_adr, laneCutType, reportqueues); break; } foreach (APORTSTATION port_station in port_stations) { switch (port_status) { case E_PORT_STATUS.InService: ReportBLL.newReportPortInServeice(port_station.PORT_ID, reportqueues); break; case E_PORT_STATUS.OutOfService: ReportBLL.newReportPortOutOfService(port_station.PORT_ID, reportqueues); break; } } ReportBLL.newSendMCSMessage(reportqueues); } catch (Exception ex) { segment = null; logger.Error(ex, "Exception:"); } //return segment; }