diff --git a/app/controllers/ActivityController.php b/app/controllers/ActivityController.php index d66607550d59..125e3bd72948 100755 --- a/app/controllers/ActivityController.php +++ b/app/controllers/ActivityController.php @@ -1,22 +1,21 @@ join('clients', 'clients.id', '=', 'activities.client_id') ->where('clients.public_id', '=', $clientPublicId) ->where('activities.account_id', '=', Auth::user()->account_id) ->select('activities.id', 'activities.message', 'activities.created_at', 'clients.currency_id', 'activities.balance', 'activities.adjustment'); - + return Datatable::query($query) //->addColumn('blank', function($model) { return ''; }) - ->addColumn('id', function($model) { return Utils::timestampToDateTimeString(strtotime($model->created_at)); }) - ->addColumn('message', function($model) { return Utils::decodeActivity($model->message); }) - ->addColumn('balance', function($model) { return Utils::formatMoney($model->balance, $model->currency_id); }) - ->addColumn('adjustment', function($model) { return $model->adjustment != 0 ? Utils::formatMoney($model->adjustment, $model->currency_id) : ''; }) - ->make(); - } - -} \ No newline at end of file + ->addColumn('id', function ($model) { return Utils::timestampToDateTimeString(strtotime($model->created_at)); }) + ->addColumn('message', function ($model) { return Utils::decodeActivity($model->message); }) + ->addColumn('balance', function ($model) { return Utils::formatMoney($model->balance, $model->currency_id); }) + ->addColumn('adjustment', function ($model) { return $model->adjustment != 0 ? Utils::formatMoney($model->adjustment, $model->currency_id) : ''; }) + ->make(); + } +} diff --git a/app/controllers/AppController.php b/app/controllers/AppController.php index ecaa5f6d8835..0d9405d846eb 100644 --- a/app/controllers/AppController.php +++ b/app/controllers/AppController.php @@ -43,7 +43,7 @@ class AppController extends BaseController { $database = Input::get('database'); $dbType = $database['default']; $database[$dbType] = $database['type']; - //unset($database['type']); + unset($database['type']); $mail = Input::get('mail'); $email = $mail['username']; @@ -58,7 +58,7 @@ class AppController extends BaseController { if ($test == 'db') { - return $valid ? 'Success' : 'Failed'; + return $valid === true ? 'Success' : $valid; } else if (!$valid) { @@ -115,7 +115,7 @@ class AppController extends BaseController { { Config::set("database.connections.{$dbType}.{$key}", $val); } - + try { $valid = DB::connection()->getDatabaseName() ? true : false; diff --git a/app/controllers/BaseController.php b/app/controllers/BaseController.php index 5c28d5fa1cca..11891536c641 100755 --- a/app/controllers/BaseController.php +++ b/app/controllers/BaseController.php @@ -1,22 +1,21 @@ layout)) { + $this->layout = View::make($this->layout); + } + } - /** - * Setup the layout used by the controller. - * - * @return void - */ - protected function setupLayout() - { - if ( ! is_null($this->layout)) - { - $this->layout = View::make($this->layout); - } - } - - public function __construct() - { - $this->beforeFilter('csrf', array('on' => array('post', 'delete', 'put'))); - } -} \ No newline at end of file + public function __construct() + { + $this->beforeFilter('csrf', array('on' => array('post', 'delete', 'put'))); + } +} diff --git a/app/controllers/ClientApiController.php b/app/controllers/ClientApiController.php index 3a1abc6fd135..2d76dfab108b 100644 --- a/app/controllers/ClientApiController.php +++ b/app/controllers/ClientApiController.php @@ -2,56 +2,56 @@ use ninja\repositories\ClientRepository; -class ClientApiController extends Controller { +class ClientApiController extends Controller +{ + protected $clientRepo; - protected $clientRepo; - - public function __construct(ClientRepository $clientRepo) - { - $this->clientRepo = $clientRepo; - } - - public function ping() - { - $headers = Utils::getApiHeaders(); - return Response::make('', 200, $headers); - } - - public function index() - { - if (!Utils::isPro()) { - return Redirect::to('/'); - } - - $clients = Client::scope()->with('contacts')->orderBy('created_at', 'desc')->get(); - $clients = Utils::remapPublicIds($clients->toArray()); - - $response = json_encode($clients, JSON_PRETTY_PRINT); - $headers = Utils::getApiHeaders(count($clients)); - return Response::make($response, 200, $headers); - } - - public function store() - { - if (!Utils::isPro()) { - return Redirect::to('/'); - } - - $data = Input::all(); - $error = $this->clientRepo->getErrors($data); - - if ($error) + public function __construct(ClientRepository $clientRepo) { - $headers = Utils::getApiHeaders(); - return Response::make($error, 500, $headers); - } - else - { - $client = $this->clientRepo->save(false, $data, false); - $response = json_encode($client, JSON_PRETTY_PRINT); - $headers = Utils::getApiHeaders(); - return Response::make($response, 200, $headers); + $this->clientRepo = $clientRepo; } - } + public function ping() + { + $headers = Utils::getApiHeaders(); + + return Response::make('', 200, $headers); + } + + public function index() + { + if (!Utils::isPro()) { + return Redirect::to('/'); + } + + $clients = Client::scope()->with('contacts')->orderBy('created_at', 'desc')->get(); + $clients = Utils::remapPublicIds($clients->toArray()); + + $response = json_encode($clients, JSON_PRETTY_PRINT); + $headers = Utils::getApiHeaders(count($clients)); + + return Response::make($response, 200, $headers); + } + + public function store() + { + if (!Utils::isPro()) { + return Redirect::to('/'); + } + + $data = Input::all(); + $error = $this->clientRepo->getErrors($data); + + if ($error) { + $headers = Utils::getApiHeaders(); + + return Response::make($error, 500, $headers); + } else { + $client = $this->clientRepo->save(false, $data, false); + $response = json_encode($client, JSON_PRETTY_PRINT); + $headers = Utils::getApiHeaders(); + + return Response::make($response, 200, $headers); + } + } } diff --git a/app/controllers/ClientController.php b/app/controllers/ClientController.php index c073ad87254b..ea697d185320 100755 --- a/app/controllers/ClientController.php +++ b/app/controllers/ClientController.php @@ -2,300 +2,276 @@ use ninja\repositories\ClientRepository; -class ClientController extends \BaseController { +class ClientController extends \BaseController +{ + protected $clientRepo; - protected $clientRepo; + public function __construct(ClientRepository $clientRepo) + { + parent::__construct(); - public function __construct(ClientRepository $clientRepo) - { - parent::__construct(); + $this->clientRepo = $clientRepo; + } - $this->clientRepo = $clientRepo; - } + /** + * Display a listing of the resource. + * + * @return Response + */ + public function index() + { + return View::make('list', array( + 'entityType' => ENTITY_CLIENT, + 'title' => trans('texts.clients'), + 'columns' => Utils::trans(['checkbox', 'client', 'contact', 'email', 'date_created', 'last_login', 'balance', 'action']), + )); + } - /** - * Display a listing of the resource. - * - * @return Response - */ - public function index() - { - return View::make('list', array( - 'entityType'=>ENTITY_CLIENT, - 'title' => trans('texts.clients'), - 'columns'=>Utils::trans(['checkbox', 'client', 'contact', 'email', 'date_created', 'last_login', 'balance', 'action']) - )); - } - - public function getDatatable() - { - $clients = $this->clientRepo->find(Input::get('sSearch')); + public function getDatatable() + { + $clients = $this->clientRepo->find(Input::get('sSearch')); return Datatable::query($clients) - ->addColumn('checkbox', function($model) { return ''; }) - ->addColumn('name', function($model) { return link_to('clients/' . $model->public_id, $model->name); }) - ->addColumn('first_name', function($model) { return link_to('clients/' . $model->public_id, $model->first_name . ' ' . $model->last_name); }) - ->addColumn('email', function($model) { return link_to('clients/' . $model->public_id, $model->email); }) - ->addColumn('created_at', function($model) { return Utils::timestampToDateString(strtotime($model->created_at)); }) - ->addColumn('last_login', function($model) { return Utils::timestampToDateString(strtotime($model->last_login)); }) - ->addColumn('balance', function($model) { return Utils::formatMoney($model->balance, $model->currency_id); }) - ->addColumn('dropdown', function($model) - { - if ($model->is_deleted) - { - return '
'; + ->addColumn('checkbox', function ($model) { return ''; }) + ->addColumn('name', function ($model) { return link_to('clients/'.$model->public_id, $model->name); }) + ->addColumn('first_name', function ($model) { return link_to('clients/'.$model->public_id, $model->first_name.' '.$model->last_name); }) + ->addColumn('email', function ($model) { return link_to('clients/'.$model->public_id, $model->email); }) + ->addColumn('created_at', function ($model) { return Utils::timestampToDateString(strtotime($model->created_at)); }) + ->addColumn('last_login', function ($model) { return Utils::timestampToDateString(strtotime($model->last_login)); }) + ->addColumn('balance', function ($model) { return Utils::formatMoney($model->balance, $model->currency_id); }) + ->addColumn('dropdown', function ($model) { + if ($model->is_deleted) { + return ''; } - $str = ' '; - }) - ->make(); + }) + ->make(); } - public function create($clientPublicId = 0) - { + { $data = array( 'clientPublicId' => Input::old('client') ? Input::old('client') : $clientPublicId, //'invoicePublicId' => Input::old('invoice') ? Input::old('invoice') : $invoicePublicId, - 'credit' => null, - 'method' => 'POST', - 'url' => 'credits', + 'credit' => null, + 'method' => 'POST', + 'url' => 'credits', 'title' => trans('texts.new_credit'), //'currencies' => Currency::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get(), //'invoices' => Invoice::scope()->with('client', 'invoice_status')->orderBy('invoice_number')->get(), - 'clients' => Client::scope()->with('contacts')->orderBy('name')->get()); + 'clients' => Client::scope()->with('contacts')->orderBy('name')->get(), ); return View::make('credits.edit', $data); } @@ -95,12 +88,13 @@ class CreditController extends \BaseController { $data = array( 'client' => null, - 'credit' => $credit, - 'method' => 'PUT', - 'url' => 'credits/' . $publicId, + 'credit' => $credit, + 'method' => 'PUT', + 'url' => 'credits/'.$publicId, 'title' => 'Edit Credit', //'currencies' => Currency::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get(), - 'clients' => Client::scope()->with('contacts')->orderBy('name')->get()); + 'clients' => Client::scope()->with('contacts')->orderBy('name')->get(), ); + return View::make('credit.edit', $data); } @@ -123,35 +117,33 @@ class CreditController extends \BaseController { $validator = Validator::make(Input::all(), $rules); - if ($validator->fails()) - { - $url = $publicId ? 'credits/' . $publicId . '/edit' : 'credits/create'; + if ($validator->fails()) { + $url = $publicId ? 'credits/'.$publicId.'/edit' : 'credits/create'; + return Redirect::to($url) ->withErrors($validator) ->withInput(); - } - else - { + } else { $this->creditRepo->save($publicId, Input::all()); $message = trans('texts.created_credit'); Session::flash('message', $message); - return Redirect::to('clients/' . Input::get('client')); + + return Redirect::to('clients/'.Input::get('client')); } } public function bulk() { $action = Input::get('action'); - $ids = Input::get('id') ? Input::get('id') : Input::get('ids'); + $ids = Input::get('id') ? Input::get('id') : Input::get('ids'); $count = $this->creditRepo->bulk($ids, $action); - if ($count > 0) - { - $message = Utils::pluralize($action.'d_credit', $count); + if ($count > 0) { + $message = Utils::pluralize($action.'d_credit', $count); Session::flash('message', $message); } return Redirect::to('credits'); } -} \ No newline at end of file +} diff --git a/app/controllers/DashboardController.php b/app/controllers/DashboardController.php index ca7883023f12..7e8fa5a58be7 100644 --- a/app/controllers/DashboardController.php +++ b/app/controllers/DashboardController.php @@ -1,16 +1,16 @@ = '.INVOICE_STATUS_SENT.' THEN 1 ELSE 0 END) invoices_sent, COUNT(DISTINCT clients.id) active_clients, AVG(invoices.amount) as invoice_avg'); - $metrics = DB::table('accounts') + $metrics = DB::table('accounts') ->select($select) ->leftJoin('clients', 'accounts.id', '=', 'clients.account_id') ->leftJoin('invoices', 'clients.id', '=', 'invoices.client_id') @@ -18,10 +18,10 @@ class DashboardController extends \BaseController { ->where('clients.is_deleted', '=', false) ->groupBy('accounts.id') ->first(); - - $select = DB::raw('SUM(clients.paid_to_date) as value'); - $totalIncome = DB::table('accounts') + $select = DB::raw('SUM(clients.paid_to_date) as value'); + + $totalIncome = DB::table('accounts') ->select($select) ->leftJoin('clients', 'accounts.id', '=', 'clients.account_id') ->where('accounts.id', '=', Auth::user()->account_id) @@ -29,18 +29,18 @@ class DashboardController extends \BaseController { ->groupBy('accounts.id') ->first(); - $activities = Activity::where('activities.account_id', '=', Auth::user()->account_id) + $activities = Activity::where('activities.account_id', '=', Auth::user()->account_id) ->orderBy('created_at', 'desc')->take(6)->get(); - $pastDue = Invoice::scope() + $pastDue = Invoice::scope() ->where('due_date', '<', date('Y-m-d')) ->where('balance', '>', 0) ->where('is_recurring', '=', false) ->where('is_quote', '=', false) - ->where('is_deleted', '=', false) + ->where('is_deleted', '=', false) ->orderBy('due_date', 'asc')->take(6)->get(); - $upcoming = Invoice::scope() + $upcoming = Invoice::scope() ->where('due_date', '>=', date('Y-m-d')) ->where('balance', '>', 0) ->where('is_recurring', '=', false) @@ -48,7 +48,7 @@ class DashboardController extends \BaseController { ->where('is_deleted', '=', false) ->orderBy('due_date', 'asc')->take(6)->get(); - $data = [ + $data = [ 'totalIncome' => Utils::formatMoney($totalIncome ? $totalIncome->value : 0, Session::get(SESSION_CURRENCY)), 'billedClients' => $metrics ? $metrics->billed_clients : 0, 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, @@ -56,10 +56,9 @@ class DashboardController extends \BaseController { 'invoiceAvg' => Utils::formatMoney(($metrics ? $metrics->invoice_avg : 0), Session::get(SESSION_CURRENCY)), 'activities' => $activities, 'pastDue' => $pastDue, - 'upcoming' => $upcoming + 'upcoming' => $upcoming, ]; - return View::make('dashboard', $data); - } - + return View::make('dashboard', $data); + } } diff --git a/app/controllers/HomeController.php b/app/controllers/HomeController.php index 5750227aa91b..6431283b52a9 100755 --- a/app/controllers/HomeController.php +++ b/app/controllers/HomeController.php @@ -2,160 +2,148 @@ use ninja\mailers\Mailer; -class HomeController extends BaseController { +class HomeController extends BaseController +{ + protected $mailer; - protected $mailer; + public function __construct(Mailer $mailer) + { + parent::__construct(); - public function __construct(Mailer $mailer) - { - parent::__construct(); + $this->mailer = $mailer; + } - $this->mailer = $mailer; - } + public function showIndex() + { + if (Utils::isNinja()) { + return View::make('public.splash'); + } else { + if (!Utils::isDatabaseSetup()) { + return Redirect::to('/setup'); + } elseif (Account::count() == 0) { + return Redirect::to('/invoice_now'); + } else { + return Redirect::to('/login'); + } + } + } - public function showIndex() - { - if (Utils::isNinja()) - { - return View::make('public.splash'); - } - else - { - if (!Utils::isDatabaseSetup()) - { - return Redirect::to('/setup'); - } - else if (Account::count() == 0) - { - return Redirect::to('/invoice_now'); - } - else - { - return Redirect::to('/login'); - } - } - } + public function showAboutUs() + { + $data = [ + 'title' => 'About Us', + 'description' => 'Invoice Ninja is an an open-source solution where you can create, customize, and generate invoices online for free using our templates!', + ]; - public function showAboutUs() - { - $data = [ - 'title' => 'About Us', - 'description' => 'Invoice Ninja is an an open-source solution where you can create, customize, and generate invoices online for free using our templates!' - ]; + return View::make('public.about_us', $data); + } - return View::make('public.about_us', $data); - } + public function showContactUs() + { + $data = [ + 'title' => 'Contact Us', + 'description' => 'Contact us today and try out our free or premium hassle-free plans. Start your online invoicing today with Invoice Ninja!', + ]; - public function showContactUs() - { - $data = [ - 'title' => 'Contact Us', - 'description' => 'Contact us today and try out our free or premium hassle-free plans. Start your online invoicing today with Invoice Ninja!' - ]; + return View::make('public.contact_us', $data); + } - return View::make('public.contact_us', $data); - } + public function showTerms() + { + return View::make('public.terms'); + } - public function showTerms() - { - return View::make('public.terms'); - } + public function showFaq() + { + return View::make('public.faq'); + } - public function showFaq() - { - return View::make('public.faq'); - } + public function showFeatures() + { + return View::make('public.features'); + } - public function showFeatures() - { - return View::make('public.features'); - } + public function showPlans() + { + $data = [ + 'title' => 'Professional Invoicing Software & Templates', + 'description' => 'Invoice Ninja allows you to create and generate your own custom invoices. Choose from our professional invoice templates or customize your own with our pro plan.', + ]; - public function showPlans() - { - $data = [ - 'title' => 'Professional Invoicing Software & Templates', - 'description' => 'Invoice Ninja allows you to create and generate your own custom invoices. Choose from our professional invoice templates or customize your own with our pro plan.' - ]; - - return View::make('public.plans', $data); - } + return View::make('public.plans', $data); + } public function showTestimonials() - { - return View::make('public.testimonials'); - } + { + return View::make('public.testimonials'); + } + public function doContactUs() + { + $email = Input::get('email'); + $name = Input::get('name'); + $message = Input::get('message'); - public function doContactUs() - { - $email = Input::get('email'); - $name = Input::get('name'); - $message = Input::get('message'); + $data = [ + 'text' => $message, + ]; - $data = [ - 'text' => $message - ]; + $this->mailer->sendTo(CONTACT_EMAIL, $email, $name, 'Invoice Ninja Feedback', 'contact', $data); - $this->mailer->sendTo(CONTACT_EMAIL, $email, $name, 'Invoice Ninja Feedback', 'contact', $data); + $message = trans('texts.sent_message'); + Session::flash('message', $message); - $message = trans('texts.sent_message'); - Session::flash('message', $message); + return View::make('public.contact_us'); + } - return View::make('public.contact_us'); - } + public function showComingSoon() + { + return View::make('coming_soon'); + } - public function showComingSoon() - { - return View::make('coming_soon'); - } + public function showSecurePayment() + { + return View::make('secure_payment'); + } - public function showSecurePayment() - { - return View::make('secure_payment'); - } + public function showCompare() + { + return View::make('public.compare'); + } - public function showCompare() - { - return View::make('public.compare'); - } + public function invoiceNow() + { + if (Auth::check()) { + return Redirect::to('invoices/create'); + } else { + return View::make('public.header', ['invoiceNow' => true]); + } + } - public function invoiceNow() - { - if (Auth::check()) - { - return Redirect::to('invoices/create'); - } - else - { - return View::make('public.header', ['invoiceNow' => true]); - } - } + public function newsFeed($userType, $version) + { + $response = Utils::getNewsFeedResponse($userType); - public function newsFeed($userType, $version) - { - $response = Utils::getNewsFeedResponse($userType); + return Response::json($response); + } - return Response::json($response); - } + public function hideMessage() + { + if (Auth::check() && Session::has('news_feed_id')) { + $newsFeedId = Session::get('news_feed_id'); + if ($newsFeedId != NEW_VERSION_AVAILABLE && $newsFeedId > Auth::user()->news_feed_id) { + $user = Auth::user(); + $user->news_feed_id = $newsFeedId; + $user->save(); + } - public function hideMessage() - { - if (Auth::check() && Session::has('news_feed_id')) { - $newsFeedId = Session::get('news_feed_id'); - if ($newsFeedId != NEW_VERSION_AVAILABLE && $newsFeedId > Auth::user()->news_feed_id) { - $user = Auth::user(); - $user->news_feed_id = $newsFeedId; - $user->save(); - } + Session::forget('news_feed_message'); + } - Session::forget('news_feed_message'); - } + return 'success'; + } - return 'success'; - } - - public function logError() - { - return Utils::logError(Input::get('error'), 'JavaScript'); - } -} \ No newline at end of file + public function logError() + { + return Utils::logError(Input::get('error'), 'JavaScript'); + } +} diff --git a/app/controllers/IntegrationController.php b/app/controllers/IntegrationController.php index 03676ac9a1e2..8353d972745e 100644 --- a/app/controllers/IntegrationController.php +++ b/app/controllers/IntegrationController.php @@ -1,29 +1,26 @@ account_id)->where('event_id', '=', $eventId)->first(); + + if (!$subscription) { + $subscription = new Subscription(); + $subscription->account_id = Auth::user()->account_id; + $subscription->event_id = $eventId; + } + + $subscription->target_url = trim(Input::get('target_url')); + $subscription->save(); + + return Response::json('{"id":'.$subscription->id.'}', 201); } - - $subscription = Subscription::where('account_id', '=', Auth::user()->account_id)->where('event_id', '=', $eventId)->first(); - - if (!$subscription) - { - $subscription = new Subscription; - $subscription->account_id = Auth::user()->account_id; - $subscription->event_id = $eventId; - } - - $subscription->target_url = trim(Input::get('target_url')); - $subscription->save(); - - return Response::json('{"id":'.$subscription->id.'}', 201); - } - -} \ No newline at end of file +} diff --git a/app/controllers/InvoiceApiController.php b/app/controllers/InvoiceApiController.php index 7e5dfb742813..10081da8ca37 100644 --- a/app/controllers/InvoiceApiController.php +++ b/app/controllers/InvoiceApiController.php @@ -2,30 +2,31 @@ use ninja\repositories\InvoiceRepository; -class InvoiceApiController extends Controller { +class InvoiceApiController extends Controller +{ + protected $invoiceRepo; - protected $invoiceRepo; - - public function __construct(InvoiceRepository $invoiceRepo) - { - $this->invoiceRepo = $invoiceRepo; - } - - public function index() - { - if (!Utils::isPro()) { - return Redirect::to('/'); + public function __construct(InvoiceRepository $invoiceRepo) + { + $this->invoiceRepo = $invoiceRepo; } - - $invoices = Invoice::scope()->where('invoices.is_quote', '=', false)->orderBy('created_at', 'desc')->get(); - $invoices = Utils::remapPublicIds($invoices->toArray()); - $response = json_encode($invoices, JSON_PRETTY_PRINT); - $headers = Utils::getApiHeaders(count($invoices)); - return Response::make($response, 200, $headers); - } + public function index() + { + if (!Utils::isPro()) { + return Redirect::to('/'); + } - /* + $invoices = Invoice::scope()->where('invoices.is_quote', '=', false)->orderBy('created_at', 'desc')->get(); + $invoices = Utils::remapPublicIds($invoices->toArray()); + + $response = json_encode($invoices, JSON_PRETTY_PRINT); + $headers = Utils::getApiHeaders(count($invoices)); + + return Response::make($response, 200, $headers); + } + + /* public function store() { $data = Input::all(); diff --git a/app/controllers/InvoiceController.php b/app/controllers/InvoiceController.php index 69c8d84266c4..d0a889079b80 100755 --- a/app/controllers/InvoiceController.php +++ b/app/controllers/InvoiceController.php @@ -5,544 +5,493 @@ use ninja\repositories\InvoiceRepository; use ninja\repositories\ClientRepository; use ninja\repositories\TaxRateRepository; -class InvoiceController extends \BaseController { +class InvoiceController extends \BaseController +{ + protected $mailer; + protected $invoiceRepo; + protected $clientRepo; + protected $taxRateRepo; - protected $mailer; - protected $invoiceRepo; - protected $clientRepo; - protected $taxRateRepo; - - public function __construct(Mailer $mailer, InvoiceRepository $invoiceRepo, ClientRepository $clientRepo, TaxRateRepository $taxRateRepo) - { - parent::__construct(); - - $this->mailer = $mailer; - $this->invoiceRepo = $invoiceRepo; - $this->clientRepo = $clientRepo; - $this->taxRateRepo = $taxRateRepo; - } - - public function index() - { - $data = [ - 'title' => trans('texts.invoices'), - 'entityType'=>ENTITY_INVOICE, - 'columns'=>Utils::trans(['checkbox', 'invoice_number', 'client', 'invoice_date', 'invoice_total', 'balance_due', 'due_date', 'status', 'action']) - ]; - - $recurringInvoices = Invoice::scope()->where('is_recurring', '=', true); - - if (Session::get('show_trash:invoice')) + public function __construct(Mailer $mailer, InvoiceRepository $invoiceRepo, ClientRepository $clientRepo, TaxRateRepository $taxRateRepo) { - $recurringInvoices->withTrashed(); + parent::__construct(); + + $this->mailer = $mailer; + $this->invoiceRepo = $invoiceRepo; + $this->clientRepo = $clientRepo; + $this->taxRateRepo = $taxRateRepo; } - if ($recurringInvoices->count() > 0) - { - $data['secEntityType'] = ENTITY_RECURRING_INVOICE; - $data['secColumns'] = Utils::trans(['checkbox', 'frequency', 'client', 'start_date', 'end_date', 'invoice_total', 'action']); - } - - return View::make('list', $data); - } - - public function clientIndex() - { - $data = [ - 'showClientHeader' => true, - 'hideLogo' => Session::get('white_label'), - 'title' => trans('texts.invoices'), - 'entityType'=>ENTITY_INVOICE, - 'columns'=>Utils::trans(['invoice_number', 'invoice_date', 'invoice_total', 'balance_due', 'due_date']) - ]; - - return View::make('public_list', $data); - } - - public function getDatatable($clientPublicId = null) - { - $accountId = Auth::user()->account_id; - $search = Input::get('sSearch'); - - return $this->invoiceRepo->getDatatable($accountId, $clientPublicId, ENTITY_INVOICE, $search); - } - - public function getClientDatatable() - { - //$accountId = Auth::user()->account_id; - $search = Input::get('sSearch'); - $invitationKey = Session::get('invitation_key'); - $invitation = Invitation::where('invitation_key', '=', $invitationKey)->first(); - - if (!$invitation || $invitation->is_deleted) - { - return []; - } - - $invoice = $invitation->invoice; - - if (!$invoice || $invoice->is_deleted) - { - return []; - } - - return $this->invoiceRepo->getClientDatatable($invitation->contact_id, ENTITY_INVOICE, $search); - } - - public function getRecurringDatatable($clientPublicId = null) + public function index() { - $query = $this->invoiceRepo->getRecurringInvoices(Auth::user()->account_id, $clientPublicId, Input::get('sSearch')); - $table = Datatable::query($query); + $data = [ + 'title' => trans('texts.invoices'), + 'entityType' => ENTITY_INVOICE, + 'columns' => Utils::trans(['checkbox', 'invoice_number', 'client', 'invoice_date', 'invoice_total', 'balance_due', 'due_date', 'status', 'action']), + ]; - if (!$clientPublicId) { - $table->addColumn('checkbox', function($model) { return ''; }); - } - - $table->addColumn('frequency', function($model) { return link_to('invoices/' . $model->public_id, $model->frequency); }); + $recurringInvoices = Invoice::scope()->where('is_recurring', '=', true); - if (!$clientPublicId) { - $table->addColumn('client_name', function($model) { return link_to('clients/' . $model->client_public_id, Utils::getClientDisplayName($model)); }); - } - - return $table->addColumn('start_date', function($model) { return Utils::fromSqlDate($model->start_date); }) - ->addColumn('end_date', function($model) { return Utils::fromSqlDate($model->end_date); }) - ->addColumn('amount', function($model) { return Utils::formatMoney($model->amount, $model->currency_id); }) - ->addColumn('dropdown', function($model) - { - if ($model->is_deleted) - { + if (Session::get('show_trash:invoice')) { + $recurringInvoices->withTrashed(); + } + + if ($recurringInvoices->count() > 0) { + $data['secEntityType'] = ENTITY_RECURRING_INVOICE; + $data['secColumns'] = Utils::trans(['checkbox', 'frequency', 'client', 'start_date', 'end_date', 'invoice_total', 'action']); + } + + return View::make('list', $data); + } + + public function clientIndex() + { + $data = [ + 'showClientHeader' => true, + 'hideLogo' => Session::get('white_label'), + 'title' => trans('texts.invoices'), + 'entityType' => ENTITY_INVOICE, + 'columns' => Utils::trans(['invoice_number', 'invoice_date', 'invoice_total', 'balance_due', 'due_date']), + ]; + + return View::make('public_list', $data); + } + + public function getDatatable($clientPublicId = null) + { + $accountId = Auth::user()->account_id; + $search = Input::get('sSearch'); + + return $this->invoiceRepo->getDatatable($accountId, $clientPublicId, ENTITY_INVOICE, $search); + } + + public function getClientDatatable() + { + //$accountId = Auth::user()->account_id; + $search = Input::get('sSearch'); + $invitationKey = Session::get('invitation_key'); + $invitation = Invitation::where('invitation_key', '=', $invitationKey)->first(); + + if (!$invitation || $invitation->is_deleted) { + return []; + } + + $invoice = $invitation->invoice; + + if (!$invoice || $invoice->is_deleted) { + return []; + } + + return $this->invoiceRepo->getClientDatatable($invitation->contact_id, ENTITY_INVOICE, $search); + } + + public function getRecurringDatatable($clientPublicId = null) + { + $query = $this->invoiceRepo->getRecurringInvoices(Auth::user()->account_id, $clientPublicId, Input::get('sSearch')); + $table = Datatable::query($query); + + if (!$clientPublicId) { + $table->addColumn('checkbox', function ($model) { return ''; }); + } + + $table->addColumn('frequency', function ($model) { return link_to('invoices/'.$model->public_id, $model->frequency); }); + + if (!$clientPublicId) { + $table->addColumn('client_name', function ($model) { return link_to('clients/'.$model->client_public_id, Utils::getClientDisplayName($model)); }); + } + + return $table->addColumn('start_date', function ($model) { return Utils::fromSqlDate($model->start_date); }) + ->addColumn('end_date', function ($model) { return Utils::fromSqlDate($model->end_date); }) + ->addColumn('amount', function ($model) { return Utils::formatMoney($model->amount, $model->currency_id); }) + ->addColumn('dropdown', function ($model) { + if ($model->is_deleted) { return ''; } - + $str = ' '; - - - }) - ->make(); + }) + ->make(); } + public function view($invitationKey) + { + $invitation = Invitation::where('invitation_key', '=', $invitationKey)->firstOrFail(); - public function view($invitationKey) - { - $invitation = Invitation::where('invitation_key', '=', $invitationKey)->firstOrFail(); + $invoice = $invitation->invoice; - $invoice = $invitation->invoice; - - if (!$invoice || $invoice->is_deleted) - { - return View::make('invoices.deleted'); - } + if (!$invoice || $invoice->is_deleted) { + return View::make('invoices.deleted'); + } - if ($invoice->is_quote && $invoice->quote_invoice_id) - { - $invoice = Invoice::scope($invoice->quote_invoice_id, $invoice->account_id)->firstOrFail(); + if ($invoice->is_quote && $invoice->quote_invoice_id) { + $invoice = Invoice::scope($invoice->quote_invoice_id, $invoice->account_id)->firstOrFail(); - if (!$invoice || $invoice->is_deleted) - { - return View::make('invoices.deleted'); - } - } + if (!$invoice || $invoice->is_deleted) { + return View::make('invoices.deleted'); + } + } - $invoice->load('user', 'invoice_items', 'invoice_design', 'account.country', 'client.contacts', 'client.country'); + $invoice->load('user', 'invoice_items', 'invoice_design', 'account.country', 'client.contacts', 'client.country'); - $client = $invoice->client; - - if (!$client || $client->is_deleted) - { - return View::make('invoices.deleted'); - } + $client = $invoice->client; - if (!Session::has($invitationKey) && (!Auth::check() || Auth::user()->account_id != $invoice->account_id)) - { - Activity::viewInvoice($invitation); - Event::fire('invoice.viewed', $invoice); - } + if (!$client || $client->is_deleted) { + return View::make('invoices.deleted'); + } - Session::set($invitationKey, true); - Session::set('invitation_key', $invitationKey); - Session::set('white_label', $client->account->isWhiteLabel()); + if (!Session::has($invitationKey) && (!Auth::check() || Auth::user()->account_id != $invoice->account_id)) { + Activity::viewInvoice($invitation); + Event::fire('invoice.viewed', $invoice); + } - $client->account->loadLocalizationSettings(); + Session::set($invitationKey, true); + Session::set('invitation_key', $invitationKey); + Session::set('white_label', $client->account->isWhiteLabel()); - $invoice->invoice_date = Utils::fromSqlDate($invoice->invoice_date); - $invoice->due_date = Utils::fromSqlDate($invoice->due_date); - $invoice->is_pro = $client->account->isPro(); + $client->account->loadLocalizationSettings(); - $contact = $invitation->contact; - $contact->setVisible([ - 'first_name', - 'last_name', - 'email', - 'phone']); + $invoice->invoice_date = Utils::fromSqlDate($invoice->invoice_date); + $invoice->due_date = Utils::fromSqlDate($invoice->due_date); + $invoice->is_pro = $client->account->isPro(); - $data = array( - 'showClientHeader' => true, - 'showBreadcrumbs' => false, - 'hideLogo' => $client->account->isWhiteLabel(), - 'invoice' => $invoice->hidePrivateFields(), - 'invitation' => $invitation, - 'invoiceLabels' => $client->account->getInvoiceLabels(), - 'contact' => $contact - ); + $contact = $invitation->contact; + $contact->setVisible([ + 'first_name', + 'last_name', + 'email', + 'phone', ]); - return View::make('invoices.view', $data); - } + $data = array( + 'showClientHeader' => true, + 'showBreadcrumbs' => false, + 'hideLogo' => $client->account->isWhiteLabel(), + 'invoice' => $invoice->hidePrivateFields(), + 'invitation' => $invitation, + 'invoiceLabels' => $client->account->getInvoiceLabels(), + 'contact' => $contact, + ); - public function edit($publicId, $clone = false) - { - $invoice = Invoice::scope($publicId)->withTrashed()->with('invitations', 'account.country', 'client.contacts', 'client.country', 'invoice_items')->firstOrFail(); - $entityType = $invoice->getEntityType(); - - $contactIds = DB::table('invitations') - ->join('contacts', 'contacts.id', '=','invitations.contact_id') - ->where('invitations.invoice_id', '=', $invoice->id) - ->where('invitations.account_id', '=', Auth::user()->account_id) - ->where('invitations.deleted_at', '=', null) - ->select('contacts.public_id')->lists('public_id'); - - if ($clone) - { - $invoice->id = null; - $invoice->invoice_number = Auth::user()->account->getNextInvoiceNumber($invoice->is_quote); - $invoice->balance = $invoice->amount; - $invoice->invoice_status_id = 0; - $invoice->invoice_date = date_create()->format('Y-m-d'); - $method = 'POST'; - $url = "{$entityType}s"; - } - else - { - Utils::trackViewed($invoice->invoice_number . ' - ' . $invoice->client->getDisplayName(), $invoice->getEntityType()); - $method = 'PUT'; - $url = "{$entityType}s/{$publicId}"; - } - - $invoice->invoice_date = Utils::fromSqlDate($invoice->invoice_date); - $invoice->due_date = Utils::fromSqlDate($invoice->due_date); - $invoice->start_date = Utils::fromSqlDate($invoice->start_date); - $invoice->end_date = Utils::fromSqlDate($invoice->end_date); - $invoice->is_pro = Auth::user()->isPro(); - - $data = array( - 'entityType' => $entityType, - 'showBreadcrumbs' => $clone, - 'account' => $invoice->account, - 'invoice' => $invoice, - 'data' => false, - 'method' => $method, - 'invitationContactIds' => $contactIds, - 'url' => $url, - 'title' => trans("texts.edit_{$entityType}"), - 'client' => $invoice->client); - $data = array_merge($data, self::getViewModel()); - - // Set the invitation link on the client's contacts - if (!$clone) - { - $clients = $data['clients']; - foreach ($clients as $client) - { - if ($client->id == $invoice->client->id) - { - foreach ($invoice->invitations as $invitation) - { - foreach ($client->contacts as $contact) - { - if ($invitation->contact_id == $contact->id) - { - $contact->invitation_link = $invitation->getLink(); - } - } - } - break; - } - } - } - - return View::make('invoices.edit', $data); - } - - public function create($clientPublicId = 0) - { - $client = null; - $invoiceNumber = Auth::user()->account->getNextInvoiceNumber(); - $account = Account::with('country')->findOrFail(Auth::user()->account_id); - - if ($clientPublicId) - { - $client = Client::scope($clientPublicId)->firstOrFail(); + return View::make('invoices.view', $data); } - $data = array( - 'entityType' => ENTITY_INVOICE, - 'account' => $account, - 'invoice' => null, - 'data' => Input::old('data'), - 'invoiceNumber' => $invoiceNumber, - 'method' => 'POST', - 'url' => 'invoices', - 'title' => trans('texts.new_invoice'), - 'client' => $client); - $data = array_merge($data, self::getViewModel()); + public function edit($publicId, $clone = false) + { + $invoice = Invoice::scope($publicId)->withTrashed()->with('invitations', 'account.country', 'client.contacts', 'client.country', 'invoice_items')->firstOrFail(); + $entityType = $invoice->getEntityType(); - return View::make('invoices.edit', $data); - } + $contactIds = DB::table('invitations') + ->join('contacts', 'contacts.id', '=', 'invitations.contact_id') + ->where('invitations.invoice_id', '=', $invoice->id) + ->where('invitations.account_id', '=', Auth::user()->account_id) + ->where('invitations.deleted_at', '=', null) + ->select('contacts.public_id')->lists('public_id'); - private static function getViewModel() - { - $recurringHelp = ''; - foreach(preg_split("/((\r?\n)|(\r\n?))/", trans('texts.recurring_help')) as $line){ - $parts = explode("=>", $line); - if (count($parts) > 1) { - $line = $parts[0] . ' => ' . Utils::processVariables($parts[0]); - $recurringHelp .= ' + + return $str.'', $response->getMessage()); } - } - else if ($paymentLibrary->id == PAYMENT_LIBRARY_PHP_PAYMENTS) - { + } elseif ($paymentLibrary->id == PAYMENT_LIBRARY_PHP_PAYMENTS) { $gateway = $accountGateway->gateway; $provider = $gateway->provider; $p = new PHP_Payments(array('mode' => 'test')); - + $config = Payment_Utility::load('config', 'drivers/'.$provider); - - switch($gateway->id) - { + + switch ($gateway->id) { case GATEWAY_BEANSTREAM: - $config['delay_charge'] = FALSE; - $config['bill_outstanding'] = TRUE; + $config['delay_charge'] = false; + $config['bill_outstanding'] = true; break; case GATEWAY_AMAZON: $config['return_url'] = URL::to('complete'); @@ -630,31 +574,29 @@ class PaymentController extends \BaseController $config['collect_shipping_address'] = false; break; } - + $details = self::getPaymentDetails($invoice, Input::all()); - + $response = $p->oneoff_payment($provider, $details, $config); - if (strtolower($response->status) == 'success') - { + if (strtolower($response->status) == 'success') { $payment = self::createPayment($invitation, $response->response_message); - - Session::flash('message', trans('texts.applied_payment')); - return Redirect::to('view/' . $payment->invitation->invitation_key); - } - else - { - Session::flash('error', $response->response_message); + + Session::flash('message', trans('texts.applied_payment')); + + return Redirect::to('view/'.$payment->invitation->invitation_key); + } else { + Session::flash('error', $response->response_message); + return Utils::fatalError('Sorry, there was an error processing your payment. Please try again later.
', $response->response_message); } } - } - catch (\Exception $e) - { + } catch (\Exception $e) { $errorMessage = trans('texts.payment_error'); - Session::flash('error', $errorMessage); + Session::flash('error', $errorMessage); Utils::logError(Utils::getErrorString($e)); - return Redirect::to('payment/' . $invitationKey) + + return Redirect::to('payment/'.$invitationKey) ->withInput(); } } @@ -664,44 +606,41 @@ class PaymentController extends \BaseController $invoice = $invitation->invoice; $accountGateway = $invoice->client->account->account_gateways[0]; - if ($invoice->account->account_key == NINJA_ACCOUNT_KEY) - { + if ($invoice->account->account_key == NINJA_ACCOUNT_KEY) { $account = Account::find($invoice->client->public_id); $account->pro_plan_paid = date_create()->format('Y-m-d'); $account->save(); } - - if ($invoice->is_quote) - { + + if ($invoice->is_quote) { $invoice = $this->invoiceRepo->cloneInvoice($invoice, $invoice->id); } - + $payment = Payment::createNew($invitation); $payment->invitation_id = $invitation->id; $payment->account_gateway_id = $accountGateway->id; $payment->invoice_id = $invoice->id; - $payment->amount = $invoice->amount; + $payment->amount = $invoice->amount; $payment->client_id = $invoice->client_id; $payment->contact_id = $invitation->contact_id; $payment->transaction_reference = $ref; $payment->payment_date = date_create()->format('Y-m-d'); - - if ($payerId) - { - $payment->payer_id = $payerId; + + if ($payerId) { + $payment->payer_id = $payerId; } - + $payment->save(); - + Event::fire('invoice.paid', $payment); - + return $payment; } public function offsite_payment() { $payerId = Request::query('PayerID'); - $token = Request::query('token'); + $token = Request::query('token'); $invitation = Invitation::with('invoice.client.currency', 'invoice.client.account.account_gateways.gateway')->where('transaction_reference', '=', $token)->firstOrFail(); $invoice = $invitation->invoice; @@ -709,37 +648,33 @@ class PaymentController extends \BaseController $accountGateway = $invoice->client->account->account_gateways[0]; $gateway = self::createGateway($accountGateway); - try - { + try { $details = self::getPaymentDetails($invoice); $response = $gateway->completePurchase($details)->send(); $ref = $response->getTransactionReference(); - if ($response->isSuccessful()) - { - $payment = self::createPayment($invitation, $ref, $payerId); + if ($response->isSuccessful()) { + $payment = self::createPayment($invitation, $ref, $payerId); - Session::flash('message', trans('texts.applied_payment')); - return Redirect::to('view/' . $invitation->invitation_key); - } - else - { - $errorMessage = trans('texts.payment_error') . "\n\n" . $response->getMessage(); - Session::flash('error', $errorMessage); + Session::flash('message', trans('texts.applied_payment')); + + return Redirect::to('view/'.$invitation->invitation_key); + } else { + $errorMessage = trans('texts.payment_error')."\n\n".$response->getMessage(); + Session::flash('error', $errorMessage); Utils::logError($errorMessage); - return Redirect::to('view/' . $invitation->invitation_key); + + return Redirect::to('view/'.$invitation->invitation_key); } - } - catch (\Exception $e) - { + } catch (\Exception $e) { $errorMessage = trans('texts.payment_error'); - Session::flash('error', $errorMessage); - Utils::logError($errorMessage . "\n\n" . $e->getMessage()); - return Redirect::to('view/' . $invitation->invitation_key); + Session::flash('error', $errorMessage); + Utils::logError($errorMessage."\n\n".$e->getMessage()); + + return Redirect::to('view/'.$invitation->invitation_key); } } - public function store() { return $this->save(); @@ -752,19 +687,18 @@ class PaymentController extends \BaseController private function save($publicId = null) { - if ($errors = $this->paymentRepo->getErrors(Input::all())) - { - $url = $publicId ? 'payments/' . $publicId . '/edit' : 'payments/create'; + if ($errors = $this->paymentRepo->getErrors(Input::all())) { + $url = $publicId ? 'payments/'.$publicId.'/edit' : 'payments/create'; + return Redirect::to($url) ->withErrors($errors) ->withInput(); - } - else - { + } else { $this->paymentRepo->save($publicId, Input::all()); Session::flash('message', trans('texts.created_payment')); - return Redirect::to('clients/' . Input::get('client')); + + return Redirect::to('clients/'.Input::get('client')); } } @@ -774,12 +708,11 @@ class PaymentController extends \BaseController $ids = Input::get('id') ? Input::get('id') : Input::get('ids'); $count = $this->paymentRepo->bulk($ids, $action); - if ($count > 0) - { - $message = Utils::pluralize($action.'d_payment', $count); + if ($count > 0) { + $message = Utils::pluralize($action.'d_payment', $count); Session::flash('message', $message); } - + return Redirect::to('payments'); } -} \ No newline at end of file +} diff --git a/app/controllers/ProductController.php b/app/controllers/ProductController.php index 7c6df2317978..5be7ab1339fa 100644 --- a/app/controllers/ProductController.php +++ b/app/controllers/ProductController.php @@ -1,101 +1,96 @@ where('products.account_id', '=', Auth::user()->account_id) ->where('products.deleted_at', '=', null) ->select('products.public_id', 'products.product_key', 'products.notes', 'products.cost'); - - return Datatable::query($query) - ->addColumn('product_key', function($model) { return link_to('products/' . $model->public_id . '/edit', $model->product_key); }) - ->addColumn('notes', function($model) { return nl2br(Str::limit($model->notes, 100)); }) - ->addColumn('cost', function($model) { return Utils::formatMoney($model->cost); }) - ->addColumn('dropdown', function($model) - { + return Datatable::query($query) + ->addColumn('product_key', function ($model) { return link_to('products/'.$model->public_id.'/edit', $model->product_key); }) + ->addColumn('notes', function ($model) { return nl2br(Str::limit($model->notes, 100)); }) + ->addColumn('cost', function ($model) { return Utils::formatMoney($model->cost); }) + ->addColumn('dropdown', function ($model) { return '
'; - }) + }) ->orderColumns(['cost', 'product_key', 'cost']) - ->make(); - } + ->make(); + } - public function edit($publicId) - { - $data = [ + public function edit($publicId) + { + $data = [ 'showBreadcrumbs' => false, 'product' => Product::scope($publicId)->firstOrFail(), - 'method' => 'PUT', - 'url' => 'products/' . $publicId, - 'title' => trans('texts.edit_product') + 'method' => 'PUT', + 'url' => 'products/'.$publicId, + 'title' => trans('texts.edit_product'), ]; - return View::make('accounts.product', $data); - } + return View::make('accounts.product', $data); + } - public function create() - { - $data = [ + public function create() + { + $data = [ 'showBreadcrumbs' => false, 'product' => null, 'method' => 'POST', - 'url' => 'products', - 'title' => trans('texts.create_product') + 'url' => 'products', + 'title' => trans('texts.create_product'), ]; - return View::make('accounts.product', $data); - } - - public function store() - { - return $this->save(); - } - - public function update($publicId) - { - return $this->save($publicId); - } - - private function save($productPublicId = false) - { - if ($productPublicId) - { - $product = Product::scope($productPublicId)->firstOrFail(); - } - else - { - $product = Product::createNew(); + return View::make('accounts.product', $data); } - $product->product_key = trim(Input::get('product_key')); - $product->notes = trim(Input::get('notes')); - $product->cost = trim(Input::get('cost')); - $product->save(); + public function store() + { + return $this->save(); + } - $message = $productPublicId ? trans('texts.updated_product') : trans('texts.created_product'); - Session::flash('message', $message); + public function update($publicId) + { + return $this->save($publicId); + } - return Redirect::to('company/products'); - } + private function save($productPublicId = false) + { + if ($productPublicId) { + $product = Product::scope($productPublicId)->firstOrFail(); + } else { + $product = Product::createNew(); + } - public function archive($publicId) - { - $product = Product::scope($publicId)->firstOrFail(); - $product->delete(); + $product->product_key = trim(Input::get('product_key')); + $product->notes = trim(Input::get('notes')); + $product->cost = trim(Input::get('cost')); + $product->save(); - Session::flash('message', trans('texts.archived_product')); - return Redirect::to('company/products'); - } + $message = $productPublicId ? trans('texts.updated_product') : trans('texts.created_product'); + Session::flash('message', $message); -} \ No newline at end of file + return Redirect::to('company/products'); + } + + public function archive($publicId) + { + $product = Product::scope($publicId)->firstOrFail(); + $product->delete(); + + Session::flash('message', trans('texts.archived_product')); + + return Redirect::to('company/products'); + } +} diff --git a/app/controllers/QuoteApiController.php b/app/controllers/QuoteApiController.php index d151852f7ec2..5b442516d088 100644 --- a/app/controllers/QuoteApiController.php +++ b/app/controllers/QuoteApiController.php @@ -2,30 +2,31 @@ use ninja\repositories\InvoiceRepository; -class QuoteApiController extends Controller { +class QuoteApiController extends Controller +{ + protected $invoiceRepo; - protected $invoiceRepo; - - public function __construct(InvoiceRepository $invoiceRepo) - { - $this->invoiceRepo = $invoiceRepo; - } - - public function index() - { - if (!Utils::isPro()) { - return Redirect::to('/'); + public function __construct(InvoiceRepository $invoiceRepo) + { + $this->invoiceRepo = $invoiceRepo; } - $invoices = Invoice::scope()->where('invoices.is_quote', '=', true)->orderBy('created_at', 'desc')->get(); - $invoices = Utils::remapPublicIds($invoices->toArray()); + public function index() + { + if (!Utils::isPro()) { + return Redirect::to('/'); + } - $response = json_encode($invoices, JSON_PRETTY_PRINT); - $headers = Utils::getApiHeaders(count($invoices)); - return Response::make($response, 200, $headers); - } + $invoices = Invoice::scope()->where('invoices.is_quote', '=', true)->orderBy('created_at', 'desc')->get(); + $invoices = Utils::remapPublicIds($invoices->toArray()); - /* + $response = json_encode($invoices, JSON_PRETTY_PRINT); + $headers = Utils::getApiHeaders(count($invoices)); + + return Response::make($response, 200, $headers); + } + + /* public function store() { $data = Input::all(); diff --git a/app/controllers/QuoteController.php b/app/controllers/QuoteController.php index e9330dffcae8..409adb327993 100644 --- a/app/controllers/QuoteController.php +++ b/app/controllers/QuoteController.php @@ -5,34 +5,33 @@ use ninja\repositories\InvoiceRepository; use ninja\repositories\ClientRepository; use ninja\repositories\TaxRateRepository; -class QuoteController extends \BaseController { +class QuoteController extends \BaseController +{ + protected $mailer; + protected $invoiceRepo; + protected $clientRepo; + protected $taxRateRepo; - protected $mailer; - protected $invoiceRepo; - protected $clientRepo; - protected $taxRateRepo; - - public function __construct(Mailer $mailer, InvoiceRepository $invoiceRepo, ClientRepository $clientRepo, TaxRateRepository $taxRateRepo) - { - parent::__construct(); - - $this->mailer = $mailer; - $this->invoiceRepo = $invoiceRepo; - $this->clientRepo = $clientRepo; - $this->taxRateRepo = $taxRateRepo; - } - - public function index() - { - if (!Utils::isPro()) + public function __construct(Mailer $mailer, InvoiceRepository $invoiceRepo, ClientRepository $clientRepo, TaxRateRepository $taxRateRepo) { - return Redirect::to('/invoices/create'); + parent::__construct(); + + $this->mailer = $mailer; + $this->invoiceRepo = $invoiceRepo; + $this->clientRepo = $clientRepo; + $this->taxRateRepo = $taxRateRepo; } - $data = [ + public function index() + { + if (!Utils::isPro()) { + return Redirect::to('/invoices/create'); + } + + $data = [ 'title' => trans('texts.quotes'), - 'entityType'=>ENTITY_QUOTE, - 'columns'=>Utils::trans(['checkbox', 'quote_number', 'client', 'quote_date', 'quote_total', 'due_date', 'status', 'action']) + 'entityType' => ENTITY_QUOTE, + 'columns' => Utils::trans(['checkbox', 'quote_number', 'client', 'quote_date', 'quote_total', 'due_date', 'status', 'action']), ]; /* @@ -44,115 +43,108 @@ class QuoteController extends \BaseController { */ return View::make('list', $data); - } + } - - public function clientIndex() - { - $data = [ + public function clientIndex() + { + $data = [ 'showClientHeader' => true, 'hideLogo' => Session::get('white_label'), 'title' => trans('texts.quotes'), - 'entityType'=>ENTITY_QUOTE, - 'columns'=>Utils::trans(['quote_number', 'quote_date', 'quote_total', 'due_date']) + 'entityType' => ENTITY_QUOTE, + 'columns' => Utils::trans(['quote_number', 'quote_date', 'quote_total', 'due_date']), ]; - return View::make('public_list', $data); - } - - - public function getDatatable($clientPublicId = null) - { - $accountId = Auth::user()->account_id; - $search = Input::get('sSearch'); - - return $this->invoiceRepo->getDatatable($accountId, $clientPublicId, ENTITY_QUOTE, $search); - } - - public function getClientDatatable() - { - $search = Input::get('sSearch'); - $invitationKey = Session::get('invitation_key'); - $invitation = Invitation::where('invitation_key', '=', $invitationKey)->first(); - - if (!$invitation || $invitation->is_deleted) - { - return []; + return View::make('public_list', $data); } - $invoice = $invitation->invoice; - - if (!$invoice || $invoice->is_deleted) + public function getDatatable($clientPublicId = null) { - return []; + $accountId = Auth::user()->account_id; + $search = Input::get('sSearch'); + + return $this->invoiceRepo->getDatatable($accountId, $clientPublicId, ENTITY_QUOTE, $search); } - return $this->invoiceRepo->getClientDatatable($invitation->contact_id, ENTITY_QUOTE, $search); - } - - public function create($clientPublicId = 0) - { - if (!Utils::isPro()) + public function getClientDatatable() { - return Redirect::to('/invoices/create'); + $search = Input::get('sSearch'); + $invitationKey = Session::get('invitation_key'); + $invitation = Invitation::where('invitation_key', '=', $invitationKey)->first(); + + if (!$invitation || $invitation->is_deleted) { + return []; + } + + $invoice = $invitation->invoice; + + if (!$invoice || $invoice->is_deleted) { + return []; + } + + return $this->invoiceRepo->getClientDatatable($invitation->contact_id, ENTITY_QUOTE, $search); } - $client = null; - $invoiceNumber = Auth::user()->account->getNextInvoiceNumber(true); - $account = Account::with('country')->findOrFail(Auth::user()->account_id); - - if ($clientPublicId) + public function create($clientPublicId = 0) { - $client = Client::scope($clientPublicId)->firstOrFail(); - } + if (!Utils::isPro()) { + return Redirect::to('/invoices/create'); + } - $data = array( + $client = null; + $invoiceNumber = Auth::user()->account->getNextInvoiceNumber(true); + $account = Account::with('country')->findOrFail(Auth::user()->account_id); + + if ($clientPublicId) { + $client = Client::scope($clientPublicId)->firstOrFail(); + } + + $data = array( 'account' => $account, 'invoice' => null, - 'data' => Input::old('data'), + 'data' => Input::old('data'), 'invoiceNumber' => $invoiceNumber, - 'method' => 'POST', + 'method' => 'POST', 'url' => 'invoices', 'title' => trans('texts.new_quote'), - 'client' => $client); - $data = array_merge($data, self::getViewModel()); + 'client' => $client, ); + $data = array_merge($data, self::getViewModel()); - return View::make('invoices.edit', $data); - } + return View::make('invoices.edit', $data); + } - private static function getViewModel() - { - return [ + private static function getViewModel() + { + return [ 'entityType' => ENTITY_QUOTE, 'account' => Auth::user()->account, - 'products' => Product::scope()->orderBy('id')->get(array('product_key','notes','cost','qty')), + 'products' => Product::scope()->orderBy('id')->get(array('product_key', 'notes', 'cost', 'qty')), 'countries' => Country::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get(), 'clients' => Client::scope()->with('contacts', 'country')->orderBy('name')->get(), 'taxRates' => TaxRate::scope()->orderBy('name')->get(), 'currencies' => Currency::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get(), 'sizes' => Size::remember(DEFAULT_QUERY_CACHE)->orderBy('id')->get(), 'paymentTerms' => PaymentTerm::remember(DEFAULT_QUERY_CACHE)->orderBy('num_days')->get(['name', 'num_days']), - 'industries' => Industry::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get(), + 'industries' => Industry::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get(), 'invoiceDesigns' => InvoiceDesign::remember(DEFAULT_QUERY_CACHE, 'invoice_designs_cache_'.Auth::user()->maxInvoiceDesignId()) ->where('id', '<=', Auth::user()->maxInvoiceDesignId())->orderBy('id')->get(), 'invoiceLabels' => Auth::user()->account->getInvoiceLabels() ]; - } - - public function bulk() - { - $action = Input::get('action'); - $statusId = Input::get('statusId'); - $ids = Input::get('id') ? Input::get('id') : Input::get('ids'); - $count = $this->invoiceRepo->bulk($ids, $action, $statusId); - - if ($count > 0) - { - $key = $action == 'mark' ? "updated_quote" : "{$action}d_quote"; - $message = Utils::pluralize($key, $count); - Session::flash('message', $message); } - return Redirect::to('quotes'); - } -} \ No newline at end of file + public function bulk() + { + $action = Input::get('action'); + $statusId = Input::get('statusId'); + $ids = Input::get('id') ? Input::get('id') : Input::get('ids'); + $count = $this->invoiceRepo->bulk($ids, $action, $statusId); + + if ($count > 0) { + $key = $action == 'mark' ? "updated_quote" : "{$action}d_quote"; + $message = Utils::pluralize($key, $count); + Session::flash('message', $message); + } + + return Redirect::to('quotes'); + } +} diff --git a/app/controllers/ReportController.php b/app/controllers/ReportController.php index f2487a1142ee..0dd36d1a0316 100755 --- a/app/controllers/ReportController.php +++ b/app/controllers/ReportController.php @@ -1,136 +1,127 @@ account->isPro()) { + $account = Account::where('id', '=', Auth::user()->account->id)->with(['clients.invoices.invoice_items', 'clients.contacts'])->first(); + $account = $account->hideFieldsForViz(); + $clients = $account->clients->toJson(); + } elseif (isset($_ENV['DATA_VIZ_SAMPLE'])) { + $clients = $_ENV['DATA_VIZ_SAMPLE']; + $message = trans('texts.sample_data'); + } else { + $clients = '[]'; + } - if (Auth::user()->account->isPro()) { - $account = Account::where('id', '=', Auth::user()->account->id)->with(['clients.invoices.invoice_items', 'clients.contacts'])->first(); - $account = $account->hideFieldsForViz(); - $clients = $account->clients->toJson(); - } else if (isset($_ENV['DATA_VIZ_SAMPLE'])) { - $clients = $_ENV['DATA_VIZ_SAMPLE']; - $message = trans('texts.sample_data'); - } else { - $clients = '[]'; - } + $data = [ + 'feature' => ACCOUNT_DATA_VISUALIZATIONS, + 'clients' => $clients, + 'message' => $message, + ]; - $data = [ - 'feature' => ACCOUNT_DATA_VISUALIZATIONS, - 'clients' => $clients, - 'message' => $message - ]; + return View::make('reports.d3', $data); + } - return View::make('reports.d3', $data); - } + public function report() + { + if (Input::all()) { + $groupBy = Input::get('group_by'); + $chartType = Input::get('chart_type'); + $startDate = Utils::toSqlDate(Input::get('start_date'), false); + $endDate = Utils::toSqlDate(Input::get('end_date'), false); + } else { + $groupBy = 'MONTH'; + $chartType = 'Bar'; + $startDate = Utils::today(false)->modify('-3 month'); + $endDate = Utils::today(false); + } - public function report() - { - if (Input::all()) - { - $groupBy = Input::get('group_by'); - $chartType = Input::get('chart_type'); - $startDate = Utils::toSqlDate(Input::get('start_date'), false); - $endDate = Utils::toSqlDate(Input::get('end_date'), false); - } - else - { - $groupBy = 'MONTH'; - $chartType = 'Bar'; - $startDate = Utils::today(false)->modify('-3 month'); - $endDate = Utils::today(false); - } + $padding = $groupBy == 'DAYOFYEAR' ? 'day' : ($groupBy == 'WEEK' ? 'week' : 'month'); + $endDate->modify('+1 '.$padding); + $datasets = []; + $labels = []; + $maxTotals = 0; + $width = 10; - $padding = $groupBy == 'DAYOFYEAR' ? 'day' : ($groupBy == 'WEEK' ? 'week' : 'month'); - $endDate->modify('+1 '.$padding); - $datasets = []; - $labels = []; - $maxTotals = 0; - $width = 10; - - if (Auth::user()->account->isPro()) - { - foreach ([ENTITY_INVOICE, ENTITY_PAYMENT, ENTITY_CREDIT] as $entityType) - { - $records = DB::table($entityType.'s') - ->select(DB::raw('sum(amount) as total, '.$groupBy.'('.$entityType.'_date) as '.$groupBy)) - ->where('account_id', '=', Auth::user()->account_id) - ->where($entityType.'s.deleted_at', '=', null) - ->where($entityType.'s.'.$entityType.'_date', '>=', $startDate->format('Y-m-d')) - ->where($entityType.'s.'.$entityType.'_date', '<=', $endDate->format('Y-m-d')) - ->groupBy($groupBy); - - if ($entityType == ENTITY_INVOICE) - { - $records->where('is_quote', '=', false) - ->where('is_recurring', '=', false); - } + if (Auth::user()->account->isPro()) { + foreach ([ENTITY_INVOICE, ENTITY_PAYMENT, ENTITY_CREDIT] as $entityType) { + $records = DB::table($entityType.'s') + ->select(DB::raw('sum(amount) as total, '.$groupBy.'('.$entityType.'_date) as '.$groupBy)) + ->where('account_id', '=', Auth::user()->account_id) + ->where($entityType.'s.deleted_at', '=', null) + ->where($entityType.'s.'.$entityType.'_date', '>=', $startDate->format('Y-m-d')) + ->where($entityType.'s.'.$entityType.'_date', '<=', $endDate->format('Y-m-d')) + ->groupBy($groupBy); - $totals = $records->lists('total'); - $dates = $records->lists($groupBy); - $data = array_combine($dates, $totals); - - $interval = new DateInterval('P1'.substr($groupBy, 0, 1)); - $period = new DatePeriod($startDate, $interval, $endDate); + if ($entityType == ENTITY_INVOICE) { + $records->where('is_quote', '=', false) + ->where('is_recurring', '=', false); + } - $totals = []; + $totals = $records->lists('total'); + $dates = $records->lists($groupBy); + $data = array_combine($dates, $totals); - foreach ($period as $d) - { - $dateFormat = $groupBy == 'DAYOFYEAR' ? 'z' : ($groupBy == 'WEEK' ? 'W' : 'n'); - $date = $d->format($dateFormat); - $totals[] = isset($data[$date]) ? $data[$date] : 0; + $interval = new DateInterval('P1'.substr($groupBy, 0, 1)); + $period = new DatePeriod($startDate, $interval, $endDate); - if ($entityType == ENTITY_INVOICE) - { - $labelFormat = $groupBy == 'DAYOFYEAR' ? 'j' : ($groupBy == 'WEEK' ? 'W' : 'F'); - $label = $d->format($labelFormat); - $labels[] = $label; - } - } + $totals = []; - $max = max($totals); + foreach ($period as $d) { + $dateFormat = $groupBy == 'DAYOFYEAR' ? 'z' : ($groupBy == 'WEEK' ? 'W' : 'n'); + $date = $d->format($dateFormat); + $totals[] = isset($data[$date]) ? $data[$date] : 0; - if ($max > 0) - { - $datasets[] = [ - 'totals' => $totals, - 'colors' => $entityType == ENTITY_INVOICE ? '78,205,196' : ($entityType == ENTITY_CREDIT ? '199,244,100' : '255,107,107') - ]; - $maxTotals = max($max, $maxTotals); - } - } + if ($entityType == ENTITY_INVOICE) { + $labelFormat = $groupBy == 'DAYOFYEAR' ? 'j' : ($groupBy == 'WEEK' ? 'W' : 'F'); + $label = $d->format($labelFormat); + $labels[] = $label; + } + } - $width = (ceil( $maxTotals / 100 ) * 100) / 10; - $width = max($width, 10); - } + $max = max($totals); - $dateTypes = [ - 'DAYOFYEAR' => 'Daily', - 'WEEK' => 'Weekly', - 'MONTH' => 'Monthly' - ]; + if ($max > 0) { + $datasets[] = [ + 'totals' => $totals, + 'colors' => $entityType == ENTITY_INVOICE ? '78,205,196' : ($entityType == ENTITY_CREDIT ? '199,244,100' : '255,107,107'), + ]; + $maxTotals = max($max, $maxTotals); + } + } - $chartTypes = [ - 'Bar' => 'Bar', - 'Line' => 'Line' - ]; + $width = (ceil($maxTotals / 100) * 100) / 10; + $width = max($width, 10); + } - $params = [ - 'labels' => $labels, - 'datasets' => $datasets, - 'scaleStepWidth' => $width, - 'dateTypes' => $dateTypes, - 'chartTypes' => $chartTypes, - 'chartType' => $chartType, - 'startDate' => $startDate->format(Session::get(SESSION_DATE_FORMAT)), - 'endDate' => $endDate->modify('-1'.$padding)->format(Session::get(SESSION_DATE_FORMAT)), - 'groupBy' => $groupBy, - 'feature' => ACCOUNT_CHART_BUILDER, - ]; - - return View::make('reports.report_builder', $params); - } -} \ No newline at end of file + $dateTypes = [ + 'DAYOFYEAR' => 'Daily', + 'WEEK' => 'Weekly', + 'MONTH' => 'Monthly', + ]; + + $chartTypes = [ + 'Bar' => 'Bar', + 'Line' => 'Line', + ]; + + $params = [ + 'labels' => $labels, + 'datasets' => $datasets, + 'scaleStepWidth' => $width, + 'dateTypes' => $dateTypes, + 'chartTypes' => $chartTypes, + 'chartType' => $chartType, + 'startDate' => $startDate->format(Session::get(SESSION_DATE_FORMAT)), + 'endDate' => $endDate->modify('-1'.$padding)->format(Session::get(SESSION_DATE_FORMAT)), + 'groupBy' => $groupBy, + 'feature' => ACCOUNT_CHART_BUILDER, + ]; + + return View::make('reports.report_builder', $params); + } +} diff --git a/app/controllers/UserController.php b/app/controllers/UserController.php index 55190f1304be..79d8a5d1a52c 100755 --- a/app/controllers/UserController.php +++ b/app/controllers/UserController.php @@ -13,8 +13,8 @@ use ninja\repositories\AccountRepository; use ninja\mailers\ContactMailer; use ninja\mailers\UserMailer; -class UserController extends BaseController { - +class UserController extends BaseController +{ protected $accountRepo; protected $contactMailer; protected $userMailer; @@ -26,36 +26,34 @@ class UserController extends BaseController { $this->accountRepo = $accountRepo; $this->contactMailer = $contactMailer; $this->userMailer = $userMailer; - } + } public function getDatatable() { - $query = DB::table('users') + $query = DB::table('users') ->where('users.account_id', '=', Auth::user()->account_id) ->where('users.deleted_at', '=', null) ->where('users.public_id', '>', 0) ->select('users.public_id', 'users.first_name', 'users.last_name', 'users.email', 'users.confirmed', 'users.public_id'); - - return Datatable::query($query) - ->addColumn('first_name', function($model) { return link_to('users/' . $model->public_id . '/edit', $model->first_name . ' ' . $model->last_name); }) - ->addColumn('email', function($model) { return $model->email; }) - ->addColumn('confirmed', function($model) { return $model->confirmed ? trans('texts.active') : trans('texts.pending'); }) - ->addColumn('dropdown', function($model) - { + return Datatable::query($query) + ->addColumn('first_name', function ($model) { return link_to('users/'.$model->public_id.'/edit', $model->first_name.' '.$model->last_name); }) + ->addColumn('email', function ($model) { return $model->email; }) + ->addColumn('confirmed', function ($model) { return $model->confirmed ? trans('texts.active') : trans('texts.pending'); }) + ->addColumn('dropdown', function ($model) { return ' '; - }) + }) ->orderColumns(['first_name', 'email', 'confirmed']) - ->make(); + ->make(); } public function setTheme() @@ -63,7 +61,7 @@ class UserController extends BaseController { $user = User::find(Auth::user()->id); $user->theme_id = Input::get('theme_id'); $user->save(); - + return Redirect::to(Input::get('path')); } @@ -75,7 +73,7 @@ class UserController extends BaseController { Session::flash('message', trans('texts.confide.updated_settings')); - return Redirect::to('/dashboard'); + return Redirect::to('/dashboard'); } public function edit($publicId) @@ -86,12 +84,12 @@ class UserController extends BaseController { $data = [ 'showBreadcrumbs' => false, 'user' => $user, - 'method' => 'PUT', - 'url' => 'users/' . $publicId, - 'title' => trans('texts.edit_user') + 'method' => 'PUT', + 'url' => 'users/'.$publicId, + 'title' => trans('texts.edit_user'), ]; - return View::make('users.edit', $data); + return View::make('users.edit', $data); } public function update($publicId) @@ -110,30 +108,29 @@ class UserController extends BaseController { */ public function create() { - if (!Auth::user()->confirmed) - { - Session::flash('error', trans('texts.register_to_add_user')); + if (!Auth::user()->confirmed) { + Session::flash('error', trans('texts.register_to_add_user')); + return Redirect::to('company/advanced_settings/user_management'); } - if (Utils::isNinja()) - { + if (Utils::isNinja()) { $count = User::where('account_id', '=', Auth::user()->account_id)->count(); - if ($count >= MAX_NUM_USERS) - { + if ($count >= MAX_NUM_USERS) { Session::flash('error', trans('texts.limit_users')); - return Redirect::to('company/advanced_settings/user_management'); - } + + return Redirect::to('company/advanced_settings/user_management'); + } } $data = [ 'showBreadcrumbs' => false, 'user' => null, 'method' => 'POST', - 'url' => 'users', - 'title' => trans('texts.add_user') + 'url' => 'users', + 'title' => trans('texts.add_user'), ]; - + return View::make('users.edit', $data); } @@ -146,7 +143,8 @@ class UserController extends BaseController { $user->delete(); Session::flash('message', trans('texts.deleted_user')); - return Redirect::to('company/advanced_settings/user_management'); + + return Redirect::to('company/advanced_settings/user_management'); } /** @@ -160,38 +158,31 @@ class UserController extends BaseController { 'last_name' => 'required', ]; - if ($userPublicId) - { + if ($userPublicId) { $user = User::where('account_id', '=', Auth::user()->account_id) ->where('public_id', '=', $userPublicId)->firstOrFail(); - $rules['email'] = 'required|email|unique:users,email,' . $user->id . ',id'; - } - else - { + $rules['email'] = 'required|email|unique:users,email,'.$user->id.',id'; + } else { $rules['email'] = 'required|email|unique:users'; } $validator = Validator::make(Input::all(), $rules); - if ($validator->fails()) - { + if ($validator->fails()) { return Redirect::to($userPublicId ? 'users/edit' : 'users/create')->withInput()->withErrors($validator); - } + } - if ($userPublicId) - { + if ($userPublicId) { $user->first_name = trim(Input::get('first_name')); $user->last_name = trim(Input::get('last_name')); $user->username = trim(Input::get('email')); $user->email = trim(Input::get('email')); - } - else - { + } else { $lastUser = User::withTrashed()->where('account_id', '=', Auth::user()->account_id) ->orderBy('public_id', 'DESC')->first(); - $user = new User; + $user = new User(); $user->account_id = Auth::user()->account_id; $user->first_name = trim(Input::get('first_name')); $user->last_name = trim(Input::get('last_name')); @@ -200,18 +191,15 @@ class UserController extends BaseController { $user->registered = true; $user->password = str_random(RANDOM_KEY_LENGTH); $user->password_confirmation = $user->password; - $user->public_id = $lastUser->public_id + 1; + $user->public_id = $lastUser->public_id + 1; } $user->save(); - if (!$user->confirmed) - { - $this->userMailer->sendConfirmation($user, Auth::user()); + if (!$user->confirmed) { + $this->userMailer->sendConfirmation($user, Auth::user()); $message = trans('texts.sent_invite'); - } - else - { + } else { $message = trans('texts.updated_user'); } @@ -226,16 +214,15 @@ class UserController extends BaseController { */ public function login() { - if( Confide::user() ) - { - Event::fire('user.login'); + if (Confide::user()) { + Event::fire('user.login'); Session::reflash(); return Redirect::to('/dashboard'); - + /* $invoice = Invoice::scope()->orderBy('id', 'desc')->first(); - + if ($invoice) { return Redirect::to('/invoices/' . $invoice->public_id); @@ -245,9 +232,7 @@ class UserController extends BaseController { return Redirect::to('/dashboard'); } */ - } - else - { + } else { return View::make(Config::get('confide::login_form')); } } @@ -259,9 +244,9 @@ class UserController extends BaseController { public function do_login() { $input = array( - 'email' => Input::get( 'login_email' ), // May be the username too - 'username' => Input::get( 'login_email' ), // so we have to pass both - 'password' => Input::get( 'login_password' ), + 'email' => Input::get('login_email'), // May be the username too + 'username' => Input::get('login_email'), // so we have to pass both + 'password' => Input::get('login_password'), 'remember' => true, ); @@ -269,22 +254,18 @@ class UserController extends BaseController { // with the second parameter as true. // logAttempt will check if the 'email' perhaps is the username. // Get the value from the config file instead of changing the controller - if ( Input::get( 'login_email' ) && Confide::logAttempt( $input, false ) ) - { + if (Input::get('login_email') && Confide::logAttempt($input, false)) { Event::fire('user.login'); // Redirect the user to the URL they were trying to access before // caught by the authentication filter IE Redirect::guest('user/login'). // Otherwise fallback to '/' // Fix pull #145 return Redirect::intended('/dashboard'); // change it to '/admin', '/dashboard' or something - } - else - { + } else { //$user = new User; // Check if there was too many login attempts - if( Confide::isThrottled( $input ) ) - { + if (Confide::isThrottled($input)) { $err_msg = trans('texts.confide.too_many_attempts'); } /* @@ -293,56 +274,48 @@ class UserController extends BaseController { $err_msg = Lang::get('confide::confide.alerts.not_confirmed'); } */ - else - { + else { $err_msg = trans('texts.confide.wrong_credentials'); } return Redirect::action('UserController@login') ->withInput(Input::except('login_password')) - ->with( 'error', $err_msg ); + ->with('error', $err_msg); } } /** * Attempt to confirm account with code * - * @param string $code + * @param string $code */ - public function confirm( $code ) + public function confirm($code) { - if ( Confide::confirm( $code ) ) - { + if (Confide::confirm($code)) { $notice_msg = trans('texts.confide.confirmation'); - + $user = User::where('confirmation_code', '=', $code)->get()->first(); $user->confirmation_code = ''; $user->save(); - if ($user->public_id) - { + if ($user->public_id) { Auth::login($user); return Redirect::to('user/reset'); - } - else - { - if (Session::has(REQUESTED_PRO_PLAN)) - { - Session::forget(REQUESTED_PRO_PLAN); + } else { + if (Session::has(REQUESTED_PRO_PLAN)) { + Session::forget(REQUESTED_PRO_PLAN); $invitation = $this->accountRepo->enableProPlan(); + return Redirect::to($invitation->getLink()); - } - else - { - return Redirect::action('UserController@login')->with( 'message', $notice_msg ); + } else { + return Redirect::action('UserController@login')->with('message', $notice_msg); } } - } - else - { + } else { $error_msg = trans('texts.confide.wrong_confirmation'); - return Redirect::action('UserController@login')->with( 'error', $error_msg ); + + return Redirect::action('UserController@login')->with('error', $error_msg); } } @@ -361,12 +334,12 @@ class UserController extends BaseController { */ public function do_forgot_password() { - Confide::forgotPassword( Input::get( 'email' ) ); + Confide::forgotPassword(Input::get('email')); $notice_msg = trans('texts.confide.password_forgot'); - return Redirect::action('UserController@login') - ->with( 'notice', $notice_msg ); + return Redirect::action('UserController@login') + ->with('notice', $notice_msg); /* if( Confide::forgotPassword( Input::get( 'email' ) ) ) @@ -389,7 +362,7 @@ class UserController extends BaseController { * Shows the change password form with the given token * */ - public function reset_password( $token = false ) + public function reset_password($token = false) { return View::make(Config::get('confide::reset_password_form')) ->with('token', $token); @@ -400,49 +373,45 @@ class UserController extends BaseController { * */ public function do_reset_password() - { - if (Auth::check()) - { + { + if (Auth::check()) { $rules = [ 'password' => 'required|between:4,11|confirmed', 'password_confirmation' => 'between:4,11', ]; $validator = Validator::make(Input::all(), $rules); - if ($validator->fails()) - { + if ($validator->fails()) { return Redirect::to('user/reset')->withInput()->withErrors($validator); - } + } $user = Auth::user(); $user->password = Input::get('password'); $user->save(); Session::flash('message', trans('texts.confide.password_reset')); + return Redirect::to('/dashboard'); - } - else - { + } else { $input = array( - 'token'=>Input::get( 'token' ), - 'password'=>Input::get( 'password' ), - 'password_confirmation'=>Input::get( 'password_confirmation' ), + 'token' => Input::get('token'), + 'password' => Input::get('password'), + 'password_confirmation' => Input::get('password_confirmation'), ); - + // By passing an array with the token, password and confirmation - if( Confide::resetPassword( $input ) ) - { + if (Confide::resetPassword($input)) { $notice_msg = trans('texts.confide.password_reset'); + return Redirect::action('UserController@login') - ->with( 'notice', $notice_msg ); - } - else - { + ->with('notice', $notice_msg); + } else { $error_msg = trans('texts.confide.wrong_password_reset'); - return Redirect::action('UserController@reset_password', array('token'=>$input['token'])) + + return Redirect::action('UserController@reset_password', array('token' => $input['token'])) ->withInput() - ->with( 'error', $error_msg ); - } + ->with('error', $error_msg); + } } } @@ -452,10 +421,8 @@ class UserController extends BaseController { */ public function logout() { - if (Auth::check()) - { - if (!Auth::user()->registered) - { + if (Auth::check()) { + if (!Auth::user()->registered) { $account = Auth::user()->account; $account->forceDelete(); } diff --git a/app/models/Account.php b/app/models/Account.php index ed3d643f17f4..651543539a1b 100755 --- a/app/models/Account.php +++ b/app/models/Account.php @@ -2,155 +2,148 @@ class Account extends Eloquent { - protected $softDelete = true; + protected $softDelete = true; - public function users() - { - return $this->hasMany('User'); - } + public function users() + { + return $this->hasMany('User'); + } - public function clients() - { - return $this->hasMany('Client'); - } + public function clients() + { + return $this->hasMany('Client'); + } - public function invoices() - { - return $this->hasMany('Invoice'); - } + public function invoices() + { + return $this->hasMany('Invoice'); + } - public function account_gateways() - { - return $this->hasMany('AccountGateway'); - } + public function account_gateways() + { + return $this->hasMany('AccountGateway'); + } - public function tax_rates() - { - return $this->hasMany('TaxRate'); - } + public function tax_rates() + { + return $this->hasMany('TaxRate'); + } - public function country() - { - return $this->belongsTo('Country'); - } + public function country() + { + return $this->belongsTo('Country'); + } - public function timezone() - { - return $this->belongsTo('Timezone'); - } + public function timezone() + { + return $this->belongsTo('Timezone'); + } - public function language() - { - return $this->belongsTo('Language'); - } + public function language() + { + return $this->belongsTo('Language'); + } - public function date_format() - { - return $this->belongsTo('DateFormat'); - } + public function date_format() + { + return $this->belongsTo('DateFormat'); + } - public function datetime_format() - { - return $this->belongsTo('DatetimeFormat'); - } + public function datetime_format() + { + return $this->belongsTo('DatetimeFormat'); + } - public function size() - { - return $this->belongsTo('Size'); - } + public function size() + { + return $this->belongsTo('Size'); + } - public function industry() - { - return $this->belongsTo('Industry'); - } + public function industry() + { + return $this->belongsTo('Industry'); + } - public function isGatewayConfigured($gatewayId = 0) - { - $this->load('account_gateways'); + public function isGatewayConfigured($gatewayId = 0) + { + $this->load('account_gateways'); - if ($gatewayId) - { - return $this->getGatewayConfig($gatewayId) != false; - } - else - { - return count($this->account_gateways) > 0; - } - } + if ($gatewayId) { + return $this->getGatewayConfig($gatewayId) != false; + } else { + return count($this->account_gateways) > 0; + } + } - public function getDisplayName() - { - if ($this->name) - { - return $this->name; - } + public function getDisplayName() + { + if ($this->name) { + return $this->name; + } - $this->load('users'); - $user = $this->users()->first(); - - return $user->getDisplayName(); - } + $this->load('users'); + $user = $this->users()->first(); - public function getTimezone() - { - if ($this->timezone) - { - return $this->timezone->name; - } - else - { - return 'US/Eastern'; - } - } + return $user->getDisplayName(); + } - public function getGatewayConfig($gatewayId) - { - foreach ($this->account_gateways as $gateway) - { - if ($gateway->gateway_id == $gatewayId) - { - return $gateway; - } - } + public function getTimezone() + { + if ($this->timezone) { + return $this->timezone->name; + } else { + return 'US/Eastern'; + } + } - return false; - } + public function getGatewayConfig($gatewayId) + { + foreach ($this->account_gateways as $gateway) { + if ($gateway->gateway_id == $gatewayId) { + return $gateway; + } + } - public function getLogoPath() - { - return 'logo/' . $this->account_key . '.jpg'; - } + return false; + } - public function getLogoWidth() - { - $path = $this->getLogoPath(); - if (!file_exists($path)) { - return 0; - } - list($width, $height) = getimagesize($path); - return $width; - } + public function getLogoPath() + { + return 'logo/'.$this->account_key.'.jpg'; + } - public function getLogoHeight() - { - $path = $this->getLogoPath(); - if (!file_exists($path)) { - return 0; - } - list($width, $height) = getimagesize($path); - return $height; - } + public function getLogoWidth() + { + $path = $this->getLogoPath(); + if (!file_exists($path)) { + return 0; + } + list($width, $height) = getimagesize($path); - public function getNextInvoiceNumber($isQuote = false) - { - $counter = $isQuote && !$this->share_counter ? $this->quote_number_counter : $this->invoice_number_counter; - $prefix = $isQuote ? $this->quote_number_prefix : $this->invoice_number_prefix; + return $width; + } - return $prefix . str_pad($counter, 4, "0", STR_PAD_LEFT); - } + public function getLogoHeight() + { + $path = $this->getLogoPath(); + if (!file_exists($path)) { + return 0; + } + list($width, $height) = getimagesize($path); - public function incrementCounter($invoiceNumber, $isQuote = false, $isRecurring) - { + return $height; + } + + public function getNextInvoiceNumber($isQuote = false) + { + $counter = $isQuote && !$this->share_counter ? $this->quote_number_counter : $this->invoice_number_counter; + $prefix = $isQuote ? $this->quote_number_prefix : $this->invoice_number_prefix; + + return $prefix.str_pad($counter, 4, "0", STR_PAD_LEFT); + } + + public function incrementCounter($invoiceNumber, $isQuote = false, $isRecurring) + { // check if the user modified the invoice number if (!$isRecurring && $invoiceNumber != $this->getNextInvoiceNumber($isQuote)) { $number = intval(preg_replace('/[^0-9]/', '', $invoiceNumber)); @@ -169,155 +162,144 @@ class Account extends Eloquent } $this->save(); - } - - public function getLocale() - { - $language = Language::remember(DEFAULT_QUERY_CACHE)->where('id', '=', $this->account->language_id)->first(); - return $language->locale; - } + } - public function loadLocalizationSettings() - { - $this->load('timezone', 'date_format', 'datetime_format', 'language'); + public function getLocale() + { + $language = Language::remember(DEFAULT_QUERY_CACHE)->where('id', '=', $this->account->language_id)->first(); - Session::put(SESSION_TIMEZONE, $this->timezone ? $this->timezone->name : DEFAULT_TIMEZONE); - Session::put(SESSION_DATE_FORMAT, $this->date_format ? $this->date_format->format : DEFAULT_DATE_FORMAT); - Session::put(SESSION_DATE_PICKER_FORMAT, $this->date_format ? $this->date_format->picker_format : DEFAULT_DATE_PICKER_FORMAT); - Session::put(SESSION_DATETIME_FORMAT, $this->datetime_format ? $this->datetime_format->format : DEFAULT_DATETIME_FORMAT); - Session::put(SESSION_CURRENCY, $this->currency_id ? $this->currency_id : DEFAULT_CURRENCY); - Session::put(SESSION_LOCALE, $this->language_id ? $this->language->locale : DEFAULT_LOCALE); - } + return $language->locale; + } - public function getInvoiceLabels() - { - $data = []; - $fields = [ - 'invoice', - 'invoice_date', - 'due_date', - 'invoice_number', - 'po_number', - 'discount', - 'taxes', - 'tax', - 'item', - 'description', - 'unit_cost', - 'quantity', - 'line_total', - 'subtotal', - 'paid_to_date', - 'balance_due', - 'terms', - 'your_invoice', - 'quote', - 'your_quote', - 'quote_date', - 'quote_number', - 'total', - 'invoice_issued_to', - ]; + public function loadLocalizationSettings() + { + $this->load('timezone', 'date_format', 'datetime_format', 'language'); - foreach ($fields as $field) - { - $data[$field] = trans("texts.$field"); - } + Session::put(SESSION_TIMEZONE, $this->timezone ? $this->timezone->name : DEFAULT_TIMEZONE); + Session::put(SESSION_DATE_FORMAT, $this->date_format ? $this->date_format->format : DEFAULT_DATE_FORMAT); + Session::put(SESSION_DATE_PICKER_FORMAT, $this->date_format ? $this->date_format->picker_format : DEFAULT_DATE_PICKER_FORMAT); + Session::put(SESSION_DATETIME_FORMAT, $this->datetime_format ? $this->datetime_format->format : DEFAULT_DATETIME_FORMAT); + Session::put(SESSION_CURRENCY, $this->currency_id ? $this->currency_id : DEFAULT_CURRENCY); + Session::put(SESSION_LOCALE, $this->language_id ? $this->language->locale : DEFAULT_LOCALE); + } - return $data; - } + public function getInvoiceLabels() + { + $data = []; + $fields = [ + 'invoice', + 'invoice_date', + 'due_date', + 'invoice_number', + 'po_number', + 'discount', + 'taxes', + 'tax', + 'item', + 'description', + 'unit_cost', + 'quantity', + 'line_total', + 'subtotal', + 'paid_to_date', + 'balance_due', + 'terms', + 'your_invoice', + 'quote', + 'your_quote', + 'quote_date', + 'quote_number', + 'total', + 'invoice_issued_to', + ]; - public function isPro() - { - if (!Utils::isNinjaProd()) - { - return true; - } + foreach ($fields as $field) { + $data[$field] = trans("texts.$field"); + } - if ($this->account_key == NINJA_ACCOUNT_KEY) - { - return true; - } + return $data; + } - $datePaid = $this->pro_plan_paid; + public function isPro() + { + if (!Utils::isNinjaProd()) { + return true; + } - if (!$datePaid || $datePaid == '0000-00-00') - { - return false; - } - else if ($datePaid == NINJA_DATE) - { - return true; - } + if ($this->account_key == NINJA_ACCOUNT_KEY) { + return true; + } - $today = new DateTime('now'); - $datePaid = DateTime::createFromFormat('Y-m-d', $datePaid); - $interval = $today->diff($datePaid); - - return $interval->y == 0; - } + $datePaid = $this->pro_plan_paid; - public function isWhiteLabel() - { - if (Utils::isNinjaProd()) - { - return false; - } + if (!$datePaid || $datePaid == '0000-00-00') { + return false; + } elseif ($datePaid == NINJA_DATE) { + return true; + } - return $this->pro_plan_paid == NINJA_DATE; - } + $today = new DateTime('now'); + $datePaid = DateTime::createFromFormat('Y-m-d', $datePaid); + $interval = $today->diff($datePaid); - public function getSubscription($eventId) - { - return Subscription::where('account_id', '=', $this->id)->where('event_id', '=', $eventId)->first(); - } + return $interval->y == 0; + } - public function hideFieldsForViz() - { - foreach ($this->clients as $client) - { - $client->setVisible([ - 'public_id', - 'name', - 'balance', - 'paid_to_date', - 'invoices', - 'contacts', - ]); - - foreach ($client->invoices as $invoice) - { - $invoice->setVisible([ - 'public_id', - 'invoice_number', - 'amount', - 'balance', - 'invoice_status_id', - 'invoice_items', - 'created_at', - ]); + public function isWhiteLabel() + { + if (Utils::isNinjaProd()) { + return false; + } - foreach ($invoice->invoice_items as $invoiceItem) - { - $invoiceItem->setVisible([ - 'product_key', - 'cost', - 'qty', - ]); - } - } + return $this->pro_plan_paid == NINJA_DATE; + } - foreach ($client->contacts as $contact) - { - $contact->setVisible([ - 'public_id', - 'first_name', - 'last_name', - 'email']); - } - } + public function getSubscription($eventId) + { + return Subscription::where('account_id', '=', $this->id)->where('event_id', '=', $eventId)->first(); + } - return $this; - } + public function hideFieldsForViz() + { + foreach ($this->clients as $client) { + $client->setVisible([ + 'public_id', + 'name', + 'balance', + 'paid_to_date', + 'invoices', + 'contacts', + ]); -} \ No newline at end of file + foreach ($client->invoices as $invoice) { + $invoice->setVisible([ + 'public_id', + 'invoice_number', + 'amount', + 'balance', + 'invoice_status_id', + 'invoice_items', + 'created_at', + ]); + + foreach ($invoice->invoice_items as $invoiceItem) { + $invoiceItem->setVisible([ + 'product_key', + 'cost', + 'qty', + ]); + } + } + + foreach ($client->contacts as $contact) { + $contact->setVisible([ + 'public_id', + 'first_name', + 'last_name', + 'email', ]); + } + } + + return $this; + } +} diff --git a/app/models/AccountGateway.php b/app/models/AccountGateway.php index fb178fc1a1b8..39ebd7a8be3b 100755 --- a/app/models/AccountGateway.php +++ b/app/models/AccountGateway.php @@ -2,22 +2,22 @@ class AccountGateway extends EntityModel { - public function gateway() - { - return $this->belongsTo('Gateway'); - } - + public function gateway() + { + return $this->belongsTo('Gateway'); + } + public function getCreditcardTypes() { $flags = unserialize(CREDIT_CARDS); $arrayOfImages = []; - - foreach ($flags as $card => $name) - { - if (($this->accepted_credit_cards & $card) == $card) + + foreach ($flags as $card => $name) { + if (($this->accepted_credit_cards & $card) == $card) { $arrayOfImages[] = ['source' => asset($name['card']), 'alt' => $name['text']]; - } + } + } return $arrayOfImages; } -} \ No newline at end of file +} diff --git a/app/models/Activity.php b/app/models/Activity.php index 900bd7a098a2..e84d542911be 100755 --- a/app/models/Activity.php +++ b/app/models/Activity.php @@ -35,473 +35,436 @@ define("ACTIVITY_TYPE_RESTORE_CLIENT", 26); define("ACTIVITY_TYPE_RESTORE_PAYMENT", 27); define("ACTIVITY_TYPE_RESTORE_CREDIT", 28); - class Activity extends Eloquent { - public $timestamps = true; - protected $softDelete = false; + public $timestamps = true; + protected $softDelete = false; - public function scopeScope($query) - { - return $query->whereAccountId(Auth::user()->account_id); - } + public function scopeScope($query) + { + return $query->whereAccountId(Auth::user()->account_id); + } - public function account() - { - return $this->belongsTo('Account'); - } + public function account() + { + return $this->belongsTo('Account'); + } - private static function getBlank($entity = false) - { - $activity = new Activity; + private static function getBlank($entity = false) + { + $activity = new Activity(); - if ($entity) - { - $activity->user_id = $entity instanceof User ? $entity->id : $entity->user_id; - $activity->account_id = $entity->account_id; - } - else if (Auth::check()) - { - $activity->user_id = Auth::user()->id; - $activity->account_id = Auth::user()->account_id; - } - else - { - Utils::fatalError(); - } + if ($entity) { + $activity->user_id = $entity instanceof User ? $entity->id : $entity->user_id; + $activity->account_id = $entity->account_id; + } elseif (Auth::check()) { + $activity->user_id = Auth::user()->id; + $activity->account_id = Auth::user()->account_id; + } else { + Utils::fatalError(); + } - return $activity; - } + return $activity; + } - public static function createClient($client, $notify = true) - { - $activity = Activity::getBlank(); - $activity->client_id = $client->id; - $activity->activity_type_id = ACTIVITY_TYPE_CREATE_CLIENT; - $activity->message = Utils::encodeActivity(Auth::user(), 'created', $client); - $activity->save(); + public static function createClient($client, $notify = true) + { + $activity = Activity::getBlank(); + $activity->client_id = $client->id; + $activity->activity_type_id = ACTIVITY_TYPE_CREATE_CLIENT; + $activity->message = Utils::encodeActivity(Auth::user(), 'created', $client); + $activity->save(); - if ($notify) - { - Activity::checkSubscriptions(EVENT_CREATE_CLIENT, $client); - } - } + if ($notify) { + Activity::checkSubscriptions(EVENT_CREATE_CLIENT, $client); + } + } - public static function updateClient($client) - { - if ($client->is_deleted && !$client->getOriginal('is_deleted')) - { - $activity = Activity::getBlank(); - $activity->client_id = $client->id; - $activity->activity_type_id = ACTIVITY_TYPE_DELETE_CLIENT; - $activity->message = Utils::encodeActivity(Auth::user(), 'deleted', $client); - $activity->save(); - } - } + public static function updateClient($client) + { + if ($client->is_deleted && !$client->getOriginal('is_deleted')) { + $activity = Activity::getBlank(); + $activity->client_id = $client->id; + $activity->activity_type_id = ACTIVITY_TYPE_DELETE_CLIENT; + $activity->message = Utils::encodeActivity(Auth::user(), 'deleted', $client); + $activity->save(); + } + } - public static function archiveClient($client) - { - if (!$client->is_deleted) - { - $activity = Activity::getBlank(); - $activity->client_id = $client->id; - $activity->activity_type_id = ACTIVITY_TYPE_ARCHIVE_CLIENT; - $activity->message = Utils::encodeActivity(Auth::user(), 'archived', $client); - $activity->balance = $client->balance; - $activity->save(); - } - } + public static function archiveClient($client) + { + if (!$client->is_deleted) { + $activity = Activity::getBlank(); + $activity->client_id = $client->id; + $activity->activity_type_id = ACTIVITY_TYPE_ARCHIVE_CLIENT; + $activity->message = Utils::encodeActivity(Auth::user(), 'archived', $client); + $activity->balance = $client->balance; + $activity->save(); + } + } - public static function restoreClient($client) - { - $activity = Activity::getBlank(); - $activity->client_id = $client->id; - $activity->activity_type_id = ACTIVITY_TYPE_RESTORE_CLIENT; - $activity->message = Utils::encodeActivity(Auth::user(), 'restored', $client); - $activity->balance = $client->balance; - $activity->save(); - } + public static function restoreClient($client) + { + $activity = Activity::getBlank(); + $activity->client_id = $client->id; + $activity->activity_type_id = ACTIVITY_TYPE_RESTORE_CLIENT; + $activity->message = Utils::encodeActivity(Auth::user(), 'restored', $client); + $activity->balance = $client->balance; + $activity->save(); + } - public static function createInvoice($invoice) - { - if (Auth::check()) - { - $message = Utils::encodeActivity(Auth::user(), 'created', $invoice); - } - else - { - $message = Utils::encodeActivity(null, 'created', $invoice); - } + public static function createInvoice($invoice) + { + if (Auth::check()) { + $message = Utils::encodeActivity(Auth::user(), 'created', $invoice); + } else { + $message = Utils::encodeActivity(null, 'created', $invoice); + } - $adjustment = 0; - $client = $invoice->client; - if (!$invoice->is_quote && !$invoice->is_recurring) - { - $adjustment = $invoice->amount; - $client->balance = $client->balance + $adjustment; - $client->save(); - } + $adjustment = 0; + $client = $invoice->client; + if (!$invoice->is_quote && !$invoice->is_recurring) { + $adjustment = $invoice->amount; + $client->balance = $client->balance + $adjustment; + $client->save(); + } - $activity = Activity::getBlank($invoice); - $activity->invoice_id = $invoice->id; - $activity->client_id = $invoice->client_id; - $activity->activity_type_id = $invoice->is_quote ? ACTIVITY_TYPE_CREATE_QUOTE : ACTIVITY_TYPE_CREATE_INVOICE; - $activity->message = $message; - $activity->balance = $client->balance; - $activity->adjustment = $adjustment; - $activity->save(); + $activity = Activity::getBlank($invoice); + $activity->invoice_id = $invoice->id; + $activity->client_id = $invoice->client_id; + $activity->activity_type_id = $invoice->is_quote ? ACTIVITY_TYPE_CREATE_QUOTE : ACTIVITY_TYPE_CREATE_INVOICE; + $activity->message = $message; + $activity->balance = $client->balance; + $activity->adjustment = $adjustment; + $activity->save(); - Activity::checkSubscriptions($invoice->is_quote ? EVENT_CREATE_QUOTE : EVENT_CREATE_INVOICE, $invoice); - } + Activity::checkSubscriptions($invoice->is_quote ? EVENT_CREATE_QUOTE : EVENT_CREATE_INVOICE, $invoice); + } - public static function archiveInvoice($invoice) - { - if (!$invoice->is_deleted) - { - $activity = Activity::getBlank(); - $activity->invoice_id = $invoice->id; - $activity->client_id = $invoice->client_id; - $activity->activity_type_id = $invoice->is_quote ? ACTIVITY_TYPE_ARCHIVE_QUOTE : ACTIVITY_TYPE_ARCHIVE_INVOICE; - $activity->message = Utils::encodeActivity(Auth::user(), 'archived', $invoice); - $activity->balance = $invoice->client->balance; + public static function archiveInvoice($invoice) + { + if (!$invoice->is_deleted) { + $activity = Activity::getBlank(); + $activity->invoice_id = $invoice->id; + $activity->client_id = $invoice->client_id; + $activity->activity_type_id = $invoice->is_quote ? ACTIVITY_TYPE_ARCHIVE_QUOTE : ACTIVITY_TYPE_ARCHIVE_INVOICE; + $activity->message = Utils::encodeActivity(Auth::user(), 'archived', $invoice); + $activity->balance = $invoice->client->balance; - $activity->save(); - } - } + $activity->save(); + } + } - public static function restoreInvoice($invoice) - { - $activity = Activity::getBlank(); - $activity->invoice_id = $invoice->id; - $activity->client_id = $invoice->client_id; - $activity->activity_type_id = $invoice->is_quote ? ACTIVITY_TYPE_RESTORE_QUOTE : ACTIVITY_TYPE_RESTORE_INVOICE; - $activity->message = Utils::encodeActivity(Auth::user(), 'restored', $invoice); - $activity->balance = $invoice->client->balance; + public static function restoreInvoice($invoice) + { + $activity = Activity::getBlank(); + $activity->invoice_id = $invoice->id; + $activity->client_id = $invoice->client_id; + $activity->activity_type_id = $invoice->is_quote ? ACTIVITY_TYPE_RESTORE_QUOTE : ACTIVITY_TYPE_RESTORE_INVOICE; + $activity->message = Utils::encodeActivity(Auth::user(), 'restored', $invoice); + $activity->balance = $invoice->client->balance; - $activity->save(); - } + $activity->save(); + } - public static function emailInvoice($invitation) - { - $adjustment = 0; - $client = $invitation->invoice->client; + public static function emailInvoice($invitation) + { + $adjustment = 0; + $client = $invitation->invoice->client; - $activity = Activity::getBlank($invitation); - $activity->client_id = $invitation->invoice->client_id; - $activity->invoice_id = $invitation->invoice_id; - $activity->contact_id = $invitation->contact_id; - $activity->activity_type_id = $invitation->invoice ? ACTIVITY_TYPE_EMAIL_QUOTE : ACTIVITY_TYPE_EMAIL_INVOICE; - $activity->message = Utils::encodeActivity(Auth::check() ? Auth::user() : null, 'emailed', $invitation->invoice, $invitation->contact); - $activity->balance = $client->balance; - $activity->save(); - } + $activity = Activity::getBlank($invitation); + $activity->client_id = $invitation->invoice->client_id; + $activity->invoice_id = $invitation->invoice_id; + $activity->contact_id = $invitation->contact_id; + $activity->activity_type_id = $invitation->invoice ? ACTIVITY_TYPE_EMAIL_QUOTE : ACTIVITY_TYPE_EMAIL_INVOICE; + $activity->message = Utils::encodeActivity(Auth::check() ? Auth::user() : null, 'emailed', $invitation->invoice, $invitation->contact); + $activity->balance = $client->balance; + $activity->save(); + } - public static function updateInvoice($invoice) - { - $client = $invoice->client; + public static function updateInvoice($invoice) + { + $client = $invoice->client; - if ($invoice->is_deleted && !$invoice->getOriginal('is_deleted')) - { - if (!$invoice->is_quote && !$invoice->is_recurring) - { - $client->balance = $client->balance - $invoice->balance; - $client->paid_to_date = $client->paid_to_date - ($invoice->amount - $invoice->balance); - $client->save(); - } + if ($invoice->is_deleted && !$invoice->getOriginal('is_deleted')) { + if (!$invoice->is_quote && !$invoice->is_recurring) { + $client->balance = $client->balance - $invoice->balance; + $client->paid_to_date = $client->paid_to_date - ($invoice->amount - $invoice->balance); + $client->save(); + } - $activity = Activity::getBlank(); - $activity->client_id = $invoice->client_id; - $activity->invoice_id = $invoice->id; - $activity->activity_type_id = $invoice->is_quote ? ACTIVITY_TYPE_DELETE_QUOTE : ACTIVITY_TYPE_DELETE_INVOICE; - $activity->message = Utils::encodeActivity(Auth::user(), 'deleted', $invoice); - $activity->balance = $invoice->client->balance; - $activity->adjustment = $invoice->is_quote ? 0 : $invoice->balance * -1; - $activity->save(); - } - else - { - $diff = floatval($invoice->amount) - floatval($invoice->getOriginal('amount')); - - if ($diff == 0) - { - return; - } + $activity = Activity::getBlank(); + $activity->client_id = $invoice->client_id; + $activity->invoice_id = $invoice->id; + $activity->activity_type_id = $invoice->is_quote ? ACTIVITY_TYPE_DELETE_QUOTE : ACTIVITY_TYPE_DELETE_INVOICE; + $activity->message = Utils::encodeActivity(Auth::user(), 'deleted', $invoice); + $activity->balance = $invoice->client->balance; + $activity->adjustment = $invoice->is_quote ? 0 : $invoice->balance * -1; + $activity->save(); + } else { + $diff = floatval($invoice->amount) - floatval($invoice->getOriginal('amount')); - $backupInvoice = Invoice::with('invoice_items', 'client.account', 'client.contacts')->find($invoice->id); + if ($diff == 0) { + return; + } - if (!$invoice->is_quote && !$invoice->is_recurring) - { - $client->balance = $client->balance + $diff; - $client->save(); - } + $backupInvoice = Invoice::with('invoice_items', 'client.account', 'client.contacts')->find($invoice->id); - $activity = Activity::getBlank($invoice); - $activity->client_id = $invoice->client_id; - $activity->invoice_id = $invoice->id; - $activity->activity_type_id = $invoice->is_quote ? ACTIVITY_TYPE_UPDATE_QUOTE : ACTIVITY_TYPE_UPDATE_INVOICE; - $activity->message = Utils::encodeActivity(Auth::user(), 'updated', $invoice); - $activity->balance = $client->balance; - $activity->adjustment = $invoice->is_quote || $invoice->is_recurring ? 0 : $diff; - $activity->json_backup = $backupInvoice->hidePrivateFields()->toJSON(); - $activity->save(); - } - } + if (!$invoice->is_quote && !$invoice->is_recurring) { + $client->balance = $client->balance + $diff; + $client->save(); + } - public static function viewInvoice($invitation) - { - if (Session::get($invitation->invitation_key)) - { - return; - } + $activity = Activity::getBlank($invoice); + $activity->client_id = $invoice->client_id; + $activity->invoice_id = $invoice->id; + $activity->activity_type_id = $invoice->is_quote ? ACTIVITY_TYPE_UPDATE_QUOTE : ACTIVITY_TYPE_UPDATE_INVOICE; + $activity->message = Utils::encodeActivity(Auth::user(), 'updated', $invoice); + $activity->balance = $client->balance; + $activity->adjustment = $invoice->is_quote || $invoice->is_recurring ? 0 : $diff; + $activity->json_backup = $backupInvoice->hidePrivateFields()->toJSON(); + $activity->save(); + } + } - Session::put($invitation->invitation_key, true); - $invoice = $invitation->invoice; - - if (!$invoice->isViewed()) - { - $invoice->invoice_status_id = INVOICE_STATUS_VIEWED; - $invoice->save(); - } - - $now = Carbon::now()->toDateTimeString(); + public static function viewInvoice($invitation) + { + if (Session::get($invitation->invitation_key)) { + return; + } - $invitation->viewed_date = $now; - $invitation->save(); + Session::put($invitation->invitation_key, true); + $invoice = $invitation->invoice; - $client = $invoice->client; - $client->last_login = $now; - $client->save(); + if (!$invoice->isViewed()) { + $invoice->invoice_status_id = INVOICE_STATUS_VIEWED; + $invoice->save(); + } - $activity = Activity::getBlank($invitation); - $activity->client_id = $invitation->invoice->client_id; - $activity->invitation_id = $invitation->id; - $activity->contact_id = $invitation->contact_id; - $activity->invoice_id = $invitation->invoice_id; - $activity->activity_type_id = $invitation->invoice->is_quote ? ACTIVITY_TYPE_VIEW_QUOTE : ACTIVITY_TYPE_VIEW_INVOICE; - $activity->message = Utils::encodeActivity($invitation->contact, 'viewed', $invitation->invoice); - $activity->balance = $invitation->invoice->client->balance; - $activity->save(); - } + $now = Carbon::now()->toDateTimeString(); + $invitation->viewed_date = $now; + $invitation->save(); + $client = $invoice->client; + $client->last_login = $now; + $client->save(); - public static function createPayment($payment) - { - $client = $payment->client; - $client->balance = $client->balance - $payment->amount; - $client->paid_to_date = $client->paid_to_date + $payment->amount; - $client->save(); + $activity = Activity::getBlank($invitation); + $activity->client_id = $invitation->invoice->client_id; + $activity->invitation_id = $invitation->id; + $activity->contact_id = $invitation->contact_id; + $activity->invoice_id = $invitation->invoice_id; + $activity->activity_type_id = $invitation->invoice->is_quote ? ACTIVITY_TYPE_VIEW_QUOTE : ACTIVITY_TYPE_VIEW_INVOICE; + $activity->message = Utils::encodeActivity($invitation->contact, 'viewed', $invitation->invoice); + $activity->balance = $invitation->invoice->client->balance; + $activity->save(); + } - if ($payment->contact_id) - { - $activity = Activity::getBlank($client); - $activity->contact_id = $payment->contact_id; - $activity->message = Utils::encodeActivity($payment->invitation->contact, 'entered ' . $payment->getName() . ' for ', $payment->invoice); - } - else - { - $activity = Activity::getBlank($client); - $message = $payment->payment_type_id == PAYMENT_TYPE_CREDIT ? 'applied credit for ' : 'entered ' . $payment->getName() . ' for '; - $activity->message = Utils::encodeActivity(Auth::user(), $message, $payment->invoice); - } + public static function createPayment($payment) + { + $client = $payment->client; + $client->balance = $client->balance - $payment->amount; + $client->paid_to_date = $client->paid_to_date + $payment->amount; + $client->save(); - $activity->payment_id = $payment->id; + if ($payment->contact_id) { + $activity = Activity::getBlank($client); + $activity->contact_id = $payment->contact_id; + $activity->message = Utils::encodeActivity($payment->invitation->contact, 'entered '.$payment->getName().' for ', $payment->invoice); + } else { + $activity = Activity::getBlank($client); + $message = $payment->payment_type_id == PAYMENT_TYPE_CREDIT ? 'applied credit for ' : 'entered '.$payment->getName().' for '; + $activity->message = Utils::encodeActivity(Auth::user(), $message, $payment->invoice); + } - if ($payment->invoice_id) - { - $activity->invoice_id = $payment->invoice_id; + $activity->payment_id = $payment->id; - $invoice = $payment->invoice; - $invoice->balance = $invoice->balance - $payment->amount; - $invoice->invoice_status_id = ($invoice->balance > 0) ? INVOICE_STATUS_PARTIAL : INVOICE_STATUS_PAID; - $invoice->save(); - } + if ($payment->invoice_id) { + $activity->invoice_id = $payment->invoice_id; - $activity->payment_id = $payment->id; - $activity->client_id = $payment->client_id; - $activity->activity_type_id = ACTIVITY_TYPE_CREATE_PAYMENT; - $activity->balance = $client->balance; - $activity->adjustment = $payment->amount * -1; - $activity->save(); + $invoice = $payment->invoice; + $invoice->balance = $invoice->balance - $payment->amount; + $invoice->invoice_status_id = ($invoice->balance > 0) ? INVOICE_STATUS_PARTIAL : INVOICE_STATUS_PAID; + $invoice->save(); + } - Activity::checkSubscriptions(EVENT_CREATE_PAYMENT, $payment); - } + $activity->payment_id = $payment->id; + $activity->client_id = $payment->client_id; + $activity->activity_type_id = ACTIVITY_TYPE_CREATE_PAYMENT; + $activity->balance = $client->balance; + $activity->adjustment = $payment->amount * -1; + $activity->save(); - public static function updatePayment($payment) - { - if ($payment->is_deleted && !$payment->getOriginal('is_deleted')) - { - $client = $payment->client; - $client->balance = $client->balance + $payment->amount; - $client->paid_to_date = $client->paid_to_date - $payment->amount; - $client->save(); + Activity::checkSubscriptions(EVENT_CREATE_PAYMENT, $payment); + } - $invoice = $payment->invoice; - $invoice->balance = $invoice->balance + $payment->amount; - $invoice->save(); + public static function updatePayment($payment) + { + if ($payment->is_deleted && !$payment->getOriginal('is_deleted')) { + $client = $payment->client; + $client->balance = $client->balance + $payment->amount; + $client->paid_to_date = $client->paid_to_date - $payment->amount; + $client->save(); - $activity = Activity::getBlank(); - $activity->payment_id = $payment->id; - $activity->client_id = $invoice->client_id; - $activity->invoice_id = $invoice->id; - $activity->activity_type_id = ACTIVITY_TYPE_DELETE_PAYMENT; - $activity->message = Utils::encodeActivity(Auth::user(), 'deleted ' . $payment->getName()); - $activity->balance = $client->balance; - $activity->adjustment = $payment->amount; - $activity->save(); - } - else - { - /* - $diff = floatval($invoice->amount) - floatval($invoice->getOriginal('amount')); - - if ($diff == 0) - { - return; - } + $invoice = $payment->invoice; + $invoice->balance = $invoice->balance + $payment->amount; + $invoice->save(); - $client = $invoice->client; - $client->balance = $client->balance + $diff; - $client->save(); + $activity = Activity::getBlank(); + $activity->payment_id = $payment->id; + $activity->client_id = $invoice->client_id; + $activity->invoice_id = $invoice->id; + $activity->activity_type_id = ACTIVITY_TYPE_DELETE_PAYMENT; + $activity->message = Utils::encodeActivity(Auth::user(), 'deleted '.$payment->getName()); + $activity->balance = $client->balance; + $activity->adjustment = $payment->amount; + $activity->save(); + } else { + /* + $diff = floatval($invoice->amount) - floatval($invoice->getOriginal('amount')); - $activity = Activity::getBlank($invoice); - $activity->client_id = $invoice->client_id; - $activity->invoice_id = $invoice->id; - $activity->activity_type_id = ACTIVITY_TYPE_UPDATE_INVOICE; - $activity->message = Utils::encodeActivity(Auth::user(), 'updated', $invoice); - $activity->balance = $client->balance; - $activity->adjustment = $diff; - $activity->json_backup = $backupInvoice->hidePrivateFields()->toJSON(); - $activity->save(); - */ - } - } + if ($diff == 0) + { + return; + } - public static function archivePayment($payment) - { - if ($payment->is_deleted) - { - return; - } + $client = $invoice->client; + $client->balance = $client->balance + $diff; + $client->save(); - $client = $payment->client; - $invoice = $payment->invoice; + $activity = Activity::getBlank($invoice); + $activity->client_id = $invoice->client_id; + $activity->invoice_id = $invoice->id; + $activity->activity_type_id = ACTIVITY_TYPE_UPDATE_INVOICE; + $activity->message = Utils::encodeActivity(Auth::user(), 'updated', $invoice); + $activity->balance = $client->balance; + $activity->adjustment = $diff; + $activity->json_backup = $backupInvoice->hidePrivateFields()->toJSON(); + $activity->save(); + */ + } + } - $activity = Activity::getBlank(); - $activity->payment_id = $payment->id; - $activity->invoice_id = $invoice->id; - $activity->client_id = $client->id; - $activity->activity_type_id = ACTIVITY_TYPE_ARCHIVE_PAYMENT; - $activity->message = Utils::encodeActivity(Auth::user(), 'archived ' . $payment->getName()); - $activity->balance = $client->balance; - $activity->adjustment = 0; - $activity->save(); - } + public static function archivePayment($payment) + { + if ($payment->is_deleted) { + return; + } - public static function restorePayment($payment) - { - $client = $payment->client; - $invoice = $payment->invoice; + $client = $payment->client; + $invoice = $payment->invoice; - $activity = Activity::getBlank(); - $activity->payment_id = $payment->id; - $activity->invoice_id = $invoice->id; - $activity->client_id = $client->id; - $activity->activity_type_id = ACTIVITY_TYPE_RESTORE_PAYMENT; - $activity->message = Utils::encodeActivity(Auth::user(), 'restored ' . $payment->getName()); - $activity->balance = $client->balance; - $activity->adjustment = 0; - $activity->save(); - } + $activity = Activity::getBlank(); + $activity->payment_id = $payment->id; + $activity->invoice_id = $invoice->id; + $activity->client_id = $client->id; + $activity->activity_type_id = ACTIVITY_TYPE_ARCHIVE_PAYMENT; + $activity->message = Utils::encodeActivity(Auth::user(), 'archived '.$payment->getName()); + $activity->balance = $client->balance; + $activity->adjustment = 0; + $activity->save(); + } - public static function createCredit($credit) - { - $activity = Activity::getBlank(); - $activity->message = Utils::encodeActivity(Auth::user(), 'entered ' . Utils::formatMoney($credit->amount, $credit->client->currency_id) . ' credit'); - $activity->credit_id = $credit->id; - $activity->client_id = $credit->client_id; - $activity->activity_type_id = ACTIVITY_TYPE_CREATE_CREDIT; - $activity->balance = $credit->client->balance; - $activity->save(); - } + public static function restorePayment($payment) + { + $client = $payment->client; + $invoice = $payment->invoice; - public static function updateCredit($credit) - { - if ($credit->is_deleted && !$credit->getOriginal('is_deleted')) - { - $activity = Activity::getBlank(); - $activity->credit_id = $credit->id; - $activity->client_id = $credit->client_id; - $activity->activity_type_id = ACTIVITY_TYPE_DELETE_CREDIT; - $activity->message = Utils::encodeActivity(Auth::user(), 'deleted ' . Utils::formatMoney($credit->balance, $credit->client->currency_id) . ' credit'); - $activity->balance = $credit->client->balance; - $activity->save(); - } - else - { - /* - $diff = floatval($invoice->amount) - floatval($invoice->getOriginal('amount')); - - if ($diff == 0) - { - return; - } + $activity = Activity::getBlank(); + $activity->payment_id = $payment->id; + $activity->invoice_id = $invoice->id; + $activity->client_id = $client->id; + $activity->activity_type_id = ACTIVITY_TYPE_RESTORE_PAYMENT; + $activity->message = Utils::encodeActivity(Auth::user(), 'restored '.$payment->getName()); + $activity->balance = $client->balance; + $activity->adjustment = 0; + $activity->save(); + } - $client = $invoice->client; - $client->balance = $client->balance + $diff; - $client->save(); + public static function createCredit($credit) + { + $activity = Activity::getBlank(); + $activity->message = Utils::encodeActivity(Auth::user(), 'entered '.Utils::formatMoney($credit->amount, $credit->client->currency_id).' credit'); + $activity->credit_id = $credit->id; + $activity->client_id = $credit->client_id; + $activity->activity_type_id = ACTIVITY_TYPE_CREATE_CREDIT; + $activity->balance = $credit->client->balance; + $activity->save(); + } - $activity = Activity::getBlank($invoice); - $activity->client_id = $invoice->client_id; - $activity->invoice_id = $invoice->id; - $activity->activity_type_id = ACTIVITY_TYPE_UPDATE_INVOICE; - $activity->message = Utils::encodeActivity(Auth::user(), 'updated', $invoice); - $activity->balance = $client->balance; - $activity->adjustment = $diff; - $activity->json_backup = $backupInvoice->hidePrivateFields()->toJSON(); - $activity->save(); - */ - } - } + public static function updateCredit($credit) + { + if ($credit->is_deleted && !$credit->getOriginal('is_deleted')) { + $activity = Activity::getBlank(); + $activity->credit_id = $credit->id; + $activity->client_id = $credit->client_id; + $activity->activity_type_id = ACTIVITY_TYPE_DELETE_CREDIT; + $activity->message = Utils::encodeActivity(Auth::user(), 'deleted '.Utils::formatMoney($credit->balance, $credit->client->currency_id).' credit'); + $activity->balance = $credit->client->balance; + $activity->save(); + } else { + /* + $diff = floatval($invoice->amount) - floatval($invoice->getOriginal('amount')); - public static function archiveCredit($credit) - { - if ($credit->is_deleted) - { - return; - } - - $activity = Activity::getBlank(); - $activity->client_id = $credit->client_id; - $activity->credit_id = $credit->id; - $activity->activity_type_id = ACTIVITY_TYPE_ARCHIVE_CREDIT; - $activity->message = Utils::encodeActivity(Auth::user(), 'archived ' . Utils::formatMoney($credit->balance, $credit->client->currency_id) . ' credit'); - $activity->balance = $credit->client->balance; - $activity->save(); - } + if ($diff == 0) + { + return; + } - public static function restoreCredit($credit) - { - $activity = Activity::getBlank(); - $activity->client_id = $credit->client_id; - $activity->credit_id = $credit->id; - $activity->activity_type_id = ACTIVITY_TYPE_RESTORE_CREDIT; - $activity->message = Utils::encodeActivity(Auth::user(), 'restored ' . Utils::formatMoney($credit->balance, $credit->client->currency_id) . ' credit'); - $activity->balance = $credit->client->balance; - $activity->save(); - } + $client = $invoice->client; + $client->balance = $client->balance + $diff; + $client->save(); - private static function checkSubscriptions($event, $data) - { - if (!Auth::check()) { - return; - } - - $subscription = Auth::user()->account->getSubscription($event); - - if ($subscription) - { - Utils::notifyZapier($subscription, $data); - } - } -} \ No newline at end of file + $activity = Activity::getBlank($invoice); + $activity->client_id = $invoice->client_id; + $activity->invoice_id = $invoice->id; + $activity->activity_type_id = ACTIVITY_TYPE_UPDATE_INVOICE; + $activity->message = Utils::encodeActivity(Auth::user(), 'updated', $invoice); + $activity->balance = $client->balance; + $activity->adjustment = $diff; + $activity->json_backup = $backupInvoice->hidePrivateFields()->toJSON(); + $activity->save(); + */ + } + } + + public static function archiveCredit($credit) + { + if ($credit->is_deleted) { + return; + } + + $activity = Activity::getBlank(); + $activity->client_id = $credit->client_id; + $activity->credit_id = $credit->id; + $activity->activity_type_id = ACTIVITY_TYPE_ARCHIVE_CREDIT; + $activity->message = Utils::encodeActivity(Auth::user(), 'archived '.Utils::formatMoney($credit->balance, $credit->client->currency_id).' credit'); + $activity->balance = $credit->client->balance; + $activity->save(); + } + + public static function restoreCredit($credit) + { + $activity = Activity::getBlank(); + $activity->client_id = $credit->client_id; + $activity->credit_id = $credit->id; + $activity->activity_type_id = ACTIVITY_TYPE_RESTORE_CREDIT; + $activity->message = Utils::encodeActivity(Auth::user(), 'restored '.Utils::formatMoney($credit->balance, $credit->client->currency_id).' credit'); + $activity->balance = $credit->client->balance; + $activity->save(); + } + + private static function checkSubscriptions($event, $data) + { + if (!Auth::check()) { + return; + } + + $subscription = Auth::user()->account->getSubscription($event); + + if ($subscription) { + Utils::notifyZapier($subscription, $data); + } + } +} diff --git a/app/models/Affiliate.php b/app/models/Affiliate.php index 912260cf35fc..3efccbd1ada0 100644 --- a/app/models/Affiliate.php +++ b/app/models/Affiliate.php @@ -2,6 +2,6 @@ class Affiliate extends Eloquent { - public $timestamps = true; - protected $softDelete = true; -} \ No newline at end of file + public $timestamps = true; + protected $softDelete = true; +} diff --git a/app/models/Client.php b/app/models/Client.php index 89d6577d9ed7..6da9d285d1a3 100755 --- a/app/models/Client.php +++ b/app/models/Client.php @@ -2,259 +2,240 @@ class Client extends EntityModel { - public static $fieldName = 'Client - Name'; - public static $fieldPhone = 'Client - Phone'; - public static $fieldAddress1 = 'Client - Street'; - public static $fieldAddress2 = 'Client - Apt/Floor'; - public static $fieldCity = 'Client - City'; - public static $fieldState = 'Client - State'; - public static $fieldPostalCode = 'Client - Postal Code'; - public static $fieldNotes = 'Client - Notes'; - public static $fieldCountry = 'Client - Country'; + public static $fieldName = 'Client - Name'; + public static $fieldPhone = 'Client - Phone'; + public static $fieldAddress1 = 'Client - Street'; + public static $fieldAddress2 = 'Client - Apt/Floor'; + public static $fieldCity = 'Client - City'; + public static $fieldState = 'Client - State'; + public static $fieldPostalCode = 'Client - Postal Code'; + public static $fieldNotes = 'Client - Notes'; + public static $fieldCountry = 'Client - Country'; - public function account() - { - return $this->belongsTo('Account'); - } + public function account() + { + return $this->belongsTo('Account'); + } - public function invoices() - { - return $this->hasMany('Invoice'); - } + public function invoices() + { + return $this->hasMany('Invoice'); + } - public function payments() - { - return $this->hasMany('Payment'); - } + public function payments() + { + return $this->hasMany('Payment'); + } - public function contacts() - { - return $this->hasMany('Contact'); - } - - public function projects() - { - return $this->hasMany('Project'); - } + public function contacts() + { + return $this->hasMany('Contact'); + } - public function country() - { - return $this->belongsTo('Country'); - } + public function projects() + { + return $this->hasMany('Project'); + } - public function currency() - { - return $this->belongsTo('Currency'); - } + public function country() + { + return $this->belongsTo('Country'); + } - public function size() - { - return $this->belongsTo('Size'); - } + public function currency() + { + return $this->belongsTo('Currency'); + } - public function industry() - { - return $this->belongsTo('Industry'); - } + public function size() + { + return $this->belongsTo('Size'); + } - public function getTotalCredit() - { - return DB::table('credits') - ->where('client_id','=',$this->id) - ->whereNull('deleted_at') - ->sum('balance'); - } + public function industry() + { + return $this->belongsTo('Industry'); + } - public function getName() - { - return $this->getDisplayName(); - } + public function getTotalCredit() + { + return DB::table('credits') + ->where('client_id', '=', $this->id) + ->whereNull('deleted_at') + ->sum('balance'); + } - public function getDisplayName() - { - if ($this->name) - { - return $this->name; - } + public function getName() + { + return $this->getDisplayName(); + } - $this->load('contacts'); - $contact = $this->contacts()->first(); - - return $contact->getDisplayName(); - } + public function getDisplayName() + { + if ($this->name) { + return $this->name; + } - public function getEntityType() - { - return ENTITY_CLIENT; - } + $this->load('contacts'); + $contact = $this->contacts()->first(); - public function getAddress() - { - $str = ''; + return $contact->getDisplayName(); + } - if ($this->address1) { - $str .= $this->address1 . '' . $str . '
'; - } + public function getAddress() + { + $str = ''; - return $str; - } + if ($this->address1) { + $str .= $this->address1.''.$str.'
'; + } - if ($this->work_phone) - { - $str .= '' . Utils::formatPhoneNumber($this->work_phone); - } + return $str; + } - return $str; - } - - public function getIdNumber() - { - $str = ''; + public function getPhone() + { + $str = ''; - if ($this->id_number) - { - $str .= '' . $this->vat_number; - } + if ($this->work_phone) { + $str .= ''.Utils::formatPhoneNumber($this->work_phone); + } - return $str; - } - - public function getVatNumber() - { - $str = ''; + return $str; + } - if ($this->vat_number) - { - $str .= '' . $this->vat_number; - } + public function getIdNumber() + { + $str = ''; - return $str; - } - + if ($this->id_number) { + $str .= ''.$this->vat_number; + } - public function getNotes() - { - $str = ''; + return $str; + } - if ($this->private_notes) - { - $str .= '' . $this->private_notes . ''; - } + public function getVatNumber() + { + $str = ''; - return $str; - } + if ($this->vat_number) { + $str .= ''.$this->vat_number; + } - public function getIndustry() - { - $str = ''; + return $str; + } - if ($this->client_industry) - { - $str .= $this->client_industry->name . ' '; - } + public function getNotes() + { + $str = ''; - if ($this->client_size) - { - $str .= $this->client_size->name; - } + if ($this->private_notes) { + $str .= ''.$this->private_notes.''; + } - return $str; - } + return $str; + } - public function getCustomFields() - { - $str = ''; - $account = $this->account; + public function getIndustry() + { + $str = ''; - if ($account->custom_client_label1 && $this->custom_value1) - { - $str .= "{$account->custom_client_label1}: {$this->custom_value1}' . $str . '
'; - } + if ($this->phone) { + $str .= ''.Utils::formatPhoneNumber($this->phone); + } - return $str; - } -} \ No newline at end of file + if ($str) { + $str = ''.$str.'
'; + } + + return $str; + } +} diff --git a/app/models/Country.php b/app/models/Country.php index 01c300e56796..05364b4e3529 100755 --- a/app/models/Country.php +++ b/app/models/Country.php @@ -2,8 +2,8 @@ class Country extends Eloquent { - public $timestamps = false; - protected $softDelete = false; - - protected $visible = ['id', 'name']; -} \ No newline at end of file + public $timestamps = false; + protected $softDelete = false; + + protected $visible = ['id', 'name']; +} diff --git a/app/models/Credit.php b/app/models/Credit.php index 31c828ae6c68..d8efd31c6b65 100755 --- a/app/models/Credit.php +++ b/app/models/Credit.php @@ -1,62 +1,55 @@ belongsTo('Invoice')->withTrashed(); - } +{ + public function invoice() + { + return $this->belongsTo('Invoice')->withTrashed(); + } - public function client() - { - return $this->belongsTo('Client')->withTrashed(); - } + public function client() + { + return $this->belongsTo('Client')->withTrashed(); + } - public function getName() - { - return ''; - } + public function getName() + { + return ''; + } - public function getEntityType() - { - return ENTITY_CREDIT; - } + public function getEntityType() + { + return ENTITY_CREDIT; + } - public function apply($amount) - { - if ($amount > $this->balance) - { - $applied = $this->balance; - $this->balance = 0; - } - else - { - $applied = $amount; - $this->balance = $this->balance - $amount; - } + public function apply($amount) + { + if ($amount > $this->balance) { + $applied = $this->balance; + $this->balance = 0; + } else { + $applied = $amount; + $this->balance = $this->balance - $amount; + } - $this->save(); + $this->save(); - return $applied; - } + return $applied; + } } -Credit::created(function($credit) -{ - Activity::createCredit($credit); +Credit::created(function ($credit) { + Activity::createCredit($credit); }); -Credit::updating(function($credit) -{ - Activity::updateCredit($credit); +Credit::updating(function ($credit) { + Activity::updateCredit($credit); }); -Credit::deleting(function($credit) -{ - Activity::archiveCredit($credit); +Credit::deleting(function ($credit) { + Activity::archiveCredit($credit); }); -Credit::restoring(function($credit) -{ - Activity::restoreCredit($credit); -}); \ No newline at end of file +Credit::restoring(function ($credit) { + Activity::restoreCredit($credit); +}); diff --git a/app/models/Currency.php b/app/models/Currency.php index 83c8c89f1a24..943816064607 100755 --- a/app/models/Currency.php +++ b/app/models/Currency.php @@ -2,6 +2,6 @@ class Currency extends Eloquent { - public $timestamps = false; - protected $softDelete = false; -} \ No newline at end of file + public $timestamps = false; + protected $softDelete = false; +} diff --git a/app/models/DateFormat.php b/app/models/DateFormat.php index 4036532d3f91..0337c63ae011 100755 --- a/app/models/DateFormat.php +++ b/app/models/DateFormat.php @@ -2,6 +2,6 @@ class DateFormat extends Eloquent { - public $timestamps = false; - protected $softDelete = false; -} \ No newline at end of file + public $timestamps = false; + protected $softDelete = false; +} diff --git a/app/models/DatetimeFormat.php b/app/models/DatetimeFormat.php index e76bfe569118..9ab3a8eb4675 100755 --- a/app/models/DatetimeFormat.php +++ b/app/models/DatetimeFormat.php @@ -2,6 +2,6 @@ class DatetimeFormat extends Eloquent { - public $timestamps = false; - protected $softDelete = false; -} \ No newline at end of file + public $timestamps = false; + protected $softDelete = false; +} diff --git a/app/models/EntityModel.php b/app/models/EntityModel.php index 614d1eee79fc..412ed78469f7 100755 --- a/app/models/EntityModel.php +++ b/app/models/EntityModel.php @@ -2,89 +2,77 @@ class EntityModel extends Eloquent { - protected $softDelete = true; - public $timestamps = true; - - protected $hidden = ['id']; + protected $softDelete = true; + public $timestamps = true; - public static function createNew($parent = false) - { - $className = get_called_class(); - $entity = new $className(); - - if ($parent) - { - $entity->user_id = $parent instanceof User ? $parent->id : $parent->user_id; - $entity->account_id = $parent->account_id; - } - else if (Auth::check()) - { - $entity->user_id = Auth::user()->id; - $entity->account_id = Auth::user()->account_id; - } - else - { - Utils::fatalError(); - } + protected $hidden = ['id']; - $lastEntity = $className::withTrashed()->scope(false, $entity->account_id)->orderBy('public_id', 'DESC')->first(); + public static function createNew($parent = false) + { + $className = get_called_class(); + $entity = new $className(); - if ($lastEntity) - { - $entity->public_id = $lastEntity->public_id + 1; - } - else - { - $entity->public_id = 1; - } - - return $entity; - } + if ($parent) { + $entity->user_id = $parent instanceof User ? $parent->id : $parent->user_id; + $entity->account_id = $parent->account_id; + } elseif (Auth::check()) { + $entity->user_id = Auth::user()->id; + $entity->account_id = Auth::user()->account_id; + } else { + Utils::fatalError(); + } - public static function getPrivateId($publicId) - { - $className = get_called_class(); - return $className::scope($publicId)->pluck('id'); - } + $lastEntity = $className::withTrashed()->scope(false, $entity->account_id)->orderBy('public_id', 'DESC')->first(); - public function getActivityKey() - { - return $this->getEntityType() . ':' . $this->public_id . ':' . $this->getName(); - } + if ($lastEntity) { + $entity->public_id = $lastEntity->public_id + 1; + } else { + $entity->public_id = 1; + } - /* - public function getEntityType() - { - return ''; - } + return $entity; + } - public function getNmae() - { - return ''; - } - */ + public static function getPrivateId($publicId) + { + $className = get_called_class(); - public function scopeScope($query, $publicId = false, $accountId = false) - { - if (!$accountId) - { - $accountId = Auth::user()->account_id; - } - - $query->whereAccountId($accountId); + return $className::scope($publicId)->pluck('id'); + } - if ($publicId) - { - if (is_array($publicId)) - { - $query->whereIn('public_id', $publicId); - } - else - { - $query->wherePublicId($publicId); - } - } - - return $query; - } -} \ No newline at end of file + public function getActivityKey() + { + return $this->getEntityType().':'.$this->public_id.':'.$this->getName(); + } + + /* + public function getEntityType() + { + return ''; + } + + public function getNmae() + { + return ''; + } + */ + + public function scopeScope($query, $publicId = false, $accountId = false) + { + if (!$accountId) { + $accountId = Auth::user()->account_id; + } + + $query->whereAccountId($accountId); + + if ($publicId) { + if (is_array($publicId)) { + $query->whereIn('public_id', $publicId); + } else { + $query->wherePublicId($publicId); + } + } + + return $query; + } +} diff --git a/app/models/Frequency.php b/app/models/Frequency.php index 89d7f9196e13..84373222ae62 100755 --- a/app/models/Frequency.php +++ b/app/models/Frequency.php @@ -2,6 +2,6 @@ class Frequency extends Eloquent { - public $timestamps = false; - protected $softDelete = false; + public $timestamps = false; + protected $softDelete = false; } diff --git a/app/models/Gateway.php b/app/models/Gateway.php index 5589255841a3..1f4d6e0a7e21 100755 --- a/app/models/Gateway.php +++ b/app/models/Gateway.php @@ -2,55 +2,51 @@ class Gateway extends Eloquent { - public $timestamps = true; - protected $softDelete = false; + public $timestamps = true; + protected $softDelete = false; - public function paymentlibrary() - { - return $this->belongsTo('PaymentLibrary', 'payment_library_id'); - } - - public function getLogoUrl() - { - return '/images/gateways/logo_'.$this->provider.'.png'; - } + public function paymentlibrary() + { + return $this->belongsTo('PaymentLibrary', 'payment_library_id'); + } - public function getHelp() - { - $link = ''; + public function getLogoUrl() + { + return '/images/gateways/logo_'.$this->provider.'.png'; + } - if ($this->id == GATEWAY_AUTHORIZE_NET || $this->id == GATEWAY_AUTHORIZE_NET_SIM) { - $link = 'http://reseller.authorize.net/application/?id=5560364'; - } else if ($this->id == GATEWAY_PAYPAL_EXPRESS) { - $link = 'https://www.paypal.com/us/cgi-bin/webscr?cmd=_login-api-run'; - } else if ($this->id == GATEWAY_TWO_CHECKOUT) { - $link = 'https://www.2checkout.com/referral?r=2c37ac2298'; - } + public function getHelp() + { + $link = ''; - $key = 'texts.gateway_help_' . $this->id; - $str = trans($key, ['link' => "Click here"]); - return $key != $str ? $str : ''; - } - - public function getFields() - { - $paymentLibrary = $this->paymentlibrary; - - if ($paymentLibrary->id == PAYMENT_LIBRARY_OMNIPAY) - { - $fields = Omnipay::create($this->provider)->getDefaultParameters(); - } - else - { - $fields = Payment_Utility::load('config', 'drivers/'.strtolower($this->provider)); - } + if ($this->id == GATEWAY_AUTHORIZE_NET || $this->id == GATEWAY_AUTHORIZE_NET_SIM) { + $link = 'http://reseller.authorize.net/application/?id=5560364'; + } elseif ($this->id == GATEWAY_PAYPAL_EXPRESS) { + $link = 'https://www.paypal.com/us/cgi-bin/webscr?cmd=_login-api-run'; + } elseif ($this->id == GATEWAY_TWO_CHECKOUT) { + $link = 'https://www.2checkout.com/referral?r=2c37ac2298'; + } - if ($fields == null) - { - $fields = array(); - } - - return $fields; - } - + $key = 'texts.gateway_help_'.$this->id; + $str = trans($key, ['link' => "Click here"]); + + return $key != $str ? $str : ''; + } + + public function getFields() + { + $paymentLibrary = $this->paymentlibrary; + + if ($paymentLibrary->id == PAYMENT_LIBRARY_OMNIPAY) { + $fields = Omnipay::create($this->provider)->getDefaultParameters(); + } else { + $fields = Payment_Utility::load('config', 'drivers/'.strtolower($this->provider)); + } + + if ($fields == null) { + $fields = array(); + } + + return $fields; + } } diff --git a/app/models/Industry.php b/app/models/Industry.php index b52cc3e90826..4c931a520d8f 100755 --- a/app/models/Industry.php +++ b/app/models/Industry.php @@ -2,7 +2,6 @@ class Industry extends Eloquent { - public $timestamps = false; - protected $softDelete = false; - + public $timestamps = false; + protected $softDelete = false; } diff --git a/app/models/Invoice.php b/app/models/Invoice.php index e9ca8b9aa2d5..b5f7cad5bbc6 100755 --- a/app/models/Invoice.php +++ b/app/models/Invoice.php @@ -2,241 +2,228 @@ class Invoice extends EntityModel { - public function account() - { - return $this->belongsTo('Account'); - } + public function account() + { + return $this->belongsTo('Account'); + } - public function user() - { - return $this->belongsTo('User'); - } + public function user() + { + return $this->belongsTo('User'); + } - public function client() - { - return $this->belongsTo('Client')->withTrashed(); - } + public function client() + { + return $this->belongsTo('Client')->withTrashed(); + } - public function invoice_items() - { - return $this->hasMany('InvoiceItem'); - } + public function invoice_items() + { + return $this->hasMany('InvoiceItem'); + } - public function invoice_status() - { - return $this->belongsTo('InvoiceStatus'); - } + public function invoice_status() + { + return $this->belongsTo('InvoiceStatus'); + } - public function invoice_design() - { - return $this->belongsTo('InvoiceDesign'); - } + public function invoice_design() + { + return $this->belongsTo('InvoiceDesign'); + } - public function invitations() - { - return $this->hasMany('Invitation')->orderBy('invitations.contact_id'); - } + public function invitations() + { + return $this->hasMany('Invitation')->orderBy('invitations.contact_id'); + } - public function getName() - { - return $this->invoice_number; - } + public function getName() + { + return $this->invoice_number; + } - public function getLink() - { - return link_to('invoices/' . $this->public_id, $this->invoice_number); - } + public function getLink() + { + return link_to('invoices/'.$this->public_id, $this->invoice_number); + } - public function getEntityType() - { - return $this->is_quote ? ENTITY_QUOTE : ENTITY_INVOICE; - } - - public function isSent() - { - return $this->invoice_status_id >= INVOICE_STATUS_SENT; - } + public function getEntityType() + { + return $this->is_quote ? ENTITY_QUOTE : ENTITY_INVOICE; + } - public function isViewed() - { - return $this->invoice_status_id >= INVOICE_STATUS_VIEWED; - } + public function isSent() + { + return $this->invoice_status_id >= INVOICE_STATUS_SENT; + } - public function isPaid() - { - return $this->invoice_status_id >= INVOICE_STATUS_PAID; - } + public function isViewed() + { + return $this->invoice_status_id >= INVOICE_STATUS_VIEWED; + } - public function hidePrivateFields() - { - $this->setVisible([ - 'invoice_number', - 'discount', - 'is_amount_discount', - 'po_number', - 'invoice_date', - 'due_date', - 'terms', - 'public_notes', - 'amount', - 'balance', - 'invoice_items', - 'client', - 'tax_name', - 'tax_rate', - 'account', - 'invoice_design', - 'invoice_design_id', - 'is_pro', - 'is_quote', - 'custom_value1', - 'custom_value2', - 'custom_taxes1', - 'custom_taxes2']); - - $this->client->setVisible([ - 'name', - 'id_number', - 'vat_number', - 'address1', - 'address2', - 'city', - 'state', - 'postal_code', - 'work_phone', - 'payment_terms', - 'contacts', - 'country', - 'currency_id', - 'custom_value1', - 'custom_value2']); + public function isPaid() + { + return $this->invoice_status_id >= INVOICE_STATUS_PAID; + } - $this->account->setVisible([ - 'name', - 'id_number', - 'vat_number', - 'address1', - 'address2', - 'city', - 'state', - 'postal_code', - 'work_phone', - 'work_email', - 'country', - 'currency_id', - 'custom_label1', - 'custom_value1', - 'custom_label2', - 'custom_value2', - 'custom_client_label1', - 'custom_client_label2', - 'primary_color', - 'secondary_color', - 'hide_quantity', - 'hide_paid_to_date', - 'custom_invoice_label1', - 'custom_invoice_label2']); + public function hidePrivateFields() + { + $this->setVisible([ + 'invoice_number', + 'discount', + 'is_amount_discount', + 'po_number', + 'invoice_date', + 'due_date', + 'terms', + 'public_notes', + 'amount', + 'balance', + 'invoice_items', + 'client', + 'tax_name', + 'tax_rate', + 'account', + 'invoice_design', + 'invoice_design_id', + 'is_pro', + 'is_quote', + 'custom_value1', + 'custom_value2', + 'custom_taxes1', + 'custom_taxes2', ]); - foreach ($this->invoice_items as $invoiceItem) - { - $invoiceItem->setVisible([ - 'product_key', - 'notes', - 'cost', - 'qty', - 'tax_name', - 'tax_rate']); - } + $this->client->setVisible([ + 'name', + 'id_number', + 'vat_number', + 'address1', + 'address2', + 'city', + 'state', + 'postal_code', + 'work_phone', + 'payment_terms', + 'contacts', + 'country', + 'currency_id', + 'custom_value1', + 'custom_value2', ]); - foreach ($this->client->contacts as $contact) - { - $contact->setVisible([ - 'first_name', - 'last_name', - 'email', - 'phone']); - } + $this->account->setVisible([ + 'name', + 'id_number', + 'vat_number', + 'address1', + 'address2', + 'city', + 'state', + 'postal_code', + 'work_phone', + 'work_email', + 'country', + 'currency_id', + 'custom_label1', + 'custom_value1', + 'custom_label2', + 'custom_value2', + 'custom_client_label1', + 'custom_client_label2', + 'primary_color', + 'secondary_color', + 'hide_quantity', + 'hide_paid_to_date', + 'custom_invoice_label1', + 'custom_invoice_label2', ]); - return $this; - } + foreach ($this->invoice_items as $invoiceItem) { + $invoiceItem->setVisible([ + 'product_key', + 'notes', + 'cost', + 'qty', + 'tax_name', + 'tax_rate', ]); + } - public function shouldSendToday() - { - if (!$this->start_date || strtotime($this->start_date) > strtotime('now')) - { - return false; - } + foreach ($this->client->contacts as $contact) { + $contact->setVisible([ + 'first_name', + 'last_name', + 'email', + 'phone', ]); + } - if ($this->end_date && strtotime($this->end_date) < strtotime('now')) - { - return false; - } + return $this; + } - $dayOfWeekToday = date('w'); - $dayOfWeekStart = date('w', strtotime($this->start_date)); + public function shouldSendToday() + { + if (!$this->start_date || strtotime($this->start_date) > strtotime('now')) { + return false; + } - $dayOfMonthToday = date('j'); - $dayOfMonthStart = date('j', strtotime($this->start_date)); - - if (!$this->last_sent_date) - { - return true; - } - else - { - $date1 = new DateTime($this->last_sent_date); - $date2 = new DateTime(); - $diff = $date2->diff($date1); - $daysSinceLastSent = $diff->format("%a"); - $monthsSinceLastSent = ($diff->format('%y') * 12) + $diff->format('%m'); + if ($this->end_date && strtotime($this->end_date) < strtotime('now')) { + return false; + } - if ($daysSinceLastSent == 0) - { - return false; - } - } + $dayOfWeekToday = date('w'); + $dayOfWeekStart = date('w', strtotime($this->start_date)); - switch ($this->frequency_id) - { - case FREQUENCY_WEEKLY: - return $daysSinceLastSent >= 7; - case FREQUENCY_TWO_WEEKS: - return $daysSinceLastSent >= 14; - case FREQUENCY_FOUR_WEEKS: - return $daysSinceLastSent >= 28; - case FREQUENCY_MONTHLY: - return $monthsSinceLastSent >= 1; - case FREQUENCY_THREE_MONTHS: - return $monthsSinceLastSent >= 3; - case FREQUENCY_SIX_MONTHS: - return $monthsSinceLastSent >= 6; - case FREQUENCY_ANNUALLY: - return $monthsSinceLastSent >= 12; - default: - return false; - } + $dayOfMonthToday = date('j'); + $dayOfMonthStart = date('j', strtotime($this->start_date)); - return false; - } + if (!$this->last_sent_date) { + return true; + } else { + $date1 = new DateTime($this->last_sent_date); + $date2 = new DateTime(); + $diff = $date2->diff($date1); + $daysSinceLastSent = $diff->format("%a"); + $monthsSinceLastSent = ($diff->format('%y') * 12) + $diff->format('%m'); + + if ($daysSinceLastSent == 0) { + return false; + } + } + + switch ($this->frequency_id) { + case FREQUENCY_WEEKLY: + return $daysSinceLastSent >= 7; + case FREQUENCY_TWO_WEEKS: + return $daysSinceLastSent >= 14; + case FREQUENCY_FOUR_WEEKS: + return $daysSinceLastSent >= 28; + case FREQUENCY_MONTHLY: + return $monthsSinceLastSent >= 1; + case FREQUENCY_THREE_MONTHS: + return $monthsSinceLastSent >= 3; + case FREQUENCY_SIX_MONTHS: + return $monthsSinceLastSent >= 6; + case FREQUENCY_ANNUALLY: + return $monthsSinceLastSent >= 12; + default: + return false; + } + + return false; + } } -Invoice::created(function($invoice) -{ - $invoice->account->incrementCounter($invoice->invoice_number, $invoice->is_quote, $invoice->recurring_invoice_id); - Activity::createInvoice($invoice); +Invoice::created(function ($invoice) { + $invoice->account->incrementCounter($invoice->invoice_number, $invoice->is_quote, $invoice->recurring_invoice_id); + Activity::createInvoice($invoice); }); -Invoice::updating(function($invoice) -{ - Activity::updateInvoice($invoice); +Invoice::updating(function ($invoice) { + Activity::updateInvoice($invoice); }); -Invoice::deleting(function($invoice) -{ - Activity::archiveInvoice($invoice); +Invoice::deleting(function ($invoice) { + Activity::archiveInvoice($invoice); }); -Invoice::restoring(function($invoice) -{ - Activity::restoreInvoice($invoice); -}); \ No newline at end of file +Invoice::restoring(function ($invoice) { + Activity::restoreInvoice($invoice); +}); diff --git a/app/models/InvoiceDesign.php b/app/models/InvoiceDesign.php index 0def7e92e444..6dfd823dae02 100644 --- a/app/models/InvoiceDesign.php +++ b/app/models/InvoiceDesign.php @@ -2,6 +2,6 @@ class InvoiceDesign extends Eloquent { - public $timestamps = false; - protected $softDelete = false; + public $timestamps = false; + protected $softDelete = false; } diff --git a/app/models/InvoiceItem.php b/app/models/InvoiceItem.php index ed322033193b..36f8b5694097 100755 --- a/app/models/InvoiceItem.php +++ b/app/models/InvoiceItem.php @@ -2,13 +2,13 @@ class InvoiceItem extends EntityModel { - public function invoice() - { - return $this->belongsTo('Invoice'); - } + public function invoice() + { + return $this->belongsTo('Invoice'); + } - public function product() - { - return $this->belongsTo('Product'); - } -} \ No newline at end of file + public function product() + { + return $this->belongsTo('Product'); + } +} diff --git a/app/models/InvoiceStatus.php b/app/models/InvoiceStatus.php index 03d0b11ad7fd..faca90e50bcf 100755 --- a/app/models/InvoiceStatus.php +++ b/app/models/InvoiceStatus.php @@ -2,6 +2,6 @@ class InvoiceStatus extends Eloquent { - public $timestamps = false; - protected $softDelete = false; + public $timestamps = false; + protected $softDelete = false; } diff --git a/app/models/Language.php b/app/models/Language.php index 182cb510e320..e2843e2edc49 100755 --- a/app/models/Language.php +++ b/app/models/Language.php @@ -2,6 +2,6 @@ class Language extends Eloquent { - public $timestamps = false; - protected $softDelete = false; + public $timestamps = false; + protected $softDelete = false; } diff --git a/app/models/License.php b/app/models/License.php index c15f22d34969..1dfa5610cca6 100644 --- a/app/models/License.php +++ b/app/models/License.php @@ -2,6 +2,6 @@ class License extends Eloquent { - public $timestamps = true; - protected $softDelete = true; -} \ No newline at end of file + public $timestamps = true; + protected $softDelete = true; +} diff --git a/app/models/Payment.php b/app/models/Payment.php index daa1d60c3820..e71d50afb893 100755 --- a/app/models/Payment.php +++ b/app/models/Payment.php @@ -2,64 +2,59 @@ class Payment extends EntityModel { - public function invoice() - { - return $this->belongsTo('Invoice')->withTrashed();; - } + public function invoice() + { + return $this->belongsTo('Invoice')->withTrashed(); + } - public function invitation() - { - return $this->belongsTo('Invitation'); - } + public function invitation() + { + return $this->belongsTo('Invitation'); + } - public function client() - { - return $this->belongsTo('Client')->withTrashed();; - } + public function client() + { + return $this->belongsTo('Client')->withTrashed(); + } - public function account() - { - return $this->belongsTo('Account'); - } + public function account() + { + return $this->belongsTo('Account'); + } - public function contact() - { - return $this->belongsTo('Contact'); - } + public function contact() + { + return $this->belongsTo('Contact'); + } - public function getAmount() - { - return Utils::formatMoney($this->amount, $this->client->currency_id); - } + public function getAmount() + { + return Utils::formatMoney($this->amount, $this->client->currency_id); + } - public function getName() - { - return trim("payment {$this->transaction_reference}"); - } - - public function getEntityType() - { - return ENTITY_PAYMENT; - } + public function getName() + { + return trim("payment {$this->transaction_reference}"); + } + public function getEntityType() + { + return ENTITY_PAYMENT; + } } -Payment::created(function($payment) -{ - Activity::createPayment($payment); +Payment::created(function ($payment) { + Activity::createPayment($payment); }); -Payment::updating(function($payment) -{ - Activity::updatePayment($payment); +Payment::updating(function ($payment) { + Activity::updatePayment($payment); }); -Payment::deleting(function($payment) -{ - Activity::archivePayment($payment); +Payment::deleting(function ($payment) { + Activity::archivePayment($payment); }); -Payment::restoring(function($payment) -{ - Activity::restorePayment($payment); -}); \ No newline at end of file +Payment::restoring(function ($payment) { + Activity::restorePayment($payment); +}); diff --git a/app/models/PaymentLibrary.php b/app/models/PaymentLibrary.php index 4e790713a096..c6eff7009159 100644 --- a/app/models/PaymentLibrary.php +++ b/app/models/PaymentLibrary.php @@ -2,11 +2,11 @@ class PaymentLibrary extends Eloquent { - protected $table = 'payment_libraries'; - public $timestamps = true; + protected $table = 'payment_libraries'; + public $timestamps = true; - public function gateways() - { - return $this->hasMany('Gateway', 'payment_library_id'); - } -} \ No newline at end of file + public function gateways() + { + return $this->hasMany('Gateway', 'payment_library_id'); + } +} diff --git a/app/models/PaymentTerm.php b/app/models/PaymentTerm.php index c93379f53de6..15669d6535d3 100755 --- a/app/models/PaymentTerm.php +++ b/app/models/PaymentTerm.php @@ -2,6 +2,6 @@ class PaymentTerm extends Eloquent { - public $timestamps = false; - protected $softDelete = false; -} \ No newline at end of file + public $timestamps = false; + protected $softDelete = false; +} diff --git a/app/models/PaymentType.php b/app/models/PaymentType.php index ee2153021ec6..a44e66763bd3 100755 --- a/app/models/PaymentType.php +++ b/app/models/PaymentType.php @@ -2,6 +2,6 @@ class PaymentType extends Eloquent { - public $timestamps = false; - protected $softDelete = false; -} \ No newline at end of file + public $timestamps = false; + protected $softDelete = false; +} diff --git a/app/models/Product.php b/app/models/Product.php index 9468928d117d..3067be7ef5b8 100755 --- a/app/models/Product.php +++ b/app/models/Product.php @@ -1,9 +1,9 @@ where('product_key','=',$key)->first(); - } -} \ No newline at end of file +{ + public static function findProductByKey($key) + { + return Product::scope()->where('product_key', '=', $key)->first(); + } +} diff --git a/app/models/Project.php b/app/models/Project.php index 9960dd0e82ee..6a2042e87ab9 100644 --- a/app/models/Project.php +++ b/app/models/Project.php @@ -2,50 +2,44 @@ class Project extends Eloquent { - public $timestamps = true; - protected $softDelete = true; - + public $timestamps = true; + protected $softDelete = true; + public function account() - { - return $this->belongsTo('Account'); - } + { + return $this->belongsTo('Account'); + } + + public function user() + { + return $this->belongsTo('User'); + } - public function user() - { - return $this->belongsTo('User'); - } - public function client() - { - return $this->belongsTo('Client'); - } - - public function codes() - { - return $this->hasMany('ProjectCode'); - } - - public static function createNew($parent = false) - { - $className = get_called_class(); - $entity = new $className(); - - if ($parent) - { - $entity->user_id = $parent instanceof User ? $parent->id : $parent->user_id; - $entity->account_id = $parent->account_id; - } - else if (Auth::check()) - { - $entity->user_id = Auth::user()->id; - $entity->account_id = Auth::user()->account_id; - } - else - { - Utils::fatalError(); - } - - return $entity; - } -} + { + return $this->belongsTo('Client'); + } + public function codes() + { + return $this->hasMany('ProjectCode'); + } + + public static function createNew($parent = false) + { + $className = get_called_class(); + $entity = new $className(); + + if ($parent) { + $entity->user_id = $parent instanceof User ? $parent->id : $parent->user_id; + $entity->account_id = $parent->account_id; + } elseif (Auth::check()) { + $entity->user_id = Auth::user()->id; + $entity->account_id = Auth::user()->account_id; + } else { + Utils::fatalError(); + } + + return $entity; + } +} diff --git a/app/models/ProjectCode.php b/app/models/ProjectCode.php index 23d2c1722586..3f3f344a5e0b 100644 --- a/app/models/ProjectCode.php +++ b/app/models/ProjectCode.php @@ -2,49 +2,44 @@ class ProjectCode extends Eloquent { - public $timestamps = true; - protected $softDelete = true; - - public function account() - { - return $this->belongsTo('Account'); - } + public $timestamps = true; + protected $softDelete = true; + + public function account() + { + return $this->belongsTo('Account'); + } + + public function user() + { + return $this->belongsTo('User'); + } - public function user() - { - return $this->belongsTo('User'); - } - public function project() - { - return $this->belongsTo('Project'); - } - + { + return $this->belongsTo('Project'); + } + public function events() - { - return $this->hasMany('TimesheetEvent'); - } - + { + return $this->hasMany('TimesheetEvent'); + } + public static function createNew($parent = false) - { - $className = get_called_class(); - $entity = new $className(); - - if ($parent) - { - $entity->user_id = $parent instanceof User ? $parent->id : $parent->user_id; - $entity->account_id = $parent->account_id; - } - else if (Auth::check()) - { - $entity->user_id = Auth::user()->id; - $entity->account_id = Auth::user()->account_id; - } - else - { - Utils::fatalError(); - } - - return $entity; - } -} \ No newline at end of file + { + $className = get_called_class(); + $entity = new $className(); + + if ($parent) { + $entity->user_id = $parent instanceof User ? $parent->id : $parent->user_id; + $entity->account_id = $parent->account_id; + } elseif (Auth::check()) { + $entity->user_id = Auth::user()->id; + $entity->account_id = Auth::user()->account_id; + } else { + Utils::fatalError(); + } + + return $entity; + } +} diff --git a/app/models/Size.php b/app/models/Size.php index e0f3464435f8..a598c7732d01 100755 --- a/app/models/Size.php +++ b/app/models/Size.php @@ -2,6 +2,6 @@ class Size extends Eloquent { - public $timestamps = false; - protected $softDelete = false; + public $timestamps = false; + protected $softDelete = false; } diff --git a/app/models/Subscription.php b/app/models/Subscription.php index 4b7f4ba74ba7..e9d0c9a321eb 100644 --- a/app/models/Subscription.php +++ b/app/models/Subscription.php @@ -2,6 +2,6 @@ class Subscription extends Eloquent { - public $timestamps = true; - protected $softDelete = true; -} \ No newline at end of file + public $timestamps = true; + protected $softDelete = true; +} diff --git a/app/models/TaxRate.php b/app/models/TaxRate.php index c30d0d1d8569..474ad5c1b52d 100755 --- a/app/models/TaxRate.php +++ b/app/models/TaxRate.php @@ -2,5 +2,4 @@ class TaxRate extends EntityModel { - -} \ No newline at end of file +} diff --git a/app/models/Theme.php b/app/models/Theme.php index 79631bed84c8..86e73a35f18f 100755 --- a/app/models/Theme.php +++ b/app/models/Theme.php @@ -2,6 +2,6 @@ class Theme extends Eloquent { - public $timestamps = false; - protected $softDelete = false; -} \ No newline at end of file + public $timestamps = false; + protected $softDelete = false; +} diff --git a/app/models/Timesheet.php b/app/models/Timesheet.php index c248226db07b..3cf18f027954 100755 --- a/app/models/Timesheet.php +++ b/app/models/Timesheet.php @@ -2,21 +2,21 @@ class Timesheet extends Eloquent { - public $timestamps = true; - protected $softDelete = true; - - public function account() - { - return $this->belongsTo('Account'); - } + public $timestamps = true; + protected $softDelete = true; + + public function account() + { + return $this->belongsTo('Account'); + } + + public function user() + { + return $this->belongsTo('User'); + } - public function user() - { - return $this->belongsTo('User'); - } - public function timesheet_events() - { - return $this->hasMany('TimeSheetEvent'); - } + { + return $this->hasMany('TimeSheetEvent'); + } } diff --git a/app/models/TimesheetEvent.php b/app/models/TimesheetEvent.php index 42d21bc67487..448ac40c9b5a 100644 --- a/app/models/TimesheetEvent.php +++ b/app/models/TimesheetEvent.php @@ -2,11 +2,11 @@ class TimesheetEvent extends Eloquent { - public $timestamps = true; - protected $softDelete = true; - + public $timestamps = true; + protected $softDelete = true; + /* protected $dates = array('org_updated_at'); - + public function getDates() { return array('created_at', 'updated_at', 'deleted_at'); } */ @@ -16,63 +16,58 @@ class TimesheetEvent extends Eloquent var_dump($value); $this->attributes['org_updated_at'] = $value->getTimestamp(); }*/ - + public function account() - { - return $this->belongsTo('Account'); - } + { + return $this->belongsTo('Account'); + } + + public function user() + { + return $this->belongsTo('User'); + } - public function user() - { - return $this->belongsTo('User'); - } - public function source() - { - return $this->belongsTo('TimesheetEventSource'); - } - - public function timesheet() - { - return $this->belongsTo('Timesheet'); - } + { + return $this->belongsTo('TimesheetEventSource'); + } + + public function timesheet() + { + return $this->belongsTo('Timesheet'); + } + + public function project() + { + return $this->belongsTo('Project'); + } - public function project() - { - return $this->belongsTo('Project'); - } - public function project_code() - { - return $this->belongsTo('ProjectCode'); - } - + { + return $this->belongsTo('ProjectCode'); + } + /** * @return TimesheetEvent */ public static function createNew($parent = false) - { - $className = get_called_class(); - $entity = new $className(); - - if ($parent) - { - $entity->user_id = $parent instanceof User ? $parent->id : $parent->user_id; - $entity->account_id = $parent->account_id; - } - else if (Auth::check()) - { - $entity->user_id = Auth::user()->id; - $entity->account_id = Auth::user()->account_id; - } - else - { - Utils::fatalError(); - } - - return $entity; - } - + { + $className = get_called_class(); + $entity = new $className(); + + if ($parent) { + $entity->user_id = $parent instanceof User ? $parent->id : $parent->user_id; + $entity->account_id = $parent->account_id; + } elseif (Auth::check()) { + $entity->user_id = Auth::user()->id; + $entity->account_id = Auth::user()->account_id; + } else { + Utils::fatalError(); + } + + return $entity; + } + public function toChangesArray(TimesheetEvent $other) { $attributes_old = parent::toArray(); @@ -80,50 +75,48 @@ class TimesheetEvent extends Eloquent $skip_keys = ['id' => 1, 'created_at' => 1, 'updated_at' => 1, 'deleted_at' => 1, 'org_data' => 1, 'update_data' => 1]; $zeroisempty_keys = ['discount' => 1]; - + $result = []; // Find all the values that where changed or deleted foreach ($attributes_old as $key => $value) { // Skip null values, keys we don't care about and 0 value keys that means they are not used - if(empty($value) || isset($skip_keys[$key])|| (isset($zeroisempty_keys[$key]) && $value) ) { + if (empty($value) || isset($skip_keys[$key]) || (isset($zeroisempty_keys[$key]) && $value)) { continue; } - + // Compare values if it exists in the new array - if(isset($attributes_new[$key]) || array_key_exists($key, $attributes_new)) { - if($value instanceof \DateTime && $attributes_new[$key] instanceof \DateTime) { - if($value != $attributes_new[$key]) { + if (isset($attributes_new[$key]) || array_key_exists($key, $attributes_new)) { + if ($value instanceof \DateTime && $attributes_new[$key] instanceof \DateTime) { + if ($value != $attributes_new[$key]) { $result[$key] = $attributes_new[$key]->format("Y-m-d H:i:s"); } - } elseif($value instanceof \DateTime && is_string($attributes_new[$key])) { - if($value->format("Y-m-d H:i:s") != $attributes_new[$key]) { + } elseif ($value instanceof \DateTime && is_string($attributes_new[$key])) { + if ($value->format("Y-m-d H:i:s") != $attributes_new[$key]) { $result[$key] = $attributes_new[$key]; } - } elseif(is_string($value) && $attributes_new[$key] instanceof \DateTime) { - if($attributes_new[$key]->format("Y-m-d H:i:s") != $value) { + } elseif (is_string($value) && $attributes_new[$key] instanceof \DateTime) { + if ($attributes_new[$key]->format("Y-m-d H:i:s") != $value) { $result[$key] = $attributes_new[$key]->format("Y-m-d H:i:s"); } - } elseif($value != $attributes_new[$key]) { - $result[$key] = $attributes_new[$key]; + } elseif ($value != $attributes_new[$key]) { + $result[$key] = $attributes_new[$key]; } - } else { $result[$key] = null; } } - + // Find all the values that where deleted foreach ($attributes_new as $key => $value) { - if(isset($skip_keys[$key])) { + if (isset($skip_keys[$key])) { continue; } - - if(!isset($attributes_old[$key])) { - $result[$key] = $value; - } + + if (!isset($attributes_old[$key])) { + $result[$key] = $value; + } } - + return $result; } - } diff --git a/app/models/TimesheetEventSource.php b/app/models/TimesheetEventSource.php index e71233a34e59..fcca52c61f79 100644 --- a/app/models/TimesheetEventSource.php +++ b/app/models/TimesheetEventSource.php @@ -2,45 +2,39 @@ class TimesheetEventSource extends Eloquent { - public $timestamps = true; - protected $softDelete = true; - - public function account() - { - return $this->belongsTo('Account'); - } + public $timestamps = true; + protected $softDelete = true; + + public function account() + { + return $this->belongsTo('Account'); + } + + public function user() + { + return $this->belongsTo('User'); + } - public function user() - { - return $this->belongsTo('User'); - } - public function events() - { - return $this->hasMany('TimesheetEvent'); - } - + { + return $this->hasMany('TimesheetEvent'); + } + public static function createNew($parent = false) - { - $className = get_called_class(); - $entity = new $className(); - - if ($parent) - { - $entity->user_id = $parent instanceof User ? $parent->id : $parent->user_id; - $entity->account_id = $parent->account_id; - } - else if (Auth::check()) - { - $entity->user_id = Auth::user()->id; - $entity->account_id = Auth::user()->account_id; - } - else - { - Utils::fatalError(); - } - - return $entity; - } - -} \ No newline at end of file + { + $className = get_called_class(); + $entity = new $className(); + + if ($parent) { + $entity->user_id = $parent instanceof User ? $parent->id : $parent->user_id; + $entity->account_id = $parent->account_id; + } elseif (Auth::check()) { + $entity->user_id = Auth::user()->id; + $entity->account_id = Auth::user()->account_id; + } else { + Utils::fatalError(); + } + + return $entity; + } +} diff --git a/app/models/Timezone.php b/app/models/Timezone.php index 97dc0125f984..09b91108a4b4 100755 --- a/app/models/Timezone.php +++ b/app/models/Timezone.php @@ -1,7 +1,7 @@ 'required|unique:users', 'password' => 'required|between:6,32|confirmed', - 'password_confirmation' => 'between:6,32', + 'password_confirmation' => 'between:6,32', */ ); protected $updateRules = array( - /* - 'email' => 'required|unique:users', - 'username' => 'required|unique:users', - */ + /* + 'email' => 'required|unique:users', + 'username' => 'required|unique:users', + */ ); - /** - * The database table used by the model. - * - * @var string - */ - protected $table = 'users'; + /** + * The database table used by the model. + * + * @var string + */ + protected $table = 'users'; - public function account() - { - return $this->belongsTo('Account'); - } + public function account() + { + return $this->belongsTo('Account'); + } - public function theme() - { - return $this->belongsTo('Theme'); - } + public function theme() + { + return $this->belongsTo('Theme'); + } - public function getPersonType() - { - return PERSON_USER; - } + public function getPersonType() + { + return PERSON_USER; + } - /** - * Get the unique identifier for the user. - * - * @return mixed - */ - public function getAuthIdentifier() - { - return $this->getKey(); - } + /** + * Get the unique identifier for the user. + * + * @return mixed + */ + public function getAuthIdentifier() + { + return $this->getKey(); + } - /** - * Get the password for the user. - * - * @return string - */ - public function getAuthPassword() - { - return $this->password; - } + /** + * Get the password for the user. + * + * @return string + */ + public function getAuthPassword() + { + return $this->password; + } - /** - * Get the e-mail address where password reminders are sent. - * - * @return string - */ - public function getReminderEmail() - { - return $this->email; - } + /** + * Get the e-mail address where password reminders are sent. + * + * @return string + */ + public function getReminderEmail() + { + return $this->email; + } - public function isPro() - { - return $this->account->isPro(); - } + public function isPro() + { + return $this->account->isPro(); + } - public function isDemo() - { - return $this->account->id == Utils::getDemoAccountId(); - } + public function isDemo() + { + return $this->account->id == Utils::getDemoAccountId(); + } - public function maxInvoiceDesignId() - { - return $this->isPro() ? 10 : COUNT_FREE_DESIGNS; - } + public function maxInvoiceDesignId() + { + return $this->isPro() ? 10 : COUNT_FREE_DESIGNS; + } - public function getDisplayName() - { - if ($this->getFullName()) - { - return $this->getFullName(); - } - else if ($this->email) - { - return $this->email; - } - else - { - return 'Guest'; - } - } + public function getDisplayName() + { + if ($this->getFullName()) { + return $this->getFullName(); + } elseif ($this->email) { + return $this->email; + } else { + return 'Guest'; + } + } + public function getFullName() + { + if ($this->first_name || $this->last_name) { + return $this->first_name.' '.$this->last_name; + } else { + return ''; + } + } - public function getFullName() - { - if ($this->first_name || $this->last_name) - { - return $this->first_name . ' ' . $this->last_name; - } - else - { - return ''; - } - } + public function showGreyBackground() + { + return !$this->theme_id || in_array($this->theme_id, [2, 3, 5, 6, 7, 8, 10, 11, 12]); + } - public function showGreyBackground() - { - return !$this->theme_id || in_array($this->theme_id, [2, 3, 5, 6, 7, 8, 10, 11, 12]); - } + public function getRequestsCount() + { + return Session::get(SESSION_COUNTER, 0); + } - public function getRequestsCount() - { - return Session::get(SESSION_COUNTER, 0); - } + public function getPopOverText() + { + if (!Utils::isNinja() || !Auth::check() || Session::has('error')) { + return false; + } - public function getPopOverText() - { - if (!Utils::isNinja() || !Auth::check() || Session::has('error')) - { - return false; - } + $count = self::getRequestsCount(); - $count = self::getRequestsCount(); - - if ($count == 1 || $count % 5 == 0) - { - if (!Utils::isRegistered()) - { - return trans('texts.sign_up_to_save'); - } - else if (!Auth::user()->account->name) - { - return trans('texts.set_name'); - } - } + if ($count == 1 || $count % 5 == 0) { + if (!Utils::isRegistered()) { + return trans('texts.sign_up_to_save'); + } elseif (!Auth::user()->account->name) { + return trans('texts.set_name'); + } + } - return false; - } + return false; + } - public function afterSave($success=true, $forced = false) - { - if ($this->email) - { - return parent::afterSave($success=true, $forced = false); - } - else - { - return true; - } - } + public function afterSave($success = true, $forced = false) + { + if ($this->email) { + return parent::afterSave($success = true, $forced = false); + } else { + return true; + } + } - public function getMaxNumClients() - { - return $this->isPro() ? MAX_NUM_CLIENTS_PRO : MAX_NUM_CLIENTS; - } + public function getMaxNumClients() + { + return $this->isPro() ? MAX_NUM_CLIENTS_PRO : MAX_NUM_CLIENTS; + } - public function getRememberToken() - { - return $this->remember_token; - } + public function getRememberToken() + { + return $this->remember_token; + } - public function setRememberToken($value) - { - $this->remember_token = $value; - } + public function setRememberToken($value) + { + $this->remember_token = $value; + } - public function getRememberTokenName() - { - return 'remember_token'; - } -} \ No newline at end of file + public function getRememberTokenName() + { + return 'remember_token'; + } +} diff --git a/app/ninja/mailers/ContactMailer.php b/app/ninja/mailers/ContactMailer.php index b77f37d13ee1..f94d6972d486 100755 --- a/app/ninja/mailers/ContactMailer.php +++ b/app/ninja/mailers/ContactMailer.php @@ -25,7 +25,7 @@ class ContactMailer extends Mailer if (!$invitation->contact || $invitation->contact->email) { return false; } - + $invitation->sent_date = \Carbon::now()->toDateTimeString(); $invitation->save(); diff --git a/app/ninja/mailers/Mailer.php b/app/ninja/mailers/Mailer.php index 42dc5c1c190a..bb451156bc0e 100755 --- a/app/ninja/mailers/Mailer.php +++ b/app/ninja/mailers/Mailer.php @@ -3,26 +3,24 @@ use Mail; use Utils; -class Mailer { +class Mailer +{ + public function sendTo($toEmail, $fromEmail, $fromName, $subject, $view, $data = []) + { + $views = [ + 'emails.'.$view.'_html', + 'emails.'.$view.'_text', + ]; - public function sendTo($toEmail, $fromEmail, $fromName, $subject, $view, $data = []) - { - $views = [ - 'emails.'.$view.'_html', - 'emails.'.$view.'_text' - ]; - - Mail::send($views, $data, function($message) use ($toEmail, $fromEmail, $fromName, $subject) - { - $replyEmail = $fromEmail; + Mail::send($views, $data, function ($message) use ($toEmail, $fromEmail, $fromName, $subject) { + $replyEmail = $fromEmail; - // http://stackoverflow.com/questions/2421234/gmail-appearing-to-ignore-reply-to - if (Utils::isNinja() && $toEmail != CONTACT_EMAIL) - { - $fromEmail = NINJA_FROM_EMAIL; - } + // http://stackoverflow.com/questions/2421234/gmail-appearing-to-ignore-reply-to + if (Utils::isNinja() && $toEmail != CONTACT_EMAIL) { + $fromEmail = NINJA_FROM_EMAIL; + } - $message->to($toEmail)->from($fromEmail, $fromName)->replyTo($replyEmail, $fromName)->subject($subject); - }); - } -} \ No newline at end of file + $message->to($toEmail)->from($fromEmail, $fromName)->replyTo($replyEmail, $fromName)->subject($subject); + }); + } +} diff --git a/app/ninja/mailers/UserMailer.php b/app/ninja/mailers/UserMailer.php index f4042cd8f4fb..c8bb82cf8c86 100755 --- a/app/ninja/mailers/UserMailer.php +++ b/app/ninja/mailers/UserMailer.php @@ -2,68 +2,61 @@ use Invoice; use Payment; -use Contact; use User; use Utils; -class UserMailer extends Mailer { +class UserMailer extends Mailer +{ + public function sendConfirmation(User $user, User $invitor = null) + { + if (!$user->email) { + return; + } - public function sendConfirmation(User $user, User $invitor = null) - { - if (!$user->email) - { - return; - } + $view = 'confirm'; + $subject = trans('texts.confirmation_subject'); - $view = 'confirm'; - $subject = trans('texts.confirmation_subject'); + $data = [ + 'user' => $user, + 'invitationMessage' => $invitor ? trans('texts.invitation_message', ['invitor' => $invitor->getDisplayName()]) : '', + ]; - $data = [ - 'user' => $user, - 'invitationMessage' => $invitor ? trans('texts.invitation_message', ['invitor' => $invitor->getDisplayName()]) : '' - ]; - - if ($invitor) - { - $fromEmail = $invitor->email; - $fromName = $invitor->getDisplayName(); - } - else - { - $fromEmail = CONTACT_EMAIL; - $fromName = CONTACT_NAME; - } + if ($invitor) { + $fromEmail = $invitor->email; + $fromName = $invitor->getDisplayName(); + } else { + $fromEmail = CONTACT_EMAIL; + $fromName = CONTACT_NAME; + } - $this->sendTo($user->email, $fromEmail, $fromName, $subject, $view, $data); - } + $this->sendTo($user->email, $fromEmail, $fromName, $subject, $view, $data); + } - public function sendNotification(User $user, Invoice $invoice, $notificationType, Payment $payment = null) - { - if (!$user->email) - { - return; - } + public function sendNotification(User $user, Invoice $invoice, $notificationType, Payment $payment = null) + { + if (!$user->email) { + return; + } - $view = 'invoice_' . $notificationType; - $entityType = $invoice->getEntityType(); + $view = 'invoice_'.$notificationType; + $entityType = $invoice->getEntityType(); - $data = [ - 'entityType' => $entityType, - 'clientName' => $invoice->client->getDisplayName(), - 'accountName' => $invoice->account->getDisplayName(), - 'userName' => $user->getDisplayName(), - 'invoiceAmount' => Utils::formatMoney($invoice->amount, $invoice->client->currency_id), - 'invoiceNumber' => $invoice->invoice_number, - 'invoiceLink' => SITE_URL . "/{$entityType}s/{$invoice->public_id}" - ]; + $data = [ + 'entityType' => $entityType, + 'clientName' => $invoice->client->getDisplayName(), + 'accountName' => $invoice->account->getDisplayName(), + 'userName' => $user->getDisplayName(), + 'invoiceAmount' => Utils::formatMoney($invoice->amount, $invoice->client->currency_id), + 'invoiceNumber' => $invoice->invoice_number, + 'invoiceLink' => SITE_URL."/{$entityType}s/{$invoice->public_id}", + ]; - if ($payment) - { - $data['paymentAmount'] = Utils::formatMoney($payment->amount, $invoice->client->currency_id); - } + if ($payment) { + $data['paymentAmount'] = Utils::formatMoney($payment->amount, $invoice->client->currency_id); + } - $subject = trans("texts.notification_{$entityType}_{$notificationType}_subject", ['invoice'=>$invoice->invoice_number, 'client'=>$invoice->client->getDisplayName()]); + $subject = trans("texts.notification_{$entityType}_{$notificationType}_subject", ['invoice' => $invoice->invoice_number, 'client' => $invoice->client->getDisplayName()]); - $this->sendTo($user->email, CONTACT_EMAIL, CONTACT_NAME, $subject, $view, $data); - } -} \ No newline at end of file + $this->sendTo($user->email, CONTACT_EMAIL, CONTACT_NAME, $subject, $view, $data); + } +} diff --git a/app/ninja/repositories/AccountRepository.php b/app/ninja/repositories/AccountRepository.php index 24d1c709369e..fa1b3e41410b 100755 --- a/app/ninja/repositories/AccountRepository.php +++ b/app/ninja/repositories/AccountRepository.php @@ -16,231 +16,219 @@ use Utils; class AccountRepository { - public function create() - { - $account = new Account; - $account->ip = Request::getClientIp(); - $account->account_key = str_random(RANDOM_KEY_LENGTH); + public function create() + { + $account = new Account(); + $account->ip = Request::getClientIp(); + $account->account_key = str_random(RANDOM_KEY_LENGTH); - if (Session::has(SESSION_LOCALE)) - { - $locale = Session::get(SESSION_LOCALE); - if ($language = Language::whereLocale($locale)->first()) - { - $account->language_id = $language->id; - } - } + if (Session::has(SESSION_LOCALE)) { + $locale = Session::get(SESSION_LOCALE); + if ($language = Language::whereLocale($locale)->first()) { + $account->language_id = $language->id; + } + } - $account->save(); - - $random = str_random(RANDOM_KEY_LENGTH); + $account->save(); - $user = new User; - $user->password = $random; - $user->password_confirmation = $random; - $user->username = $random; - $user->confirmed = !Utils::isNinja(); - $account->users()->save($user, []); - - return $account; - } + $random = str_random(RANDOM_KEY_LENGTH); - public function getSearchData() - { - $clients = \DB::table('clients') - ->where('clients.deleted_at', '=', null) - ->where('clients.account_id', '=', \Auth::user()->account_id) - ->whereRaw("clients.name <> ''") - ->select(\DB::raw("'Clients' as type, clients.public_id, clients.name, '' as token")); + $user = new User(); + $user->password = $random; + $user->password_confirmation = $random; + $user->username = $random; + $user->confirmed = !Utils::isNinja(); + $account->users()->save($user, []); - $contacts = \DB::table('clients') - ->join('contacts', 'contacts.client_id', '=', 'clients.id') - ->where('clients.deleted_at', '=', null) - ->where('clients.account_id', '=', \Auth::user()->account_id) - ->whereRaw("CONCAT(contacts.first_name, contacts.last_name, contacts.email) <> ''") - ->select(\DB::raw("'Contacts' as type, clients.public_id, CONCAT(contacts.first_name, ' ', contacts.last_name, ' ', contacts.email) as name, '' as token")); + return $account; + } - $invoices = \DB::table('clients') - ->join('invoices', 'invoices.client_id', '=', 'clients.id') - ->where('clients.account_id', '=', \Auth::user()->account_id) - ->where('clients.deleted_at', '=', null) - ->where('invoices.deleted_at', '=', null) - ->select(\DB::raw("'Invoices' as type, invoices.public_id, CONCAT(invoices.invoice_number, ': ', clients.name) as name, invoices.invoice_number as token")); + public function getSearchData() + { + $clients = \DB::table('clients') + ->where('clients.deleted_at', '=', null) + ->where('clients.account_id', '=', \Auth::user()->account_id) + ->whereRaw("clients.name <> ''") + ->select(\DB::raw("'Clients' as type, clients.public_id, clients.name, '' as token")); - $data = []; + $contacts = \DB::table('clients') + ->join('contacts', 'contacts.client_id', '=', 'clients.id') + ->where('clients.deleted_at', '=', null) + ->where('clients.account_id', '=', \Auth::user()->account_id) + ->whereRaw("CONCAT(contacts.first_name, contacts.last_name, contacts.email) <> ''") + ->select(\DB::raw("'Contacts' as type, clients.public_id, CONCAT(contacts.first_name, ' ', contacts.last_name, ' ', contacts.email) as name, '' as token")); - foreach ($clients->union($contacts)->union($invoices)->get() as $row) - { - $type = $row->type; + $invoices = \DB::table('clients') + ->join('invoices', 'invoices.client_id', '=', 'clients.id') + ->where('clients.account_id', '=', \Auth::user()->account_id) + ->where('clients.deleted_at', '=', null) + ->where('invoices.deleted_at', '=', null) + ->select(\DB::raw("'Invoices' as type, invoices.public_id, CONCAT(invoices.invoice_number, ': ', clients.name) as name, invoices.invoice_number as token")); - if (!isset($data[$type])) - { - $data[$type] = []; - } + $data = []; - $tokens = explode(' ', $row->name); - $tokens[] = $type; + foreach ($clients->union($contacts)->union($invoices)->get() as $row) { + $type = $row->type; - if ($type == 'Invoices') - { - $tokens[] = intVal($row->token) . ''; - } + if (!isset($data[$type])) { + $data[$type] = []; + } - $data[$type][] = [ - 'value' => $row->name, - 'public_id' => $row->public_id, - 'tokens' => $tokens - ]; - } - - return $data; - } + $tokens = explode(' ', $row->name); + $tokens[] = $type; + if ($type == 'Invoices') { + $tokens[] = intVal($row->token).''; + } - public function enableProPlan() - { - if (Auth::user()->isPro()) - { - return false; - } + $data[$type][] = [ + 'value' => $row->name, + 'public_id' => $row->public_id, + 'tokens' => $tokens, + ]; + } - $ninjaAccount = $this->getNinjaAccount(); - $lastInvoice = Invoice::withTrashed()->whereAccountId($ninjaAccount->id)->orderBy('public_id', 'DESC')->first(); - $publicId = $lastInvoice ? ($lastInvoice->public_id + 1) : 1; + return $data; + } - $ninjaClient = $this->getNinjaClient($ninjaAccount); - $invitation = $this->createNinjaInvoice($publicId, $ninjaAccount, $ninjaClient); + public function enableProPlan() + { + if (Auth::user()->isPro()) { + return false; + } - return $invitation; - } + $ninjaAccount = $this->getNinjaAccount(); + $lastInvoice = Invoice::withTrashed()->whereAccountId($ninjaAccount->id)->orderBy('public_id', 'DESC')->first(); + $publicId = $lastInvoice ? ($lastInvoice->public_id + 1) : 1; - private function createNinjaInvoice($publicId, $account, $client) - { - $invoice = new Invoice(); - $invoice->account_id = $account->id; - $invoice->user_id = $account->users()->first()->id; - $invoice->public_id = $publicId; - $invoice->client_id = $client->id; - $invoice->invoice_number = $account->getNextInvoiceNumber(); - $invoice->invoice_date = date_create()->format('Y-m-d'); - $invoice->amount = PRO_PLAN_PRICE; - $invoice->balance = PRO_PLAN_PRICE; - $invoice->save(); + $ninjaClient = $this->getNinjaClient($ninjaAccount); + $invitation = $this->createNinjaInvoice($publicId, $ninjaAccount, $ninjaClient); - $item = new InvoiceItem(); - $item->account_id = $account->id; - $item->user_id = $account->users()->first()->id; - $item->public_id = $publicId; - $item->qty = 1; - $item->cost = PRO_PLAN_PRICE; - $item->notes = trans('texts.pro_plan_description'); - $item->product_key = trans('texts.pro_plan_product'); - $invoice->invoice_items()->save($item); + return $invitation; + } - $invitation = new Invitation(); - $invitation->account_id = $account->id; - $invitation->user_id = $account->users()->first()->id; - $invitation->public_id = $publicId; - $invitation->invoice_id = $invoice->id; - $invitation->contact_id = $client->contacts()->first()->id; - $invitation->invitation_key = str_random(RANDOM_KEY_LENGTH); - $invitation->save(); + private function createNinjaInvoice($publicId, $account, $client) + { + $invoice = new Invoice(); + $invoice->account_id = $account->id; + $invoice->user_id = $account->users()->first()->id; + $invoice->public_id = $publicId; + $invoice->client_id = $client->id; + $invoice->invoice_number = $account->getNextInvoiceNumber(); + $invoice->invoice_date = date_create()->format('Y-m-d'); + $invoice->amount = PRO_PLAN_PRICE; + $invoice->balance = PRO_PLAN_PRICE; + $invoice->save(); - return $invitation; - } + $item = new InvoiceItem(); + $item->account_id = $account->id; + $item->user_id = $account->users()->first()->id; + $item->public_id = $publicId; + $item->qty = 1; + $item->cost = PRO_PLAN_PRICE; + $item->notes = trans('texts.pro_plan_description'); + $item->product_key = trans('texts.pro_plan_product'); + $invoice->invoice_items()->save($item); - public function getNinjaAccount() - { - $account = Account::whereAccountKey(NINJA_ACCOUNT_KEY)->first(); + $invitation = new Invitation(); + $invitation->account_id = $account->id; + $invitation->user_id = $account->users()->first()->id; + $invitation->public_id = $publicId; + $invitation->invoice_id = $invoice->id; + $invitation->contact_id = $client->contacts()->first()->id; + $invitation->invitation_key = str_random(RANDOM_KEY_LENGTH); + $invitation->save(); - if ($account) - { - return $account; - } - else - { - $account = new Account(); - $account->name = 'Invoice Ninja'; - $account->work_email = 'contact@invoiceninja.com'; - $account->work_phone = '(800) 763-1948'; - $account->account_key = NINJA_ACCOUNT_KEY; - $account->save(); + return $invitation; + } - $random = str_random(RANDOM_KEY_LENGTH); - $user = new User(); - $user->registered = true; - $user->confirmed = true; - $user->email = 'contact@invoiceninja.com'; - $user->password = $random; - $user->password_confirmation = $random; - $user->username = $random; - $user->first_name = 'Invoice'; - $user->last_name = 'Ninja'; - $user->notify_sent = true; - $user->notify_paid = true; - $account->users()->save($user); + public function getNinjaAccount() + { + $account = Account::whereAccountKey(NINJA_ACCOUNT_KEY)->first(); - $accountGateway = new AccountGateway(); - $accountGateway->user_id = $user->id; - $accountGateway->gateway_id = NINJA_GATEWAY_ID; - $accountGateway->public_id = 1; - $accountGateway->config = NINJA_GATEWAY_CONFIG; - $account->account_gateways()->save($accountGateway); - } + if ($account) { + return $account; + } else { + $account = new Account(); + $account->name = 'Invoice Ninja'; + $account->work_email = 'contact@invoiceninja.com'; + $account->work_phone = '(800) 763-1948'; + $account->account_key = NINJA_ACCOUNT_KEY; + $account->save(); - return $account; - } + $random = str_random(RANDOM_KEY_LENGTH); + $user = new User(); + $user->registered = true; + $user->confirmed = true; + $user->email = 'contact@invoiceninja.com'; + $user->password = $random; + $user->password_confirmation = $random; + $user->username = $random; + $user->first_name = 'Invoice'; + $user->last_name = 'Ninja'; + $user->notify_sent = true; + $user->notify_paid = true; + $account->users()->save($user); - private function getNinjaClient($ninjaAccount) - { - $client = Client::whereAccountId($ninjaAccount->id)->wherePublicId(Auth::user()->account_id)->first(); + $accountGateway = new AccountGateway(); + $accountGateway->user_id = $user->id; + $accountGateway->gateway_id = NINJA_GATEWAY_ID; + $accountGateway->public_id = 1; + $accountGateway->config = NINJA_GATEWAY_CONFIG; + $account->account_gateways()->save($accountGateway); + } - if (!$client) - { - $client = new Client; - $client->public_id = Auth::user()->account_id; - $client->user_id = $ninjaAccount->users()->first()->id; - $client->currency_id = 1; - foreach (['name', 'address1', 'address2', 'city', 'state', 'postal_code', 'country_id', 'work_phone'] as $field) - { - $client->$field = Auth::user()->account->$field; - } - $ninjaAccount->clients()->save($client); + return $account; + } - $contact = new Contact; - $contact->user_id = $ninjaAccount->users()->first()->id; - $contact->account_id = $ninjaAccount->id; - $contact->public_id = Auth::user()->account_id; - $contact->is_primary = true; - foreach (['first_name', 'last_name', 'email', 'phone'] as $field) - { - $contact->$field = Auth::user()->$field; - } - $client->contacts()->save($contact); - } + private function getNinjaClient($ninjaAccount) + { + $client = Client::whereAccountId($ninjaAccount->id)->wherePublicId(Auth::user()->account_id)->first(); - return $client; - } + if (!$client) { + $client = new Client(); + $client->public_id = Auth::user()->account_id; + $client->user_id = $ninjaAccount->users()->first()->id; + $client->currency_id = 1; + foreach (['name', 'address1', 'address2', 'city', 'state', 'postal_code', 'country_id', 'work_phone'] as $field) { + $client->$field = Auth::user()->account->$field; + } + $ninjaAccount->clients()->save($client); - public function registerUser($user) - { - $url = NINJA_APP_URL . '/signup/register'; - $data = ''; - $fields = [ + $contact = new Contact(); + $contact->user_id = $ninjaAccount->users()->first()->id; + $contact->account_id = $ninjaAccount->id; + $contact->public_id = Auth::user()->account_id; + $contact->is_primary = true; + foreach (['first_name', 'last_name', 'email', 'phone'] as $field) { + $contact->$field = Auth::user()->$field; + } + $client->contacts()->save($contact); + } + + return $client; + } + + public function registerUser($user) + { + $url = NINJA_APP_URL.'/signup/register'; + $data = ''; + $fields = [ 'first_name' => urlencode($user->first_name), 'last_name' => urlencode($user->last_name), - 'email' => urlencode($user->email) + 'email' => urlencode($user->email), ]; - foreach($fields as $key=>$value) { $data .= $key.'='.$value.'&'; } - rtrim($data, '&'); + foreach ($fields as $key => $value) { + $data .= $key.'='.$value.'&'; + } + rtrim($data, '&'); - $ch = curl_init(); - curl_setopt($ch,CURLOPT_URL, $url); - curl_setopt($ch,CURLOPT_POST, count($fields)); - curl_setopt($ch,CURLOPT_POSTFIELDS, $data); - curl_exec($ch); - curl_close($ch); - } - -} \ No newline at end of file + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_POST, count($fields)); + curl_setopt($ch, CURLOPT_POSTFIELDS, $data); + curl_exec($ch); + curl_close($ch); + } +} diff --git a/app/ninja/repositories/ClientRepository.php b/app/ninja/repositories/ClientRepository.php index 6a0a1561eedb..f1308b84c609 100755 --- a/app/ninja/repositories/ClientRepository.php +++ b/app/ninja/repositories/ClientRepository.php @@ -5,219 +5,198 @@ use Contact; class ClientRepository { - 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) + 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) ->where('contacts.deleted_at', '=', null) - ->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', 'clients.deleted_at', 'clients.is_deleted'); + ->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', 'clients.deleted_at', 'clients.is_deleted'); - if (!\Session::get('show_trash:client')) - { - $query->where('clients.deleted_at', '=', null); - } + if (!\Session::get('show_trash:client')) { + $query->where('clients.deleted_at', '=', null); + } - 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.'%'); + 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; - } + return $query; + } - public function getErrors($data) - { - $contact = isset($data['contacts']) ? (array)$data['contacts'][0] : (isset($data['contact']) ? $data['contact'] : []); - $validator = \Validator::make($contact, ['email' => 'required|email']); - if ($validator->fails()) { - return $validator->messages(); - } - - return false; - } + public function getErrors($data) + { + $contact = isset($data['contacts']) ? (array) $data['contacts'][0] : (isset($data['contact']) ? $data['contact'] : []); + $validator = \Validator::make($contact, ['email' => 'required|email']); + if ($validator->fails()) { + return $validator->messages(); + } - public function save($publicId, $data, $notify = true) - { - if (!$publicId || $publicId == "-1") - { - $client = Client::createNew(); - $client->currency_id = 1; - $contact = Contact::createNew(); - $contact->is_primary = true; - $contact->send_invoice = true; - } - else - { - $client = Client::scope($publicId)->with('contacts')->firstOrFail(); - $contact = $client->contacts()->where('is_primary', '=', true)->firstOrFail(); - } - - if (isset($data['name'])) { - $client->name = trim($data['name']); - } - if (isset($data['id_number'])) { - $client->id_number = trim($data['id_number']); - } - if (isset($data['vat_number'])) { - $client->vat_number = trim($data['vat_number']); - } - if (isset($data['work_phone'])) { - $client->work_phone = trim($data['work_phone']); - } - if (isset($data['custom_value1'])) { - $client->custom_value1 = trim($data['custom_value1']); - } - if (isset($data['custom_value2'])) { - $client->custom_value2 = trim($data['custom_value2']); - } - if (isset($data['address1'])) { - $client->address1 = trim($data['address1']); - } - if (isset($data['address2'])) { - $client->address2 = trim($data['address2']); - } - if (isset($data['city'])) { - $client->city = trim($data['city']); - } - if (isset($data['state'])) { - $client->state = trim($data['state']); - } - if (isset($data['postal_code'])) { - $client->postal_code = trim($data['postal_code']); - } - if (isset($data['country_id'])) { - $client->country_id = $data['country_id'] ? $data['country_id'] : null; - } - if (isset($data['private_notes'])) { - $client->private_notes = trim($data['private_notes']); - } - if (isset($data['size_id'])) { - $client->size_id = $data['size_id'] ? $data['size_id'] : null; - } - if (isset($data['industry_id'])) { - $client->industry_id = $data['industry_id'] ? $data['industry_id'] : null; - } - if (isset($data['currency_id'])) { - $client->currency_id = $data['currency_id'] ? $data['currency_id'] : null; - } - if (isset($data['payment_terms'])) { - $client->payment_terms = $data['payment_terms']; - } - if (isset($data['website'])) { - $client->website = trim($data['website']); - } + return false; + } - $client->save(); - - $isPrimary = true; - $contactIds = []; + public function save($publicId, $data, $notify = true) + { + if (!$publicId || $publicId == "-1") { + $client = Client::createNew(); + $client->currency_id = 1; + $contact = Contact::createNew(); + $contact->is_primary = true; + $contact->send_invoice = true; + } else { + $client = Client::scope($publicId)->with('contacts')->firstOrFail(); + $contact = $client->contacts()->where('is_primary', '=', true)->firstOrFail(); + } - if (isset($data['contact'])) - { - $info = $data['contact']; - if (isset($info['email'])) { - $contact->email = trim(strtolower($info['email'])); - } - if (isset($info['first_name'])) { - $contact->first_name = trim($info['first_name']); - } - if (isset($info['last_name'])) { - $contact->last_name = trim($info['last_name']); - } - if (isset($info['phone'])) { - $contact->phone = trim($info['phone']); - } - $contact->is_primary = true; - $contact->send_invoice = true; - $client->contacts()->save($contact); - } - else - { - foreach ($data['contacts'] as $record) - { - $record = (array) $record; + if (isset($data['name'])) { + $client->name = trim($data['name']); + } + if (isset($data['id_number'])) { + $client->id_number = trim($data['id_number']); + } + if (isset($data['vat_number'])) { + $client->vat_number = trim($data['vat_number']); + } + if (isset($data['work_phone'])) { + $client->work_phone = trim($data['work_phone']); + } + if (isset($data['custom_value1'])) { + $client->custom_value1 = trim($data['custom_value1']); + } + if (isset($data['custom_value2'])) { + $client->custom_value2 = trim($data['custom_value2']); + } + if (isset($data['address1'])) { + $client->address1 = trim($data['address1']); + } + if (isset($data['address2'])) { + $client->address2 = trim($data['address2']); + } + if (isset($data['city'])) { + $client->city = trim($data['city']); + } + if (isset($data['state'])) { + $client->state = trim($data['state']); + } + if (isset($data['postal_code'])) { + $client->postal_code = trim($data['postal_code']); + } + if (isset($data['country_id'])) { + $client->country_id = $data['country_id'] ? $data['country_id'] : null; + } + if (isset($data['private_notes'])) { + $client->private_notes = trim($data['private_notes']); + } + if (isset($data['size_id'])) { + $client->size_id = $data['size_id'] ? $data['size_id'] : null; + } + if (isset($data['industry_id'])) { + $client->industry_id = $data['industry_id'] ? $data['industry_id'] : null; + } + if (isset($data['currency_id'])) { + $client->currency_id = $data['currency_id'] ? $data['currency_id'] : null; + } + if (isset($data['payment_terms'])) { + $client->payment_terms = $data['payment_terms']; + } + if (isset($data['website'])) { + $client->website = trim($data['website']); + } - if ($publicId != "-1" && isset($record['public_id']) && $record['public_id']) - { - $contact = Contact::scope($record['public_id'])->firstOrFail(); - } - else - { - $contact = Contact::createNew(); - } + $client->save(); - if (isset($record['email'])) { - $contact->email = trim(strtolower($record['email'])); - } - if (isset($record['first_name'])) { - $contact->first_name = trim($record['first_name']); - } - if (isset($record['last_name'])) { - $contact->last_name = trim($record['last_name']); - } - if (isset($record['phone'])) { - $contact->phone = trim($record['phone']); - } - $contact->is_primary = $isPrimary; - $contact->send_invoice = isset($record['send_invoice']) ? $record['send_invoice'] : true; - $isPrimary = false; + $isPrimary = true; + $contactIds = []; - $client->contacts()->save($contact); - $contactIds[] = $contact->public_id; - } - - foreach ($client->contacts as $contact) - { - if (!in_array($contact->public_id, $contactIds)) - { - $contact->delete(); - } - } - } + if (isset($data['contact'])) { + $info = $data['contact']; + if (isset($info['email'])) { + $contact->email = trim(strtolower($info['email'])); + } + if (isset($info['first_name'])) { + $contact->first_name = trim($info['first_name']); + } + if (isset($info['last_name'])) { + $contact->last_name = trim($info['last_name']); + } + if (isset($info['phone'])) { + $contact->phone = trim($info['phone']); + } + $contact->is_primary = true; + $contact->send_invoice = true; + $client->contacts()->save($contact); + } else { + foreach ($data['contacts'] as $record) { + $record = (array) $record; - $client->save(); - - if (!$publicId || $publicId == "-1") - { - \Activity::createClient($client, $notify); - } + if ($publicId != "-1" && isset($record['public_id']) && $record['public_id']) { + $contact = Contact::scope($record['public_id'])->firstOrFail(); + } else { + $contact = Contact::createNew(); + } - return $client; - } + if (isset($record['email'])) { + $contact->email = trim(strtolower($record['email'])); + } + if (isset($record['first_name'])) { + $contact->first_name = trim($record['first_name']); + } + if (isset($record['last_name'])) { + $contact->last_name = trim($record['last_name']); + } + if (isset($record['phone'])) { + $contact->phone = trim($record['phone']); + } + $contact->is_primary = $isPrimary; + $contact->send_invoice = isset($record['send_invoice']) ? $record['send_invoice'] : true; + $isPrimary = false; - public function bulk($ids, $action) - { - $clients = Client::withTrashed()->scope($ids)->get(); + $client->contacts()->save($contact); + $contactIds[] = $contact->public_id; + } - foreach ($clients as $client) - { - if ($action == 'restore') - { - $client->restore(); + foreach ($client->contacts as $contact) { + if (!in_array($contact->public_id, $contactIds)) { + $contact->delete(); + } + } + } + + $client->save(); + + if (!$publicId || $publicId == "-1") { + \Activity::createClient($client, $notify); + } + + return $client; + } + + public function bulk($ids, $action) + { + $clients = Client::withTrashed()->scope($ids)->get(); + + foreach ($clients as $client) { + if ($action == 'restore') { + $client->restore(); $client->is_deleted = false; - $client->save(); - } - else - { - if ($action == 'delete') - { - $client->is_deleted = true; - $client->save(); - } - - $client->delete(); - } - } + $client->save(); + } else { + if ($action == 'delete') { + $client->is_deleted = true; + $client->save(); + } - return count($clients); - } -} \ No newline at end of file + $client->delete(); + } + } + + return count($clients); + } +} diff --git a/app/ninja/repositories/CreditRepository.php b/app/ninja/repositories/CreditRepository.php index 2df596a27013..3bbdae5c8e10 100755 --- a/app/ninja/repositories/CreditRepository.php +++ b/app/ninja/repositories/CreditRepository.php @@ -2,53 +2,45 @@ use Credit; use Client; -use Invoice; use Utils; class CreditRepository { - public function find($clientPublicId = null, $filter = null) - { - $query = \DB::table('credits') - ->join('clients', 'clients.id', '=','credits.client_id') - ->join('contacts', 'contacts.client_id', '=', 'clients.id') - ->where('clients.account_id', '=', \Auth::user()->account_id) - ->where('clients.deleted_at', '=', null) - ->where('contacts.is_primary', '=', true) - ->select('credits.public_id', 'clients.name as client_name', 'clients.public_id as client_public_id', 'credits.amount', 'credits.balance', 'credits.credit_date', 'clients.currency_id', 'contacts.first_name', 'contacts.last_name', 'contacts.email', 'credits.private_notes', 'credits.deleted_at', 'credits.is_deleted'); + public function find($clientPublicId = null, $filter = null) + { + $query = \DB::table('credits') + ->join('clients', 'clients.id', '=', 'credits.client_id') + ->join('contacts', 'contacts.client_id', '=', 'clients.id') + ->where('clients.account_id', '=', \Auth::user()->account_id) + ->where('clients.deleted_at', '=', null) + ->where('contacts.is_primary', '=', true) + ->select('credits.public_id', 'clients.name as client_name', 'clients.public_id as client_public_id', 'credits.amount', 'credits.balance', 'credits.credit_date', 'clients.currency_id', 'contacts.first_name', 'contacts.last_name', 'contacts.email', 'credits.private_notes', 'credits.deleted_at', 'credits.is_deleted'); - if ($clientPublicId) - { - $query->where('clients.public_id', '=', $clientPublicId); - } + if ($clientPublicId) { + $query->where('clients.public_id', '=', $clientPublicId); + } - if (!\Session::get('show_trash:credit')) - { + if (!\Session::get('show_trash:credit')) { $query->where('credits.deleted_at', '=', null); } - if ($filter) - { - $query->where(function($query) use ($filter) - { - $query->where('clients.name', 'like', '%'.$filter.'%'); - }); - } + if ($filter) { + $query->where(function ($query) use ($filter) { + $query->where('clients.name', 'like', '%'.$filter.'%'); + }); + } - return $query; - } + return $query; + } - public function save($publicId = null, $input) - { - if ($publicId) - { + public function save($publicId = null, $input) + { + if ($publicId) { $credit = Credit::scope($publicId)->firstOrFail(); - } - else - { + } else { $credit = Credit::createNew(); } - + $credit->client_id = Client::getPrivateId($input['client']); $credit->credit_date = Utils::toSqlDate($input['credit_date']); $credit->amount = Utils::parseFloat($input['amount']); @@ -57,35 +49,29 @@ class CreditRepository $credit->save(); return $credit; - } + } - public function bulk($ids, $action) - { - if (!$ids) - { + public function bulk($ids, $action) + { + if (!$ids) { return 0; } - $credits = Credit::withTrashed()->scope($ids)->get(); + $credits = Credit::withTrashed()->scope($ids)->get(); - foreach ($credits as $credit) - { - if ($action == 'restore') - { + foreach ($credits as $credit) { + if ($action == 'restore') { $credit->restore(); - } - else - { - if ($action == 'delete') - { + } else { + if ($action == 'delete') { $credit->is_deleted = true; $credit->save(); - } - + } + $credit->delete(); } } return count($credits); - } -} \ No newline at end of file + } +} diff --git a/app/ninja/repositories/InvoiceRepository.php b/app/ninja/repositories/InvoiceRepository.php index 2dbc1359a3a6..f4b7337a262a 100755 --- a/app/ninja/repositories/InvoiceRepository.php +++ b/app/ninja/repositories/InvoiceRepository.php @@ -152,11 +152,11 @@ class InvoiceRepository if ($entityType == ENTITY_INVOICE) { if ($model->invoice_status_id < INVOICE_STATUS_PAID) { - $str .= '