CrestRoad/laravel/Live/MicrositeController.php

136 lines
7.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\LambdaRequest;
use App\Models\Library;
use App\Models\Session;
use App\Models\Sessionagenda;
use App\Models\Faculty;
use DB;
use PDF;
use Storage;
use Response;
class MicrositeController extends LocalController
{
public function contentlibrary($code, Request $request) {
$library = Library::where('code', $code)->first();
$library->library_values = json_decode($library->library_values);
$content_id = $request->input('id', false);
if(!$content_id) {
$content_id = $library->library_values[0]->id;
}
$content = LambdaRequest::getrequest('mag', 'magazine/details', ['id' => $content_id ], env('LAMBDA_ACCESS_TOKEN', 'default_value') );
//echo '<pre>'; print_r($library); exit;
return view('road.contentlibrary', ['library' => $library, 'content' => $content->data]);
}
public function analytics_view(Request $request) {
$post = $request->except('_token');
$post['ip'] = $request->ip();
$content = LambdaRequest::postrequest('mag', 'mag_media_views/create_multiple', $post, env('LAMBDA_ACCESS_TOKEN', 'default_value') );
return response()->json($content);
}
public function microsite($code, Request $request) {
list($type, $code) = explode('-', $code);
$session = (object)Session::where('code', $code)->first()->toArray();
$session->dates = json_decode($session->dates);
$session->faculty = explode('|', $session->faculty);
$session->faculty = array_filter($session->faculty, function($value) { return !is_null($value) && $value !== ''; });
$faculties = Faculty::whereIn('id', $session->faculty)->get();
$agendas = Sessionagenda::where('session_id', $session->id)->get();
//echo '<pre>'; print_r(['session' => $session, 'faculties' => $faculties]); exit;
return view($session->type.'.microsite', ['session' => $session, 'faculties' => $faculties, 'agendas' => $agendas]);
}
public function brochure($code, Request $request) {
if(Storage::disk('local')->has('public/brochure/'.$code.'.pdf') ) {
$headers = array('Content-Type: application/pdf',);
//echo storage_path().'/storage/brochure/'.$code.'.pdf'; exit;
return Response::download(storage_path().'/app/public/brochure/'.$code.'.pdf', 'brochure.pdf',$headers);
} else {
$session = (object)Session::where('code', $code)->first()->toArray();
$session->dates = json_decode($session->dates);
$session->faculty = explode('|', $session->faculty);
$session->faculty = array_filter($session->faculty, function($value) { return !is_null($value) && $value !== ''; });
$faculties = Faculty::whereIn('id', $session->faculty)->get();
$agendas = Sessionagenda::where('session_id', $session->id)->get();
//echo '<pre>'; print_r(['session' => $session, 'faculties' => $faculties]); exit;
//return view($session->type.'.brochure', ['session' => $session, 'faculties' => $faculties, 'agendas' => $agendas]);
$pdf = PDF::loadView($session->type.'.brochure', ['session' => $session, 'faculties' => $faculties, 'agendas' => $agendas])->setOptions(['defaultFont' => 'sans-serif', 'isHtml5ParserEnabled' => true, 'isRemoteEnabled' => true]);
if($session->type == 'casper' || $session->type == 'casper_clinic') {
$customPaper = array(0,0,500,750);
$pdf->setPaper($customPaper);
}
Storage::put('public/brochure/'.$code.'.pdf', $pdf->output());
return $pdf->download('brochure.pdf');
}
}
public function register($code, Request $request) {
$session = (object)Session::where('code', $code)->first()->toArray();
$session->dates = json_decode($session->dates);
$request->session()->put('session_type', $session->type);
return view($session->type.'.register', ['session' => $session]);
}
public function postregister($code, Request $request) {
$post = $request->except('_token');
$post['type_of_setup'] = implode(',', $post['type_of_setup']);
$post['position'] = 'india';
$post['session_code'] = $code;
//echo '<pre>'; print_r($post); exit;
$request->session()->put('session_code', $code);
$response = LambdaRequest::postrequest('ums', 'contact/create', $post, env('LAMBDA_ACCESS_TOKEN', 'default_value') );
if($response->status == 'success') {
$session = (object)Session::where('code', $code)->first()->toArray();
$client = new \GuzzleHttp\Client();
$text = 'Greetings ' . $post['name']."\n";
$text .= 'You have Successfully registered for Crest session "'.$session->number.' ('.$session->type.') "'."\n";
$text .= 'Please find the details below'."\n";
$text .= 'Venue: ' . $session->venue . "\n";
$text .= 'Address: ' . $session->address . "\n";
$text .= 'Timings:' . "\n";
$dates = json_decode($session->dates);
foreach($dates->date as $i => $date){
$text .= date("d M, Y", strtotime($date) ) . ' at ' . date("h:iA", strtotime($dates->start[$i]) ) .' - ' . date("h:iA", strtotime($dates->end[$i]) ) . "\n";
}
$text .= "\n" . 'You can use this chat as your self assistance for getting details, download your certificate etc.';
$res = $client->get('https://panel.rapiwha.com/send_message.php', ['query' => ['apikey' => 'Z4NXQUTBGV3P7D7W8OHX', 'number' => '91'.$post['phone'], 'text' => $text], 'timeout' => 10]);
$res = $res->getBody();
return redirect('/registersuccess')->withSuccess('Successfully registered!!');
} else {
return redirect('/register/'.$code)->withError('Some error occured, please try again later');
}
}
public function registersuccess(Request $request) {
$code = $request->session()->get('session_code');
$type = $request->session()->get('session_type');
return view('road.success', ['code' => $code, 'type' => $type]);
}
public function attendance($code, Request $request) {
$session = (object)Session::where('code', $code)->first()->toArray();
$session->dates = json_decode($session->dates);
$response = LambdaRequest::getrequest('ums', 'contact/get_all', ['source'=>'dynamodb', 'search' => json_encode(['session_code' => $code]), 'fields' => json_encode(['session_code', 'present']) ], env('LAMBDA_ACCESS_TOKEN', 'default_value') );
//echo '<pre>'; print_r($response); print_r($session); exit;
return view($session->type.'.attendance', ['session' => $session, 'doctors' => $response->data->items]);
}
public function attendancemark(Request $request) {
$post = $request->input();
$response = LambdaRequest::postrequest('ums', 'contact/update', ['id'=>$post['doctor'], 'present' => $post['present'], 'position' => 'india' ], env('LAMBDA_ACCESS_TOKEN', 'default_value') );
echo '<pre>'; print_r($response); exit;
}
}