// 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();
        }
Beispiel #5
0
        /// <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;
                }
            }
        }
Beispiel #6
0
        /// <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;
                }
            }
        }