Esempio n. 1
0
        public void WorkersBusy()
        {
            var msg1       = new DispatchEvent(new FakeEvent());
            var msg2       = new DispatchEvent(new FakeEvent());
            var msg3       = new DispatchEvent(new FakeEvent());
            var evt        = new ManualResetEvent(false);
            var context    = new FakeContext(X => evt.WaitOne());
            var dispatcher = new AsyncHandler(2);

            // make first worker busy and validate
            dispatcher.HandleDownstream(context, msg1);
            Assert.True(context.Wait(TimeSpan.FromMilliseconds(100)));
            context.Reset();

            // make second worker busy and validate
            dispatcher.HandleDownstream(context, msg2);
            Assert.True(context.Wait(TimeSpan.FromMilliseconds(100)));
            context.Reset();

            // Make sure that the third message is not dispatched.
            dispatcher.HandleDownstream(context, msg3);
            Assert.False(context.Wait(TimeSpan.FromMilliseconds(100)));
            context.Reset();

            // release workers.
            evt.Set();

            // and expect the third to get running.
            Assert.True(context.Wait(TimeSpan.FromMilliseconds(100)));
        }
Esempio n. 2
0
 public void Subscrive(EventID id, DispatchEvent function)
 {
     if (id != EventID.None)
     {
         _events[(int)id] += function;
     }
 }
Esempio n. 3
0
        private void Consumer_Received(object sender, BasicDeliverEventArgs e)
        {
            try
            {
                string eventName = System.Text.Encoding.UTF8.GetString((byte[])e.BasicProperties.Headers["event.name"]);
                string source    = e.BasicProperties.Headers["event.source"] != null?
                                   System.Text.Encoding.UTF8.GetString((byte[])e.BasicProperties.Headers["event.source"])
                                       : null;

                DateTime timestamp = Newtonsoft.Json.JsonConvert.DeserializeObject <DateTime>(System.Text.Encoding.UTF8.GetString((byte[])e.BasicProperties.Headers["event.timestamp"]));
                int      version   = (int)e.BasicProperties.Headers["event.version"];

                var dispatchEvent = new DispatchEvent()
                {
                    Id        = Guid.Parse(e.BasicProperties.MessageId),
                    EventName = eventName,
                    Source    = source,
                    Timestamp = timestamp,
                    Version   = version,
                    Payload   = System.Text.Encoding.UTF8.GetString(e.Body)
                };

                System.Console.WriteLine($"Received event type: {dispatchEvent.EventName}, Id: {dispatchEvent.Id}");
                incomingEvents[dispatchEvent.Id] = e.DeliveryTag;
                ReceivedEventHandler?.Invoke(dispatchEvent);
            }
            catch (Exception ex)
            {
                System.Console.Error.WriteLine($"Error unpacking incoming event {e.BasicProperties.MessageId}");
                System.Console.Error.WriteLine(ex);
            }
        }
Esempio n. 4
0
 public void Publish(DispatchEvent @event)
 {
     this.events.Add(@event);
     if (this.ReceivedEventHandler != null)
     {
         this.ReceivedEventHandler.Invoke(@event);
     }
 }
Esempio n. 5
0
        public void Shutdown_ReleaseAfter1Second()
        {
            var msg1       = new DispatchEvent(new FakeEvent());
            var evt        = new ManualResetEvent(false);
            var context    = new FakeContext(X => Thread.Sleep(1000));
            var dispatcher = new AsyncHandler(2);

            dispatcher.HandleDownstream(context, msg1);
            dispatcher.Close();
        }
        private void Consumer_ReceivedEventHandler(DispatchEvent @event)
        {
            dynamic       eventPayload = JsonConvert.DeserializeObject(@event.Payload);
            SpotCharterId spotId       = new SpotCharterId(Guid.Parse(eventPayload.AggregateId.Value.ToString()));

            if (this.commandRepository != null)
            {
                this.repository[spotId] = Mapper.Map <SpotCharterView>(this.commandRepository.Get(spotId));
            }
        }
        public void GetMessageToDispatch()
        {
            Guid          eventId = Guid.Empty;
            DispatchEvent @event  = null;

            var result = eventsDispatchRepository.GetNextEventToDispatch(out eventId, out @event);

            Assert.True(result);
            Assert.NotSame(eventId, Guid.Empty);
            Assert.NotSame(@event, null);
        }
