diff --git a/app/Abstracts/Listeners/Report.php b/app/Abstracts/Listeners/Report.php index cdb33381e..eff623874 100644 --- a/app/Abstracts/Listeners/Report.php +++ b/app/Abstracts/Listeners/Report.php @@ -82,17 +82,17 @@ abstract class Report public function getCustomers() { - return $this->getContacts($this->getCustomerTypes()); + return $this->getContacts('customer'); } public function getVendors() { - return $this->getContacts($this->getVendorTypes()); + return $this->getContacts('vendor'); } - public function getContacts($types) + public function getContacts($type) { - return Contact::type($types)->orderBy('name')->pluck('name', 'id')->toArray(); + return Contact::$type()->orderBy('name')->pluck('name', 'id')->toArray(); } public function applyDateFilter($event) diff --git a/app/Http/Controllers/Common/Search.php b/app/Http/Controllers/Common/Search.php index e0a745cdf..21fb486a5 100644 --- a/app/Http/Controllers/Common/Search.php +++ b/app/Http/Controllers/Common/Search.php @@ -9,12 +9,9 @@ use App\Models\Common\Contact; use App\Models\Purchase\Bill; use App\Models\Sale\Invoice; use App\Models\Common\Item; -use App\Traits\Contacts; class Search extends Controller { - use Contacts; - /** * Display a listing of the resource. * @@ -82,7 +79,7 @@ class Search extends Controller } }*/ - $customers = Contact::type($this->getCustomerTypes())->enabled()->usingSearchString($keyword)->get(); + $customers = Contact::customer()->enabled()->usingSearchString($keyword)->get(); if ($customers->count()) { foreach ($customers as $customer) { @@ -124,7 +121,7 @@ class Search extends Controller } }*/ - $vendors = Contact::type($this->getVendorTypes())->enabled()->usingSearchString($keyword)->get(); + $vendors = Contact::vendor()->enabled()->usingSearchString($keyword)->get(); if ($vendors->count()) { foreach ($vendors as $vendor) { diff --git a/app/Http/Controllers/Purchases/Bills.php b/app/Http/Controllers/Purchases/Bills.php index f329bcd87..2f5c3744b 100644 --- a/app/Http/Controllers/Purchases/Bills.php +++ b/app/Http/Controllers/Purchases/Bills.php @@ -20,7 +20,6 @@ use App\Models\Purchase\Bill; use App\Models\Setting\Category; use App\Models\Setting\Currency; use App\Models\Setting\Tax; -use App\Traits\Contacts; use App\Traits\Currencies; use App\Traits\DateTime; use App\Traits\Purchases; @@ -29,7 +28,7 @@ use App\Utilities\Modules; class Bills extends Controller { - use Contacts, Currencies, DateTime, Purchases, Uploads; + use Currencies, DateTime, Purchases, Uploads; /** * Display a listing of the resource. @@ -40,7 +39,7 @@ class Bills extends Controller { $bills = Bill::with(['contact', 'items', 'histories', 'transactions'])->collect(['billed_at'=> 'desc']); - $vendors = Contact::type($this->getVendorTypes())->enabled()->orderBy('name')->pluck('name', 'id'); + $vendors = Contact::vendor()->enabled()->orderBy('name')->pluck('name', 'id'); $categories = Category::type('expense')->enabled()->orderBy('name')->pluck('name', 'id'); @@ -66,7 +65,7 @@ class Bills extends Controller $account_currency_code = Account::where('id', setting('default.account'))->pluck('currency_code')->first(); - $vendors = Contact::type($this->getVendorTypes())->enabled()->orderBy('name')->pluck('name', 'id'); + $vendors = Contact::vendor()->enabled()->orderBy('name')->pluck('name', 'id'); $categories = Category::type('expense')->enabled()->orderBy('name')->pluck('name', 'id'); @@ -97,7 +96,7 @@ class Bills extends Controller */ public function create() { - $vendors = Contact::type($this->getVendorTypes())->enabled()->orderBy('name')->pluck('name', 'id'); + $vendors = Contact::vendor()->enabled()->orderBy('name')->pluck('name', 'id'); $currencies = Currency::enabled()->orderBy('name')->pluck('name', 'code')->toArray(); @@ -193,7 +192,7 @@ class Bills extends Controller */ public function edit(Bill $bill) { - $vendors = Contact::type($this->getVendorTypes())->enabled()->orderBy('name')->pluck('name', 'id'); + $vendors = Contact::vendor()->enabled()->orderBy('name')->pluck('name', 'id'); $currencies = Currency::enabled()->orderBy('name')->pluck('name', 'code')->toArray(); diff --git a/app/Http/Controllers/Purchases/Payments.php b/app/Http/Controllers/Purchases/Payments.php index 2e7dd63ca..cbf50467e 100644 --- a/app/Http/Controllers/Purchases/Payments.php +++ b/app/Http/Controllers/Purchases/Payments.php @@ -15,14 +15,13 @@ use App\Models\Banking\Transaction; use App\Models\Common\Contact; use App\Models\Setting\Category; use App\Models\Setting\Currency; -use App\Traits\Contacts; use App\Traits\Currencies; use App\Traits\DateTime; use App\Utilities\Modules; class Payments extends Controller { - use Contacts, Currencies, DateTime; + use Currencies, DateTime; /** * Display a listing of the resource. @@ -33,7 +32,7 @@ class Payments extends Controller { $payments = Transaction::type('expense')->with(['account', 'category', 'contact'])->isNotTransfer()->collect(['paid_at'=> 'desc']); - $vendors = Contact::type($this->getVendorTypes())->enabled()->orderBy('name')->pluck('name', 'id'); + $vendors = Contact::vendor()->enabled()->orderBy('name')->pluck('name', 'id'); $categories = Category::type('expense')->enabled()->orderBy('name')->pluck('name', 'id'); @@ -67,7 +66,7 @@ class Payments extends Controller $currency = Currency::where('code', $account_currency_code)->first(); - $vendors = Contact::type($this->getVendorTypes())->enabled()->orderBy('name')->pluck('name', 'id'); + $vendors = Contact::vendor()->enabled()->orderBy('name')->pluck('name', 'id'); $categories = Category::type('expense')->enabled()->orderBy('name')->pluck('name', 'id'); @@ -155,7 +154,7 @@ class Payments extends Controller $currency = Currency::where('code', $payment->currency_code)->first(); - $vendors = Contact::type($this->getVendorTypes())->enabled()->orderBy('name')->pluck('name', 'id'); + $vendors = Contact::vendor()->enabled()->orderBy('name')->pluck('name', 'id'); $categories = Category::type('expense')->enabled()->orderBy('name')->pluck('name', 'id'); diff --git a/app/Http/Controllers/Purchases/Vendors.php b/app/Http/Controllers/Purchases/Vendors.php index 690e87d62..17a0829db 100644 --- a/app/Http/Controllers/Purchases/Vendors.php +++ b/app/Http/Controllers/Purchases/Vendors.php @@ -28,7 +28,7 @@ class Vendors extends Controller */ public function index() { - $vendors = Contact::type($this->getVendorTypes())->collect(); + $vendors = Contact::vendor()->collect(); return view('purchases.vendors.index', compact('vendors')); } diff --git a/app/Http/Controllers/Sales/Customers.php b/app/Http/Controllers/Sales/Customers.php index 2ae5b08a9..f52e241ae 100644 --- a/app/Http/Controllers/Sales/Customers.php +++ b/app/Http/Controllers/Sales/Customers.php @@ -14,14 +14,11 @@ use App\Models\Banking\Transaction; use App\Models\Common\Contact; use App\Models\Sale\Invoice; use App\Models\Setting\Currency; -use App\Traits\Contacts; use Date; use Illuminate\Http\Request as BaseRequest; class Customers extends Controller { - use Contacts; - /** * Display a listing of the resource. * @@ -29,7 +26,7 @@ class Customers extends Controller */ public function index() { - $customers = Contact::type($this->getCustomerTypes())->collect(); + $customers = Contact::customer()->collect(); return view('sales.customers.index', compact('customers')); } diff --git a/app/Http/Controllers/Sales/Invoices.php b/app/Http/Controllers/Sales/Invoices.php index 4df6ccb9f..b9d4559d5 100644 --- a/app/Http/Controllers/Sales/Invoices.php +++ b/app/Http/Controllers/Sales/Invoices.php @@ -20,7 +20,6 @@ use App\Models\Setting\Category; use App\Models\Setting\Currency; use App\Models\Setting\Tax; use App\Notifications\Sale\Invoice as Notification; -use App\Traits\Contacts; use App\Traits\Currencies; use App\Traits\DateTime; use App\Traits\Sales; @@ -30,7 +29,7 @@ use Illuminate\Support\Facades\URL; class Invoices extends Controller { - use Contacts, Currencies, DateTime, Sales; + use Currencies, DateTime, Sales; /** * Display a listing of the resource. @@ -41,7 +40,7 @@ class Invoices extends Controller { $invoices = Invoice::with(['contact', 'items', 'histories', 'transactions'])->collect(['invoice_number'=> 'desc']); - $customers = Contact::type($this->getCustomerTypes())->enabled()->orderBy('name')->pluck('name', 'id'); + $customers = Contact::customer()->enabled()->orderBy('name')->pluck('name', 'id'); $categories = Category::type('income')->enabled()->orderBy('name')->pluck('name', 'id'); @@ -67,7 +66,7 @@ class Invoices extends Controller $account_currency_code = Account::where('id', setting('default.account'))->pluck('currency_code')->first(); - $customers = Contact::type($this->getCustomerTypes())->enabled()->orderBy('name')->pluck('name', 'id'); + $customers = Contact::customer()->enabled()->orderBy('name')->pluck('name', 'id'); $categories = Category::type('income')->enabled()->orderBy('name')->pluck('name', 'id'); @@ -100,7 +99,7 @@ class Invoices extends Controller */ public function create() { - $customers = Contact::type($this->getCustomerTypes())->enabled()->orderBy('name')->pluck('name', 'id'); + $customers = Contact::customer()->enabled()->orderBy('name')->pluck('name', 'id'); $currencies = Currency::enabled()->orderBy('name')->pluck('name', 'code')->toArray(); @@ -196,7 +195,7 @@ class Invoices extends Controller */ public function edit(Invoice $invoice) { - $customers = Contact::type($this->getCustomerTypes())->enabled()->orderBy('name')->pluck('name', 'id'); + $customers = Contact::customer()->enabled()->orderBy('name')->pluck('name', 'id'); $currencies = Currency::enabled()->orderBy('name')->pluck('name', 'code')->toArray(); diff --git a/app/Http/Controllers/Sales/Revenues.php b/app/Http/Controllers/Sales/Revenues.php index 33126a65b..b0146538c 100644 --- a/app/Http/Controllers/Sales/Revenues.php +++ b/app/Http/Controllers/Sales/Revenues.php @@ -15,14 +15,13 @@ use App\Models\Banking\Transaction; use App\Models\Common\Contact; use App\Models\Setting\Category; use App\Models\Setting\Currency; -use App\Traits\Contacts; use App\Traits\Currencies; use App\Traits\DateTime; use App\Utilities\Modules; class Revenues extends Controller { - use Contacts, Currencies, DateTime; + use Currencies, DateTime; /** * Display a listing of the resource. @@ -33,7 +32,7 @@ class Revenues extends Controller { $revenues = Transaction::type('income')->with(['account', 'category', 'contact'])->isNotTransfer()->collect(['paid_at'=> 'desc']); - $customers = Contact::type($this->getCustomerTypes())->enabled()->orderBy('name')->pluck('name', 'id'); + $customers = Contact::customer()->enabled()->orderBy('name')->pluck('name', 'id'); $categories = Category::type('income')->enabled()->orderBy('name')->pluck('name', 'id'); @@ -67,7 +66,7 @@ class Revenues extends Controller $currency = Currency::where('code', $account_currency_code)->first(); - $customers = Contact::type($this->getCustomerTypes())->enabled()->orderBy('name')->pluck('name', 'id'); + $customers = Contact::customer()->enabled()->orderBy('name')->pluck('name', 'id'); $categories = Category::type('income')->enabled()->orderBy('name')->pluck('name', 'id'); @@ -155,7 +154,7 @@ class Revenues extends Controller $currency = Currency::where('code', $revenue->currency_code)->first(); - $customers = Contact::type($this->getCustomerTypes())->enabled()->orderBy('name')->pluck('name', 'id'); + $customers = Contact::customer()->enabled()->orderBy('name')->pluck('name', 'id'); $categories = Category::type('income')->enabled()->orderBy('name')->pluck('name', 'id'); diff --git a/app/Models/Common/Contact.php b/app/Models/Common/Contact.php index 632c0a97d..8ab041a8f 100644 --- a/app/Models/Common/Contact.php +++ b/app/Models/Common/Contact.php @@ -4,13 +4,14 @@ namespace App\Models\Common; use App\Abstracts\Model; use Bkwld\Cloner\Cloneable; +use App\Traits\Contacts; use App\Traits\Currencies; use App\Traits\Media; use Illuminate\Notifications\Notifiable; class Contact extends Model { - use Cloneable, Currencies, Media, Notifiable; + use Cloneable, Contacts, Currencies, Media, Notifiable; protected $table = 'contacts'; @@ -79,6 +80,28 @@ class Contact extends Model return $query->whereIn($this->table . '.type', (array) $types); } + /** + * Scope to include only vendors. + * + * @param \Illuminate\Database\Eloquent\Builder $query + * @return \Illuminate\Database\Eloquent\Builder + */ + public function scopeVendor($query) + { + return $query->whereIn($this->table . '.type', (array) $this->getVendorTypes()); + } + + /** + * Scope to include only customers. + * + * @param \Illuminate\Database\Eloquent\Builder $query + * @return \Illuminate\Database\Eloquent\Builder + */ + public function scopeCustomer($query) + { + return $query->whereIn($this->table . '.type', (array) $this->getCustomerTypes()); + } + public function scopeEmail($query, $email) { return $query->where('email', '=', $email);