From 36872100c628b4208602ce31734352322b04b09a Mon Sep 17 00:00:00 2001 From: Kevin Adametz Date: Fri, 23 Apr 2021 14:54:09 +0200 Subject: [PATCH] Homeparty online, Cron SEPA --- app/Http/Controllers/CronController.php | 42 ++- app/Http/Controllers/LeadController.php | 32 +- app/Http/Controllers/Pay/PayoneController.php | 7 +- app/Http/Controllers/SyS/SalesController.php | 78 ++++ .../Controllers/Sys/AdminToolsController.php | 15 +- .../Controllers/User/HomepartyController.php | 28 +- app/Http/Controllers/User/OrderController.php | 3 - .../Controllers/Web/CheckoutController.php | 1 - .../Controllers/Web/HomepartyController.php | 44 ++- .../Controllers/Web/RegisterController.php | 11 +- app/Models/Homeparty.php | 4 + app/Models/UserAccount.php | 8 + app/Services/CartHelper.php | 352 ++++++++++++++++++ app/Services/PaymentHelper.php | 161 ++++++++ app/Services/Util.php | 13 + app/User.php | 11 + mivita.code-workspace | 8 + public/images/avatar.png | Bin 0 -> 45885 bytes resources/lang/de/email.php | 2 +- resources/lang/de/navigation.php | 2 +- .../layouts/includes/layout-sidenav.blade.php | 7 +- .../views/legal/data_protect_de.blade.php | 3 +- resources/views/legal/imprint_de.blade.php | 5 +- resources/views/sys/sales/index.blade.php | 65 ++++ .../views/user/homeparty/detail.blade.php | 48 +-- .../user/homeparty/guest_detail.blade.php | 15 + .../views/user/homeparty/guests.blade.php | 72 ++-- .../views/user/homeparty/index.blade.php | 35 +- .../homeparty/self_guest_detail.blade.php | 175 +++++++-- .../views/user/order/shipping_ot.blade.php | 4 +- resources/views/user/user_form.blade.php | 4 +- .../web/layouts/includes/footer.blade.php | 4 +- .../web/layouts/includes/header.blade.php | 7 + resources/views/web/start.blade.php | 14 +- .../views/web/templates/datenschutz.blade.php | 3 +- .../views/web/templates/impressum.blade.php | 5 +- .../views/web/templates/kontakt.blade.php | 4 +- .../web/templates/registrierung.blade.php | 14 +- .../templates/registrierung_finish.blade.php | 2 +- resources/views/web/user/start.blade.php | 16 +- routes/web.php | 5 + 41 files changed, 1140 insertions(+), 189 deletions(-) create mode 100644 app/Http/Controllers/SyS/SalesController.php create mode 100644 app/Services/CartHelper.php create mode 100644 app/Services/PaymentHelper.php create mode 100644 mivita.code-workspace create mode 100644 public/images/avatar.png create mode 100755 resources/views/sys/sales/index.blade.php diff --git a/app/Http/Controllers/CronController.php b/app/Http/Controllers/CronController.php index d2f2d2b..9868e83 100644 --- a/app/Http/Controllers/CronController.php +++ b/app/Http/Controllers/CronController.php @@ -7,6 +7,7 @@ use App\Mail\MailVerifyAccount; use App\Models\UserHistory; use App\Models\UserMessage; use App\Repositories\UserRepository; +use App\Services\PaymentHelper; use App\User; use Carbon; use Illuminate\Support\Facades\Mail; @@ -104,14 +105,39 @@ class CronController extends Controller dump($user->email." | ".$user->getPaymentAccountDateFormat()); die();*/ foreach ($users as $user){ - $this->checkReminderPayments($user); - /*dump($user->daysActiveAccount()); - dump($user->email." | ".$user->getPaymentAccountDateFormat()); - dump('-------------------');*/ + // $this->checkReminderPayments($user); + $this->userInitAboPayment($user); } return "TOSK"; } + private function userInitAboPayment(User $user){ + if(!$user->isAcountAboPayDate()){ + return false; + } + //user has a open Abo Payment + if($this->checkIsAboPaymentOpen($user)){ + return false; + } + if($user->payment_order_product){ + $this->buyProductAboPayment($user, $user->payment_order_product); + } + /*dump($user->daysActiveAccount()); + dump($user->email." | ".$user->getPaymentAccountDateFormat()); + dump('-------------------');*/ + } + + private function checkIsAboPaymentOpen(User $user){ + $isOpen = UserHistory::whereUserId($user->id) + ->whereAction('abo_open_payment') + ->whereIdentifier($user->payment_account) + ->where('status', '>=', 1) //open //error // payment + ->get()->last(); + if($isOpen){ + return true; + } + return false; + } private function checkReminderPayments(User $user){ @@ -158,7 +184,6 @@ class CronController extends Controller } } - private function checkIsReminderSend(User $user, $status){ $isSend = UserHistory::whereUserId($user->id) @@ -237,4 +262,11 @@ class CronController extends Controller return 1; } + private function buyProductAboPayment($user, $product){ + $paymentHelper = new PaymentHelper(); + $paymentHelper->setProduct($product); + $paymentHelper->initELVPayment($user); + } + + } \ No newline at end of file diff --git a/app/Http/Controllers/LeadController.php b/app/Http/Controllers/LeadController.php index 4767fbb..f234387 100755 --- a/app/Http/Controllers/LeadController.php +++ b/app/Http/Controllers/LeadController.php @@ -2,19 +2,20 @@ namespace App\Http\Controllers; +use Request; +use App\User; +use Validator; +use App\Services\SysLog; +use App\Models\UserAccount; +use App\Models\UserHistory; +use App\Services\UserService; +use App\Mail\MailAccountActive; use App\Mail\MailCustomMessage; use App\Mail\MailVerifyAccount; use App\Mail\MailVerifyContact; -use App\Mail\MailAccountActive; -use App\Models\UserAccount; -use App\Models\UserHistory; -use App\Repositories\ContractPDFRepository; use App\Repositories\UserRepository; -use App\Services\UserService; -use App\User; use Illuminate\Support\Facades\Mail; -use Request; -use Validator; +use App\Repositories\ContractPDFRepository; class LeadController extends Controller { @@ -187,6 +188,21 @@ class LeadController extends Controller $this->userRepo->update($data); if(isset($data['m_data_edit']) && $data['m_data_edit'] === "TSOK"){ + //syslog + if(isset($data['m_sponsor'])){ + if($user->m_sponsor != $data['m_sponsor']){ + $from_user = isset($user->user_sponsor->email) ? $user->user_sponsor->email : "empty"; + $t_user = User::find($data['m_sponsor']); + $to_user = isset($t_user->email) ? $t_user->email : "empty"; + + SysLog::action('save-m_sponsor', 'lead_edit_sponsor', 3) + ->setUserId(\Auth::user()->id) + ->setModel($user->id, User::class) + ->setMessage('Set user new sponsor from: '.$from_user." | to: ".$to_user) + ->save(); + } + } + $user = $this->userRepo->getModel(); $user->m_level = isset($data['m_level']) ? $data['m_level'] : NULL; $user->m_sponsor = isset($data['m_sponsor']) ? $data['m_sponsor'] : NULL; diff --git a/app/Http/Controllers/Pay/PayoneController.php b/app/Http/Controllers/Pay/PayoneController.php index f09d377..d88ebe8 100644 --- a/app/Http/Controllers/Pay/PayoneController.php +++ b/app/Http/Controllers/Pay/PayoneController.php @@ -229,8 +229,13 @@ class PayoneController extends Controller } } - public function ResponseData(){ + public function onlyPaymentResponse(){ + $request = array_merge($this->default, $this->personalData, $this->deliveryData, $this->method, $this->prepayment, $this->urls); + $response = Payone::sendRequest($request); + return $response; + } + public function ResponseData(){ $request = array_merge($this->default, $this->personalData, $this->deliveryData, $this->method, $this->prepayment, $this->urls); //RECHNUNG MIV diff --git a/app/Http/Controllers/SyS/SalesController.php b/app/Http/Controllers/SyS/SalesController.php new file mode 100644 index 0000000..876d3bf --- /dev/null +++ b/app/Http/Controllers/SyS/SalesController.php @@ -0,0 +1,78 @@ +middleware('sysadmin'); + + } + + public function index() + { + $start = 2019; + $end = date('Y'); + $years = range($start, $end); + + if(Request::get('filter_sales_year')){ + $active_year = Request::get('filter_sales_year'); + }else{ + $active_year = $end; + } + + $date1 = Carbon::parse('01.01.'.$active_year." 00:00:00")->format('Y-m-d H:i:s'); + $date2 = Carbon::parse('31.12.'.$active_year." 23:59:59")->toDateString(); + + + $values = ShoppingOrder::where('shopping_orders.auth_user_id', '!=', NULL) //::with('shopping_user', )->select('shopping_orders.*') + ->where('mode', '=', 'live') + ->where('paid', '=', 1) + ->whereHas('shopping_order_items', function($q) { + + $q->where('product_id', 34)->OrWhere('product_id', 35)->OrWhere('product_id', 36)->OrWhere('product_id', 67)->OrWhere('product_id', 69); + }) + ->whereBetween('created_at', [$date1, $date2]) + ->get(); + + $data = [ + 'years' => $years, + 'active_year' => $active_year, + 'values' => $values, + ]; + return view('sys.sales.index', $data); + } + + + public function store() + { + + $data = Request::all(); + + $data['active'] = isset($data['active']) ? true : false; + if($data['id'] === "new"){ + $model = SySetting::create($data); + }else{ + $model = SySetting::find($data['id']); + $model->fill($data); + $model->save(); + } + + + \Session()->flash('alert-save', '1'); + return redirect(route('sysadmin_settings')); + + } + + +} \ No newline at end of file diff --git a/app/Http/Controllers/Sys/AdminToolsController.php b/app/Http/Controllers/Sys/AdminToolsController.php index c393f94..93257a4 100755 --- a/app/Http/Controllers/Sys/AdminToolsController.php +++ b/app/Http/Controllers/Sys/AdminToolsController.php @@ -39,7 +39,6 @@ class AdminToolsController extends Controller public function customers() { - $shopping_users = ShoppingUser::where('member_id', '=', NULL)->where('auth_user_id', '=', NULL)->get(); $data = [ 'values' => $shopping_users, @@ -76,11 +75,8 @@ class AdminToolsController extends Controller $pdf->_set('user_id', $user->id); $pdf->_set('identifier', 'contract'); $pdf->createContractPDF(); - } - - if(strpos($data['action'], 'checkOne_') !== false){ $id = (int) str_replace('checkOne_', '', $data['action']); $shopping_user = ShoppingUser::findOrFail($id); @@ -104,9 +100,9 @@ class AdminToolsController extends Controller 'values' => $values, 'text' => $text, ]; - return view('sys.admin.cronjobs', $data); } + public function cronjobsStore() { $data = Request::all(); @@ -114,7 +110,6 @@ class AdminToolsController extends Controller return back(); } - public function domainSSL() { $user_shops = UserShop::all(); @@ -144,10 +139,8 @@ class AdminToolsController extends Controller ]; return view('sys.admin.domain-ssl', $data); - - - } + public function domainSSLStore() { $data = Request::all(); @@ -165,6 +158,7 @@ class AdminToolsController extends Controller return view('sys.admin.shopping-orders', $data); } + public function shoppingOrdersStore() { //first run @@ -197,9 +191,6 @@ class AdminToolsController extends Controller \Session()->flash('alert-save', true); } return back(); - } - - } \ No newline at end of file diff --git a/app/Http/Controllers/User/HomepartyController.php b/app/Http/Controllers/User/HomepartyController.php index f21c44b..57998d5 100755 --- a/app/Http/Controllers/User/HomepartyController.php +++ b/app/Http/Controllers/User/HomepartyController.php @@ -28,8 +28,6 @@ class HomepartyController extends Controller public function __construct() { - $this->middleware('superadmin'); - $this->middleware('active.account'); } @@ -45,6 +43,7 @@ class HomepartyController extends Controller { if($id === 'new'){ $homeparty = new Homeparty(); + $homeparty->description = "Willkommen zu unserer Auszeitparty rund um das Thema Bio Aloe Vera und Naturkosmetik. Wir informieren Dich darüber, was Premiumqualität bei Naturkosmetik wirklich ausmacht, zeigen Dir viele Anwendungsbeispiele bei Haut- und Darmproblemen und natürlich kannst Du unsere Produkte ausgiebig testen. Wir freuen uns auf Dich!"; }else{ $homeparty = $this->getHomparty($id); } @@ -154,6 +153,7 @@ class HomepartyController extends Controller $homeparty = $this->getHomparty($id); if($gid === 'new'){ $homeparty_user = new HomepartyUser(); + $homeparty_user->same_as_billing = true; }else{ $homeparty_user = HomepartyUser::findOrFail($gid); if($homeparty->id !== $homeparty_user->homeparty_id){ @@ -238,8 +238,6 @@ class HomepartyController extends Controller $homeparty = $this->getHomparty($id); - - if(Request::ajax()) { $data = Request::all(); @@ -415,9 +413,14 @@ class HomepartyController extends Controller if($homeparty->id !== $homeparty_user->homeparty_id){ abort(404); } - $homeparty_user->save(); + if($homeparty_user->homeparty_user_order_items){ + foreach($homeparty_user->homeparty_user_order_items as $homeparty_user_order_item){ + $homeparty_user_order_item->delete(); + } + } + //$homeparty_user->save(); $homeparty_user->delete(); - \Session()->flash('alert-success', "Homeparty Gast gelöscht"); + \Session()->flash('alert-success', "Auszeitparty Gast gelöscht"); return redirect(route('user_homeparty_guests', [$homeparty->id])); } @@ -427,11 +430,20 @@ class HomepartyController extends Controller if ($homeparty->id !== $homeparty_user->homeparty_id) { abort(404); } - $homeparty_user->save(); + if($homeparty_user->homeparty_user_order_items){ + foreach($homeparty_user->homeparty_user_order_items as $homeparty_user_order_item){ + $homeparty_user_order_item->delete(); + } + } $homeparty_user->delete(); } + if($homeparty->homeparty_order_items){ + foreach($homeparty->homeparty_order_items as $homeparty_order_item){ + $homeparty_order_item->delete(); + } + } $homeparty->delete(); - \Session()->flash('alert-success', "Homeparty gelöscht"); + \Session()->flash('alert-success', "Auszeitparty gelöscht"); return redirect(route('user_homepartys')); } diff --git a/app/Http/Controllers/User/OrderController.php b/app/Http/Controllers/User/OrderController.php index 40f1621..115411e 100755 --- a/app/Http/Controllers/User/OrderController.php +++ b/app/Http/Controllers/User/OrderController.php @@ -24,8 +24,6 @@ class OrderController extends Controller public function __construct() { - $this->middleware('superadmin'); - $this->middleware('active.account'); } @@ -166,7 +164,6 @@ class OrderController extends Controller public function payment($for, $id=null){ $data = Request::all(); - $user = User::find(Auth::user()->id); $rules = array( 'shipping_salutation' => 'required', diff --git a/app/Http/Controllers/Web/CheckoutController.php b/app/Http/Controllers/Web/CheckoutController.php index cfb7a9b..7acf7cc 100755 --- a/app/Http/Controllers/Web/CheckoutController.php +++ b/app/Http/Controllers/Web/CheckoutController.php @@ -42,7 +42,6 @@ class CheckoutController extends Controller public function checkout(){ - // dump(Request::all()); // $user_shop = Util::getUserShop(); $shopping_data = Yard::instance('shopping')->getYardExtra('shopping_data'); diff --git a/app/Http/Controllers/Web/HomepartyController.php b/app/Http/Controllers/Web/HomepartyController.php index 76affa2..52e2afc 100755 --- a/app/Http/Controllers/Web/HomepartyController.php +++ b/app/Http/Controllers/Web/HomepartyController.php @@ -37,12 +37,15 @@ class HomepartyController extends Controller abort(403, 'Link für die Homeparty wurde nicht gefunden, oder ist nicht mehr aktiv.'); } $homeparty_user = null; - if($gid){ if($gid === 'new'){ $homeparty_user = new HomepartyUser(); + $homeparty_user->same_as_billing = true; }else{ + //no edit + abort(403, 'Link für die Homeparty wurde nicht gefunden, oder ist nicht mehr aktiv.'); + $homeparty_user = HomepartyUser::find($gid); if(!$homeparty_user || $homeparty_user->homeparty_id !== $homeparty->id){ abort(403, 'Link für die Homeparty wurde nicht gefunden, oder ist nicht mehr aktiv.'); @@ -52,6 +55,8 @@ class HomepartyController extends Controller $data = [ 'homeparty' => $homeparty, 'homeparty_user' => $homeparty_user, + 'homeparty_host' => $homeparty->homeparty_host, + 'mivita_member' => $homeparty->auth_user ]; return view('user.homeparty.self_guest_detail', $data); @@ -68,22 +73,7 @@ class HomepartyController extends Controller abort(403, 'Link für die Homeparty wurde nicht gefunden, oder ist nicht mehr aktiv.'); } - if($gid === null){ - $homeparty_user = HomepartyUser::create([ - 'homeparty_id' => $homeparty->id, - 'auth_user_id' => $homeparty->auth_user_id, - 'is_host' => false, - ]); - }else{ - $homeparty_user = HomepartyUser::find($gid); - if(!$homeparty_user || $homeparty_user->homeparty_id !== $homeparty->id){ - abort(403, 'Link für die Homeparty wurde nicht gefunden, oder ist nicht mehr aktiv.'); - } - } - - if(!$homeparty_user){ - abort(403, 'Link für die Homeparty wurde nicht gefunden, oder ist nicht mehr aktiv.'); - } + $rules = array( 'billing_salutation' => 'required', @@ -93,6 +83,8 @@ class HomepartyController extends Controller 'billing_zipcode' => 'required', 'billing_city' => 'required', 'billing_country_id' => 'required', + 'checkbox_datenverarbeitung' => 'required', + 'checkbox_daten_completely' => 'required' ); if (!Request::get('same_as_billing')) { $rules = array_merge($rules, [ @@ -109,6 +101,24 @@ class HomepartyController extends Controller if ($validator->fails()) { return back()->withErrors($validator)->withInput(Request::all()); } + if($gid === null){ + $homeparty_user = HomepartyUser::create([ + 'homeparty_id' => $homeparty->id, + 'auth_user_id' => $homeparty->auth_user_id, + 'is_host' => false, + ]); + }else{ + //no edit + abort(403, 'Link für die Homeparty wurde nicht gefunden, oder ist nicht mehr aktiv.'); + $homeparty_user = HomepartyUser::find($gid); + if(!$homeparty_user || $homeparty_user->homeparty_id !== $homeparty->id){ + abort(403, 'Link für die Homeparty wurde nicht gefunden, oder ist nicht mehr aktiv.'); + } + } + + if(!$homeparty_user){ + abort(403, 'Link für die Homeparty wurde nicht gefunden, oder ist nicht mehr aktiv.'); + } $data = Request::all(); $data['same_as_billing'] = isset($data['same_as_billing']) ? true : false; diff --git a/app/Http/Controllers/Web/RegisterController.php b/app/Http/Controllers/Web/RegisterController.php index 77049b1..26bc85e 100755 --- a/app/Http/Controllers/Web/RegisterController.php +++ b/app/Http/Controllers/Web/RegisterController.php @@ -65,7 +65,6 @@ class RegisterController extends Controller public function register(){ - $rules = array( 'salutation' => 'required', 'first_name'=>'required', @@ -74,13 +73,13 @@ class RegisterController extends Controller 'email-confirm' => 'required|same:email', 'password' => 'required|string|min:6|confirmed', 'password_confirmation' => 'required|string|min:6', - // 'g-recaptcha-response'=>'required|recaptcha', + 'g-recaptcha-response'=>'required|recaptcha', 'accepted_data_protection' => 'required', ); - /*Validator::extend('recaptcha', function($attribute, $value, $parameters, $validator) { + Validator::extend('recaptcha', function($attribute, $value, $parameters, $validator) { return $this->reCaptcha_validate($attribute, $value, $parameters, $validator); - });*/ + }); $validator = Validator::make(Request::all(), $rules); if ($validator->fails()) { @@ -124,7 +123,7 @@ class RegisterController extends Controller ]; return view('web.templates.registrierung_finish', $data); } - /* + private function reCaptcha_validate($attribute, $value, $parameters, $validator) { @@ -143,7 +142,7 @@ class RegisterController extends Controller $body = json_decode((string)$response->getBody()); return $body->success; } - */ + } \ No newline at end of file diff --git a/app/Models/Homeparty.php b/app/Models/Homeparty.php index c6d2df7..14a8cb5 100644 --- a/app/Models/Homeparty.php +++ b/app/Models/Homeparty.php @@ -120,6 +120,10 @@ class Homeparty extends Model return $this->hasMany('App\Models\HomepartyUser', 'homeparty_id')->where('is_host', false); } + public function homeparty_order_items(){ + return $this->hasMany('App\Models\HomepartyUserOrderItem','homeparty_id'); + } + public function getDateAttribute($value) { diff --git a/app/Models/UserAccount.php b/app/Models/UserAccount.php index 3f688b6..537a40b 100644 --- a/app/Models/UserAccount.php +++ b/app/Models/UserAccount.php @@ -218,4 +218,12 @@ class UserAccount extends Model return isset($this->notice[$key]) ? $this->notice[$key] : false; } + public function getPhoneNumber(){ + if($this->phone && $this->phone !== ""){ + return ($this->pre_phone ? $this->pre_phone->phone : '')." ".$this->phone; + } + if($this->mobil && $this->mobil !== ""){ + return ($this->pre_mobil ? $this->pre_mobil->phone : '')." ".$this->mobil; + } + } } diff --git a/app/Services/CartHelper.php b/app/Services/CartHelper.php new file mode 100644 index 0000000..09602fe --- /dev/null +++ b/app/Services/CartHelper.php @@ -0,0 +1,352 @@ + 'Januar', + 2 => 'Februar', + 3 => 'März', + 4 => 'April', + 5 => 'Mai', + 6 => 'Juni', + 7 => 'Juli', + 8 => 'August', + 9 => 'September', + 10 => 'Oktober', + 11 => 'November', + 12 => 'Dezember', + ]; + + + private static $roles = [ + 0 => 'Kunde', + 1 => 'Admin', + 2 => 'SuperAdmin', + 3 => 'SySAdmin', + ]; + + + public static function getMonth($i){ + return self::$months[intval($i)]; + } + + public static function getRoleLabel($role_id = 0){ + return ''.self::$roles[$role_id].''; + } + + public static function getLabel($id){ + switch ($id) { + case 0: + return 'badge-default'; + break; + case 1: + return 'badge-warning'; + break; + case 2: + return 'badge-primary'; + break; + case 3: + return 'badge-primary'; + break; + } + + } + + public static function getRolesOptions(){ + $ret = ""; + foreach (self::$roles as $role_id => $value){ + $ret .= '\n'; + } + return $ret; + } + + public static function getYearSelectOptions(){ + $start = date("Y", strtotime("-5 years", time())); + $end = date("Y", strtotime("+1 years", time())); + $values = range($start, $end); + $now = date("Y", time()); + $ret = ""; + foreach ($values as $value){ + $attr = ($value == $now) ? 'selected="selected"' : ''; + $ret .= '\n'; + } + return $ret; + } + + public static function getAttributesWithoutParents($id = false, $sameId = false, $all = true){ + $values = Attribute::where('parent_id', null)->get(); + $ret = ""; + if($all){ + $ret .= '\n'; + } + foreach ($values as $value){ + if($sameId == $value->id){ + continue; + } + $attr = ($value->id == $id) ? 'selected="selected"' : ''; + $ret .= '\n'; + } + return $ret; + } + + public static function getCategoriesWithoutParents($id = false, $sameId = false, $all = true){ + $values = Category::where('parent_id', null)->get(); + $ret = ""; + if($all){ + $ret .= '\n'; + } + foreach ($values as $value){ + if($sameId == $value->id){ + continue; + } + $attr = ($value->id == $id) ? 'selected="selected"' : ''; + $ret .= '\n'; + } + return $ret; + } + + public static function getProductsOptions($ids = array(), $all = true){ + if($ids == null){ + $ids = array(); + } + $values = Product::where('active', 1)->get(); + $ret = ""; + if($all){ + $ret .= '\n'; + } + foreach ($values as $value){ + $attr = in_array($value->id, $ids) ? 'selected="selected"' : ''; + $ret .= '\n'; + } + return $ret; + } + + public static function getCategoriesOptions($ids = array(), $all = true){ + $values = Category::where('active', 1)->get(); + $ret = ""; + if($all){ + $ret .= '\n'; + } + foreach ($values as $value){ + $attr = in_array($value->id, $ids) ? 'selected="selected"' : ''; + $ret .= '\n'; + } + return $ret; + } + + public static function getProductIngredientsOptions($has_ids = array(), $all = true){ + $values = Ingredient::where('active', 1)->get(); + $ret = ""; + $attr = ""; + foreach ($values as $value){ + if(!in_array($value->id, $has_ids)){ + $ret .= '\n'; + } + } + return $ret; + } + + public static function getAttributesOptions($ids = array(), $all = true){ + $values = Attribute::where('active', 1)->get(); + $ret = ""; + if($all){ + $ret .= '\n'; + } + foreach ($values as $value){ + $attr = in_array($value->id, $ids) ? 'selected="selected"' : ''; + $ret .= '\n'; + } + return $ret; + } + + public static function getUserLevelOptions($id = false, $all = true){ + $values = UserLevel::where('active', 1)->get(); + $ret = ""; + if($all){ + $ret .= '\n'; + } + foreach ($values as $value){ + $attr = ($value->id == $id) ? 'selected="selected"' : ''; + $ret .= '\n'; + } + return $ret; + } + + + public static function getCompanyOptions($company){ + $options = array(1 => __('business'), 0 => __('private'), ); + $ret = ""; + foreach ($options as $id => $value){ + $attr = ($id == $company) ? 'selected="selected"' : ''; + $ret .= '\n'; + } + return $ret; + } + + public static function getContriesWithMore($id, $all=true){# + $values = Country::all(); + $counter = 1; + $ret = ""; + if($all){ + $ret .= '\n'; + + } + foreach ($values as $value){ + if( $counter == 7){ + $ret .= ''; + } + $attr = ($value->id == $id) ? 'selected="selected"' : ''; + $ret .= '\n'; + + $counter ++; + } + $ret .= ''; + return $ret; + } + + public static function getContriesCodes($id, $all=true){# + $values = Country::all(); + $counter = 1; + $ret = ""; + if($all){ + $ret .= '\n'; + + } + foreach ($values as $value){ + + if(!$value->phone) continue; + if( $counter == 7){ + $ret .= ''; + } + $attr = ($value->id == $id) ? 'selected="selected"' : ''; + $ret .= '\n'; + + $counter ++; + } + $ret .= ''; + return $ret; + } + + public static function getCountriesWithoutUsedShippings($all=true){# + $values = Country::all(); + $country_ids = ShippingCountry::all()->pluck('country_id')->toArray(); + $ret = ""; + if($all){ + $ret .= '\n'; + } + foreach ($values as $value){ + if(!in_array($value->id, $country_ids)){ + $ret .= '\n'; + } + } + return $ret; + } + + public static function getCountryNameFormShipping($id){ + $value = ShippingCountry::find($id); + if($value){ + return $value->country->getLocated(); + } + return "not defined"; + } + + public static function getCountriesForShipping($id, $all=false){# + $values = ShippingCountry::all(); + $ret = ""; + if($all){ + $ret .= '\n'; + } + foreach ($values as $value){ + $attr = ($value->id == $id) ? 'selected="selected"' : ''; + $ret .= '\n'; + + } + return $ret; + } + + public static function getSalutation($id){ + $values = array('mr' => __('MR'), 'ms' => __('MS')); + $ret = ""; + $ret .= '\n'; + foreach ($values as $key => $value){ + $attr = ($key == $id) ? 'selected="selected"' : ''; + $ret .= '\n'; + } + return $ret; + } + + public static function getSalutationLang($id){ + $values = array('mr' => __('MR'), 'ms' => __('MS')); + return (!empty($values[$id]) ? $values[$id] : ''); + } + + public static function getTaxSaleOptions($id){ + $values = array('1' => __('taxable_sales_1'), '2' => __('taxable_sales_2')); + $ret = ""; + $ret .= '\n'; + foreach ($values as $key => $value){ + $attr = ($key == $id) ? 'selected="selected"' : ''; + $ret .= '\n'; + } + return $ret; + } + + public static function getMembersOptions($id, $all=false){ + $values = User::where('active', '=', true)->where('blocked', '=', false)->where('payment_account', '>=', now())->get(); + $ret = ""; + if($all){ + $ret .= '\n'; + } + foreach ($values as $value){ + $attr = ($value->id == $id) ? 'selected="selected"' : ''; + $to=""; + if($value->account){ + $to = $value->account->first_name." ".$value->account->last_name." | "; + } + $ret .= '\n'; + + } + return $ret; + } + + public static function getUserCustomerOptions($id, $all=false){ + $values = ShoppingUser::select(['id', 'billing_firstname', 'billing_lastname', 'billing_email', 'number']) + ->where('shopping_users.member_id', '=', \Auth::user()->id)->get(); + $ret = ""; + if($all){ + $ret .= '\n'; + } + foreach ($values as $value){ + dump($value); + $attr = ($value->id == $id) ? 'selected="selected"' : ''; + $to = $value->billing_firstname." ".$value->billing_lastname." | ".$value->billing_email; + $ret .= '\n'; + + } + return $ret; + } + + public static function getOptionRange($select, $from=1, $to=50){ + $values = range($from, $to); + $ret = ""; + foreach ($values as $value){ + $attr = ($value == $select) ? 'selected="selected"' : ''; + $ret .= '\n'; + } + return $ret; + + } +} \ No newline at end of file diff --git a/app/Services/PaymentHelper.php b/app/Services/PaymentHelper.php new file mode 100644 index 0000000..9a78ee2 --- /dev/null +++ b/app/Services/PaymentHelper.php @@ -0,0 +1,161 @@ +destroy(); + Yard::instance('shopping')->add($product->id, $product->getLang('name'), 1, $product->price, ['image' => "", 'slug' => $product->slug, 'weight' => $product->weight]); + } + + public function initELVPayment($user){ + + $shopping_user = $this->makeShoppingUser($user); + $shopping_order = $this->makeShoppingOrder($user, $shopping_user); + + + $pay = new PayoneController(); + $pay->init($shopping_user, $shopping_order); + $amount = Yard::instance('shopping')->totalWithShipping(2, '.', '') * 100; + + $payment_method = 'elv'; + $ret['elv']['mandate_identification'] = isset($user->account->payment_data['mandate_identification']) ? $user->account->payment_data['mandate_identification'] : ""; + $ret['elv']['creditor_identifier'] = isset($user->account->payment_data['creditor_identifier']) ? $user->account->payment_data['creditor_identifier'] : ""; + $ret['elv']['iban'] = isset($user->account->payment_data['iban']) ? $user->account->payment_data['iban'] : ""; + $ret['elv']['bic'] = isset($user->account->payment_data['bic']) ? $user->account->payment_data['bic'] : ""; + $ret['elv']['bankaccountholder'] = isset($user->account->payment_data['bankaccountholder']) ? $user->account->payment_data['bankaccountholder'] : ""; + $reference = $pay->setPrePayment($payment_method, $amount, 'EUR', $ret); + + $pay->setPersonalData(); + $response = $pay->onlyPaymentResponse(); + $shopping_payment = $pay->getShoppingPayment(); + if($response['status'] === 'ERROR'){ + $payT = PaymentTransaction::create([ + 'shopping_payment_id' => $shopping_payment->id, + 'request' => 'authorization', + 'errorcode' => $response['errorcode'], + 'errormessage' => $response['errormessage'], + 'customermessage' => $response['customermessage'], + 'status' => $response['status'], + 'mode' => $shopping_payment->mode, + ]); + UserHistory::create(['user_id'=>$user->id, 'shopping_order_id'=>$shopping_order->id, 'action'=>'abo_open_payment', 'referenz'=>$payT->id, 'identifier'=>$user->payment_account, 'status'=>3]); + } + if($response['status'] === 'REDIRECT'){ + $payT = PaymentTransaction::create([ + 'shopping_payment_id' => $shopping_payment->id, + 'request' => 'authorization', + 'txid' => $response['txid'], + 'userid' => $response['userid'], + 'status' => $response['status'], + 'mode' => $shopping_payment->mode, + + ]); + UserHistory::create(['user_id'=>$user->id, 'shopping_order_id'=>$shopping_order->id, 'action'=>'abo_open_payment', 'referenz'=>$payT->id, 'identifier'=>$user->payment_account, 'status'=>4]); + } + if($response['status'] === 'APPROVED'){ + $payT = PaymentTransaction::create([ + 'shopping_payment_id' => $shopping_payment->id, + 'request' => 'authorization', + 'txid' => $response['txid'], + 'userid' => $response['userid'], + 'status' => $response['status'], + 'transmitted_data' => $response, + 'mode' => $shopping_payment->mode + ]); + UserHistory::create(['user_id'=>$user->id, 'shopping_order_id'=>$shopping_order->id, 'action'=>'abo_open_payment', 'referenz'=>$payT->id, 'identifier'=>$user->payment_account, 'status'=>5]); + } + } + + public function makeShoppingUser($user, $is_from = 'membership', $is_for = 'me'){ + $shopping_user = new ShoppingUser(); + $shopping_user->auth_user_id = $user->id; + $shopping_user->mode = 'prev'; + $shopping_user->billing_salutation = $user->account->salutation; + $shopping_user->billing_company = $user->account->company; + $shopping_user->billing_firstname = $user->account->first_name; + $shopping_user->billing_lastname = $user->account->last_name; + $shopping_user->billing_address = $user->account->address; + $shopping_user->billing_address_2 = $user->account->address_2; + $shopping_user->billing_zipcode = $user->account->zipcode; + $shopping_user->billing_city = $user->account->city; + $shopping_user->billing_country_id = $user->account->country_id; + $shopping_user->billing_phone = $user->account->phone; + $shopping_user->billing_email = $user->email; + $shopping_user->faker_mail = false; + $shopping_user->shipping_email = $user->email; + $shopping_user->accepted_data_checkbox = 1; + $shopping_user->is_for = $is_for; + $shopping_user->is_from = $is_from; + $shopping_user->homeparty_id = null; + $shopping_user->same_as_billing = $user->account->same_as_billing ? false : true; + $shopping_user->shipping_salutation = $user->account->shipping_salutation; + $shopping_user->shipping_company = $user->account->shipping_company; + $shopping_user->shipping_firstname = $user->account->shipping_firstname; + $shopping_user->shipping_lastname = $user->account->shipping_lastname; + $shopping_user->shipping_address = $user->account->shipping_address; + $shopping_user->shipping_address_2 = $user->account->shipping_address_2; + $shopping_user->shipping_zipcode = $user->account->shipping_zipcode; + $shopping_user->shipping_city = $user->account->shipping_city; + $shopping_user->shipping_country_id = $user->account->shipping_country_id; + $shopping_user->shipping_phone = $user->account->shipping_phone; + $shopping_user->save(); + return $shopping_user; + } + + public function makeShoppingOrder($user, $shopping_user){ + + $data = [ + 'shopping_user_id' => $shopping_user->id, + 'auth_user_id' => $shopping_user->auth_user_id, + 'country_id' => Yard::instance('shopping')->getShippingCountryId(), + 'user_shop_id' => 1, + 'payment_for' => Util::getUserPaymentFor(), + 'total' => Yard::instance('shopping')->total(2, '.', ''), + 'subtotal' => Yard::instance('shopping')->subtotal(2, '.', ''), + 'shipping' => Yard::instance('shopping')->shipping(2, '.', ','), + 'shipping_net' => Yard::instance('shopping')->shippingNet(2, '.', ''), + 'subtotal_ws' => Yard::instance('shopping')->subtotalWithShipping(2, '.', ''), + 'tax' => Yard::instance('shopping')->taxWithShipping(2, '.', ''), + 'total_shipping' => Yard::instance('shopping')->totalWithShipping(2, '.', ''), + 'points' => Yard::instance('shopping')->points(), + 'weight' => Yard::instance('shopping')->weight(), + 'txaction' => 'prev', + 'mode' => $user->test_mode ? 'test' : 'live', + ]; + + $shopping_order = ShoppingOrder::create($data); + $items = Yard::instance('shopping')->getContentByOrder(); + foreach ($items as $item) { + if (!ShoppingOrderItem::where('shopping_order_id', $shopping_order->id)->where('row_id', $item->rowId)->count()){ + $data = [ + 'shopping_order_id' => $shopping_order->id, + 'row_id' => $item->rowId, + 'product_id' => $item->id, + 'comp' => $item->options->comp, + 'qty' => $item->qty, + 'price' => $item->price, + 'price_net' => Yard::instance('shopping')->rowPriceNet($item, 3, '.', ''), + 'tax_rate' => $item->taxRate, + 'slug' => $item->options->slug + ]; + $shopping_order_item = ShoppingOrderItem::create($data); + } + } + return $shopping_order; + } + + +} \ No newline at end of file diff --git a/app/Services/Util.php b/app/Services/Util.php index d4f4a90..9a6d48d 100644 --- a/app/Services/Util.php +++ b/app/Services/Util.php @@ -165,6 +165,19 @@ class Util return false; } + + public static function checkUserLandIsNot($user){ + + if(isset($user->account->country_id)){ + //ch schweiz is out + if($user->account->country_id === 6){ + return false; + } + return true; + } + return false; + } + public static function getMyMivitaUrl($protocol = true){ $pro = $protocol ? config('app.protocol') : ""; return $pro.config('app.pre_url_crm').config('app.domain').config('app.tld_care'); diff --git a/app/User.php b/app/User.php index 0d3d19f..bafbf6f 100755 --- a/app/User.php +++ b/app/User.php @@ -342,6 +342,17 @@ class User extends Authenticatable return Carbon::now()->diffForHumans(Carbon::parse($this->payment_shop)); } + public function isAcountAboPayDate(){ + if($this->isAboOption()){ + $pay_days = Carbon::parse($this->payment_account)->modify('- '.config('mivita.abo_booking_days').' days'); + $diff_days = Carbon::now()->diffInDays($pay_days, false); + if($diff_days <= 0){ + return true; + } + } + return false; + } + /** * @return string */ diff --git a/mivita.code-workspace b/mivita.code-workspace new file mode 100644 index 0000000..876a149 --- /dev/null +++ b/mivita.code-workspace @@ -0,0 +1,8 @@ +{ + "folders": [ + { + "path": "." + } + ], + "settings": {} +} \ No newline at end of file diff --git a/public/images/avatar.png b/public/images/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..5bee26514802c0b5ffc90cca66a6e4776aaedd7e GIT binary patch literal 45885 zcmYJb2{_c>_c(sXFt)J|rj4{{Y#EhGWQ`jo`oHu3e1Ffs=TVQ>z4zR6&wkE5w*b+xm*;+{v zGWgMh>!Esw0Z9V1x^FV7Sc|7kNB`SX zflIE30DYa0i~s_aqTG#(&!j}#TZi@UuYWFAD0mUKg#dUtJvBg=QbyknUHwB4HH~?E z>wt?Yck8l3L1-ivfWrMa6u_S8`0HF1ZHJDjjw5~7vfeBB4+6;Vh9d)nj=$G(PlV{a zC8oZ?KhBJuUs2F)s2%}eN&;e~tiUz?RMEBf4dL-qL})*I>h+sj0DRyaT}xskCda{u z@3!lvj1={r^=>4n*Cn9A5hd1oOC>(UOX0lKB|Gri8 z!{gRSEA%#C_3PQ@J3tSJb_1Sv9e?k6gvV7s0G^3QB>_E{^U>5wNS1LgNE|4?vgb>- z-htFLfDi~Ti?(ZX2$2;4(&lMhLo0332;E`MNN(0bU2K~8T(&zv%?IWVu8c%;={j>p z5(l4lxk_325&ewl_9t*4Lve7?| z);%MWqnNz+_~wskK-Yq@O1akUw{iuW9nl2ZTl-_BB=y|^jzbKADtyxHsYX|z=!%sA z7*j}wSW#hQ*Zm0Wh@sVX!DIvlK-dF&#_@m;{=&`KDE%51T?j&*B0lD-Hr#Ybf= z$chQ)2;4ys6;R^{`fbj~e`BxJZr$|DMi6~n_Tn38w*g)lavrVBTJPat37T#>6&-4L zUIXwuIp24)!m#7lWX0#~ECF`d9sQ=xSYg=VDi}zDi1uL&ex2L9bENt%ps9-p8qCjT zqkvsD9I+wdb^*+sykfG@8ze~*o|eeJDvYF0|MWluC8+CkB`JrqSwA(=pmK@U)oJG~ z079bRLMcxb1nB*o!38crc_Kw}F`J5ZYS+ksuG>%hFf4@v$EQ0mv`QjtS33I1aT=IQ*VHwv`(3^zEk7*6e)j=urPGN{&eLS-qP*gu)GVyDUf;R$-Yl$# zB}WSqL3`!OF1T6$woDHrR$tNGV$PJvMzdB0bbTQct@cvKS4k@a_63K|zb55GkIgkw zeezEUrncS@jCwxO+EXa|{$}rsLYfki;|>T~u;Qu5W6v4lt?i49 zBUWz;{A0cMu*b3PH0E1-Zej<7-fnSQ=&8A0iJyD`yGLo|mK;V3)zm5X+cG4~b3o?s zLM?uMcBB6I-_Tb z@3CLbDT5k40-FBBO@E_!vk5&ts~|cX*=vc#I)>$_pjrmy)t)rmV?UZZ3<{xHCyJ|4 z%0_K&5*c5*&iB4`Fb4ZW`kphpmUkilZkK%5Fa@wsdr0Qn2rWS7v9(~PxJbLc)h^kC z>z=l6UZES1#2b*9Mq&u|BZO|rxNGhU+EH;`^*o&|w`TcUD$CR8tMxP{ZazNFb!6I>`}?kv@DN;umU3yXStgYZU&9@9VJ~88Il*6Nl3h=NO_V51jsE+SWdDR1ebF3;pZtmO8 z1+i#^4tq?R%PpGfN)jkK`ePgXrV7=1K8BQDHU(X6+@I~JqAq>EiOqgzR;@jkJBZkW zL+R?af7Cxd?J7o*>&|212dzBKyXE21Q7B&9<#%80o3Pa6SJ@9jewP?BLIpqXj8fB` zfYcNc7d`gNUk=;g6|M$WUPIF=n9KgB;hovvuYtoarCY%a6uTq)WL7(Pnm>k29t%_1 zi6TmL_uF}Xz1vdjfx#k=oFbsRNPO|nGSFx4l`MUjWYCf~9|@}omKHA>suZ#UVZJ|Xa@ z^(Uyqr(!E004_M=QKIkTaNV#mC!6mU&|Ueuu`Fe=jltKS{Z_w)9evRt3IZSw>BZ1B zdaC(P@3fhi(*HwiWdbWD)T|7H?p&8U>Ax+iVhu~$1{u+As%7^_#5yOdPVwuXlXv#+ zw24LP1~9)bTYCDud%J$}-PIQXQEK#h$p6dxSYg|(n^)I9X6D`i^U}Jx(4>YYhqHiAswymc`_S{uIL`@PSIA-> zd#qLP$}{b`A-)#0qCjG(|#FfIlAoKc{E)Z2;{bf)GVr^a3l(rcsB22^GogK z%Dh`xa9KB%?eoh8O*4ciRC%wF0~aY#A?}4%+d9vUHm>xv^OAnS)5&9e`v^GIMoVJ%q!NWiXT>lzPNtnGy)GpMLNCeQF?4c&EUJl%Z|TCWH44~Dc|K~#H~^R z$dAuuY`h+el04YvZY8aR0d_Hv(uNwWjiNnA$DSy!iXg!Q^4eR=@TA1g(!yD_s@!(T zaK@R6VOsg_P0x?yZrkKVr0GE|J^+Tq!;?Dm)MJM)e_zS6IN=>G2GXFhvD5ca)#|@j zh7}P+RA}D-x?*{>v7WKIJgrlK6*U)uAB<|&<6Hw7H{+MYS33}ZacHH?IBpnG4;{q3 zK+`1o)AA$D^9s(@P>|^L-?Gkgzhi_XO}Z_o09CkFOXB2@gQgV+-v64lZ|8Bt((Gj9lZfvGKD)2jRGY zUBGv2-&p5Z!l=uJk}a`s_Big}jRKU>Er&cTUjJvG8fIFSP! zOQMH7gA>gl0eUSA>#aEx#ZD2!MgoUJr!+Ns8M?jP4BgcKl2hm6J&&_USU}{e@GcWk z5h+=I0+;qez3y$*SU%RCllA4y@D1nS$+&HR=)g5mYVM4-I!!>scqxAELUU-xTh&#l8iH}-nR9e+RHj+Pberzss?TlaN$K{~P_9ieove3B>SS4E$}9Mw~o z`<*muBzg8AYFMEekfDVqOChH=ucsOP5k;^K898ErWDAAW?O^QE)rp%)&Y`m}qud}Z z_82}(P#PLHxjpNC5n$dx*omBycjXK;#zzH*tGx+*c6fWtENKs1 z=Z3XAmXOI8@3&*61lA7}R;6++<;V!xj1X`M~qeF0`)9CZEoVH~)0CdqsRhi+3wUNh8 za}NmUsnI06z49X68>Z0c*@J_o*t-arm_qjw8~WG$t6^ZpqdlCImj3N}$3{(cW6AoM z%--D%MbiNYK%itT*jGL2(!XjqI~7$5<@7IM@lxC?f|)Da=qgKELHjT9$ms7^Rqp?wG#k*de*{~ z#-R>cUGmKlU~@Tr7p*F5A@+WV=tdAN`05}4V;5cf#*QqXDCONY|OMWFnphjjdU zmL!suS^YK8Irygr@8CXM9Ew4Y_Vyd>|BXekd(roxW@p?F(4KiU+kUvyLB@^sZ3ccE zAjvSg(tn=Zzwbh)+31$3F&cnNXBGaaEGP*sL8BC#k&CSt53Auq#N>l$> zH+%S3LSbuQS5~56#UK|E*XR4~po7^!5Dx%{C1;iowtLzq$_01v>8V+D zbiGOrJExHSab*PoNTQua8yg#^y`LXys?SA4yA|2ht2dHmES2Zvu11%YZUdlaKPwE= z%lJ`K^5bCK*Wu1zl&J6gLpoo)3BkRWY_f&N?dH^!XGpX7{QFH)E7fzgm; zo5u1+{$|is+fSqOS=)PH$#ez=YC+D+4=o$SJI@gmAU5)>urgL(n@=tm)U9ndUet)Z zbt_7wU={xjm~DJ=FZ**U)(%!%lMnyA>ibZk;K3sq&3RZrQ4~F<-akSr|E5Nb7b-yl z&;Tc>{HWL6&&|LGXt09SZtEG>*Jtu248Mo_>adfl)9SF-S=$6JLoGQh^}4F;^~{CV z9EE~~ZM#%;1KggrZ@y(|CvB}q6ne93_4p$jdpws ziSmGZSk{~>otC4<4_5&n^ZIXL0?}(Oql`}3WSgtQCwW@fQ{n4j3)wuha1B;d(ZQv! z)mbe?%1gUYhoMAlgM?|~+67^Zin`J&y@w+-dk6!vn{=~4~`)2G$vKbP0_-MW5WvbA4O z?s<(A*gLOW^BfW~U0P4A9a@vEe@_N=q~*aC!0p3~+wOY5wHaltgNvsk1n!kPx?o6V zR}3qjbL`opU5AgHg#;2!b!6!?3$CamXnC=U<4v);cCpvOWu&;idH1$}XP?P#m;U1h zoDMl1o0xfj%7}Np#NZh}X}_|SfUH1l=JLGqahscH8h0tqCNG`$GK_C|B*e>`Z#Z+j z;^;}iSZiH&TISQS+O6K0lk^YQJ5D?IJ9`>dq|}96UdZN(6~`Flx_PZv@3>p=^^}g= zv7KOR2O1{yMN*e7gZ*8u!_w)Bec0Rug?W224J#mzi{s)?u>Gx3aN}tH1P?Zgn66Um z2+O?C8#cAr5|809CJQUfEfgt=)Y)$5~+ z*v`PXB7He-27ynG{pny`ndYA^{;J)mZ#%CXc+)=2pgi?Xb=OsLTRtB-6FT>#@t1+g zue^Ep+wxFl0i^cEBa0I`trc7)$});MZ(T*wdVb1Lr^~GFBVdBFykMoR@x@PE$^gO5 zpj|@AC>w4mQXJIcXN}MDZ(pnx-JYod^T{AS=bw)2@~&z=k0{t0W8?aiI=+PJ3_z_A z6<*dfS<12(-Hr@QY+y(?ERQbkFSy~bqNZOBA?}9=I2ERxyL>GR_&Ing`R857Mx6CT zTPe))be!aEXbsry18d;&KYkFe)a*i7$7?U%5^lQnSbriwrHJJ4)3F`{H-&{rd5j#p zdd8@+KvoSOTJd`E2$$OipDT?0bJ?%ed48CVG7I<;UEQD<$KMZ8SQSH7R(A#0io^$J zpTYJzPj|h#J__1X8yIK*4!)SVUV7&WAK8_QgWS?Mc?Td~&D-dnLqGzjvm5`is6RF;)lbcL}n+O@z2Rur@0y4+0(p%$B>z zX4l&CC%VGi9sAGy6|;L4$?s1E5T#(`*X^L+E0SWCs)pB81ItdMOwPQEaNe24%vTmy zmZ%MrtoL0fC^y)j%KcRRe`E+(E{H}3|2YIh$;W%kV;SY*QcdyDKybOt`n^iHKk!hK zP~xfTzkO!EQ>W{Q%mmM-y~(eUm)s_oJti}6Gw`s~gElo@FZ_`5>CAWw-x1SL{-P0B zXdAQu3^J|O&%l3L`L(efdao#^iFCW!?@*O6&SsHkI#M`mzvo*67=xZWMxbT|jB2wU zNG$Ggh0q9Sq?q_tT5h0j#h%@Lk=VgMSnE*MTNLG#fBEkh4;J!T_!2)hL?Iwyq1cUb zAfEGKX(h|{U!{C*!Qviybd17N=t8NGa~Wv7q$EnfAk=72&PJ&bGO$&lm);L2Ld;>@ z%>+qYTDu`bc~L_BYk zu-NxzR#?HLs68;?(#vY;c&B=sK||=NmFPievZf-uHD3YSo{n_blX73+rE zQKgBz1={;Y0*{gs!jd1M<3W4A6vS@!hzkts-w2UjECj9fpi;Ke> z9?XAhM@0J=YL#DjDZ3g=!`ke|#qH-yaOw4{(-Id)4vF^v2(WC7igq%Jtq9#qysnm? z8+moOa#hFtEB9H5<_?JFD^rDR%q<^X#`TW5JjU%aqq+$)6Z`vK61dVGZZkH{JzJLA zI`G!bE}DXkFfd-Ha_FOfPpHUBYb9&D6>obpOvhc0yV85EcSv8LZb1UTG`UGB&uzvA z%T5%L2_Y4K&$^eVe}42N@v6+LGR-saf+v7;8Mz@`a$af!!d?;5Q>)kYduq#{5Os!e zwoWiSK1$&0DWcEVF8m`XF$d@Ulr|+?)#~*L=uUXNix$fG;##R?YrJf!7U7ZV#ve0X zgz5gb%z(N}k$aTmq@ln-vKs2U5iPneGv79$32GaOQD+`CEloGbzGvQrjD;AN?(?N4{{;Q3=MRK=w}*PkPxM;rI8 zWwPDRvSU<@i8t7!>$9tZ^NE>!NgwY3qrJ)z|9H5<)V=VEKGS8zjoZk>ZWrBxlh!Fq z;^jM=8|O_;KXWsVe2`|UhRJc|A1V|zu0T?&lec-4#dpzIP|gXu-L8IAKvrVk*P1FWyMA2(;(x5flTvB`>Vq&Hfp=9o%n z1(M`0OmAKCkDMV#p+>cU3;Y8IA5Zyr8=ILGXmb9$ewJhWUu! zSV;v)=WEn>gwZnAwPKzNo8`gES?nKbg2hk07Vdm8%;(!#3laT+{nWvR1w-B>BS|&- zlYR|Mm9s-*Nh)UklH*k<}X^Td$tqxu*1z_2zER%pWL#OY5PtpR_R}rw!}Wi~gmgJ2>+vG}cLo zBMm;laA|T=awr>t>vYjzc{@Id%H>Opyna8R0rxY6h<7+o$gU;IYF5@XgC=sr+=XUD z`)S#qJ7M~Zo=lw7_`VDJqVP>GtBHoCxO`J7dziTb}4HCgt+Tkv$xlA#_Tp>M?PN`QePQ@;(&mNiVl< z>S|l#Rv%1P^||xc*vf;irrygF`>ZgBy=&^$cf(2faFWE;JjvL#)5N`;+R@AUKU^^p z{qHpUt$&yj+I<)gyGwl!LNUQQn1LfKwb{MC4^c<=C~v-5(5Ni@!(CZ5zklDprTyHT z%g7=KEnwC8=9asc4y`yu{$x)abM1AN_I!I9CH>_q(aVtEuCQDIIsNdcHu$)z$?|d2 zp^3S&MR?1K+f(}_+Rr&%ySGCp0B-1Bp*itYU6M2=BQcO}udf3WifuA&C4A&ZsYSQe zp0O)`pdgJSnnAt(D4hM4DXaY?#Y+0{j%c^bdv8767+%>1IlCh&nk1Q;l z(ItlFF|3HTeYis0_OFr4TNWn$JUe;u2HiERftN@k*F$KhGMFMI26pQwl_OZ&P0m2{ znyfbGd~^_f;{9FE%BF-%b_0o5iPYnIytG5E72dc@YVCLbb>dHe;yfvJp^85Nkv@0< z{c^3T4f%}hF(x9U>J%x|yO8b1M^@1HNxiBu24&jY-t)`n--$;-&9g1xSIKkxNU6=0 z^AF=}XO3S^qW4`n`KIrS*QfAv3V$ttO<}nvh*ittx68EOA@F`cTTjg~H9&j%)vSw9 z4$tSjsA|3h1TKY!wR4F@-{{gCwHnrg5{km7mZmXz!XO*)mi z?XP#fV84q_`C^zyCO5-}@%F~1je#%}jI`LGllpGJq&M>PhEhW%u<3QtoZaqRJ^W5^ za^R4j+R*ip`LTjc!MQ5Z1h{N;J{Vm7;peJGqo#a%(ZFNSO?o6UjyywS2pQw=xei^pRZ}c>&nZAl3m8kRC)S7t$gzUlY5j=Hu7hGjwl>=S9Ca! zPrzOXmfMH2dwd^DYV$Nelqf$gxVPQ;Wj0@{t9Z0q;q~tM`BxI~h>CJ*uy;oasRSzl zuD>8ES34p2J-Ev^)aqx$^Oc7E%Ig%zj+3^Di6aRb@NCaLofkavl{{*9J?P3$H&@rL zpM{a|O+*W#Jsxfr_tPF-Qo>%l)HDNYWa-^74TE)xAx{_Phm?O`gwstR?T^4%v!rBv z?J{RhpG4B0xPE8#?c$M=@Vqeg=_+avV&py$DfwA7^{Ngf?R((46gHLudpM4rs4v^f zgHx0eF3dv4I0U8!j07)5T{1MBam|O+?y%21Yn1zkI|kZwzokvDYnRqkiwqofN!HB- za-+(2kQ|y6dgb-8r~>to-@hBtogSXiZYarAu=RP2`l^D*Mt&cPlvDc@Wh15092f)T zSswPp98Ujv_NxmeXor*agVRx|P`t(rQR)b#4;r$8&dZ}hWm(xD(I)rY;%@YM8m~ip zU!o6-E9H|)T;=(EJVb@==y8LXXVub&^N6BwJF%E_;q6Wzbu3M!Ioc*sq2BRvC#b)A z9#Tc|@kiAiPPG&1l05Jxx3VHDK1HBqdN~@{OZ?d# zIlfc!+D^J@v(QlNeb^Av=T}^lC}QV;4$@2-PgnVp>>+HINlC9}2n}6uR~m@y-uVb8 zpsb|NoI;g91o)JDYJ5^e1))2Pxj#ymC8FK>U@1k(OXq0qtvmlYd1U%MK`2;0({mvx zgq?}WucL#6Dx*fXK6%{bOWhA^88c{EW+J>p?zUyW?&TusIq~U`te>Q;20e;ATI<=r zDp?5|U#2`ORM`(x{=J|>|K#?ezd{m8dNa+LSdg+>^XOr+%GYxjk8v)tm9A8&vinp1 zm4OrU?lE0#&;WG+Dny#aiG(+cDjHqo>DK&Ydx!k+gt_fASGY?QYML`Tgu%p@1!uvM zT-mG3T?21_*|wW(a$4_RNKTk_KU}G)NR!yO(G%V@MY?1d_&Gdg<|ZKS;6!#MTC@^A zv+^BvE|Kv*6OM=${c$TyWl16`=AHpmsS>^f$GTtKB;Qrc%wv!yj+}I?yE<)Di1ZW3 zEEHx1Y^7~dDpFTPU3P;HUKMvVfzQxO-(I?+g~`VK7dkr}tCr#M(WM7gN?`!q#Bxb4 z{Ui;Mux>VcI35USyTU)z2G>|4pTUIPx~3&rWiV2aJP~Y#S)dLWh4&5!3_~w#-Ap;p zVL<1(sz@$7#uYTpuhsD4$$5AW)cD!Kg}EunEaKR#JvFZ;mwCX@3+dh{a5ll2?@onM zu4HKUA(0FFa6b$yl2^kGo_&r~%Ni&{DJzXMzc~I=0+qBjj*D zq|N2}2airlgx?}bI%6;J0*2aGVY@RI5whDIs~dP2bzFC2-tv+Ew(7?^oz-sXu_P57 zsh#2iKk`O@1r+ceppjE7a$=m0R(WbV{A5Fxc4n*F$StcE+%t-{;@HyVoIqs8^b4TXOyy94vE z25;K;+v9=s6J_XfB^kV3WPmm3>aTdJT*4)bV_y8y8Yz4+c5r(avV@tJJGBo~{rF0k zCkmZbTPxxTjU&~ZA$(2G3W#*oy!y>@S%`HW0<#h8Z(WuW0@P}EmMD!HJ04Vu=dOag z#vK{B&a`rYc$+(4%#;K@=c{+pp1;R#`gndvBYcx6wJOr=rFtG02&Av;Q=m9-SZ;;8 zSt}GYWV8B>q{{qSSOpHSCotL5N9m8V$r%W1zXogbl|Qi;P!z~#Nr72MddgSwr7$y) zY!s-s_mcmhxlp1i2Vm)#w6v&#>&Ol!N(wD0^+o52MKg~&saK`GlD!b@0)=bg6KBtr zM_wAlOUZx!Z$_JXP3o(;vp%=fX#Zj_R(imVu28>|Qq}v)SKO=A3*4faWH`kEqH@VU zd;Q{fK)DIW1FL(=2hLWv@sp?e+7=_i6QTmQ5n-F@uV>$vN>McOyH&}#kT_~4rPd<3 zI;-m;*3RC&{|q2%aEbo6c|a$Qkj;T}cuRFBDrgu1dR4kf$W;Hm6}52)Zs>eZjhYa`Q6 zsE!@Src-JU3HcU8B&A7=TtFx#_*yuegBO8&pXVeRHL0V?C4+`q?&kb@{>~0xOg7XDz6t5j?gpqF z0Hpod{JNyTQ#lKnC@H@exzP+*fK(E5EOzuv-|Xr-DooU^P?;Qnjf7_hD_=x3@v zmJFX(!A;8H%5>cwi~qnATspu7Xw+p$nq5%h;{=AQC`Gp^wZf%USt~nVM*th~lc?pA z?SO`|X3!mAy$05HkJ4^A5UlhGS^?}J*dr>pX9_J&03Ztcoc(sbXvKA5$L4Z!Lzl}QTFK&POV^9?(T~&{bHry5| zINoBu_#0t&X7SqcZeD;c9kmJfvW^No<@iymOpe#QwyB+u>>=N_>{weA1`9LN(4T8% zZzuACq;JX>OpqnYgWeIo#P1!>O03faEgfm0+p@uGMIyvYZ2g%BsYqb-eBvh006|Fw zH~l+nn;tvqTh_hR-y10H$%HfsI!db+0o>O-?IdVr@3ro3x1+lo=&}q6S`y}Eqxy&E zI~59sI26mR<<|(B1tk8W6wWb^HXflxqlP}lQ$n;m96UAtv9RFh^LeYz4bs~}Q?JwG zR#^}4v`PCPV@+%L%5yUgiyo7eRoY6w*PYKxRPitM$vr6o2*TsMv>H#nZhfiWXX+l` z6vcEJ2s&nTRAqsq7tcxnd^HSgqNRzx-O<7-h&kNhXE%j#5HDCs zB6oN{;fWoYGe6xP!)fk<*-olnmHfp8EfT z#YZ!r_h{44!A;$%2?)~LVnr0H+eDDebvFv4bn5?>UCZOF%Yy50)r}#C2Fi9vGr5i& zqR&=B5z)2!2|$6RH5v_z9jmK zM@lY&gu86anc=DDZ~xcp0_GapOakL)ep@C~GP0TXvr-hI_&oyrxZEOqmZ-aNxZ9l} zI4Dx133Hc>{kV~TL!LQ>#@`Yj+6$TJd&?`L0tI?Le7H&!g=8jNt2K;f&S;c|k%lk% zBm!*oNHd^2&Ahv6K}s%2DT6hw;*kAo-i5426)}vT-VxTO75jA9V&6`ziPK>bWgNh} z>x&SL52U`Jbd83?{`VpC(12M>$a2I@8Vqu-9&@;Y@KG+f;c_!EZkGzK#()RK8tf|Q_$M5~A5!fP+rUX9n0a3ps9qV;5Rrfk1eYe}Z$H&rJfE2{9Mbi6!#Io*m zd#Vk4+Ro?yNJHPddV?fZR0V-mOQ_U!`Ne9tQ9h5=I&l^_kGb!e`l-pFAZ2CFIuHxF<3o zk6C){QBd7n0QEv)C?tOufq!zEm~3hv%jUZV=j7MR6&WInm8T;SQDQF} z08r7qz7+LOPrdhePhyQLKlx6e&F4Eef3!njr)2H|QrgWc!by8jL*ZpN0)w4&?(E0O z7+Xp7pD5juE3jIqG9@Ou@#&SSgaVLOAzfMv-d&T?WO(1${%9vs6eGgQOB4Cc)g(z$ zUitVH_BGmxbbs4PG#!Mo&^o-r zO)BlIlu>lP^qPEZH|~OE$4impK^`~f{Uk;}K6%9aziE@Nmn7)vZoD^3qo`D-5FfeU zcFLtF)AOn@US9PH02iJ@GjBb;ud(<>s2tejX#}kKYgS;`G4~)r!wOY_cqf{S-k^5x%0II{?+^2UMjn- ztn0b-*#CN!$-{R(7zkwtM?vi13yJi$o72b3&0MUf9bWCzWB>LFN6J+pv z(rI5FwYG2iSzlB*tf#2vGQF6YDW3vi(WvT;qZ1(Y{wn7;-4m46@4$hifJ@c zSEI+dh0yQ9mOZ;KcdsGS)0IoiqnV>c^%*M-FpeG^A4dUVI1CF~Pg%431#F$H**mxy zjkXh+ai{$VB$fGVNI=tmgThyTHnDY*U)mAPw6%f;s4N4UZUG;m74%yIQt>q7q$GXc z9?e%J*Q%{0x8f)(fz>t=IUM>rT1g;*Psd3~y!vbMj=i`Dy?Xni>WmdwDnL{*h8zIt zrx1q2By}rk0DM2|fKsq4!5~PN54wIVa(m0I%V$9z2BiU?EKk z5b>I`rKDoRG%NS<@rseTMsds*^_>^Y3wZx~8AKCerP@e-XnQP%Q7x*? z7?2GkI%>7U9;cSGA;jxc@{k;E(>{6Q%&HeN5e9LdoF>S!simx701GUPlT!2^E6HQJ zgq=*GxBgODacbDw4L6$FiTP@4%eCpPPXthD5tT zd|tA+YD(WxnK7`@p6jl=l0(^lTMCP)z%2thd3;i-%+({?;FeJ_|F@;Z0E!>r8wMX= ziMmOxpsv*RQkgbNWVl_@Zr0a3&6<6Xv0?smJT!H<6N71%{6bq#IsjQvpve_qB0zLDe*G7z$TS@Y68f#Y|fC1#aJ zy60zLak22}7V*UFYm!Beo%L6z%>Ke?CTvcOeSNrd;-io*KiV1r(mNhkqfA7<^jKdy z;C_ttwWlMwPm%0hBHtIph12(Tp#ZS|ng|N>LO@BaniM*Sv+{>i<~AI&aslReS}0DbXm45Hv=(R9)@>>{?H`zMvH zQjUvn4W9dP3AUBtqU97}cld(<8*6x{|6e?6cFE((yFEQFRRr@eOlzdsqCCpvvuQvi zAaTK_)K5J%5)sE(VO9_l6-N9uI_by$m(vjcxg!BcGwe??I1?*L9jhQ4YPn+B3EbV% zt~w4!IB+mi4cJIxSbP37$&%~ka8CA@d2pmJg7=Ju2A47Ce{CBa7n@% z#n50qXsa2~vRQd3P;`gG{59BKTiA zewQgtVt&iAE(0Lt&4*Bm9VB7d)Kx`IgI;UNek{heKPZpn4nmUKBwMI^IxC*uZtZOluc`Z;ja z?|SVqq{&liEfMyeOA1$n8Y^%(Y29Bh3yAN&W+DovD$82P9iP@R1~+@G%$*!vMCH`* zyy~whNRX~6$`lKN9L36gfI<+G*trNY8t$ba{G8Yo?!( zeXcL*`NtYeU$roK0ShT~NBA%R#1>yE5+{^HpT{{@IDKOK;Nd>Pf4UJgFvtf8GSH1l zQ^|ss1_UR|p#*5qpG^m3EqX3v3NHxHd3miN z0YR{?fn;y25Dp)MQ}Zf&MXEFZsE5o#HVak2cO|env5Q>Urp+pW7jV#;#cVD^F(w?e zG+7P|!%%`?*XMz4fMN_AX}`oPPZ#DL4m!fh4GJj3X)BIl^Q5?d$i|jP3d)yZJ5*UKRG5B#|jKXQ{)t_ z;W;jj;qj-{FS+w}9|{io;b87$sm{)?k)WfCp)vuOVP0~tgcl&*kN}a)XD}0lu8AnA z2t^!VPob;V9J;*($WLK(neeWwx+{n)eJ@OQbaP=xRfiDXK;2q$u7mBM)k0=wP!s0< zkNDK35{Nx8fCUm5CKI}&JIbgbHhTU?q9a`BxoAUm*!c@XzWhQeGe2vgBxs_eG_SVM ziy09=Yz>_??cc0Qy&%{poB6#eoYWT0%zk<4QGg)X;|t%aWZVEEpg;$r@CCL#D_bA$ zIY-dS>j;bZf4u;4MZ{;t2MTK>I9tqDW>CqarF>#@Ej+dteoSGQ@)KvhGN#lsnf>XKP7cU~+@NEUrSn%1E%Wj)edNR=u-o8T(U3;C#>7GKKlAmLwZyvLRgYfd1a-Z8~Skol6*S_kf}viik#Uq z2gt(YfQ}8vuKz>{S{I?q-M3|-oP2rqzj2dtTv_okw%HLTD!tCxLlh2G6r@~Tvnfke zUOZPdppr%jIRPsV5H3+2=CKw&1Sk8UgqF5jRQL(Nz_zW2o8e6@&R9__SS*EM8~j81 z5^q!HqNL$&_#y|Vfjbx>J|@5kLILrRh6ge}Dx*m8vF<;5{$aT@lF-bCz<%YeXJ-?^E2Eu{ zHoDFcYnqUHb&w=RHUD`HEGJ%ro>DwX6yXFS@uf^03zZMKhGR!E;!*|Nh5@rmhIL zQ~Oa2_3CU+=n7AQ_wr&Z;x@C}2G50=DTFJH9p^wGF6A+%ocDV?uU(QTu!f8e$}6-8 z;f&y-a)b6NsNl*9W}5S%@rHj;PtUWB$^2v`Z%zM#84iOTzdgbfSybh$IJA0bDvx0! zaK(AGMX_J*d%00;mOGSz?q8?@=OhRf4$og?X9cKPGxqZ^suvGLm~u>}A|ulgLK%>s zIbcM9-dJLDgyWasO+5TcH_rR+tuk|fo6*^0VfK~dV<5ga2G4V{))HQhPx`;#OHwFy zL$Es>{;JR&!F>L2?+J)YjV$KjkuQEgx^jzyD!_|WV|-_SWG%l47u|2gIV!W}KYmht zkCm!|t~gJ`nqBLilV6r#yWpMt8SX9t5gE8HB`?kN>eRMhHZe?i5ftT8vH~8Nv(@&@PTt4=u7uHh)y$;}6sXAdmykJSAy%H%sem z&@F8$<X1ah#vc)b<`@$1v2w4FU z-GRew%&7Op7ng4AB6eHN!;J}*DHbV|m0qh+Pilf&wFF?F`WXs~RQn6QHAs%B%I=*` ze7-dFvrvGX-*fKNO>qRC+YjK?2A%ks#K`hlh+VLl{JdJh#XokW#uZa;P?R`zn52FwJeyCX`|gMB*YY#m@&=Bm>6*$z6`W+QqQ^of z4;)yL{l>7PrsQ+*(1WGgoKcpaYKYsy`yB_l)Xh(xZzS1va=~EGb@|l^Y;0D|K#<$ z=bYE`ob!A>&-3|sK2AvjX*^-h_PFzLHeb7`kx->zi8?qofwNB`#x$yP&^8`6)F zHVp(LerPu4v4UZK8W(?MX@CSmD{r6h5W0Kxl{F1^%B*5ANO`tTk_;uJP;Vf8nlh>@ zRwTbiyWhLzTHt(?!dEh7{avWZ+qwD-qb${6dHstXTV4vXU`&IG(^KMfa+p75G{(f& zYixAUX+k^5FEyGM;rz7|o{%SmrcMgeMDzL1M@bOQ1)7ne&uwd51gcic>%N%3rbjeN zK)enmzl0HC4hEbQW1#l+vsTFNosl(LvBHl%cAhzw>m<75b8Eo z!W7psY5aYO_q!g-h#N@|qk=<}i!|;;eEBC3e}%@|fmdOZ8pd-k6NIP+9wo6MTvQGs zA9$HMd6$YV`jT+-2LoI8bD{RQk&PY5&pem6$M|qg@cxya4wUWTJmQ%S8=MddSc~BI zN+IBM2wej=+}H3V;lp8G3gXzZEC*JN_ZI;Um)F`Cd(j z4G|dq{853)NKMAX0G^<8BZ%NjZU<>%wo*I=W)D^>(L7n&_jtY)YTV=-Z~n5W(-N z3x?ihX^k}{YO-jRm7Koq3myD-xRDJ0OE>7fO*)2g!Y*H^VPR)>LjU{K853bLdZ`BT z$`{+g_kx6>Mb@$Bk_Qo0dKMhhWO+Z5(@SKqO}>?zes6A8<8HwHDs4bq34Ol}4xIFR zroW;DkwUV$zS>etjS_xxtc0p922pW1%rM~3#w?1OslcwrvWXt=mV|gFKo; z6UzTi471f?L3REN%8w|y;*%f}Ist2oOFz70;Cs;C_aG2~E-RfhYIewlft)EUK7OQpNC26~Rl z-sxu=WJ|`$u!r4lBJ|hGn&S!?Hqg9a@w+u=nU&|i&dH`Se-75cx%(ycBI>?!YqzOT zqvZY^8fd;>ONok4L4oxh3Zik~+g4CT39*r02-Q^SiB^SBCdA_XjA1q~9HlkAixko+ zo?c!qFCawsh1?fMOX+{6qC3>5Mwcx~hziST^O6D$q`HXUersEFy3Nx2zQCV3t5yO9 z=>cw@a2)r7uV$WubBfSpUL_5G`a2+e@IT482$|K*fjkn$9ivwtO+ zx`AXDVVplrw0xQIAx~|I>(tVG@?gP}R!&P0=tCu(+sYXPMGR1@~V1l6jK;L4Qe;Gwxsb68&Ts(BzgAdG~||ZF_b@yjQtj7p+7?&%KN# zP51#&*bjU35mLT1PeIt>=r?{}hTmxa#DPB`bR8kyX-it{4GoU6BUu50(>v)>8l%q7 zX6zEV@QiM7d?7u?Gxk5?i~Q~yymFeAxD|!r3MY;0eC@iBgt}ZJpW+t<_vGJ_Cqzyg z(i<>6I|)U`UXLgY9w(s|`|n#(8I(j8MoD!xPSQS-UuaD-M?C^(l|G2D60PF-`b93# z%Bjzo0yL79k21QfS6d@w=6+t>eH< zRI=AfcN2I7xj$~upmF_*(NM~4quI1CElGRLdcx6^z^o#f(GzmocIYiaeeNjRWJLw` z;Uln{4ADm=u5-Q$Jj^dhve2N7EVa2*N1SLtSjel}m>x-tnEH1gz-?)51fDj0|Fiuf zC;qa72X38_2^C{uVT;8ZMRyuOLg1PP!d1Tnh5J00?-mq`_sqXr`o3cSY^==LAh3As z-DfBpFer)ZibTRT2xskwWi+VoOFCfVww#p809H6F>{k1GaJ+gtjxnHOEsnpG*|sZd ztP0bP{rI8luocewfXSZ$LICvqr((vBV0L^kON0R>@jk1R`c!NBYd#)fgw@bxB`*^= zYp`?6rAbJ`W0vk)fmshVJ{ar}E~BzrpT099&S<5VHA%v$B0Op`@4!0@j=`db5m`K8 zibzC>U0by?ZyN~!d2MOD)piS(WhVznhH&t`R~#m>E1>K)pc@M2O;%4 z<_&?c;RCD4PI2Gzcy2A)PeeWfUN%ZO7_{*oVCdEgZg)i%@Ng`BEqyGNd ztO)PTXRK2|O^+`1Z%uDZ81FCVL`@2xe|p4DKnWKSZ+=RTogA@PG%@0XzBoQom_C1M zEGzWi3lq*K)VGHrmRC@tBbsxL!pRoY-&ty+%`C>rc2go`(SQswtVFP>BMsiI6Q1cC z)uFBk%SD|Xsb%6?ZLl~jHr zLzZBG`BVEMjeQeERJk3kguvP0f6_%s(h5#d)FWsq@aB&2pj-Nx>EWHTJ{ZQsuq)qE zqO!@t*=nX(4)rtgkM`B6AMeJrfV!t3!Ws*eF$K1}AIjj(vO&{flff4@KIBXmLy~=i z2Ir>>A6-7171hCW9QOpm?|ieOv4`2lOp6)NL%c5g*kA=xC&DtMfStk2CUx_lyLyZC zX_haAs2&upO=M{6vEB8gW43@g#Mx?>7A}_9i1L&Bq{uZnAOvd1%|L-C7&@o=RXe&psbcgPc#wV>uU(8)V zO^jsPeLO}9yS@A3X~(On<75)J9D9TpbcC(T@p=tk*@3IiOQTUROg1`c2tOeWvufly z(FbD@@iS~PlB4Xdh)D45-kOMExw>6+>w^j8(lJbh7>;8ZY>+W&*VI@F%Nvzzl9eGW zzxV!(!I3;Gi_E@A)A~HV;D5hWLfNMNiQA(XGIV47o*d!i{Uc_NxY%sXKw`R!DO&;v zYj2)GMTaa`tf{y?Wt7nKEM4|ArBy@-zr#u{VLr=rK>k3q?d7*8UVnu_UY#b5GU~m& z9=-Z87U5_$b7<%@!1dC|+vn~A*#>;u^MW+ z_0I>z(R1;uRQ@69m5^V_coRT|@*b0;YgKQ-zqam|+b8_l>ntYDA)2gJN*jezM4)Nc z8DU3s96!GNCmc4}?Ofq-`z!{Tkye9djij78VvdcnM`y+KeM7wOU~rf#vYa^Y0;YoC zQ?h|-BEd5A@95j@fk8&80{kiIC+iub2hiDSKDIR3Jbke*5l&?UR>?S~ z!13uAJwsk9;xFqun%&5Y23o2p=a8TJtj3bOX5)I;sv#-StrP`EggPp9M6CxdA_>B$ne$hfqHSgOyee#X83+_cI`Y>2SE{&?U#rz! zYFx$@rf7ZcAoLujP3o5K6qXz@ZImlpP~r5#t12FvsJv1-fOAb?BSQ-{mqq=x2rNDk7@M9!gLF8$?M=d5utvXMrafP9-R|l>Dfv{;&xwKG|H|gH?tUa6mG{ zpiAqXYb%ko(Z&!QK!5);Qe3QFXtklhX&WeD2+a0+Y}3hWtmK3=69c3k2&3ZCdJ`F& z7iABJ!JV~;=zaqXf8pM}KQ1ktsE$1&ph0I1n9(v;U(Hsp{}n;ucQUJ)(cXVh3`a&u zw5wJ}+09q_y(<{0QTVb<#+`{LWYWdVYxiNQ$1!l$vbjWwGjQv@gpvM_S%nBA^3%E! zH*UU7jn4X6@lt@;9~h~y-0;>wGe%}w^_~_0>a5RGGSLU;6YJ7M7`aQQnL=74F^pzDx8d=?W!L z>hPHDxVhBEQNY<{O4^taUao>+fk~GHV9!u+}&S zMp}JlL_SZAX2z~>swpv{+&3?{a5?3?Z2JN_=Vg$tSjHU^=gwUol)G%~kEcVooY~p< zhCEPl`P;(T!uiuEyJ0)7>%Jxi)zBKM*d4b*KMibL$}4%$=S9Vg)jkh|8-aiUPUTIU zn?wSTk5<3!lt6P+4&YdIYoQKYpL94orlio-gzyC=gZQvE~d(<6W>RX_|8CqWfn07?3K3lz0U|QlZ8UFB8 z{Of)PJ03_6_jCM5iJQ>QPAzr<;fY#DxnVI_zumBb3g{I#K^h**n>fjBN}o9^#MP4n z-D3TMRKW8loka#Vvv%oF*v7>R^y);*qLv^aPQkHc#I`h(&3e5j6uz6wW#MKnw=!Vm@_G97#j{4${Tvx9?Tw_c0>n#p+}w z432gc_5}|E`VN_%xKH+WGDvy;otoow>HeAM z=7Ujuh62z1JFu%O(^?f+Py*DzqZ`kSX11fplo*jj+!HPwjiv4Rc@t1i>=#69**VCI z)z8|abf-F1phiIP%TW~*l`Ieel7v{H;KrUot1-}IUEW?#7N7cl{NaimU4fpy}cN+{&$!T`qL z5cDStC>!)hOn$P#9^HgWC0qo=neld05j%X={UZvo=<^#j>Rl0d@Q(DrLo}nUaQ5>w~IFhmng7;6)=Jaz(#~LU_c25A%zN1wL~x%ezX|f z5o(WUj%BP?g%kOB%+WbdQ=urep%3U!Z%nfqK!5+#TI)@u`8MjP?uyV)kEE zaA8?iS;&#?nmdO!P4r{20V+fzka6cqdx3eZh`L4p7BHV}Z{asGmufvNKAcACTtV#G zIys9c_Of0dU~b<&cyRV86{=fO6V2!gvqxBpDeoWqrrH?h=KYMg(dTY}C3OD<-SNg7 zZFPE&T=dsFggZR~lrGnPr&A+8DE3EwM*Dvab#jbXZXkl->N982jQ-v93z;#P+?9?x$&cw%i15x#qlEG%WcK5^MQVcNfD9M#)j??CPJ)>hj7{47oa z2xs1wCV(-9+9>0fl6zSxWYX2a(HkNes~-xXXr$I@hk0j-prB)L3w*?Et=}y>=YO|R zU@bC1y03y}`ay(+O7SU*owV-vmf~UKPuTks^|q^*5g9yE6N=tu|HyL?;W;v5C!ww|t;Z1E z+p)YU1RI4}3n&X)I}T<9q^pSt=)A_@>f@xRvctv6uHj7qbGLn0=XXjXEyA0H(A~K% z;Y5uv@di^PmOR8GEr*=6#x!@_dcnysc$L>H1m}=`j{D^3rfF{J*4||B*BY-~qB_y- zl6pRP#FI+V%dCae#DaPfHYjUO> z0-7g@jMc)`@LkKyT@=wn-4p^E5UMiK)15D0DNwp-5w0F!_Ah?hvo;gzbOG4KVqF-V zxeb0QvKyv*IQE=i5h+ugvsVxv)Af(4k9YZGt4&l{f^|X|8KTdlXbzD$L>Rv3`v62Ng`;prk9{W;{vqn-iw0}_oGRGwJ zwW>sLRtwkJuWIyAf3b$&NODPsw`MtYgQPx29(YHNXvS?Gd+;5u_qh5>!TdP4PZ}ip zDM-@j_;vT;XG#%>GyU(50D#t9&CBp}Y30iGsW`2YZ$pN-F3rY#vo73k+{JH{F0t1q z**Y_$?EYHI=>Fr%1 zXE$L7a41aExMT!*xvn+7kg~1Y)2w>BxyWrLhbKi(^v{vQ&WQO`ar_L&;l}S~wT+yG z^BCOW_`#}>ion}OI%@g*D`N}0ZAr;1KaR*rs{mboyv}&9K1UkuqY0%3JA^+zaq{DX zUe@zV@63rh;Rg)kPiOUz90&l*u39Xi#`1g{!ir{57 zI76bua*o5WO(xb}Es39xj|c)Ra%p%Y#~X4ac*b?dabqEI?iGH+_&Y0+#f+N*{nEkv zjPAE8)QfPw&KtMTrj)ZX)d30z)iZ#->HQ`mvNs1f_@3h#tNv@%!RymyOP?%n4=-y5 z+gFOSHfBaZtj#INVy%Y$jJ?6!Ia)+hWMUF1#@Z5e`@O1b{!oJG)q;kJxULKp@Z>&g zd{v^A;6m#vWp4Zm5UaAzc0F0-f-ry-$d4Po*CvdOmY6F`9F# zx6<_X9D_va+uZ*)j&V_;jrN#6-%pzTz7Xu#b#GPBe`g5bj68}KTjAImccoZ;iP-Z% z*^y^ZxnG|#NP%#XJlexj0>aU443BfDA&8sr&AmS{+Ou?V^SE-XGy8!Mu~)^jHvsZh z#>-}_wyLJe!DcHz>d?QlArDti@V->EVS4WiWy5`nNa9%jIgKFl_?gih)| zlJc|%4TwGFQqIoTSFcI?#5RuhN3ZNMoxn1-uvNV!t9*Yuhhht0gN}w8B@k{v?|}Dy z(07f>MUF$Nudw%W+y4CiCSi2%D9u9O-!Z;@b88C7Q(M}$UCYB)uJ!i}J0WCpy`VY0 zMlI@nDTk1+gU&U%9FNk!%>#y-oIibM>8J|z$b4P4&uYUDH9gx4^jUo`(M4~E`P|$h zLwKI`h98es`vcd5$6}(!Bx~wxb0ODk9|J*lFlafD5zAfwh$V!vwgJWg_fy=xU+g=$ zHIH|G(r7I0{yqpF#U#o*1mN zj{fHF!8d&wiW*3)XG?48^*Uakk|_U(n)v1MJ#yyr?VGOs-ir%qR$lG>K*>;)jEAT_D?I+46z`w} zoge?~j}Yg*3qxXr@2VV5g^c>NP7-^f>tO#rHg)RWCx* zx}4;l`IxK+eAlYEaH8clDjvH%^?^6jD}8%6bbjhFb)_-9C81oQ2_F5RE4e1FYtzUj+(Vm_32G=TkbTGZ}8ob}^e-Kwv zu52)*VlKCH)nGWFquUP5th)5nT3<-VozyFOoK{ObxEcDg>{(T_=}&FTKbZiJlz*wa zx>hJUDa4^gPZnwZ?hp-9AF3a<{BU`9@YAnzT)3)&l%pX@e$g8;K?Xs_Gg1gk168eU zS$hr}cnipiYl^TM?Tcbu^@2r&>cfETVfT$8D%&5q zOYFOF61aW2D2k=KS4gds$WThRFWl52o5sF-G+la4c7?zGFa-MW>sS zD8rk?cjX8Un^l-`ff$xvrO2g;X2zXv_4zj!=YSY!r)ufQ{A}ER z#avj74u124eP&qAY;|G1hN`}(>#EjaoPS(yxYu-p;i`B`y^kb?MZ|H3^rXvdzL?DD zT2K07G}XNE?8tXR?zqcsNx_yw;WFw$Th;hdzuAyvy7S$O{rUkhm`QQDz=HZ$)k}k3 zmjFMMZ$v{lxINC7{`dwpJv+z+oc`*{HDhgi)clz=npsDvi6KY6$C!Q2(?B179W87SlU5bK zSIc+}_cY$zZj3fE?@uN-Q!NnyO&<@Qe<=bdM+5etrd}C4dg+s_O}$-K^vuR9^Aw^P z6H3u-&%O?&ROB*V9z+_@)?ffO&@eL}4QSSn0t2>@`qlEi#2-fPGU_5NkM^a_hjxAf z%X|$|AyT`UVFvs4^Jb2^HE7VD+7p+i8u$WVoy#Y|5VT?b@_6r#AoW_Ga0Sp!^cdYjm9yyJkDs`@cgYrF)r#LwkAP1)@`(F#QP-m z_X#Q|v+x_ChGCO5nAwY0R%vh%aZfh77`#?&*6M+(PTYV~^td>YoNemrdbNa6mSs-R zu4dP>U_m_#`p!3Cs?Eq1hp31w9Az=mrx}Yy9PAPF!`O?0CeyCo3!4*dFQlx3){<9z_BDcl>B-EF+DXfQ?eFj- zFF#+v>)#YL(Za+S@P?=6m{^9_7->%E9mbuLkRc!Ok*OJ7W8Bx%V{B!;i^LqiR%`!$ zywu?^QNyIc5sUnwGT8eHenIW*B+=r8r|-K}9!zKGvUG*FRsE+@*EKEkx{I^BPlShj z?jY#`AXHA8CR(m>jXh6oXSykh>x;LG?T@3k z9|L)pI`OzLwrOqpt2w|(SCz>0uH?P&n`bx_Ew3}6$f>lEa^ zg}dFyQNVie?E+r;&7S^#uFvlRs%*>sE8aymXD@uN4mRv>gVkt|M)Pf=&!v8@G{IW! z_u9Ve_9L-t8cMj<{QFIAZ@z^S7jZLjos0P9a6*=bY5Q9+@>HFSq>^O{gRqfHK{N~bpLtP(G;tTtyy>t!A$!W>6bYk7oTalq4AC`ezJt?}MRcXSd$5Th!&aqv1r~)>Hq}Hgw|Dw1`-@nnnGbCY_xO;W|gn z6YB~`gTO+Us01miU81Xs_?2hg*t$~N&ZLukSWD&D_%bf z8m7bPUJ2L*9mf*T#}reKUhluFb6@|Y=*vj@`f)uRT_K$ICB+9AaR%W{6h7uckIX-m zj9$prI&?$f#D_mF?r)h5LKqb`{} zLqtd#i0Eq&&)?!lFY+jZ`vV?HUAld1kn5a*Q1E3_onmZ*J#Ko2iU41QP3qH)f1OiJ1WyjXR77F1E6wdd;5{IHZ&K0Yv{FPrziy=vx= zDhqw1NH`JISONZEq>hI;VoP^v$8n4yhp_+lqyph*c$0KY-a+nl&Uko$d7pGf{=Q6=kZTw=K;CsmEDhh0=HG zF&T0{x7`g(vaNO(7Y}ct&($3oPUGM>pqbKRfNn{iRa@eh^VXy!zR-YpC$GS!Ek0uJ}p-M-l{Em-`zmppS(Ra585 zaKZggBbHCzFK^z9PfAKPv$5iLb70@|Str9jBM=hc$J)PzV{ebh4e&QV(eQZi`$@28 zqo5?AEB;C4T4ad&NZ***z^_+5mLK1H?#tCglKqT#EnMu=9L`cceJ`DyEBj?J*SNl6 zA|+Lu%sew z`c2BnRFMTPWJmyF<)ul)KXh&q#!;%WlA3oh&eRQ!g*W^^FU1Jr~HPcM;JBnUO=>pHsx6{ z&b_k`F5&g;WWqty1ej=F(TuII$+P-0>i1hIL*l3dAQ+=*L9dmWw!v}@uzF`7G{Ut) zfXtMBQ2u0tz)Ok74^d}CG;FD;a{-=)f4wPm@(>`5&x&wv@R5XaYobyYa$EOA(ys^2 zQxF3Ht!5}WCl!`Ia{v*_V%rE9b&9R1H0eGqkE|>%{NWcLR`~C zik!RYE7hGAdH|lX^NB1{TbfD!f)pm2o7DprSR0DN91i?<$|{th48>RtBbx)n)Z8i% zn_Tv4-z-R>l@-%z?jO}ENwvpq#?kq~Tp-PDYYTc=u?DRrSDoKC@}*RNYI$(J$=Vn= zP^5mT_5SuE0HV-Q1@ms2GPu)7*5Rt7rreHKZ7RjZA%u7Jyz&#W{a* zlEg1`hucY={=vK{F3qhcc+xF2YEts!#qR`hIrS;Yw)=_@*vhf(pKjo#z8UWodlD%I z5Et1rNT0(JPv=GY94~)ht#n)@k2g{(5nv@I0j{T4l=Fu>_aTIC{JjKH2ty_x&-xtM zB6*F(Z7B(dQpx-Bl^Wq?rX2)s;BsDyjCL{E)&;(txx1#( zGR0+}BBtSFU` zVe2|+;g!wt8}Jh7@t)*u`g(O{61Qpx_meG!Y+k$q9wzo|)Wl6m#a{z4@}%smcQV#u-dH-&wm%40-a_%znZC8i$( z$VrY0@^gl{_ODIOG^arwK+sI}g3rvN(m`V)p;H3*_6P@8UG|fex(EcQ-vKR`^uPKY zYrJq|K=i#2768k@-QWB+=>snWW`6!Jr5zyjqEr^wmS81v%nZW=W}WzJaT9ql3UvT| z+~xj3qT{e>yjA~!cw-iKJV~|8m{(ko{AVlZ#uQG>p z0uY7}%F`jILLGka`0J#CD7!*f_njs%aRcW=Gy(M$6w

n5D5dj{6=)7ae_p$HGS2s|mhfYqD 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 U3^vkHg);$SWMGCX(j!FuA2Z)rQ~&?~ literal 0 HcmV?d00001 diff --git a/resources/lang/de/email.php b/resources/lang/de/email.php index 9f90ffe..b2757b0 100644 --- a/resources/lang/de/email.php +++ b/resources/lang/de/email.php @@ -45,7 +45,7 @@ 'checkout_copy3line' => 'Bei Fragen sind wir jederzeit für Dich da.', 'checkout_copy3line_extern' => 'Bestellung über Berater:', 'status_copy1line' => 'Status zu Deiner Bestellung auf mivita.care', - 'footer_copy1' => 'mivita e.K. | Leinfeld 2 | 87755 Kirchhaslach | Telefon: +49 (0) 8333 946 98 90 | Fax: +49 (0) 8333 7268 E-Mail: info@mivita.care', + 'footer_copy1' => 'mivita e.K. | Leinfeld 2 | 87755 Kirchhaslach | Telefon: +49 (0) 8333 946 17 67 | E-Mail: info@mivita.care', 'footer_copy2' => 'Geschäftsinhaber: Alois Ried | Registergericht: Memmingen | Registernummer: HRA 12236 | USt-ID-Nr.: DE 244162340', 'footer_copy3' => '© 2020 All Rights Reserved', 'checkout_mail_hl1' => 'Du hast folgende Artikel bestellt:', diff --git a/resources/lang/de/navigation.php b/resources/lang/de/navigation.php index fe709cd..16f0296 100755 --- a/resources/lang/de/navigation.php +++ b/resources/lang/de/navigation.php @@ -10,7 +10,7 @@ return [ 'my_team' => 'Mein Team', 'my_clients' => 'Meine Kunden', 'my_orders' => 'Meine Bestellungen', - 'my_homeparty' => 'Meine Homeparty', + 'my_homeparty' => 'Meine Auszeitparty', 'member_register' => 'Berater registrieren', 'member'=>'Berater', 'membership' => 'Mitgliedschaft', diff --git a/resources/views/layouts/includes/layout-sidenav.blade.php b/resources/views/layouts/includes/layout-sidenav.blade.php index b58cec5..6912a70 100755 --- a/resources/views/layouts/includes/layout-sidenav.blade.php +++ b/resources/views/layouts/includes/layout-sidenav.blade.php @@ -74,7 +74,7 @@ @endif - @if(Auth::user()->isActiveAccount() && Auth::user()->isSySAdmin()) + @if(Auth::user()->isActiveAccount() && \App\Services\Util::checkUserLandIsNot(Auth::user()))

  • @@ -90,7 +90,7 @@
  • @endif - @if(Auth::user()->isActiveAccount() && Auth::user()->isSySAdmin()) + @if(Auth::user()->isActiveAccount() && \App\Services\Util::checkUserLandIsNot(Auth::user()))
  • @@ -213,6 +213,9 @@
    Tools
      +
    • +
      Buchnungen Berater
      +
    • Kunden
    • diff --git a/resources/views/legal/data_protect_de.blade.php b/resources/views/legal/data_protect_de.blade.php index 22aaa41..1a55ad3 100644 --- a/resources/views/legal/data_protect_de.blade.php +++ b/resources/views/legal/data_protect_de.blade.php @@ -46,8 +46,7 @@ Herr Alois Ried
      Leinfeld 2
      87755 Kirchhaslach
      - Telefon: +49 (0) 8333 946 98 90
      - Fax: +49 (0) 8333 7268
      + Telefon: +49 (0) 8333 946 17 67
      Mail: info@mivita.care


      III. Cookies diff --git a/resources/views/legal/imprint_de.blade.php b/resources/views/legal/imprint_de.blade.php index 7faa6e5..f17d628 100644 --- a/resources/views/legal/imprint_de.blade.php +++ b/resources/views/legal/imprint_de.blade.php @@ -10,8 +10,7 @@

      mivita e.K.
      Leinfeld 2
      87755 Kirchhaslach
      - Telefon: +49 (0) 8333 946 98 90
      - Fax: +49 (0) 8333 7268
      + Telefon: +49 (0) 8333 946 17 67
      E-Mail: info@mivita.care

      Geschäftsinhaber:
      Alois Ried

      @@ -23,7 +22,7 @@ USt-ID-Nr.:
      DE 244162340


      Support mivita:
      - Telefon: +49 (0) 8333 946 98 90
      + Telefon: +49 (0) 8333 946 17 67
      E-Mail:: info@mivita.care


      diff --git a/resources/views/sys/sales/index.blade.php b/resources/views/sys/sales/index.blade.php new file mode 100755 index 0000000..c5d454d --- /dev/null +++ b/resources/views/sys/sales/index.blade.php @@ -0,0 +1,65 @@ +@extends('layouts.layout-2') + +@section('content') +
      +
      + Berater Bestellungen +
      +
      + {!! Form::open(['url' => route('sysadmin_sales_members'), 'class' => 'form-horizontal', 'id'=>'filter_sales_member']) !!} + + + + {!! Form::close() !!} + +
      + +
      + + + + + + + + + + + + + + @foreach($values as $value) + + + + + + + + + + + @endforeach + +
      {{__('Vorname')}}{{__('Nachname') }}{{__('E-Mail') }}{{__('Betrag') }}{{__('Datum') }}{{__('Order')}}{{__('Status')}}
      {{ $value->shopping_user->billing_firstname }}{{ $value->shopping_user->billing_lastname }}{{ $value->shopping_user->billing_email }}{{ $value->getFormattedTotalShipping()." €" }}{{ $value->created_at->format("d.m.Y") }}@foreach($value->shopping_order_items as $shopping_order_item) + {{ $shopping_order_item->product->name }}
      + @endforeach + +
      {!! App\Services\Payment::getShoppingOrderBadge($value) !!}
      +
      + +
      + + +@endsection diff --git a/resources/views/user/homeparty/detail.blade.php b/resources/views/user/homeparty/detail.blade.php index a6af329..840eaf5 100644 --- a/resources/views/user/homeparty/detail.blade.php +++ b/resources/views/user/homeparty/detail.blade.php @@ -12,15 +12,14 @@ zurück - {!! Form::open(['url' => route('user_homeparty_detail', [$homeparty->id]), 'class' => 'form-horizontal', 'id'=>'homeparty-party-form-validation']) !!} -
      @if(!$homeparty->id)
      - Neue Homeparty anlegen + * {{trans('register.required_fields')}} + Neue Auszeitparty anlegen
      @else
      @@ -39,8 +38,8 @@
      - - {{ Form::text('name', $homeparty->name, array('placeholder'=>__('Veranstaltungsname'), 'class'=>'form-control', 'required')) }} + + {{ Form::text('name', $homeparty->name, array('placeholder'=>__('Gastgeber / Veranstalter'), 'class'=>'form-control', 'required')) }} @if ($errors->has('name')) {{ $errors->first('name') }} @@ -68,12 +67,12 @@
      - - {{ Form::textarea('description', $homeparty->description , array('placeholder'=>__('Beschreibung'), 'class'=>'form-control', 'rows'=>2)) }} + + {{ Form::textarea('description', $homeparty->description , array('placeholder'=>__('Beschreibung'), 'class'=>'form-control', 'rows'=>5)) }}
      -
      +
        zurück zur Übersicht @@ -82,21 +81,7 @@ @if($homeparty->id) -
      -
      -
      Lass den Gastgeber/in seine Daten selber ausfüllen
      -
      -
      - - - - -
      -
      -

      Teile diesen Link mit dem Gastgeber/in und Gästen (z.B. WhatsApp oder SMS), damit gelangt sie auf eine Zielseite wo sie ihre Daten selber ausfüllen können. Nutze das „Kopier-Symbol“, um den Link gleich in Deine Zwischenablage zu kopieren.

      -
      -
      -
      + {!! Form::open(['url' => route('user_homeparty_detail', [$homeparty->id]), 'class' => 'form-horizontal', 'id'=>'homeparty-user-form-validation']) !!}
      @@ -117,6 +102,23 @@ zurück zur Übersicht
      {!! Form::close() !!} +
      +
      +
      + + +
      +
      + + + + +
      +
      +

      Teile diesen Link mit den Gästen (z.B. WhatsApp oder SMS), damit gelangt sie auf eine Zielseite wo sie ihre Daten selber ausfüllen können. Nutze das „Kopier-Symbol“, um den Link gleich in Deine Zwischenablage zu kopieren.

      +
      +
      + @endif diff --git a/resources/views/user/homeparty/guest_detail.blade.php b/resources/views/user/homeparty/guest_detail.blade.php index 3a3158c..1822836 100644 --- a/resources/views/user/homeparty/guest_detail.blade.php +++ b/resources/views/user/homeparty/guest_detail.blade.php @@ -6,6 +6,21 @@ zurück
      + @if(!$homeparty->completed) +
      +
      +
      + +
      + + + + +
      +
      +
      +
      + @endif {!! Form::open(['url' => route('user_homeparty_guest_detail', [$homeparty->id, $homeparty_user->id]), 'class' => 'form-horizontal', 'id'=>'homeparty-user-form-validation']) !!}
      diff --git a/resources/views/user/homeparty/guests.blade.php b/resources/views/user/homeparty/guests.blade.php index 01bd057..cfc085c 100644 --- a/resources/views/user/homeparty/guests.blade.php +++ b/resources/views/user/homeparty/guests.blade.php @@ -4,7 +4,7 @@

      {{ __('navigation.my_homeparty') }} / {{ $homeparty->name }} - {{ $homeparty->date }}
      @if(!$homeparty->completed) -   Neue Gast anlegen +   Gast anlegen @endif

      @@ -13,7 +13,7 @@ @php($g_count = 1) @foreach($homeparty->homeparty_users as $homeparty_user) -
      +
      @@ -29,25 +29,18 @@ @if(!$homeparty->completed)
      + bearbeiten
      + @if($homeparty_user->is_host) + - - - + @else + + + + @endif
      @endif @@ -55,10 +48,7 @@
      -
      - {{$homeparty->description}} -
      -
      +
      Adresse
      @@ -81,9 +71,25 @@
      @endforeach + + @if(!$homeparty->completed) +
      +
      +
      + +
      + + + + +
      +
      +
      +
      + @endif
      -
      +
      @if(!$homeparty->completed) Homparty verwalten @endif @@ -91,4 +97,22 @@ zurück zur Übersicht
      -@endsection \ No newline at end of file + + +@endsection diff --git a/resources/views/user/homeparty/index.blade.php b/resources/views/user/homeparty/index.blade.php index d025489..6826c89 100644 --- a/resources/views/user/homeparty/index.blade.php +++ b/resources/views/user/homeparty/index.blade.php @@ -3,7 +3,7 @@ @section('content')

      {{ __('navigation.my_homeparty') }} / {{ __('navigation.overview') }}
      -   Neue Homeparty anlegen +   Neue Auszeitparty anlegen

      @@ -19,17 +19,11 @@ @endif
      @if(!$homeparty->completed) -
      - - + + +
      @endif
      @@ -46,7 +40,7 @@
      {{$homeparty->date}}
      -
      Ort
      +
      Veranstaltungsort
      {{$homeparty->place}}
      @@ -67,10 +61,11 @@
      +
      - - - + + +
      @@ -80,15 +75,13 @@ diff --git a/resources/views/user/homeparty/self_guest_detail.blade.php b/resources/views/user/homeparty/self_guest_detail.blade.php index d85b834..cd3ced0 100644 --- a/resources/views/user/homeparty/self_guest_detail.blade.php +++ b/resources/views/user/homeparty/self_guest_detail.blade.php @@ -5,43 +5,152 @@ @if($homeparty_user === null)

      -
      Homeparty / {{ $homeparty->name }} - {{ $homeparty->date }}
      +
      Auszeitparty / {{ $homeparty->name }} - {{ $homeparty->date }}

      @if(Session::has('alert-save'))
      - {{__('saved')}}: {{__('The changes have been saved.')}} + {{__('saved')}}: + Deine Daten erfolgreich wurden angelegt. Viel Spaß bei der Auszeitparty!
      @endif + + +
      +
      +
      +
      +

      + @if($homeparty_host) + @if($homeparty_host->billing_salutation === 'mr') + Dein Gastgeber + @else + Deine Gastgeberin + @endif + @endif +

      +
      + +
      +
      + @if($homeparty_host) + {{$homeparty_host->billing_firstname}} {{$homeparty_host->billing_lastname}} + @endif +
      +
      + @if($homeparty_host) + {{ $homeparty_host->billing_email }} + @endif +
      +
      + @if($homeparty_host) + {{ $homeparty_host->billing_phone }} + @endif +
      +
      + +
      +
      +
      +

      Deine MIVITA Beratung

      +
      + +
      +
      + @if($mivita_member) + {{ $mivita_member->account->first_name }} {{ $mivita_member->account->last_name }} + @endif +
      +
      + @if($mivita_member) + {{ $mivita_member->email }} + @endif +
      +
      + @if($mivita_member) + {{ $mivita_member->account->getPhoneNumber() }} + @endif + +
      +
      + +
      +
      +
      +
      +
      +
      +
      +
      +

      Einladung

      + {{$homeparty->description}} +
      +
      +
      +
      +
      Datum
      +
      {{$homeparty->date}}
      +
      +
      +
      Veranstaltungsort
      +
      {{$homeparty->place}}
      +
      +
      +
      Straße / Hausnummer
      +
      + @if($homeparty_host) + {{ $homeparty_host->billing_address }} + @endif +
      +
      +
      +
      PLZ & Ort
      +
      + @if($homeparty_host) + {{ $homeparty_host->billing_zipcode }} {{ $homeparty_host->billing_city }} + @endif +
      +
      +
      +
      Land
      +
      + @if($homeparty_host && $homeparty_host->billing_country) + {{ $homeparty_host->billing_country->de }} + @endif +
      +
      +
      +
      +
      + +
      @php($g_count = 1) - @foreach($homeparty->homeparty_users as $homeparty_user) -
      -
      + @foreach($homeparty->homeparty_guests as $homeparty_user) +
      +
      -
      + {{-- + --}}
      -
      + {{--
      -
      - {{$homeparty->description}} -
      -
      +
      Adresse
      @@ -60,17 +169,16 @@
      {{$homeparty_user->billing_email}}
      -
      - +
      --}}
      @endforeach
      -   Neue Gast anlegen +   als Gast eintragen @else

      -
      Homeparty / {{ $homeparty->name }} - {{ $homeparty->date }}
      +
      Auszeitparty / {{ $homeparty->name }} - {{ $homeparty->date }}
      zurück

      @@ -82,9 +190,23 @@
      @endif + @if ($errors->any()) +
      +
      +
      +
        + @foreach ($errors->all() as $error) +
      • {{ $error }}
      • + @endforeach +
      +
      +
      +
      + @endif
      -
      Eingabe Deiner persönlichen Daten für die Homeparty
      +
      Eingabe Deiner persönlichen Daten für die Auszeitparty
      +

      Hinweis: Aus Datenschutzgründen werden Deine persönlichen Daten hier den anderen Teilnehmern nicht angezeigt. Nach dem Absenden können Sie auch nicht mehr bearbeitet werden. Möchtest Du nachträglich eine Änderung vornehmen, wende Dich bitte an Deinen persönlichen MIVITA Berater.


      @@ -101,9 +223,9 @@ @include('user.homeparty._edit')
      -
      +
      +
      +
      + +
      +
      -   +  
      {!! Form::close() !!} diff --git a/resources/views/user/order/shipping_ot.blade.php b/resources/views/user/order/shipping_ot.blade.php index b4ecfa4..1b49821 100644 --- a/resources/views/user/order/shipping_ot.blade.php +++ b/resources/views/user/order/shipping_ot.blade.php @@ -4,8 +4,8 @@ {{ Form::hidden('shipping_company', $shopping_user->billing_company) }} {{ Form::hidden('shipping_salutation', $shopping_user->billing_salutation) }} - {{ Form::hidden('shipping_firstname', $shopping_user->billing_first_name) }} - {{ Form::hidden('shipping_lastname', $shopping_user->billing_last_name) }} + {{ Form::hidden('shipping_firstname', $shopping_user->billing_firstname) }} + {{ Form::hidden('shipping_lastname', $shopping_user->billing_lastname) }} {{ Form::hidden('shipping_address', $shopping_user->billing_address) }} {{ Form::hidden('shipping_address_2', $shopping_user->billing_address_2) }} {{ Form::hidden('shipping_zipcode', $shopping_user->billing_zipcode) }} diff --git a/resources/views/user/user_form.blade.php b/resources/views/user/user_form.blade.php index 1e634ef..33647fd 100644 --- a/resources/views/user/user_form.blade.php +++ b/resources/views/user/user_form.blade.php @@ -135,9 +135,9 @@
      @if($errors->has('phone') || $errors->has('mobil')) -
      Bitte {{ __('Phone') }} und/oder {{ __('Mobile Phone') }} angeben!*
      +
      Fehler: Bitte {{ __('Phone') }} und/oder {{ __('Mobile Phone') }} angeben!*
      @else -
      Bitte {{ __('Phone') }} und/oder {{ __('Mobile Phone') }} angeben!*
      +
      Hinweis: Bitte {{ __('Phone') }} und/oder {{ __('Mobile Phone') }} angeben!*
      @endif
      diff --git a/resources/views/web/layouts/includes/footer.blade.php b/resources/views/web/layouts/includes/footer.blade.php index e907e44..7a73e8b 100644 --- a/resources/views/web/layouts/includes/footer.blade.php +++ b/resources/views/web/layouts/includes/footer.blade.php @@ -9,7 +9,7 @@

      Du möchtest Vertriebspartner werden oder hast Fragen zu unseren Produkten?

      -

      Jetzt Kontakt aufnehmen: +49 (0) 8333 946 98 90 +

      Jetzt Kontakt aufnehmen: +49 (0) 8333 946 17 67

      @@ -47,7 +47,7 @@ 87755 Kirchhaslach
      + @if(!$user_shop) +
    • + + Shop + +
    • + @endif
    • Karrierechancen diff --git a/resources/views/web/start.blade.php b/resources/views/web/start.blade.php index 9a20c4a..137920c 100644 --- a/resources/views/web/start.blade.php +++ b/resources/views/web/start.blade.php @@ -7,6 +7,10 @@ .tp-caption { text-shadow: none; } + .tp-caption.large_bold_white { + font-size:40px; + line-height:52px; + } @@ -24,9 +28,9 @@
      -
      - Deutscher Direktvertrieb für + Bio Aloe Vera & Naturkosmetik
      - 100% Premium Bio Aloe Vera + Nahrungsergänzung
    diff --git a/resources/views/web/templates/datenschutz.blade.php b/resources/views/web/templates/datenschutz.blade.php index 5d62e18..ea7e2b0 100644 --- a/resources/views/web/templates/datenschutz.blade.php +++ b/resources/views/web/templates/datenschutz.blade.php @@ -49,8 +49,7 @@ Verantwortlicher im Sinne der Datenschutz-Grundverordnung sowie der in den Mitgl Herr Alois Ried
    Leinfeld 2
    87755 Kirchhaslach
    -Telefon: +49 (0) 8333 946 98 90
    -Fax: +49 (0) 8333 7268
    +Telefon: +49 (0) 8333 946 17 67
    Mail: info@mivita.care


    III. Cookies diff --git a/resources/views/web/templates/impressum.blade.php b/resources/views/web/templates/impressum.blade.php index 02a52c0..b9cc216 100644 --- a/resources/views/web/templates/impressum.blade.php +++ b/resources/views/web/templates/impressum.blade.php @@ -11,8 +11,7 @@

    mivita e.K.
    Leinfeld 2
    87755 Kirchhaslach
    - Telefon: +49 (0) 8333 946 98 90
    - Fax: +49 (0) 8333 7268
    + Telefon: +49 (0) 8333 946 17 67
    E-Mail: info@mivita.care

    Geschäftsinhaber:
    Alois Ried

    @@ -24,7 +23,7 @@ USt-ID-Nr.:
    DE 244162340


    Support mivita:
    - Telefon: +49 (0) 8333 946 98 90
    + Telefon: +49 (0) 8333 946 17 67
    E-Mail::
    info@mivita.care


    diff --git a/resources/views/web/templates/kontakt.blade.php b/resources/views/web/templates/kontakt.blade.php index 7abf000..82ba7b9 100644 --- a/resources/views/web/templates/kontakt.blade.php +++ b/resources/views/web/templates/kontakt.blade.php @@ -264,9 +264,9 @@ Leinfeld 2
    87755 Kirchhaslach Telefon: 0 8333-946 98 90 + href="tel:083339461767">0 8333 946 17 67 Email: info@mivita.care + href="mailto:info@mivita.care">info@mivita.care


    diff --git a/resources/views/web/templates/registrierung.blade.php b/resources/views/web/templates/registrierung.blade.php index 05b39f6..0f2bcd5 100644 --- a/resources/views/web/templates/registrierung.blade.php +++ b/resources/views/web/templates/registrierung.blade.php @@ -70,7 +70,7 @@ } - {{-- --}} +
    @@ -169,6 +169,10 @@ +
    +
    +
    +
    - {{--
    +
    @if ($errors->has('g-recaptcha-response')) @@ -196,7 +200,7 @@ @endif
    - --}} + {!! Form::close() !!}
    @@ -246,9 +250,9 @@ Leinfeld 2
    87755 Kirchhaslach Telefon: 0 8333-946 98 90 + href="tel:0 8333 946 17 67">0 8333 946 17 67 Email: info@mivita.care + href="mailto:info@mivita.care">info@mivita.care


    Geschäftszeiten

    diff --git a/resources/views/web/templates/registrierung_finish.blade.php b/resources/views/web/templates/registrierung_finish.blade.php index 84727b5..f2712c6 100644 --- a/resources/views/web/templates/registrierung_finish.blade.php +++ b/resources/views/web/templates/registrierung_finish.blade.php @@ -138,7 +138,7 @@ Leinfeld 2
    87755 Kirchhaslach Telefon: 0 8333-946 98 90 + href="tel:0 8333 946 17 67">0 8333 946 17 67 Email: info@mivita.care

    diff --git a/resources/views/web/user/start.blade.php b/resources/views/web/user/start.blade.php index 56db327..5d74008 100644 --- a/resources/views/web/user/start.blade.php +++ b/resources/views/web/user/start.blade.php @@ -39,6 +39,10 @@ border: 6px solid #bbccab; margin-bottom: 10px; } + .tp-caption.large_bold_white { + font-size:40px; + line-height:52px; + } @@ -57,9 +61,9 @@
    -
    - Deutscher Direktvertrieb für + Bio Aloe Vera & Naturkosmetik
    - 100% Premium Bio Aloe Vera -
    + Nahrungsergänzung +
  • diff --git a/routes/web.php b/routes/web.php index 180a4a7..693cf2a 100755 --- a/routes/web.php +++ b/routes/web.php @@ -434,6 +434,11 @@ Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_car Route::get('/sysadmin/settings', 'SyS\SettingController@index')->name('sysadmin_settings'); Route::post('/sysadmin/tools/setting/store', 'SyS\SettingController@store')->name('sysadmin_setting_store'); + + Route::get('/sysadmin/sales/members', 'SyS\SalesController@index')->name('sysadmin_sales_members'); + Route::post('/sysadmin/sales/members', 'SyS\SalesController@index')->name('sysadmin_sales_members'); + + }); });