// update all object members on a row in table based on primary key // links: // docLink: http://sql2x.org/documentationLink/ce75e72e-fb16-4f4e-a2e6-dbd079dfa206 public void Update(CrudeFlightSegmentContract contract) { var data = new CrudeFlightSegmentData(); ContractToData(contract, data); data.Update(); }
// update all object members on a row in table based on primary key, on 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/b798ad6b-f4b8-466a-9086-6588a814fcf3 public void Update(CrudeFlightSegmentContract contract, SqlConnection connection, SqlTransaction transaction) { var data = new CrudeFlightSegmentData(); ContractToData(contract, data); data.Update(connection, transaction); }
// fetch all rows from table into new List of Contracts, filtered by any column // links: // docLink: http://sql2x.org/documentationLink/ce01ef4a-5cd0-4e51-b211-9c0a15b791a0 public List <CrudeFlightSegmentContract> FetchWithFilter(System.Guid flightSegmentId, System.Guid flightId, System.Guid departureAirportId, System.Guid arrivalAirportId, int logicalSegmentNumber, int physicalSegmentNumber, System.DateTime fromDateTime, System.DateTime untilDateTime, string departureGate, string arrivalGate, System.Guid userId, System.DateTime dateTime) { var list = new List <CrudeFlightSegmentContract>(); List <CrudeFlightSegmentData> dataList = CrudeFlightSegmentData.FetchWithFilter( flightSegmentId: flightSegmentId, flightId: flightId, departureAirportId: departureAirportId, arrivalAirportId: arrivalAirportId, logicalSegmentNumber: logicalSegmentNumber, physicalSegmentNumber: physicalSegmentNumber, fromDateTime: fromDateTime, untilDateTime: untilDateTime, departureGate: departureGate, arrivalGate: arrivalGate, userId: userId, dateTime: dateTime ); foreach (CrudeFlightSegmentData data in dataList) { var crudeFlightSegmentContract = new CrudeFlightSegmentContract(); DataToContract(data, crudeFlightSegmentContract); list.Add(crudeFlightSegmentContract); } return(list); }
// insert all object members as a new row in table // links: // docLink: http://sql2x.org/documentationLink/75aad010-e6aa-4f19-a6e5-597456aa20d8 public void Insert(CrudeFlightSegmentContract contract) { var data = new CrudeFlightSegmentData(); ContractToData(contract, data); data.Insert(); }
// transfer model to data and update, on a transaction // links: // docLink: http://sql2x.org/documentationLink/aa07e05b-edc8-4e09-bf93-bf2a40c93c09 public void Update(CrudeFlightSegmentModel model, SqlConnection connection, SqlTransaction transaction) { var data = new CrudeFlightSegmentData(); ModelToData(model, data); data.Update(connection, transaction); }
// transfer model to data and update // links: // docLink: http://sql2x.org/documentationLink/658fda50-2ad3-414e-9299-2b399d17a057 public void Update(CrudeFlightSegmentModel model) { var data = new CrudeFlightSegmentData(); ModelToData(model, data); data.Update(); }
/// <summary>get all segments for flight</summary> public static List <CrudeFlightSegmentData> GetFlightSegments(System.Guid flightId) { var dataList = new List <CrudeFlightSegmentData>(); string sql = @" select flight_segment_id, flight_id, departure_airport_id, arrival_airport_id, logical_segment_number, physical_segment_number, from_date_time, until_date_time, departure_gate, arrival_gate, user_id, date_time from flight_segment as fs where fs.flight_id = @flight_id order by fs.physical_segment_number "; using (var conn = new SqlConnection(Conn.ConnectionString)) { conn.Open(); using (var command = new SqlCommand(sql, conn)) { command.Parameters.Add("@flight_id", SqlDbType.UniqueIdentifier).Value = flightId; Logging log = Logging.PerformanceTimeStart("SolutionNorSolutionPort.DataAccessLayer.Flight.GetFlightSegments"); IDataReader reader = command.ExecuteReader(CommandBehavior.SingleResult); log.PerformanceTimeStop(sql, command); while (reader.Read()) { var data = new CrudeFlightSegmentData(); data.Populate(reader); dataList.Add(data); } } return(dataList); } }
// transfer model to data and insert // links: // docLink: http://sql2x.org/documentationLink/17cd8423-3c78-459f-a45b-773fcfbc3b7d public void Insert(CrudeFlightSegmentModel model) { var data = new CrudeFlightSegmentData(); ModelToData(model, data); data.Insert(); }
// copy all rows from a List of SOAP Contracts to a List of serialized data objects // links: // docLink: http://sql2x.org/documentationLink/1c6c6b9c-e201-4590-8c69-d38a0ad2a9f7 public static void ContractListToDataList(List <CrudeFlightSegmentContract> contractList, List <CrudeFlightSegmentData> dataList) { foreach (CrudeFlightSegmentContract contract in contractList) { var data = new CrudeFlightSegmentData(); CrudeFlightSegmentService.ContractToData(contract, data); dataList.Add(data); } }
// transfer model list to data list // links: // crud definition: https://en.wikipedia.org/wiki/Create,_read,_update_and_delete // docLink: http://sql2x.org/documentationLink/1d6a48d9-fe39-4397-b8fa-a332da164cbf // parameters: // CrudeFlightSegmentData: key of table CrudeFlightSegmentData public static void ModelListToDataList(List <CrudeFlightSegmentModel> modelList, List <CrudeFlightSegmentData> dataList) { foreach (CrudeFlightSegmentModel model in modelList) { var data = new CrudeFlightSegmentData(); ModelToData(model, data); dataList.Add(data); } }
// fetch by Primary key into current object // links: // crud definition: https://en.wikipedia.org/wiki/Create,_read,_update_and_delete // docLink: http://sql2x.org/documentationLink/fdcc33b4-08f1-43c3-ae28-95fbf029c3bd // parameters: // CrudeFlightSegmentData: primary key of table CrudeFlightSegmentData public CrudeFlightSegmentModel FetchByFlightSegmentId(System.Guid flightSegmentId) { var dataAccessLayer = new CrudeFlightSegmentData(); var model = new CrudeFlightSegmentModel(); dataAccessLayer.FetchByFlightSegmentId(flightSegmentId); DataToModel(dataAccessLayer, model); return(model); }
// fetch by Primary key into current object // links: // crud definition: https://en.wikipedia.org/wiki/Create,_read,_update_and_delete // docLink: http://sql2x.org/documentationLink/bbab4791-c9e7-49bf-90d5-fca19b1fedaa // parameters: // flightSegmentId: primary key of table flight_segment public CrudeFlightSegmentContract FetchByFlightSegmentId(System.Guid flightSegmentId) { var dataAccessLayer = new CrudeFlightSegmentData(); var contract = new CrudeFlightSegmentContract(); dataAccessLayer.FetchByFlightSegmentId(flightSegmentId); DataToContract(dataAccessLayer, contract); return(contract); }
// fetch all rows from table with an offset, and limit of rows // links: // docLink: http://sql2x.org/documentationLink/a87e5c54-b47e-4031-bc3b-837b4cf9f692 public List <CrudeFlightSegmentModel> FetchAllWithLimitAndOffset(string limit, string offset) { var list = new List <CrudeFlightSegmentModel>(); List <CrudeFlightSegmentData> dataList = CrudeFlightSegmentData.FetchAllWithLimitAndOffset(int.Parse(limit), int.Parse(offset)); foreach (CrudeFlightSegmentData crudeFlightSegmentBusiness in dataList) { var model = new CrudeFlightSegmentModel(); DataToModel(crudeFlightSegmentBusiness, model); list.Add(model); } return(list); }
// copy all rows from a List of serialized data objects in CrudeFlightSegmentData to a List of SOAP Contracts // links: // docLink: http://sql2x.org/documentationLink/3d3e60c3-69e4-43d6-8bd5-14a67a6ecf58 public List <CrudeFlightSegmentModel> FetchAll() { var list = new List <CrudeFlightSegmentModel>(); List <CrudeFlightSegmentData> dataList = CrudeFlightSegmentData.FetchAll(); foreach (CrudeFlightSegmentData crudeFlightSegmentBusiness in dataList) { var model = new CrudeFlightSegmentModel(); DataToModel(crudeFlightSegmentBusiness, model); list.Add(model); } return(list); }
// copy all rows from a List of serialized data objects in CrudeFlightSegmentData to a List of SOAP Contracts // links: // docLink: http://sql2x.org/documentationLink/9204c68e-93b8-4c77-af3c-3181985ff75f public List <CrudeFlightSegmentContract> FetchAll() { var list = new List <CrudeFlightSegmentContract>(); List <CrudeFlightSegmentData> dataList = CrudeFlightSegmentData.FetchAll(); foreach (CrudeFlightSegmentData crudeFlightSegment in dataList) { var contract = new CrudeFlightSegmentContract(); DataToContract(crudeFlightSegment, contract); list.Add(contract); } return(list); }
// copy all rows from a List of serialized data objects to a List of SOAP Contracts, // with a limit on number of returned rows and order by columns, starting at a specific row // links: // docLink: http://sql2x.org/documentationLink/3fe9f1b3-97b6-4f58-a0f2-adfcbd973bfc public List <CrudeFlightSegmentContract> FetchAllWithLimitAndOffset(int limit, int offset) { var list = new List <CrudeFlightSegmentContract>(); List <CrudeFlightSegmentData> dataList = CrudeFlightSegmentData.FetchAllWithLimitAndOffset(limit, offset); foreach (CrudeFlightSegmentData crudeFlightSegment in dataList) { var contract = new CrudeFlightSegmentContract(); DataToContract(crudeFlightSegment, contract); list.Add(contract); } return(list); }
// fetch all from table into new List of class instances, filtered by any column // links: // docLink: http://sql2x.org/documentationLink/db27658d-4d23-46d7-9970-7bbaef8634b0 public List <CrudeFlightSegmentModel> FetchWithFilter(System.Guid flightSegmentId, System.Guid flightId, System.Guid departureAirportId, System.Guid arrivalAirportId, int logicalSegmentNumber, int physicalSegmentNumber, System.DateTime fromDateTime, System.DateTime untilDateTime, string departureGate, string arrivalGate, System.Guid userId, System.DateTime dateTime) { var list = new List <CrudeFlightSegmentModel>(); List <CrudeFlightSegmentData> dataList = CrudeFlightSegmentData.FetchWithFilter(flightSegmentId, flightId, departureAirportId, arrivalAirportId, logicalSegmentNumber, physicalSegmentNumber, fromDateTime, untilDateTime, departureGate, arrivalGate, userId, dateTime); foreach (CrudeFlightSegmentData data in dataList) { var crudeFlightSegmentBusinessModel = new CrudeFlightSegmentModel(); DataToModel(data, crudeFlightSegmentBusinessModel); list.Add(crudeFlightSegmentBusinessModel); } return(list); }
// copy all columns from a SOAP Contract to a serialized data object // links: // docLink: http://sql2x.org/documentationLink/10700d38-2227-4021-be12-2f4f206f5dd9 public static void ContractToData(CrudeFlightSegmentContract contract, CrudeFlightSegmentData data) { data.FlightSegmentId = contract.FlightSegmentId; data.FlightId = contract.FlightId; data.DepartureAirportId = contract.DepartureAirportId; data.ArrivalAirportId = contract.ArrivalAirportId; data.LogicalSegmentNumber = contract.LogicalSegmentNumber; data.PhysicalSegmentNumber = contract.PhysicalSegmentNumber; data.FromDateTime = contract.FromDateTime; data.UntilDateTime = contract.UntilDateTime; data.DepartureGate = contract.DepartureGate; data.ArrivalGate = contract.ArrivalGate; data.UserId = contract.UserId; data.DateTime = contract.DateTime; }
// copy all columns from a serialized data object to a SOAP Contract // links: // docLink: http://sql2x.org/documentationLink/7553d6dd-da65-4a72-84c8-81f2f99ef4f5 public static void DataToContract(CrudeFlightSegmentData data, CrudeFlightSegmentContract contract) { contract.FlightSegmentId = data.FlightSegmentId; contract.FlightId = data.FlightId; contract.DepartureAirportId = data.DepartureAirportId; contract.ArrivalAirportId = data.ArrivalAirportId; contract.LogicalSegmentNumber = data.LogicalSegmentNumber; contract.PhysicalSegmentNumber = data.PhysicalSegmentNumber; contract.FromDateTime = data.FromDateTime; contract.UntilDateTime = data.UntilDateTime; contract.DepartureGate = data.DepartureGate; contract.ArrivalGate = data.ArrivalGate; contract.UserId = data.UserId; contract.DateTime = data.DateTime; }
// transfer data object to model object // links: // docLink: http://sql2x.org/documentationLink/43d57600-5ff5-4ef8-9330-123773d100d3 public static void DataToModel(CrudeFlightSegmentData data, CrudeFlightSegmentModel model) { model.FlightSegmentId = data.FlightSegmentId; model.FlightId = data.FlightId; model.DepartureAirportId = data.DepartureAirportId; model.ArrivalAirportId = data.ArrivalAirportId; model.LogicalSegmentNumber = data.LogicalSegmentNumber; model.PhysicalSegmentNumber = data.PhysicalSegmentNumber; model.FromDateTime = data.FromDateTime; model.UntilDateTime = data.UntilDateTime; model.DepartureGate = data.DepartureGate; model.ArrivalGate = data.ArrivalGate; model.UserId = data.UserId; model.DateTime = data.DateTime; }
// transfer model object to data object // links: // docLink: http://sql2x.org/documentationLink/95875d99-b7f7-4a9e-baa4-3fbe9925d8a2 public static void ModelToData(CrudeFlightSegmentModel model, CrudeFlightSegmentData data) { data.FlightSegmentId = model.FlightSegmentId; data.FlightId = model.FlightId; data.DepartureAirportId = model.DepartureAirportId; data.ArrivalAirportId = model.ArrivalAirportId; data.LogicalSegmentNumber = model.LogicalSegmentNumber; data.PhysicalSegmentNumber = model.PhysicalSegmentNumber; data.FromDateTime = model.FromDateTime; data.UntilDateTime = model.UntilDateTime; data.DepartureGate = model.DepartureGate; data.ArrivalGate = model.ArrivalGate; data.UserId = model.UserId; data.DateTime = model.DateTime; }
/// <summary>Create all flights based on schedule record</summary> /// <summary>Schedule main dates will be used if segments does not exist</summary> /// <summary>Identifiers are taken from schedule</summary> /// <summary>Segments are taken from schedule if existing, default segment created if not</summary> /// <summary>Flight and segment 'created' events inserted</summary> /// <summary>Action log event inserted, exceptions logged</summary> public void MakeFlightsFromSchedule( Guid flightScheduleId, Guid userId ) { Logging.ActionLog("SolutionNorSolutionPort.BusinessLogicLayer.ScheduleService.MakeFlightsFromSchedule", userId ); // get schedule ScheduleContract scheduleContract = GetSchedule(flightScheduleId, userId); // make sure there are segments if (scheduleContract.CrudeFlightScheduleSegments.Length == 0) { Logging.ErrorLog("Schedule", "ScheduleService", "MakeFlightsFromSchedule", "Schedule.MakeFlightsFromSchedule: There are no segments on schedule", string.Empty, userId ); throw new Exception("Schedule.MakeFlightsFromSchedule: There are no segments on schedule"); } // make sure there is at least one identifier if (scheduleContract.FlightScheduleIdentifier == null || scheduleContract.FlightScheduleIdentifier.FlightScheduleIdentifierId == Guid.Empty) { Logging.ErrorLog("Schedule", "ScheduleService", "MakeFlightsFromSchedule", "Schedule.MakeFlightsFromSchedule: There are no flight identifiers", string.Empty, userId ); throw new Exception("Schedule.MakeFlightsFromSchedule: There are no flight identifiers"); } // get first aircraft available, TODO List <CrudeAircraftContract> aircrafts = new CrudeAircraftService().FetchAll(); if (aircrafts.Count == 0) { Logging.ErrorLog("Schedule", "ScheduleService", "MakeFlightsFromSchedule", "Schedule.MakeFlightsFromSchedule: There are no aircrafts available", string.Empty, userId ); throw new Exception("Schedule.MakeFlightsFromSchedule: There are no aircrafts available"); } // start transaction using (var connection = new SqlConnection(Conn.ConnectionString)) { connection.Open(); SqlTransaction transaction = connection.BeginTransaction(); try { // iterate all dates between from / until DateTime currentDate = scheduleContract.FlightSchedule.FromDateTime.Date; while (currentDate >= scheduleContract.FlightSchedule.FromDateTime.Date && currentDate <= scheduleContract.FlightSchedule.UntilDateTime) { // make new flight var flight = new CrudeFlightData(); flight.FlightId = Guid.NewGuid(); flight.BindingFlightId = flight.FlightId; flight.AirlineId = scheduleContract.FlightSchedule.AirlineId; flight.AircraftId = aircrafts[0].AircraftId; flight.AircraftTypeRcd = scheduleContract.FlightSchedule.AircraftTypeRcd; flight.DepartureAirportId = scheduleContract.FlightSchedule.DepartureAirportId; flight.ArrivalAirportId = scheduleContract.FlightSchedule.ArrivalAirportId; // compose flight date time departure / arrival time from first and last segment // todo, what about day shift +- flight.FromDateTime = currentDate.Add( scheduleContract.FlightScheduleSegments[0].DepartureTime ); flight.UntilDateTime = currentDate.Add( scheduleContract.FlightScheduleSegments[scheduleContract.FlightScheduleSegments.Length - 1].ArrivalTime ); flight.Comment = scheduleContract.FlightSchedule.Comment; flight.DateTime = DateTime.UtcNow; flight.UserId = userId; // make sure flight does not exist List <CrudeFlightData> flightDataList = CrudeFlightData.FetchWithFilter( flightId: Guid.Empty, becameFlightId: Guid.Empty, bindingFlightId: Guid.Empty, airlineId: flight.AirlineId, aircraftId: flight.AircraftId, aircraftTypeRcd: string.Empty, departureAirportId: flight.DepartureAirportId, arrivalAirportId: flight.ArrivalAirportId, fromDateTime: flight.FromDateTime, untilDateTime: flight.UntilDateTime, comment: string.Empty, userId: Guid.Empty, dateTime: DateTime.MinValue ); if (flightDataList.Count != 0) { continue; } flight.Insert(connection, transaction); // flight identifier // todo, can be more than one var identifier = new CrudeFlightIdentifierData(); identifier.FlightIdentifierTypeRcd = scheduleContract.FlightScheduleIdentifier.FlightIdentifierTypeRcd; identifier.FlightIdentifierCode = scheduleContract.FlightScheduleIdentifier.FlightIdentifierCode; identifier.FlightId = flight.FlightId; identifier.UserId = userId; identifier.DateTime = DateTime.UtcNow; identifier.Insert(connection, transaction); // events AddFlightEvent(connection, transaction, flight.FlightId, DateTimeTypeRef.Created, DateTime.UtcNow, userId); // planned / estimated times AddFlightEvent(connection, transaction, flight.FlightId, DateTimeTypeRef.PlannedDeparture, flight.FromDateTime, userId); AddFlightEvent(connection, transaction, flight.FlightId, DateTimeTypeRef.PlannedArrival, flight.UntilDateTime, userId); AddFlightEvent(connection, transaction, flight.FlightId, DateTimeTypeRef.EstimatedDeparture, flight.FromDateTime, userId); AddFlightEvent(connection, transaction, flight.FlightId, DateTimeTypeRef.EstimatedArrival, flight.UntilDateTime, userId); // open for booking AddFlightEvent(connection, transaction, flight.FlightId, DateTimeTypeRef.BookingOpen, DateTime.UtcNow, userId); // check rules // create flight segments for that day foreach (CrudeFlightScheduleSegmentContract scheduleSegment in scheduleContract.CrudeFlightScheduleSegments) { var flightSegment = new CrudeFlightSegmentData(); flightSegment.FlightSegmentId = Guid.NewGuid(); flightSegment.FlightId = flight.FlightId; flightSegment.DepartureAirportId = scheduleSegment.DepartureAirportId; flightSegment.ArrivalAirportId = scheduleSegment.ArrivalAirportId; flightSegment.LogicalSegmentNumber = scheduleSegment.LogicalSegmentNumber; flightSegment.PhysicalSegmentNumber = scheduleSegment.PhysicalSegmentNumber; flightSegment.FromDateTime = currentDate.Add(scheduleSegment.DepartureTime); flightSegment.UntilDateTime = currentDate.Add(scheduleSegment.ArrivalTime); flightSegment.DepartureGate = scheduleSegment.DepartureGate; flightSegment.ArrivalGate = scheduleSegment.ArrivalGate; flightSegment.UserId = userId; flightSegment.DateTime = DateTime.UtcNow; flightSegment.Insert(connection, transaction); // events AddFlightSegmentEvent(connection, transaction, flightSegment.FlightSegmentId, DateTimeTypeRef.Created, DateTime.UtcNow, userId); // planned / estimated times AddFlightSegmentEvent(connection, transaction, flightSegment.FlightSegmentId, DateTimeTypeRef.PlannedDeparture, flightSegment.FromDateTime, userId); AddFlightSegmentEvent(connection, transaction, flightSegment.FlightSegmentId, DateTimeTypeRef.PlannedArrival, flightSegment.UntilDateTime, userId); AddFlightSegmentEvent(connection, transaction, flightSegment.FlightSegmentId, DateTimeTypeRef.EstimatedDeparture, flightSegment.FromDateTime, userId); AddFlightSegmentEvent(connection, transaction, flightSegment.FlightSegmentId, DateTimeTypeRef.EstimatedArrival, flightSegment.UntilDateTime, userId); // open for booking AddFlightSegmentEvent(connection, transaction, flightSegment.FlightSegmentId, DateTimeTypeRef.BookingOpen, DateTime.UtcNow, userId); } currentDate = currentDate.AddDays(1); break; // break here since we are testing with a fresh database where from date is todays date } // commit transaction transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); Logging.ErrorLog("Schedule", "ScheduleService", "MakeFlightsFromSchedule", ex.Message, ex.StackTrace, userId ); throw ex; } } }
// delete row // links: // docLink: http://sql2x.org/documentationLink/59823bf7-4ad8-4684-a48b-2abd49c607ee public void Delete(System.Guid flightSegmentId) { CrudeFlightSegmentData.Delete(flightSegmentId); }
// 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: // ArrivalAirportId: key of table CrudeFlightSegmentData public List <CrudeFlightSegmentModel> FetchByArrivalAirportId(System.Guid arrivalAirportId) { return(DataListToModelList(CrudeFlightSegmentData.FetchByArrivalAirportId(arrivalAirportId))); }
// fetch by Foreign key into new List of class instances // links: // docLink: http://sql2x.org/documentationLink/a7599485-4f00-4ebf-974d-53f69c43654e public List <CrudeFlightSegmentContract> FetchByUserId(System.Guid userId) { return(DataListToContractList(CrudeFlightSegmentData.FetchByUserId(userId))); }
// get a count of rows in table // links: // docLink: http://sql2x.org/documentationLink/39677f9e-daee-45c6-9527-da98a0d7958d public int FetchAllCount() { return(CrudeFlightSegmentData.FetchAllCount()); }
// 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: // DepartureAirportId: key of table CrudeFlightSegmentData public List <CrudeFlightSegmentModel> FetchByDepartureAirportId(System.Guid departureAirportId) { return(DataListToModelList(CrudeFlightSegmentData.FetchByDepartureAirportId(departureAirportId))); }
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: // UserId: key of table CrudeFlightSegmentData public List <CrudeFlightSegmentModel> FetchByUserId(System.Guid userId) { return(DataListToModelList(CrudeFlightSegmentData.FetchByUserId(userId))); }
// fetch by Foreign key into new List of class instances // links: // docLink: http://sql2x.org/documentationLink/a7599485-4f00-4ebf-974d-53f69c43654e public List <CrudeFlightSegmentContract> FetchByArrivalAirportId(System.Guid arrivalAirportId) { return(DataListToContractList(CrudeFlightSegmentData.FetchByArrivalAirportId(arrivalAirportId))); }