register step
This commit is contained in:
parent
1ada368ed4
commit
f06d2d15a5
50 changed files with 748 additions and 276 deletions
|
|
@ -4,12 +4,15 @@ namespace App\Http\Controllers;
|
|||
|
||||
|
||||
|
||||
use App\Mail\MailCustomMessage;
|
||||
use App\Mail\MailVerifyAccount;
|
||||
use App\Mail\MailVerifyContact;
|
||||
use App\Mail\MailAccountActive;
|
||||
use App\Models\UserAccount;
|
||||
use App\Models\UserHistory;
|
||||
use App\Repositories\ContractPDFRepository;
|
||||
use App\Repositories\UserRepository;
|
||||
use App\Services\UserService;
|
||||
use App\User;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Input;
|
||||
|
|
@ -190,23 +193,13 @@ class LeadController extends Controller
|
|||
|
||||
$user = $this->userRepo->getModel();
|
||||
|
||||
$unique = false;
|
||||
do{
|
||||
$confirmation_code = str_random(30);
|
||||
if( User::where('confirmation_code', '=', $confirmation_code)->count() == 0){
|
||||
$unique = true;
|
||||
}
|
||||
}
|
||||
while(!$unique);
|
||||
$confirmation_code = UserService::createConfirmationCode();
|
||||
|
||||
$user->lang = $user->getLandByCountry();
|
||||
$user->confirmation_code = $confirmation_code;
|
||||
//10 == start wizard form create Lead
|
||||
$user->wizard = 10;
|
||||
|
||||
$user->save();
|
||||
|
||||
|
||||
Mail::to($user->email)->send(new MailVerifyContact($confirmation_code, $user));
|
||||
|
||||
\Session()->flash('alert-save', true);
|
||||
|
|
@ -221,47 +214,74 @@ class LeadController extends Controller
|
|||
|
||||
}
|
||||
//user released when register is complete
|
||||
public function newReleased($id){
|
||||
public function released($action, $id){
|
||||
|
||||
$user = User::findOrFail($id);
|
||||
$validator = Validator::make(Input::all(), []);
|
||||
if(!$user->m_sponsor){
|
||||
$validator->errors()->add('m_sponsor', __('Berater hat keinen Sponsor.'));
|
||||
}
|
||||
if(!$user->account->m_first_name){
|
||||
$validator->errors()->add('m_first_name', __('Berater hat keinen Vornamen.'));
|
||||
}
|
||||
if(!$user->account->m_first_name){
|
||||
$validator->errors()->add('m_last_name', __('Berater hat keinen Nachnamen.'));
|
||||
}
|
||||
if(!$user->account->m_account){
|
||||
$validator->errors()->add('m_account', __('Berater hat keine Account ID'));
|
||||
}
|
||||
if ($validator->errors()->count()) {
|
||||
return back()->withErrors($validator)->withInput(Input::all());
|
||||
|
||||
if($action === 'completed'){
|
||||
$validator = Validator::make(Input::all(), []);
|
||||
if(!$user->m_sponsor){
|
||||
$validator->errors()->add('m_sponsor', __('Berater hat keinen Sponsor.'));
|
||||
}
|
||||
if(!$user->account->m_first_name){
|
||||
$validator->errors()->add('m_first_name', __('Berater hat keinen Vornamen.'));
|
||||
}
|
||||
if(!$user->account->m_first_name){
|
||||
$validator->errors()->add('m_last_name', __('Berater hat keinen Nachnamen.'));
|
||||
}
|
||||
if(!$user->account->m_account){
|
||||
$validator->errors()->add('m_account', __('Berater hat keine Account ID'));
|
||||
}
|
||||
if ($validator->errors()->count()) {
|
||||
return back()->withErrors($validator)->withInput(Input::all());
|
||||
}
|
||||
|
||||
//create PDF
|
||||
$pdf = new ContractPDFRepository($user);
|
||||
$pdf->_set('disk', 'user');
|
||||
$pdf->_set('dir', '/'.$user->id.'/documents/');
|
||||
$pdf->_set('user_id', $user->id);
|
||||
$pdf->_set('identifier', 'contract');
|
||||
$pdf->createContractPDF();
|
||||
|
||||
//set wizard tp payments
|
||||
$user->wizard = 20;
|
||||
$user->active = 1;
|
||||
$user->active_date = now();
|
||||
$user->confirmation_code = null;
|
||||
$user->confirmation_code_to = null;
|
||||
$user->confirmation_code_remider = 0;
|
||||
$user->save();
|
||||
|
||||
//mail with code to user?
|
||||
Mail::to($user->email)->send(new MailAccountActive($user));
|
||||
UserHistory::create(['user_id' => $user->id, 'action'=>'released_completed', 'status'=>0]);
|
||||
\Session()->flash('alert-success', "Berater freigeschaltet!");
|
||||
}
|
||||
|
||||
//create PDF
|
||||
$pdf = new ContractPDFRepository($user);
|
||||
$pdf->_set('disk', 'user');
|
||||
$pdf->_set('dir', '/'.$user->id.'/documents/');
|
||||
$pdf->_set('user_id', $user->id);
|
||||
$pdf->_set('identifier', 'contract');
|
||||
$pdf->createContractPDF();
|
||||
if($action === 'incomplete'){
|
||||
|
||||
//set wizard tp payments
|
||||
$user->wizard = 20;
|
||||
$user->active = 1;
|
||||
$user->active_date = now();
|
||||
$user->confirmation_code = null;
|
||||
$user->confirmation_code_to = null;
|
||||
$user->confirmation_code_remider = 0;
|
||||
$user->save();
|
||||
|
||||
//mail with code to user?
|
||||
Mail::to($user->email)->send(new MailAccountActive($user));
|
||||
\Session()->flash('alert-success', "Berater freigeschaltet!");
|
||||
//reset release
|
||||
$confirmation_code = UserService::createConfirmationCode();
|
||||
$user->confirmation_code = $confirmation_code;
|
||||
$user->confirmation_code_to = date('Y-m-d H:i:s', strtotime('+1 week'));
|
||||
$user->confirmation_code_remider = 0;
|
||||
$user->wizard = 1;
|
||||
$user->release_account = null;
|
||||
$user->save();
|
||||
|
||||
$input = Input::all();
|
||||
$data = [
|
||||
'subject' => $input['account_incomplete_subject'],
|
||||
'message' => $input['account_incomplete_message'],
|
||||
'confirmation_code' => $confirmation_code,
|
||||
];
|
||||
Mail::to($user->email)->send(new MailCustomMessage($user, $data, \Auth::user()));
|
||||
UserHistory::create(['user_id' => $user->id, 'action'=>'released_incomplete', 'status'=>0]);
|
||||
\Session()->flash('alert-success', "E-Mail an Berater gesendet.");
|
||||
|
||||
}
|
||||
return redirect(route('admin_lead_edit', [$user->id]));
|
||||
}
|
||||
|
||||
|
|
@ -270,28 +290,35 @@ class LeadController extends Controller
|
|||
public function newMailVerified($id){
|
||||
|
||||
$user = User::findOrFail($id);
|
||||
$unique = false;
|
||||
do{
|
||||
$confirmation_code = str_random(30);
|
||||
if(User::where('confirmation_code', '=', $confirmation_code)->count() == 0){
|
||||
$unique = true;
|
||||
}
|
||||
}
|
||||
while(!$unique);
|
||||
|
||||
$confirmation_code = UserService::createConfirmationCode();
|
||||
$user->confirmation_code = $confirmation_code;
|
||||
$user->confirmation_code_to = date('Y-m-d H:i:s', strtotime('+1 week'));
|
||||
$user->confirmation_code_remider = 0;
|
||||
$user->save();
|
||||
|
||||
Mail::to($user->email)->send(new MailVerifyAccount($confirmation_code, $user));
|
||||
\Session()->flash('alert-success', "E-Mail erneut gesendet");
|
||||
UserHistory::create(['user_id' => $user->id, 'action'=>'new_mail_verified', 'status'=>0]);
|
||||
|
||||
\Session()->flash('alert-success', "E-Mail erneut gesendet");
|
||||
return redirect(route('admin_lead_edit', [$user->id]));
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function deleteFile($user_id, $file_id, $relation){
|
||||
|
||||
if($relation === 'upload'){
|
||||
$user = User::findOrFail($user_id);
|
||||
$file = $user->files()->findOrFail($file_id);
|
||||
//remove file
|
||||
\Storage::disk('user')->delete($file->dir.$file->filename);
|
||||
$file->delete();
|
||||
\Session()->flash('alert-success', "Datei gelöscht");
|
||||
}
|
||||
return back();
|
||||
}
|
||||
|
||||
|
||||
public function getLeads()
|
||||
{
|
||||
|
||||
|
|
|
|||
|
|
@ -76,15 +76,7 @@ class RegisterController extends Controller
|
|||
$data = Input::all();
|
||||
$user = $this->userRepo->create($data);
|
||||
|
||||
$unique = false;
|
||||
do{
|
||||
$confirmation_code = str_random(30);
|
||||
if(User::where('confirmation_code', '=', $confirmation_code)->count() == 0){
|
||||
$unique = true;
|
||||
}
|
||||
}
|
||||
while(!$unique);
|
||||
|
||||
$confirmation_code = UserService::createConfirmationCode();
|
||||
|
||||
$user->lang = !empty(\App::getLocale()) ? \App::getLocale() : "de";
|
||||
$user->confirmation_code = $confirmation_code;
|
||||
|
|
|
|||
|
|
@ -149,6 +149,7 @@ class WizardController extends Controller
|
|||
$rules = array(
|
||||
'accepted_data_protection' => 'required',
|
||||
'accepted_active' => 'required',
|
||||
'accepted_contract' => 'required'
|
||||
);
|
||||
$validator = Validator::make(Input::all(), $rules);
|
||||
if ($validator->fails()) {
|
||||
|
|
@ -162,12 +163,17 @@ class WizardController extends Controller
|
|||
return view('user.wizard.register', $data)->withErrors($validator);
|
||||
}
|
||||
$account = $user->account;
|
||||
if($account->accepted_contract === null){
|
||||
$account->accepted_contract = now();
|
||||
}
|
||||
if($account->data_protection === null){
|
||||
$account->data_protection = now();
|
||||
}
|
||||
$account->save();
|
||||
if($user->agreement === null){
|
||||
$user->agreement = now();
|
||||
}
|
||||
|
||||
$user->wizard = 1;
|
||||
$user->save();
|
||||
return redirect(route('wizard_register'));
|
||||
|
|
@ -254,6 +260,7 @@ class WizardController extends Controller
|
|||
if ($step == 4) {
|
||||
$user->wizard = 5;
|
||||
$user->release_account = now();
|
||||
UserHistory::create(['user_id' => $user->id, 'action'=>'release_account', 'status'=>0]);
|
||||
$user->save();
|
||||
|
||||
if($user->isTestMode()){
|
||||
|
|
@ -297,14 +304,16 @@ class WizardController extends Controller
|
|||
|
||||
}
|
||||
$account = $user->account;
|
||||
if($account->accepted_contract === null){
|
||||
$account->accepted_contract = now();
|
||||
}
|
||||
if($account->data_protection === null){
|
||||
$account->data_protection = now();
|
||||
}
|
||||
$account->save();
|
||||
if($user->agreement === null){
|
||||
$user->agreement = now();
|
||||
}
|
||||
$account->save();
|
||||
$user->agreement = now();
|
||||
$user->wizard = 11;
|
||||
$user->save();
|
||||
|
||||
|
|
|
|||
73
app/Mail/MailCustomMessage.php
Normal file
73
app/Mail/MailCustomMessage.php
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
<?php
|
||||
namespace App\Mail;
|
||||
|
||||
use App\Models\UserMessage;
|
||||
use App\User;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Mail\Mailable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
|
||||
class MailCustomMessage extends Mailable
|
||||
{
|
||||
use Queueable, SerializesModels;
|
||||
|
||||
protected $data;
|
||||
protected $user;
|
||||
protected $sender;
|
||||
public $subject;
|
||||
public $message;
|
||||
|
||||
|
||||
public function __construct(User $user, $data, $sender)
|
||||
{
|
||||
$this->data = $data;
|
||||
$this->user = $user;
|
||||
$this->sender = $sender;
|
||||
$this->subject = isset($data['subject']) ? $data['subject'] : __('email.email_subject');
|
||||
$this->message = isset($data['message']) ? $data['message'] : '';
|
||||
}
|
||||
|
||||
|
||||
public function build()
|
||||
{
|
||||
$salutation = __('email.salutation').",";
|
||||
if($this->user->account){
|
||||
if($this->user->account->salutation === "mr"){
|
||||
$salutation = __('email.dear_sir')." ".$this->user->account->first_name.",";
|
||||
}else{
|
||||
$salutation = __('email.dear_mrs')." ".$this->user->account->first_name.",";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
UserMessage::create([
|
||||
'user_id' => $this->user->id,
|
||||
'send_user_id' => $this->sender->id,
|
||||
'email' => $this->user->email,
|
||||
'subject' => $this->subject,
|
||||
'message' => $this->message,
|
||||
'send' => true,
|
||||
'sent_at' => now(),
|
||||
]);
|
||||
$url = "";
|
||||
$button = "";
|
||||
if(isset($this->data['confirmation_code'])){
|
||||
$url = route('register_verify', $this->data['confirmation_code']);
|
||||
$button = __('email.button_account');
|
||||
|
||||
}
|
||||
return $this->view('emails.auth')->with([
|
||||
'url' => $url,
|
||||
'salutation' => $salutation,
|
||||
'button' => $button,
|
||||
'copy1line' => $this->message,
|
||||
'copy2line' => __('email.copy2line'),
|
||||
'copy3line' => __('email.copy3line'),
|
||||
'greetings' => __('email.greetings'),
|
||||
'sender' => __('email.sender'),
|
||||
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
@ -42,15 +42,14 @@ class MailReleaseAccount extends Mailable
|
|||
$content .= "E-Mail: ".$this->user->email;
|
||||
|
||||
|
||||
$copy1line = "Ein neuer Berater hat sich Registriert und wartet auf die Überprüfung und Freigabe seiner Daten."."\n";
|
||||
$copy1line .= "+ Überprüfung Ausweisdaten"."\n";
|
||||
$copy1line .= "+ Überprüfung Gewerbenachweis"."\n";
|
||||
$copy1line = "Ein neuer Berater hat sich registriert und wartet auf die Überprüfung und Freigabe seiner Daten:"."\n";
|
||||
$copy1line .= "+ Überprüfung der Ausweisdate"."\n";
|
||||
$copy1line .= "+ Überprüfung des Gewerbenachweises"."\n";
|
||||
$copy1line .= "+ Eintrag Account ID"."\n";
|
||||
$copy1line .= "+ Überprüfung Karriere-Level/Sponsor"."\n";
|
||||
$copy1line .= "+ Überprüfung Rechnungsdaten"."\n";
|
||||
|
||||
$copy1line .= 'Nach erfolgreicher Überprüfung mit dem Button "Daten vollständigt => Berater freischalten" den Berater freischalten.'."\n";
|
||||
$copy1line .= 'Der Berater erhält eine Mail, dass sein Account freigeschaltet worden ist. In den Vertrag wird automatisch mit den eingetragenden Inhalten erstellt.'."\n";
|
||||
$copy1line .= "+ Überprüfung / Kenntnisnahme Sponsor"."\n";
|
||||
$copy1line .= "+ Überprüfung der Rechnungsdaten"."\n";
|
||||
$copy1line .= 'Nach erfolgreicher Überprüfung mit dem Button „Daten vollständig => Berater freischalten“ den Berater freischalten.'."\n";
|
||||
$copy1line .= 'Der Berater erhält eine Mail, dass sein Account freigeschaltet wurde. Der Vertrag wird automatisch mit den Daten des Vertriebspartners erstellt.'."\n";
|
||||
|
||||
return $this->view('emails.info')->with([
|
||||
'url' => route('admin_lead_edit', $this->user->id).'?show=check_lead',
|
||||
|
|
|
|||
|
|
@ -176,11 +176,16 @@ class UserAccount extends Model
|
|||
$this->attributes['birthday'] = isset($value) ? (new Carbon($value))->format('Y-m-d') : NULL;
|
||||
}
|
||||
|
||||
public function getDataProtectionFormat(){
|
||||
public function getDataProtectionFormat(){
|
||||
if(!$this->attributes['data_protection']){ return ""; }
|
||||
return Carbon::parse($this->attributes['data_protection'])->format(\Util::formatDateTimeDB());
|
||||
}
|
||||
|
||||
public function getAcceptContractFormat(){
|
||||
if(!$this->attributes['accept_contract']){ return ""; }
|
||||
return Carbon::parse($this->attributes['accept_contract'])->format(\Util::formatDateTimeDB());
|
||||
}
|
||||
|
||||
|
||||
public function getCountryAttrAs($attr, $as = false){
|
||||
if($this->country){
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@ class UserHistory extends Model
|
|||
protected $table = 'user_histories';
|
||||
|
||||
protected $status_types = [
|
||||
0 => 'info',
|
||||
1 => 'store_payment',
|
||||
2 => 'checkout_payment',
|
||||
3 => 'payment_error',
|
||||
|
|
@ -63,6 +64,7 @@ class UserHistory extends Model
|
|||
50 => 'delete_membership'
|
||||
];
|
||||
protected $status_colors = [
|
||||
0 => 'info',
|
||||
1 => 'warning',
|
||||
2 => 'warning',
|
||||
3 => 'danger',
|
||||
|
|
|
|||
69
app/Models/UserMessage.php
Normal file
69
app/Models/UserMessage.php
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Created by Reliese Model.
|
||||
*/
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* Class UserMessage
|
||||
*
|
||||
* @property int $id
|
||||
* @property int $user_id
|
||||
* @property int $send_user_id
|
||||
* @property string $email
|
||||
* @property string $subject
|
||||
* @property string $message
|
||||
* @property bool $send
|
||||
* @property bool $fail
|
||||
* @property string $error
|
||||
* @property Carbon $sent_at
|
||||
* @property Carbon $scheduled_at
|
||||
* @property Carbon $delivered_at
|
||||
* @property Carbon $created_at
|
||||
* @property Carbon $updated_at
|
||||
*
|
||||
* @property User $user
|
||||
*
|
||||
* @package App\Models
|
||||
*/
|
||||
class UserMessage extends Model
|
||||
{
|
||||
protected $table = 'user_messages';
|
||||
|
||||
protected $casts = [
|
||||
'user_id' => 'int',
|
||||
'send_user_id' => 'int',
|
||||
'send' => 'bool',
|
||||
'fail' => 'bool'
|
||||
];
|
||||
|
||||
protected $dates = [
|
||||
'sent_at',
|
||||
'scheduled_at',
|
||||
'delivered_at'
|
||||
];
|
||||
|
||||
protected $fillable = [
|
||||
'user_id',
|
||||
'send_user_id',
|
||||
'email',
|
||||
'subject',
|
||||
'message',
|
||||
'send',
|
||||
'fail',
|
||||
'error',
|
||||
'sent_at',
|
||||
'scheduled_at',
|
||||
'delivered_at'
|
||||
];
|
||||
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo(User::class);
|
||||
}
|
||||
}
|
||||
21
app/Services/UserService.php
Normal file
21
app/Services/UserService.php
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
namespace App\Services;
|
||||
|
||||
|
||||
use App\User;
|
||||
|
||||
class UserService
|
||||
{
|
||||
|
||||
public static function createConfirmationCode() {
|
||||
$unique = false;
|
||||
do{
|
||||
$confirmation_code = str_random(30);
|
||||
if(User::where('confirmation_code', '=', $confirmation_code)->count() == 0){
|
||||
$unique = true;
|
||||
}
|
||||
}
|
||||
while(!$unique);
|
||||
return $confirmation_code;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,8 +1,6 @@
|
|||
<?php
|
||||
namespace App\Services;
|
||||
|
||||
|
||||
|
||||
use App\Models\UserHistory;
|
||||
|
||||
class Util
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue