-{{__('Account aktiv')}} {{__('bis zum:')}} {{ $user->getPaymentAccountDateFormat() }}
-@else --{{__('Account inaktiv')}}
-@endif -@if($user->payment_shop) --{{__('Shop aktiv')}} {{__('bis zum')}}: {{ $user->getPaymentShopDateFormat() }}
-@else --{{__('Shop inaktiv')}}
-@endif*/ public function getLeads() { @@ -242,22 +308,22 @@ class LeadController extends Controller return ''; }) ->addColumn('confirmed', function (User $user) { - return $user->confirmed ? '' : ''; + return $user->confirmed ? '' : ''; }) ->addColumn('active', function (User $user) { - return $user->active ? ' ' : ''; + return $user->active ? ' ' : ''; }) ->addColumn('agreement', function (User $user) { - return $user->agreement ? ' ' : ''; + return $user->agreement ? ' ' : ''; }) ->addColumn('payment_account', function (User $user) { - return $user->payment_account ? ' ' : ''; + return $user->payment_account ? ' ' : ''; }) ->addColumn('payment_account_date', function (User $user) { return $user->payment_account ? $user->getPaymentAccountDateFormat(false) : "-"; }) ->addColumn('payment_shop', function (User $user) { - return $user->payment_shop ? ' ' : ''; + return $user->payment_shop ? ' ' : ''; }) ->addColumn('payment_shop_date', function (User $user) { return $user->payment_shop ? $user->getPaymentShopDateFormat(false) : "-"; diff --git a/app/Http/Controllers/SalesController.php b/app/Http/Controllers/SalesController.php index eec4ec4..46432c2 100755 --- a/app/Http/Controllers/SalesController.php +++ b/app/Http/Controllers/SalesController.php @@ -73,16 +73,16 @@ class SalesController extends Controller return $ShoppingOrder->user_shop ? ''.$ShoppingOrder->user_shop->getSubdomain().'' : ''; }) ->addColumn('id', function (ShoppingOrder $ShoppingOrder) { - return ''; + return ''; }) /* ->addColumn('confirmed', function (User $user) { - return $user->confirmed ? '' : ''; + return $user->confirmed ? '' : ''; }) ->addColumn('active', function (User $user) { - return $user->active ? ' ' : ''; + return $user->active ? ' ' : ''; }) ->addColumn('agreement', function (User $user) { - return $user->agreement ? ' ' : ''; + return $user->agreement ? ' ' : ''; }) ->orderColumn('confirmed', 'confirmed $1') ->orderColumn('active', 'active $1') @@ -149,16 +149,16 @@ class SalesController extends Controller return $ShoppingOrder->user_shop ? ''.$ShoppingOrder->user_shop->getSubdomain().'' : ''; }) ->addColumn('id', function (ShoppingOrder $ShoppingOrder) { - return ''; + return ''; }) /* ->addColumn('confirmed', function (User $user) { - return $user->confirmed ? '' : ''; + return $user->confirmed ? '' : ''; }) ->addColumn('active', function (User $user) { - return $user->active ? ' ' : ''; + return $user->active ? ' ' : ''; }) ->addColumn('agreement', function (User $user) { - return $user->agreement ? ' ' : ''; + return $user->agreement ? ' ' : ''; }) ->orderColumn('confirmed', 'confirmed $1') ->orderColumn('active', 'active $1') diff --git a/app/Http/Controllers/UserDataController.php b/app/Http/Controllers/UserDataController.php index 07f97d8..696ea79 100755 --- a/app/Http/Controllers/UserDataController.php +++ b/app/Http/Controllers/UserDataController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use App\Repositories\UserRepository; +use App\User; use Auth; use Input; use Validator; @@ -86,7 +87,7 @@ class UserDataController extends Controller */ public function userDataStore(){ - $user = Auth::user(); + $user = User::findOrFail(Auth::user()->id); if(!$user->account){ $user->account = new UserAccount(); } diff --git a/app/Http/Controllers/UserUpdatePasswordController.php b/app/Http/Controllers/UserUpdatePasswordController.php index de2bbd0..a2cf591 100755 --- a/app/Http/Controllers/UserUpdatePasswordController.php +++ b/app/Http/Controllers/UserUpdatePasswordController.php @@ -54,11 +54,11 @@ class UserUpdatePasswordController extends Controller // redirect our user back to the form with the errors from the validator return view('user.update_password')->withErrors($validator); - }else{ - $request->user()->fill([ - 'password' => Hash::make($request->password) - ])->save(); } + $request->user()->fill([ + 'password' => Hash::make($request->password) + ])->save(); + \Session()->flash('alert-save', '1'); return redirect(route('user_update_password')); @@ -67,22 +67,18 @@ class UserUpdatePasswordController extends Controller /** - * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View + * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View */ public function updatePasswordFirst(){ if(!Auth::user()->isPasswort()){ return view('user.update_password_first'); } return redirect(route('user_update_password')); - - - } + /** - * Update the password for the user. - * - * @param Request $request - * @return Response + * @param Request $request + * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View */ public function updatePasswordFirstStore(Request $request) { @@ -100,12 +96,13 @@ class UserUpdatePasswordController extends Controller // redirect our user back to the form with the errors from the validator return view('user.update_password_first')->withErrors($validator); - }else{ - $request->user()->fill([ - 'password' => Hash::make($request->password) - ])->save(); } + $request->user()->fill([ + 'password' => Hash::make($request->password) + ])->save(); + + \Session()->flash('alert-save', '1'); return redirect('/home'); } diff --git a/app/Http/Controllers/Web/CheckoutController.php b/app/Http/Controllers/Web/CheckoutController.php index 4ce826c..7f5005c 100755 --- a/app/Http/Controllers/Web/CheckoutController.php +++ b/app/Http/Controllers/Web/CheckoutController.php @@ -178,7 +178,6 @@ class CheckoutController extends Controller return redirect(route('checkout.checkout_card'))->withInput(Input::all()); } if($ret['elv']['status'] === 'APPROVED' && $ret['elv']['mandate_status'] !== "active"){ - dd($ret); \Session::flash('elv-managemandate', 1); \Session::flash('elv-mandate_identification', $ret['elv']['mandate_identification']); \Session::flash('elv-mandate_text', $ret['elv']['mandate_text']); @@ -198,7 +197,7 @@ class CheckoutController extends Controller if(Input::get('payment_method') === 'elv' && Input::get('mandate_identification')) { $ret['elv']['mandate_identification'] = Input::get('mandate_identification'); $ret['elv']['creditor_identifier'] = Input::get('creditor_identifier'); - $ret['elv']['iban'] = $data['iban']; + $ret['elv']['iban'] = $data['elv_iban']; $ret['elv']['bic'] = $data['elv_bic']; $ret['elv']['bankaccountholder'] = $data['elv_bankaccountholder']; } diff --git a/app/Http/Controllers/Web/ContactController.php b/app/Http/Controllers/Web/ContactController.php index f6713fe..70dcfd2 100755 --- a/app/Http/Controllers/Web/ContactController.php +++ b/app/Http/Controllers/Web/ContactController.php @@ -57,7 +57,8 @@ class ContactController extends Controller $validator = Validator::make(Input::all(), $rules); if ($validator->fails()) { return back()->withErrors($validator)->withErrors($validator)->withInput(Input::all()); - }else{ + } + $contact = []; $contact['first_name'] = Input::get('first_name'); @@ -78,8 +79,6 @@ class ContactController extends Controller 'user_shop' => Util::getUserShop(), ]; return view('web.templates.contact-final', $data); - } - } diff --git a/app/Http/Controllers/Web/RegisterController.php b/app/Http/Controllers/Web/RegisterController.php new file mode 100755 index 0000000..6f7d886 --- /dev/null +++ b/app/Http/Controllers/Web/RegisterController.php @@ -0,0 +1,135 @@ +userRepo = $userRepo; + } + + public function index() + { + + + $data = [ + 'GOOGLE_ReCAPTCHA_KEY' => $this->GOOGLE_ReCAPTCHA_KEY, + 'user_shop' => Util::getUserShop(), + ]; + return view('web.templates.registrierung', $data); + + } + + public function register(){ + + + $rules = array( + 'first_name'=>'required', + 'last_name'=>'required', + 'salutation' => 'required', + 'email' => 'required|string|email|max:255|unique:users', + 'email-confirm' => 'required|same:email', + 'password' => 'required|string|min:6|confirmed', + 'password_confirmation' => 'required|string|min:6', + // 'g-recaptcha-response'=>'required|recaptcha', + 'accepted_data_protection' => 'required', + ); + + /*Validator::extend('recaptcha', function($attribute, $value, $parameters, $validator) { + return $this->reCaptcha_validate($attribute, $value, $parameters, $validator); + });*/ + + $validator = Validator::make(Input::all(), $rules); + if ($validator->fails()) { + return back()->withErrors($validator)->withErrors($validator)->withInput(Input::all()); + } + + $user_shop = Util::getUserShop(); + + $data = Input::all(); + $user = $this->userRepo->create($data); + + $unique = false; + do{ + $confirmation_code = str_random(30); + if(User::where('confirmation_code', '=', $confirmation_code)->count() == 0){ + $unique = true; + } + } + while(!$unique); + + + $user->lang = !empty(\App::getLocale()) ? \App::getLocale() : "de"; + $user->confirmation_code = $confirmation_code; + $user->confirmation_code_to = date('Y-m-d H:i:s', strtotime('+1 week')); + $user->confirmation_code_remider = 0; + $user->m_sponsor = $user_shop->user->id; + $user->m_level = 1; + $user->save(); + + $user->account->data_protection = now(); + $user->account->save(); + + Mail::to($user->email)->send(new MailVerifyAccount($confirmation_code, $user)); + return redirect('/registrierung/finish'); + + + } + + public function finish() + { + $data = [ + 'user_shop' => Util::getUserShop(), + ]; + return view('web.templates.registrierung_finish', $data); + } + /* + private function reCaptcha_validate($attribute, $value, $parameters, $validator) + { + + $client = new Client(); + + $response = $client->post( + 'https://www.google.com/recaptcha/api/siteverify', + ['form_params' => + [ + 'secret' => $this->GOOGLE_ReCAPTCHA_SECRET, + 'response' => $value + ] + ] + ); + + $body = json_decode((string)$response->getBody()); + return $body->success; + } + */ + + +} \ No newline at end of file diff --git a/app/Http/Controllers/Web/SiteController.php b/app/Http/Controllers/Web/SiteController.php index 59586c5..aba969a 100755 --- a/app/Http/Controllers/Web/SiteController.php +++ b/app/Http/Controllers/Web/SiteController.php @@ -63,8 +63,8 @@ class SiteController extends Controller } } - if($site == 'produkte'){ - if($subsite || $subsite != 'alle-produkte') { + if($site === 'produkte'){ + if($subsite || $subsite !== 'alle-produkte') { $category = Category::where('slug', $subsite)->where('active', true)->first(); if ($category) { $headline_image = false; diff --git a/app/Http/Controllers/WizardController.php b/app/Http/Controllers/WizardController.php index bd95985..28fd89e 100755 --- a/app/Http/Controllers/WizardController.php +++ b/app/Http/Controllers/WizardController.php @@ -2,35 +2,46 @@ namespace App\Http\Controllers; +use App\Mail\MailReleaseAccount; +use App\Models\File; use App\Models\Product; use App\Models\ShoppingInstance; use App\Models\UserAccount; +use App\Repositories\FileRepository; use App\Services\Util; +use App\User; use Auth; use Hash; +use Illuminate\Support\Facades\Mail; use Input; use Validator; use Yard; class WizardController extends Controller { + + protected $fileRepo; + + /** * Create a new controller instance. * * @return void */ - public function __construct() + public function __construct(FileRepository $fileRepo) { + $this->fileRepo = $fileRepo; + } - - public function show($step = 0) + public function create() { if(!Auth::check()){ return redirect('login'); } - $user = Auth::user(); + + $user = User::findOrFail(Auth::user()->id); if(!$user->account){ $account = UserAccount::create([]); $user->account_id = $account->id; @@ -38,7 +49,7 @@ class WizardController extends Controller return redirect(route('wizard')); } - $step = (!$user->wizard ? 0 : $user->wizard ); + $step = !$user->wizard ? 0 : $user->wizard; if($step == 10){ return redirect('/'); } @@ -48,18 +59,178 @@ class WizardController extends Controller 'products' => Product::where('active', true)->where('show_at', '=', 3)->orderBy('pos', 'ASC')->get(), ]; - return view('user.wizard.show', $data); + return view('user.wizard.create', $data); } + public function register() + { - public function store($step = 0) + if(!Auth::check()){ + return redirect('login'); + } + $user = User::findOrFail(Auth::user()->id); + if(!$user->account){ + $account = UserAccount::create([]); + $user->account_id = $account->id; + $user->save(); + return redirect(route('wizard')); + } + + $step = !$user->wizard ? 0 : $user->wizard; + + if($step == 10){ + return redirect('/'); + } + $data = [ + 'user' => Auth::user(), + 'step' => $step, + 'products' => Product::where('active', true)->where('show_at', '=', 3)->orderBy('pos', 'ASC')->get(), + ]; + if($step == 5){ + return view('user.wizard.register_release', $data); + } + + return view('user.wizard.register', $data); + } + + public function storeRegister($step = false) + { + + if (!Auth::check()) { + return redirect('login'); + } + + $user = User::findOrFail(Auth::user()->id); + if (!$user->account) { + $user->account = new UserAccount(); + } + + if ($step == 0) { + + $rules = array( + 'accepted_data_protection' => 'required', + 'accepted_active' => 'required', + ); + $validator = Validator::make(Input::all(), $rules); + if ($validator->fails()) { + $data = [ + 'user' => Auth::user(), + 'step' => $step, + 'products' => Product::where('active', true)->where('show_at', '=', 3)->orderBy('pos', 'ASC')->get(), + ]; + $user->wizard = 0; + $user->save(); + return view('user.wizard.register', $data)->withErrors($validator); + } + $account = $user->account; + if($account->data_protection === null){ + $account->data_protection = now(); + } + if($user->agreement === null){ + $user->agreement = now(); + } + $user->wizard = 1; + $user->save(); + return redirect(route('wizard_register')); + } + if ($step == 1) { + $rules = array( + 'salutation' => 'required', + 'first_name' => 'required', + 'last_name' => 'required', + 'address' => 'required', + 'zipcode' => 'required', + 'city' => 'required', + 'phone' => 'required_without:mobil', + 'mobil' => 'required_without:phone', + 'country_id' => 'required|integer|min:1', + 'birthday' => 'required', + ); + + if (!Input::get('same_as_billing')) { + $rules = array_merge($rules, [ + 'shipping_firstname' => 'required', + 'shipping_lastname' => 'required', + 'shipping_address' => 'required', + 'shipping_zipcode' => 'required', + 'shipping_city' => 'required', + 'shipping_salutation' => 'required', + 'shipping_country_id' => 'required|integer|min:1', + ]); + } + $validator = Validator::make(Input::all(), $rules); + if ($validator->fails()) { + $user->wizard = 1; + $user->save(); + return redirect(route('wizard_register', [1]))->withErrors($validator)->withInput(Input::all()); + } + $data = Input::all(); + $data['same_as_billing'] = Input::get('same_as_billing') == NULL ? 0 : 1; + $user->account->fill($data)->save(); + $user->wizard = 2; + $user->save(); + return redirect(route('wizard_register')); + } + + if ($step == 2) { + if(Input::get('submit') === 'do'){ + if(File::whereUserId($user->id)->whereIdentifier('id_card')->count() == 0){ + $validator = Validator::make(Input::all(), []); + $validator->errors()->add('field', __('Kein Ausweis hinterlegt, bitte erst hochladen.')); + $user->wizard = 2; + $user->save(); + return redirect(route('wizard_register'))->withErrors($validator)->withInput(Input::all()); + } + $user->wizard = 3; + $user->save(); + return redirect(route('wizard_register')); + } + $this->fileRepo->_set('disk', 'user'); + $this->fileRepo->_set('dir', '/'.$user->id.'/verification/'); + $this->fileRepo->_set('user_id', $user->id); + $this->fileRepo->_set('identifier', 'id_card'); + return $this->fileRepo->uploadFile(Input::all()); + } + + if ($step == 3) { + if(Input::get('submit') === 'do'){ + if(File::whereUserId($user->id)->whereIdentifier('business_license')->count() == 0){ + $validator = Validator::make(Input::all(), []); + $validator->errors()->add('field', __('Kein Gewerbeschein hinterlegt, bitte erst hochladen.')); + $user->wizard = 3; + $user->save(); + return redirect(route('wizard_register'))->withErrors($validator)->withInput(Input::all()); + } + $user->wizard = 4; + $user->save(); + return redirect(route('wizard_register')); + } + $this->fileRepo->_set('disk', 'user'); + $this->fileRepo->_set('dir', '/'.$user->id.'/verification/'); + $this->fileRepo->_set('user_id', $user->id); + $this->fileRepo->_set('identifier', 'business_license'); + return $this->fileRepo->uploadFile(Input::all()); + } + + if ($step == 4) { + + $user->wizard = 5; + $user->release_account = now(); + $user->save(); + Mail::to('kevin@adametz.media')->bcc(['kevin.adametz@me.com'])->send(new MailReleaseAccount($user)); + + return redirect(route('wizard_register')); + } + } + + public function storeCreate($step = 0) { if(!Auth::check()){ return redirect('login'); } - $user = Auth::user(); + $user = User::findOrFail(Auth::user()->id); if(!$user->account){ $user->account = new UserAccount(); } @@ -76,6 +247,7 @@ class WizardController extends Controller 'step' => $step, ]; return view('user.wizard.show', $data)->withErrors($validator); + } $account = $user->account; $account->data_protection = now(); @@ -207,9 +379,21 @@ class WizardController extends Controller \Session()->flash('alert-error', "Fehler beim Produkt"); return redirect(route('wizard', [3])); } - - - } + + public function delete($id, $relation){ + + if($relation === 'upload'){ + $user = User::findOrFail(Auth::user()->id); + $file = $user->files()->findOrFail($id); + //remove file + \Storage::disk('user')->delete($file->dir.$file->filename); + $file->delete(); + \Session()->flash('alert-success', "Datei gelöscht"); + } + return back(); + } + + } \ No newline at end of file diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php index 8b409af..d908246 100644 --- a/app/Http/Middleware/Authenticate.php +++ b/app/Http/Middleware/Authenticate.php @@ -46,15 +46,25 @@ class Authenticate return redirect(route('user_blocked')); } - //is wizard - if(in_array('user', $guards) && $this->auth->user()->wizard < 5){ - return redirect(route('wizard')); - } - //can use wizard < 10 to repay - if(in_array('user', $guards) && $this->auth->user()->wizard < 10){ - //return redirect(route('wizard')); + //100 wizzard is finish + if(in_array('user', $guards) && $this->auth->user()->wizard !== 100){ + //0-10 == start wizard form register + if(in_array('user', $guards) && $this->auth->user()->wizard < 10){ + return redirect(route('wizard_register')); + } + //10-20 == start wizard form create Lead + if(in_array('user', $guards) && $this->auth->user()->wizard < 20){ + return redirect(route('wizard_create')); + } + //is wizard + /*if(in_array('user', $guards) && $this->auth->user()->wizard < 5){ + return redirect(route('wizard')); + } + */ } + + return $next($request); } diff --git a/app/Libraries/ContractPDF.php b/app/Libraries/ContractPDF.php new file mode 100644 index 0000000..a3260d1 --- /dev/null +++ b/app/Libraries/ContractPDF.php @@ -0,0 +1,29 @@ +_tplIdx) { + $this->setSourceFile('./pdf/mivita_template_contract_de.pdf'); + } + $this->_tplIdx = $this->importPage($this->_site++); + $this->useTemplate($this->_tplIdx); + + } + + function Footer() { + + } // end of footer + + + +} diff --git a/app/Mail/MailAccountActive.php b/app/Mail/MailAccountActive.php new file mode 100644 index 0000000..1c4b3d2 --- /dev/null +++ b/app/Mail/MailAccountActive.php @@ -0,0 +1,48 @@ +user = $user; + $this->subject = __('email.account_active'); + } + + + public function build() + { + $salutation = __('email.salutation').","; + if($this->user->account){ + if($this->user->account->salutation === "mr"){ + $salutation = __('email.dear_sir')." ".$this->user->account->first_name.","; + }else{ + $salutation = __('email.dear_mrs')." ".$this->user->account->first_name.","; + } + } + return $this->view('emails.auth')->with([ + 'url' => route('login'), + 'salutation' => $salutation, + 'button' => __('Login'), + 'copy1line' => __('email.account_active_copy1line'), + 'copy2line' => __('email.copy2line'), + 'copy3line' => __('email.copy3line'), + 'greetings' => __('email.greetings'), + 'sender' => __('email.sender'), + + ]); + } +} \ No newline at end of file diff --git a/app/Mail/MailActivateUser.php b/app/Mail/MailActivateUser.php index e3cdb81..016cfa1 100644 --- a/app/Mail/MailActivateUser.php +++ b/app/Mail/MailActivateUser.php @@ -12,6 +12,7 @@ class MailActivateUser extends Mailable use Queueable, SerializesModels; protected $token; + protected $user; public $subject; public function __construct($token, User $user) @@ -25,7 +26,7 @@ class MailActivateUser extends Mailable $salutation = __('email.salutation').","; if($this->user->account){ - if($this->user->account->salutation == "mr"){ + if($this->user->account->salutation === "mr"){ $salutation = __('email.dear_sir')." ".$this->user->account->first_name.","; }else{ $salutation = __('email.dear_mrs')." ".$this->user->account->first_name.","; diff --git a/app/Mail/MailCheckout.php b/app/Mail/MailCheckout.php index 43cfe35..0a944ce 100644 --- a/app/Mail/MailCheckout.php +++ b/app/Mail/MailCheckout.php @@ -41,7 +41,7 @@ class MailCheckout extends Mailable $salutation = __('email.hello')." ".$this->shopping_order->shopping_user->billing_firstname.","; //make Adresse } - if($this->txaction == 'paid'){ + if($this->txaction === 'paid'){ return $this->view('emails.checkout')->with([ 'salutation' => $salutation, 'copy1line' => __('email.checkout_copy1line'), diff --git a/app/Mail/MailReleaseAccount.php b/app/Mail/MailReleaseAccount.php new file mode 100644 index 0000000..49869d8 --- /dev/null +++ b/app/Mail/MailReleaseAccount.php @@ -0,0 +1,64 @@ +user = $user; + $this->subject = 'Berater Registrierung pürfen'; + } + + + public function build() + { + $content = __(strtoupper($this->user->account->salutation))." "; + $content .= $this->user->account->first_name." ".$this->user->account->last_name."\n"; + $content .= $this->user->account->address."\n"; + $content .= $this->user->account->zipcode." ".$this->user->account->city."\n"; + $content .= $this->user->account->country_id ? $this->user->account->country->de."\n\n" : "\n\n"; + if($this->user->account->phone){ + $content .= "Telefon: "; + $content .= $this->user->account->pre_phone_id ? $this->user->account->pre_phone->phone." " : " "; + $content .= $this->user->account->phone; + } + if($this->user->account->mobil){ + $content .= "Mobil: "; + $content .= $this->user->account->pre_mobil_id ? $this->user->account->pre_mobil->phone." " : " "; + $content .= $this->user->account->mobil; + } + $content .= "E-Mail: ".$this->user->email; + + + $copy1line = "Ein neuer Berater hat sich Registriert und wartet auf die Überprüfung und Freigabe seiner Daten."."\n"; + $copy1line .= "+ Überprüfung Ausweisdaten"."\n"; + $copy1line .= "+ Überprüfung Gewerbenachweis"."\n"; + $copy1line .= "+ Eintrag Account ID"."\n"; + $copy1line .= "+ Überprüfung Karriere-Level/Sponsor"."\n"; + $copy1line .= "+ Überprüfung Rechnungsdaten"."\n"; + + $copy1line .= 'Nach erfolgreicher Überprüfung mit dem Button "Daten vollständigt => Berater freischalten" den Berater freischalten.'."\n"; + $copy1line .= 'Der Berater erhält eine Mail, dass sein Account freigeschaltet worden ist. In den Vertrag wird automatisch mit den eingetragenden Inhalten erstellt.'."\n"; + + return $this->view('emails.info')->with([ + 'url' => route('admin_lead_edit', $this->user->id).'?show=check_lead', + 'salutation' => 'Berater Registrierung pürfen', + 'button' => 'zur Berater Prüfung', + 'copy1line' => $copy1line, + 'copy2line' => __('email.copy2line'), + 'content' => $content, + ]); + } +} \ No newline at end of file diff --git a/app/Mail/MailResetPassword.php b/app/Mail/MailResetPassword.php index b17a1f1..29fabc1 100644 --- a/app/Mail/MailResetPassword.php +++ b/app/Mail/MailResetPassword.php @@ -12,6 +12,7 @@ class MailResetPassword extends Mailable use Queueable, SerializesModels; protected $token; + protected $user; public $subject; @@ -29,7 +30,7 @@ class MailResetPassword extends Mailable { $salutation = __('email.salutation').","; if($this->user->account){ - if($this->user->account->salutation == "mr"){ + if($this->user->account->salutation === "mr"){ $salutation = __('email.dear_sir')." ".$this->user->account->first_name.","; }else{ $salutation = __('email.dear_mrs')." ".$this->user->account->first_name.","; diff --git a/app/Mail/MailVerifyAccount.php b/app/Mail/MailVerifyAccount.php index 788c3dc..1204615 100644 --- a/app/Mail/MailVerifyAccount.php +++ b/app/Mail/MailVerifyAccount.php @@ -12,6 +12,7 @@ class MailVerifyAccount extends Mailable use Queueable, SerializesModels; protected $confirmation_code; + protected $user; public $subject; @@ -26,9 +27,8 @@ class MailVerifyAccount extends Mailable public function build() { $salutation = __('email.salutation').","; - if($this->user->account){ - if($this->user->account->salutation == "mr"){ + if($this->user->account->salutation === "mr"){ $salutation = __('email.dear_sir')." ".$this->user->account->first_name.","; }else{ $salutation = __('email.dear_mrs')." ".$this->user->account->first_name.","; @@ -39,8 +39,8 @@ class MailVerifyAccount extends Mailable 'salutation' => $salutation, 'button' => __('email.email_verify'), 'copy1line' => __('email.email_verify_copy1line'), - 'copy2line' => __('email.active_copy2line'), - 'copy3line' => __('email.active_copy3line'), + 'copy2line' => __('email.copy2line'), + 'copy3line' => __('email.copy3line'), 'greetings' => __('email.greetings'), 'sender' => __('email.sender'), diff --git a/app/Mail/MailVerifyContact.php b/app/Mail/MailVerifyContact.php index d7d247f..813d745 100644 --- a/app/Mail/MailVerifyContact.php +++ b/app/Mail/MailVerifyContact.php @@ -12,6 +12,7 @@ class MailVerifyContact extends Mailable use Queueable, SerializesModels; protected $confirmation_code; + protected $user; public $subject; @@ -27,7 +28,7 @@ class MailVerifyContact extends Mailable { $salutation = __('email.salutation').","; if($this->user->account){ - if($this->user->account->salutation == "mr"){ + if($this->user->account->salutation === "mr"){ $salutation = __('email.dear_sir')." ".$this->user->account->first_name.","; }else{ $salutation = __('email.dear_mrs')." ".$this->user->account->first_name.","; diff --git a/app/Models/File.php b/app/Models/File.php new file mode 100644 index 0000000..4622da0 --- /dev/null +++ b/app/Models/File.php @@ -0,0 +1,70 @@ + 'int', + 'size' => 'int' + ]; + + protected $fillable = [ + 'user_id', + 'identifier', + 'filename', + 'dir', + 'original_name', + 'ext', + 'mine', + 'size' + ]; + + public function user() + { + return $this->belongsTo(User::class); + } + + public function formatBytes($precision = 2) + { + $size = $this->size; + + if ($size > 0) { + $size = (int) $size; + $base = log($size) / log(1024); + $suffixes = array(' bytes', ' KB', ' MB', ' GB', ' TB'); + + return round(pow(1024, $base - floor($base)), $precision) . $suffixes[floor($base)]; + } else { + return $size; + } + } +} diff --git a/app/Models/ShoppingPayment.php b/app/Models/ShoppingPayment.php index fe705ed..f25a5db 100644 --- a/app/Models/ShoppingPayment.php +++ b/app/Models/ShoppingPayment.php @@ -66,19 +66,22 @@ class ShoppingPayment extends Model public function getPaymentType(){ - if($this->clearingtype == 'wlt') { - if ($this->wallettype == 'PPE') { + if($this->clearingtype === 'wlt') { + if ($this->wallettype === 'PPE') { return 'PayPal'; } } - if($this->clearingtype == 'cc') { + if($this->clearingtype === 'cc') { return 'Kreditkarte'; } - if($this->clearingtype == 'vor') { + if($this->clearingtype === 'vor') { return 'Vorkasse'; } - if($this->clearingtype == 'sb') { - if ($this->onlinebanktransfertype == 'PNT') { + if($this->clearingtype === 'elv') { + return 'SEPA Lastschrift'; + } + if($this->clearingtype === 'sb') { + if ($this->onlinebanktransfertype === 'PNT') { return 'Sofort Überweisung'; } } diff --git a/app/Models/ShoppingUser.php b/app/Models/ShoppingUser.php index 749104f..f9f917d 100644 --- a/app/Models/ShoppingUser.php +++ b/app/Models/ShoppingUser.php @@ -69,6 +69,10 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereShippingZipcode($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereUpdatedAt($value) * @mixin \Eloquent + * @property int|null $orders + * @property-read \App\Models\ShoppingOrder $shopping_order + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ShoppingOrder[] $shopping_orders + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereOrders($value) */ class ShoppingUser extends Model { diff --git a/app/Models/UserAccount.php b/app/Models/UserAccount.php index c1b266a..3d2b0d7 100644 --- a/app/Models/UserAccount.php +++ b/app/Models/UserAccount.php @@ -101,6 +101,18 @@ use Carbon\Carbon; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserAccount whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserAccount whereWebsite($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserAccount whereZipcode($value) + * @property string|null $m_account + * @property string|null $m_salutation + * @property string|null $m_first_name + * @property string|null $m_last_name + * @property string|null $m_notes + * @property int|null $taxable_sales + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserAccount whereMAccount($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserAccount whereMFirstName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserAccount whereMLastName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserAccount whereMNotes($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserAccount whereMSalutation($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserAccount whereTaxableSales($value) */ class UserAccount extends Model { diff --git a/app/Models/UserLevel.php b/app/Models/UserLevel.php index 61ec277..d752aa7 100644 --- a/app/Models/UserLevel.php +++ b/app/Models/UserLevel.php @@ -4,6 +4,30 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; +/** + * App\Models\UserLevel + * + * @property int $id + * @property string $name + * @property array|null $trans_name + * @property float|null $margin + * @property int|null $pos + * @property int $active + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserLevel newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserLevel newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserLevel query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserLevel whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserLevel whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserLevel whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserLevel whereMargin($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserLevel whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserLevel wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserLevel whereTransName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserLevel whereUpdatedAt($value) + * @mixin \Eloquent + */ class UserLevel extends Model { protected $table = 'user_levels'; diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 1896fb1..4c28646 100755 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -24,6 +24,7 @@ class AppServiceProvider extends ServiceProvider */ public function register() { + if ($this->app->environment() !== 'production') { $this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class); } diff --git a/app/Repositories/ContractPDFRepository.php b/app/Repositories/ContractPDFRepository.php new file mode 100644 index 0000000..f6ee7f7 --- /dev/null +++ b/app/Repositories/ContractPDFRepository.php @@ -0,0 +1,144 @@ +model = $model; + } + + public function _set($name, $value){ + $this->{$name} = $value; + } + + public function createContractPDF() { + + $pdf = new ContractPDF(); + + $pdf->AddPage('P', array(210, 297)); + $pdf->SetFont('Helvetica', '', 11); + $pdf->SetDrawColor(160, 160, 160); + + $x1 = 16.5; + $x2 = 109; + $y = 70; + $nl = 17.5; + $pdf->SetXY($x1, $y); + $pdf->Write(0, $this->model->account->m_account); + $pdf->SetXY($x2, $y); + $pdf->Write(0, now()->format("d.m.Y")); + + $y += $nl; + $pdf->SetXY($x1, $y); + $pdf->Write(0, $this->model->account->company); + $pdf->SetXY($x2, $y); + $pre = $this->model->account->pre_phone_id != "" ? $this->model->account->pre_phone->phone." " : ""; + $pdf->Write(0, $pre.$this->model->account->phone); + + $y += $nl; + $pdf->SetXY($x1, $y); + $pdf->Write(0, $this->model->account->m_first_name); + $pdf->SetXY($x2, $y); + $pre = $this->model->account->pre_mobil_id != "" ? $this->model->account->pre_mobil->phone." " : ""; + $pdf->Write(0, $pre.$this->model->account->mobil); + + $y += $nl; + $pdf->SetXY($x1, $y); + $pdf->Write(0, $this->model->account->m_last_name); + $pdf->SetXY($x2, $y); + $pdf->Write(0, $this->model->email); + + $y += $nl; + $pdf->SetXY($x1, $y); + $pdf->Write(0, $this->model->account->address); + $pdf->SetXY($x2, $y); + $pdf->Write(0, $this->model->account->birthday); + + $y += $nl; + $pdf->SetXY($x1, $y); + $pdf->Write(0, $this->model->account->zipcode." ".$this->model->account->city); + + $y += $nl; + $pdf->SetXY($x1, $y); + $pre = $this->model->account->country_id ? $this->model->account->country->de." " : ""; + $pdf->Write(0, $pre); + + if($this->model->m_sponsor){ + + $y += 48; + $pdf->SetXY($x1, $y); + $pdf->Write(0, $this->model->user_sponsor->account->company); + $pdf->SetXY($x2, $y); + $pdf->Write(0, $this->model->user_sponsor->account->m_account); + + $y += $nl; + $pdf->SetXY($x1, $y); + $pdf->Write(0, $this->model->user_sponsor->account->m_first_name." ".$this->model->user_sponsor->account->m_last_name); + + $website = $this->model->user_sponsor->shop()->count() ? $this->model->user_sponsor->shop->getSubdomain() : "www.mivita.care"; + + }else{ + $website = "www.mivita.care"; + } + + $pdf->AddPage('P', array(210, 297)); + $pdf->SetFont('Helvetica', '', 10); + $pdf->SetDrawColor(160, 160, 160); + $pdf->SetXY(52, 56); + $pdf->Write(0, $website); + + + $pdf->SetXY($x1, 65); + $pdf->Write(0, $this->model->account->m_first_name." ".$this->model->account->m_last_name); + $pdf->SetXY($x2, 65); + $pdf->Write(0, $this->model->account->m_account); + + $pdf->AddPage('P', array(210, 297)); + + + if(!Storage::disk($this->disk)->exists( $this->dir )){ + Storage::disk($this->disk)->makeDirectory($this->dir); //creates directory + } + $filename = "MIVITA_Beratervertrag.pdf"; + Storage::disk($this->disk)->put($this->dir.$filename, $pdf->Output('S')); + $size = Storage::disk($this->disk)->size($this->dir.$filename); + $mine = Storage::disk($this->disk)->getMimeType($this->dir.$filename); + + File::create([ + 'user_id' => $this->model->id, + 'identifier' => $this->identifier, + 'filename' => $filename, + 'dir' => $this->dir, + 'original_name' => $filename, + 'ext' => "pdf", + 'mine' => $mine, + 'size' => $size + ]); + + return true; + + } +} \ No newline at end of file diff --git a/app/Repositories/FileRepository.php b/app/Repositories/FileRepository.php new file mode 100644 index 0000000..399eac9 --- /dev/null +++ b/app/Repositories/FileRepository.php @@ -0,0 +1,141 @@ +model = $model; + + $this->rules = [ + 'file' => 'required|mimes:pdf,jpeg,png|max:32768' + ]; + $this->messages = [ + 'file.mimes' => 'Datei ist kein PDF Format', + 'file.required' => 'PDF-Datei wird benötigt' + ]; + } + + public function _set($name, $value){ + $this->{$name} = $value; + } + + /* public function load($id){ + $this->model = $id; + } + */ + + + public function uploadFile( $form_data ) + { + + $validator = Validator::make($form_data, $this->rules, $this->messages); + + if ($validator->fails()) { + return Response::json([ + 'error' => true, + 'message' => $validator->messages()->first(), + 'code' => 400 + ], 400); + } + $file = $form_data['file']; + + $originalName = $file->getClientOriginalName(); + $extension = $file->getClientOriginalExtension(); + $mine = $file->getClientMimeType(); + $size = $file->getClientSize(); + + + $originalNameWithoutExt = substr($originalName, 0, strlen($originalName) - strlen($extension) - 1); + $filename = Util::sanitize($originalNameWithoutExt, true, false, true); + $allowed_filename = uniqid() . '_' . $filename.".".$extension; + + //$dir = $this->model->getInvoiceStorageAttDir(); + + if(!Storage::disk($this->disk)->exists( $this->dir )){ + Storage::disk($this->disk)->makeDirectory($this->dir); //creates directory + } + Storage::disk($this->disk)->put($this->dir.$allowed_filename, file_get_contents($file->getRealPath())); + + File::create([ + 'user_id' => $this->user_id, + 'identifier' => $this->identifier, + 'filename' => $allowed_filename, + 'dir' => $this->dir, + 'original_name' => $originalName, + 'ext' => $extension, + 'mine' => $mine, + 'size' => $size + ]); + + return Response::json([ + 'error' => false, + 'filename' => $allowed_filename, + 'filedata' => 'pdf', + 'redirect' => route('wizard_register'), + 'code' => 200 + ], 200); + } + + /* public function createFile(Request $request) + { + $locale = \App::getLocale(); + $data = [ + 'step' => 2, + 'locale' => $locale, + ]; + $rules = array( + 'network_name' => 'required|max:255', + 'input_file_now' => 'required|mimes:png,pdf,jpg,jpeg|max:30000' + ); + $validator = Validator::make(Input::all(), $rules); + + if ($validator->fails()) { + // get the error messages from the validator + $messages = $validator->messages(); + // redirect our user back to the form with the errors from the validator + return view('user.register_complete', $data)->withErrors($validator); + + } else { + $user = \Auth::user(); + if(!$user->account->network_name){ + $file = request()->file('input_file_now'); + //$ext = $file->guessClientExtension(); + //$file->storeAs('user/' . $user->id .'/verification'); + $data = $file->store('user/' . $user->id .'/verification'); + $account = $user->account; + $account->network_name = Input::get('network_name'); + $account->network_verification = basename($data); + $account->save(); + + $user->role_id = 2; //set as User by default! + $user->save(); + + + } + + return redirect('complete_register'); + //return view('user.register_complete', $data); + } + }*/ + + +} \ No newline at end of file diff --git a/app/Repositories/UserRepository.php b/app/Repositories/UserRepository.php index 59db54e..bfa7fa3 100644 --- a/app/Repositories/UserRepository.php +++ b/app/Repositories/UserRepository.php @@ -4,6 +4,8 @@ namespace App\Repositories; use App\Models\UserAccount; use App\User; +use Illuminate\Support\Facades\Hash; + class UserRepository extends BaseRepository { @@ -15,6 +17,7 @@ class UserRepository extends BaseRepository { } + public function update($data) { @@ -44,7 +47,30 @@ class UserRepository extends BaseRepository { $this->model->save(); } - return; + return true; + } + + public function create($data){ + + $this->model = User::create([ + 'email' => $data['email'], + 'password' => Hash::make($data['password']), + ]); + + $account = UserAccount::create([ + 'm_salutation' => $data['salutation'], + 'm_first_name' => $data['first_name'], + 'm_last_name' => $data['last_name'], + 'salutation' => $data['salutation'], + 'first_name' => $data['first_name'], + 'last_name' => $data['last_name'], + ]); + + $this->model->account_id = $account->id; + $this->model->save(); + + + return $this->model; } public function deleteUser(User $user) diff --git a/app/Services/Util.php b/app/Services/Util.php index a080342..b5c4657 100644 --- a/app/Services/Util.php +++ b/app/Services/Util.php @@ -120,5 +120,24 @@ class Util } return url($uri); } + public static function sanitize($string, $force_lowercase = true, $anal = false, $substr = false) + { + $strip = array("~", "`", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "=", "+", "[", "{", "]", + "}", "\\", "|", ";", ":", "\"", "'", "‘", "’", "“", "”", "–", "—", + "—", "–", ",", "<", ".", ">", "/", "?"); + $clean = trim(str_replace($strip, "", strip_tags($string))); + $clean = preg_replace('/\s+/', "_", $clean); + $clean = ($anal) ? preg_replace("/[^a-zA-Z0-9]/", "", $clean) : $clean ; + + if($substr){ + $clean = (strlen($clean) > 20) ? substr($clean,-20) : $clean; + + } + return ($force_lowercase) ? + (function_exists('mb_strtolower')) ? + mb_strtolower($clean, 'UTF-8') : + strtolower($clean) : + $clean; + } } \ No newline at end of file diff --git a/app/User.php b/app/User.php index e67d2ba..b160749 100755 --- a/app/User.php +++ b/app/User.php @@ -80,6 +80,12 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @method static \Illuminate\Database\Eloquent\Builder|\App\User wherePaymentAccount($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\User wherePaymentShop($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereWizard($value) + * @property int|null $m_level + * @property int|null $m_sponsor + * @property-read \App\Models\UserLevel|null $user_level + * @property-read \App\User|null $user_sponsor + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereMLevel($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereMSponsor($value) */ class User extends Authenticatable { @@ -110,13 +116,11 @@ class User extends Authenticatable ]; - public function account() - { + public function account(){ return $this->belongsTo('App\Models\UserAccount', 'account_id'); } - public function user_level() - { + public function user_level(){ return $this->belongsTo('App\Models\UserLevel', 'm_level'); } @@ -125,7 +129,10 @@ class User extends Authenticatable } + public function files(){ + return $this->hasMany('App\Models\File', 'user_id', ''); + } public function shop() { @@ -203,6 +210,42 @@ class User extends Authenticatable + public function isActiveAccount(){ + return $this->payment_account ? Carbon::parse($this->payment_account)->gt(Carbon::now()) : false; + } + + public function isActiveShop(){ + return $this->payment_shop ? Carbon::parse($this->payment_shop)->gt(Carbon::now()) : false; + } + + + public function daysActiveAccount(){ + return Carbon::now()->diffInDays(Carbon::parse($this->payment_account), false); + } + + public function modifyActiveAccount($add = "1 year"){ + return Carbon::parse($this->payment_account)->modify($add)->format(\Util::formatDateTimeDB()); + } + + public function daysHumansActiveAccount(){ + Carbon::setLocale(\App::getLocale()); + return Carbon::now()->diffForHumans(Carbon::parse($this->payment_account)); + } + + public function daysActiveShop(){ + return Carbon::now()->diffInDays(Carbon::parse($this->payment_shop), false); + } + + public function modifyActiveShop($add = "1 year"){ + return Carbon::parse($this->payment_shop)->modify($add)->format(\Util::formatDateTimeDB()); + } + + public function daysHumansActiveShop(){ + Carbon::setLocale(\App::getLocale()); + return Carbon::now()->diffForHumans(Carbon::parse($this->payment_shop)); + } + + /** * @return string */ @@ -244,6 +287,16 @@ class User extends Authenticatable return Carbon::parse($this->attributes['payment_shop'])->format(\Util::formatDateTimeDB()); } + public function getReleaseAccountFormat($time = true){ + if(!$this->attributes['release_account']){ return ""; } + if(!$time){ + return Carbon::parse($this->attributes['release_account'])->format(\Util::formatDateDB()); + } + return Carbon::parse($this->attributes['release_account'])->format(\Util::formatDateTimeDB()); + } + + + /** diff --git a/app/helpers.php b/app/helpers.php index f57e38d..51deb2c 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -6,3 +6,4 @@ if (! function_exists('make_old_url')) { return config('app.old_url').$path; } } + diff --git a/bootstrap/cache/packages.php b/bootstrap/cache/packages.php index d1b72a8..8039db4 100644 --- a/bootstrap/cache/packages.php +++ b/bootstrap/cache/packages.php @@ -108,15 +108,11 @@ 0 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider', ), ), - 'vladrub/laravel-datatables-oracle' => + 'reliese/laravel' => array ( 'providers' => array ( - 0 => 'Yajra\\DataTables\\DataTablesServiceProvider', - ), - 'aliases' => - array ( - 'DataTables' => 'Yajra\\DataTables\\Facades\\DataTables', + 0 => 'Reliese\\Coders\\CodersServiceProvider', ), ), 'yajra/laravel-datatables-oracle' => diff --git a/bootstrap/cache/services.php b/bootstrap/cache/services.php index 3dfd5f6..840a234 100644 --- a/bootstrap/cache/services.php +++ b/bootstrap/cache/services.php @@ -35,20 +35,21 @@ 31 => 'Collective\\Html\\HtmlServiceProvider', 32 => 'Maatwebsite\\Excel\\ExcelServiceProvider', 33 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider', - 34 => 'Yajra\\DataTables\\DataTablesServiceProvider', + 34 => 'Reliese\\Coders\\CodersServiceProvider', 35 => 'Yajra\\DataTables\\DataTablesServiceProvider', - 36 => 'Laravel\\Tinker\\TinkerServiceProvider', - 37 => 'App\\Providers\\AppServiceProvider', - 38 => 'App\\Providers\\AuthServiceProvider', - 39 => 'App\\Providers\\EventServiceProvider', - 40 => 'App\\Providers\\RouteServiceProvider', - 41 => 'Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider', - 42 => 'Jenssegers\\Date\\DateServiceProvider', - 43 => 'Collective\\Html\\HtmlServiceProvider', - 44 => 'Intervention\\Image\\ImageServiceProvider', - 45 => 'Maatwebsite\\Excel\\ExcelServiceProvider', - 46 => 'Yajra\\DataTables\\DataTablesServiceProvider', - 47 => 'App\\Providers\\YardServiceProvider', + 36 => 'Reliese\\Coders\\CodersServiceProvider', + 37 => 'Laravel\\Tinker\\TinkerServiceProvider', + 38 => 'App\\Providers\\AppServiceProvider', + 39 => 'App\\Providers\\AuthServiceProvider', + 40 => 'App\\Providers\\EventServiceProvider', + 41 => 'App\\Providers\\RouteServiceProvider', + 42 => 'Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider', + 43 => 'Jenssegers\\Date\\DateServiceProvider', + 44 => 'Collective\\Html\\HtmlServiceProvider', + 45 => 'Intervention\\Image\\ImageServiceProvider', + 46 => 'Maatwebsite\\Excel\\ExcelServiceProvider', + 47 => 'Yajra\\DataTables\\DataTablesServiceProvider', + 48 => 'App\\Providers\\YardServiceProvider', ), 'eager' => array ( @@ -71,16 +72,15 @@ 16 => 'Laracasts\\Flash\\FlashServiceProvider', 17 => 'Maatwebsite\\Excel\\ExcelServiceProvider', 18 => 'Yajra\\DataTables\\DataTablesServiceProvider', - 19 => 'Yajra\\DataTables\\DataTablesServiceProvider', - 20 => 'App\\Providers\\AppServiceProvider', - 21 => 'App\\Providers\\AuthServiceProvider', - 22 => 'App\\Providers\\EventServiceProvider', - 23 => 'App\\Providers\\RouteServiceProvider', - 24 => 'Jenssegers\\Date\\DateServiceProvider', - 25 => 'Intervention\\Image\\ImageServiceProvider', - 26 => 'Maatwebsite\\Excel\\ExcelServiceProvider', - 27 => 'Yajra\\DataTables\\DataTablesServiceProvider', - 28 => 'App\\Providers\\YardServiceProvider', + 19 => 'App\\Providers\\AppServiceProvider', + 20 => 'App\\Providers\\AuthServiceProvider', + 21 => 'App\\Providers\\EventServiceProvider', + 22 => 'App\\Providers\\RouteServiceProvider', + 23 => 'Jenssegers\\Date\\DateServiceProvider', + 24 => 'Intervention\\Image\\ImageServiceProvider', + 25 => 'Maatwebsite\\Excel\\ExcelServiceProvider', + 26 => 'Yajra\\DataTables\\DataTablesServiceProvider', + 27 => 'App\\Providers\\YardServiceProvider', ), 'deferred' => array ( @@ -191,6 +191,7 @@ 'Collective\\Html\\HtmlBuilder' => 'Collective\\Html\\HtmlServiceProvider', 'Collective\\Html\\FormBuilder' => 'Collective\\Html\\HtmlServiceProvider', 'NunoMaduro\\Collision\\Contracts\\Provider' => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider', + 'Reliese\\Coders\\Model\\Factory' => 'Reliese\\Coders\\CodersServiceProvider', ), 'when' => array ( @@ -242,5 +243,8 @@ 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider' => array ( ), + 'Reliese\\Coders\\CodersServiceProvider' => + array ( + ), ), ); \ No newline at end of file diff --git a/composer.json b/composer.json index efba721..7a72337 100755 --- a/composer.json +++ b/composer.json @@ -19,7 +19,9 @@ "laravel/tinker": "^1.0", "laravelcollective/html": "5.6.x-dev", "maatwebsite/excel": "2.1.30", - "vladrub/laravel-datatables-oracle": "8.0.x-dev", + "reliese/laravel": "^0.0.14", + "setasign/fpdf": "^1.8", + "setasign/fpdi": "^2.2", "yajra/laravel-datatables-oracle": "^8.8" }, "require-dev": { diff --git a/composer.lock b/composer.lock index ded68c5..4e94166 100755 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "6b338b3c21946c3ba6b8ac3ac7ff7c98", + "content-hash": "444cbd5efb345823beb4d9e66df51114", "packages": [ { "name": "askedio/laravel5-profanity-filter", @@ -182,25 +182,25 @@ }, { "name": "dnoegel/php-xdg-base-dir", - "version": "0.1", + "version": "v0.1.1", "source": { "type": "git", "url": "https://github.com/dnoegel/php-xdg-base-dir.git", - "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a" + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/265b8593498b997dc2d31e75b89f053b5cc9621a", - "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a", + "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", "shasum": "" }, "require": { "php": ">=5.3.2" }, "require-dev": { - "phpunit/phpunit": "@stable" + "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" }, - "type": "project", + "type": "library", "autoload": { "psr-4": { "XdgBaseDir\\": "src/" @@ -211,20 +211,20 @@ "MIT" ], "description": "implementation of xdg base directory specification for php", - "time": "2014-10-24T07:27:01+00:00" + "time": "2019-12-04T15:06:13+00:00" }, { "name": "doctrine/cache", - "version": "1.9.1", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "89a5c76c39c292f7798f964ab3c836c3f8192a55" + "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/89a5c76c39c292f7798f964ab3c836c3f8192a55", - "reference": "89a5c76c39c292f7798f964ab3c836c3f8192a55", + "url": "https://api.github.com/repos/doctrine/cache/zipball/382e7f4db9a12dc6c19431743a2b096041bcdd62", + "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62", "shasum": "" }, "require": { @@ -291,23 +291,22 @@ "memcached", "php", "redis", - "riak", "xcache" ], - "time": "2019-11-15T14:31:57+00:00" + "time": "2019-11-29T15:36:20+00:00" }, { "name": "doctrine/dbal", - "version": "v2.10.0", + "version": "v2.10.1", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934" + "reference": "c2b8e6e82732a64ecde1cddf9e1e06cb8556e3d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/0c9a646775ef549eb0a213a4f9bd4381d9b4d934", - "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/c2b8e6e82732a64ecde1cddf9e1e06cb8556e3d8", + "reference": "c2b8e6e82732a64ecde1cddf9e1e06cb8556e3d8", "shasum": "" }, "require": { @@ -386,7 +385,7 @@ "sqlserver", "sqlsrv" ], - "time": "2019-11-03T16:50:43+00:00" + "time": "2020-01-04T12:56:21+00:00" }, { "name": "doctrine/event-manager", @@ -649,27 +648,27 @@ }, { "name": "egulias/email-validator", - "version": "2.1.11", + "version": "2.1.15", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "92dd169c32f6f55ba570c309d83f5209cefb5e23" + "reference": "e834eea5306d85d67de5a05db5882911d5b29357" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/92dd169c32f6f55ba570c309d83f5209cefb5e23", - "reference": "92dd169c32f6f55ba570c309d83f5209cefb5e23", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/e834eea5306d85d67de5a05db5882911d5b29357", + "reference": "e834eea5306d85d67de5a05db5882911d5b29357", "shasum": "" }, "require": { "doctrine/lexer": "^1.0.1", - "php": ">= 5.5" + "php": ">=5.5", + "symfony/polyfill-intl-idn": "^1.10" }, "require-dev": { - "dominicsayers/isemail": "dev-master", - "phpunit/phpunit": "^4.8.35||^5.7||^6.0", - "satooshi/php-coveralls": "^1.0.1", - "symfony/phpunit-bridge": "^4.4@dev" + "dominicsayers/isemail": "^3.0.7", + "phpunit/phpunit": "^4.8.36|^7.5.15", + "satooshi/php-coveralls": "^1.0.1" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -703,20 +702,20 @@ "validation", "validator" ], - "time": "2019-08-13T17:33:27+00:00" + "time": "2020-01-20T21:40:59+00:00" }, { "name": "erusev/parsedown", - "version": "1.7.3", + "version": "1.7.4", "source": { "type": "git", "url": "https://github.com/erusev/parsedown.git", - "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7" + "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/6d893938171a817f4e9bc9e86f2da1e370b7bcd7", - "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/cb17b6477dfff935958ba01325f2e8a2bfa6dab3", + "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3", "shasum": "" }, "require": { @@ -749,20 +748,20 @@ "markdown", "parser" ], - "time": "2019-03-17T18:48:37+00:00" + "time": "2019-12-30T22:54:17+00:00" }, { "name": "fideloper/proxy", - "version": "4.2.1", + "version": "4.2.2", "source": { "type": "git", "url": "https://github.com/fideloper/TrustedProxy.git", - "reference": "03085e58ec7bee24773fa5a8850751a6e61a7e8a" + "reference": "790194d5d3da89a713478875d2e2d05855a90a81" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/03085e58ec7bee24773fa5a8850751a6e61a7e8a", - "reference": "03085e58ec7bee24773fa5a8850751a6e61a7e8a", + "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/790194d5d3da89a713478875d2e2d05855a90a81", + "reference": "790194d5d3da89a713478875d2e2d05855a90a81", "shasum": "" }, "require": { @@ -803,7 +802,7 @@ "proxy", "trusted proxy" ], - "time": "2019-09-03T16:45:42+00:00" + "time": "2019-12-20T13:11:11+00:00" }, { "name": "gloudemans/shoppingcart", @@ -1704,16 +1703,16 @@ }, { "name": "league/flysystem", - "version": "1.0.57", + "version": "1.0.64", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "0e9db7f0b96b9f12dcf6f65bc34b72b1a30ea55a" + "reference": "d13c43dbd4b791f815215959105a008515d1a2e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/0e9db7f0b96b9f12dcf6f65bc34b72b1a30ea55a", - "reference": "0e9db7f0b96b9f12dcf6f65bc34b72b1a30ea55a", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/d13c43dbd4b791f815215959105a008515d1a2e0", + "reference": "d13c43dbd4b791f815215959105a008515d1a2e0", "shasum": "" }, "require": { @@ -1725,7 +1724,7 @@ }, "require-dev": { "phpspec/phpspec": "^3.4", - "phpunit/phpunit": "^5.7.10" + "phpunit/phpunit": "^5.7.26" }, "suggest": { "ext-fileinfo": "Required for MimeType", @@ -1784,7 +1783,7 @@ "sftp", "storage" ], - "time": "2019-10-16T21:01:05+00:00" + "time": "2020-02-05T18:14:17+00:00" }, { "name": "maatwebsite/excel", @@ -1866,16 +1865,16 @@ }, { "name": "monolog/monolog", - "version": "1.25.2", + "version": "1.25.3", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "d5e2fb341cb44f7e2ab639d12a1e5901091ec287" + "reference": "fa82921994db851a8becaf3787a9e73c5976b6f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/d5e2fb341cb44f7e2ab639d12a1e5901091ec287", - "reference": "d5e2fb341cb44f7e2ab639d12a1e5901091ec287", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fa82921994db851a8becaf3787a9e73c5976b6f1", + "reference": "fa82921994db851a8becaf3787a9e73c5976b6f1", "shasum": "" }, "require": { @@ -1940,7 +1939,7 @@ "logging", "psr-3" ], - "time": "2019-11-13T10:00:05+00:00" + "time": "2019-12-20T14:15:16+00:00" }, { "name": "nesbot/carbon", @@ -2354,27 +2353,27 @@ }, { "name": "psy/psysh", - "version": "v0.9.9", + "version": "v0.9.12", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e" + "reference": "90da7f37568aee36b116a030c5f99c915267edd4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/9aaf29575bb8293206bb0420c1e1c87ff2ffa94e", - "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/90da7f37568aee36b116a030c5f99c915267edd4", + "reference": "90da7f37568aee36b116a030c5f99c915267edd4", "shasum": "" }, "require": { - "dnoegel/php-xdg-base-dir": "0.1", + "dnoegel/php-xdg-base-dir": "0.1.*", "ext-json": "*", "ext-tokenizer": "*", "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*", "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0", "php": ">=5.4.0", - "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0", - "symfony/var-dumper": "~2.7|~3.0|~4.0" + "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0|~5.0", + "symfony/var-dumper": "~2.7|~3.0|~4.0|~5.0" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.2", @@ -2424,7 +2423,7 @@ "interactive", "shell" ], - "time": "2018-10-13T15:16:03+00:00" + "time": "2019-12-06T14:19:43+00:00" }, { "name": "ralouphie/getallheaders", @@ -2468,44 +2467,46 @@ }, { "name": "ramsey/uuid", - "version": "3.8.0", + "version": "3.9.2", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3" + "reference": "7779489a47d443f845271badbdcedfe4df8e06fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/d09ea80159c1929d75b3f9c60504d613aeb4a1e3", - "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/7779489a47d443f845271badbdcedfe4df8e06fb", + "reference": "7779489a47d443f845271badbdcedfe4df8e06fb", "shasum": "" }, "require": { - "paragonie/random_compat": "^1.0|^2.0|9.99.99", - "php": "^5.4 || ^7.0", + "ext-json": "*", + "paragonie/random_compat": "^1 | ^2 | 9.99.99", + "php": "^5.4 | ^7 | ^8", "symfony/polyfill-ctype": "^1.8" }, "replace": { "rhumsaa/uuid": "self.version" }, "require-dev": { - "codeception/aspect-mock": "^1.0 | ~2.0.0", - "doctrine/annotations": "~1.2.0", - "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ~2.1.0", - "ircmaxell/random-lib": "^1.1", - "jakub-onderka/php-parallel-lint": "^0.9.0", - "mockery/mockery": "^0.9.9", + "codeception/aspect-mock": "^1 | ^2", + "doctrine/annotations": "^1.2", + "goaop/framework": "1.0.0-alpha.2 | ^1 | ^2.1", + "jakub-onderka/php-parallel-lint": "^1", + "mockery/mockery": "^0.9.11 | ^1", "moontoast/math": "^1.1", - "php-mock/php-mock-phpunit": "^0.3|^1.1", - "phpunit/phpunit": "^4.7|^5.0|^6.5", - "squizlabs/php_codesniffer": "^2.3" + "paragonie/random-lib": "^2", + "php-mock/php-mock-phpunit": "^0.3 | ^1.1", + "phpunit/phpunit": "^4.8 | ^5.4 | ^6.5", + "squizlabs/php_codesniffer": "^3.5" }, "suggest": { "ext-ctype": "Provides support for PHP Ctype functions", "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", + "ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator", "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", - "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter", "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." }, @@ -2518,13 +2519,21 @@ "autoload": { "psr-4": { "Ramsey\\Uuid\\": "src/" - } + }, + "files": [ + "src/functions.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + }, { "name": "Marijn Huizendveld", "email": "marijn.huizendveld@gmail.com" @@ -2532,11 +2541,6 @@ { "name": "Thibaud Fabre", "email": "thibaud@aztech.io" - }, - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" } ], "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", @@ -2546,7 +2550,166 @@ "identifier", "uuid" ], - "time": "2018-07-19T23:38:55+00:00" + "time": "2019-12-17T08:18:51+00:00" + }, + { + "name": "reliese/laravel", + "version": "v0.0.14", + "source": { + "type": "git", + "url": "https://github.com/reliese/laravel.git", + "reference": "490d503836ca5e375c8d886cc2511c3b1ac43f71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reliese/laravel/zipball/490d503836ca5e375c8d886cc2511c3b1ac43f71", + "reference": "490d503836ca5e375c8d886cc2511c3b1ac43f71", + "shasum": "" + }, + "require": { + "doctrine/dbal": ">=2.5", + "illuminate/console": ">=5.1", + "illuminate/contracts": ">=5.1", + "illuminate/database": ">=5.1", + "illuminate/filesystem": ">=5.1", + "illuminate/support": ">=5.1", + "php": ">=5.6.4" + }, + "require-dev": { + "fzaninotto/faker": "~1.4", + "mockery/mockery": "0.9.*", + "phpunit/phpunit": "~5.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Reliese\\Coders\\CodersServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Reliese\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Cristian Llanos", + "email": "cristianllanos@outlook.com" + } + ], + "description": "Reliese Components for Laravel Framework code generation.", + "homepage": "http://cristianllanos.com", + "keywords": [ + "laravel", + "reliese" + ], + "time": "2019-12-26T23:35:33+00:00" + }, + { + "name": "setasign/fpdf", + "version": "1.8.2", + "source": { + "type": "git", + "url": "https://github.com/Setasign/FPDF.git", + "reference": "d77904018090c17dc9f3ab6e944679a7a47e710a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Setasign/FPDF/zipball/d77904018090c17dc9f3ab6e944679a7a47e710a", + "reference": "d77904018090c17dc9f3ab6e944679a7a47e710a", + "shasum": "" + }, + "type": "library", + "autoload": { + "classmap": [ + "fpdf.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Olivier Plathey", + "email": "oliver@fpdf.org", + "homepage": "http://fpdf.org/" + } + ], + "description": "FPDF is a PHP class which allows to generate PDF files with pure PHP. F from FPDF stands for Free: you may use it for any kind of usage and modify it to suit your needs.", + "homepage": "http://www.fpdf.org", + "keywords": [ + "fpdf", + "pdf" + ], + "time": "2019-12-08T10:32:10+00:00" + }, + { + "name": "setasign/fpdi", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/Setasign/FPDI.git", + "reference": "3c266002f8044f61b17329f7cd702d44d73f0f7f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Setasign/FPDI/zipball/3c266002f8044f61b17329f7cd702d44d73f0f7f", + "reference": "3c266002f8044f61b17329f7cd702d44d73f0f7f", + "shasum": "" + }, + "require": { + "ext-zlib": "*", + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "~5.7", + "setasign/fpdf": "~1.8", + "setasign/tfpdf": "1.25", + "tecnickcom/tcpdf": "~6.2" + }, + "suggest": { + "setasign/fpdf": "FPDI will extend this class but as it is also possible to use TCPDF or tFPDF as an alternative. There's no fixed dependency configured.", + "setasign/fpdi-fpdf": "Use this package to automatically evaluate dependencies to FPDF.", + "setasign/fpdi-tcpdf": "Use this package to automatically evaluate dependencies to TCPDF.", + "setasign/fpdi-tfpdf": "Use this package to automatically evaluate dependencies to tFPDF." + }, + "type": "library", + "autoload": { + "psr-4": { + "setasign\\Fpdi\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Slabon", + "email": "jan.slabon@setasign.com", + "homepage": "https://www.setasign.com" + }, + { + "name": "Maximilian Kresse", + "email": "maximilian.kresse@setasign.com", + "homepage": "https://www.setasign.com" + } + ], + "description": "FPDI is a collection of PHP classes facilitating developers to read pages from existing PDF documents and use them as templates in FPDF. Because it is also possible to use FPDI with TCPDF, there are no fixed dependencies defined. Please see suggestions for packages which evaluates the dependencies automatically.", + "homepage": "https://www.setasign.com/fpdi", + "keywords": [ + "fpdf", + "fpdi", + "pdf" + ], + "time": "2019-01-30T14:11:19+00:00" }, { "name": "swiftmailer/swiftmailer", @@ -2612,16 +2775,16 @@ }, { "name": "symfony/console", - "version": "v4.4.0", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "35d9077f495c6d184d9930f7a7ecbd1ad13c7ab8" + "reference": "f512001679f37e6a042b51897ed24a2f05eba656" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/35d9077f495c6d184d9930f7a7ecbd1ad13c7ab8", - "reference": "35d9077f495c6d184d9930f7a7ecbd1ad13c7ab8", + "url": "https://api.github.com/repos/symfony/console/zipball/f512001679f37e6a042b51897ed24a2f05eba656", + "reference": "f512001679f37e6a042b51897ed24a2f05eba656", "shasum": "" }, "require": { @@ -2684,20 +2847,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2019-11-13T07:39:40+00:00" + "time": "2020-01-25T12:44:29+00:00" }, { "name": "symfony/css-selector", - "version": "v5.0.0", + "version": "v5.0.4", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "19d29e7098b7b2c3313cb03902ca30f100dcb837" + "reference": "ff60c90cb7950b592ebc84ad1289d0345bf24f9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/19d29e7098b7b2c3313cb03902ca30f100dcb837", - "reference": "19d29e7098b7b2c3313cb03902ca30f100dcb837", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/ff60c90cb7950b592ebc84ad1289d0345bf24f9f", + "reference": "ff60c90cb7950b592ebc84ad1289d0345bf24f9f", "shasum": "" }, "require": { @@ -2737,20 +2900,20 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2019-11-18T17:27:11+00:00" + "time": "2020-01-04T14:08:26+00:00" }, { "name": "symfony/debug", - "version": "v4.4.0", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "b24b791f817116b29e52a63e8544884cf9a40757" + "reference": "20236471058bbaa9907382500fc14005c84601f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/b24b791f817116b29e52a63e8544884cf9a40757", - "reference": "b24b791f817116b29e52a63e8544884cf9a40757", + "url": "https://api.github.com/repos/symfony/debug/zipball/20236471058bbaa9907382500fc14005c84601f0", + "reference": "20236471058bbaa9907382500fc14005c84601f0", "shasum": "" }, "require": { @@ -2793,20 +2956,20 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2019-11-10T17:54:30+00:00" + "time": "2020-01-25T12:44:29+00:00" }, { "name": "symfony/error-handler", - "version": "v4.4.0", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "e1acb58dc6a8722617fe56565f742bcf7e8744bf" + "reference": "d2721499ffcaf246a743e01cdf6696d3d5dd74c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/e1acb58dc6a8722617fe56565f742bcf7e8744bf", - "reference": "e1acb58dc6a8722617fe56565f742bcf7e8744bf", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/d2721499ffcaf246a743e01cdf6696d3d5dd74c1", + "reference": "d2721499ffcaf246a743e01cdf6696d3d5dd74c1", "shasum": "" }, "require": { @@ -2849,20 +3012,20 @@ ], "description": "Symfony ErrorHandler Component", "homepage": "https://symfony.com", - "time": "2019-11-17T22:49:13+00:00" + "time": "2020-01-27T09:48:47+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.0", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "ab1c43e17fff802bef0a898f3bc088ac33b8e0e1" + "reference": "9e3de195e5bc301704dd6915df55892f6dfc208b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ab1c43e17fff802bef0a898f3bc088ac33b8e0e1", - "reference": "ab1c43e17fff802bef0a898f3bc088ac33b8e0e1", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9e3de195e5bc301704dd6915df55892f6dfc208b", + "reference": "9e3de195e5bc301704dd6915df55892f6dfc208b", "shasum": "" }, "require": { @@ -2919,7 +3082,7 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2019-11-08T22:40:51+00:00" + "time": "2020-01-10T21:54:01+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -2981,16 +3144,16 @@ }, { "name": "symfony/finder", - "version": "v4.4.0", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "ce8743441da64c41e2a667b8eb66070444ed911e" + "reference": "3a50be43515590faf812fbd7708200aabc327ec3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ce8743441da64c41e2a667b8eb66070444ed911e", - "reference": "ce8743441da64c41e2a667b8eb66070444ed911e", + "url": "https://api.github.com/repos/symfony/finder/zipball/3a50be43515590faf812fbd7708200aabc327ec3", + "reference": "3a50be43515590faf812fbd7708200aabc327ec3", "shasum": "" }, "require": { @@ -3026,20 +3189,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2019-11-17T21:56:56+00:00" + "time": "2020-01-04T13:00:46+00:00" }, { "name": "symfony/http-foundation", - "version": "v4.4.0", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "502040dd2b0cf0a292defeb6145f4d7a4753c99c" + "reference": "491a20dfa87e0b3990170593bc2de0bb34d828a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/502040dd2b0cf0a292defeb6145f4d7a4753c99c", - "reference": "502040dd2b0cf0a292defeb6145f4d7a4753c99c", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/491a20dfa87e0b3990170593bc2de0bb34d828a5", + "reference": "491a20dfa87e0b3990170593bc2de0bb34d828a5", "shasum": "" }, "require": { @@ -3081,20 +3244,20 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2019-11-17T10:10:42+00:00" + "time": "2020-01-31T09:11:17+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.0", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "5a5e7237d928aa98ff8952050cbbf0135899b6b0" + "reference": "62116a9c8fb15faabb158ad9cb785c353c2572e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/5a5e7237d928aa98ff8952050cbbf0135899b6b0", - "reference": "5a5e7237d928aa98ff8952050cbbf0135899b6b0", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/62116a9c8fb15faabb158ad9cb785c353c2572e5", + "reference": "62116a9c8fb15faabb158ad9cb785c353c2572e5", "shasum": "" }, "require": { @@ -3171,20 +3334,20 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2019-11-21T07:08:15+00:00" + "time": "2020-01-31T12:45:06+00:00" }, { "name": "symfony/mime", - "version": "v5.0.0", + "version": "v5.0.4", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "76f3c09b7382bf979af7bcd8e6f8033f1324285e" + "reference": "2a3c7fee1f1a0961fa9cf360d5da553d05095e59" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/76f3c09b7382bf979af7bcd8e6f8033f1324285e", - "reference": "76f3c09b7382bf979af7bcd8e6f8033f1324285e", + "url": "https://api.github.com/repos/symfony/mime/zipball/2a3c7fee1f1a0961fa9cf360d5da553d05095e59", + "reference": "2a3c7fee1f1a0961fa9cf360d5da553d05095e59", "shasum": "" }, "require": { @@ -3233,20 +3396,20 @@ "mime", "mime-type" ], - "time": "2019-11-18T17:27:11+00:00" + "time": "2020-01-04T14:08:26+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "550ebaac289296ce228a706d0867afc34687e3f4" + "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4", - "reference": "550ebaac289296ce228a706d0867afc34687e3f4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", + "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", "shasum": "" }, "require": { @@ -3258,7 +3421,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -3291,20 +3454,20 @@ "polyfill", "portable" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "685968b11e61a347c18bf25db32effa478be610f" + "reference": "a019efccc03f1a335af6b4f20c30f5ea8060be36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/685968b11e61a347c18bf25db32effa478be610f", - "reference": "685968b11e61a347c18bf25db32effa478be610f", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/a019efccc03f1a335af6b4f20c30f5ea8060be36", + "reference": "a019efccc03f1a335af6b4f20c30f5ea8060be36", "shasum": "" }, "require": { @@ -3316,7 +3479,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -3350,20 +3513,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2" + "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6af626ae6fa37d396dc90a399c0ff08e5cfc45b2", - "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6f9c239e61e1b0c9229a28ff89a812dc449c3d46", + "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46", "shasum": "" }, "require": { @@ -3377,7 +3540,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -3412,20 +3575,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17" + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17", - "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", "shasum": "" }, "require": { @@ -3437,7 +3600,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -3471,20 +3634,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T14:18:11+00:00" }, { "name": "symfony/polyfill-php56", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "0e3b212e96a51338639d8ce175c046d7729c3403" + "reference": "53dd1cdf3cb986893ccf2b96665b25b3abb384f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/0e3b212e96a51338639d8ce175c046d7729c3403", - "reference": "0e3b212e96a51338639d8ce175c046d7729c3403", + "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/53dd1cdf3cb986893ccf2b96665b25b3abb384f4", + "reference": "53dd1cdf3cb986893ccf2b96665b25b3abb384f4", "shasum": "" }, "require": { @@ -3494,7 +3657,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -3527,20 +3690,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "04ce3335667451138df4307d6a9b61565560199e" + "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/04ce3335667451138df4307d6a9b61565560199e", - "reference": "04ce3335667451138df4307d6a9b61565560199e", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/66fea50f6cb37a35eea048d75a7d99a45b586038", + "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038", "shasum": "" }, "require": { @@ -3549,7 +3712,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -3582,20 +3745,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188" + "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/2ceb49eaccb9352bff54d22570276bb75ba4a188", - "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/4b0e2222c55a25b4541305a053013d5647d3a25f", + "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f", "shasum": "" }, "require": { @@ -3604,7 +3767,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -3640,20 +3803,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T16:25:15+00:00" }, { "name": "symfony/polyfill-util", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-util.git", - "reference": "4317de1386717b4c22caed7725350a8887ab205c" + "reference": "964a67f293b66b95883a5ed918a65354fcd2258f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/4317de1386717b4c22caed7725350a8887ab205c", - "reference": "4317de1386717b4c22caed7725350a8887ab205c", + "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/964a67f293b66b95883a5ed918a65354fcd2258f", + "reference": "964a67f293b66b95883a5ed918a65354fcd2258f", "shasum": "" }, "require": { @@ -3662,7 +3825,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -3692,20 +3855,20 @@ "polyfill", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "symfony/process", - "version": "v4.4.0", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "75ad33d9b6f25325ebc396d68ad86fd74bcfbb06" + "reference": "f5697ab4cb14a5deed7473819e63141bf5352c36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/75ad33d9b6f25325ebc396d68ad86fd74bcfbb06", - "reference": "75ad33d9b6f25325ebc396d68ad86fd74bcfbb06", + "url": "https://api.github.com/repos/symfony/process/zipball/f5697ab4cb14a5deed7473819e63141bf5352c36", + "reference": "f5697ab4cb14a5deed7473819e63141bf5352c36", "shasum": "" }, "require": { @@ -3741,20 +3904,20 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2019-10-28T20:30:34+00:00" + "time": "2020-01-09T09:50:08+00:00" }, { "name": "symfony/routing", - "version": "v4.4.0", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "cf6d72cf0348775f5243b8389169a7096221ea40" + "reference": "7bf4e38573728e317b926ca4482ad30470d0e86a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/cf6d72cf0348775f5243b8389169a7096221ea40", - "reference": "cf6d72cf0348775f5243b8389169a7096221ea40", + "url": "https://api.github.com/repos/symfony/routing/zipball/7bf4e38573728e317b926ca4482ad30470d0e86a", + "reference": "7bf4e38573728e317b926ca4482ad30470d0e86a", "shasum": "" }, "require": { @@ -3817,24 +3980,24 @@ "uri", "url" ], - "time": "2019-11-20T13:44:34+00:00" + "time": "2020-01-08T17:29:02+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.0.0", + "version": "v2.0.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "9d99e1556417bf227a62e14856d630672bf10eaf" + "reference": "144c5e51266b281231e947b51223ba14acf1a749" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/9d99e1556417bf227a62e14856d630672bf10eaf", - "reference": "9d99e1556417bf227a62e14856d630672bf10eaf", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749", + "reference": "144c5e51266b281231e947b51223ba14acf1a749", "shasum": "" }, "require": { - "php": "^7.2.9", + "php": "^7.2.5", "psr/container": "^1.0" }, "suggest": { @@ -3875,20 +4038,20 @@ "interoperability", "standards" ], - "time": "2019-11-09T09:18:34+00:00" + "time": "2019-11-18T17:27:11+00:00" }, { "name": "symfony/translation", - "version": "v4.4.0", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "897fb68ee7933372517b551d6f08c6d4bb0b8c40" + "reference": "f5d2ac46930238b30a9c2f1b17c905f3697d808c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/897fb68ee7933372517b551d6f08c6d4bb0b8c40", - "reference": "897fb68ee7933372517b551d6f08c6d4bb0b8c40", + "url": "https://api.github.com/repos/symfony/translation/zipball/f5d2ac46930238b30a9c2f1b17c905f3697d808c", + "reference": "f5d2ac46930238b30a9c2f1b17c905f3697d808c", "shasum": "" }, "require": { @@ -3951,24 +4114,24 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2019-11-12T17:18:47+00:00" + "time": "2020-01-15T13:29:06+00:00" }, { "name": "symfony/translation-contracts", - "version": "v2.0.0", + "version": "v2.0.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "8feb81e6bb1a42d6a3b1429c751d291eb6d05297" + "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/8feb81e6bb1a42d6a3b1429c751d291eb6d05297", - "reference": "8feb81e6bb1a42d6a3b1429c751d291eb6d05297", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/8cc682ac458d75557203b2f2f14b0b92e1c744ed", + "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed", "shasum": "" }, "require": { - "php": "^7.2.9" + "php": "^7.2.5" }, "suggest": { "symfony/translation-implementation": "" @@ -4008,20 +4171,20 @@ "interoperability", "standards" ], - "time": "2019-11-09T09:18:34+00:00" + "time": "2019-11-18T17:27:11+00:00" }, { "name": "symfony/var-dumper", - "version": "v4.4.0", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "eade2890f8b0eeb279b6cf41b50a10007294490f" + "reference": "46b53fd714568af343953c039ff47b67ce8af8d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/eade2890f8b0eeb279b6cf41b50a10007294490f", - "reference": "eade2890f8b0eeb279b6cf41b50a10007294490f", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/46b53fd714568af343953c039ff47b67ce8af8d6", + "reference": "46b53fd714568af343953c039ff47b67ce8af8d6", "shasum": "" }, "require": { @@ -4084,7 +4247,7 @@ "debug", "dump" ], - "time": "2019-11-12T14:51:11+00:00" + "time": "2020-01-25T12:44:29+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -4135,77 +4298,6 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "time": "2019-10-24T08:53:34+00:00" }, - { - "name": "vladrub/laravel-datatables-oracle", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/vladrub/laravel-datatables.git", - "reference": "5272a6db4572a8e45ffba94c398c5c0698e5d613" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vladrub/laravel-datatables/zipball/5272a6db4572a8e45ffba94c398c5c0698e5d613", - "reference": "5272a6db4572a8e45ffba94c398c5c0698e5d613", - "shasum": "" - }, - "require": { - "illuminate/database": "5.4.*|5.5.*|5.6.*", - "illuminate/filesystem": "5.4.*|5.5.*|5.6.*", - "illuminate/http": "5.4.*|5.5.*|5.6.*", - "illuminate/support": "5.4.*|5.5.*|5.6.*", - "illuminate/view": "5.4.*|5.5.*|5.6.*", - "php": ">=7.0" - }, - "require-dev": { - "orchestra/testbench": "~3.5" - }, - "suggest": { - "yajra/laravel-datatables-buttons": "Plugin for server-side exporting of dataTable.", - "yajra/laravel-datatables-editor": "Plugin to use Datatables Editor (requires a license).", - "yajra/laravel-datatables-fractal": "Plugin for server-side response using Fractal.", - "yajra/laravel-datatables-html": "Plugin for server-side HTML builder of dataTable." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.0-dev" - }, - "laravel": { - "providers": [ - "Yajra\\DataTables\\DataTablesServiceProvider" - ], - "aliases": { - "DataTables": "Yajra\\DataTables\\Facades\\DataTables" - } - } - }, - "autoload": { - "psr-4": { - "Yajra\\DataTables\\": "src/" - }, - "files": [ - "src/helper.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Arjay Angeles", - "email": "aqangeles@gmail.com" - } - ], - "description": "jQuery DataTables API for Laravel 4|5", - "keywords": [ - "datatables", - "jquery", - "laravel" - ], - "time": "2018-06-27T20:18:57+00:00" - }, { "name": "vlucas/phpdotenv", "version": "v2.6.1", @@ -4332,16 +4424,16 @@ "packages-dev": [ { "name": "barryvdh/laravel-ide-helper", - "version": "v2.6.5", + "version": "v2.6.6", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-ide-helper.git", - "reference": "8740a9a158d3dd5cfc706a9d4cc1bf7a518f99f3" + "reference": "b91b959364d97af658f268c733c75dccdbff197e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/8740a9a158d3dd5cfc706a9d4cc1bf7a518f99f3", - "reference": "8740a9a158d3dd5cfc706a9d4cc1bf7a518f99f3", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/b91b959364d97af658f268c733c75dccdbff197e", + "reference": "b91b959364d97af658f268c733c75dccdbff197e", "shasum": "" }, "require": { @@ -4399,7 +4491,7 @@ "phpstorm", "sublime" ], - "time": "2019-09-08T09:56:38+00:00" + "time": "2019-10-30T20:53:27+00:00" }, { "name": "barryvdh/reflection-docblock", @@ -4452,16 +4544,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.2.4", + "version": "1.2.6", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527" + "reference": "47fe531de31fca4a1b997f87308e7d7804348f7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/10bb96592168a0f8e8f6dcde3532d9fa50b0b527", - "reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/47fe531de31fca4a1b997f87308e7d7804348f7e", + "reference": "47fe531de31fca4a1b997f87308e7d7804348f7e", "shasum": "" }, "require": { @@ -4472,7 +4564,7 @@ "require-dev": { "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", "psr/log": "^1.0", - "symfony/process": "^2.5 || ^3.0 || ^4.0" + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" }, "type": "library", "extra": { @@ -4504,20 +4596,20 @@ "ssl", "tls" ], - "time": "2019-08-30T08:44:50+00:00" + "time": "2020-01-13T10:02:55+00:00" }, { "name": "composer/composer", - "version": "1.9.1", + "version": "1.9.3", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "bb01f2180df87ce7992b8331a68904f80439dd2f" + "reference": "1291a16ce3f48bfdeca39d64fca4875098af4d7b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/bb01f2180df87ce7992b8331a68904f80439dd2f", - "reference": "bb01f2180df87ce7992b8331a68904f80439dd2f", + "url": "https://api.github.com/repos/composer/composer/zipball/1291a16ce3f48bfdeca39d64fca4875098af4d7b", + "reference": "1291a16ce3f48bfdeca39d64fca4875098af4d7b", "shasum": "" }, "require": { @@ -4584,28 +4676,27 @@ "dependency", "package" ], - "time": "2019-11-01T16:20:17+00:00" + "time": "2020-02-04T11:58:49+00:00" }, { "name": "composer/semver", - "version": "1.5.0", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e" + "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/46d9139568ccb8d9e7cdd4539cab7347568a5e2e", - "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e", + "url": "https://api.github.com/repos/composer/semver/zipball/c6bea70230ef4dd483e6bbcab6005f682ed3a8de", + "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5", - "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" + "phpunit/phpunit": "^4.5 || ^5.0.5" }, "type": "library", "extra": { @@ -4646,7 +4737,7 @@ "validation", "versioning" ], - "time": "2019-03-19T17:25:45+00:00" + "time": "2020-01-13T12:06:48+00:00" }, { "name": "composer/spdx-licenses", @@ -4810,16 +4901,16 @@ }, { "name": "filp/whoops", - "version": "2.5.0", + "version": "2.7.1", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "cde50e6720a39fdacb240159d3eea6865d51fd96" + "reference": "fff6f1e4f36be0e0d0b84d66b413d9dcb0c49130" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/cde50e6720a39fdacb240159d3eea6865d51fd96", - "reference": "cde50e6720a39fdacb240159d3eea6865d51fd96", + "url": "https://api.github.com/repos/filp/whoops/zipball/fff6f1e4f36be0e0d0b84d66b413d9dcb0c49130", + "reference": "fff6f1e4f36be0e0d0b84d66b413d9dcb0c49130", "shasum": "" }, "require": { @@ -4828,8 +4919,8 @@ }, "require-dev": { "mockery/mockery": "^0.9 || ^1.0", - "phpunit/phpunit": "^4.8.35 || ^5.7", - "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0", + "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" }, "suggest": { "symfony/var-dumper": "Pretty print complex values better with var-dumper available", @@ -4838,7 +4929,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -4867,20 +4958,20 @@ "throwable", "whoops" ], - "time": "2019-08-07T09:00:00+00:00" + "time": "2020-01-15T10:00:00+00:00" }, { "name": "fzaninotto/faker", - "version": "v1.9.0", + "version": "v1.9.1", "source": { "type": "git", "url": "https://github.com/fzaninotto/Faker.git", - "reference": "27a216cbe72327b2d6369fab721a5843be71e57d" + "reference": "fc10d778e4b84d5bd315dad194661e091d307c6f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/27a216cbe72327b2d6369fab721a5843be71e57d", - "reference": "27a216cbe72327b2d6369fab721a5843be71e57d", + "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/fc10d778e4b84d5bd315dad194661e091d307c6f", + "reference": "fc10d778e4b84d5bd315dad194661e091d307c6f", "shasum": "" }, "require": { @@ -4893,7 +4984,9 @@ }, "type": "library", "extra": { - "branch-alias": [] + "branch-alias": { + "dev-master": "1.9-dev" + } }, "autoload": { "psr-4": { @@ -4915,7 +5008,7 @@ "faker", "fixtures" ], - "time": "2019-11-14T13:13:06+00:00" + "time": "2019-12-12T13:22:17+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -5033,16 +5126,16 @@ }, { "name": "mockery/mockery", - "version": "1.2.4", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "b3453f75fd23d9fd41685f2148f4abeacabc6405" + "reference": "f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/b3453f75fd23d9fd41685f2148f4abeacabc6405", - "reference": "b3453f75fd23d9fd41685f2148f4abeacabc6405", + "url": "https://api.github.com/repos/mockery/mockery/zipball/f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be", + "reference": "f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be", "shasum": "" }, "require": { @@ -5056,7 +5149,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { @@ -5094,20 +5187,20 @@ "test double", "testing" ], - "time": "2019-09-30T08:30:27+00:00" + "time": "2019-12-26T09:49:15+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.9.3", + "version": "1.9.5", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea" + "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/007c053ae6f31bba39dfa19a7726f56e9763bbea", - "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef", + "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef", "shasum": "" }, "require": { @@ -5142,7 +5235,7 @@ "object", "object graph" ], - "time": "2019-08-09T12:45:53+00:00" + "time": "2020-01-17T21:11:47+00:00" }, { "name": "nunomaduro/collision", @@ -5364,40 +5457,38 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.2", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e" + "reference": "a48807183a4b819072f26e347bbd0b5199a9d15f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/b83ff7cfcfee7827e1e78b637a5904fe6a96698e", - "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/a48807183a4b819072f26e347bbd0b5199a9d15f", + "reference": "a48807183a4b819072f26e347bbd0b5199a9d15f", "shasum": "" }, "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", - "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", - "webmozart/assert": "^1.0" + "ext-filter": "^7.1", + "php": "^7.2", + "phpdocumentor/reflection-common": "^2.0", + "phpdocumentor/type-resolver": "^1.0", + "webmozart/assert": "^1" }, "require-dev": { - "doctrine/instantiator": "^1.0.5", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.4" + "doctrine/instantiator": "^1", + "mockery/mockery": "^1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev" + "dev-master": "5.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -5408,10 +5499,14 @@ { "name": "Mike van Riel", "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2019-09-12T14:27:41+00:00" + "time": "2020-02-09T09:16:15+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -5462,33 +5557,33 @@ }, { "name": "phpspec/prophecy", - "version": "1.9.0", + "version": "v1.10.2", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203" + "reference": "b4400efc9d206e83138e2bb97ed7f5b14b831cd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/f6811d96d97bdf400077a0cc100ae56aa32b9203", - "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/b4400efc9d206e83138e2bb97ed7f5b14b831cd9", + "reference": "b4400efc9d206e83138e2bb97ed7f5b14b831cd9", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", - "sebastian/comparator": "^1.1|^2.0|^3.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" + "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" }, "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", + "phpspec/phpspec": "^2.5 || ^3.2", "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8.x-dev" + "dev-master": "1.10.x-dev" } }, "autoload": { @@ -5521,7 +5616,7 @@ "spy", "stub" ], - "time": "2019-10-03T11:07:50+00:00" + "time": "2020-01-20T15:57:02+00:00" }, { "name": "phpunit/php-code-coverage", @@ -5777,16 +5872,16 @@ }, { "name": "phpunit/phpunit", - "version": "7.5.17", + "version": "7.5.20", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "4c92a15296e58191a4cd74cff3b34fc8e374174a" + "reference": "9467db479d1b0487c99733bb1e7944d32deded2c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4c92a15296e58191a4cd74cff3b34fc8e374174a", - "reference": "4c92a15296e58191a4cd74cff3b34fc8e374174a", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c", + "reference": "9467db479d1b0487c99733bb1e7944d32deded2c", "shasum": "" }, "require": { @@ -5857,7 +5952,7 @@ "testing", "xunit" ], - "time": "2019-10-28T10:37:36+00:00" + "time": "2020-01-08T08:45:45+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -6476,16 +6571,16 @@ }, { "name": "seld/phar-utils", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a" + "reference": "84715761c35808076b00908a20317a3a8a67d17e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a", - "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/84715761c35808076b00908a20317a3a8a67d17e", + "reference": "84715761c35808076b00908a20317a3a8a67d17e", "shasum": "" }, "require": { @@ -6516,20 +6611,20 @@ "keywords": [ "phra" ], - "time": "2015-10-13T18:44:15+00:00" + "time": "2020-01-13T10:41:09+00:00" }, { "name": "symfony/filesystem", - "version": "v4.4.0", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "d12b01cba60be77b583c9af660007211e3909854" + "reference": "266c9540b475f26122b61ef8b23dd9198f5d1cfd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/d12b01cba60be77b583c9af660007211e3909854", - "reference": "d12b01cba60be77b583c9af660007211e3909854", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/266c9540b475f26122b61ef8b23dd9198f5d1cfd", + "reference": "266c9540b475f26122b61ef8b23dd9198f5d1cfd", "shasum": "" }, "require": { @@ -6566,7 +6661,7 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2019-11-12T14:51:11+00:00" + "time": "2020-01-21T08:20:44+00:00" }, { "name": "theseer/tokenizer", @@ -6610,31 +6705,29 @@ }, { "name": "webmozart/assert", - "version": "1.5.0", + "version": "1.6.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4" + "reference": "573381c0a64f155a0d9a23f4b0c797194805b925" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/88e6d84706d09a236046d686bbea96f07b3a34f4", - "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4", + "url": "https://api.github.com/repos/webmozart/assert/zipball/573381c0a64f155a0d9a23f4b0c797194805b925", + "reference": "573381c0a64f155a0d9a23f4b0c797194805b925", "shasum": "" }, "require": { "php": "^5.3.3 || ^7.0", "symfony/polyfill-ctype": "^1.8" }, + "conflict": { + "vimeo/psalm": "<3.6.0" + }, "require-dev": { "phpunit/phpunit": "^4.8.36 || ^7.5.13" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, "autoload": { "psr-4": { "Webmozart\\Assert\\": "src/" @@ -6656,14 +6749,13 @@ "check", "validate" ], - "time": "2019-08-24T08:43:50+00:00" + "time": "2019-11-24T13:36:37+00:00" } ], "aliases": [], "minimum-stability": "dev", "stability-flags": { - "laravelcollective/html": 20, - "vladrub/laravel-datatables-oracle": 20 + "laravelcollective/html": 20 }, "prefer-stable": true, "prefer-lowest": false, diff --git a/config/app.php b/config/app.php index a1619ca..58ef2e7 100755 --- a/config/app.php +++ b/config/app.php @@ -161,6 +161,7 @@ return [ Illuminate\Translation\TranslationServiceProvider::class, Illuminate\Validation\ValidationServiceProvider::class, Illuminate\View\ViewServiceProvider::class, + Reliese\Coders\CodersServiceProvider::class, /* * Package Service Providers... diff --git a/config/filesystems.php b/config/filesystems.php index 77fa5de..4e59a5b 100755 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -47,6 +47,12 @@ return [ 'driver' => 'local', 'root' => storage_path('app'), ], + 'user' => [ + 'driver' => 'local', + 'root' => storage_path('app/users'), + 'url' => env('APP_URL').'/storage/users', + 'visibility' => 'public', + ], 'public' => [ 'driver' => 'local', diff --git a/config/models.php b/config/models.php new file mode 100644 index 0000000..5f97d5b --- /dev/null +++ b/config/models.php @@ -0,0 +1,420 @@ + [ + + /* + |-------------------------------------------------------------------------- + | Model Files Location + |-------------------------------------------------------------------------- + | + | We need a location to store your new generated files. All files will be + | placed within this directory. When you turn on base files, they will + | be placed within a Base directory inside this location. + | + */ + + 'path' => app_path('Models'), + + /* + |-------------------------------------------------------------------------- + | Model Namespace + |-------------------------------------------------------------------------- + | + | Every generated model will belong to this namespace. It is suggested + | that this namespace should follow PSR-4 convention and be very + | similar to the path of your models defined above. + | + */ + + 'namespace' => 'App\Models', + + /* + |-------------------------------------------------------------------------- + | Parent Class + |-------------------------------------------------------------------------- + | + | All Eloquent models should inherit from Eloquent Model class. However, + | you can define a custom Eloquent model that suits your needs. + | As an example one custom model has been added for you which + | will allow you to create custom database castings. + | + */ + + 'parent' => Illuminate\Database\Eloquent\Model::class, + + /* + |-------------------------------------------------------------------------- + | Traits + |-------------------------------------------------------------------------- + | + | Sometimes you may want to append certain traits to all your models. + | If that is what you need, you may list them bellow. + | As an example we have a BitBooleans trait which will treat MySQL bit + | data type as booleans. You might probably not need it, but it is + | an example of how you can customize your models. + | + */ + + 'use' => [ + // Reliese\Database\Eloquent\BitBooleans::class, + // Reliese\Database\Eloquent\BlamableBehavior::class, + ], + + /* + |-------------------------------------------------------------------------- + | Model Connection + |-------------------------------------------------------------------------- + | + | If you wish your models had appended the connection from which they + | were generated, you should set this value to true and your + | models will have the connection property filled. + | + */ + + 'connection' => false, + + /* + |-------------------------------------------------------------------------- + | Timestamps + |-------------------------------------------------------------------------- + | + | If your tables have CREATED_AT and UPDATED_AT timestamps you may + | enable them and your models will fill their values as needed. + | You can also specify which fields should be treated as timestamps + | in case you don't follow the naming convention Eloquent uses. + | If your table doesn't have these fields, timestamps will be + | disabled for your model. + | + */ + + 'timestamps' => true, + + // 'timestamps' => [ + // 'enabled' => true, + // 'fields' => [ + // 'CREATED_AT' => 'created_at', + // 'UPDATED_AT' => 'updated_at', + // ] + // ], + + /* + |-------------------------------------------------------------------------- + | Soft Deletes + |-------------------------------------------------------------------------- + | + | If your tables support soft deletes with a DELETED_AT attribute, + | you can enable them here. You can also specify which field + | should be treated as a soft delete attribute in case you + | don't follow the naming convention Eloquent uses. + | If your table doesn't have this field, soft deletes will be + | disabled for your model. + | + */ + + 'soft_deletes' => true, + + // 'soft_deletes' => [ + // 'enabled' => true, + // 'field' => 'deleted_at', + // ], + + /* + |-------------------------------------------------------------------------- + | Date Format + |-------------------------------------------------------------------------- + | + | Here you may define your models' date format. The following format + | is the default format Eloquent uses. You won't see it in your + | models unless you change it to a more convenient value. + | + */ + + 'date_format' => 'Y-m-d H:i:s', + + /* + |-------------------------------------------------------------------------- + | Pagination + |-------------------------------------------------------------------------- + | + | Here you may define how many models Eloquent should display when + | paginating them. The default number is 15, so you might not + | see this number in your models unless you change it. + | + */ + + 'per_page' => 15, + + /* + |-------------------------------------------------------------------------- + | Base Files + |-------------------------------------------------------------------------- + | + | By default, your models will be generated in your models path, but + | when you generate them again they will be replaced by new ones. + | You may want to customize your models and, at the same time, be + | able to generate them as your tables change. For that, you + | can enable base files. These files will be replaced whenever + | you generate them, but your customized files will not be touched. + | + */ + + 'base_files' => false, + + /* + |-------------------------------------------------------------------------- + | Snake Attributes + |-------------------------------------------------------------------------- + | + | Eloquent treats your model attributes as snake cased attributes, but + | if you have camel-cased fields in your database you can disable + | that behaviour and use camel case attributes in your models. + | + */ + + 'snake_attributes' => true, + + /* + |-------------------------------------------------------------------------- + | Indent options + |-------------------------------------------------------------------------- + | + | As default indention is done with tabs, but you can change it by setting + | this to the amount of spaces you that you want to use for indentation. + | Usually you will use 4 spaces instead of tabs. + | + */ + + 'indent_with_space' => 0, + + /* + |-------------------------------------------------------------------------- + | Qualified Table Names + |-------------------------------------------------------------------------- + | + | If some of your tables have cross-database relationships (probably in + | MySQL), you can make sure your models take into account their + | respective database schema. + | + | Can Either be NULL, FALSE or TRUE + | TRUE: Schema name will be prepended on the table + | FALSE:Table name will be set without schema name. + | NULL: Table name will follow laravel pattern, + | i.e if class name(plural) matches table name, then table name will not be added + */ + + 'qualified_tables' => false, + + /* + |-------------------------------------------------------------------------- + | Hidden Attributes + |-------------------------------------------------------------------------- + | + | When casting your models into arrays or json, the need to hide some + | attributes sometimes arise. If your tables have some fields you + | want to hide, you can define them bellow. + | Some fields were defined for you. + | + */ + + 'hidden' => [ + '*secret*', '*password', '*token', + ], + + /* + |-------------------------------------------------------------------------- + | Mass Assignment Guarded Attributes + |-------------------------------------------------------------------------- + | + | You may want to protect some fields from mass assignment. You can + | define them bellow. Some fields were defined for you. + | Your fillable attributes will be those which are not in the list + | excluding your models' primary keys. + | + */ + + 'guarded' => [ + // 'created_by', 'updated_by' + ], + + /* + |-------------------------------------------------------------------------- + | Casts + |-------------------------------------------------------------------------- + | + | You may want to specify which of your table fields should be casted as + | something different than a string. For instance, you may want a + | text field be casted as an array or and object. + | + | You may define column patterns which will be casted using the value + | assigned. We have defined some fields for you. Feel free to + | modify them to fit your needs. + | + */ + + 'casts' => [ + '*_json' => 'json', + ], + + /* + |-------------------------------------------------------------------------- + | Excluded Tables + |-------------------------------------------------------------------------- + | + | When performing the generation of models you may want to skip some of + | them, because you don't want a model for them or any other reason. + | You can define those tables bellow. The migrations table was + | filled for you, since you may not want a model for it. + | + */ + + 'except' => [ + 'migrations', + ], + + /* + |-------------------------------------------------------------------------- + | Specified Tables + |-------------------------------------------------------------------------- + | + | You can specify specific tables. This will generate the models only + | for selected tables, ignoring the rest. + | + */ + + 'only' => [ + // 'users', + ], + + /* + |-------------------------------------------------------------------------- + | Table Prefix + |-------------------------------------------------------------------------- + | + | If you have a prefix on your table names but don't want it in the model + | and relation names, specify it here. + | + */ + + 'table_prefix' => '', + + /* + |-------------------------------------------------------------------------- + | Lower table name before doing studly + |-------------------------------------------------------------------------- + | + | If tables names are capitalised using studly produces incorrect name + | this can help fix it ie TABLE_NAME now becomes TableName + | + */ + + 'lower_table_name_first' => false, + + /* + |-------------------------------------------------------------------------- + | Relation Name Strategy + |-------------------------------------------------------------------------- + | + | How the relations should be named in your models. + | + | 'related' Use the related table as the relation name. + | (post.author --> user.id) + generates Post::user() and User::posts() + | + | 'foreign_key' Use the foreign key as the relation name. + | (post.author --> user.id) + | generates Post::author() and User::posts_author() + | Column id's are ignored. + | (post.author_id --> user.id) + | generates the same as above. + | When the foreign key is redundant, it is omited. + | (post.user_id --> user.id) + | generates User::posts() and not User::posts_user() + */ + + 'relation_name_strategy' => 'related', + // 'relation_name_strategy' => 'foreign_key', + + /* + |-------------------------------------------------------------------------- + | Determines need or not to generate constants with properties names like + | + | ... + | const AGE = 'age'; + | const USER_NAME = 'user_name'; + | ... + | + | that later can be used in QueryBuilder like + | + | ... + | $builder->select([User::USER_NAME])->where(User::AGE, '<=', 18); + | ... + | + | that helps to avoid typos in strings when typing field names and allows to use + | code competition with available model's field names. + */ + 'with_property_constants' => false, + + /* + |-------------------------------------------------------------------------- + | Disable Pluralization Name + |-------------------------------------------------------------------------- + | + | You can disable pluralization tables and relations + | + */ + 'pluralize' => true, + + /* + |-------------------------------------------------------------------------- + | Disable Pluralization Except For Certain Tables + |-------------------------------------------------------------------------- + | + | You can enable pluralization for certain tables + | + */ + 'override_pluralize_for' => [ + + ], + ], + + /* + |-------------------------------------------------------------------------- + | Database Specifics + |-------------------------------------------------------------------------- + | + | In this section you may define the default configuration for each model + | that will be generated from a specific database. You can also nest + | table specific configurations. + | These values will override those defined in the section above. + | + */ + + // 'shop' => [ + // 'path' => app_path(), + // 'namespace' => 'App', + // 'snake_attributes' => false, + // 'qualified_tables' => true, + // 'use' => [ + // Reliese\Database\Eloquent\BitBooleans::class, + // ], + // 'except' => ['migrations'], + // 'only' => ['users'], + // // Table Specifics Bellow: + // 'user' => [ + // // Don't use any default trait + // 'use' => [], + // ] + // ], +]; diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index eca5cf1..bd1a343 100755 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -29,6 +29,7 @@ class CreateUsersTable extends Migration $table->dateTime('confirmation_code_to')->nullable(); $table->unsignedTinyInteger('confirmation_code_remider')->default(0); + $table->timestamp('release_account')->nullable(); $table->boolean('active')->default(false); $table->timestamp('active_date')->nullable(); $table->dateTime('agreement')->nullable(); diff --git a/database/migrations/2020_02_08_164831_create_files_table.php b/database/migrations/2020_02_08_164831_create_files_table.php new file mode 100644 index 0000000..1ce8d9d --- /dev/null +++ b/database/migrations/2020_02_08_164831_create_files_table.php @@ -0,0 +1,46 @@ +increments('id'); + + $table->unsignedInteger('user_id')->nullable()->index(); + $table->string('identifier')->index(); + $table->string('filename'); + $table->string('dir'); + $table->string('original_name'); + $table->string('ext'); + $table->string('mine'); + $table->unsignedInteger('size'); + $table->timestamps(); + + $table->foreign('user_id') + ->references('id') + ->on('users') + ->onDelete('cascade'); + + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('files'); + } +} diff --git a/public/css/application.css b/public/css/application.css index 1a94640..4a10d76 100644 --- a/public/css/application.css +++ b/public/css/application.css @@ -1,4 +1,14 @@ .alert ul { margin-bottom: 0; +} +.fa-caret-expand:before { + content: "\f0da"; +} +a[aria-expanded='true'] > .fa-caret-expand:before { + content: "\f0d7"; +} + +.dropzone { + border: 2px dashed; } \ No newline at end of file diff --git a/public/js/application.js b/public/js/application.js index 9f90a87..286e865 100644 --- a/public/js/application.js +++ b/public/js/application.js @@ -79,7 +79,18 @@ __webpack_require__("./resources/assets/js/bootstrap.js"); if (window.layoutHelpers) { window.layoutHelpers.setAutoUpdate(true); } +(function() { + if ($('#layout-sidenav').hasClass('sidenav-horizontal') || window.layoutHelpers.isSmallScreen()) { + return; + } + try { + window.layoutHelpers.setCollapsed( + localStorage.getItem('layoutCollapsed') === 'true', + false + ); + } catch (e) {} +})(); $(function () { // Initialize sidenav $('#layout-sidenav').each(function () { @@ -92,6 +103,9 @@ $(function () { $('body').on('click', '.layout-sidenav-toggle', function (e) { e.preventDefault(); window.layoutHelpers.toggleCollapsed(); + if (!window.layoutHelpers.isSmallScreen()) { + try { localStorage.setItem('layoutCollapsed', String(window.layoutHelpers.isCollapsed())); } catch (e) {} + } }); // Swap dropdown menus in RTL mode diff --git a/public/js/forms_file-upload.js b/public/js/forms_file-upload.js index a5baab1..9c6c95c 100755 --- a/public/js/forms_file-upload.js +++ b/public/js/forms_file-upload.js @@ -3,7 +3,7 @@ $(function() { - + Dropzone.autoDiscover = false; $('#dropzone-before').dropzone({ parallelUploads: 1, @@ -21,9 +21,10 @@ $(function() { + // Mock the file upload progress (only for the demo) // - Dropzone.prototype.uploadFiles = function(files) { + /* Dropzone.prototype.uploadFiles = function(files) { var minSteps = 6; var maxSteps = 60; var timeBetweenSteps = 100; @@ -66,5 +67,5 @@ $(function() { }(file, totalSteps, step), duration); } } - }; -}); \ No newline at end of file + };*/ +}); diff --git a/public/pdf/mivita_template_contract_de.pdf b/public/pdf/mivita_template_contract_de.pdf new file mode 100644 index 0000000..1716c14 Binary files /dev/null and b/public/pdf/mivita_template_contract_de.pdf differ diff --git a/resources/lang/de.json b/resources/lang/de.json index 5a86726..35fb0fc 100755 --- a/resources/lang/de.json +++ b/resources/lang/de.json @@ -34,10 +34,11 @@ "Confirm Password": "Passwort best\u00e4tigen", "Confirm E-Mail": "E-Mail wiederholen", "E-Mail Address": "E-Mail Adresse", + "Confirm E-Mail Address": "E-Mail Adresse wiederholen", "Forgot your Password?": "Passwort vergessen?", "Login": "Einloggen", "Logout": "Ausloggen", - "Password": " Passwort ", + "Password": "Passwort", "Register": "Registrieren", "Remember Me": "Angemeldet bleiben", "Reset Password": "Passwort zur\u00fccksetzen", @@ -95,7 +96,8 @@ "E-Mail address can not be changed!": "E-Mail Adresse ist nicht \u00e4nderbar!", "E-Mail address can not be changed here!": "E-Mail Adresse kann hier nicht ge\u00e4ndert werden!", "Thank you for your registration!": "Vielen Dank f\u00fcr Ihre Registrierung!", - "We have sent you an e-mail with a link to activate your data.": "Wir haben Ihnen eine E-Mail mit einem Link zur Freischaltung Ihrer Daten geschickt.", + "We have sent you an e-mail with a link to activate your data.": "Wir haben Dir eine E-Mail mit einem Link zur Freischaltung Deines Accounts gesendet.", + "Please check your emails and confirm the link.": "Bitte rufe Deine E-Mails ab und bestätige den Link.", "back to the homepage": "zur\u00fcck zur Startseite", "You have successfully verified your account!": "Sie haben Ihr Konto erfolgreich verifiziert!", "Now check your data and release the data.": "\u00dcberpr\u00fcfen Sie jetzt Ihre Daten und geben Sie die Daten frei.", @@ -105,6 +107,7 @@ "Data released": "Daten freigeben", "Data released now": "Daten jetzt freigeben", "E-Mail verified": "E-Mail verifiziert", + "E-Mail not verified": "E-Mail nicht verifiziert", "Privacy policy approved": "Datenschutzerkl\u00e4rung zugestimmt", "Consent for further information": "Einwilligung f\u00fcr weitere Informationen", "at": "am", @@ -157,6 +160,7 @@ "Now assign a password.": "Vergeben Sie jetzt Ihr Passwort für den Zugriff auf Ihren Account.", "to your data":"zu Deinen Daten", "Your registration has already been completed.":"Deine Registrierung wurde bereits abgeschlossen.", + "The link to register is no longer active.":"Der Link zur Registrierung ist nicht mehr aktiv, oder die Registrierung ist bereits abgeschlossen", "go to login": "zur Anmeldung", "Declaration of consent": "Einverst\u00e4ndniserkl\u00e4rung: Hiermit willige ich in die Verarbeitung der von mir freiwillig angegebenen personenbezogenen Daten ein. Ich wurde dar\u00fcber informiert, dass ich diese Einwilligung jederzeit widerrufen kann.", "Please confirm your data first.": "Bitte überprüfen Sie Ihre Daten als erstes und bestätigen Sie diese.", diff --git a/resources/lang/de/email.php b/resources/lang/de/email.php index 66f5273..e071025 100644 --- a/resources/lang/de/email.php +++ b/resources/lang/de/email.php @@ -4,10 +4,11 @@ 'reset_passwort' => 'Passwort zurücksetzen', 'mail_confirm' => 'E-Mail bestätigen', 'subject_activate' => 'Account aktivieren', + 'account_active' => 'Account freigeschaltet', 'subject_reset' => 'Passwort zurücksetzen', - 'salutation' => 'Sehr geehrter Kunde,', - 'dear_mrs' => 'Sehr geehrte Frau,', - 'dear_sir' => 'Sehr geehrter Herr,', + 'salutation' => 'Hallo Kunde', + 'dear_mrs' => 'Hallo', + 'dear_sir' => 'Hallo', 'hello' => 'Hallo', 'greetings' => 'Mit freundlichen Grüßen', 'sender' => 'Dein mivita.care Team', @@ -21,16 +22,17 @@ 'phone' => 'Telefon', 'subject' => 'Betreff', 'message' => 'Nachricht', - 'active_copy1line' => 'Sie erhalten diese E-Mail, weil wir eine Anfrage zur Änderung Ihrer E-Mail-Adresse für Ihr Konto erhalten haben.', - 'copy2line' => 'Oder kopieren Sie diesen Link in die Adressleiste Ihres Browsers.', - 'copy3line' => 'Für weitere Fragen stehen wir Ihnen gerne zur Verfügung.', - 'email_verify' => 'Bestätigen Sie Ihre E-Mail-Adresse', - 'verify_e_mail' => 'Bestätigen Sie Ihre Daten und E-Mail-Adresse', - 'verify_copy1line' => 'Wir haben Daten über Sie in unserem System gespeichert. Bitte folgen Sie dem unten stehenden Link um Ihre E-Mail-Adresse zu bestätigen. Weitherhin können Sie Ihre Daten ändern oder auch löschen.', - 'email_verify_copy1line' => 'Vielen Dank für die Erstellung eines Accounts. Bitte folgen Sie dem unten stehenden Link, um Ihre E-Mail-Adresse zu bestätigen.', + 'active_copy1line' => 'Du erhältst diese E-Mail, weil wir eine Anfrage zur Änderung Deiner E-Mail-Adresse für Dein Konto erhalten haben.', + 'copy2line' => 'Oder kopiere diesen Link in die Adressleiste Deines Browsers.', + 'copy3line' => 'Für weitere Fragen stehen wir Dir gerne zur Verfügung.', + 'email_verify' => 'Bestätige Deine E-Mail-Adresse', + 'verify_e_mail' => 'Bestätige Deine Daten und E-Mail-Adresse', + 'verify_copy1line' => 'Wir haben Daten über Dich in unserem System gespeichert. Bitte folge dem unten stehenden Link um Deine E-Mail-Adresse zu bestätigen. Weitherhin kannst Du Deine Daten ändern oder auch löschen.', + 'email_verify_copy1line' => 'Vielen Dank für Deine Registrierung. Bitte folge dem unten stehenden Link, um Deine E-Mail-Adresse zu bestätigen.', 'copy_to_browser' => 'Oder kopiere diesen Link in die Adressleiste Deines Browsers.', 'activate_copy' => 'Bitte bestätige Deine E-Mail und aktiviere Deinen Account über diesen Link:', - 'reset_pass_copy1line' => 'Du erhälst diese E-Mail, weil wir eine Anfrage zum Zurücksetzen des Passworts für Dein Konto erhalten haben.', + 'account_active_copy1line' => 'Dein Account wurde nach erfolgreicher Prüfung freigeschatet. Deinen Beratervertag findest du auf der Startseite im Loginbereich von my.mivita.care. Melde dich mit deinen Benutzerdaten an, um weitere Schritte zu unternehmen.', + 'reset_pass_copy1line' => 'Du erhälst diese E-Mail, weil wir eine Anfrage zum Zurücksetzen Deines Passworts für Dein Konto erhalten haben.', 'checkout_copy1line' => 'vielen Dank für Deine Bestellung bei mivita.care. Nachfolgend haben wir zur Kontrolle Deine Bestellung noch einmal aufgelistet.', 'checkout_copy3line' => 'Bei Fragen sind wir jederzeit für Dich da.', 'status_copy1line' => 'Status zu Deiner Bestellung auf mivita.care', diff --git a/resources/lang/de/validation.php b/resources/lang/de/validation.php index 4cfca73..f15e0d8 100755 --- a/resources/lang/de/validation.php +++ b/resources/lang/de/validation.php @@ -147,18 +147,22 @@ return [ */ 'attributes' => [ + 'salutation' => 'Anrede', 'name' => 'Name', 'username' => 'Benutzername', 'email' => 'E-Mail-Adresse', + 'email-confirm' => 'E-Mail-Adresse wiederholen', 'first_name' => 'Vorname', 'last_name' => 'Nachname', 'password' => 'Passwort', 'password_confirmation' => 'Passwort-Bestätigung', + 'password-confirm' => 'Passwort-Bestätigung', 'city' => 'Stadt', 'country' => 'Land', 'address' => 'Adresse', 'phone' => 'Telefonnummer', 'mobile' => 'Handynummer', + 'mobil' => 'Mobiltelefon', 'age' => 'Alter', 'sex' => 'Geschlecht', 'gender' => 'Geschlecht', @@ -178,6 +182,7 @@ return [ 'available' => 'verfügbar', 'size' => 'Größe', 'user_shop_name' => 'Shop Name', + 'birthday' => 'Geburtsdatum', 'user_shop_active' => 'Nutzungsbedinungen', 'g-recaptcha-response' => 'google reCaptcha', 'accepted_data_protection' => 'Einwilligung Datenschutzerklärung', diff --git a/resources/views/admin/attribute/index.blade.php b/resources/views/admin/attribute/index.blade.php index 36c11ae..220b649 100755 --- a/resources/views/admin/attribute/index.blade.php +++ b/resources/views/admin/attribute/index.blade.php @@ -33,7 +33,7 @@+ {{__('Berater-Shop aktiv')}} {{__('bis zum')}}: {{ $user->getPaymentShopDateFormat() }}
+ @else ++ {{__('Berater-Shop inaktiv')}}
+ @endif + + @if($user->payment_account ) ++ {{__('Berater-Account aktiv')}} {{__('bis zum:')}} {{ $user->getPaymentAccountDateFormat() }}
+ @else ++ {{__('Berater-Account inaktiv')}}
+ @endif + + @if($user->active == 1) ++ {{__('Daten vollständig, freigeschaltet')}}: {{ $user->getActiveDateFormat() }}
+ @if($user->files->count()) + @foreach($user->files()->whereIdentifier('contract')->get() as $file) + MIVITA_Beratervertrag.pdf + @endforeach + @endif + @else +
+ {{__('Daten nicht vollständigt, inaktiv')}}
+ @if($user->release_account)
+ Registrierung abgeschlossen {{ $user->getReleaseAccountFormat() }}
+ Daten vollständigt => Berater freischalten
+ @else
+ Berater muss Registrierung noch abschließen
+ {{__('Einverständniserklärung')}}: {{ $user->getAgreementFormat() }} +
+ @else ++ {{__('Einverständniserklärung')}} {{ __('nicht akzeptiert') }}
+ @endif + @if($user->account->data_protection) ++ {{__('Privacy policy approved')}}: {{ $user->account->getDataProtectionFormat() }} +
+ @endif + @endif + @if($user->confirmed == 1) ++ {{__('E-Mail verified')}}: {{ $user->getConfirmationDateFormat() }}
+ @else ++ {{__('E-Mail not verified')}}
+ Neue E-Mail für die Registrierung zusenden + @endif +| Ausweisdaten | +Name | +Größe | +löschen | +
|---|---|---|---|
|
+ @if(strtolower($file->ext ) === 'pdf')
+
+ @else
+ |
+ {{ $file->original_name }} | +{{ $file->formatBytes() }} | ++ + + + | +
| Gewerbenachweis | +Name | +Größe | +löschen | +
|---|---|---|---|
|
+
+ @if(strtolower($file->ext ) == 'pdf')
+
+ @else
+ |
+ {{ $file->original_name }} | +{{ $file->formatBytes() }} | ++ + + + | +