Esempio n. 8
0
    public void mapEvent(DispatchEvent devt)
    {
        Dictionary <object, DispatchEvent> target2Event = null;

        if (!mStringEventMap.ContainsKey(devt.evt))
        {
            mStringEventMap[devt.evt] = new Dictionary <object, DispatchEvent>();
        }
        target2Event = mStringEventMap[devt.evt];
        target2Event[devt.target] = devt;
    }
Esempio n. 9
0
        public void RegularDispatch()
        {
            var dispatcher = new AsyncHandler(5);
            var msg        = new DispatchEvent(new FakeEvent());
            var context    = new FakeContext();

            dispatcher.HandleDownstream(context, msg);

            Assert.True(context.Wait(TimeSpan.FromMilliseconds(50000)));
            Assert.Same(msg, context.Message);
        }
Esempio n. 10
0
 public void dispatchEvent(string evt, object data)
 {
     if (mStringEventMap.ContainsKey(evt))
     {
         Dictionary <object, DispatchEvent> target2Event = mStringEventMap[evt];
         foreach (object key in target2Event.Keys)
         {
             DispatchEvent devt = target2Event[key];
             devt.callback(evt, data);
         }
     }
 }
        public void GetMessageAndCommitDispatch()
        {
            Guid          eventId = Guid.Empty;
            DispatchEvent payload = null;

            var result = eventsDispatchRepository.GetNextEventToDispatch(out eventId, out payload);

            Assert.True(result);

            eventsDispatchRepository.CommitDispatchedEvent(eventId);
            Assert.True(true);
        }
        public void UowDispatcherNoUow()
        {
            var uowAdapter = new FakeUowAdapter();
            var storage    = new MemoryStorage();
            var context    = Substitute.For <IDownstreamContext>();
            var msg        = new DispatchEvent(new FakeEvent());

            var handler = new TransactionalHandler(uowAdapter, storage);

            handler.HandleDownstream(context, msg);

            context.Received().SendDownstream(msg);
        }
Esempio n. 13
0
        public void Shutdown_NotReleased()
        {
            var msg1       = new DispatchEvent(new FakeEvent());
            var evt        = new ManualResetEvent(false);
            var context    = new FakeContext(X => evt.WaitOne());
            var dispatcher = new AsyncHandler(2);

            dispatcher.HandleDownstream(context, msg1);
            Assert.Throws <InvalidOperationException>(() => dispatcher.Close());

            evt.Set();

            // and expect the third to get running.
            Assert.True(context.Wait(TimeSpan.FromMilliseconds(100)));
        }
        public void UowDispatcher_UowNotReleased()
        {
            var uowAdapter = new FakeUowAdapter();
            var storage    = Substitute.For <IDomainEventStorage>();
            var context    = Substitute.For <IDownstreamContext>();
            var msg        = new DispatchEvent(new FakeEvent());
            var uowMapper  = new ThreadBatchIdMapper();

            var handler = new TransactionalHandler(uowAdapter, storage, uowMapper);

            uowAdapter.Observer.Create(uowAdapter);
            handler.HandleDownstream(context, msg);


            storage.Received().Hold(uowMapper.GetBatchId(), msg.DomainEvent);
        }
Esempio n. 15
0
        public async Task <DispatchToCharactersResponse> DispatchToCharacters(DispatchToCharactersRequest request)
        {
            var @event = new DispatchEvent {
                Data = request.Data.ToArray()
            };

            foreach (var character in request.Characters)
            {
                @event.TargetCharacters.Add(character);
            }

            await _messenger.PublishAsync(@event);

            return(new DispatchToCharactersResponse {
                Result = DispatchServiceResult.Ok
            });
        }
