File: /home/imensosw/.trash/app.2/Http/Controllers/Admin/PartnerController.php
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\StoreConsultancyRequest;
use App\Http\Requests\UpdateConsultancyRequest;
use App\Role;
use App\User;
use App\UserDoc;
use App\Partner;
use App\Country;
use App\Organization;
use Validator;
use Gate;
use URL;
use Auth;
use File;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use Illuminate\Auth\Events\Registered;
use App\Notifications\NewUserEmailNotification;
use App\Notifications\NewUser;
use Illuminate\Support\Str;
class PartnerController extends Controller
{
public function index()
{
abort_if(Gate::denies('partner_access'), Response::HTTP_FORBIDDEN, '403 Forbidden');
$user = Auth::user();
$role = $user->roles->pluck('title','id')->toArray();
if(in_array('Admin',$role)){
$partners = Partner::join('role_user', 'users.id', '=', 'role_user.user_id')->where('role_user.role_id',3)->get();
$organizations = Organization::pluck('title','id')->toArray();
return view('admin.partners.index', compact('partners','organizations'));
}else{
return redirect()->back()->with('error','Wrong access!');
}
}
public function create()
{
abort_if(Gate::denies('partner_create'), Response::HTTP_FORBIDDEN, '403 Forbidden');
$user = Auth::user();
$role = $user->roles->pluck('title','id')->toArray();
if(in_array('Admin',$role)){
$countries = Country::all();
$organizations = Organization::all();
$roles = Role::whereIn('id',[3])->pluck('title', 'id');
return view('admin.partners.create', compact('roles','countries','organizations'));
}else{
return redirect()->back()->with('error','Wrong access!');
}
}
public function partner_register()
{
$countries = Country::all();
$organizations = Organization::all();
$roles = Role::whereIn('id',[3])->pluck('title', 'id');
return view('partner_register', compact('roles','countries','organizations'));
}
public function register_as_partner(Request $request)
{
$valuesToAdd = array();
if(isset($request->slug) && !empty($request->slug)){
$valuesToAdd['slug'] = Str::slug($request->slug, '-');
}else{
$valuesToAdd['slug'] = Str::slug($request->name, '-');
}
$request->merge($valuesToAdd);
$validator = Validator::make($request->all(),
[
'name' => [
'required',
],
'email' => [
'required',
'unique:users',
],
'slug' => [
'required',
'unique:users,slug',
],
'org_contact' => [
'required',
'regex:/^([0-9\s\-\+\(\)]*)$/',
'min:9',
],
'org_name' => [
'required',
],
'org_type' => [
'required',
],
'org_email' => [
'required',
],
'password' => [
'required',
],
'roles.*' => [
'integer',
],
'roles' => [
'required',
'array',
],
]
);
if ($validator->fails()) {
return redirect()->route('partner_register')
->withErrors($validator)
->withInput();
}
$client_role = array(0=>3);
//$add_array = array();
//$add_array['user_status'] = 1;
//$add_array['email_verified_at'] = date('Y-m-d H:i:s');
//$add_array['approved_at'] = date('Y-m-d H:i:s');
//$request->merge($add_array);
$user = Partner::create($request->all());
$user->roles()->sync($client_role);
try
{
event(new Registered($user));
$this_user = User::find($user->id);
$admin = User::join('role_user','users.id','=','role_user.user_id')->where('role_user.role_id',1)->get();
foreach($admin as $key=>$this_admin){
$this_admin->notify(new NewUser($this_user));
}
}
catch (\Exception $e) {
//return $e->getMessage();
}
auth()->login($user);
return redirect()->route('admin.home');
}
public function store(Request $request)
{
abort_if(Gate::denies('partner_create'), Response::HTTP_FORBIDDEN, '403 Forbidden');
$valuesToAdd = array();
if(isset($request->slug) && !empty($request->slug)){
$valuesToAdd['slug'] = Str::slug($request->slug, '-');
}else{
$valuesToAdd['slug'] = Str::slug($request->name, '-');
}
$request->merge($valuesToAdd);
$validator = Validator::make($request->all(),
[
'name' => [
'required',
],
'email' => [
'required',
'unique:users',
],
'slug' => [
'required',
'unique:users,slug',
],
'org_contact' => [
'required',
'regex:/^([0-9\s\-\+\(\)]*)$/',
'min:9',
],
'org_name' => [
'required',
],
'org_type' => [
'required',
],
'org_email' => [
'required',
],
'password' => [
'required',
],
'roles.*' => [
'integer',
],
'roles' => [
'required',
'array',
],
]
);
if ($validator->fails()) {
return redirect()->route('admin.partners.create')
->withErrors($validator)
->withInput();
}
$client_role = array(0=>3);
$user = Auth::user();
$role = $user->roles->pluck('title','id')->toArray();
$add_array = array();
if(in_array('Admin',$role)){
$add_array['user_status'] = 1;
$add_array['email_verified_at'] = date('Y-m-d H:i:s');
$add_array['approved_at'] = date('Y-m-d H:i:s');
$request->merge($add_array);
$user = Partner::create($request->all());
$user->roles()->sync($client_role);
$mailData = [
'greeting' => 'Hi '.$user->name.',',
'body' => 'Your Account is Created on LiftCincy by Admin.
your Login detail are :
username - '.$user->email.'
Password - '.$request->password,
'thanks' => 'Thank you to connect with LiftCincy,',
'actionText' => 'View Account',
'actionURL' => url('/'),
];
try
{
$user->notify(new NewUserEmailNotification($mailData));
$this_user = User::find($user->id);
$admin = User::join('role_user','users.id','=','role_user.user_id')->where('role_user.role_id',1)->get();
foreach($admin as $key=>$this_admin){
$this_admin->notify(new NewUser($this_user));
}
}
catch (\Exception $e) {
//return $e->getMessage();
}
return redirect()->route('admin.partners.index')->with('success','Partner Created successfully!');
}else{
return redirect()->back()->with('error','Wrong access!');
}
}
public function edit(User $user,$id)
{
abort_if(Gate::denies('partner_edit'), Response::HTTP_FORBIDDEN, '403 Forbidden');
if(User::where('id',$id)->count()){
$user = User::find($id);
$roles = Role::whereIn('id',[3])->pluck('title', 'id');
$user->load('roles');
$countries = Country::all();
$user_c = Auth::user();
$role = $user_c->roles->pluck('title','id')->toArray();
$organizations = Organization::all();
$user_docs = UserDoc::where('user_id',$id)->get();
if(in_array('Admin',$role)){
return view('admin.partners.edit', compact('user','roles','countries','organizations','user_docs'));
}else{
return redirect()->back();
}
}
}
public function update(Request $request, $id)
{
abort_if(Gate::denies('partner_edit'), Response::HTTP_FORBIDDEN, '403 Forbidden');
$valuesToAdd = array();
if(isset($request->slug) && !empty($request->slug)){
$valuesToAdd['slug'] = Str::slug($request->slug, '-');
}else{
$valuesToAdd['slug'] = Str::slug($request->name, '-');
}
$request->merge($valuesToAdd);
$validator = Validator::make($request->all(),
[
'name' => [
'required',
],
'slug' => [
'required',
'unique:users,slug,'.$id,
],
'email' => [
'required',
'unique:users,email,'.$id,
],
'org_contact' => [
'required',
'regex:/^([0-9\s\-\+\(\)]*)$/',
'min:9',
],
'org_name' => [
'required',
],
'address_location' => [
'required',
],
'org_type' => [
'required',
],
'org_email' => [
'required',
],
'org_desc' => [
'required',
],
'roles.*' => [
'integer',
],
'roles' => [
'required',
'array',
],
]
);
if ($validator->fails()) {
return redirect()->route('admin.partners.edit',[$id])
->withErrors($validator)
->withInput();
}
if(User::join('role_user','users.id','=','role_user.user_id')->where('role_user.role_id',3)->where('users.id',$id)->count()){
$user = Partner::find($id);
$client_role = array(0=>3);
$c_user = Auth::user();
$role = $c_user->roles->pluck('title','id')->toArray();
$add_array = array();
if(in_array('Admin',$role)){
//$add_array['company_id'] = $c_user->id;
//$add_array['parent_id'] = $c_user->id;
//$request->merge($add_array);
$user->update($request->all());
return redirect()->route('admin.partners.index')->with('success','Partner updated successfully!');
}else{
return redirect()->route('admin.partners.edit',[$id])->with('error','Wrong access!');
}
}else{
return redirect()->route('admin.partners.edit',[$id])->with('error','Wrong access!');
}
}
public function show(Request $user,$id)
{
abort_if(Gate::denies('partner_show'), Response::HTTP_FORBIDDEN, '403 Forbidden');
if(User::join('role_user','users.id','=','role_user.user_id')->where('role_user.role_id',3)->where('users.id',$id)->count()){
$user = User::find($id);
$roles = Role::whereIn('id',[3])->pluck('title', 'id');
$user->load('roles');
$countries = Country::all();
$user_profile_img = URL::asset('images/profile.webp');
$organizations = Organization::all();
$user_docs = UserDoc::where('user_id',$id)->get();
if(!empty($user->user_profile_img)){
$user_profile_img = URL::asset('Profile/'.$user->id.'/'.$user->user_profile_img);
}
return view('admin.partners.show', compact('user','roles','countries','user_profile_img','organizations','user_docs'));
}
}
public function destroy(Request $request,$id)
{
abort_if(Gate::denies('partner_delete'), Response::HTTP_FORBIDDEN, '403 Forbidden');
if(Partner::join('role_user','users.id','=','role_user.user_id')->where('role_user.role_id',3)->where('users.id',$id)->get()->count()){
$user_c = Auth::user();
$role = $user_c->roles->pluck('title','id')->toArray();
if(in_array('Admin',$role)){
/*if(user::where('parent_id',$id)->count() || user::where('company_id',$id)->count()){
return back()->with('error','User Associated with other users, Can not delete!');
}else{
$user = User::find($id);
$user->delete();
return back()->with('success','Partner deleted successfully!');
}*/
$user = Partner::find($id);
$user->delete();
return back()->with('success','Partner deleted successfully!');
}
}
return back()->with('error','Something Wrong!');
}
public function partner_setting($user_id, User $request){
if(!empty($user_id) && User::join('role_user','users.id','=','role_user.user_id')->where('role_user.role_id',3)->where('users.id',$user_id)->count()){
$user = User::find($user_id);
$user->load('roles');
$role = $user->roles->pluck('title','id')->toArray();
if(in_array('Admin',$role)){
$countries = Country::pluck('country_name','country_code')->toArray();
return view('admin.partners.settings',compact('user','countries'));
}else{
return redirect()->back()->with('error','Wrong access!');
}
}
return redirect()->back()->with('error','Wrong access!');
}
public function upload_org_logo(Request $request)
{
if($request->ajax()){
$field_value = $request->field_value;
$field_name = $request->field_name;
$user_id = $request->partner_id;
$user = Auth::user();
$role = $user->roles->pluck('title','id')->toArray();
if(empty($user_id)){
return json_encode(array('success' => 'error','msg'=>'User not Found!'));
}
if(in_array('Admin',$role) || (Partner::where('id',$user_id)->get()->count()) && $user_id == $user->id) {
$folder= public_path().'/Profile/'.$user_id;
if(!is_dir($folder))
{
//File::makeDirectory($folder);
File::makeDirectory($folder,0777,true);
}
if($request->hasFile('field_value')) {
$user = Partner::find($user_id);
if(!empty($user->org_logo)){
$old_logo = public_path().'/Profile/'.$user_id.'/'.$user->org_logo;
if(File::exists($old_logo)){
File::delete($old_logo);
$user->org_logo = '';
$user->save();
}
}
$file = $request->file('field_value');
$ext = $file->getClientOriginalExtension();
$filename = 'org_logo_'.$user_id.'_'.time().'.' . $ext;
$destinationPath = $folder;
$upload_success = $file->move($destinationPath, $filename);
if($upload_success){
$user->org_logo = $filename;
$user->save();
$doc_url = URL::asset('Profile').'/'.$user_id.'/'.$filename;
$ddd = array('success' => 'done','doc_url'=>$doc_url);
return json_encode($ddd);
}else{
return json_encode(array('success' => 'error','doc_name'=>'kk'));
}
}
return json_encode(array('success' => 'error','doc_name'=>'kk'));
}else{
return json_encode(array('success' => 'error','doc_name'=>'kk'));
}
}
}
public function delete_org_logo(Request $request)
{
if($request->ajax()){
$data_col = $request->data_col;
$user_id = $request->partner_id;
$user = Auth::user();
$role = $user->roles->pluck('title','id')->toArray();
if(empty($user_id)){
return json_encode(array('success' => 'error','msg'=>'User not Found!'));
}
if(in_array('Admin',$role) || (Partner::where('id',$user_id)->get()->count()) && $user_id == $user->id) {
$folder= public_path().'/Profile/'.$user_id;
$user = Partner::find($user_id);
if(!empty($user->org_logo)){
$old_logo = public_path().'/Profile/'.$user_id.'/'.$user->org_logo;
if(File::exists($old_logo)){
File::delete($old_logo);
$user->org_logo = '';
$user->save();
$doc_url = URL::asset('images/org_logo.png');
$ddd = array('success' => 'done','doc_url'=>$doc_url,'msg'=>'Logo deleted Successfully!');
return json_encode($ddd);
}else{
return json_encode(array('success' => 'error','msg'=>'Field not Found!'));
}
}else{
return json_encode(array('success' => 'error','msg'=>'Field Value Null!'));
}
}else{
return json_encode(array('success' => 'error','msg'=>'User not Found!'));
}
}
return json_encode(array('success' => 'error','msg'=>'Wrong access'));
}
public function upload_user_docs(Request $request){
if($request->ajax()){
$user_id = $request->user_id;
$doc_type = $request->doc_type;
$user = Auth::user();
$role = $user->roles->pluck('title','id')->toArray();
if(empty($user_id)){
return array('status'=>'error','msg'=>'Failed!');
}
if(in_array('Admin',$role) || Partner::where('id',$user_id)->get()->count()) {
$field_value = $request->field_value;
$field_name = $request->field_name;
//$user_id = Auth::user()->id;
$folder= public_path().'/Profile/'.$user_id.'/'.$doc_type;
if(!is_dir($folder))
{
//File::makeDirectory($folder);
File::makeDirectory($folder,0777,true);
}
$allow_file_upload = false;
if($doc_type == 'DOC'){
$allow_file_upload = true;
}
if($allow_file_upload){
if($request->hasFile('field_value')) {
$file = $request->file('field_value');
$ext = $file->getClientOriginalExtension();
$filename = $doc_type.'_'.$user_id.'_'.time().'.' . $ext;
$destinationPath = $folder;
$upload_success = $file->move($destinationPath, $filename);
if($upload_success){
if($doc_type == 'DOC'){
$doc_data = new UserDoc();
}
$doc_data->user_id = $user_id;
$doc_data->doc_type = $doc_type;
$doc_data->doc_name = $filename;
$doc_data->save();
$doc_url = URL::asset('Profile').'/'.$user_id.'/'.$doc_type.'/'.$filename;
$ddd = array('status' => 'success','msg'=>'Image Uploaded Successfully!','doc_url'=>$doc_url,'doc_id'=>$doc_data->id);
return json_encode($ddd);
}else{
return array('status'=>'error','msg'=>'Document Upload Failed!');
}
}
}else{
return array('status'=>'error','msg'=>'No Permission to Upload Document!');
}
}else{
return array('status'=>'error','msg'=>'Wrong access!');
}
}
return array('status'=>'error','msg'=>'last Document Upload Failed!');
}
public function delete_user_document_file(Request $request){
if($request->ajax()){
$user_id = $request->user_id;
$doc_type = $request->doc_type;
$doc_id = $request->doc_id;
$user = Auth::user();
$role = $user->roles->pluck('title','id')->toArray();
if(empty($user_id)){
return array('status'=>'error','msg'=>'Failed!');
}
if(in_array('Admin',$role) || Partner::where('id',$user_id)->get()->count()) {
$allow_file_upload = false;
if($doc_type == 'DOC' && UserDoc::where('id',$doc_id)->where('doc_type',$doc_type)->where('user_id',$user_id)->get()->count()){
$doc_data = UserDoc::find($doc_id);
if(!empty($doc_data->doc_name)){
$folder= public_path().'/profile/'.$user_id.'/'.$doc_data->doc_type.'/'.$doc_data->doc_name;
if(File::exists($folder)){
File::delete($folder);
}
}else{
return array('status'=>'error','msg'=>'Image not found!');
}
$doc_data->delete();
$allow_file_upload = true;
return array('status'=>'success','msg'=>'Document Deleted Successfully!');
}else{
return array('status'=>'error','msg'=>'Image not found!');
}
}else{
return array('status'=>'error','msg'=>'Wrong access!');
}
}
return array('status'=>'error','msg'=>'Image Delete request Failed!');
}
}