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