public void UpdateFlight( FlightContract flightContract, Guid userId ) { Logging.ActionLog("SolutionNorSolutionPort.BusinessLogicLayer.FlightService.UpdateFlight", userId ); // start transaction using (var connection = new SqlConnection(Conn.ConnectionString)) { connection.Open(); SqlTransaction transaction = connection.BeginTransaction(); try { // insert new flight var crudeNewFlightData = new CrudeFlightData(); CrudeFlightService.ContractToData( flightContract.Flight, crudeNewFlightData ); crudeNewFlightData.FlightId = Guid.NewGuid(); // binding flight id carries on forward crudeNewFlightData.BindingFlightId = flightContract.Flight.BindingFlightId; crudeNewFlightData.UserId = userId; crudeNewFlightData.DateTime = DateTime.UtcNow; crudeNewFlightData.Insert(connection, transaction); // todo, can be more than one if (!String.IsNullOrEmpty(flightContract.FlightIdentifier.FlightIdentifierCode)) { var crudeNewFlightIdentifierData = new CrudeFlightIdentifierData(); CrudeFlightIdentifierService.ContractToData( flightContract.FlightIdentifier, crudeNewFlightIdentifierData ); crudeNewFlightIdentifierData.FlightIdentifierId = Guid.NewGuid(); crudeNewFlightIdentifierData.FlightId = crudeNewFlightData.FlightId; crudeNewFlightIdentifierData.FlightIdentifierTypeRcd = FlightIdentifierTypeRef.FlightNumberThree; crudeNewFlightIdentifierData.DateTime = DateTime.UtcNow; crudeNewFlightIdentifierData.UserId = userId; crudeNewFlightIdentifierData.Insert(connection, transaction); } // update old flight schedule 'became' identifier var crudeOldFlightData = new CrudeFlightData(); crudeOldFlightData.FetchByFlightId(flightContract.Flight.FlightId); crudeOldFlightData.BecameFlightId = crudeNewFlightData.FlightId; crudeOldFlightData.Update(connection, transaction); // copy segments List <CrudeFlightSegmentData> crudeFlightSegmentsData = CrudeFlightSegmentData.FetchByFlightId( flightContract.Flight.FlightId ); foreach (CrudeFlightSegmentData crudeFlightSegmentData in crudeFlightSegmentsData) { crudeFlightSegmentData.FlightSegmentId = Guid.NewGuid(); crudeFlightSegmentData.FlightId = crudeNewFlightData.FlightId; crudeFlightSegmentData.DateTime = DateTime.UtcNow; crudeFlightSegmentData.UserId = userId; crudeFlightSegmentData.Insert(connection, transaction); } // commit transaction transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); Logging.ErrorLog("Flight", "FlightService", "UpdateFlight", ex.Message, ex.StackTrace, userId ); throw ex; } } }
// fetch by Search key into current object // links: // crud definition: https://en.wikipedia.org/wiki/Create,_read,_update_and_delete // docLink: http://sql2x.org/documentationLink/87368fa6-b618-4f0c-acbb-1fc4e273bb2d // parameters: // FlightId: key of table CrudeFlightSegmentData public List <CrudeFlightSegmentModel> FetchByFlightId(System.Guid flightId) { return(DataListToModelList(CrudeFlightSegmentData.FetchByFlightId(flightId))); }
// fetch by Foreign key into new List of class instances // links: // docLink: http://sql2x.org/documentationLink/a7599485-4f00-4ebf-974d-53f69c43654e public List <CrudeFlightSegmentContract> FetchByFlightId(System.Guid flightId) { return(DataListToContractList(CrudeFlightSegmentData.FetchByFlightId(flightId))); }