Membership

This commit is contained in:
Kevin Adametz 2020-03-07 19:44:58 +01:00
parent 37cb2b06c7
commit 21abafb8db
51 changed files with 1549 additions and 493 deletions

View file

@ -62,15 +62,58 @@ class AdminUserController extends Controller
$data = Input::all();
$user = User::findOrFail($data['id']);
$user->admin = $data['admin'];
$user->confirmed = isset($data['confirmed']) ? true : false;
$user->active = isset($data['active']) ? true : false;
$user->save();
if(isset($data['save-admin'])){
$user->admin = $data['admin'];
}
if(isset($data['save-confirmed'])){
$data['confirmed'] = isset($data['confirmed']) ? true : false;
$user->confirmed = $data['confirmed'];
if($data['confirmed']){
if(!isset($data['confirmation_date']) || $data['confirmation_date'] == ""){
$user->confirmation_date = now();
}else{
$user->confirmation_date = \Carbon::parse(str_replace("- ", "", $data['confirmation_date']));
}
}else{
$user->confirmation_date = null;
}
}
if(isset($data['save-active'])){
$data['active'] = isset($data['active']) ? true : false;
$user->active = $data['active'];
if($data['active']){
if(!isset($data['active_date']) || $data['active_date'] == ""){
$user->active_date = now();
}else{
$user->active_date = \Carbon::parse(str_replace("- ", "", $data['active_date']));
}
}else{
$user->active_date = null;
}
}
if(isset($data['save-account'])){
if(!isset($data['payment_account']) || $data['payment_account'] == ""){
$user->payment_account = null;
}else{
$user->payment_account = \Carbon::parse(str_replace("- ", "", $data['payment_account']));
}
}
if(isset($data['save-shop'])){
if(!isset($data['payment_shop']) || $data['payment_shop'] == ""){
$user->payment_shop = null;
}else{
$user->payment_shop = \Carbon::parse(str_replace("- ", "", $data['payment_shop']));
}
}
$user->save();
\Session()->flash('alert-save', true);
return redirect('/admin/users');
}
public function deleteUser($user_id)

View file

