1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-14 15:13:29 +01:00
invoiceninja/app/ninja/repositories/ClientRepository.php

128 lines
3.4 KiB
PHP
Raw Normal View History

2013-12-25 22:34:42 +01:00
<?php namespace ninja\repositories;
use Client;
use Contact;
class ClientRepository
{
2014-01-06 19:03:00 +01:00
public function find($filter = null)
{
$query = \DB::table('clients')
->join('contacts', 'contacts.client_id', '=', 'clients.id')
->where('clients.account_id', '=', \Auth::user()->account_id)
->where('contacts.is_primary', '=', true)
->select('clients.public_id','clients.name','contacts.first_name','contacts.last_name','clients.balance','clients.last_login','clients.created_at','clients.work_phone','contacts.email','clients.currency_id');
2014-02-19 20:59:46 +01:00
if (!\Session::get('show_trash'))
2014-02-18 22:56:18 +01:00
{
$query->where('clients.deleted_at', '=', null);
}
2014-01-06 19:03:00 +01:00
if ($filter)
{
$query->where(function($query) use ($filter)
{
$query->where('clients.name', 'like', '%'.$filter.'%')
->orWhere('contacts.first_name', 'like', '%'.$filter.'%')
->orWhere('contacts.last_name', 'like', '%'.$filter.'%')
->orWhere('contacts.email', 'like', '%'.$filter.'%');
});
}
return $query;
}
2013-12-25 22:34:42 +01:00
public function save($publicId, $data)
{
if ($publicId == "-1")
{
$client = Client::createNew();
$contact = Contact::createNew();
$contact->is_primary = true;
}
else
{
$client = Client::scope($publicId)->with('contacts')->firstOrFail();
$contact = $client->contacts()->where('is_primary', '=', true)->firstOrFail();
}
$client->name = trim($data['name']);
$client->work_phone = trim($data['work_phone']);
$client->address1 = trim($data['address1']);
$client->address2 = trim($data['address2']);
$client->city = trim($data['city']);
$client->state = trim($data['state']);
$client->postal_code = trim($data['postal_code']);
$client->country_id = $data['country_id'] ? $data['country_id'] : null;
2013-12-30 21:17:45 +01:00
$client->private_notes = trim($data['private_notes']);
2014-01-06 19:03:00 +01:00
$client->size_id = $data['size_id'] ? $data['size_id'] : null;
$client->industry_id = $data['industry_id'] ? $data['industry_id'] : null;
2014-02-02 19:14:56 +01:00
$client->currency_id = $data['currency_id'] ? $data['currency_id'] : 1;
2013-12-31 10:43:39 +01:00
$client->payment_terms = $data['payment_terms'];
2013-12-25 22:34:42 +01:00
$client->website = trim($data['website']);
$client->save();
$isPrimary = true;
$contactIds = [];
foreach ($data['contacts'] as $record)
{
$record = (array) $record;
2013-12-31 10:43:39 +01:00
if ($publicId != "-1" && isset($record['public_id']) && $record['public_id'])
2013-12-25 22:34:42 +01:00
{
$contact = Contact::scope($record['public_id'])->firstOrFail();
}
else
{
$contact = Contact::createNew();
}
2014-02-09 16:38:50 +01:00
$contact->email = trim(strtolower($record['email']));
2013-12-25 22:34:42 +01:00
$contact->first_name = trim($record['first_name']);
$contact->last_name = trim($record['last_name']);
$contact->phone = trim($record['phone']);
$contact->is_primary = $isPrimary;
$contact->send_invoice = $record['send_invoice'];
$isPrimary = false;
$client->contacts()->save($contact);
$contactIds[] = $contact->public_id;
}
foreach ($client->contacts as $contact)
{
if (!in_array($contact->public_id, $contactIds))
{
2014-01-02 14:21:15 +01:00
$contact->delete();
2013-12-25 22:34:42 +01:00
}
}
2014-01-02 00:12:33 +01:00
$client->save();
2014-01-08 21:09:47 +01:00
2014-01-09 20:00:08 +01:00
if ($publicId == "-1")
{
\Activity::createClient($client);
}
2014-01-02 00:12:33 +01:00
2013-12-25 22:34:42 +01:00
return $client;
}
2014-01-08 00:59:06 +01:00
public function bulk($ids, $action)
{
$clients = Client::scope($ids)->get();
foreach ($clients as $client)
{
if ($action == 'delete')
{
$client->is_deleted = true;
$client->save();
}
$client->delete();
}
return count($clients);
}
2013-12-25 22:34:42 +01:00
}