. */ declare(strict_types=1); namespace FireflyIII\Helpers\Collector\Extensions; use FireflyIII\Helpers\Collector\GroupCollectorInterface; use Illuminate\Database\Eloquent\Builder as EloquentBuilder; /** * Trait AmountCollection */ trait AmountCollection { /** * Get transactions with a specific amount. * * @param string $amount * * @return GroupCollectorInterface */ public function amountIs(string $amount): GroupCollectorInterface { $this->query->where( static function (EloquentBuilder $q) use ($amount) { $q->where('source.amount', app('steam')->negative($amount)); } ); return $this; } /** * @inheritDoc */ public function amountIsNot(string $amount): GroupCollectorInterface { $this->query->where( static function (EloquentBuilder $q) use ($amount) { $q->where('source.amount', '!=', app('steam')->negative($amount)); } ); return $this; } /** * Get transactions where the amount is less than. * * @param string $amount * * @return GroupCollectorInterface */ public function amountLess(string $amount): GroupCollectorInterface { $this->query->where( function (EloquentBuilder $q) use ($amount) { $q->where('destination.amount', '<=', app('steam')->positive($amount)); } ); return $this; } /** * Get transactions where the amount is more than. * * @param string $amount * * @return GroupCollectorInterface */ public function amountMore(string $amount): GroupCollectorInterface { $this->query->where( function (EloquentBuilder $q) use ($amount) { $q->where('destination.amount', '>=', app('steam')->positive($amount)); } ); return $this; } /** * Get transactions with a specific foreign amount. * * @param string $amount * * @return GroupCollectorInterface */ public function foreignAmountIs(string $amount): GroupCollectorInterface { $this->query->where( static function (EloquentBuilder $q) use ($amount) { $q->whereNotNull('source.foreign_amount'); $q->where('source.foreign_amount', app('steam')->negative($amount)); } ); return $this; } /** * Get transactions with a specific foreign amount. * * @param string $amount * * @return GroupCollectorInterface */ public function foreignAmountIsNot(string $amount): GroupCollectorInterface { $this->query->where( static function (EloquentBuilder $q) use ($amount) { $q->whereNull('source.foreign_amount'); $q->orWhere('source.foreign_amount', '!=', app('steam')->negative($amount)); } ); return $this; } /** * Get transactions where the amount is less than. * * @param string $amount * * @return GroupCollectorInterface */ public function foreignAmountLess(string $amount): GroupCollectorInterface { $this->query->where( function (EloquentBuilder $q) use ($amount) { $q->whereNotNull('destination.foreign_amount'); $q->where('destination.foreign_amount', '<=', app('steam')->positive($amount)); } ); return $this; } /** * Get transactions where the amount is more than. * * @param string $amount * * @return GroupCollectorInterface */ public function foreignAmountMore(string $amount): GroupCollectorInterface { $this->query->where( function (EloquentBuilder $q) use ($amount) { $q->whereNotNull('destination.foreign_amount'); $q->where('destination.foreign_amount', '>=', app('steam')->positive($amount)); } ); return $this; } }