File "HomeController.php"
Full Path: /home/isoftco/public_html/hrm/app/Http/Controllers/Site/HomeController.php
File size: 4.4 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace App\Http\Controllers\Site;
use App\Classes\Reply;
use App\Events\CompanyCreated;
use App\Http\Controllers\SiteBaseController;
use App\Http\Requests\Site\ContactSubmitRequest;
use App\Http\Requests\Site\SignupRequest;
use App\Mail\CompanySignedUp;
use App\Mail\SupportReceived;
use App\Mail\SupportSent;
use App\Mail\VerifyEmail;
use App\Models\Admin;
use App\Models\Company;
use App\Models\ContactRequest;
use App\Models\Country;
use App\Models\FaqCategory;
use App\Models\Feature;
use App\Models\Pages;
use App\Models\Plan;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Str;
class HomeController extends SiteBaseController
{
public function __construct()
{
parent::__construct();
}
public function index()
{
return view("site.home", $this->data);
}
public function features()
{
$this->features = Feature::all();
return view("site.features", $this->data);
}
public function pricing()
{
$this->data["plans"] = Plan::all();
$this->data["max_users"] = Plan::max('end_user_count');
return view("site.pricing", $this->data);
}
public function support()
{
$this->faqCategories = FaqCategory::with('faq')->where('status', 'active')->get();
return view("site.support", $this->data);
}
public function termsOfService()
{
return view("site.termsofservice", $this->data);
}
public function privacyPolicy()
{
return view("site.privacypolicy", $this->data);
}
public function page($slug)
{
$this->page = Pages::where('slug',$slug)->first();
return view("site.page", $this->data);
}
public function signup()
{
$this->countries = Country::where('currency_symbol', '!=', 'null')->groupBy('currency_code')->get();
$this->countrieslist = Country::all();
$email = request()->get("email");
$plan = request()->get("plan");
$this->data["email"] = $email;
$this->data["plan"] = $plan;
return view("site.signup", $this->data);
}
public function submitSignup(SignupRequest $request)
{
\DB::beginTransaction();
$company = Company::create($request->all());
if (module_enabled('Subdomain')) {
$company->sub_domain = $request->sub_domain;
$company->save();
}
$code = Str::random(60);
$admin = $this->createAdmin($request,$company,$code);
\DB::commit();
$inputs = $request->all();
$inputs["name"] = $admin->name;
$inputs["email"] = $admin->email;
$inputs["login_url"] = route('login');
$inputs["email_token"] = $code;
$inputs["verify_link"] = route('admin.verify_email', $code);
$inputs['fromEmail'] = $this->setting->email;
$inputs['fromName'] = $this->setting->main_name;
// Send email of account creation
Mail::to($admin->email)->queue(new CompanySignedUp($inputs));
// Send verification email
Mail::to($admin->email)->queue(new VerifyEmail($inputs));
$url = env('APP_ADDRESS');
return Reply::success('Company registered successfully', ['url' => $url]);
}
public function contactSubmit(ContactSubmitRequest $request)
{
$inputs = $request->all();
$inputs['fromEmail'] = $this->setting->email;
$inputs['fromName'] = $this->setting->main_name;
$contact = new ContactRequest();
$contact->name = $request->name;
$contact->email = $request->email;
$contact->category = $request->category;
$contact->details = $request->details;
$contact->status = "Pending";
$contact->save();
Mail::to($inputs["email"])->send(new SupportReceived($inputs));
Mail::to($inputs['fromEmail'])->send(new SupportSent($inputs));
return Reply::redirect(route('thank.you'), 'Thank you for contacting us');
}
public function thankYou()
{
return view('site.thankyou', $this->data);
}
private function createAdmin($request, $company,$code)
{
$admin = new Admin();
$admin->name = $request->name;
$admin->email = $request->email;
$admin->password = Hash::make($request->password);
$admin->company_id = $company->id;
$admin->email_token = $code;
$admin->save();
return $admin;
}
}