<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\redirect;
use Illuminate\Support\Facades\Validator;
// use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Session;
use App\Classes\Constants;
use Illuminate\Support\Facades\Auth;
use App\Models\otp;
use App\Models\UserTemp;
use App\Models\User;
use App\Rules\Url_Validation;
use Mail;
use DB;
class UserController extends Controller
{
public function registerTemp(Request $request)
{
$rules = [
'first_name' => ['required', 'string', 'max:255'],
'last_name' => ['required', 'string', 'max:255'],
'country' => ['required', 'string', 'max:255'],
'state' => ['required', 'string', 'max:255'],
'mobile_number' => ['required','max:20'],
'email' => ['required', 'string', 'email',
'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
];
if ($request->cities != "") {
$rules['cities'] = ['string', 'max:255'];
}
if ($request->country == '101') {
$rules['mobile_number'] = ['digits:10','unique:users'];
}
$validate = Validator::make($request->all(), $rules);
if ($validate->fails()) {
return response()->json(['status' => Constants::FAILED_STATUS,
'error' => $validate->errors(), 'message' => 'validation error'],422);
}
// $otp = rand(1000, 9999);
$otp = 1234;
$otp_row = new otp();
$otp_row->receiver = $request->email;
$otp_row->otp = $otp;
$otp_row->otp_time = time();
$name = $request->first_name;
$email = $request->email;
Mail::send('emails/otpemail', ['email'=>$email,'name'=>$name,'otp'=>$otp], function ($m) use ($email) {
$m->from('info@thetechtales.com', 'OLIVER');
$m->to($email, 'user')->subject('OTP Varification.');
});
$otp_row->save();
if(!empty($request->city)){
$city_id = $request->city;
}else{
$city_id = "";
}
$userTemp = new UserTemp();
$userTemp->first_name = $request->first_name;
$userTemp->last_name = $request->last_name;
$userTemp->country_id = $request->country;
$userTemp->state_id = $request->state;
$userTemp->city_id = $city_id;
$userTemp->email = $request->email;
$userTemp->country_phone_code= $request->phonecode;
$userTemp->mobile_number = $request->mobile_number;
$userTemp->password = $request->password;
$userTemp->user_role = $request->user_role;
$userTemp->save();
return response()->json(['status' => 'success', 'data' => $otp]);
}
public function resendOtp(Request $request){
$otp = 1234;
$otp_row = new otp();
$otp_row->receiver = $request->email;
$otp_row->otp = $otp;
$otp_row->otp_time = time();
$name = $request->first_name;
$email = $request->email;
Mail::send('emails/otpemail', ['email'=>$email,'name'=>$name,'otp'=>$otp], function ($m) use ($email) {
$m->from('info@thetechtales.com', 'OLIVER');
$m->to($email, 'user')->subject('OTP Varification.');
});
$otp_row->save();
return response()->json(['status' => 'success', 'data' => $otp]);
}
public function testotp(){
// $otp = rand(1000, 9999);
$otp = 1234;
$email = "rktech7835@mail.com";
$name = "Raj Kumar";
Mail::send('emails/otpemail', ['email'=>$email,'name'=>$name,'otp'=>$otp], function ($m) use ($email) {
$m->from('info@thetechtales.com', 'Referral Hiring');
$m->to($email, 'user')->subject('Welcome to Referral Hiring');
});
}
public function SaveCompanyInfo(Request $request){
if(Session::has('vendorid')){
$id = $request->session()->get('vendorid');
$user = User::where('id',$id)->first();
}else{
$user = Auth::user();
$id = $user->id;
}
$regex = '/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/';
$rules = [
'company_name' => ['required'],
'b_contect_no' => ['required'],
'b_email' => ['required', 'string', 'email', 'max:255','unique:users'],
'b_estbish_year' => ['required'],
'b_legalstatus_firm'=> ['required'],
'b_nature' => ['required'],
'emp_number' => ['required'],
'annual_turnover' => ['required'],
'exports_to' => ['required'],
// 'company_overview' => ['required'],
'office_address' => ['required'],
// 'company_country' => ['required'],
'company_state' => ['required'],
'company_pin_code' => ['required'],
'company_web_link' => ['required',new Url_Validation],
'gst_number' => ['required'],
];
if ($request->cities != "") {
$rules['company_city'] = ['string', 'max:255'];
}
if ($request->country == '101') {
$rules['b_contect_no'] = ['digits:10'];
}
$messages = [
'b_contect_no.required' => 'We need to know your Bussiness Mumber!',
'b_contect_no.unique' => 'The Bussiness Number has already been taken.!',
'b_email.unique' => 'The Bussiness Email Address has already been taken.!',
'b_email.required' => 'We need to know your Bussiness Email Address!',
'b_estbish_year.required' => 'The Year of Establishment field is required.',
'b_legalstatus_firm.required' => 'The Bussiness Legal Status of Firm field is required.',
'b_nature.required' => 'The Bussiness Nature field is required.',
'emp_number.required' => 'The Employee Number field is required.',
];
if($user->country_id == '101'){
$messages['gst_number.required'] = 'The GST Number field is required.';
}else{
$messages['gst_number.required'] = 'The TAX Number field is required.';
}
$validate = Validator::make($request->all(), $rules, $messages);
if ($validate->fails()) {
return response()->json(['status' => Constants::FAILED_STATUS, 'error' => $validate->errors(), 'message' => 'validation error'],422);
}
if (empty($request->company_video_link)) {
$company_video = "";
}else{
$yt_url = $request->company_video_link;
$url_parsed_arr = parse_url($yt_url);
if(!filter_var($yt_url, FILTER_VALIDATE_URL) === false) {
if ($url_parsed_arr['host'] == "www.youtube.com" && $url_parsed_arr['path'] == "/watch" && substr($url_parsed_arr['query'], 0, 2) == "v=" && substr($url_parsed_arr['query'], 2) != "") {
$value = explode('v=',$yt_url);
$video_id = $value[1];
// https://www.youtube.com/embed/XFsuRxospbU
$company_video = $video_id;
}else{
$company_video = "";
}
} else {
$company_video = "";
}
}
$companyinfo['company_video_link'] = $company_video;
// upload company logo card
// $company_logo = "";
// if (!empty($request->file('company_logo'))) {
// $company_logo = $id.'_company_logo'.$randname.'.'.$request->file('company_logo')->extension();
// $request->company_logo->storeAs('public/company_logo',$company_logo); // upload image in storage/app/public/image
// }
// upload gst cerificate card
// $gst_certificate = "";
// if (!empty($request->file('gst_certificate'))) {
// $gst_certificate = $id.'_gst_certificate'.$randname.'.'.$request->file('gst_certificate')->extension();
// $request->gst_certificate->storeAs('public/gst_certificate',$gst_certificate); // upload image in storage/app/public/image
// }
// upload pan card
// $pan_card = "";
// if(!empty($request->file('pan_card'))){
// $pan_card = $id.'_pan_card'.$randname.'.'.$request->file('pan_card')->extension();
// $request->pan_card->storeAs('public/pan_Card',$pan_card); // upload image in storage/app/public/image
// }
// upload tan_certificate
// $tan_certificate = "";
// if (!empty($request->file('tan_certificate'))) {
// $tan_certificate = $id.'_tan_certificate'.$randname.'.'.$request->file('tan_certificate')->extension();
// $request->tan_certificate->storeAs('public/tan_certificate',$tan_certificate); // upload image in storage/app/public/image
// }
// $companyinfo = User::find($id);
$companyinfo['company_name'] = $request->company_name;
$companyinfo['b_contect_no'] = $request->b_contect_no;
$companyinfo['b_email'] = $request->b_email;
$companyinfo['b_estbish_year'] = $request->b_estbish_year;
$companyinfo['b_legalstatus_firm']= $request->b_legalstatus_firm;
$companyinfo['b_nature'] = $request->b_nature;
$companyinfo['emp_number'] = $request->emp_number;
$companyinfo['annual_turnover'] = $request->annual_turnover;
$export_to = "";
if (!empty($request->exports_to)) {
$export_to = implode(',', $request->exports_to);
$companyinfo['exports_to'] = $export_to;
}
$companyinfo['company_overview'] = $request->company_overview;
$companyinfo['office_address'] = $request->office_address;
$companyinfo['company_country'] = $request->company_country;
$companyinfo['company_state'] = $request->company_state;
$companyinfo['company_city'] = $request->company_city;
$companyinfo['company_pin_code'] = $request->company_pin_code;
$companyinfo['company_web_link'] = $request->company_web_link;
$companyinfo['gst_number'] = $request->gst_number;
$companyinfo['signup_status'] = '1';
// $companyinfo['company_logo'] = $company_logo;
// $companyinfo['gst_certificate'] = $gst_certificate;
// $companyinfo['pan_card'] = $pan_card;
// $companyinfo['tan_certificate'] = $tan_certificate;
$update = DB::table('users')
->where('id', $id) // find your user by their email
->limit(1) // optional - to ensure only one record is updated.
->update($companyinfo);
// return response()->json(['status' => Constants::FAILED_STATUS, 'data' => $request->file('company_logo')->extension()]);
return response()->json(['status' => 'success', 'data' => $companyinfo]);
}
public function upload_comapny_image(Request $request){
$rules = [
'company_logo' => 'max:10000|mimes:jpeg,jpg,png',
'gst_certificate' => 'max:10000|mimes:jpeg,jpg,png,pdf',
'pan_card' => 'max:10000|mimes:jpeg,jpg,png',
'tan_certificate' => 'max:10000|mimes:jpeg,jpg,png,pdf',
];
$validate = Validator::make($request->all(), $rules);
if ($validate->fails()) {
return response()->json(['status' => Constants::FAILED_STATUS, 'error' => $validate->errors(),],422);
}
// $user = Auth::user();
if(Session::has('vendorid')){
$id = $request->session()->get('vendorid');
$user = User::where('id',$id)->first();
}else{
$user = Auth::user();
$id = $user->id;
}
$randname = rand(1000,9999);
// return response()->json(['status' => 'success', 'data' => $request->file('company_logo')->extension()]);
// upload company logo card
$company_logo = "";
if (!empty($request->file('company_logo'))) {
if(file_exists('storage/app/public/company_logo/'.$user->company_logo)){
@unlink('storage/app/public/company_logo/'.$user->company_logo);
}
$company_logo = $id.'_company_logo'.$randname.'.'.$request->file('company_logo')->extension();
$request->company_logo->storeAs('public/company_logo',$company_logo); // upload image in storage/app/public/image
$companyinfo['company_logo'] = 'storage/app/public/company_logo/'.$company_logo;
$data = 'logo';
$image = $company_logo;
}
// upload gst cerificate card
$gst_certificate = "";
if (!empty($request->file('gst_certificate'))) {
if(file_exists('storage/app/public/gst_certificate/'.$user->gst_certificate)){
@unlink('storage/app/public/gst_certificate/'.$user->gst_certificate);
}
$gst_certificate = $id.'_gst_certificate'.$randname.'.'.$request->file('gst_certificate')->extension();
$request->gst_certificate->storeAs('public/gst_certificate',$gst_certificate); // upload image in storage/app/public/image
$companyinfo['gst_certificate'] = $gst_certificate;
$data = 'gst';
$image = $gst_certificate;
}
// upload pan card
$pan_card = "";
if(!empty($request->file('pan_card'))){
if(file_exists('storage/app/public/pan_Card/'.$user->pan_card)){
@unlink('storage/app/public/pan_Card/'.$user->pan_card);
}
$pan_card = $id.'_pan_card'.$randname.'.'.$request->file('pan_card')->extension();
$request->pan_card->storeAs('public/pan_Card',$pan_card); // upload image in storage/app/public/image
$companyinfo['pan_card'] = $pan_card;
$data = 'pan';
$image = $pan_card;
}
// upload tan_certificate
$tan_certificate = "";
if (!empty($request->file('tan_certificate'))) {
if(file_exists('storage/app/public/tan_certificate/'.$user->tan_certificate)){
@unlink('storage/app/public/tan_certificate/'.$user->tan_certificate);
}
$tan_certificate = $id.'_tan_certificate'.$randname.'.'.$request->file('tan_certificate')->extension();
$request->tan_certificate->storeAs('public/tan_certificate',$tan_certificate); // upload image in storage/app/public/image
$companyinfo['tan_certificate'] = $tan_certificate;
$data = 'tan';
$image = $tan_certificate;
}
$update = DB::table('users')
->where('id', $id) // find your user by their email
->limit(1) // optional - to ensure only one record is updated.
->update($companyinfo);
return response()->json(['status' => 'success', 'data' => $data , 'image' => $image]);
}
function Delete_company_image(Request $request){
if(Session::has('vendorid')){
$id = $request->session()->get('vendorid');
$user = User::where('id',$id)->first();
}else{
$user = Auth::user();
$id = $user->id;
}
if($request->image == 'logo'){
if(file_exists('storage/app/public/company_logo/'.$user->company_logo)){
@unlink('storage/app/public/company_logo/'.$user->company_logo);
}
$companyinfo['company_logo'] = "";
}
if($request->image == 'gst'){
if(file_exists('storage/app/public/gst_certificate/'.$user->gst_certificate)){
@unlink('storage/app/public/company_logo/'.$user->gst_certificate);
}
$companyinfo['gst_certificate'] = "";
}
if($request->image == 'pan'){
if(file_exists('storage/app/public/pan_Card/'.$user->pan_card)){
@unlink('storage/app/public/pan_Card/'.$user->pan_card);
}
$companyinfo['pan_card'] = "";
}
if($request->image == 'tan'){
if(file_exists('storage/app/public/tan_certificate/'.$user->tan_certificate)){
@unlink('storage/app/public/tan_certificate/'.$user->tan_certificate);
}
$companyinfo['tan_certificate'] = "";
}
$update = DB::table('users')
->where('id', $id) // find your user by their email
->limit(1) // optional - to ensure only one record is updated.
->update($companyinfo);
return response()->json(['status' => 'success', 'image' => $request->image]);
}
public function showcompanyinfo(Request $request){
// $user = Auth::user();
if(Session::has('vendorid')){
$id = $request->session()->get('vendorid');
$user = User::where('id',$id)->first();
}else{
return redirect()->to('/vendorSignupOne');
}
// if(!empty($user->id)){
// if($user->user_role != '2'){
// return redirect()->to('/');
// }
// }else{
// return redirect()->to('/vendorSignupOne');
// }
// $state=DB::table('state')->get();
$country = DB::table('countries')->where('status','1')->get();
$allcountry = DB::table('countries')->get();
$state = DB::table('states')->where('country_id',$user->country_id)->get();
$city = DB::table('cities')->where('state_id',$user->state_id)->get();
if(empty($user)){
return view('auth.register',compact('country'));
}
return view('vendor.companyinfo',compact('country','allcountry','user','state','city'));
}
// vendor signup form ////////////////////////////////
public function vendorSignUpOne(){
// $user = Auth::user();
// if(Session::has('vendorid')){
// return redirect()->to('/showcompanyinfo');
// }
$country = DB::table('countries')->where('status','1')->get();
// dd($country);
return view('auth.register',compact('country'));
}
public function thanks(){
// $user = Auth::user();
// if(!empty($user)){
// // if($user->company_name == ""){
// Auth::logout();
// // }
// }
// return redirect('/');
$country ='';
if (session()->has('sessioncountry')) {
$country = session()->get('sessioncountry');
}
Session::flush();
if ($country != '') {
Session::put([
'sessioncountry' =>$country,
]);
}
return view('vendor.thanks');
}
// Normal User signup form //////////////////////
public function signup(){
$user = Auth::user();
$country = DB::table('countries')->get();
return view('user_signup',compact('country'));
}
public function country(Request $request) {
$country = DB::table('countries')->get();
$countryoptions = '';
foreach ($country as $value) {
$countryoptions.='<option value="'.$value->id.'">'.$value->name.'</option>';
}
return response()->json(['status' => 'success', 'data' => $countryoptions]);
}
public function getState(Request $request) {
$user = Auth::user();
if(empty($user)){
$country_id = $request->counId;
}else{
$country_id = $user->country_id;
}
$state = DB::table('states')->where('country_id',$country_id)->get();
$country = DB::table('countries')->where('id',$country_id)->first();
$stateoptions = '<option value="">Select State*</option>';
foreach ($state as $value) {
$stateoptions.='<option value="'.$value->id.'">'.$value->name.'</option>';
}
return response()->json(['status' => 'success', 'data' => $stateoptions,'phoneCode' => $country->phonecode]);
}
public function getcities(Request $request) {
$cities = DB::table('cities')->where('state_id',$request->stateId)->get();
// return print_r($cities);
if (count($cities) == 0) {
return response()->json(['status' => 'success', 'data' => 'null']);
}
// $country = DB::table('countries')->where('id',$request->counId)->first();
$citiesoptions = '<option value="">Select City*</option>';
foreach ($cities as $value) {
$citiesoptions.='<option value="'.$value->id.'">'.$value->name.'</option>';
}
return response()->json(['status' => 'success', 'data' => $citiesoptions]);
}
public function youtube_thumbnail(Request $request){
// return response()->json(['status' => 'success' , 'data'=> $request->yt_url]);
// echo $request->yt_url;
// die();
if (empty($request->yt_url)) {
$company_video = "";
}else{
$yt_url = $request->yt_url;
$url_parsed_arr = parse_url($yt_url);
if(!filter_var($yt_url, FILTER_VALIDATE_URL) === false) {
if ($url_parsed_arr['host'] == "www.youtube.com" && $url_parsed_arr['path'] == "/watch" && substr($url_parsed_arr['query'], 0, 2) == "v=" && substr($url_parsed_arr['query'], 2) != "") {
$value = explode('v=',$yt_url);
$video_id = $value[1];
$company_video = '<img src="https://img.youtube.com/vi/'.$video_id.'/hqdefault.jpg" width="50" height="50" onclick="show_input_video_link()"><a href="javascript:void(0)" onclick="delete_video_link()"><span>❌</span></a>';
return response()->json(['status' => 'success', 'data' => $company_video]);
}else{
return response()->json(['status' => 'error', 'data' => "Enter valid youtube Video url"]);
}
} else {
return response()->json(['status' => 'error', 'data' => "Enter valid youtube Video url"]);
}
}
}
public function logout(){
Auth::routes();
$country ='';
if (session()->has('sessioncountry')) {
$country = session()->get('sessioncountry');
}
Session::flush();
auth()->logout();
if ($country != '') {
Session::put([
'sessioncountry' => $country,
]);
}
return Redirect::to('/user/login');
}
}
Comments
Post a Comment