File: /var/www/ipsremont-demo/app/Http/Controllers/ProfileController.php
<?php
namespace App\Http\Controllers;
use App\Helpers\UserHelper;
use App\Http\Requests\Service\ActiveIdRequest;
use App\Http\Requests\Service\AddCompanyRequest;
use App\Http\Requests\Service\UpdateServiceRequest;
use App\Http\Requests\User\UpdateProfileRequest;
use App\Models\Service\Service;
use App\Models\UserProfile;
use App\Services\Email\SendEmailService;
use App\Services\Service\ServiceService;
use App\Traits\UserTrait;
use Illuminate\Support\Facades\Auth;
class ProfileController extends Controller
{
use UserTrait;
/**
* Show the form for editing the specified resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$data = UserProfile::findOrFail(Auth::user()->getAuthIdentifier());
$validate = new UpdateProfileRequest();
return view('profile.index', compact('data', 'validate'));
}
/**
* Update the specified resource in storage.
*
* @param UpdateProfileRequest $request
*
* @return \Illuminate\Http\Response
*/
public function update(UpdateProfileRequest $request)
{
$user = UserHelper::getUser();
$fields = $request->all();
$userData = UserProfile::query()->findOrFail($user->id);
if ($fields['old_password'] && $fields['new_password']) {
$fields['password'] = bcrypt($fields['new_password']);
}
$this->userUpdate($fields, $userData);
return redirect()->route('profile.edit')->with(['messageSuccess' => __('admins.profile.success')]);
}
public function companyShow()
{
if (!Auth::user()->isService()) {
return redirect()->route('dashboard');
}
$service = Auth::user()->service()->first();
$price = $service->getPrice()->get();
$address = $service->getAddress();
if ($service->notice) {
$service->notice = 0;
$service->save();
}
$allServices = null;
if (Auth::user()->isMultiService()) {
$allServices = Auth::user()->getAllServices();
}
return view('services.show', compact('service', 'price', 'allServices', 'address'));
}
public function companyEdit()
{
if (!Auth::user()->isService()) {
return redirect()->route('dashboard');
}
$data = Auth::user()->service()->first();
$validate = new UpdateServiceRequest();
$managersRelation = $managers = $branches = false;
return view('services.edit', compact('data', 'managersRelation', 'managers', 'branches', 'validate'));
}
public function companyUpdate(UpdateServiceRequest $request)
{
if (!Auth::user()->isService()) {
return redirect()->route('dashboard');
}
$request->validate($request->rules());
$fields = $request->all();
$denyFields = [
'branch_id',
'display',
'external_id',
'display',
'managers',
];
foreach ($denyFields as $field) {
if (isset($fields[$field])) {
unset($fields[$field]);
}
}
$service = Auth::user()->service()->first();
$service->fill($fields);
$service->update();
return redirect()->route('profile.company.show')
->with('messageSuccess', __('services.messageUpdateServices'));
}
public function companyAdd()
{
if (!Auth::user()->isService()) {
return redirect()->route('dashboard');
}
$model = new Service();
$validate = new AddCompanyRequest();
return view('profile.create', compact('model', 'validate'));
}
public function companyStore(AddCompanyRequest $request)
{
$request->validate($request->rules());
$fields = $request->all();
$managers = Auth::user()->service->managers()->get()->pluck('id')->toArray();
$fields['branch_id'] = Auth::user()->getFirstBranchId();
$fields['user_id'] = Auth::user()->getAuthIdentifier();
$fields['display'] = 0;
$serviceService = new ServiceService();
$serviceModel = $serviceService->save($fields, $managers);
$service = ServiceService::getById(Auth::user()->getRealServiceId());
SendEmailService::newServiceMail($service, $serviceModel);
return redirect()->route('profile.company.show')
->with('messageSuccess', __('profile.messageCreateService'));
}
public function companyChange(ActiveIdRequest $request)
{
$serviceService = new ServiceService();
$service = $serviceService->getById($request->current_service_id);
$request->session()->put('current_service_id', $service->id);
return redirect()->route('dashboard')
->with('messageSuccess', __('profile.messageSetActive', ['name' => $service->getName()]));
}
}