1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-09-20 00:11:35 +02:00

Added check for account data

This commit is contained in:
Hillel Coren 2015-12-09 17:47:14 +02:00
parent 683f66762a
commit 0aca2e7fb4

View File

@ -53,42 +53,69 @@ class CheckData extends Command {
$this->checkBalances(); $this->checkBalances();
$this->checkActivityAccount(); $this->checkAccountData();
$this->info('Done'); $this->info('Done');
} }
private function checkActivityAccount() private function checkAccountData()
{ {
$entityTypes = [ $tables = [
ENTITY_INVOICE, 'activities' => [
ENTITY_CLIENT, ENTITY_INVOICE,
ENTITY_CONTACT, ENTITY_CLIENT,
ENTITY_PAYMENT, ENTITY_CONTACT,
ENTITY_INVITATION, ENTITY_PAYMENT,
ENTITY_INVITATION,
ENTITY_USER
],
'invoices' => [
ENTITY_CLIENT,
ENTITY_USER
],
'payments' => [
ENTITY_INVOICE,
ENTITY_CLIENT,
ENTITY_USER,
ENTITY_INVITATION,
ENTITY_CONTACT
],
'tasks' => [
ENTITY_INVOICE,
ENTITY_CLIENT,
ENTITY_USER
],
'credits' => [
ENTITY_CLIENT,
ENTITY_USER
],
]; ];
foreach ($entityTypes as $entityType) { foreach ($tables as $table => $entityTypes) {
$activities = DB::table('activities') foreach ($entityTypes as $entityType) {
->join("{$entityType}s", "{$entityType}s.id", '=', "activities.{$entityType}_id"); $records = DB::table($table)
->join("{$entityType}s", "{$entityType}s.id", '=', "{$table}.{$entityType}_id");
if ($entityType != ENTITY_CLIENT) { if ($entityType != ENTITY_CLIENT) {
$activities = $activities->join('clients', 'clients.id', '=', 'activities.client_id'); $records = $records->join('clients', 'clients.id', '=', "{$table}.client_id");
} }
$activities = $activities->where('activities.account_id', '!=', DB::raw("{$entityType}s.account_id")) $records = $records->where("{$table}.account_id", '!=', DB::raw("{$entityType}s.account_id"))
->get(['activities.id', "clients.account_id", "clients.user_id"]); ->get(["{$table}.id", "clients.account_id", "clients.user_id"]);
$this->info(count($activities) . " {$entityType} activity with incorrect account id"); if (count($records)) {
$this->info(count($records) . " {$table} records with incorrect {$entityType} account id");
if ($this->option('fix') == 'true') { if ($this->option('fix') == 'true') {
foreach ($activities as $activity) { foreach ($records as $record) {
DB::table('activities') DB::table($table)
->where('id', $activity->id) ->where('id', $record->id)
->update([ ->update([
'account_id' => $activity->account_id, 'account_id' => $record->account_id,
'user_id' => $activity->user_id, 'user_id' => $record->user_id,
]); ]);
}
}
} }
} }
} }