@ -120,11 +120,18 @@ class PayoneController extends Controller
$shopping_payment->save();
$send_link = false;
if($data['txaction'] === 'failed'){
if($data['txaction'] === 'failed'){
$shopping_order->setUserHistoryValue(['status' => 6]);
}
if($data['txaction'] === 'appointed'){
$shopping_order->setUserHistoryValue(['status' => 7]);
}
if($data['txaction'] === 'paid'){
$shopping_order->setUserHistoryValue(['status' => 8]);
$shopping_order->paid = true;
$shopping_order->save();
@ -135,18 +142,31 @@ class PayoneController extends Controller
if($shopping_order_item->product->action){
$user = User::findOrFail($shopping_order->auth_user_id);
$user->payment_order_id = $shopping_order_item->product->id;
$user->save();
$send_link = true;
$date = date("Y-m-d H:i:s", strtotime("+1 years"));
foreach ($shopping_order_item->product->action as $do){
if($shopping_order_item->product->getActionName($do) === 'payment_for_account'){
$user->payment_order_id = $shopping_order_item->product->id; //34
$user->payment_account = $date;
$user->wizard = 100;
$shopping_order->setUserHistoryValue(['status' => 9]);
}
if($shopping_order_item->product->getActionName($do) === 'payment_for_shop'){
$user->payment_order_id = $shopping_order_item->product->id; //35
$user->payment_shop = $date;
$user->wizard = 100;
$shopping_order->setUserHistoryValue(['status' => 9]);
}
if($shopping_order_item->product->getActionName($do) === 'payment_for_shop_upgrade'){
if($shopping_order_item->product->upgrade_to_id){
$user->payment_order_id = $shopping_order_item->product->upgrade_to_id;
}
$user->payment_shop = $user->payment_account; //same Date, is upgrade
$shopping_order->setUserHistoryValue(['status' => 9]);
}
$user->save();
}
@ -156,10 +176,6 @@ class PayoneController extends Controller
}
}
if($data['txaction'] === 'appointed'){
}
$billing_email = $shopping_order->shopping_user->billing_email;
$user_shop_email = $shopping_order->user_shop->user->email;
if(!$billing_email){

View file

@ -28,22 +28,39 @@ class DataTableController extends Controller
return '<a href="' . route('admin_lead_edit', [$user->id]) . '" class="btn icon-btn btn-sm btn-primary"><span class="fa fa-edit"></span></a>';
})
->addColumn('admin', function (User $user) {
return '<a href="#" data-toggle="modal" data-target="#modals-default" data-id="'.$user->id.'" data-email="'.$user->email.'" data-admin="'.$user->admin.'" data-active="'.$user->active.'" data-confirmed="'.$user->confirmed.'">'.HTMLHelper::getRoleLabel($user->admin).'</a>';
return '<a href="#" data-toggle="modal" data-target="#modals-admin" data-id="'.$user->id.'" data-email="'.$user->email.'" data-admin="'.$user->admin.'">'.HTMLHelper::getRoleLabel($user->admin).'</a>';
})
->addColumn('confirmed', function (User $user) {
return $user->confirmed ? '<span class="badge badge-pill badge-success"><i class="fa fa-check"></i></span>' : '<span class="badge badge-pill badge-danger"><i class="fa fa-times"></i></span>';
$date = $user->getConfirmationDateFormat();
$link = '<a href="#" data-toggle="modal" data-target="#modals-confirmed" data-id="'.$user->id.'" data-email="'.$user->email.'" data-confirmed="'.$user->confirmed.'" data-confirmation_date="'.$date.'">';
return $user->confirmed ? $link.'<span class="badge badge-pill badge-success"><i class="fa fa-check"></i> '.$date.'</span></a>' : $link.'<span class="badge badge-pill badge-danger"><i class="fa fa-times"></i></span></a>';
})
->addColumn('active', function (User $user) {
return $user->active ? ' <span class="badge badge-pill badge-success"><i class="fa fa-check"></i></span>' : '<span class="badge badge-pill badge-danger"><i class="fa fa-times"></i></span>';
$date = $user->getActiveDateFormat();
$link = '<a href="#" data-toggle="modal" data-target="#modals-active" data-id="'.$user->id.'" data-email="'.$user->email.'" data-active="'.$user->active.'" data-active_date="'.$date.'">';
return $user->active ? $link.'<span class="badge badge-pill badge-success"><i class="fa fa-check"></i> '.$date.'</span></a>' : $link.'<span class="badge badge-pill badge-danger"><i class="fa fa-times"></i></span></a>';
})
->addColumn('account', function (User $user) {
$date = $user->getPaymentAccountDateFormat();
$link = '<a href="#" data-toggle="modal" data-target="#modals-account" data-id="'.$user->id.'" data-email="'.$user->email.'" data-payment_account="'.$date.'">';
if($user->payment_account){
if($user->isActiveAccount()){
return $link.'<span class="badge badge-pill badge-success"><i class="fa fa-check"></i> '.$date.'</span></a>';
}
return $link.'<span class="badge badge-pill badge-warning"><i class="fa fa-ban"></i> '.$date.'</span></a>';
}
return $link.'<span class="badge badge-pill badge-danger"><i class="fa fa-times"></i></span></a>';
})
->addColumn('shop', function (User $user) {
if($user->shop){
if($user->shop->active){
return '<span class="badge badge-pill badge-success"><i class="fa fa-check"></i> active</span>';
$date = $user->getPaymentShopDateFormat();
$link = '<a href="#" data-toggle="modal" data-target="#modals-shop" data-id="'.$user->id.'" data-email="'.$user->email.'" data-payment_shop="'.$date.'">';
if($user->payment_shop){
if($user->isActiveShop()){
return $link.'<span class="badge badge-pill badge-success"><i class="fa fa-check"></i> '.$date.'</span></a>';
}
return'<span class="badge badge-pill badge-success"><i class="fa fa-check"></i> deactive</span>';
return $link.'<span class="badge badge-pill badge-warning"><i class="fa fa-ban"></i> '.$date.'</span></a>';
}
return '<span class="badge badge-pill badge-danger"><i class="fa fa-times"></i></span>';
return $link.'<span class="badge badge-pill badge-danger"><i class="fa fa-times"></i></span></a>';
})
->addColumn('since', function (User $user) {
if($user->shop){
@ -63,7 +80,7 @@ class DataTableController extends Controller
->orderColumn('active', 'active $1')
->orderColumn('shop', 'shop $1')
->orderColumn('admin', 'active $1')
->rawColumns(['id', 'admin', 'confirmed', 'active', 'shop', 'action_delete'])
->rawColumns(['id', 'admin', 'confirmed', 'active', 'account', 'shop', 'action_delete'])
->make(true);
}
}

View file

@ -2,17 +2,21 @@
namespace App\Http\Controllers;
use App\Mail\MailInfo;
use App\Models\Product;
use App\Models\ShoppingInstance;
use App\Models\ShoppingPayment;
use App\Models\UserHistory;
use App\User;
use Auth;
use Carbon\Carbon;
use Carbon;
use Config;
use Illuminate\Validation\Rules\In;
use Request;
use Input;
use Util;
use Yard;
use Illuminate\Support\Facades\Mail;
class MembershipController extends Controller
{
@ -29,58 +33,129 @@ class MembershipController extends Controller
public function index()
{
$user = Auth::user();
$user = User::find(Auth::user()->id);
$diff_months = 0;
if($user->payment_account){
$diff_months = Carbon::now()->diffInMonths(Carbon::parse($user->payment_account)) +1;
}
$userHistoryPaymentOrder = UserHistory::whereUserId($user->id)->whereAction('payment_order')->get()->last();
$userHistoryUpgradeOrder = UserHistory::whereUserId($user->id)->whereAction('upgrade_order')->get()->last();
$userHistoryDeleteMembership = UserHistory::whereUserId($user->id)->whereAction('delete_membership')->whereStatus(50)->get()->last();
$data = [
'user' => $user,
'products' => Product::where('active', true)->where('show_at', '=', 3)->orderBy('pos', 'ASC')->get(),
'upgrade' => Product::where('active', true)->where('show_at', '=', 4)->where('identifier', 'upgrade')->get(),
'diff_months' => $diff_months,
'userHistoryPaymentOrder' => $userHistoryPaymentOrder,
'userHistoryUpgradeOrder' => $userHistoryUpgradeOrder,
'userHistoryDeleteMembership' => $userHistoryDeleteMembership,
];
return view('user.membership.index', $data);
}
public function storePayment($step = 0){
if(Input::get('switchers-package-wizard')){
$user = Auth::user();
Yard::instance('shopping')->destroy();
$product = Product::find(Input::get('switchers-package-wizard'));
public function storePayment($action){
if(Input::get('abo_options')){
$user->abo_options = true;
$data = Input::all();
//#### remove_abo
if($action === "remove_abo"){
if(Input::get('abo_options_remove')){
$user = User::find(Auth::user()->id);
$user->abo_options = false;
$user->save();
$user->account->payment_data = null;
$user->account->save();
UserHistory::create(['user_id' => $user->id, 'action'=>'abo_options_remove', 'status'=>10]);
\Session()->flash('alert-success', "Abo-Option deaktiviert");
return back();
}
if($product && $product->active && $product->show_at >= 3){
$image = "";
if($product->images->count()){
$image = $product->images->first()->slug;
\Session()->flash('alert-error', "Fehler, Checkbox nicht bestätigt.");
return back();
}
//#### payment order
//#### shop upgrade
if($action === "upgrade_order" || $action === "payment_order"){
if(Input::get('switchers-package-wizard')){
$user = User::find(Auth::user()->id);
Yard::instance('shopping')->destroy();
$product = Product::find(Input::get('switchers-package-wizard'));
$showAboOptions = false;
if(Input::get('abo_options')){
$showAboOptions = true;
$user->abo_options = true;
$user->save();
}
$qty = Input::get('qty') ? Input::get('qty') : 1;
Yard::instance('shopping')->add($product->id, $product->getLang('name'), $qty, $product->price, ['image' => $image, 'slug' => $product->slug, 'weight' => $product->weight]);
if($product && $product->active && $product->show_at >= 3){
$image = "";
if($product->images->count()){
$image = $product->images->first()->slug;
}
$qty = Input::get('qty') ? Input::get('qty') : 1;
Yard::instance('shopping')->add($product->id, $product->getLang('name'), $qty, $product->price, ['image' => $image, 'slug' => $product->slug, 'weight' => $product->weight]);
do {
$identifier = Util::getToken();
} while( ShoppingInstance::where('identifier', $identifier)->count() );
do {
$identifier = Util::getToken();
} while( ShoppingInstance::where('identifier', $identifier)->count() );
ShoppingInstance::create([
'identifier' => $identifier,
'user_shop_id' => 1, //is first faker shop!
'auth_user_id' => Auth::user()->id,
'subdomain' => url('/'),
'country_id' => Yard::instance('shopping')->getShippingCountryId(),
]);
Yard::instance('shopping')->store($identifier);
//add to DB
$path = route('checkout.checkout_card', ['identifier'=>$identifier]);
//$path = str_replace('http', 'https', $path);
return redirect()->secure($path);
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(),
]);
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, 'abo_options'=>$showAboOptions]);
//$path = str_replace('http', 'https', $path);
return redirect()->secure($path);
}
}
}
\Session()->flash('alert-error', "Fehler beim Produkt");
return back();
if($action === "change_order"){
if(Input::get('switchers-package-wizard')){
$user = User::find(Auth::user()->id);
$product = Product::find(Input::get('switchers-package-wizard'));
if($user->payment_order_id == $product->id){
\Session()->flash('alert-success', "keine Änderung vorgenommen.");
return back();
}
if($product && $product->active && $product->show_at >= 3){
$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', "gebuchtes Paket wurde geändert.");
return back();
}
}
}
if($action === "delete_membership"){
if(Input::get('delete_membership_mivita')){
//TODO
$user = User::find(Auth::user()->id);
$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', "Mitgliedschaft beenden ist beantragt");
return back();
}
\Session()->flash('alert-error', "Fehler, Checkbox nicht bestätigt.");
return back();
}
}
}

View file

@ -233,6 +233,7 @@ class PayoneController extends Controller
'customermessage' => $response['customermessage'],
'status' => $response['status'],
]);
Util::setUserHistoryValue(['status'=>3]);
\Session::flash('errormessage', $response['errormessage']);
\Session::flash('customermessage', $response['customermessage']);
return redirect(route('checkout.checkout_card'));
@ -247,6 +248,7 @@ class PayoneController extends Controller
'userid' => $response['userid'],
'status' => $response['status'],
]);
Util::setUserHistoryValue(['status'=>4]);
return redirect()->away($response["redirecturl"]);
exit;
@ -262,7 +264,7 @@ class PayoneController extends Controller
'status' => $response['status'],
'transmitted_data' => $response,
]);
Util::setUserHistoryValue(['status'=>5]);
if($payt->shopping_payment->clearingtype === "vor"){
//vorkasse
return redirect(route('checkout.transaction_approved', [$payt->id, $this->reference]));

View file

@ -103,6 +103,7 @@ class CardController extends Controller
ShoppingInstance::create([
'identifier' => $identifier,
'user_shop_id' => $user_shop->id,
'payment' => 1,
'subdomain' => url('/'),
'country_id' => Yard::instance('shopping')->getShippingCountryId(),

View file

@ -72,13 +72,16 @@ class CheckoutController extends Controller
$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->abo_options = $user->abo_options;
$shopping_user->save();
$this->putPayments('shopping_user_id', $shopping_user->id);
}else{
$shopping_user = ShoppingUser::findOrNew($this->getPayments('shopping_user_id'));
}
if(Util::getAuthUser()){
$shopping_user->abo_options = Util::getUserHistoryValue('abo_options');
$shopping_user->save();
}
if($shopping_user->same_as_billing === NULL){
$shopping_user->same_as_billing = true;
}
@ -91,7 +94,6 @@ class CheckoutController extends Controller
public function checkoutFinal(){
$rules = array(
'billing_salutation' => 'required',
'billing_firstname'=>'required',
@ -124,6 +126,7 @@ class CheckoutController extends Controller
$shopping_user = $this->makeShoppingUser($data);
//make Order and Items
$shopping_order = $this->makeShoppingOrder($shopping_user);
Util::setUserHistoryValue(['status'=>2, 'shopping_order_id'=>$shopping_order->id]);
//check credit Card
if(Input::get('payment_method')){
@ -183,7 +186,6 @@ class CheckoutController extends Controller
\Session::flash('elv-creditor_identifier', $ret['elv']['creditor_identifier']);
return redirect(route('checkout.checkout_card'))->withInput(Input::all());
/*
* array(4) { ["status"]=> string(5) "VALID" ["pseudocardpan"]=> string(19) "9410010000169020567" ["cardtype"]=> string(1) "V" ["truncatedcardpan"]=> string(16) "411111XXXXXX1111" }
* application through http post
@ -224,6 +226,8 @@ class CheckoutController extends Controller
$ShoppingPayment = ShoppingPayment::where('shopping_order_id', $shopping_order_id)->where('reference', $reference)->first();
if(!$ShoppingPayment){
//TODO log this
Util::setUserHistoryValue(['status'=>21]);
\Session::flash('checkout-error', 'Der Zahlungsvorgang konnte nicht abgeschlossen werden, die Zahlung wurde nicht gefunden: '.$reference);
return redirect(route('checkout.checkout_card'));
}
@ -245,11 +249,13 @@ class CheckoutController extends Controller
return view('web.templates.checkout-final', $data);
}
if($status === "cancel"){
Util::setUserHistoryValue(['status'=>22]);
\Session::flash('checkout-error', 'Der Zahlungsvorgang wurde abgebrochen, die Bestellung konnte nicht ausgeführt werden.');
return redirect(route('checkout.checkout_card'));
}
if($status === "error"){
Util::setUserHistoryValue(['status'=>23]);
\Session::flash('checkout-error', 'Der Zahlungsvorgang wurde abgebrochen, die Bestellung konnte nicht ausgeführt werden.');
return redirect(route('checkout.checkout_card'));
@ -276,7 +282,7 @@ class CheckoutController extends Controller
private function storeUserPaymentsData($shopping_user, $ret){
if($shopping_user->auth_user_id){
$user = User::find($shopping_user->auth_user_id);
if($user && $user->account && $user->abo_options){
if($user && $user->account && $shopping_user->abo_options){
if(isset($ret['elv']) && is_array($ret['elv'])){
$user->account->payment_data = $ret['elv'];
$user->account->save();
@ -308,7 +314,6 @@ class CheckoutController extends Controller
private function makeShoppingOrder($shopping_user){
$user_shop = Util::getUserShop();
$data = [
@ -316,6 +321,7 @@ class CheckoutController extends Controller
'auth_user_id' => $shopping_user->auth_user_id,
'country_id' => Yard::instance('shopping')->getShippingCountryId(),
'user_shop_id' => $user_shop->id,
'payment_for' => Util::getUserPaymentFor(),
'total' => Yard::instance('shopping')->total(2, '.', ','),
'shipping' => Yard::instance('shopping')->shipping(2, '.', ','),
'subtotal' => Yard::instance('shopping')->subtotalWithShipping(2, '.', ','),

View file

@ -394,8 +394,9 @@ class WizardController extends Controller
ShoppingInstance::create([
'identifier' => $identifier,
'user_shop_id' => 1, //is first faker shop!
'user_shop_id' => 1, //is first faker shop for buy intern
'auth_user_id' => Auth::user()->id,
'payment' => 4,
'subdomain' => url('/'),
'country_id' => Yard::instance('shopping')->getShippingCountryId(),

View file

@ -21,24 +21,25 @@ class Checkout
*/
public function handle($request, Closure $next)
{
if($identifier = ShoppingInstance::where('identifier', $request->route('identifier'))->first()){
if($shopping_instance = ShoppingInstance::where('identifier', $request->route('identifier'))->first()){
//user shop
$user_shop = $identifier->user_shop;
if($user_shop && $user_shop->active == 1){
$user_shop = $shopping_instance->user_shop;
if($user_shop && $user_shop->active == 1 && $user_shop->user->isActiveShop()){
Util::setPostRoute('user/');
\Session::put('user_shop', $user_shop);
\Session::put('user_shop_domain', $identifier->subdomain);
\Session::put('user_shop_domain', $shopping_instance->subdomain);
\Session::put('user_shop_payment', $shopping_instance->payment);
\Session::put('user_shop_identifier', $shopping_instance->identifier);
\Session::put('isCheckout', true);
if($identifier->auth_user_id){
\Session::put('auth_user', $identifier->auth_user);
if($shopping_instance->auth_user_id){
\Session::put('auth_user', $shopping_instance->auth_user);
}
}
Yard::instance('shopping')->destroy();
//restore yard
Yard::instance('shopping')->restore($request->route('identifier'));
Yard::instance('shopping')->setShippingCountryWithPrice($identifier->country_id);
Yard::instance('shopping')->setShippingCountryWithPrice($shopping_instance->country_id);
ShoppingInstance::where('identifier', $request->route('identifier'))->delete();
$request->route()->forgetParameter('identifier');

View file

@ -22,10 +22,18 @@ class Subdomain
{
$tld = config('app.tld_care');
if(!empty($request->route('subdomain'))){
$user_shop = UserShop::where('slug', $request->route('subdomain'))->where('active', 1)->first();
//sub.mivita.care
$user_shop = UserShop::where('slug', $request->route('subdomain'))->first();
$request->route()->forgetParameter('subdomain');
Util::setPostRoute('user/');
if($user_shop){
if(!$user_shop->active){
abort(503);
}
if(!$user_shop->user->isActiveShop()){
abort(503);
}
\Session::put('user_shop', $user_shop);
\Session::put('user_shop_domain', config('app.protocol').$user_shop->slug.".".config('app.domain').config('app.tld_care'));
@ -33,8 +41,9 @@ class Subdomain
return $next($request);
}
}else{
//mivita.shop
$tld = config('app.tld_shop');
$user_shop = UserShop::where('slug', 'aloevera')->where('active', 1)->first();
$user_shop = UserShop::where('slug', 'aloevera')->first();
//$request->route()->forgetParameter('subdomain');
Util::setPostRoute('user/');
if($user_shop){
@ -44,10 +53,8 @@ class Subdomain
return $next($request);
}
}
return redirect(config('app.url'). $tld);
return redirect(config('app.url') .$tld);
}
}

View file

@ -65,7 +65,7 @@ class MailCheckout extends Mailable
return $this->view('emails.checkout_status')->with([
'salutation' => $salutation,
'copy1line' => __('email.status_copy1line'),
'txactionn' => $this->txaction,
'txaction' => $this->txaction,
'shopping_order' => $this->shopping_order,
'shopping_payment' => $this->shopping_payment,
'copy3line' => __('email.checkout_copy3line'),

66
app/Mail/MailInfo.php Normal file
View file

@ -0,0 +1,66 @@
<?php
namespace App\Mail;
use App\User;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class MailInfo extends Mailable
{
use Queueable, SerializesModels;
protected $user;
protected $action;
public $subject;
public function __construct(User $user, $action)
{
$this->user = $user;
$this->action = $action;
if($action === "delete_membership"){
$this->subject = 'Mitgliedschaft beenden - beantragt';
}
}
public function build()
{
$content = __(strtoupper($this->user->account->salutation))." ";
$content .= $this->user->account->first_name." ".$this->user->account->last_name."\n";
$content .= $this->user->account->address."\n";
$content .= $this->user->account->zipcode." ".$this->user->account->city."\n";
$content .= $this->user->account->country_id ? $this->user->account->country->de."\n\n" : "\n\n";
if($this->user->account->phone){
$content .= "Telefon: ";
$content .= $this->user->account->pre_phone_id ? $this->user->account->pre_phone->phone." " : " ";
$content .= $this->user->account->phone;
}
if($this->user->account->mobil){
$content .= "Mobil: ";
$content .= $this->user->account->pre_mobil_id ? $this->user->account->pre_mobil->phone." " : " ";
$content .= $this->user->account->mobil;
}
$content .= "E-Mail: ".$this->user->email;
if($this->action === "delete_membership"){
$copy1line = "Ein Berater möchte seine Mitgliedschaft beenden."."\n";
}
return $this->view('emails.info')->with([
'url' => route('admin_lead_edit', $this->user->id).'?show=check_lead',
'salutation' => 'Berater Registrierung pürfen',
'button' => 'zur Berater Prüfung',
'copy1line' => $copy1line,
'copy2line' => __('email.copy2line'),
'content' => $content,
]);
}
}

View file

@ -12,7 +12,7 @@ use Illuminate\Database\Eloquent\Model;
/**
* Class File
*
*
* @property int $id
* @property int $user_id
* @property string $filename
@ -23,10 +23,24 @@ use Illuminate\Database\Eloquent\Model;
* @property int $size
* @property Carbon $created_at
* @property Carbon $updated_at
*
* @property User $user
*
* @package App\Models
* @property string $identifier
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\File newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\File newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\File query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\File whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\File whereDir($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\File whereExt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\File whereFilename($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\File whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\File whereIdentifier($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\File whereMine($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\File whereOriginalName($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\File whereSize($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\File whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\File whereUserId($value)
* @mixin \Eloquent
*/
class File extends Model
{

View file

@ -90,11 +90,25 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ProductImage[] $imagesActive
* @property-read int|null $images_active_count
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Product wherePoints($value)
* @property string|null $identifier
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Product whereIdentifier($value)
* @property int|null $upgrade_to_id
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Product whereUpgradeToId($value)
*/
class Product extends Model
{
/*identifiers
show_upgrade # in membership payment can upgrade this package to show order
show_order # in membership payment show always
upgrade # need upgrade_to_id set user->payment_order_id to the package in the payment api
*/
protected $identifiers_types = [
'show_upgrade' => 'Kann gepdatet werden',
'show_order' => 'Wird immer als Option angezeigt',
'upgrade' => 'Produktupgrade zu upgrade_to_id',
];
protected $table = 'products';
protected $casts = [
@ -134,7 +148,8 @@ class Product extends Model
'active',
'show_at',
'identifier',
'action'
'action',
'upgrade_to_id'
];
public $showATs = [
@ -148,6 +163,7 @@ class Product extends Model
public $actions = [
0 => 'payment_for_account',
1 => 'payment_for_shop',
2 => 'payment_for_shop_upgrade',
];
public function sluggable()

View file

@ -28,14 +28,24 @@ use Illuminate\Database\Eloquent\Model;
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingInstance whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingInstance whereUserShopId($value)
* @mixin \Eloquent
* @property int|null $payment
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingInstance wherePayment($value)
*/
class ShoppingInstance extends Model
{
public $paymentTypes = [
1 => 'User Shop',
2 => 'Berater Shop',
3 => 'Berater Membership',
4 => 'Berater Wizard',
];
protected $table = 'shopping_instances';
protected $fillable = [
'identifier', 'user_shop_id', 'auth_user_id', 'subdomain', 'country_id'
'identifier', 'user_shop_id', 'auth_user_id', 'payment', 'subdomain', 'country_id'
];
public function user_shop()

View file

@ -51,6 +51,8 @@ use Illuminate\Database\Eloquent\Model;
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrder whereUserShopId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrder whereWeight($value)
* @mixin \Eloquent
* @property int|null $payment_for
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrder wherePaymentFor($value)
*/
class ShoppingOrder extends Model
{
@ -104,6 +106,11 @@ class ShoppingOrder extends Model
return $this->belongsTo('App\User','auth_user_id');
}
public function user_history()
{
return $this->hasOne('App\Models\UserHistory','shopping_order_id')->latest();
}
public function shopping_order_items(){
return $this->hasMany('App\Models\ShoppingOrderItem', 'shopping_order_id');
@ -113,6 +120,14 @@ class ShoppingOrder extends Model
return $this->hasMany('App\Models\ShoppingPayment', 'shopping_order_id');
}
public function setUserHistoryValue($values = []){
if($user_history = $this->user_history){
foreach ($values as $key=>$val){
$user_history->{$key} = $val;
}
$user_history->save();
}
}
public function _format_number($value)
{

View file

@ -73,6 +73,8 @@ use Illuminate\Database\Eloquent\Model;
* @property-read \App\Models\ShoppingOrder $shopping_order
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ShoppingOrder[] $shopping_orders
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereOrders($value)
* @property int|null $abo_options
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereAboOptions($value)
*/
class ShoppingUser extends Model
{

View file

@ -113,6 +113,8 @@ use Carbon\Carbon;
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserAccount whereMNotes($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserAccount whereMSalutation($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserAccount whereTaxableSales($value)
* @property array|null $payment_data
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserAccount wherePaymentData($value)
*/
class UserAccount extends Model
{

125
app/Models/UserHistory.php Normal file
View file

@ -0,0 +1,125 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
use App\User;
/**
* Class UserHistory
*
* @property int $id
* @property int $user_id
* @property int $shopping_order_id
* @property int $product_id
* @property string $action
* @property int $referenz
* @property int $status
* @property Carbon $created_at
* @property Carbon $updated_at
* @property Product $product
* @property ShoppingOrder $shopping_order
* @property User $user
* @package App\Models
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserHistory newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserHistory newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserHistory query()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserHistory whereAction($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserHistory whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserHistory whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserHistory whereProductId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserHistory whereReferenz($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserHistory whereShoppingOrderId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserHistory whereStatus($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserHistory whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserHistory whereUserId($value)
* @mixin \Eloquent
* @property string|null $identifier
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserHistory whereIdentifier($value)
*/
class UserHistory extends Model
{
protected $table = 'user_histories';
protected $status_types = [
1 => 'store_payment',
2 => 'checkout_payment',
3 => 'payment_error',
4 => 'payment_redirect',
5 => 'payment_approved',
6 => 'txaction_failed',
7 => 'txaction_appointed',
8 => 'txaction_paid',
9 => 'success_payment',
10 => 'success',
21 => 'payment_not_found',
22 => 'checkout_cancel',
23 => 'checkout_error',
50 => 'delete_membership'
];
protected $status_colors = [
1 => 'warning',
2 => 'warning',
3 => 'danger',
4 => 'warning',
5 => 'success',
6 => 'danger',
7 => 'warning',
8 => 'success',
9 => 'success',
10 => 'success',
21 => 'danger',
22 => 'danger',
23 => 'danger',
];
protected $casts = [
'user_id' => 'int',
'shopping_order_id' => 'int',
'product_id' => 'int',
'referenz' => 'int',
'status' => 'int'
];
protected $fillable = [
'user_id',
'shopping_order_id',
'product_id',
'action',
'referenz',
'identifier',
'abo_options',
'status'
];
public function product()
{
return $this->belongsTo(Product::class);
}
public function shopping_order()
{
return $this->belongsTo(ShoppingOrder::class);
}
public function user()
{
return $this->belongsTo(User::class);
}
public function getStatusType(){
if(isset($this->status_types[$this->status])){
return $this->status_types[$this->status];
}
}
public function getStatusColor(){
if(isset($this->status_colors[$this->status])){
return $this->status_colors[$this->status];
}
return 'default';
}
}

View file

@ -3,6 +3,8 @@ namespace App\Services;
use App\Models\UserHistory;
class Util
{
@ -81,9 +83,42 @@ class Util
return false;
}
public static function getUserShopIdentifier(){
if(\Session::has('user_shop_identifier')){
if($user_shop_identifier = \Session::get('user_shop_identifier')){
return $user_shop_identifier;
}
}
return false;
}
public static function getUserHistory(){
$auth_user = self::getAuthUser();
$user_shop_identifier = self::getUserShopIdentifier();
if($user_shop_identifier && $auth_user){
return UserHistory::whereUserId($auth_user->id)->whereIdentifier($user_shop_identifier)->get()->last();
}
return false;
}
public static function setUserHistoryValue($values = []){
if($user_history = self::getUserHistory()){
foreach ($values as $key=>$val){
$user_history->{$key} = $val;
}
$user_history->save();
}
}
public static function getUserHistoryValue($key){
if($user_history = self::getUserHistory()) {
return $user_history->{$user_history};
}
return null;
}
public static function addRoute($p = []){
$b = [];
if(\Session::has('user_shop')){
if($user_shop = \Session::get('user_shop')){
$b = ['subdomain' => $user_shop->slug];
@ -106,6 +141,14 @@ class Util
$pro = $protocol ? config('app.protocol') : "";
return $pro.config('app.pre_url_crm').config('app.domain').config('app.tld_care');
}
public static function getUserPaymentFor(){
if(\Session::has('user_shop_payment')){
return \Session::get('user_shop_payment');
}
return null;
}
public static function getUserShopBackUrl($reference = ""){
if(\Session::has('user_shop')){
@ -123,6 +166,13 @@ class Util
if(\Session::has('user_shop')){
if(\Session::has('user_shop_domain')){
if(self::getUserPaymentFor() === 3){
return \Session::get('user_shop_domain')."/user/membership";
}
if(self::getUserPaymentFor() === 2){
return \Session::get('user_shop_domain')."/user/orders";
}
return \Session::get('user_shop_domain');
}
if($user_shop = \Session::get('user_shop')){

View file

@ -86,6 +86,19 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* @property-read \App\User|null $user_sponsor
* @method static \Illuminate\Database\Eloquent\Builder|\App\User whereMLevel($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\User whereMSponsor($value)
* @property string|null $release_account
* @property int|null $payment_order_id
* @property int|null $abo_options
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\File[] $files
* @property-read int|null $files_count
* @property-read \App\Models\Product|null $payment_order
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ShoppingOrder[] $shopping_orders
* @property-read int|null $shopping_orders_count
* @method static \Illuminate\Database\Eloquent\Builder|\App\User whereAboOptions($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\User wherePaymentOrderId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\User whereReleaseAccount($value)
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\UserHistory[] $user_histories
* @property-read int|null $user_histories_count
*/
class User extends Authenticatable
{
@ -96,7 +109,6 @@ class User extends Authenticatable
protected $table = 'users';
/**
* The attributes that are mass assignable.
*
@ -126,23 +138,24 @@ class User extends Authenticatable
public function user_sponsor(){
return $this->belongsTo('App\User', 'm_sponsor');
}
public function payment_order(){
public function payment_order_product(){
return $this->belongsTo('App\Models\Product', 'payment_order_id');
}
public function files(){
return $this->hasMany('App\Models\File', 'user_id', '');
}
public function shopping_orders(){
return $this->hasMany('App\Models\ShoppingOrder', 'auth_user_id', '');
}
public function user_histories(){
return $this->hasMany('App\Models\UserHistory', 'user_id', '');
}
public function shop()
{
@ -150,7 +163,6 @@ class User extends Authenticatable
}
public function user_update_email()
{
return $this->hasMany('App\Models\UserUpdateEmail', 'user_id', 'id');
@ -227,6 +239,17 @@ class User extends Authenticatable
return $this->payment_shop ? Carbon::parse($this->payment_shop)->gt(Carbon::now()) : false;
}
public function isRenewalAccount()
{
if ($this->payment_account) {
return Carbon::parse($this->payment_account)->modify('-'.config('mivita.renewal_days').' days')->lt(Carbon::now());
}
return false;
}
public function nextRenewalAccount(){
return $this->payment_account ? Carbon::parse($this->payment_account)->modify('-'.config('mivita.renewal_days').' days')->format(\Util::formatDateTimeDB()) : false ;
}
public function daysActiveAccount(){
return Carbon::now()->diffInDays(Carbon::parse($this->payment_account), false);