Feb 13, 2023
0
Level 41
changing currency according to location
I need help please, would like to change the currency based on location so, if the user in Saudi Arabia he will see Riyal and if he in Egypt he will see Egyptian Pound here is my code 1- In controller
<?php
namespace App\Http\Controllers\Frontend;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Topbar;
use App\Models\Intro;
use App\Models\Footer;
use App\Models\Header;
use App\Models\Blog;
use App\Models\Form;
use Location;
class FormController extends Controller
{
public function index()
{
$topbars = Topbar::latest()->get();
$headers = Header::latest()->get();
$Footers = Footer::latest()->get();
$Blogs = Blog::latest()->limit(3)->get();
$forms = Form::latest()->get();
$ip = request()->ip();
$data = Location::get($ip);
return view ('frontend.form', compact( 'topbars', 'headers', 'Footers', 'Blogs', 'forms', 'ip', 'data'));
}
}
2- in Livewire
<?php
namespace App\Http\Livewire;
use Livewire\Component;
use App\Models\Form;
class Formwizard extends Component
{
public $currentStep = 1;
public $name, $consultaName, $major, $specific, $subject, $studyType, $timetype, $status, $data;
public $consultantTitle, $start_time, $riyalTitle, $riyalPrice,$dollarTitle, $dollarPrice,$leTitle, $lePrice;
public $successMessage = '';
public function render()
{
return view('livewire.formwizard');
}
public function firstStepSubmit()
{
$validatedData = $this->validate([
'name' => 'required',
'consultaName' => 'required',
'major' => 'required',
'specific' => 'required',
'subject' => 'required',
]);
$this->currentStep = 2;
}
/**
* Write code on Method
*
* @return response()
*/
public function secondStepSubmit()
{
$validatedData = $this->validate([
'studyType' => 'required',
'timetype' => 'required',
'consultantTitle' => 'required',
'start_time' => 'required',
'riyal.title' => ['nullable', 'integer'],
'riyal.price' => ['nullable', 'integer'],
'dollar.title' => ['nullable', 'integer'],
'dollar.price' => ['nullable', 'integer'],
'le.title' => ['nullable', 'integer'],
'le.price' => ['nullable', 'integer'],
]);
$this->currentStep = 3;
}
/**
* Write code on Method
*
* @return response()
*/
public function submitForm()
{
Form::create([
'name' => $this->name,
'consulta.name' => $this->consultaName,
'major.name' => $this->major,
'specific.name' => $this->specific,
'subject.name' => $this->subject,
'study_type.type' => $this->studyType,
'timetype.type' => $this->timetype,
'consultant.title' => $this->consultantTitle,
//'start_time.title' => $this->start_time,
'start_time.start_time'=> $this->start_time,
'riyal.title' => $this->riyalTitle,
'riyal.price' => $this->riyalPrice,
'dollar.title' => $this->dollarTitle,
'dollar.price' => $this->dollarPrice,
'le.title' => $this->leTitle,
'le.price' => $this->lePrice,
]);
$this->successMessage = 'Request Created Successfully.';
$this->clearForm();
$this->currentStep = 1;
}
/**
* Write code on Method
*
* @return response()
*/
public function back($step)
{
$this->currentStep = $step;
}
/**
* Write code on Method
*
* @return response()
*/
public function clearForm()
{
$this->name = '';
$this->consultaName = '';
$this->major = '';
$this->specific = '';
$this->subject = '';
$this->studyType = '';
$this->timetype = '';
$this->consultantTitle = '';
$this->start_time = '';
$this->start_time = '';
$this->riyalTitle = '';
$this->riyalPrice = '';
$this->dollarTitle = '';
$this->dollarPrice = '';
$this->leTitle = '';
$this->lePrice = '';
}
}
3- in livewire view
<!--Page Title-->
<div class="flex items-center min-h-screen bg-gray-50">
<div
class="flex-1 h-full max-w-4xl mx-auto bg-white rounded-lg shadow-xl"
>
<div class="flex flex-col md:flex-row">
<div class="h-32 md:h-auto md:w-1/2">
<img
class="object-cover w-full h-full"
src="https://cdn.pixabay.com/photo/2021/01/15/17/01/green-5919790__340.jpg"
alt="img"
/>
</div>
<div class="flex items-center justify-center p-6 sm:p-12 md:w-1/2">
<div class="w-full">
<h3 class="mb-4 text-xl font-bold text-blue-600">Sign up</h3>
<div class="w-full bg-gray-200 rounded-full">
<div
class="
w-40
p-1
text-xs
font-medium
leading-none
text-center text-blue-100
bg-blue-600
rounded-full
"
>
Step1
</div>
</div>
<div class="mt-4 mb-4">
<label class="block text-sm"> Name </label>
<input
type="text"
class="
w-full
px-4
py-2
text-sm
border
rounded-md
focus:border-blue-400
focus:outline-none
focus:ring-1
focus:ring-blue-600
"
placeholder="First Name"
/>
</div>
<div class="mb-4">
<label class="block mb-2 text-sm"> Email </label>
<input
type="text"
class="
w-full
px-4
py-2
text-sm
border
rounded-md
focus:border-blue-400
focus:outline-none
focus:ring-1
focus:ring-blue-600
"
placeholder="Last Name"
/>
</div>
<div class="mb-4">
<label class="block mb-2 text-sm"> Phone Number </label>
<input
class="
w-full
px-4
py-2
text-sm
border
rounded-md
focus:border-blue-400
focus:outline-none
focus:ring-1
focus:ring-blue-600
"
placeholder="Phone Number"
type="number"
/>
</div>
<div class="flex justify-end">
<button
class="
px-6
py-2
mt-4
text-sm
font-medium
leading-5
text-center text-white
transition-colors
duration-150
bg-blue-600
border border-transparent
rounded-lg
hover:bg-blue-700
focus:outline-none
"
href="#"
>
Next
</button>
</div>
<div class="mt-4 text-center">
<p class="text-sm">
Already have account
<a href="#" class="text-blue-600 hover:underline">
Sign in.</a
>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<!--End Page Title-->
<!--Start Formwizard Livewire-->
<div>
@if(!empty($successMessage))
<div class="alert alert-success">
{{ $successMessage }}
</div>
@endif
<div class="stepwizard">
<div class="stepwizard-row setup-panel">
<div class="stepwizard-step">
<a href="#step-1" type="button" class="btn btn-circle {{ $currentStep != 1 ? 'btn-default' : 'btn-primary' }}">1</a>
<p>Step 1</p>
</div>
<div class="stepwizard-step">
<a href="#step-2" type="button" class="btn btn-circle {{ $currentStep != 2 ? 'btn-default' : 'btn-primary' }}">2</a>
<p>Step 2</p>
</div>
<div class="stepwizard-step">
<a href="#step-3" type="button" class="btn btn-circle {{ $currentStep != 3 ? 'btn-default' : 'btn-primary' }}" disabled="disabled">3</a>
<p>Step 3</p>
</div>
</div>
</div>
<div class="row setup-content {{ $currentStep != 1 ? 'displayNone' : '' }}" id="step-1">
<div class="col-xs-12">
<div class="col-md-12">
<h3> Step 1</h3>
<div class="form-group">
<label for="title"> Name:</label>
<input type="text" wire:model="name" class="form-control" id="name">
@error('name') <span class="error">{{ $message }}</span> @enderror
</div>
<div class="form-group">
<label for="description">Choose consultat Name</label>
<input type="text" wire:model="consultaName" class="form-control" id="consultaName"/>
@error('consultaName') <span class="error">{{ $message }}</span> @enderror
</div>
<div class="form-group">
<label for="description">Choose major</label>
<textarea type="text" wire:model="major" class="form-control" id="major">{{{ $major ?? '' }}}</textarea>
@error('major') <span class="error">{{ $message }}</span> @enderror
</div>
<div class="form-group">
<label for="description">Choose specific</label>
<textarea type="text" wire:model="specific" class="form-control" id="specific">{{{ $specific ?? '' }}}</textarea>
@error('specific') <span class="error">{{ $message }}</span> @enderror
</div>
<div class="form-group">
<label for="description">Choose subject</label>
<textarea type="text" wire:model="subject" class="form-control" id="subject">{{{ $subject ?? '' }}}</textarea>
@error('subject') <span class="error">{{ $message }}</span> @enderror
</div>
<button class="btn btn-primary nextBtn btn-lg pull-right" wire:click="firstStepSubmit" type="button" >Next</button>
</div>
</div>
</div>
<div class="row setup-content {{ $currentStep != 2 ? 'displayNone' : '' }}" id="step-2">
<div class="col-xs-12">
<div class="col-md-12">
<h3> Step 2</h3>
<div class="form-group">
<label for="description">Choose Study Type</label><br/>
<label class="radio-inline"><input type="radio" wire:model="status" value="1" {{{ $status == '1' ? "checked" : "" }}}> Online </label>
<label class="radio-inline"><input type="radio" wire:model="status" value="0" {{{ $status == '0' ? "checked" : "" }}}> Offline</label>
@error('status') <span class="error">{{ $message }}</span> @enderror
</div>
<div class="form-group">
<label for="description">Choose Time Type</label><br/>
<label class="radio-inline"><input type="radio" wire:model="status" value="1" {{{ $status == '1' ? "checked" : "" }}}> AM </label>
<label class="radio-inline"><input type="radio" wire:model="status" value="0" {{{ $status == '0' ? "checked" : "" }}}> PM</label>
@error('status') <span class="error">{{ $message }}</span> @enderror
</div>
<div class="form-group">
<label for="description"> Choose Consultant Title</label>
<input type="text" wire:model="consultantTitle" class="form-control" id="consultantTitle"/>
@error('consultantTitle') <span class="error">{{ $message }}</span> @enderror
</div>
<div class="form-group">
<label for="description"> Choose Start time</label>
<input type="text" wire:model="start_time" class="form-control" id="start_time"/>
@error('start_time') <span class="error">{{ $message }}</span> @enderror
</div>
<div class="form-group" invisible >
<label for="description"> {{ $data->ip ?? '' }}</label>
<input type="text" wire:model="location" class="form-control" id="location"/>
@error('location') <span class="error">{{ $message }}</span> @enderror
</div>
<div class="form-group" invisible >
<label for="description"> {{ $data->countryName ?? '' }}</label>
<input type="text" wire:model="location" class="form-control" id="location"/>
@error('location') <span class="error">{{ $message }}</span> @enderror
</div>
{{-- check for KSA unfortunattly didn't work --}}
@if ($data->countryName == 'Saudi Arabia' ?? '')
<div class="form-group">
<label for="description"> Riyal</label>
<input type="text" wire:model="start_time" class="form-control" id="start_time"/>
@error('start_time') <span class="error">{{ $message }}</span> @enderror
</div>
<div class="form-group">
<label for="description"> Price</label>
<input type="text" wire:model="start_time" class="form-control" id="start_time"/>
@error('start_time') <span class="error">{{ $message }}</span> @enderror
</div>
{{-- check for UAE --}}
@elseif ($data->countryName == 'United Arab Emirates')
<div class="form-group">
<label for="description"> Dollar</label>
<input type="text" wire:model="start_time" class="form-control" id="start_time"/>
@error('start_time') <span class="error">{{ $message }}</span> @enderror
</div>
<div class="form-group">
<label for="description"> Price</label>
<input type="text" wire:model="start_time" class="form-control" id="start_time"/>
@error('start_time') <span class="error">{{ $message }}</span> @enderror
</div>
{{-- check for Egypt --}}
@else ($data->countryName == 'Egypt')
<div class="form-group">
<label for="description"> LE</label>
<input type="text" wire:model="start_time" class="form-control" id="start_time"/>
@error('start_time') <span class="error">{{ $message }}</span> @enderror
</div>
<div class="form-group">
<label for="description"> Price</label>
<input type="text" wire:model="start_time" class="form-control" id="start_time"/>
@error('start_time') <span class="error">{{ $message }}</span> @enderror
</div>
@endif
<button class="btn btn-primary nextBtn btn-lg pull-right" type="button" wire:click="secondStepSubmit">Next</button>
<button class="btn btn-danger nextBtn btn-lg pull-right" type="button" wire:click="back(1)">Back</button>
</div>
</div>
</div>
<div class="row setup-content {{ $currentStep != 3 ? 'displayNone' : '' }}" id="step-3">
<div class="col-xs-12">
<div class="col-md-12">
<h3> Step 3</h3>
//payment
<button class="btn btn-success btn-lg pull-right" wire:click="submitForm" type="button">Finish!</button>
<button class="btn btn-danger nextBtn btn-lg pull-right" type="button" wire:click="back(2)">Back</button>
</div>
</div>
</div>
</div>
Please or to participate in this conversation.