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

5
.env
View file

@ -12,6 +12,8 @@ APP_URL_CHECKOUT=checkout.
#APP_URL_MAIN=dev.
APP_URL_CRM=my.
APP_CHECKOUT_MAIL=register@adametz.media
APP_INFO_MAIL=register@adametz.media
#APP_CHECKOUT_MAIL=no-replay@mivita.care
LOG_CHANNEL=stack
@ -55,3 +57,6 @@ PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
MIVITA_RENEWAL_DAYS=29
MIVITA_ABO_BOOKING_DAYS=14

3
.idea/.gitignore generated vendored Normal file
View file

@ -0,0 +1,3 @@
# Datasource local storage ignored files
/dataSources.local.xml
/dataSources/

11
.idea/dataSources.xml generated Normal file
View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="MySQL - @localhost" uuid="f58b2045-72b3-4199-b31f-5c9c653c31de">
<driver-ref>mysql.8</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://localhost:3306/mivita</jdbc-url>
</data-source>
</component>
</project>

127
.idea/workspace.xml generated
View file

@ -2,43 +2,54 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="2fbaac5f-25ba-4502-a970-cc14728d7d55" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/app/Http/Controllers/MembershipController.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Http/Middleware/ActiveAccount.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Http/Middleware/ActiveShop.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/lang/de/cal.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/user/membership/_abo_options.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/user/membership/_upgrade.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/user/membership/index.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/user/wizard/_payment.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/user/wizard/create_release.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/user/wizard/register_payment.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/.idea/.gitignore" afterDir="false" />
<change afterPath="$PROJECT_DIR$/.idea/dataSources.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Mail/MailInfo.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/mivita.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/lang/de/payment.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/user/membership/_change.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/user/membership/_payment.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/user/membership/_payment_order.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.env" beforeDir="false" afterPath="$PROJECT_DIR$/.env" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.phpstorm.meta.php" beforeDir="false" afterPath="$PROJECT_DIR$/.phpstorm.meta.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/_ide_helper.php" beforeDir="false" afterPath="$PROJECT_DIR$/_ide_helper.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/AdminUserController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/AdminUserController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/Api/PayoneController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Api/PayoneController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/HomeController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/HomeController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/DataTableController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/DataTableController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/MembershipController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/MembershipController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/Pay/PayoneController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Pay/PayoneController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/UserShopController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/UserShopController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/Web/CardController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Web/CardController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/Web/CheckoutController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Web/CheckoutController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/WizardController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/WizardController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Kernel.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Kernel.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Middleware/Authenticate.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Middleware/Authenticate.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Middleware/Localization.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Middleware/Localization.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Middleware/Checkout.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Middleware/Checkout.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Middleware/Subdomain.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Middleware/Subdomain.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Mail/MailCheckout.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Mail/MailCheckout.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/File.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/File.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/Product.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/Product.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/ShoppingInstance.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/ShoppingInstance.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/ShoppingOrder.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/ShoppingOrder.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/ShoppingUser.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/ShoppingUser.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/UserAccount.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/UserAccount.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Services/Util.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Services/Util.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/User.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/User.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/database/migrations/2014_10_12_000000_create_users_table.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/migrations/2014_10_12_000000_create_users_table.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/composer.lock" beforeDir="false" afterPath="$PROJECT_DIR$/composer.lock" afterDir="false" />
<change beforePath="$PROJECT_DIR$/config/app.php" beforeDir="false" afterPath="$PROJECT_DIR$/config/app.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/database/migrations/2018_10_21_164001_create_products_table.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/migrations/2018_10_21_164001_create_products_table.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/database/migrations/2019_02_23_161530_create_shopping_users_table.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/migrations/2019_02_23_161530_create_shopping_users_table.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/database/migrations/2019_02_29_170559_create_user_accounts_table.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/migrations/2019_02_29_170559_create_user_accounts_table.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/public/css/application.css" beforeDir="false" afterPath="$PROJECT_DIR$/public/css/application.css" afterDir="false" />
<change beforePath="$PROJECT_DIR$/database/migrations/2019_02_21_195012_create_shopping_instances_table.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/migrations/2019_02_21_195012_create_shopping_instances_table.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/database/migrations/2019_02_23_163527_create_shopping_orders_table.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/migrations/2019_02_23_163527_create_shopping_orders_table.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/admin/product/form.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/admin/product/form.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/admin/site/edit.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/admin/site/edit.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/emails/checkout.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/emails/checkout.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/admin/user/index.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/admin/user/index.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/auth/login.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/auth/login.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/home.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/home.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/layouts/includes/layout-sidenav.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/layouts/includes/layout-sidenav.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/user/wizard/create.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/user/wizard/create.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/layouts/application.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/layouts/application.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/user/membership/_abo_options.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/user/membership/_abo_options.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/user/membership/_upgrade.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/user/membership/_upgrade.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/user/membership/index.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/user/membership/index.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/user/wizard/_payment.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/user/wizard/_payment.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/web/templates/checkout.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/web/templates/checkout.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/web/user/layouts/includes/footer.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/web/user/layouts/includes/footer.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/web/user/layouts/includes/header.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/web/user/layouts/includes/header.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/routes/web.php" beforeDir="false" afterPath="$PROJECT_DIR$/routes/web.php" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
@ -52,6 +63,43 @@
<phar pharPath="/usr/local/bin/composer" interpreterId="1b9e99f0-0fb5-45bb-9686-0d9b61bf499b" />
</execution>
</component>
<component name="DatabaseView">
<option name="SHOW_INTERMEDIATE" value="true" />
<option name="GROUP_DATA_SOURCES" value="true" />
<option name="GROUP_SCHEMA" value="true" />
<option name="GROUP_CONTENTS" value="false" />
<option name="SORT_POSITIONED" value="false" />
<option name="SHOW_EMPTY_GROUPS" value="false" />
<option name="AUTO_SCROLL_FROM_SOURCE" value="false" />
<option name="HIDDEN_KINDS">
<set />
</option>
<expand>
<path>
<item name="Database" type="3277223f:DatabaseStructure$DbRootGroup" />
<item name="MySQL - @localhost" type="feb32156:DbDataSourceImpl" />
</path>
<path>
<item name="Database" type="3277223f:DatabaseStructure$DbRootGroup" />
<item name="MySQL - @localhost" type="feb32156:DbDataSourceImpl" />
<item name="schemas" type="d4e8921:DatabaseStructure$FamilyGroup" />
</path>
<path>
<item name="Database" type="3277223f:DatabaseStructure$DbRootGroup" />
<item name="MySQL - @localhost" type="feb32156:DbDataSourceImpl" />
<item name="schemas" type="d4e8921:DatabaseStructure$FamilyGroup" />
<item name="mivita: schema" type="76f4a085:MysqlImplModel$Schema" />
</path>
<path>
<item name="Database" type="3277223f:DatabaseStructure$DbRootGroup" />
<item name="MySQL - @localhost" type="feb32156:DbDataSourceImpl" />
<item name="schemas" type="d4e8921:DatabaseStructure$FamilyGroup" />
<item name="mivita: schema" type="76f4a085:MysqlImplModel$Schema" />
<item name="user_histories: table" type="285a2a93:MysqlImplModel$Table" />
</path>
</expand>
<select />
</component>
<component name="FrameworkCommandLineHistory">
<commandsHistory>
<command text="php artisan ide-helper:meta" />
@ -213,10 +261,11 @@
</component>
<component name="PropertiesComponent">
<property name="ASKED_ADD_EXTERNAL_FILES" value="true" />
<property name="DatabaseDriversLRU" value="mysql" />
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/resources/views/user/membership" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/app/Mail" />
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
<property name="nodejs_package_manager_path" value="npm" />
@ -231,11 +280,11 @@
<recent name="$PROJECT_DIR$/public/download" />
</key>
<key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/app/Mail" />
<recent name="$PROJECT_DIR$/resources/lang/de" />
<recent name="$PROJECT_DIR$/resources/views/user/membership" />
<recent name="$PROJECT_DIR$/config" />
<recent name="$PROJECT_DIR$/resources/views/user/members" />
<recent name="$PROJECT_DIR$/resources/views/user/wizard" />
<recent name="$PROJECT_DIR$/app/Http/Controllers" />
<recent name="$PROJECT_DIR$/app/Http/Middleware" />
</key>
</component>
<component name="RunManager">
@ -383,6 +432,10 @@
<workItem from="1581604452585" duration="5853000" />
<workItem from="1581686945791" duration="4486000" />
<workItem from="1581691515338" duration="19033000" />
<workItem from="1582045337297" duration="7000" />
<workItem from="1582975911467" duration="18419000" />
<workItem from="1583498764097" duration="142000" />
<workItem from="1583572250584" duration="19295000" />
</task>
<servers />
</component>
@ -412,28 +465,36 @@
</option>
</component>
<component name="WindowStateProjectService">
<state x="754" y="395" key="#com.intellij.execution.impl.EditConfigurationsDialog" timestamp="1581158802015">
<state x="754" y="395" key="#com.intellij.execution.impl.EditConfigurationsDialog" timestamp="1583573436293">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="754" y="395" key="#com.intellij.execution.impl.EditConfigurationsDialog/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1581158802015" />
<state x="754" y="395" key="#com.intellij.execution.impl.EditConfigurationsDialog/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1583573436293" />
<state x="968" y="472" key="#com.intellij.openapi.updateSettings.impl.PluginUpdateInfoDialog" timestamp="1581691507125">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="968" y="472" key="#com.intellij.openapi.updateSettings.impl.PluginUpdateInfoDialog/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1581691507125" />
<state x="968" y="472" key="#com.intellij.openapi.updateSettings.impl.PluginUpdateInfoDialog/-2560.23.2560.1417/2560.-571.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1578493681405" />
<state x="1019" y="499" key="#com.jetbrains.php.actions.copyPaste.importReferences.PhpImportReferencesDialog" timestamp="1581190466051">
<state x="1019" y="499" key="#com.jetbrains.php.actions.copyPaste.importReferences.PhpImportReferencesDialog" timestamp="1583605520212">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="1019" y="499" key="#com.jetbrains.php.actions.copyPaste.importReferences.PhpImportReferencesDialog/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1581190466051" />
<state x="1019" y="499" key="#com.jetbrains.php.actions.copyPaste.importReferences.PhpImportReferencesDialog/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1583605520212" />
<state x="1019" y="499" key="#com.jetbrains.php.actions.copyPaste.importReferences.PhpImportReferencesDialog/-2560.23.2560.1417/2560.-571.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1578836311908" />
<state width="239" height="457" key="HiddenNamespacesPopup" timestamp="1583573337041">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state width="239" height="457" key="HiddenNamespacesPopup/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1583573337041" />
<state x="1143" y="547" key="com.intellij.database.view.ui.DbObjectDialog" timestamp="1583573350583">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="1143" y="547" key="com.intellij.database.view.ui.DbObjectDialog/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1583573350583" />
<state x="1064" y="650" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2" timestamp="1578063343693">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="1064" y="650" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2/-2560.23.2560.1417/2560.-571.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1578063343693" />
<state x="805" y="444" width="1115" height="793" key="find.popup" timestamp="1581770796462">
<state x="805" y="444" width="1115" height="793" key="find.popup" timestamp="1583605700904">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="805" y="444" width="1115" height="793" key="find.popup/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1581770796462" />
<state x="805" y="444" width="1115" height="793" key="find.popup/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1583605700904" />
<state x="926" y="497" width="683" height="486" key="find.popup/-2560.23.2560.1417/2560.-571.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1578504136004" />
<state x="945" y="377" width="670" height="676" key="search.everywhere.popup" timestamp="1581771399932">
<screen x="0" y="23" width="2560" height="1417" />

View file

