user = $user; $this->voucher = $voucher; $this->emailSentCount = $emailSentCount; } public function handle() { $currentDatetime = Carbon::now(); $dateToCompare = Carbon::parse($this->voucher->end_date); if (!$this->user->hasCustomAttribute($this->voucher->code."_EMAIL_COUNT") && $this->user->rewards->where('voucher_id', $this->voucher->id)->count() > 0 && $currentDatetime->isBefore($dateToCompare)) { //Key #1 $keyValuePairObject = new KeyValuePairObject( $this->voucher->code."_EMAIL_COUNT", $this->emailSentCount ); (App()->make(CreatesKeyValuePair::class))->execute($this->user, $keyValuePairObject); //Key #2 $keyValuePairObject = new KeyValuePairObject( $this->voucher->code."_EMAIL_DATE_".$this->emailSentCount, Carbon::now() ); (App()->make(CreatesKeyValuePair::class))->execute($this->user, $keyValuePairObject); $this->user->notify(new WelcomeVoucherEmail($this->user, $this->voucher)); } } }