middleware('auth'); } public function index() { $user = User::find(Auth::user()->id); $userShoppingOrders = ShoppingOrder::with('shopping_user', 'shopping_payments')->select('shopping_orders.*') ->where('auth_user_id', '=', $user->id) ->where('txaction', '!=', null) ->whereIn('payment_for', [1, 2]) ->orderBy('created_at', 'DESC') ->get(); $userHistoryPaymentOrder = null; /* Die Zahlung ist erst ab config('mivita.renewal_days') Tagen vor Ablauf möglich. Geht sie ein, verlängert sich die Mitgliedschaft um ein Jahr, sonst läuft sie aus. */ if ($user->isRenewalAccount()) { // Acount ist noch nicht verlängert / bezahlt if ($user->payment_account) { // Die Order muss größer als das Datum sein. $payment_greaterThan = Carbon::parse($user->payment_account)->modify('-'.(config('mivita.renewal_days') + 1).' days'); $userHistoryPaymentOrder = UserHistory::whereUserId($user->id)->whereAction('payment_order')->where('created_at', '>=', $payment_greaterThan)->get()->last(); } } $userHistoryDeleteMembership = UserHistory::whereUserId($user->id)->whereAction('delete_membership')->whereStatus(50)->get()->last(); $shipping_country_id = $this->checkShoppingCountry($user); if (! $shipping_country_id) { abort(403, __('validation.custom.shipping_not_found')); } UserService::checkUserTaxShippingCountry($user, $shipping_country_id); $data = [ 'user' => $user, 'products' => $this->renewalProducts(), 'userHistoryPaymentOrder' => $userHistoryPaymentOrder, 'userHistoryDeleteMembership' => $userHistoryDeleteMembership, 'yard_info' => UserService::getYardInfo(), 'userShoppingOrders' => $userShoppingOrders, ]; return view('user.membership.index', $data); } /** * Produkte, die bei der Mitgliedschafts-Verlängerung zur Auswahl stehen. * * Die Registrierung (show_on 7) nutzt ein eigenes Produkt mit Registrierungs-Text. * Für die Verlängerung gibt es eine Kopie mit passendem Inhalt (identifier show_renewal). * Solange keine angelegt ist, greift das bisherige Mitgliedschafts-Produkt. * * @return Collection */ private function renewalProducts(): Collection { $renewalProducts = Product::where('active', true) ->where('identifier', 'show_renewal') ->whereJsonContains('show_on', '8') ->orderBy('pos', 'ASC') ->get(); if ($renewalProducts->isNotEmpty()) { return $renewalProducts; } return Product::where('active', true) ->whereJsonContains('show_on', '7') ->whereJsonContains('show_on', '8') ->orderBy('pos', 'ASC') ->get(); } private function checkShoppingCountry($user) { $country_id = null; if ($user->account->same_as_billing) { $country_id = $user->account->country_id; } else { $country_id = $user->account->shipping_country_id; } if ($country_id) { if ($shipping_country = ShippingCountry::whereCountryId($country_id)->first()) { return $shipping_country->id; } } return false; } public function storePayment($action) { // #### payment order // #### shop upgrade if ($action === 'upgrade_order' || $action === 'payment_order') { if (Request::get('switchers-package-wizard')) { $user = User::find(Auth::user()->id); Yard::instance('shopping')->destroy(); $product = Product::find(Request::get('switchers-package-wizard')); $shipping_country_id = $this->checkShoppingCountry($user); if (! $shipping_country_id) { abort(403, __('validation.custom.shipping_not_found')); } UserService::checkUserTaxShippingCountry($user, $shipping_country_id); Yard::instance('shopping')->setUserPriceInfos(UserService::getYardInfo()); Yard::instance('shopping')->setShippingCountryWithPrice($shipping_country_id); if ($product && $product->active) { $image = ''; if ($product->images->count()) { $image = $product->images->first()->slug; } $qty = $product->is_membership_only ? 1 : (Request::get('qty') ? Request::get('qty') : 1); $cartItem = Yard::instance('shopping')->add($product->id, $product->getLang('name'), $qty, $product->getPriceWith(UserService::getTaxFree(), false, UserService::$user_country), false, false, ['image' => $image, 'slug' => $product->slug, 'weight' => $product->weight, 'points' => $product->points, 'no_commission' => $product->no_commission, 'no_free_shipping' => $product->no_free_shipping, 'show_on' => $product->show_on]); if ($cartItem->qty > 1) { Yard::instance('shopping')->update($cartItem->rowId, 1); } if (UserService::getTaxFree()) { Yard::setTax($cartItem->rowId, 0); } else { Yard::setTax($cartItem->rowId, $product->getTaxWith(UserService::$user_country)); } do { $identifier = Util::getToken(); } while (ShoppingInstance::where('identifier', $identifier)->count()); $data = []; $data['is_from'] = 'membership'; $data['is_for'] = 'me'; $data['user_price_infos'] = UserService::getUserPriceInfos(); ShoppingInstance::create([ 'identifier' => $identifier, 'user_shop_id' => 1, // is first faker shop for nuy intern 'auth_user_id' => Auth::user()->id, 'payment' => 3, // Berater Membership 'subdomain' => url('/'), 'country_id' => Yard::instance('shopping')->getShippingCountryId(), 'language' => \App::getLocale(), 'shopping_data' => $data, 'back' => url()->previous(), ]); Yard::instance('shopping')->store($identifier); // add to DB $path = route('checkout.checkout_card', ['identifier' => $identifier]); UserHistory::create(['user_id' => $user->id, 'action' => $action, 'status' => 1, 'product_id' => $product->id, 'identifier' => $identifier]); // $path = str_replace('http', 'https', $path); return redirect()->secure($path); } } } if ($action === 'change_order') { if (Request::get('switchers-package-wizard')) { $user = User::find(Auth::user()->id); $product = Product::find(Request::get('switchers-package-wizard')); if ($user->payment_order_id == $product->id) { \Session()->flash('alert-success', __('msg.no_change_made')); return back(); } if ($product && $product->active) { $user->payment_order_id = $product->id; $user->save(); UserHistory::create(['user_id' => $user->id, 'action' => $action, 'status' => 10, 'product_id' => $product->id]); \Session()->flash('alert-success', __('msg.booked_package_has_been_changed')); return back(); } } } if ($action === 'delete_membership') { if (Request::get('delete_membership_mivita')) { // TODO $user = User::find(Auth::user()->id); if ($user->isTestMode()) { $mail = config('app.info_test_mail'); } else { $mail = config('app.info_mail'); } Mail::to($mail)->send(new MailInfo($user, 'delete_membership')); UserHistory::create(['user_id' => $user->id, 'action' => $action, 'status' => 50]); \Session()->flash('alert-success', __('msg.cancel_membership_is_requested')); return back(); } \Session()->flash('alert-error', __('msg.error_checkbox_not_confirm')); return back(); } \Session()->flash('alert-error', __('msg.error_checkbox_not_confirm')); return back(); } }