@ -5,7 +5,7 @@ namespace PHPSTORM_META {
/**
* PhpStorm Meta file, to provide autocomplete information for PhpStorm
* Generated on 2020-02-12 16:29:05.
* Generated on 2020-03-07 13:24:22.
*
* @author Barry vd. Heuvel <barryvdh@gmail.com>
* @see https://github.com/barryvdh/laravel-ide-helper

View file

@ -3,7 +3,7 @@
/**
* A helper file for Laravel 5, to provide autocomplete information to your IDE
* Generated for Laravel 5.6.39 on 2020-02-12 16:29:05.
* Generated for Laravel 5.6.39 on 2020-03-07 13:24:22.
*
* This file should not be included in your code, only analyzed by your IDE!
*
@ -2322,10 +2322,10 @@ namespace Illuminate\Support\Facades {
* @return bool
* @static
*/
public static function check($name, $parameters = null)
public static function check($name, ...$parameters)
{
/** @var \Illuminate\View\Compilers\BladeCompiler $instance */
return $instance->check($name, $parameters);
return $instance->check($name, ...$parameters);
}
/**
@ -3602,10 +3602,10 @@ namespace Illuminate\Support\Facades {
* @return void
* @static
*/
public static function queue($parameters = null)
public static function queue(...$parameters)
{
/** @var \Illuminate\Cookie\CookieJar $instance */
$instance->queue($parameters);
$instance->queue(...$parameters);
}
/**
@ -8061,10 +8061,10 @@ namespace Illuminate\Support\Facades {
* @return bool
* @static
*/
public static function is($patterns = null)
public static function is(...$patterns)
{
/** @var \Illuminate\Http\Request $instance */
return $instance->is($patterns);
return $instance->is(...$patterns);
}
/**
@ -8074,10 +8074,10 @@ namespace Illuminate\Support\Facades {
* @return bool
* @static
*/
public static function routeIs($patterns = null)
public static function routeIs(...$patterns)
{
/** @var \Illuminate\Http\Request $instance */
return $instance->routeIs($patterns);
return $instance->routeIs(...$patterns);
}
/**
@ -8087,10 +8087,10 @@ namespace Illuminate\Support\Facades {
* @return bool
* @static
*/
public static function fullUrlIs($patterns = null)
public static function fullUrlIs(...$patterns)
{
/** @var \Illuminate\Http\Request $instance */
return $instance->fullUrlIs($patterns);
return $instance->fullUrlIs(...$patterns);
}
/**
@ -10003,9 +10003,9 @@ namespace Illuminate\Support\Facades {
*
* @static
*/
public static function validate($rules, $params = null)
public static function validate($rules, ...$params)
{
return \Illuminate\Http\Request::validate($rules, $params);
return \Illuminate\Http\Request::validate($rules, ...$params);
}
/**
@ -10955,10 +10955,10 @@ namespace Illuminate\Support\Facades {
* @return bool
* @static
*/
public static function is($patterns = null)
public static function is(...$patterns)
{
/** @var \Illuminate\Routing\Router $instance */
return $instance->is($patterns);
return $instance->is(...$patterns);
}
/**
@ -10968,10 +10968,10 @@ namespace Illuminate\Support\Facades {
* @return bool
* @static
*/
public static function currentRouteNamed($patterns = null)
public static function currentRouteNamed(...$patterns)
{
/** @var \Illuminate\Routing\Router $instance */
return $instance->currentRouteNamed($patterns);
return $instance->currentRouteNamed(...$patterns);
}
/**
@ -10993,10 +10993,10 @@ namespace Illuminate\Support\Facades {
* @return bool
* @static
*/
public static function uses($patterns = null)
public static function uses(...$patterns)
{
/** @var \Illuminate\Routing\Router $instance */
return $instance->uses($patterns);
return $instance->uses(...$patterns);
}
/**
@ -14225,10 +14225,10 @@ namespace Illuminate\Support\Facades {
* @return bool
* @static
*/
public static function is($patterns = null)
public static function is(...$patterns)
{
/** @var \Illuminate\Http\Request $instance */
return $instance->is($patterns);
return $instance->is(...$patterns);
}
/**
@ -14238,10 +14238,10 @@ namespace Illuminate\Support\Facades {
* @return bool
* @static
*/
public static function routeIs($patterns = null)
public static function routeIs(...$patterns)
{
/** @var \Illuminate\Http\Request $instance */
return $instance->routeIs($patterns);
return $instance->routeIs(...$patterns);
}
/**
@ -14251,10 +14251,10 @@ namespace Illuminate\Support\Facades {
* @return bool
* @static
*/
public static function fullUrlIs($patterns = null)
public static function fullUrlIs(...$patterns)
{
/** @var \Illuminate\Http\Request $instance */
return $instance->fullUrlIs($patterns);
return $instance->fullUrlIs(...$patterns);
}
/**
@ -16167,9 +16167,9 @@ namespace Illuminate\Support\Facades {
*
* @static
*/
public static function validate($rules, $params = null)
public static function validate($rules, ...$params)
{
return \Illuminate\Http\Request::validate($rules, $params);
return \Illuminate\Http\Request::validate($rules, ...$params);
}
/**
@ -20805,10 +20805,10 @@ namespace {
* @return \Illuminate\Database\Query\Builder
* @static
*/
public static function groupBy($groups = null)
public static function groupBy(...$groups)
{
/** @var \Illuminate\Database\Query\Builder $instance */
return $instance->groupBy($groups);
return $instance->groupBy(...$groups);
}
/**

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);

368
composer.lock generated
View file

@ -648,16 +648,16 @@
},
{
"name": "egulias/email-validator",
"version": "2.1.15",
"version": "2.1.17",
"source": {
"type": "git",
"url": "https://github.com/egulias/EmailValidator.git",
"reference": "e834eea5306d85d67de5a05db5882911d5b29357"
"reference": "ade6887fd9bd74177769645ab5c474824f8a418a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/egulias/EmailValidator/zipball/e834eea5306d85d67de5a05db5882911d5b29357",
"reference": "e834eea5306d85d67de5a05db5882911d5b29357",
"url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ade6887fd9bd74177769645ab5c474824f8a418a",
"reference": "ade6887fd9bd74177769645ab5c474824f8a418a",
"shasum": ""
},
"require": {
@ -702,7 +702,7 @@
"validation",
"validator"
],
"time": "2020-01-20T21:40:59+00:00"
"time": "2020-02-13T22:36:52+00:00"
},
{
"name": "erusev/parsedown",
@ -752,24 +752,24 @@
},
{
"name": "fideloper/proxy",
"version": "4.2.2",
"version": "4.3.0",
"source": {
"type": "git",
"url": "https://github.com/fideloper/TrustedProxy.git",
"reference": "790194d5d3da89a713478875d2e2d05855a90a81"
"reference": "ec38ad69ee378a1eec04fb0e417a97cfaf7ed11a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/790194d5d3da89a713478875d2e2d05855a90a81",
"reference": "790194d5d3da89a713478875d2e2d05855a90a81",
"url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/ec38ad69ee378a1eec04fb0e417a97cfaf7ed11a",
"reference": "ec38ad69ee378a1eec04fb0e417a97cfaf7ed11a",
"shasum": ""
},
"require": {
"illuminate/contracts": "^5.0|^6.0|^7.0",
"illuminate/contracts": "^5.0|^6.0|^7.0|^8.0",
"php": ">=5.4.0"
},
"require-dev": {
"illuminate/http": "^5.0|^6.0|^7.0",
"illuminate/http": "^5.0|^6.0|^7.0|^8.0",
"mockery/mockery": "^1.0",
"phpunit/phpunit": "^6.0"
},
@ -802,7 +802,7 @@
"proxy",
"trusted proxy"
],
"time": "2019-12-20T13:11:11+00:00"
"time": "2020-02-22T01:51:47+00:00"
},
{
"name": "gloudemans/shoppingcart",
@ -2467,16 +2467,16 @@
},
{
"name": "ramsey/uuid",
"version": "3.9.2",
"version": "3.9.3",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
"reference": "7779489a47d443f845271badbdcedfe4df8e06fb"
"reference": "7e1633a6964b48589b142d60542f9ed31bd37a92"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ramsey/uuid/zipball/7779489a47d443f845271badbdcedfe4df8e06fb",
"reference": "7779489a47d443f845271badbdcedfe4df8e06fb",
"url": "https://api.github.com/repos/ramsey/uuid/zipball/7e1633a6964b48589b142d60542f9ed31bd37a92",
"reference": "7e1633a6964b48589b142d60542f9ed31bd37a92",
"shasum": ""
},
"require": {
@ -2550,7 +2550,7 @@
"identifier",
"uuid"
],
"time": "2019-12-17T08:18:51+00:00"
"time": "2020-02-21T04:36:14+00:00"
},
{
"name": "reliese/laravel",
@ -2652,26 +2652,29 @@
},
{
"name": "setasign/fpdi",
"version": "v2.2.0",
"version": "v2.3.0",
"source": {
"type": "git",
"url": "https://github.com/Setasign/FPDI.git",
"reference": "3c266002f8044f61b17329f7cd702d44d73f0f7f"
"reference": "ff7e43e07abb97feb4a1cceaf72d75ce0e175ca0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Setasign/FPDI/zipball/3c266002f8044f61b17329f7cd702d44d73f0f7f",
"reference": "3c266002f8044f61b17329f7cd702d44d73f0f7f",
"url": "https://api.github.com/repos/Setasign/FPDI/zipball/ff7e43e07abb97feb4a1cceaf72d75ce0e175ca0",
"reference": "ff7e43e07abb97feb4a1cceaf72d75ce0e175ca0",
"shasum": ""
},
"require": {
"ext-zlib": "*",
"php": "^5.6 || ^7.0"
},
"conflict": {
"setasign/tfpdf": "<1.31"
},
"require-dev": {
"phpunit/phpunit": "~5.7",
"setasign/fpdf": "~1.8",
"setasign/tfpdf": "1.25",
"setasign/tfpdf": "1.31",
"tecnickcom/tcpdf": "~6.2"
},
"suggest": {
@ -2709,7 +2712,7 @@
"fpdi",
"pdf"
],
"time": "2019-01-30T14:11:19+00:00"
"time": "2020-02-19T11:30:55+00:00"
},
{
"name": "swiftmailer/swiftmailer",
@ -2775,16 +2778,16 @@
},
{
"name": "symfony/console",
"version": "v4.4.4",
"version": "v4.4.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "f512001679f37e6a042b51897ed24a2f05eba656"
"reference": "4fa15ae7be74e53f6ec8c83ed403b97e23b665e9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/f512001679f37e6a042b51897ed24a2f05eba656",
"reference": "f512001679f37e6a042b51897ed24a2f05eba656",
"url": "https://api.github.com/repos/symfony/console/zipball/4fa15ae7be74e53f6ec8c83ed403b97e23b665e9",
"reference": "4fa15ae7be74e53f6ec8c83ed403b97e23b665e9",
"shasum": ""
},
"require": {
@ -2847,20 +2850,20 @@
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
"time": "2020-01-25T12:44:29+00:00"
"time": "2020-02-24T13:10:00+00:00"
},
{
"name": "symfony/css-selector",
"version": "v5.0.4",
"version": "v5.0.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
"reference": "ff60c90cb7950b592ebc84ad1289d0345bf24f9f"
"reference": "a0b51ba9938ccc206d9284de7eb527c2d4550b44"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/ff60c90cb7950b592ebc84ad1289d0345bf24f9f",
"reference": "ff60c90cb7950b592ebc84ad1289d0345bf24f9f",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/a0b51ba9938ccc206d9284de7eb527c2d4550b44",
"reference": "a0b51ba9938ccc206d9284de7eb527c2d4550b44",
"shasum": ""
},
"require": {
@ -2900,20 +2903,20 @@
],
"description": "Symfony CssSelector Component",
"homepage": "https://symfony.com",
"time": "2020-01-04T14:08:26+00:00"
"time": "2020-02-04T09:41:09+00:00"
},
{
"name": "symfony/debug",
"version": "v4.4.4",
"version": "v4.4.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
"reference": "20236471058bbaa9907382500fc14005c84601f0"
"reference": "a980d87a659648980d89193fd8b7a7ca89d97d21"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/debug/zipball/20236471058bbaa9907382500fc14005c84601f0",
"reference": "20236471058bbaa9907382500fc14005c84601f0",
"url": "https://api.github.com/repos/symfony/debug/zipball/a980d87a659648980d89193fd8b7a7ca89d97d21",
"reference": "a980d87a659648980d89193fd8b7a7ca89d97d21",
"shasum": ""
},
"require": {
@ -2956,26 +2959,26 @@
],
"description": "Symfony Debug Component",
"homepage": "https://symfony.com",
"time": "2020-01-25T12:44:29+00:00"
"time": "2020-02-23T14:41:43+00:00"
},
{
"name": "symfony/error-handler",
"version": "v4.4.4",
"version": "v4.4.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
"reference": "d2721499ffcaf246a743e01cdf6696d3d5dd74c1"
"reference": "89aa4b9ac6f1f35171b8621b24f60477312085be"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/error-handler/zipball/d2721499ffcaf246a743e01cdf6696d3d5dd74c1",
"reference": "d2721499ffcaf246a743e01cdf6696d3d5dd74c1",
"url": "https://api.github.com/repos/symfony/error-handler/zipball/89aa4b9ac6f1f35171b8621b24f60477312085be",
"reference": "89aa4b9ac6f1f35171b8621b24f60477312085be",
"shasum": ""
},
"require": {
"php": "^7.1.3",
"psr/log": "~1.0",
"symfony/debug": "^4.4",
"symfony/debug": "^4.4.5",
"symfony/var-dumper": "^4.4|^5.0"
},
"require-dev": {
@ -3012,20 +3015,20 @@
],
"description": "Symfony ErrorHandler Component",
"homepage": "https://symfony.com",
"time": "2020-01-27T09:48:47+00:00"
"time": "2020-02-26T11:45:31+00:00"
},
{
"name": "symfony/event-dispatcher",
"version": "v4.4.4",
"version": "v4.4.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "9e3de195e5bc301704dd6915df55892f6dfc208b"
"reference": "4ad8e149799d3128621a3a1f70e92b9897a8930d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9e3de195e5bc301704dd6915df55892f6dfc208b",
"reference": "9e3de195e5bc301704dd6915df55892f6dfc208b",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4ad8e149799d3128621a3a1f70e92b9897a8930d",
"reference": "4ad8e149799d3128621a3a1f70e92b9897a8930d",
"shasum": ""
},
"require": {
@ -3082,7 +3085,7 @@
],
"description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com",
"time": "2020-01-10T21:54:01+00:00"
"time": "2020-02-04T09:32:40+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
@ -3144,16 +3147,16 @@
},
{
"name": "symfony/finder",
"version": "v4.4.4",
"version": "v4.4.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
"reference": "3a50be43515590faf812fbd7708200aabc327ec3"
"reference": "ea69c129aed9fdeca781d4b77eb20b62cf5d5357"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/3a50be43515590faf812fbd7708200aabc327ec3",
"reference": "3a50be43515590faf812fbd7708200aabc327ec3",
"url": "https://api.github.com/repos/symfony/finder/zipball/ea69c129aed9fdeca781d4b77eb20b62cf5d5357",
"reference": "ea69c129aed9fdeca781d4b77eb20b62cf5d5357",
"shasum": ""
},
"require": {
@ -3189,20 +3192,20 @@
],
"description": "Symfony Finder Component",
"homepage": "https://symfony.com",
"time": "2020-01-04T13:00:46+00:00"
"time": "2020-02-14T07:42:58+00:00"
},
{
"name": "symfony/http-foundation",
"version": "v4.4.4",
"version": "v4.4.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
"reference": "491a20dfa87e0b3990170593bc2de0bb34d828a5"
"reference": "7e41b4fcad4619535f45f8bfa7744c4f384e1648"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/491a20dfa87e0b3990170593bc2de0bb34d828a5",
"reference": "491a20dfa87e0b3990170593bc2de0bb34d828a5",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/7e41b4fcad4619535f45f8bfa7744c4f384e1648",
"reference": "7e41b4fcad4619535f45f8bfa7744c4f384e1648",
"shasum": ""
},
"require": {
@ -3244,20 +3247,20 @@
],
"description": "Symfony HttpFoundation Component",
"homepage": "https://symfony.com",
"time": "2020-01-31T09:11:17+00:00"
"time": "2020-02-13T19:40:01+00:00"
},
{
"name": "symfony/http-kernel",
"version": "v4.4.4",
"version": "v4.4.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
"reference": "62116a9c8fb15faabb158ad9cb785c353c2572e5"
"reference": "8c8734486dada83a6041ab744709bdc1651a8462"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/62116a9c8fb15faabb158ad9cb785c353c2572e5",
"reference": "62116a9c8fb15faabb158ad9cb785c353c2572e5",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/8c8734486dada83a6041ab744709bdc1651a8462",
"reference": "8c8734486dada83a6041ab744709bdc1651a8462",
"shasum": ""
},
"require": {
@ -3334,20 +3337,20 @@
],
"description": "Symfony HttpKernel Component",
"homepage": "https://symfony.com",
"time": "2020-01-31T12:45:06+00:00"
"time": "2020-02-29T10:31:38+00:00"
},
{
"name": "symfony/mime",
"version": "v5.0.4",
"version": "v5.0.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
"reference": "2a3c7fee1f1a0961fa9cf360d5da553d05095e59"
"reference": "9b3e5b5e58c56bbd76628c952d2b78556d305f3c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/mime/zipball/2a3c7fee1f1a0961fa9cf360d5da553d05095e59",
"reference": "2a3c7fee1f1a0961fa9cf360d5da553d05095e59",
"url": "https://api.github.com/repos/symfony/mime/zipball/9b3e5b5e58c56bbd76628c952d2b78556d305f3c",
"reference": "9b3e5b5e58c56bbd76628c952d2b78556d305f3c",
"shasum": ""
},
"require": {
@ -3396,20 +3399,20 @@
"mime",
"mime-type"
],
"time": "2020-01-04T14:08:26+00:00"
"time": "2020-02-04T09:41:09+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.13.1",
"version": "v1.14.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3"
"reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3",
"reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/fbdeaec0df06cf3d51c93de80c7eb76e271f5a38",
"reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38",
"shasum": ""
},
"require": {
@ -3421,7 +3424,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.13-dev"
"dev-master": "1.14-dev"
}
},
"autoload": {
@ -3454,20 +3457,20 @@
"polyfill",
"portable"
],
"time": "2019-11-27T13:56:44+00:00"
"time": "2020-01-13T11:15:53+00:00"
},
{
"name": "symfony/polyfill-iconv",
"version": "v1.13.1",
"version": "v1.14.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-iconv.git",
"reference": "a019efccc03f1a335af6b4f20c30f5ea8060be36"
"reference": "926832ce51059bb58211b7b2080a88e0c3b5328e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/a019efccc03f1a335af6b4f20c30f5ea8060be36",
"reference": "a019efccc03f1a335af6b4f20c30f5ea8060be36",
"url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/926832ce51059bb58211b7b2080a88e0c3b5328e",
"reference": "926832ce51059bb58211b7b2080a88e0c3b5328e",
"shasum": ""
},
"require": {
@ -3479,7 +3482,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.13-dev"
"dev-master": "1.14-dev"
}
},
"autoload": {
@ -3513,26 +3516,26 @@
"portable",
"shim"
],
"time": "2019-11-27T13:56:44+00:00"
"time": "2020-01-13T11:15:53+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
"version": "v1.13.1",
"version": "v1.14.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
"reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46"
"reference": "6842f1a39cf7d580655688069a03dd7cd83d244a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6f9c239e61e1b0c9229a28ff89a812dc449c3d46",
"reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6842f1a39cf7d580655688069a03dd7cd83d244a",
"reference": "6842f1a39cf7d580655688069a03dd7cd83d244a",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"symfony/polyfill-mbstring": "^1.3",
"symfony/polyfill-php72": "^1.9"
"symfony/polyfill-php72": "^1.10"
},
"suggest": {
"ext-intl": "For best performance"
@ -3540,7 +3543,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.13-dev"
"dev-master": "1.14-dev"
}
},
"autoload": {
@ -3575,20 +3578,20 @@
"portable",
"shim"
],
"time": "2019-11-27T13:56:44+00:00"
"time": "2020-01-17T12:01:36+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.13.1",
"version": "v1.14.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "7b4aab9743c30be783b73de055d24a39cf4b954f"
"reference": "34094cfa9abe1f0f14f48f490772db7a775559f2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f",
"reference": "7b4aab9743c30be783b73de055d24a39cf4b954f",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/34094cfa9abe1f0f14f48f490772db7a775559f2",
"reference": "34094cfa9abe1f0f14f48f490772db7a775559f2",
"shasum": ""
},
"require": {
@ -3600,7 +3603,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.13-dev"
"dev-master": "1.14-dev"
}
},
"autoload": {
@ -3634,20 +3637,20 @@
"portable",
"shim"
],
"time": "2019-11-27T14:18:11+00:00"
"time": "2020-01-13T11:15:53+00:00"
},
{
"name": "symfony/polyfill-php56",
"version": "v1.13.1",
"version": "v1.14.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php56.git",
"reference": "53dd1cdf3cb986893ccf2b96665b25b3abb384f4"
"reference": "16ec91cb06998b609501b55b7177b7d7c02badb3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/53dd1cdf3cb986893ccf2b96665b25b3abb384f4",
"reference": "53dd1cdf3cb986893ccf2b96665b25b3abb384f4",
"url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/16ec91cb06998b609501b55b7177b7d7c02badb3",
"reference": "16ec91cb06998b609501b55b7177b7d7c02badb3",
"shasum": ""
},
"require": {
@ -3657,7 +3660,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.13-dev"
"dev-master": "1.14-dev"
}
},
"autoload": {
@ -3690,20 +3693,20 @@
"portable",
"shim"
],
"time": "2019-11-27T13:56:44+00:00"
"time": "2020-01-13T11:15:53+00:00"
},
{
"name": "symfony/polyfill-php72",
"version": "v1.13.1",
"version": "v1.14.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
"reference": "66fea50f6cb37a35eea048d75a7d99a45b586038"
"reference": "46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/66fea50f6cb37a35eea048d75a7d99a45b586038",
"reference": "66fea50f6cb37a35eea048d75a7d99a45b586038",
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf",
"reference": "46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf",
"shasum": ""
},
"require": {
@ -3712,7 +3715,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.13-dev"
"dev-master": "1.14-dev"
}
},
"autoload": {
@ -3745,20 +3748,20 @@
"portable",
"shim"
],
"time": "2019-11-27T13:56:44+00:00"
"time": "2020-01-13T11:15:53+00:00"
},
{
"name": "symfony/polyfill-php73",
"version": "v1.13.1",
"version": "v1.14.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
"reference": "4b0e2222c55a25b4541305a053013d5647d3a25f"
"reference": "5e66a0fa1070bf46bec4bea7962d285108edd675"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/4b0e2222c55a25b4541305a053013d5647d3a25f",
"reference": "4b0e2222c55a25b4541305a053013d5647d3a25f",
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/5e66a0fa1070bf46bec4bea7962d285108edd675",
"reference": "5e66a0fa1070bf46bec4bea7962d285108edd675",
"shasum": ""
},
"require": {
@ -3767,7 +3770,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.13-dev"
"dev-master": "1.14-dev"
}
},
"autoload": {
@ -3803,20 +3806,20 @@
"portable",
"shim"
],
"time": "2019-11-27T16:25:15+00:00"
"time": "2020-01-13T11:15:53+00:00"
},
{
"name": "symfony/polyfill-util",
"version": "v1.13.1",
"version": "v1.14.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-util.git",
"reference": "964a67f293b66b95883a5ed918a65354fcd2258f"
"reference": "ba3cfcea6d0192cae46c62041f61cbb704b526d3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-util/zipball/964a67f293b66b95883a5ed918a65354fcd2258f",
"reference": "964a67f293b66b95883a5ed918a65354fcd2258f",
"url": "https://api.github.com/repos/symfony/polyfill-util/zipball/ba3cfcea6d0192cae46c62041f61cbb704b526d3",
"reference": "ba3cfcea6d0192cae46c62041f61cbb704b526d3",
"shasum": ""
},
"require": {
@ -3825,7 +3828,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.13-dev"
"dev-master": "1.14-dev"
}
},
"autoload": {
@ -3855,20 +3858,20 @@
"polyfill",
"shim"
],
"time": "2019-11-27T13:56:44+00:00"
"time": "2020-01-13T11:15:53+00:00"
},
{
"name": "symfony/process",
"version": "v4.4.4",
"version": "v4.4.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "f5697ab4cb14a5deed7473819e63141bf5352c36"
"reference": "bf9166bac906c9e69fb7a11d94875e7ced97bcd7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/f5697ab4cb14a5deed7473819e63141bf5352c36",
"reference": "f5697ab4cb14a5deed7473819e63141bf5352c36",
"url": "https://api.github.com/repos/symfony/process/zipball/bf9166bac906c9e69fb7a11d94875e7ced97bcd7",
"reference": "bf9166bac906c9e69fb7a11d94875e7ced97bcd7",
"shasum": ""
},
"require": {
@ -3904,20 +3907,20 @@
],
"description": "Symfony Process Component",
"homepage": "https://symfony.com",
"time": "2020-01-09T09:50:08+00:00"
"time": "2020-02-07T20:06:44+00:00"
},
{
"name": "symfony/routing",
"version": "v4.4.4",
"version": "v4.4.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
"reference": "7bf4e38573728e317b926ca4482ad30470d0e86a"
"reference": "4124d621d0e445732520037f888a0456951bde8c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/routing/zipball/7bf4e38573728e317b926ca4482ad30470d0e86a",
"reference": "7bf4e38573728e317b926ca4482ad30470d0e86a",
"url": "https://api.github.com/repos/symfony/routing/zipball/4124d621d0e445732520037f888a0456951bde8c",
"reference": "4124d621d0e445732520037f888a0456951bde8c",
"shasum": ""
},
"require": {
@ -3980,7 +3983,7 @@
"uri",
"url"
],
"time": "2020-01-08T17:29:02+00:00"
"time": "2020-02-25T12:41:09+00:00"
},
{
"name": "symfony/service-contracts",
@ -4042,16 +4045,16 @@
},
{
"name": "symfony/translation",
"version": "v4.4.4",
"version": "v4.4.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
"reference": "f5d2ac46930238b30a9c2f1b17c905f3697d808c"
"reference": "0a19a77fba20818a969ef03fdaf1602de0546353"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/translation/zipball/f5d2ac46930238b30a9c2f1b17c905f3697d808c",
"reference": "f5d2ac46930238b30a9c2f1b17c905f3697d808c",
"url": "https://api.github.com/repos/symfony/translation/zipball/0a19a77fba20818a969ef03fdaf1602de0546353",
"reference": "0a19a77fba20818a969ef03fdaf1602de0546353",
"shasum": ""
},
"require": {
@ -4114,7 +4117,7 @@
],
"description": "Symfony Translation Component",
"homepage": "https://symfony.com",
"time": "2020-01-15T13:29:06+00:00"
"time": "2020-02-04T09:32:40+00:00"
},
{
"name": "symfony/translation-contracts",
@ -4175,16 +4178,16 @@
},
{
"name": "symfony/var-dumper",
"version": "v4.4.4",
"version": "v4.4.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
"reference": "46b53fd714568af343953c039ff47b67ce8af8d6"
"reference": "2572839911702b0405479410ea7a1334bfab0b96"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/46b53fd714568af343953c039ff47b67ce8af8d6",
"reference": "46b53fd714568af343953c039ff47b67ce8af8d6",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/2572839911702b0405479410ea7a1334bfab0b96",
"reference": "2572839911702b0405479410ea7a1334bfab0b96",
"shasum": ""
},
"require": {
@ -4247,7 +4250,7 @@
"debug",
"dump"
],
"time": "2020-01-25T12:44:29+00:00"
"time": "2020-02-24T13:10:00+00:00"
},
{
"name": "tijsverkoyen/css-to-inline-styles",
@ -4424,33 +4427,33 @@
"packages-dev": [
{
"name": "barryvdh/laravel-ide-helper",
"version": "v2.6.6",
"version": "v2.6.7",
"source": {
"type": "git",
"url": "https://github.com/barryvdh/laravel-ide-helper.git",
"reference": "b91b959364d97af658f268c733c75dccdbff197e"
"reference": "edd69c5e0508972c81f1f7173236de2459c45814"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/b91b959364d97af658f268c733c75dccdbff197e",
"reference": "b91b959364d97af658f268c733c75dccdbff197e",
"url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/edd69c5e0508972c81f1f7173236de2459c45814",
"reference": "edd69c5e0508972c81f1f7173236de2459c45814",
"shasum": ""
},
"require": {
"barryvdh/reflection-docblock": "^2.0.6",
"composer/composer": "^1.6",
"doctrine/dbal": "~2.3",
"illuminate/console": "^5.5|^6",
"illuminate/filesystem": "^5.5|^6",
"illuminate/support": "^5.5|^6",
"php": ">=7"
"illuminate/console": "^5.5|^6|^7",
"illuminate/filesystem": "^5.5|^6|^7",
"illuminate/support": "^5.5|^6|^7",
"php": ">=7.2"
},
"require-dev": {
"illuminate/config": "^5.5|^6",
"illuminate/view": "^5.5|^6",
"phpro/grumphp": "^0.14",
"phpunit/phpunit": "4.*",
"scrutinizer/ocular": "~1.1",
"illuminate/config": "^5.5|^6|^7",
"illuminate/view": "^5.5|^6|^7",
"mockery/mockery": "^1.3",
"orchestra/testbench": "^3|^4",
"phpro/grumphp": "^0.17.1",
"squizlabs/php_codesniffer": "^3"
},
"type": "library",
@ -4491,7 +4494,7 @@
"phpstorm",
"sublime"
],
"time": "2019-10-30T20:53:27+00:00"
"time": "2020-02-25T20:41:32+00:00"
},
{
"name": "barryvdh/reflection-docblock",
@ -4741,16 +4744,16 @@
},
{
"name": "composer/spdx-licenses",
"version": "1.5.2",
"version": "1.5.3",
"source": {
"type": "git",
"url": "https://github.com/composer/spdx-licenses.git",
"reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5"
"reference": "0c3e51e1880ca149682332770e25977c70cf9dae"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/spdx-licenses/zipball/7ac1e6aec371357df067f8a688c3d6974df68fa5",
"reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5",
"url": "https://api.github.com/repos/composer/spdx-licenses/zipball/0c3e51e1880ca149682332770e25977c70cf9dae",
"reference": "0c3e51e1880ca149682332770e25977c70cf9dae",
"shasum": ""
},
"require": {
@ -4797,7 +4800,7 @@
"spdx",
"validator"
],
"time": "2019-07-29T10:31:59+00:00"
"time": "2020-02-14T07:44:31+00:00"
},
{
"name": "composer/xdebug-handler",
@ -5457,16 +5460,16 @@
},
{
"name": "phpdocumentor/reflection-docblock",
"version": "5.0.0",
"version": "5.1.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
"reference": "a48807183a4b819072f26e347bbd0b5199a9d15f"
"reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/a48807183a4b819072f26e347bbd0b5199a9d15f",
"reference": "a48807183a4b819072f26e347bbd0b5199a9d15f",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e",
"reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e",
"shasum": ""
},
"require": {
@ -5506,30 +5509,29 @@
}
],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"time": "2020-02-09T09:16:15+00:00"
"time": "2020-02-22T12:28:44+00:00"
},
{
"name": "phpdocumentor/type-resolver",
"version": "1.0.1",
"version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
"reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9"
"reference": "7462d5f123dfc080dfdf26897032a6513644fc95"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
"reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/7462d5f123dfc080dfdf26897032a6513644fc95",
"reference": "7462d5f123dfc080dfdf26897032a6513644fc95",
"shasum": ""
},
"require": {
"php": "^7.1",
"php": "^7.2",
"phpdocumentor/reflection-common": "^2.0"
},
"require-dev": {
"ext-tokenizer": "^7.1",
"mockery/mockery": "~1",
"phpunit/phpunit": "^7.0"
"ext-tokenizer": "^7.2",
"mockery/mockery": "~1"
},
"type": "library",
"extra": {
@ -5553,7 +5555,7 @@
}
],
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
"time": "2019-08-22T18:11:29+00:00"
"time": "2020-02-18T18:59:58+00:00"
},
{
"name": "phpspec/prophecy",
@ -6571,16 +6573,16 @@
},
{
"name": "seld/phar-utils",
"version": "1.0.2",
"version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/phar-utils.git",
"reference": "84715761c35808076b00908a20317a3a8a67d17e"
"reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/84715761c35808076b00908a20317a3a8a67d17e",
"reference": "84715761c35808076b00908a20317a3a8a67d17e",
"url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8800503d56b9867d43d9c303b9cbcc26016e82f0",
"reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0",
"shasum": ""
},
"require": {
@ -6609,13 +6611,13 @@
],
"description": "PHAR file format utilities, for when PHP phars you up",
"keywords": [
"phra"
"phar"
],
"time": "2020-01-13T10:41:09+00:00"
"time": "2020-02-14T15:25:33+00:00"
},
{
"name": "symfony/filesystem",
"version": "v4.4.4",
"version": "v4.4.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
@ -6705,16 +6707,16 @@
},
{
"name": "webmozart/assert",
"version": "1.6.0",
"version": "1.7.0",
"source": {
"type": "git",
"url": "https://github.com/webmozart/assert.git",
"reference": "573381c0a64f155a0d9a23f4b0c797194805b925"
"reference": "aed98a490f9a8f78468232db345ab9cf606cf598"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/webmozart/assert/zipball/573381c0a64f155a0d9a23f4b0c797194805b925",
"reference": "573381c0a64f155a0d9a23f4b0c797194805b925",
"url": "https://api.github.com/repos/webmozart/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598",
"reference": "aed98a490f9a8f78468232db345ab9cf606cf598",
"shasum": ""
},
"require": {
@ -6749,7 +6751,7 @@
"check",
"validate"
],
"time": "2019-11-24T13:36:37+00:00"
"time": "2020-02-14T12:15:55+00:00"
}
],
"aliases": [],

View file

@ -61,7 +61,7 @@ return [
'pre_url_crm' => env('APP_URL_CRM', 'my.'),
'checkout_url' => env('APP_URL_CHECKOUT', 'checkout.'),
'checkout_mail' => env('APP_CHECKOUT_MAIL', 'no-replay@mivita.care'),
'info_mail' => env('APP_INFO_MAIL', 'no-replay@mivita.care'),
/* 'url_backend' => env('APP_URL', 'http://mivita.local/'),
'url_backend' => env('APP_URL', 'http://mivita.local/'),

10
config/mivita.php Executable file
View file

@ -0,0 +1,10 @@
<?php
return [
'renewal_days' => env('MIVITA_RENEWAL_DAYS', '29'),
'abo_booking_days' => env('MIVITA_ABO_BOOKING_DAYS', '14'),
];

View file

@ -57,6 +57,8 @@ class CreateProductsTable extends Migration
$table->string('identifier', 20)->nullable();
$table->string('action')->nullable();
//is an upgrade product, set this product id by payments API paid
$table->unsignedInteger('upgrade_to_id')->nullable();
$table->timestamps();

View file

@ -17,6 +17,7 @@ class CreateShoppingInstancesTable extends Migration
$table->string('identifier')->unique()->index();
$table->unsignedInteger('user_shop_id');
$table->unsignedInteger('auth_user_id');
$table->unsignedTinyInteger('payment');
$table->unsignedInteger('country_id');
$table->string('subdomain');

View file

@ -22,6 +22,8 @@ class CreateShoppingOrdersTable extends Migration
$table->unsignedInteger('country_id');
$table->unsignedInteger('user_shop_id');
$table->unsignedTinyInteger('payment_for');
$table->decimal('total', 13, 2)->nullable();
$table->decimal('shipping', 8, 2)->nullable();
$table->decimal('subtotal', 13, 2)->nullable();

View file

@ -0,0 +1,57 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUserHistoriesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('user_histories', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('user_id');
$table->unsignedInteger('shopping_order_id')->nullable();
$table->unsignedInteger('product_id')->nullable();
$table->string('action')->index()->nullable();
$table->unsignedInteger('referenz')->default(0);
$table->string('identifier')->index()->nullable();
$table->boolean('abo_options')->default(false);
$table->unsignedTinyInteger('status')->index()->default(0);
$table->timestamps();
$table->foreign('shopping_order_id')
->references('id')
->on('shopping_orders');
$table->foreign('product_id')
->references('id')
->on('products');
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('user_histories');
}
}

20
resources/lang/de/payment.php Executable file
View file

@ -0,0 +1,20 @@
<?php
return [
'status' => [
'store_payment' => 'Zahlung gespeichert',
'checkout_payment' => 'Checkout',
'payment_error' => 'Zahlung Fehler',
'payment_redirect' => 'Zahlung weitergeleitet',
'payment_approved' => 'Zahlung genehmigt',
'txaction_failed' => 'Zahlung fehlgeschlagen',
'txaction_appointed' => 'Zahlung genehmigt',
'txaction_paid' => 'Zahlung bestätigt',
'success_payment' => 'Zahlung erflogreich',
'success' => 'Erflogreich ausgeführt',
'payment_not_found' => 'Zahlung nicht gefunden',
'checkout_cancel' => ' Zahlungsvorgang Abbruch',
'checkout_error' => 'Zahlungsvorgang Fehler',
],
];

View file

@ -50,12 +50,17 @@
<label class="form-label" for="copy">{{ __('copy') }}</label>
{{ Form::textarea('copy', $product->copy , array('placeholder'=>__('Leistungen'), 'class'=>'form-control summernote', 'id'=>'copy')) }}
</div>
<div class="form-group col-sm-12">
<label class="form-label" for="title">{{ __('Action') }}</label>
{{ Form::select('action[]', $product->actions, $product->action, array('data-live-search'=>'false', 'class'=>'selectpicker', 'id'=>'action', 'multiple') ) }}
<div class="form-row">
<div class="form-group col-sm-8">
<label class="form-label" for="action">{{ __('Action') }}</label>
{{ Form::select('action[]', $product->actions, $product->action, array('data-live-search'=>'false', 'class'=>'selectpicker', 'id'=>'action', 'multiple') ) }}
</div>
<div class="form-group col-sm-4">
<label class="form-label" for="upgrade_to_id">{{ __('Upgrade to ID') }}</label>
{{ Form::text('upgrade_to_id', $product->upgrade_to_id, array('placeholder'=>__('Product ID when need an upgrade'), 'class'=>'form-control', 'id'=>'upgrade_to_id')) }}
</div>
</div>
</div>
</div>

View file

@ -7,7 +7,6 @@
{{ __('User') }}
</h4>
<div class="card">
<div class="card-datatable table-responsive">
<table class="datatables-users table table-striped table-bordered">
@ -19,12 +18,12 @@
<th>{{__('Last name')}}</th>
<th>{{__('E-Mail')}}</th>
<th>{{__('Zugang')}}</th>
<th>{{__('verified')}}</th>
<th>{{__('active')}}</th>
<th>{{__('shop')}}</th>
<th>{{__('ab')}}</th>
<th>{{__('verified')}} (seit)</th>
<th>{{__('active')}} (seit)</th>
<th>{{__('Account')}} (bis)</th>
<th>{{__('Shop')}} (bis)</th>
<th>{{__('Shop')}} ab</th>
<th>{{__('delete')}}</th>
</tr>
</thead>
</table>
@ -33,16 +32,15 @@
<!-- Modal template -->
<div class="modal fade" id="modals-default">
<!-- Modal admin -->
<div class="modal fade" id="modals-admin">
<div class="modal-dialog">
<form class="modal-content" action="{{ route('admin_user_store') }}" method="post">
@csrf
<input type="hidden" class="form-control" name="id">
<div class="modal-header">
<h5 class="modal-title">{{__('User')}}<span class="font-weight-light">{{__('create/edit')}}</span></h5>
<h5 class="modal-title">{{__('User')}} <span class="font-weight-light">{{__('create/edit')}}</span></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
@ -62,28 +60,159 @@
</select>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
<button type="submit" class="btn btn-primary" name="save-admin" value="save-admin">{{__('save')}}</button>
</div>
</form>
</div>
</div>
<!-- Modal confirmed -->
<div class="modal fade" id="modals-confirmed">
<div class="modal-dialog">
<form class="modal-content" action="{{ route('admin_user_store') }}" method="post">
@csrf
<input type="hidden" class="form-control" name="id">
<div class="modal-header">
<h5 class="modal-title">{{__('User')}} <span class="font-weight-light">{{__('create/edit')}}</span></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-row">
<div class="form-group col">
<label for="email" class="form-label">{{__('E-Mail')}}</label>
<input type="text" class="form-control" name="email" placeholder="{{__('E-Mail')}}" readonly>
</div>
</div>
<div class="form-group">
<label class="custom-control custom-checkbox m-0">
<input type="checkbox" class="custom-control-input" name="confirmed" checked>
<span class="custom-control-label">{{__('verified')}}</span>
</label>
</div>
<div class="form-row">
<div class="form-group col">
<label for="confirmation_date" class="form-label">{{__('Datum')}} seit</label>
<input type="text" name="confirmation_date" class="form-control b-material-datetime-picker" placeholder="25.10.2020 10:30">
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
<button type="submit" class="btn btn-primary" name="save-confirmed" value="save-confirmed">{{__('save')}}</button>
</div>
</form>
</div>
</div>
<!-- Modal active -->
<div class="modal fade" id="modals-active">
<div class="modal-dialog">
<form class="modal-content" action="{{ route('admin_user_store') }}" method="post">
@csrf
<input type="hidden" class="form-control" name="id">
<div class="modal-header">
<h5 class="modal-title">{{__('User')}} <span class="font-weight-light">{{__('create/edit')}}</span></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-row">
<div class="form-group col">
<label for="email" class="form-label">{{__('E-Mail')}}</label>
<input type="text" class="form-control" name="email" placeholder="{{__('E-Mail')}}" readonly>
</div>
</div>
<div class="form-group">
<label class="custom-control custom-checkbox m-0">
<input type="checkbox" class="custom-control-input" name="active" checked>
<span class="custom-control-label">{{__('active')}}</span>
</label>
</div>
<div class="form-row">
<div class="form-group col">
<label for="active_date" class="form-label">{{__('Datum')}} seit</label>
<input type="text" name="active_date" class="form-control b-material-datetime-picker" placeholder="25.10.2020 10:30">
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
<button type="submit" class="btn btn-primary">{{__('save')}}</button>
<button type="submit" class="btn btn-primary" name="save-active" value="save-active">{{__('save')}}</button>
</div>
</form>
</div>
</div>
<!-- Modal account -->
<div class="modal fade" id="modals-account">
<div class="modal-dialog">
<form class="modal-content" action="{{ route('admin_user_store') }}" method="post">
@csrf
<input type="hidden" class="form-control" name="id">
<div class="modal-header">
<h5 class="modal-title">{{__('User')}} <span class="font-weight-light">{{__('create/edit')}}</span></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-row">
<div class="form-group col">
<label for="email" class="form-label">{{__('E-Mail')}}</label>
<input type="text" class="form-control" name="email" placeholder="{{__('E-Mail')}}" readonly>
</div>
</div>
<div class="form-row">
<div class="form-group col">
<label for="payment_account" class="form-label">{{__('Account')}} bis</label>
<input type="text" name="payment_account" class="form-control b-material-datetime-picker" placeholder="25.10.2020 10:30">
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
<button type="submit" class="btn btn-primary" name="save-account" value="save-account">{{__('save')}}</button>
</div>
</form>
</div>
</div>
<!-- Modal account -->
<div class="modal fade" id="modals-shop">
<div class="modal-dialog">
<form class="modal-content" action="{{ route('admin_user_store') }}" method="post">
@csrf
<input type="hidden" class="form-control" name="id">
<div class="modal-header">
<h5 class="modal-title">{{__('User')}} <span class="font-weight-light">{{__('create/edit')}}</span></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-row">
<div class="form-group col">
<label for="email" class="form-label">{{__('E-Mail')}}</label>
<input type="text" class="form-control" name="email" placeholder="{{__('E-Mail')}}" readonly>
</div>
</div>
<div class="form-row">
<div class="form-group col">
<label for="payment_shop" class="form-label">{{__('Shop')}} bis</label>
<input type="text" name="payment_shop" class="form-control b-material-datetime-picker" placeholder="25.10.2020 10:30">
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
<button type="submit" class="btn btn-primary" name="save-shop" value="save-shop">{{__('save')}}</button>
</div>
</form>
</div>
@ -91,21 +220,51 @@
<script>
$( document ).ready(function() {
$('#modals-default').on('show.bs.modal', function (event) {
$('#modals-admin').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
$(this).find(".modal-content input[name='id']").val(button.data('id'));
$(this).find(".modal-body input[name='email']").val(button.data('email'));
$(this).find(".modal-body select[name='admin']").val(button.data('admin'));
$('.selectpicker').selectpicker('refresh');
$(this).find(".modal-body input[name='active']").prop( "checked", button.data('active'));
$(this).find(".modal-body input[name='confirmed']").prop( "checked", button.data('confirmed'));
});
$('#modals-confirmed').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
$(this).find(".modal-content input[name='id']").val(button.data('id'));
$(this).find(".modal-body input[name='email']").val(button.data('email'));
$(this).find(".modal-body input[name='confirmed']").prop( "checked", button.data('confirmed'));
$(this).find(".modal-body input[name='confirmation_date']").val(button.data('confirmation_date'));
});
$('#modals-active').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
$(this).find(".modal-content input[name='id']").val(button.data('id'));
$(this).find(".modal-body input[name='email']").val(button.data('email'));
$(this).find(".modal-body input[name='active']").prop( "checked", button.data('active'));
$(this).find(".modal-body input[name='active_date']").val(button.data('active_date'));
});
$('#modals-account').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
$(this).find(".modal-content input[name='id']").val(button.data('id'));
$(this).find(".modal-body input[name='email']").val(button.data('email'));
$(this).find(".modal-body input[name='payment_account']").val(button.data('payment_account'));
});
$('#modals-shop').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
$(this).find(".modal-content input[name='id']").val(button.data('id'));
$(this).find(".modal-body input[name='email']").val(button.data('email'));
$(this).find(".modal-body input[name='payment_shop']").val(button.data('payment_shop'));
});
$('.datatables-users').dataTable({
"processing": true,
"serverSide": true,
"ajax": '{!! route('data_table_users') !!}',
"order": [[0, "asc" ]],
"order": [[0, "desc" ]],
"columns": [
{ data: 'id', searchable: false},
{ data: 'first_name', name: 'account.first_name' },
@ -114,6 +273,7 @@
{ data: 'admin', name: 'admin' },
{ data: 'confirmed', name: 'confirmed' },
{ data: 'active', name: 'active' },
{ data: 'account', name: 'account' },
{ data: 'shop', name: 'shop' },
{ data: 'since', name: 'since' },
{ data: 'action_delete', orderable: false, searchable: false},

View file

@ -23,6 +23,7 @@
<h5 class="text-center text-muted font-weight-normal mb-4">{{ __('Login to your account') }}</h5>
<!-- Form -->
<form method="POST" class="my-5" action="{{ route('login') }}" aria-label="{{ __('Login') }}">
@csrf

View file

@ -30,7 +30,7 @@
<div class="row">
@if($user->active == 1)
@if($user->payment_account && $user->daysActiveAccount() <= 29)
@if($user->payment_account && $user->daysActiveAccount() <= config('mivita.renewal_days'))
<div class="d-flex col-xl-12 align-items-stretch">
<!-- SHOP -->
<div class="card w-100 mb-4">
@ -38,27 +38,28 @@
{{__('Mitgliedschaft / Jahresbeitrag') }}
</h5>
<div class="card-body">
<h5><strong>Achtung:</strong> Deine Mitgliedschaft wurde verlängert!</h5>
@if($user->daysActiveAccount() <= 0)
@if($user->isActiveAccount())
<h5 class="alert badge-danger"><strong>Achtung:</strong> Deine Mitgliedschaft läuft heute aus, bitte aktualisiere jetzt Deine Zahlung!</h5>
@else
<h5 class="alert badge-danger"><strong>Achtung:</strong> Deine Mitgliedschaft ist vor {{ $user->daysActiveAccount()*-1 }} Tagen ausgelaufen, bitte aktualisiere jetzt Deine Zahlung!</h5>
@endif
@elseif($user->daysActiveAccount() < 14)
<h5 class="alert badge-warning"><strong>Achtung:</strong> Deine Mitgliedschaft läuft in {{$user->daysActiveAccount()}} Tagen aus, bitte aktualisiere jetzt Deine Zahlung!</h5>
@if($user->daysActiveAccount() <= 0)
@if($user->isActiveAccount())
<h5 class="alert badge-danger">Dein Zahlungsfrist läuft heute aus, bitte aktualisiere jetzt Deine Mitgliedschaft!</h5>
@else
<h5 class="alert badge-default"><strong>Achtung:</strong> Deine Mitgliedschaft läuft in {{$user->daysActiveAccount()}} Tagen aus, bitte aktualisiere jetzt Deine Zahlung!</h5>
{{--
TODO SEPA
--}}
<h5 class="alert badge-danger">Dein Zahlungsfrist ist vor {{ $user->daysActiveAccount()*-1 }} Tagen ausgelaufen, bitte aktualisiere jetzt Deine Mitgliedschaft!</h5>
@endif
<p>Erst wenn Dein Jahresbeitrag bei uns eingeht wird Deine Mitgliedschaft automastisch um ein Jahr verlängert.</p>
<p>Die Verlängerung gibt ab erstes Abschlussdatum ein weiteres volles Jahr, bis zum <strong>{{$user->modifyActiveAccount()}}</strong></p>
@elseif($user->daysActiveAccount() < config('mivita.abo_booking_days') )
<h5 class="alert badge-warning">Dein Zahlungsfrist läuft in {{$user->daysActiveAccount()}} Tagen aus, bitte aktualisiere jetzt Deine Mitgliedschaft!</h5>
@else
<h5 class="alert badge-default">Dein Zahlungsfrist läuft in {{$user->daysActiveAccount()}} Tagen aus, bitte aktualisiere jetzt Deine Mitgliedschaft!</h5>
@if($user->abo_options && $user->payment_account)
<p>Deine Abo-Option ist aktiv, wir werden am <strong>{!! Carbon::parse($user->payment_account)->modify('-'.config('mivita.abo_booking_days').' days')->format('d.m.Y') !!}</strong> Deine Mitgliedschaftsgebühr automatisch per SEPA Mandat einziehen.<br>
@endif
@endif
<p>Erst wenn Dein Jahresbeitrag bei uns eingeht wird Deine Mitgliedschaft automastisch für ein Jahr verlängert. Die Verlängerung gilt ab erstes Abschlussdatum ein weiteres volles Jahr, bis zum <strong>{{$user->modifyActiveAccount()}}</strong>.
Sollte nach Ablauf der Zahlungsfrist Dein Jahresbeitrag nicht bei uns eingehen, wird Dein Account gesperrt.</p>
</div>
<div class="card-footer py-3">
<a href="" class="btn btn-info mb-3"><i class="ion ion-ios-refresh text-default mr-1"></i> Mitgliedschaft jetzt hier verlängern</a>
<a href="{{route('user_membership')}}" class="btn btn-info mb-3"><i class="ion ion-ios-refresh text-default mr-1"></i> Mitgliedschaft jetzt hier verwalten</a>
</div>
</div>
<!-- / SHOP -->
@ -126,34 +127,36 @@
<div class="card-body">
@if($user->isActiveAccount() )
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
<strong>{{__('Berater-Mitgliedschaft aktiv')}}</strong> {{__('bis zum:')}} {{ $user->getPaymentAccountDateFormat() }}</p>
<div class="badge btn-success p-2">
<i class="ion ion-md-checkmark-circle-outline text-white"></i>
<strong>{{__('Berater-Mitgliedschaft aktiv')}}</strong> {{__('bis zum:')}} <strong></strong>{{ $user->getPaymentAccountDateFormat() }}</div>
@else
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
<div class="badge badge-danger p-2">
<i class="ion ion-md-close-circle-outline text-white"></i>
<strong>{{__('Berater-Account inaktiv')}} </strong>
@if($user->payment_account)
{{__('abgelaufen am')}}: {{ $user->getPaymentAccountDateFormat() }}
{{__('abgelaufen am')}}: <strong></strong>{{ $user->getPaymentAccountDateFormat() }}
@endif
</p>
</div>
@endif
<div class="clearfix mb-2"></div>
@if($user->isActiveShop())
<p><span class="ion ion-md-checkmark-circle-outline text-primary"></span>
<strong>{{__('Berater-Online-Shop aktiv')}}</strong> {{__('bis zum')}}: {{ $user->getPaymentShopDateFormat() }}</p>
<div class="badge btn-success p-2">
<i class="ion ion-md-checkmark-circle-outline text-white"></i>
<strong>{{__('Berater-Online-Shop aktiv')}}</strong> {{__('bis zum')}}: <strong></strong>{{ $user->getPaymentShopDateFormat() }}</div>
@else
<p><span class="ion ion-md-close-circle-outline text-danger"></span>
<div class="badge badge-danger p-2">
<i class="ion ion-md-close-circle-outline text-white"></i>
<strong>{{__('Berater-Shop inaktiv')}}</strong>
@if($user->payment_shop)
{{__('abgelaufen am')}}: {{ $user->getPaymentShopDateFormat() }}
{{__('abgelaufen am')}}: <strong></strong>{{ $user->getPaymentShopDateFormat() }}
@endif
</p>
</div>
@endif
</div>
@if($user->payment_order_id)
<div class="card-footer py-3">
<a href="{{route('user_membership')}}" class="btn btn-secondary"><i class="ion ion-ios-people text-default mr-1"></i> {{__('Mitgliedschaft verwalten')}}</a>
</div>
@endif
</div>
<!-- / SHOP -->

View file

@ -35,13 +35,13 @@
<link rel="stylesheet" href="{{ mix('/vendor/libs/datatables/datatables.css') }}">
<link rel="stylesheet" href="{{ mix('/vendor/libs/bootstrap-datepicker/bootstrap-datepicker.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/libs/bootstrap-material-datetimepicker/bootstrap-material-datetimepicker.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/libs/summernote/dist/summernote-bs4.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/libs/slim-image-cropper/slim/slim.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/libs/dropzone/dropzone.css') }}">
<!-- Layout helpers -->
<script src="{{ mix('/vendor/js/layout-helpers.js') }}"></script>
@ -102,6 +102,8 @@
<script src="{{ mix('/vendor/js/bootstrap.js') }}"></script>
<script src="{{ mix('/vendor/js/sidenav.js') }}"></script>
<script src="{{ mix('/vendor/libs/growl/growl.js') }}"></script>
<script src="{{ asset('/vendor/libs/moment-develop/min/moment.min.js') }}"></script>
<script src="{{ asset('/vendor/libs/moment-develop/locale/de.js') }}"></script>
<script src="{{ mix('/vendor/libs/validate/validate.js') }}"></script>
@ -112,6 +114,7 @@
<script src="{{ mix('/vendor/libs/bootstrap-datepicker/bootstrap-datepicker.js') }}"></script>
<script src="{{asset('/js/bootstrap-datepicker.de.min.js')}}"></script>
<script src="{{ asset('/vendor/libs/bootstrap-material-datetimepicker/bootstrap-material-datetimepicker.js') }}"></script>
<script src="{{ asset('/vendor/libs/summernote/dist/summernote-bs4.min.js') }}"></script>
<script src="{{ asset('/vendor/libs/summernote/lang/summernote-de-DE.js') }}"></script>
@ -119,7 +122,7 @@
<script src="{{ asset('/vendor/libs/slim-image-cropper/slim/slim.kickstart.min.js') }}"></script>
<script src="{{asset('/vendor/libs/dropzone/dropzone.js')}}"></script>
<script src="{{ asset('/vendor/libs/dropzone/dropzone.js')}}"></script>
<script src="{{ asset('/js/forms_file-upload.js') }}"></script>
@ -137,7 +140,6 @@
<script type="text/javascript">
$(document).ready(function() {
$('.datepicker-base').datepicker({
orientation: 'auto right',
calendarWeeks: true,
@ -150,8 +152,18 @@
format: 'dd.mm.yyyy',
language: 'de',
clearBtn: true,
});
$('.b-material-datetime-picker').bootstrapMaterialDatePicker({
weekStart: 1,
format : 'DD.MM.YYYY HH:mm',
shortTime: false,
nowButton : true,
clearButton: true,
lang: 'de',
//currentDate: ''
});
$('.summernote').summernote({
height: 140,
lang: 'de-DE',

View file

@ -2,7 +2,7 @@
<hr>
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" name="abo_options" @if($user && $user->abo_options) checked="checked" @endif>
<span class="custom-control-label secondary"><strong>Abo-Option:</strong> Klicke dieses Box an, wenn Du Deine jährlichen Mitgliedschaft-Beiträge automatisch abbuchen lassen willst. Wähle dann bei der Zahlung SEPA-Lastschrift aus, wir speichern Dein SEPA-Lastschrift Mandart und buchen 14 Tage vor ablauf deine Jahresgebühr automatisch ab.</span>
<span class="custom-control-label secondary"><strong>Abo-Option:</strong> Klicke dieses Box an, wenn Du Deine jährlichen Mitgliedschaft-Beiträge automatisch abbuchen lassen willst. Wir speichern Dein SEPA-Lastschrift Mandart und buchen {{config('mivita.abo_booking_days')}} Tage vor Ablauf Deine Jahresgebühr automatisch ab.</span>
<p class="text-muted">Du kannst Deine Abo-Option jederzeit im Login-Bereich rückgängig machen. Ohne Abo-Option musst du vor Ablauf der Frist selbstänig im Login-Bereich die Zahlung ausführen.</p>
</label>
<hr>

View file

@ -0,0 +1,51 @@
<!-- Description -->
<div class="card mb-4">
<div class="card-body">
{!! Form::open(['url' => route('user_membership_store', ['change_order']), 'class' => 'form-horizontal']) !!}
<div class="table-responsive">
<table class="table table- m-0">
<tbody class="switchers-stacked">
@foreach($products as $product)
<tr>
<td class="text-center align-middle px-0">
<label class="switcher switcher-secondary">
<input type="radio" class="switcher-input" value="{{$product->id}}" name="switchers-package-wizard" @if($product->id == $user->payment_order_id) checked @endif >
<span class="switcher-indicator">
<span class="switcher-yes"></span>
<span class="switcher-no"></span>
</span>
<span class="switcher-label"></span>
</label>
</td>
<td class="p-4">
<div class="media align-items-center">
@if(count($product->images))
<img src="{{ route('product_image', [$product->images->first()->slug]) }}" class="d-block ui-w-60 ui-bordered mr-4" alt="">
@endif
<div class="media-body">
<h5 class="d-block text-dark">{{$product->name}} @if($product->id == $user->payment_order_id) (aktives Paket) @endif</h5>
{!! $product->getLang('copy') !!}
</div>
</div>
</td>
<td class="text-right font-weight-semibold align-middle p-4">{{$product->getFormattedPrice()}} EUR / p.a.</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<div class="text-left mt-3">
<hr>
<button type="submit" class="btn btn-secondary">{{ __('auswählen und speichern') }}</button>&nbsp;
</div>
{!! Form::close() !!}
</div>
</div>
<!-- / Description -->

View file

@ -0,0 +1,57 @@
<!-- Description -->
<div class="card mb-4">
<div class="card-body">
{!! Form::open(['url' => route('user_membership_store', ['payment']), 'class' => 'form-horizontal']) !!}
<div class="table-responsive">
<table class="table table- m-0">
<tbody class="switchers-stacked">
@foreach($products as $product)
<tr>
<td class="text-center align-middle px-0">
<label class="switcher switcher-secondary">
<input type="radio" class="switcher-input" value="{{$product->id}}" name="switchers-package-wizard" @if($product->id == $user->payment_order_id) checked @endif >
<span class="switcher-indicator">
<span class="switcher-yes"></span>
<span class="switcher-no"></span>
</span>
<span class="switcher-label"></span>
</label>
</td>
<td class="p-4">
<div class="media align-items-center">
@if(count($product->images))
<img src="{{ route('product_image', [$product->images->first()->slug]) }}" class="d-block ui-w-60 ui-bordered mr-4" alt="">
@endif
<div class="media-body">
<h5 class="d-block text-dark">{{$product->name}}</h5>
{!! $product->getLang('copy') !!}
</div>
</div>
</td>
<td class="text-right font-weight-semibold align-middle p-4">{{$product->getFormattedPrice()}} EUR / p.a.</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<div class="text-left mt-3">
<hr>
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" name="abo_options">
<span class="custom-control-label secondary"><strong>Abo-Option:</strong> Klicke dieses Box an, wenn Du Deine jährlichen Mitgliedschaft-Beiträge automatisch abbuchen lassen willst. Wähle dann bei der Zahlung SEPA-Lastschrift aus, wir speichern Dein SEPA-Lastschrift Mandart und buchen {{config('mivita.abo_booking_days')}} Tage vor ablauf deine Jahresgebühr automatisch ab.</span>
<p class="text-muted">Du kannst Deine Abo-Option jederzeit im Login-Bereich rückgängig machen. Ohne Abo-Option musst du vor Ablauf der Frist selbstänig im Login-Bereich die Zahlung ausführen.</p>
</label>
<hr>
<button type="submit" class="btn btn-secondary">{{ __('wählen und weiter zur Kasse') }}</button>&nbsp;
<br><br>
<em class="small text-center"> <i class="fa fa-lock"></i> Du wirst auf unseren checkout Server weitergeletet, die Verbindung ist SSL verschlüsselt.</em>
</div>
{!! Form::close() !!}
</div>
</div>
<!-- / Description -->

View file

@ -0,0 +1,65 @@
<!-- Description -->
<div class="card mb-4">
<div class="card-body">
<h5>Dein gebuchtes Paket</h5>
{!! Form::open(['url' => route('user_membership_store', ['payment_order']), 'class' => 'form-horizontal']) !!}
<div class="table-responsive">
<table class="table table- m-0">
<tbody class="switchers-stacked">
@foreach($products as $product)
@if($product->id === $user->payment_order_id || $product->identifier === 'show_order')
<tr>
<td class="text-center align-middle px-0">
<label class="switcher switcher-secondary">
<input type="radio" class="switcher-input" value="{{$product->id}}" name="switchers-package-wizard" @if($product->id == $user->payment_order_id) checked @endif >
<span class="switcher-indicator">
<span class="switcher-yes"></span>
<span class="switcher-no"></span>
</span>
<span class="switcher-label"></span>
</label>
</td>
<td class="p-4">
<div class="media align-items-center">
@if(count($product->images))
<img src="{{ route('product_image', [$product->images->first()->slug]) }}" class="d-block ui-w-60 ui-bordered mr-4" alt="">
@endif
<div class="media-body">
<h5 class="d-block text-dark">{{$product->name}}</h5>
{!! $product->getLang('copy') !!}
</div>
</div>
</td>
<td class="text-right font-weight-semibold align-middle p-4">{{$product->getFormattedPrice()}} EUR / p.a.</td>
</tr>
@endif
@endforeach
</tbody>
</table>
</div>
<div class="text-left mt-3">
@if(!$user->abo_options)
<hr>
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" name="abo_options">
<span class="custom-control-label secondary"><strong>Abo-Option:</strong> Klicke dieses Box an, wenn Du Deine jährlichen Mitgliedschaft-Beiträge automatisch abbuchen lassen willst. Wähle dann bei der Zahlung SEPA-Lastschrift aus, wir speichern Dein SEPA-Lastschrift Mandart und buchen {{config('mivita.abo_booking_days')}} Tage vor ablauf deine Jahresgebühr automatisch ab.</span>
<p class="text-muted">Du kannst Deine Abo-Option jederzeit im Login-Bereich rückgängig machen. Ohne Abo-Option musst du vor Ablauf der Frist selbstänig im Login-Bereich die Zahlung ausführen.</p>
</label>
<hr>
@else
<p><strong>Alternativ hast Du die Möglichkeit jetzt direkt Deine Mitgliedschaft mit anderen Zahlungsmöglichkeite zu bezahlen.</strong><br>
Ist die Mitgliedschaft vor dem {!! Carbon::parse($user->payment_account)->modify('-'.config('mivita.abo_booking_days').' days')->format('d.m.Y') !!} bezahlt, wird das SEPA Mandart nicht ausgeführt!</p>
<hr>
@endif
<button type="submit" class="btn btn-secondary">{{ __('wählen und weiter zur Kasse') }}</button>&nbsp;
<br><br>
<em class="small text-center"> <i class="fa fa-lock"></i> Du wirst auf unseren checkout Server weitergeletet, die Verbindung ist SSL verschlüsselt.</em>
</div>
{!! Form::close() !!}
</div>
</div>
<!-- / Description -->

View file

@ -1,7 +1,6 @@
@php($months = Carbon::now()->diffInMonths(Carbon::parse($user->payment_account)) +1)
{!! Form::open(['url' => route('user_membership_store_payment'), 'class' => 'form-horizontal']) !!}
<input type="hidden" name="qty" value="{{$months}}">
{!! Form::open(['url' => route('user_membership_store', ['upgrade_order']), 'class' => 'form-horizontal']) !!}
<input type="hidden" name="qty" value="{{$diff_months}}">
<div class="table-responsive">
<table class="table table- m-0">
<tbody class="switchers-stacked">
@ -31,8 +30,8 @@
<td class="text-right font-weight-semibold align-middle p-4">{{$product->getFormattedPrice()}} EUR / Monat</td>
</tr>
<tr>
<td colspan="2" class="text-right">Restlaufzeit: {{$months}} @if($months==1) Monat @else Monate @endif</td>
<td class="text-right font-weight-semibold"> {!! Util::formatNumber($months * $product->price) !!} EUR</td>
<td colspan="2" class="text-right">Restlaufzeit: {{$diff_months}} @if($diff_months==1) Monat @else Monate @endif</td>
<td class="text-right font-weight-semibold"> {!! Util::formatNumber($diff_months * $product->price) !!} EUR</td>
</tr>
@endforeach
</tbody>

View file

@ -17,108 +17,124 @@
@endif
<h4 class="font-weight-bold py-2 mb-2">
{{ __('Deine Mitgliedschaft') }}
{{ __('Mitgliedschaft') }}
</h4>
<div class="row">
<div class="col order-2 order-md-1">
@if($user->isActiveAccount() && !$user->isActiveShop())
<div class="card w-100 mb-4">
<h5 class="card-header">{{__('MIVITA BUSINESS Paket')}} {{__('Upgrade')}}</h5>
<div class="card-body">
<h5 class="d-block text-dark">Erweitere jetzt Deine Mitglidschaft auf MIVITA BUSINESS Paket!</h5>
<p>Berechnet werden die restlichen Monate bis zur Berater-Mitgliedschaft Verlängerung. Danach wird jährlich der MIVITA BUSINESS Paketpreis berechnet.</p>
@include('user.membership._upgrade')
</div>
</div>
@endif
@if($user->abo_options && $user->payment_account)
@if($user->isRenewalAccount())
<div class="card w-100 mb-4">
<h5 class="card-header">{{__('Abo-Option')}} {{__('deaktivieren')}}</h5>
<h5 class="card-header">Deine Mitglidschaft wurde am {!! Carbon::parse($user->payment_account)->modify('-'.config('mivita.abo_booking_days').' days')->format('d.m.Y') !!} verlänget.</h5>
<div class="card-body">
<p>Abo-Option dekativeren und SEPA Mandat zurückziehen.<br>
Die nächste Buchung ist am: <strong>{!! Carbon::parse($user->payment_account)->modify('- 29 days')->format('d.m.Y') !!}</strong></p>
<button type="submit" class="btn btn-secondary">{{ __('Abo-Option') }} {{__('deaktivieren')}}</button>&nbsp;
@if($userHistoryPaymentOrder && $userHistoryPaymentOrder->status > 2)
<h6 class="alert badge-{{$userHistoryPaymentOrder->getStatusColor()}}">Eine Zahlung wurde ausgeführt. Status: {{ trans('payment.status.'.$userHistoryPaymentOrder->getStatusType())}}</h6>
@endif
@if($user->abo_options && $user->payment_account)
<p class="alert py-2 px-2 badge-secondary">Deine Abo-Option ist aktiv, wir werden am <strong>{!! Carbon::parse($user->payment_account)->modify('-'.config('mivita.abo_booking_days').' days')->format('d.m.Y') !!}</strong> Deine Mitgliedschaftsgebühr automatisch per SEPA Mandat einziehen.<br>
@else
@if($user->payment_order_id && $user->payment_order_product->identifier === 'show_upgrade')
<p></p>
@endif
@endif
@if($user->payment_order_id)
@if($user->payment_order_product->identifier === 'show_upgrade')
<p><strong>Eine Rückstufung Deiner Berater-Mitgliedschaft ist nicht mehr möglich.</strong></p>
<p><strong>Du hast die Möglichkeit Dein Paket zu upgraden, wähle einfach das erweiterte Paket aus und gehe weiter zur Zahlung.</strong></p>
@endif
@if($user->payment_order_product->identifier === 'show_order')
<p><strong>Eine Änderung Deiner Berater-Mitgliedschaft ist nicht mehr möglich.</strong></p>
@endif
@endif
@include('user.membership._payment_order')
</div>
</div>
@endif
@else
{{--
TODO
//Warnungen und Zahlungen verlängerung.
//upgrade speichern über api
//Verlängern
//cron sepa
//cron Mails erinnerungen
//downgrade
--}}
<!-- Description -->
<div class="card mb-4">
<div class="card-body">
{!! Form::open(['url' => route('wizard_store_payment', [20]), 'class' => 'form-horizontal']) !!}
<div class="table-responsive">
<table class="table table- m-0">
<tbody class="switchers-stacked">
@foreach($products as $product)
<tr>
<td class="text-center align-middle px-0">
<label class="switcher switcher-secondary">
<input type="radio" class="switcher-input" value="{{$product->id}}" name="switchers-package-wizard" @if($product->id == $user->payment_order_id) checked @endif >
<span class="switcher-indicator">
<span class="switcher-yes"></span>
<span class="switcher-no"></span>
</span>
<span class="switcher-label"></span>
</label>
</td>
<td class="p-4">
<div class="media align-items-center">
@if(count($product->images))
<img src="{{ route('product_image', [$product->images->first()->slug]) }}" class="d-block ui-w-60 ui-bordered mr-4" alt="">
@endif
<div class="media-body">
<h5 class="d-block text-dark">{{$product->name}}</h5>
{!! $product->getLang('copy') !!}
</div>
</div>
</td>
<td class="text-right font-weight-semibold align-middle p-4">{{$product->getFormattedPrice()}} EUR / p.a.</td>
</tr>
@endforeach
</tbody>
</table>
{{-- upgrade downgrade next booking --}}
@if($user->payment_account)
<div class="card w-100 mb-4">
<h5 class="card-header">{{__('Mitgliedschaft')}} {{__('anpassen')}}</h5>
<div class="card-body">
<h6 class="d-block text-dark">Ändere Deine Mitglidschaft für die nächste Vertragsverlängerung.</h6>
<p>Die restlichen Läufzeiten bleiben erhalten, erst mit der Verlängerung wird das geänderte Paket aktiv.</p>
@include('user.membership._change')
</div>
<div class="text-left mt-3">
<hr>
</div>
@endif
{{-- no Shop - Upgrade --}}
@if($user->isActiveAccount() && !$user->isActiveShop())
<div class="card w-100 mb-4">
<h5 class="card-header">{{__('MIVITA BUSINESS Paket')}} {{__('Upgrade')}}</h5>
<div class="card-body">
<h5 class="d-block text-dark">Erweitere jetzt Deine Mitglidschaft auf MIVITA BUSINESS Paket!</h5>
<p>Berechnet werden die restlichen Monate bis zur Berater-Mitgliedschaft Verlängerung. Danach wird jährlich der MIVITA BUSINESS Paketpreis berechnet.</p>
@include('user.membership._upgrade')
</div>
</div>
@endif
{{-- remove ABO Options --}}
@if($user->abo_options && $user->payment_account)
<div class="card w-100 mb-4">
{!! Form::open(['url' => route('user_membership_store', ['remove_abo']), 'class' => 'form-horizontal']) !!}
<h5 class="card-header">{{__('Abo-Option')}} {{__('deaktivieren')}}</h5>
<div class="card-body">
<p>Abo-Option dekativeren und SEPA Mandat zurückziehen.<br>
Die nächste Buchung ist am: <strong>{!! Carbon::parse($user->payment_account)->modify('-'.config('mivita.abo_booking_days').' days')->format('d.m.Y') !!}</strong></p>
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" name="abo_options_remove">
<span class="custom-control-label secondary">Hiermit bestätige ich, mein SEPA zu löschen und die Abo-Option dekativeren.</span>
</label>
<button type="submit" class="btn btn-secondary btn-sm">{{ __('Abo-Option') }} {{__('deaktivieren')}}</button>&nbsp;
</div>
{!! Form::close() !!}
</div>
@endif
@if($user->payment_account)
<div class="card w-100 mb-4">
{!! Form::open(['url' => route('user_membership_store', ['delete_membership']), 'class' => 'form-horizontal']) !!}
<h5 class="card-header">{{__('Mitgliedschaft')}} {{__('beenden')}}</h5>
<div class="card-body">
<p>Du möchtest kein MIVITA Berater mehr sein und Deine Mitgliedschaft beenden?<br>
Damit gibst du alle möglichen Provisionen, Vergünstigungen, Zugang zum Sales-Center und noch viel mehr auf. Mit absenden dieser Option erhalten wir ein Nachricht und kümmern uns um die Löschung Deines Accounts. Dieser Vorgang kann ein paar Tage dauern.</p>
@if($userHistoryDeleteMembership && $userHistoryDeleteMembership->status == 50)
<p class="alert py-2 px-2 badge-danger">Die Beendigung und Löschung Deiner MIVITA Mitgliedschaft ist beantragt.<br>
@else
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" name="abo_options">
<span class="custom-control-label secondary"><strong>Abo-Option:</strong> Klicke dieses Box an, wenn Du Deine jährlichen Mitgliedschaft-Beiträge automatisch abbuchen lassen willst. Wähle dann bei der Zahlung SEPA-Lastschrift aus, wir speichern Dein SEPA-Lastschrift Mandart und buchen 14 Tage vor ablauf deine Jahresgebühr automatisch ab.</span>
<p class="text-muted">Du kannst Deine Abo-Option jederzeit im Login-Bereich rückgängig machen. Ohne Abo-Option musst du vor Ablauf der Frist selbstänig im Login-Bereich die Zahlung ausführen.</p>
<input type="checkbox" class="custom-control-input" name="delete_membership_mivita">
<span class="custom-control-label secondary">Ja, ich möchte die MIVITA Mitgliedschaft beenden, ich verzichte auf jeglichen Anspruch gegenüber MIVITA und möchte, dass mein Account gelöscht wird!</span>
</label>
<hr>
<button type="submit" class="btn btn-secondary">{{ __('wählen und weiter zur Kasse') }}</button>&nbsp;
<br><br>
<em class="small text-center"> <i class="fa fa-lock"></i> Du wirst auf unseren checkout Server weitergeletet, die Verbindung ist SSL verschlüsselt.</em>
<button type="submit" class="btn btn-default btn-sm">{{ __('Mitgliedschaft hiermit beenden') }}</button>&nbsp;
@endif
</div>
{!! Form::close() !!}
</div>
</div>
<!-- / Description -->
@endif
@endif
{{--
TODO
//cron sepa
//cron Mails erinnerungen
--}}
</div>
<div class="col-md-5 col-xl-4 order-1 order-md-2">
<!-- Project details -->
@ -130,7 +146,15 @@
<div class="text-muted">{{__('gebuchtes Paket')}}</div>
<div class="text-right">
@if($user->payment_order_id)
{{ $user->payment_order->name }}
{{ $user->payment_order_product->name }}
@endif
</div>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
<div class="text-muted">{{__('Vertragsverlängerung')}}</div>
<div class="text-right">
@if($user->payment_account)
{{ $user->nextRenewalAccount() }}
@endif
</div>
</li>

View file

@ -49,7 +49,7 @@
<hr>
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" name="abo_options">
<span class="custom-control-label secondary"><strong>Abo-Option:</strong> Klicke dieses Box an, wenn Du Deine jährlichen Mitgliedschaft-Beiträge automatisch abbuchen lassen willst. Wähle dann bei der Zahlung SEPA-Lastschrift aus, wir speichern Dein SEPA-Lastschrift Mandart und buchen 14 Tage vor ablauf deine Jahresgebühr automatisch ab.</span>
<span class="custom-control-label secondary"><strong>Abo-Option:</strong> Klicke dieses Box an, wenn Du Deine jährlichen Mitgliedschaft-Beiträge automatisch abbuchen lassen willst. Wähle dann bei der Zahlung SEPA-Lastschrift aus, wir speichern Dein SEPA-Lastschrift Mandart und buchen {{config('mivita.abo_booking_days')}} Tage vor ablauf deine Jahresgebühr automatisch ab.</span>
<p class="text-muted">Du kannst Deine Abo-Option jederzeit im Login-Bereich rückgängig machen. Ohne Abo-Option musst du vor Ablauf der Frist selbstänig im Login-Bereich die Zahlung ausführen.</p>
</label>
<hr>

View file

@ -134,9 +134,6 @@
<div class="m-checkout">
{!! Form::open(['url' => route('checkout.checkout_card_final'), 'class' => 'row clearfix', 'id'=>'']) !!}
@ -428,7 +425,11 @@
</a>
@else
<a href="{{ Util::getUserCardBackUrl('/card/show') }}" class="btn btn-default btn-sm btn- size-15 mt-4">
<i class="fa fa-chevron-left"></i> zurück zum Warenkorb
@if(Util::getUserPaymentFor() > 1)
<i class="fa fa-chevron-left"></i> zurück {{ Util::getMyMivitaUrl(false) }}
@else
<i class="fa fa-chevron-left"></i> zurück zum Warenkorb
@endif
</a>
@endif
</div>
@ -437,14 +438,21 @@
<!-- PAYMENT METHOD -->
<fieldset class="box-border-shadow p-20">
<h4>Zahlungsart</h4>
<hr>
<div class="toggle-transparent toggle-bordered-full clearfix">
<div class="toggle active">
<div class="toggle-content">
<div class="row nomargin-bottom">
@if(($shopping_user->abo_options === 1) && (Util::getUserPaymentFor() >= 3))
<div class="col-lg-12 nomargin clearfix">
<label class="mt-4 fs-14 fw-400 radio pull-left" style="width: 100%">
{!! Form::radio('payment_method', 'elv', '1') !!}
<i></i> <span class="weight-400"><span class="fa fa-check text-primary"></span> SEPA Lastschrift</span>
<img class="float-right" width="90" src="{{asset('images/payments-assets/sepa.png')}}" alt="SEPA Lastschrift">
</label>
</div>
@else
<div class="col-lg-12 nomargin clearfix">
<label class="mt-0 fs-14 fw-400 radio pull-left nomargin-top" style="width: 100%">
{!! Form::radio('payment_method', 'wlt#PPE', (!old('payment_method') ? '1' : '')) !!}
@ -460,8 +468,6 @@
<img class="float-right" width="90" src="{{asset('images/payments-assets/creditcard.png')}}" alt="Mastercard + Visa">
</label>
</div>
<div class="col-lg-12 nomargin clearfix">
<label class="mt-4 fs-14 fw-400 radio pull-left" style="width: 100%">
{!! Form::radio('payment_method', 'sb#PNT', '') !!}
@ -484,6 +490,8 @@
</label>
</div>
@endif
{{-- <div class="col-lg-12 nomargin clearfix">
<label class="mt-0 fs-14 fw-400 radio pull-left" style="width: 100%">
<input name="payment_method" type="radio" value="sb#GPY" />
@ -504,9 +512,7 @@
</label>
</div>
--}}
</div>
</div>
</div>
</div>
@ -684,7 +690,6 @@
</div>
<!-- /CHECKOUT -->
{!! Form::close() !!}
</div>
</div>
</section>

View file

@ -71,7 +71,11 @@
</a>
@else
<a href="{{ Util::getUserCardBackUrl('/card/show') }}">
<i class="fa fa-chevron-left"></i> zurück zum Warenkorb
@if(Util::getUserPaymentFor() > 1)
<i class="fa fa-chevron-left"></i> zurück {{ Util::getMyMivitaUrl(false) }}
@else
<i class="fa fa-chevron-left"></i> zurück zum Warenkorb
@endif
</a>
@endif
<!-- /Links -->

View file

@ -81,7 +81,11 @@
</a>
@else
<a href="{{ Util::getUserCardBackUrl('/card/show') }}">
<i class="fa fa-chevron-left"></i> zurück zum Warenkorb
@if(Util::getUserPaymentFor() > 1)
<i class="fa fa-chevron-left"></i> zurück {{ Util::getMyMivitaUrl(false) }}
@else
<i class="fa fa-chevron-left"></i> zurück zum Warenkorb
@endif
</a>
@endif
</li>

View file

@ -225,7 +225,7 @@ Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_car
Route::get('/user/shop_on_site/{image_id}/{user_shop_id}', 'UserShopController@deleteOnSiteImage')->name('user_shop_on_site_delete_image');
Route::get('/user/membership', 'MembershipController@index')->name('user_membership');
Route::post('/user/membership/store/payment', 'MembershipController@storePayment')->name('user_membership_store_payment');
Route::post('/user/membership/store/{action}', 'MembershipController@storePayment')->name('user_membership_store');
});
Route::group(['middleware' => ['admin']], function()