The builder is a main factor of Notifynder, it make sure
that the notification is decorated and validated before
are passed to the Sender Classes. It also helps you to
create multi notifications with the same simple and easy sintax.
/** @test */ function it_send_with_an_custom_sender() { $this->senders->extend('sendCustom', function ($notification, $app) { return new CustomDefaultSender($notification, $app->make('notifynder')); }); $category_name = 'my.category'; $this->createCategory(['name' => $category_name]); $singleNotification = $this->builder->category($category_name)->to(1)->from(2)->url('www.notifynder.io')->toArray(); $this->senders->sendCustom($singleNotification); $this->assertCount(1, Notification::all()); }
/** * Set the category of the * notification * * @param $name * @return $this */ public function category($name) { // Check if the category is lazy loaded if ($this->isLazyLoaded($name)) { // Yes it is, split out the value from the array $this->defaultCategory = $this->getCategoriesContainer($name); // set category on the builder parent::category($this->defaultCategory->id); return $this; } // Otherwise ask to the db and give me the right category // associated with this name. If the category is not found // it throw CategoryNotFoundException $category = $this->notifynderCategory->findByName($name); $this->defaultCategory = $category; // Set the category on the array $this->setCategoriesContainer($name, $category); // set category on the builder parent::category($category->id); return $this; }