// insert all object members as a new row in table, in a transaction // the transaction and or connection state is not changed in any way other than what SqlClient does to it. // it is the callers responsibility to commit or rollback the transaction // links: // docLink: http://sql2x.org/documentationLink/542f9458-c3b9-4edf-8575-0870086f3a7f public void Insert(CrudeFlightScheduleIdentifierContract contract, SqlConnection connection, SqlTransaction transaction) { var data = new CrudeFlightScheduleIdentifierData(); ContractToData(contract, data); data.Insert(connection, transaction); }
// insert all object members as a new row in table // links: // docLink: http://sql2x.org/documentationLink/75aad010-e6aa-4f19-a6e5-597456aa20d8 public void Insert(CrudeFlightScheduleIdentifierContract contract) { var data = new CrudeFlightScheduleIdentifierData(); ContractToData(contract, data); data.Insert(); }
// transfer model to data and insert, on transaction // links: // docLink: http://sql2x.org/documentationLink/fbeb7c34-b2d7-403b-a9fd-503ab705ef81 public void Insert(CrudeFlightScheduleIdentifierModel model, SqlConnection connection, SqlTransaction transaction) { var data = new CrudeFlightScheduleIdentifierData(); ModelToData(model, data); data.Insert(connection, transaction); }
// transfer model to data and insert // links: // docLink: http://sql2x.org/documentationLink/17cd8423-3c78-459f-a45b-773fcfbc3b7d public void Insert(CrudeFlightScheduleIdentifierModel model) { var data = new CrudeFlightScheduleIdentifierData(); ModelToData(model, data); data.Insert(); }
/// <summary>Create schedule record including identifiers</summary> /// <summary>Action log event inserted, exceptions logged</summary> public void CreateSchedule( ScheduleContract scheduleContract, Guid userId ) { Logging.ActionLog("SolutionNorSolutionPort.BusinessLogicLayer.ScheduleService.CreateSchedule", userId ); // start transaction using (var connection = new SqlConnection(Conn.ConnectionString)) { connection.Open(); SqlTransaction transaction = connection.BeginTransaction(); try { // insert flight schedule var crudeFlightScheduleData = new CrudeFlightScheduleData(); CrudeFlightScheduleService.ContractToData( scheduleContract.FlightSchedule, crudeFlightScheduleData ); crudeFlightScheduleData.FlightScheduleId = Guid.NewGuid(); // first flight schedule id has equal flight schedule id crudeFlightScheduleData.BindingFlightScheduleId = crudeFlightScheduleData.FlightScheduleId; crudeFlightScheduleData.UserId = userId; crudeFlightScheduleData.DateTime = DateTime.UtcNow; crudeFlightScheduleData.Insert(connection, transaction); // insert flight identifier, if existing // todo, there can be more than one identifier if (!String.IsNullOrEmpty(scheduleContract.FlightScheduleIdentifier.FlightIdentifierCode)) { var crudeFlightScheduleIdentifierData = new CrudeFlightScheduleIdentifierData(); crudeFlightScheduleIdentifierData.FlightScheduleId = crudeFlightScheduleData.FlightScheduleId; crudeFlightScheduleIdentifierData.FlightIdentifierCode = scheduleContract.FlightScheduleIdentifier.FlightIdentifierCode; crudeFlightScheduleIdentifierData.FlightIdentifierTypeRcd = FlightIdentifierTypeRef.FlightNumberThree; crudeFlightScheduleIdentifierData.DateTime = DateTime.UtcNow; crudeFlightScheduleIdentifierData.UserId = userId; crudeFlightScheduleIdentifierData.Insert(connection, transaction); } // commit transaction transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); Logging.ErrorLog("Schedule", "ScheduleService", "CreateSchedule", ex.Message, ex.StackTrace, userId ); throw ex; } } }
/// <summary>Update schedule record including identifiers</summary> /// <summary>Identifier will be created if not existing</summary> /// <summary>Action log event inserted, exceptions logged</summary> public void UpdateSchedule( ScheduleContract scheduleContract, Guid userId ) { Logging.ActionLog("SolutionNorSolutionPort.BusinessLogicLayer.ScheduleService.UpdateSchedule", userId ); // make sure this is not an historical record if (scheduleContract.FlightSchedule.BecameFlightScheduleId != Guid.Empty) { Logging.ErrorLog("Schedule", "ScheduleService", "UpdateSchedule", "Schedule.UpdateSchedule: Can not update a history schedule flight record", string.Empty, userId ); throw new Exception("Schedule.UpdateSchedule: Can not update a history schedule flight record"); } // start transaction using (var connection = new SqlConnection(Conn.ConnectionString)) { connection.Open(); SqlTransaction transaction = connection.BeginTransaction(); try { // insert new flight schedule var crudeNewFlightScheduleData = new CrudeFlightScheduleData(); CrudeFlightScheduleService.ContractToData( scheduleContract.FlightSchedule, crudeNewFlightScheduleData ); crudeNewFlightScheduleData.FlightScheduleId = Guid.NewGuid(); // binding flight schedule id carries on forward crudeNewFlightScheduleData.BindingFlightScheduleId = scheduleContract.FlightSchedule.BindingFlightScheduleId; crudeNewFlightScheduleData.UserId = userId; crudeNewFlightScheduleData.DateTime = DateTime.UtcNow; crudeNewFlightScheduleData.Insert(connection, transaction); // insert new identifier // todo, can be more than one if (scheduleContract.FlightScheduleIdentifier.FlightIdentifierCode != string.Empty) { var crudeNewFlightScheduleIdentifierData = new CrudeFlightScheduleIdentifierData(); CrudeFlightScheduleIdentifierService.ContractToData( scheduleContract.FlightScheduleIdentifier, crudeNewFlightScheduleIdentifierData ); crudeNewFlightScheduleIdentifierData.FlightScheduleIdentifierId = Guid.NewGuid(); crudeNewFlightScheduleIdentifierData.FlightScheduleId = crudeNewFlightScheduleData.FlightScheduleId; crudeNewFlightScheduleIdentifierData.FlightIdentifierTypeRcd = FlightIdentifierTypeRef.FlightNumberThree; crudeNewFlightScheduleIdentifierData.DateTime = DateTime.UtcNow; crudeNewFlightScheduleIdentifierData.UserId = userId; crudeNewFlightScheduleIdentifierData.Insert(connection, transaction); } // update old flight schedule 'became' identifier var crudeOldFlightScheduleData = new CrudeFlightScheduleData(); crudeOldFlightScheduleData.FetchByFlightScheduleId(scheduleContract.FlightSchedule.FlightScheduleId); crudeOldFlightScheduleData.BecameFlightScheduleId = crudeNewFlightScheduleData.FlightScheduleId; crudeOldFlightScheduleData.Update(connection, transaction); // copy schedule segments List <CrudeFlightScheduleSegmentData> crudeFlightScheduleSegmentsData = CrudeFlightScheduleSegmentData.FetchByFlightScheduleId( scheduleContract.FlightSchedule.FlightScheduleId ); foreach (CrudeFlightScheduleSegmentData crudeFlightScheduleSegmentData in crudeFlightScheduleSegmentsData) { crudeFlightScheduleSegmentData.FlightScheduleSegmentId = Guid.NewGuid(); crudeFlightScheduleSegmentData.FlightScheduleId = crudeNewFlightScheduleData.FlightScheduleId; crudeFlightScheduleSegmentData.DateTime = DateTime.UtcNow; crudeFlightScheduleSegmentData.UserId = userId; crudeFlightScheduleSegmentData.Insert(connection, transaction); } // commit transaction transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); Logging.ErrorLog("Schedule", "ScheduleService", "UpdateSchedule", ex.Message, ex.StackTrace, userId ); throw ex; } } }