Add import from vCard from inside the application (#407)

This commit is contained in:
Régis Freyd
2017-06-29 21:57:41 -04:00
committed by GitHub
parent 7f76f38184
commit fa190ec382
65 changed files with 1819 additions and 133 deletions
@@ -6,10 +6,13 @@ use Auth;
use App\User;
use Carbon\Carbon;
use App\Invitation;
use App\ImportJob;
use Illuminate\Http\Request;
use App\Helpers\RandomHelper;
use App\Jobs\SendNewUserAlert;
use App\Jobs\ExportAccountAsSQL;
use App\Jobs\AddContactFromVCard;
use App\Http\Requests\ImportsRequest;
use App\Jobs\SendInvitationEmail;
use App\Http\Requests\SettingsRequest;
use Illuminate\Support\Facades\Storage;
@@ -72,6 +75,8 @@ class SettingsController extends Controller
$account->events->each->forceDelete();
$account->contacts->each->forceDelete();
$account->invitations->each->forceDelete();
$account->importjobs->each->forceDelete();
$account->importjobreports->each->forceDelete();
$account->forceDelete();
}
@@ -81,6 +86,35 @@ class SettingsController extends Controller
return redirect('/');
}
/**
* Reset user account
*
* @param Request $request
* @return \Illuminate\Http\Response
*/
public function reset(Request $request)
{
$user = $request->user();
$account = $user->account;
if($account) {
$account->reminders->each->forceDelete();
$account->kids->each->forceDelete();
$account->notes->each->forceDelete();
$account->significantOthers->each->forceDelete();
$account->tasks->each->forceDelete();
$account->activities->each->forceDelete();
$account->events->each->forceDelete();
$account->contacts->each->forceDelete();
$account->invitations->each->forceDelete();
$account->importjobs->each->forceDelete();
$account->importjobreports->each->forceDelete();
}
return redirect('/settings')
->with('status', trans('settings.reset_success'));
}
/**
* Display the export view
*
@@ -105,6 +139,61 @@ class SettingsController extends Controller
->deleteFileAfterSend(true);
}
/**
* Display the import view
*
* @return \Illuminate\Http\Response
*/
public function import()
{
if (auth()->user()->account->importjobs->count() == 0) {
return view('settings.imports.blank');
}
return view('settings.imports.index');
}
/**
* Display the Import people's view.
*
* @return \Illuminate\Http\Response
*/
public function upload()
{
return view('settings.imports.upload');
}
public function storeImport(ImportsRequest $request)
{
$filename = $request->file('vcard')->store('imports', 'public');
$importJob = auth()->user()->account->importjobs()->create([
'user_id' => auth()->user()->id,
'type' => 'vcard',
'filename' => $filename
]);
dispatch(new AddContactFromVCard($importJob));
return redirect()->route('settings.import');
}
/**
* Display the import report view
*
* @return \Illuminate\Http\Response
*/
public function report($importJobId)
{
$importJob = ImportJob::findOrFail($importJobId);
if ($importJob->account_id != auth()->user()->account->id) {
return redirect()->route('settings.index');
}
return view('settings.imports.report', compact('importJob'));
}
/**
* Display the users view
*