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 .= ''; + 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 .= ''; + 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 0000000..5bee265 Binary files /dev/null and b/public/images/avatar.png differ 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()))