Esempio n. 16
0
        public void Throws()
        {
            var container = Substitute.For <IRootContainer>();
            var context   = Substitute.For <IDownstreamContext>();
            var child     = Substitute.For <IScopedContainer>();

            container.CreateScope().Returns(child);
            var msg = new DispatchEvent(new FakeEvent());

            child.ResolveAll <ISubscribeOn <FakeEvent> >().Returns(call => { throw new Exception(); });

            var handler = new IocHandler(container);

            handler.HandleDownstream(context, msg);

            context.Received().SendUpstream(Arg.Any <EventFailed>());
        }
        public bool GetNextEventToDispatch(out Guid eventId, out DispatchEvent @event)
        {
            eventId = Guid.Empty;
            @event  = null;

            using (var connection = new NpgsqlConnection(this.connectionString))
            {
                var getEventCommand = connection.CreateCommand();
                getEventCommand.Connection  = connection;
                getEventCommand.CommandText = @"SELECT * FROM public.""GetEventToDispatch""(@host, @process);";
                getEventCommand.CommandType = System.Data.CommandType.Text;

                getEventCommand.Parameters.Add(new NpgsqlParameter()
                {
                    ParameterName = "@host", NpgsqlDbType = NpgsqlTypes.NpgsqlDbType.Varchar, Value = this.process.MachineName
                });
                getEventCommand.Parameters.Add(new NpgsqlParameter()
                {
                    ParameterName = "@process", NpgsqlDbType = NpgsqlTypes.NpgsqlDbType.Varchar, Value = this.applicationName
                });

                connection.Open();
                var reader = getEventCommand.ExecuteReader();

                if (!reader.Read() || reader.IsDBNull(0))
                {
                    return(false);
                }


                @event = new DispatchEvent()
                {
                    Id        = eventId = reader.GetGuid(0),
                    EventName = reader.GetString(reader.GetOrdinal("event_name")),
                    Source    = reader.IsDBNull(reader.GetOrdinal("source")) ? null : reader.GetString(reader.GetOrdinal("source")),
                    Version   = reader.GetInt32(reader.GetOrdinal("version")),
                    Timestamp = reader.GetDateTime(reader.GetOrdinal("date_time")),
                    Payload   = reader.GetString(reader.GetOrdinal("payload")), // (string)getEventCommand.Parameters["@payload"].Value;
                };
                return(!eventId.Equals(Guid.Empty));
            }
        }
Esempio n. 18
0
        public void Publish(DispatchEvent @event)
        {
            using (IModel model = currentConnection.CreateModel())
            {
                var props = model.CreateBasicProperties();
                props.ContentType = "application/json";
                props.MessageId   = @event.Id.ToString();

                props.Headers = new Dictionary <string, object>()
                {
                    { "event.name", @event.EventName },
                    { "event.timestamp", Newtonsoft.Json.JsonConvert.SerializeObject(@event.Timestamp) },
                    { "event.source", @event.Source },
                    { "event.version", @event.Version },
                };

                model.BasicPublish(this.exchange, $"{this.exchange}.{@event.EventName}",
                                   basicProperties: props,
                                   body: System.Text.Encoding.UTF8.GetBytes(@event.Payload));
            }
        }
Esempio n. 19
0
        public void DispatchSpotCreated()
        {
            using (IEventDispatcher dispatcher = new RabbitMQEventDispatcher.RabbitMQEventDispatcher(
                       host: rabbitConfig.host,
                       exchangeName: rabbitConfig.exchange,
                       username: rabbitConfig.username,
                       password: rabbitConfig.password,
                       vhost: rabbitConfig.vhost,
                       port: rabbitConfig.port
                       ))
            {
                var spotCreated = new SpotCharterCreated(new SpotCharterId(Guid.NewGuid()), new BaseDomainObjects.Entities.Login("stefano"), DateTime.Now, new CounterpartyId(Guid.NewGuid()), "Counterparty", new VesselId(Guid.NewGuid()), "Vessel", new CargoQuantity("MT", 5000));
                var freight     = new FreightRateChanged(new SpotCharterId(Guid.NewGuid()), new BaseDomainObjects.Entities.Login("stefano"), 1, new SpotCharterDomain.ValueObjects.FreightRate(100000));

                BaseDomainObjects.IEvent <SpotCharterId> @event = spotCreated;

                var dispatchEvent = new DispatchEvent()
                {
                    EventName = @event.EventName,
                    Id        = @event.Id,
                    Source    = @event.Source,
                    Version   = @event.Version,
                    Timestamp = spotCreated.CharterpartyDate,
                    Payload   = JsonConvert.SerializeObject(spotCreated),
                };

                dispatcher.Publish(dispatchEvent);

                @event = freight;
                dispatcher.Publish(new DispatchEvent()
                {
                    EventName = @event.EventName,
                    Id        = @event.Id,
                    Source    = @event.Source,
                    Version   = @event.Version,
                    Timestamp = DateTime.Now,
                    Payload   = JsonConvert.SerializeObject(freight),
                });
            }
        }
        public void UowDispatcher_UowReleasedFailed()
        {
            var uowAdapter = new FakeUowAdapter();
            var storage    = Substitute.For <IDomainEventStorage>();
            var context    = Substitute.For <IDownstreamContext>();
            var msg        = new DispatchEvent(new FakeEvent());
            var uowMapper  = new ThreadBatchIdMapper();
            var handler    = new TransactionalHandler(uowAdapter, storage, uowMapper);

            uowAdapter.Observer.Create(uowAdapter);
            var batchId = uowMapper.GetBatchId();

            storage.Release(batchId).Returns(new[] { new FakeEvent() });

            handler.HandleDownstream(context, msg);
            context.DidNotReceive().SendDownstream(msg);
            uowAdapter.Observer.Released(uowAdapter, false);


            storage.Received().Hold(batchId, msg.DomainEvent);
            storage.Received().Delete(batchId);
            context.DidNotReceive().SendDownstream(Arg.Any <DispatchEvent>());
        }
Esempio n. 21
0
        public static void Main(string[] args)
        {
            IEventDispatcherRepository repository = new SpotCharterEventSourceRepository("SpotCharters", "spot_user", "spot_user", applicationName: "EventDispatcher", host: "sql-db");

            using (IEventDispatcher dispatcher = new RabbitMQEventDispatcher.RabbitMQEventDispatcher("message-broker", "/test", username: "******", password: "******", exchangeName: "chartering.spot"))
            {
                Guid          eventId         = Guid.Empty;
                DispatchEvent eventToDispatch = null;

                try
                {
                    while (repository.GetNextEventToDispatch(out eventId, out eventToDispatch))
                    {
                        dispatcher.Publish(eventToDispatch);
                        repository.CommitDispatchedEvent(eventId);
                    }
                }
                catch (Exception ex)
                {
                    System.Console.Error.WriteLine(ex);
                }
            }
        }
Esempio n. 22
0
 public void unmapEvent(DispatchEvent devt)
 {
     unmapEvent(devt.evt, devt.target, devt.callback);
 }
Esempio n. 23
0
 public void Subscribe(DispatchEvent function)
 {
     _events += function;
 }
Esempio n. 24
0
 public bool Equals(DispatchEvent e)
 {
     return(e.evt.Equals(evt) && e.target == target && e.callback == callback);
 }
Esempio n. 25
0
        public void Post(Action a)
        {
            var dispatchEvent = new DispatchEvent(a);

            _console.PostEvent(dispatchEvent);
        }
