public function run()
    {
        if (!$this->validate()) {
            return false;
        }

        return DB::transaction(function() {
            $events = $this->getDeferedEvents();

            foreach ($events as $event) {
                if (!empty($event->value)) {
                    continue;
                }

                $event->value = Event::fire($event->name);
                $event->save();
            }
        });
    }