Я все время захожу в тупик, и я работаю 80 часов в неделю и нуждаюсь в небольшой помощи.
У меня есть проект, который позволяет мне отправлять баллы лояльности моим клиентам.Я могу ввести их зарегистрированный адрес электронной почты и ввести сумму, затем нажать кнопку «Отправить», и она поступит на их счет для расходов на кофе и т. Д., Что является полностью рабочим процессом.
НО , мне нужно, чтобы мое поле формы принимало адрес электронной почты пользователя ИЛИ или его зарегистрированное имя пользователя ... просто я не могу вспомнить его адрес электронной почты, но могу для ихимя пользователя.
В базе данных адрес электронной почты хранится в email , а имя пользователя для моих клиентов хранится в name ..., поэтому мне требуется email и name для получения соответствующего адреса электронной почты email , чтобы система правильно отправила запрос ..
Blade / Form
<div class="form-group {{ $errors->has('email') ? ' has-danger' : '' }}">
<label for="email">{{__('Customers Email or Name')}}</label>
<input type="email" class="form-control" id="email" name="email" required>
</div>
Контроллер
class MoneyTransferController extends Controller
{
public function sendMoneyForm(Request $request){
return view('sendmoney.index');
}
public function sendMoney(Request $request){
$this->validate($request, [
'amount' => 'required|numeric|between:1,5.00',
'description' => 'required|string',
'email' => 'required|email|exists:users,email',
]);
$currency = Currency::find(Auth::user()->currency_id);
$auth_wallet = Auth::user()->walletByCurrencyId($currency->id);
if((boolean)$currency == false ){
flash(__('Failed!'), 'danger');
return back();
}
if ( Auth::user()->account_status == 0 ) {
flash(__('Try again') , 'info');
return back();
}
if ($request->email == Auth::user()->email) {
flash(__('You cannot send points to yourself') , 'danger');
return back();
}
if ($request->amount > $auth_wallet->amount) {
flash(__('You have insufficient points to send').' <strong>Try again!</strong>', 'danger');
return back();
}
$user = User::where('email', $request->email)->first();
$receive = Receive::create([
'user_id' => $user->id,
'from_id' => Auth::user()->id,
'transaction_state_id' => 3, // waiting confirmation
'gross' => $request->amount,
'currency_id' => $currency->id,
'currency_symbol' => $currency->symbol,
'fee' => $receive_fee,
'net' => $request->amount - $receive_fee,
'description' => $request->description,
'send_id' => 0
]);
$send = Send::create([
'user_id' => Auth::user()->id,
'to_id' => $user->id,
'transaction_state_id' => 3, // waiting confirmation
'gross' => $request->amount,
'currency_id' => $currency->id,
'currency_symbol' => $currency->symbol,
'fee' => $send_fee,
'net' => $request->amount - $send_fee,
'description' => $request->description,
'receive_id' => $receive->id
]);
$user->RecentActivity()->save($receive->Transactions()->create([
'user_id' => $receive->user_id,
'entity_id' => $receive->id,
'entity_name' => Auth::user()->name,
'transaction_state_id' => 3, // waiting confirmation
'money_flow' => '+',
'currency_id' => $currency->id,
'currency_symbol' => $currency->symbol,
'activity_title' => 'Payment Received',
'gross' => $receive->gross,
'fee' => $receive->fee,
'net' => $receive->net,
]));
Auth::user()->RecentActivity()->save($send->Transactions()->create([
'user_id' => Auth::user()->id,
'entity_id' => $send->id,
'entity_name' => $user->name,
'transaction_state_id' => 3, // waiting confirmation
'money_flow' => '-',
'currency_id' => $currency->id,
'currency_symbol' => $currency->symbol,
'activity_title' => 'Payment Sent',
'gross' => $send->gross,
'fee' => $send->fee,
'net' => $send->net
]));
return redirect(route('home'));
}
public function sendMoneyConfirm(Request $request){
$this->validate($request, [
'tid' => 'required|numeric',
]);
$transaction = Transaction::find($request->tid);
$currency = Currency::find($transaction->currency_id);
$auth_wallet = Auth::user()->walletByCurrencyId($currency->id);
if((boolean)$transaction == false ){
flash(__('Failed!'), 'danger');
return back();
}
if ( Auth::user()->account_status == 0 ) {
flash(__('pending') , 'info');
return back();
}
if(Auth::user()->id != $transaction->user_id ){
flash(__('Failed!'), 'danger');
return back();
}
$send = Send::find($transaction->transactionable_id);
if((boolean)$send == false ){
flash(__('Failed!'), 'danger');
return back();
}
if(Auth::user()->id != $send->user_id ){
flash(__('Failed!'),'danger');
return back();
}
$receive = Receive::find($send->receive_id);
if((boolean)$receive == false ){
flash(__('Failed!'), 'danger');
return back();
}
$user = User::find($receive->user_id);
$user_wallet = $user->walletByCurrencyId($currency->id);
if((boolean)$user == false ){
flash(__('Failed!'), 'danger');
return back();
}
$receive_transaction = transaction::where('transactionable_type', 'App\Models\Receive')->where('user_id', $user->id)->where('transaction_state_id', 3)->where('money_flow', '+')->where('transactionable_id', $receive->id)->first();
if((boolean)$receive_transaction == false ){
flash(__('Failed!'), 'danger');
return back();
}
if((double)$auth_wallet->amount < (double)$transaction->net ){
flash(__('You have insufficient points').' <strong></strong>', 'danger');
return back();
}
$receive->send_id = $send->id;
$receive->transaction_state_id = 1;
$receive->save();
$send->transaction_state_id = 1;
$send->save();
$transaction->transaction_state_id = 1;
$transaction->balance = (double)$auth_wallet->amount - (double)$transaction->net;
$transaction->save();
$receive_transaction->transaction_state_id = 1;
$receive_transaction->balance = (double) $user_wallet->amount + $receive_transaction->net;
$receive_transaction->save();
$auth_wallet->amount = (double)$auth_wallet->amount - (double)$transaction->net ;
$auth_wallet->save();
$user_wallet->amount = $user_wallet->amount + $receive_transaction->net ;
$user_wallet->save();
return back();
}
}
Мне просто нужно решение, чтобы, если я введу имя пользователя ' name , 'затем он сравнивает его с зарегистрированным адресом электронной почты пользователя, а затем продолжает обрабатывать его как обычно, как если бы электронное письмо было введено.
Надеюсь, у меня есть смысл ... довольно устал от этого конца!
Спасибо за любую помощь - очень признателен.
Может ли это быть сделано с некоторой логикой, такой как:
$user = User::where('email', $request->email);
if
$user = User::where('name', $request->name);
name = $request->email
или даже:
$user = User::where('email', $request->email)->first();
if (!$user) {
$user = User::where('name', $request->email)->first();
}
Обаиз которых до сих пор не работает!owch!
для того, чтобы получить адрес электронной почты из ввода "имя" ... любые идеи, пожалуйста, ????