Esempio n. 26
0
        public static void Initialize(IServiceProvider serviceProvider)
        {
            using (var context = new EFCContext(serviceProvider.GetRequiredService <DbContextOptions <EFCContext> >()))
            {
                if (context.Truck.Any())
                {
                    return;
                }

                //seeding REGIONS

                var regions = new Region []
                {
                    new Region {
                        RegionLabel = "Davidson"    // stops 1-6, stop 0 also here - where the refill events occur
                    },
                    new Region {
                        RegionLabel = "Sumner"      // stops 7-12
                    },
                    new Region {
                        RegionLabel = "Wilson"      // stops 13-18
                    },
                    new Region {
                        RegionLabel = "Rutherford"  // stops 19-24
                    },
                    new Region {
                        RegionLabel = "Williamson"  // stops 25-30
                    },
                    new Region {
                        RegionLabel = "Cheatham"    // stops 31-36
                    },
                    new Region {
                        RegionLabel = "Robertson"   // stops 37-42
                    }
                };

                foreach (Region i in regions)
                {
                    context.Region.Add(i);
                }
                context.SaveChanges();

                //seeding STOPS

                var stops = new Stop []         // six stops per region following the refill stop, so 43 in total over 6 regions
                {
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Davidson").RegionId,
                        StopLabel = "Refill"    // stop 0 is a refill at the refill station in region 0
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Davidson").RegionId,
                        StopLabel = "Alpha"     // random names here from phonetic alphabet
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Davidson").RegionId,
                        StopLabel = "Bravo"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Davidson").RegionId,
                        StopLabel = "Charlie"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Davidson").RegionId,
                        StopLabel = "Delta"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Davidson").RegionId,
                        StopLabel = "Echo"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Davidson").RegionId,
                        StopLabel = "Foxtrot"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Sumner").RegionId,    // 7
                        StopLabel = "Golf"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Sumner").RegionId,
                        StopLabel = "Hotel"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Sumner").RegionId,
                        StopLabel = "India"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Sumner").RegionId,
                        StopLabel = "Juliet"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Sumner").RegionId,
                        StopLabel = "Kilo"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Sumner").RegionId,
                        StopLabel = "Lima"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Wilson").RegionId,    // 13
                        StopLabel = "Mike"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Wilson").RegionId,
                        StopLabel = "November"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Wilson").RegionId,
                        StopLabel = "Oscar"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Wilson").RegionId,
                        StopLabel = "Papa"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Wilson").RegionId,
                        StopLabel = "Quebec"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Wilson").RegionId,
                        StopLabel = "Romeo"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Rutherford").RegionId,    // 19
                        StopLabel = "Sierra"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Rutherford").RegionId,
                        StopLabel = "Tango"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Rutherford").RegionId,
                        StopLabel = "Uniform"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Rutherford").RegionId,
                        StopLabel = "Victor"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Rutherford").RegionId,
                        StopLabel = "Whiskey"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Rutherford").RegionId,
                        StopLabel = "Xray"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Williamson").RegionId,    // 25
                        StopLabel = "Yankee"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Williamson").RegionId,
                        StopLabel = "Zulu"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Williamson").RegionId,
                        StopLabel = "Alexander"     // random names from here based on most common boy names from 2012
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Williamson").RegionId,
                        StopLabel = "Benjamin"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Williamson").RegionId,
                        StopLabel = "Christopher"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Williamson").RegionId,
                        StopLabel = "Daniel"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Cheatham").RegionId,      // 31
                        StopLabel = "Ethan"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Cheatham").RegionId,
                        StopLabel = "Fernando"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Cheatham").RegionId,
                        StopLabel = "Gabriel"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Cheatham").RegionId,
                        StopLabel = "Henry"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Cheatham").RegionId,
                        StopLabel = "Isaac"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Cheatham").RegionId,
                        StopLabel = "Jacob"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Robertson").RegionId,     // 37
                        StopLabel = "Kevin"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Robertson").RegionId,
                        StopLabel = "Liam"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Robertson").RegionId,
                        StopLabel = "Mason"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Robertson").RegionId,
                        StopLabel = "Noah"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Robertson").RegionId,
                        StopLabel = "Owen"
                    },
                    new Stop {
                        RegionId  = regions.Single(n => n.RegionLabel == "Robertson").RegionId,
                        StopLabel = "Parker"
                    }
                };

                foreach (Stop i in stops)
                {
                    context.Stop.Add(i);
                }
                context.SaveChanges();

                //seeding FUEL EVENTS

                var fuelEvents = new FuelEvent []
                {
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Alpha").StopId,
                        FuelPercentageChange = -17, // difference between current truck fuel level and 100%, in this case arbitrary
                        FuelTimeStamp        = new DateTime(2017, 9, 28, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Alpha").StopId,
                        FuelPercentageChange = -16, // generate random number between -5 and -17 to determine fuel depletion amount of truck
                        FuelTimeStamp        = new DateTime(2017, 9, 18, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Alpha").StopId,
                        FuelPercentageChange = -15,
                        FuelTimeStamp        = new DateTime(2017, 9, 8, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Bravo").StopId,
                        FuelPercentageChange = -10,
                        FuelTimeStamp        = new DateTime(2017, 9, 8, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Bravo").StopId,
                        FuelPercentageChange = -9,
                        FuelTimeStamp        = new DateTime(2017, 9, 18, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Bravo").StopId,
                        FuelPercentageChange = -8,
                        FuelTimeStamp        = new DateTime(2017, 9, 28, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Charlie").StopId,
                        FuelPercentageChange = -6,
                        FuelTimeStamp        = new DateTime(2017, 9, 8, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Charlie").StopId,
                        FuelPercentageChange = -7,
                        FuelTimeStamp        = new DateTime(2017, 9, 18, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Charlie").StopId,
                        FuelPercentageChange = -8,
                        FuelTimeStamp        = new DateTime(2017, 9, 28, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Delta").StopId,
                        FuelPercentageChange = -7,
                        FuelTimeStamp        = new DateTime(2017, 9, 8, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Delta").StopId,
                        FuelPercentageChange = -12,
                        FuelTimeStamp        = new DateTime(2017, 9, 18, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Delta").StopId,
                        FuelPercentageChange = -6,
                        FuelTimeStamp        = new DateTime(2017, 9, 28, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Alpha").StopId,
                        FuelPercentageChange = -17, // difference between current truck fuel level and 100%, in this case arbitrary
                        FuelTimeStamp        = new DateTime(2017, 8, 28, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Bravo").StopId,
                        FuelPercentageChange = -5,
                        FuelTimeStamp        = new DateTime(2017, 8, 18, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Charlie").StopId,
                        FuelPercentageChange = -6,
                        FuelTimeStamp        = new DateTime(2017, 8, 8, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Delta").StopId,
                        FuelPercentageChange = -7,
                        FuelTimeStamp        = new DateTime(2017, 7, 28, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Echo").StopId,
                        FuelPercentageChange = -8,
                        FuelTimeStamp        = new DateTime(2017, 7, 18, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Foxtrot").StopId,
                        FuelPercentageChange = -9,
                        FuelTimeStamp        = new DateTime(2017, 7, 8, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Golf").StopId,
                        FuelPercentageChange = -10,
                        FuelTimeStamp        = new DateTime(2017, 6, 28, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Hotel").StopId,
                        FuelPercentageChange = -11,
                        FuelTimeStamp        = new DateTime(2017, 6, 18, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "India").StopId,
                        FuelPercentageChange = -12,
                        FuelTimeStamp        = new DateTime(2017, 6, 8, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Juliet").StopId,
                        FuelPercentageChange = -13,
                        FuelTimeStamp        = new DateTime(2017, 5, 28, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Kilo").StopId,
                        FuelPercentageChange = -14,
                        FuelTimeStamp        = new DateTime(2017, 5, 18, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Lima").StopId,
                        FuelPercentageChange = -15,
                        FuelTimeStamp        = new DateTime(2017, 5, 8, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Mike").StopId,
                        FuelPercentageChange = -16,
                        FuelTimeStamp        = new DateTime(2017, 4, 28, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "November").StopId,
                        FuelPercentageChange = -17,
                        FuelTimeStamp        = new DateTime(2017, 4, 18, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Oscar").StopId,
                        FuelPercentageChange = -5,
                        FuelTimeStamp        = new DateTime(2017, 4, 8, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Papa").StopId,
                        FuelPercentageChange = -6,
                        FuelTimeStamp        = new DateTime(2017, 3, 28, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Quebec").StopId,
                        FuelPercentageChange = -7,
                        FuelTimeStamp        = new DateTime(2017, 3, 18, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Romeo").StopId,
                        FuelPercentageChange = -8,
                        FuelTimeStamp        = new DateTime(2017, 3, 8, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Sierra").StopId,
                        FuelPercentageChange = -9,
                        FuelTimeStamp        = new DateTime(2017, 2, 28, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Tango").StopId,
                        FuelPercentageChange = -10,
                        FuelTimeStamp        = new DateTime(2017, 2, 18, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Uniform").StopId,
                        FuelPercentageChange = -11,
                        FuelTimeStamp        = new DateTime(2017, 2, 8, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Victor").StopId,
                        FuelPercentageChange = -12,
                        FuelTimeStamp        = new DateTime(2017, 1, 28, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Whiskey").StopId,
                        FuelPercentageChange = -13,
                        FuelTimeStamp        = new DateTime(2017, 1, 18, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Xray").StopId,
                        FuelPercentageChange = -14,
                        FuelTimeStamp        = new DateTime(2017, 1, 8, 2, 3, 0)
                    },
                    new FuelEvent {
                        StopId = stops.Single(n => n.StopLabel == "Yankee").StopId,
                        FuelPercentageChange = -15,
                        FuelTimeStamp        = new DateTime(2016, 12, 28, 2, 3, 0)
                    }
                };

                foreach (FuelEvent i in fuelEvents)
                {
                    context.FuelEvent.Add(i);
                }
                context.SaveChanges();

                //seeding TRUCKS

                var trucks = new Truck []
                {
                    new Truck {
                        CurrentFuelLevel = 100,                                              // each truck starting the day with 100% fuel from Davidson truck yard
                        CurrentStopId    = stops.Single(n => n.StopLabel == "Alpha").StopId, // Stop 0 is refill in region 0
                        NextStopId       = stops.Single(n => n.StopLabel == "Alpha").StopId, //
                        RegionId         = regions.Single(n => n.RegionLabel == "Davidson").RegionId
                    },
                    new Truck {
                        CurrentFuelLevel = 99,
                        CurrentStopId    = stops.Single(n => n.StopLabel == "Alpha").StopId,
                        NextStopId       = stops.Single(n => n.StopLabel == "Golf").StopId,
                        RegionId         = regions.Single(n => n.RegionLabel == "Sumner").RegionId
                    },
                    new Truck {
                        CurrentFuelLevel = 98,
                        CurrentStopId    = stops.Single(n => n.StopLabel == "Alpha").StopId,
                        NextStopId       = stops.Single(n => n.StopLabel == "Mike").StopId,
                        RegionId         = regions.Single(n => n.RegionLabel == "Wilson").RegionId
                    },
                    new Truck {
                        CurrentFuelLevel = 97,
                        CurrentStopId    = stops.Single(n => n.StopLabel == "Alpha").StopId,
                        NextStopId       = stops.Single(n => n.StopLabel == "Sierra").StopId,
                        RegionId         = regions.Single(n => n.RegionLabel == "Rutherford").RegionId
                    },
                    new Truck {
                        CurrentFuelLevel = 96,
                        CurrentStopId    = stops.Single(n => n.StopLabel == "Alpha").StopId,
                        NextStopId       = stops.Single(n => n.StopLabel == "Yankee").StopId,
                        RegionId         = regions.Single(n => n.RegionLabel == "Williamson").RegionId
                    },
                    new Truck {
                        CurrentFuelLevel = 95,
                        CurrentStopId    = stops.Single(n => n.StopLabel == "Alpha").StopId,
                        NextStopId       = stops.Single(n => n.StopLabel == "Ethan").StopId,
                        RegionId         = regions.Single(n => n.RegionLabel == "Cheatham").RegionId
                    },
                    new Truck {
                        CurrentFuelLevel = 94,
                        CurrentStopId    = stops.Single(n => n.StopLabel == "Alpha").StopId,
                        NextStopId       = stops.Single(n => n.StopLabel == "Kevin").StopId,
                        RegionId         = regions.Single(n => n.RegionLabel == "Robertson").RegionId
                    }
                };

                foreach (Truck i in trucks)
                {
                    context.Truck.Add(i);
                }
                context.SaveChanges();

                //seeding DISPATCH EVENTS

                var dispatchEvents = new DispatchEvent []
                {
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 100).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Refill").StopId,
                        DispatchTimeStamp = new DateTime(2017, 8, 28, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 100).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Alpha").StopId,
                        DispatchTimeStamp = new DateTime(2017, 8, 18, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 100).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Bravo").StopId,
                        DispatchTimeStamp = new DateTime(2017, 8, 8, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 100).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Charlie").StopId,
                        DispatchTimeStamp = new DateTime(2017, 7, 28, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 100).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Delta").StopId,
                        DispatchTimeStamp = new DateTime(2017, 7, 18, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 100).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Echo").StopId,
                        DispatchTimeStamp = new DateTime(2017, 7, 8, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 99).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Refill").StopId,
                        DispatchTimeStamp = new DateTime(2017, 6, 28, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 99).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Foxtrot").StopId,
                        DispatchTimeStamp = new DateTime(2017, 6, 18, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 99).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Golf").StopId,
                        DispatchTimeStamp = new DateTime(2017, 6, 8, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 99).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Hotel").StopId,
                        DispatchTimeStamp = new DateTime(2017, 5, 28, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 99).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "India").StopId,
                        DispatchTimeStamp = new DateTime(2017, 5, 18, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 99).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Juliet").StopId,
                        DispatchTimeStamp = new DateTime(2017, 5, 8, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 99).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Kilo").StopId,
                        DispatchTimeStamp = new DateTime(2017, 4, 28, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 98).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Refill").StopId,
                        DispatchTimeStamp = new DateTime(2017, 4, 18, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 98).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Lima").StopId,
                        DispatchTimeStamp = new DateTime(2017, 4, 8, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 98).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Mike").StopId,
                        DispatchTimeStamp = new DateTime(2017, 3, 28, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 98).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "November").StopId,
                        DispatchTimeStamp = new DateTime(2017, 3, 18, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 98).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Oscar").StopId,
                        DispatchTimeStamp = new DateTime(2017, 3, 8, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 98).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Papa").StopId,
                        DispatchTimeStamp = new DateTime(2017, 3, 18, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 98).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Quebec").StopId,
                        DispatchTimeStamp = new DateTime(2017, 3, 8, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 97).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Refill").StopId,
                        DispatchTimeStamp = new DateTime(2017, 2, 28, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 97).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Romeo").StopId,
                        DispatchTimeStamp = new DateTime(2017, 2, 18, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 97).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Sierra").StopId,
                        DispatchTimeStamp = new DateTime(2017, 2, 8, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 97).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Tango").StopId,
                        DispatchTimeStamp = new DateTime(2017, 1, 28, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 97).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Uniform").StopId,
                        DispatchTimeStamp = new DateTime(2017, 1, 18, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 97).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Victor").StopId,
                        DispatchTimeStamp = new DateTime(2017, 1, 8, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 97).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Whiskey").StopId,
                        DispatchTimeStamp = new DateTime(2016, 12, 28, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 96).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Refill").StopId,
                        DispatchTimeStamp = new DateTime(2016, 12, 18, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 96).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Xray").StopId,
                        DispatchTimeStamp = new DateTime(2016, 12, 8, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 96).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Yankee").StopId,
                        DispatchTimeStamp = new DateTime(2016, 11, 28, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 96).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Zulu").StopId,
                        DispatchTimeStamp = new DateTime(2016, 11, 18, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 96).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Alexander").StopId,
                        DispatchTimeStamp = new DateTime(2016, 11, 8, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 96).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Benjamin").StopId,
                        DispatchTimeStamp = new DateTime(2016, 10, 28, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 96).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Christopher").StopId,
                        DispatchTimeStamp = new DateTime(2016, 10, 18, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 95).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Refill").StopId,
                        DispatchTimeStamp = new DateTime(2016, 10, 8, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 95).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Daniel").StopId,
                        DispatchTimeStamp = new DateTime(2016, 9, 28, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 95).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Ethan").StopId,
                        DispatchTimeStamp = new DateTime(2016, 9, 18, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 95).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Fernando").StopId,
                        DispatchTimeStamp = new DateTime(2016, 9, 8, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 95).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Gabriel").StopId,
                        DispatchTimeStamp = new DateTime(2016, 8, 28, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 95).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Isaac").StopId,
                        DispatchTimeStamp = new DateTime(2016, 8, 18, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 95).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Jacob").StopId,
                        DispatchTimeStamp = new DateTime(2016, 8, 8, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 94).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Refill").StopId,
                        DispatchTimeStamp = new DateTime(2016, 7, 28, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 94).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Kevin").StopId,
                        DispatchTimeStamp = new DateTime(2016, 7, 18, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 94).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Liam").StopId,
                        DispatchTimeStamp = new DateTime(2016, 7, 8, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 94).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Mason").StopId,
                        DispatchTimeStamp = new DateTime(2016, 6, 28, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 94).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Noah").StopId,
                        DispatchTimeStamp = new DateTime(2016, 6, 18, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 94).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Owen").StopId,
                        DispatchTimeStamp = new DateTime(2016, 6, 8, 1, 3, 0)
                    },
                    new DispatchEvent {
                        TruckTargetId     = trucks.Single(n => n.CurrentFuelLevel == 94).TruckId,
                        SetNextStopId     = stops.Single(n => n.StopLabel == "Parker").StopId,
                        DispatchTimeStamp = new DateTime(2016, 5, 28, 1, 3, 0)
                    }
                };

                foreach (DispatchEvent i in dispatchEvents)
                {
                    context.DispatchEvent.Add(i);
                }
                context.SaveChanges();
            }
        }