// fetch by Foreign key into new List of class instances // links: // docLink: http://sql2x.org/documentationLink/a7599485-4f00-4ebf-974d-53f69c43654e public List <CrudeFlightScheduleSegmentContract> FetchByFlightScheduleId(System.Guid flightScheduleId) { return(DataListToContractList(CrudeFlightScheduleSegmentData.FetchByFlightScheduleId(flightScheduleId))); }
// 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: // FlightScheduleId: key of table CrudeFlightScheduleSegmentData public List <CrudeFlightScheduleSegmentModel> FetchByFlightScheduleId(System.Guid flightScheduleId) { return(DataListToModelList(CrudeFlightScheduleSegmentData.FetchByFlightScheduleId(flightScheduleId))); }
/// <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; } } }