286 lines
14 KiB
PHP
286 lines
14 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Requests\LambdaRequest;
|
|
use App\Http\Requests\Creation;
|
|
use DB;
|
|
use Storage;
|
|
use Response;
|
|
use Log;
|
|
use App\Models\User;
|
|
|
|
class LmsController extends LocalController
|
|
{
|
|
public function register($code, Request $request)
|
|
{
|
|
$user = LambdaRequest::getrequest('ums', 'users/get_one', ['id' => $code], env('LAMBDA_ACCESS_TOKEN', 'default_value'));
|
|
//echo '<pre>'; print_r($user); exit;
|
|
$request->session()->put('lms_user', json_encode($user->data->item));
|
|
return view('lms.register');
|
|
}
|
|
|
|
public function postregister(Request $request)
|
|
{
|
|
$post = $request->except('_token');
|
|
$user = json_decode($request->session()->get('lms_user'));
|
|
// echo '<pre>';
|
|
// print_r($post);
|
|
//print_r($user); exit;
|
|
$post['type_of_setup'] = isset($post['type_of_setup']) ? implode(',', $post['type_of_setup']) : [];
|
|
$post['position'] = isset($user->hierarchy_info) && isset($user->hierarchy_info->code) ? $user->hierarchy_info->code : 'india';
|
|
$post['type'] = 'lmsuser';
|
|
$post['user_id'] = $user->id;
|
|
|
|
$search = ['type' => 'lmsuser', 'phone' => $post['phone']];
|
|
$existinguser = LambdaRequest::getrequest('contact', 'contact/get_all', ['start' => 0, 'length' => 99, 'search' => json_encode($search), 'fields' => json_encode(['phone','email','user_info', 'is_verified']) ], env('LAMBDA_ACCESS_TOKEN', 'default_value'));
|
|
|
|
if($existinguser->data->count > 0) {
|
|
$request->session()->put('lms_user_id', $existinguser->data->items[0]->id);
|
|
return redirect('/lmsregistersuccess')->withError('Sorry, User with this phone number already exists. If you have registered with this phone number, please click on verify WhatsApp Number to proceed.');
|
|
// Log::debug(print_r($existinguser, true));
|
|
// $lmsuser = LambdaRequest::getrequest('contact', 'contact/get_one', ['id' => $existinguser->data->items[0]->id ], env('LAMBDA_ACCESS_TOKEN', 'default_value'));
|
|
// Log::debug(print_r($lmsuser, true));
|
|
// return redirect('/lmsregister/' . $user->id)->withError('Sorry, User with this phone number already exists. Please send "hi" to 8142061298 to get the Course details.');
|
|
}
|
|
|
|
$access_token = User::where('user_id', $post['user_id'])->first()->access_token;
|
|
//echo '<pre>'; print_r($post); print_r($access_token); exit;
|
|
$response = LambdaRequest::postrequest('contact', 'contact/create', $post, $access_token);
|
|
//Log::debug(print_r($response, true));
|
|
if ($response->status == 'success') {
|
|
//Session::where('code', $code)->increment('reg_count');
|
|
|
|
DB::table("lms_users")->insert(['user_id' => $post['user_id'],
|
|
'contact_id' => $response->data->item->id,
|
|
'name' => $post['name'],
|
|
'phone' => $post['phone'],
|
|
'alternate_phone' => $post['alternate_phone'],
|
|
'email' => $post['email'],
|
|
'city' => $post['city'],
|
|
'state' => $post['state'],
|
|
'language' => $post['language'],
|
|
'highlight_qualification' => $post['highlight_qualification'],
|
|
'type_of_setup' => $post['type_of_setup'],
|
|
'designation' => $post['designation'],
|
|
'clinic_institute_name' => $post['clinic_institute_name'],
|
|
'date_of_birth' => $post['date_of_birth']
|
|
]);
|
|
|
|
|
|
$params = ['authkey' => '1692179388-6c7f618f-80bd-4668-b26b-8efb1e1d9e4c',
|
|
'source_identifier' => 'lmsuser_registered',
|
|
'source_record_identifier' => 'registration_id_' . $response->data->item->id,
|
|
'user_id' => $user->id,
|
|
'contact_id' => $response->data->item->id,
|
|
'lms_registrations' => "1"
|
|
];
|
|
LambdaRequest::postrequest('metric', 'metric/injest', $params, env('LAMBDA_ACCESS_TOKEN', 'default_value'));
|
|
|
|
$request->session()->put('lms_user_id', $response->data->item->id);
|
|
return redirect('/lmsregistersuccess')->withSuccess('Successfully registered!!');
|
|
} else {
|
|
return redirect('/lmsregister/' . $user->id)->withError('Some error occured, please try again later');
|
|
}
|
|
}
|
|
|
|
public function registersuccess(Request $request)
|
|
{
|
|
$user_id = $request->session()->get('lms_user_id');
|
|
return view('lms.success', ['user_id' => $user_id]);
|
|
}
|
|
|
|
public function allcourse($lms_user_id, Request $request)
|
|
{
|
|
// $time1 = microtime(true);
|
|
// $date1 = strtotime("now");
|
|
// $reqs = [
|
|
// ['type' => 'get', 'service' => 'ums', 'url' => 'contact/get_one', 'params' => ['id' => $lms_user_id] ],
|
|
// ['type' => 'get', 'service' => 'lms', 'url' => 'courses/get_all', 'params' => [] ],
|
|
// ['type' => 'get', 'service' => 'lms', 'url' => 'courses/subscribed', 'params' => ['partition' => 'rapport-crestroad', 'id' => $lms_user_id] ],
|
|
// ];
|
|
// $responses = LambdaRequest::multipleasyncrequest($reqs, 60, env('LAMBDA_ACCESS_TOKEN', 'default_value'));
|
|
|
|
// $time2 = microtime(true);
|
|
// $date2 = strtotime("now");
|
|
// $execution_time = ($time2 - $time1);
|
|
// Log::debug($time1);
|
|
// Log::debug($time2);
|
|
// Log::debug($execution_time);
|
|
// Log::debug($date2-$date1);
|
|
|
|
// $time1 = microtime(true);
|
|
// $date1 = strtotime("now");
|
|
$lmsuser = LambdaRequest::getrequest('contact', 'contact/get_one', ['id' => $lms_user_id], env('LAMBDA_ACCESS_TOKEN', 'default_value'));
|
|
$request->session()->put('lmsuser', $lmsuser->data->item);
|
|
$courses = LambdaRequest::getrequest('lms', 'courses/get_all', ['student_id' => $lms_user_id], env('LAMBDA_ACCESS_TOKEN', 'default_value'));
|
|
|
|
//Log::debug(print_r($courses, true));
|
|
|
|
//$mycourses = LambdaRequest::getrequest('lms', 'courses/subscribed', ['partition' => $lmsuser->data->item->partition, 'id' => $lmsuser->data->item->id], env('LAMBDA_ACCESS_TOKEN', 'default_value'));
|
|
$mycourses = [];
|
|
// $time2 = microtime(true);
|
|
// $date2 = strtotime("now");
|
|
// $execution_time = ($time2 - $time1);
|
|
// Log::debug($time1);
|
|
// Log::debug($time2);
|
|
// Log::debug($execution_time);
|
|
// Log::debug($date2-$date1);
|
|
|
|
//exit;
|
|
|
|
//echo '<pre>'; print_r($courses); exit;
|
|
return view('lms.courses', ['courses' => $courses->data->items, 'mycourses' => [] ]);
|
|
}
|
|
|
|
public function coursesubscribe(Request $request)
|
|
{
|
|
$course_id = $request->input('id');
|
|
$lmsuser = $request->session()->get('lmsuser');
|
|
$courses = LambdaRequest::postrequest('lms', 'courses/subscribe', ['id' => $course_id, 'partition' => $lmsuser->partition, 'user_id' => $lmsuser->id], env('LAMBDA_ACCESS_TOKEN', 'default_value'));
|
|
|
|
$params = ['authkey' => '1692179388-6c7f618f-80bd-4668-b26b-8efb1e1d9e4c',
|
|
'source_identifier' => 'lmsuser_registered',
|
|
'source_record_identifier' => 'course_id_' . $course_id . '-' . $lmsuser->id,
|
|
'user_id' => $lmsuser->user_id,
|
|
'contact_id' => $lmsuser->id,
|
|
'lms_course_start' => "1"
|
|
];
|
|
LambdaRequest::postrequest('metric', 'metric/injest', $params, env('LAMBDA_ACCESS_TOKEN', 'default_value'));
|
|
|
|
|
|
return redirect('/lmslearn?id=' .$course_id);
|
|
//return redirect('/lmsmycourses?type=ongoing')->withSuccess('Successfully registered!!');
|
|
}
|
|
|
|
public function mycourses(Request $request)
|
|
{
|
|
$lmsuser = $request->session()->get('lmsuser');
|
|
$courses = LambdaRequest::getrequest('lms', 'courses/subscribed', ['partition' => $lmsuser->partition, 'id' => $lmsuser->id], env('LAMBDA_ACCESS_TOKEN', 'default_value'));
|
|
return view('lms.mycourses', ['courses' => $courses->data->items]);
|
|
}
|
|
|
|
public function learn(Request $request)
|
|
{
|
|
$lmsuser = $request->session()->get('lmsuser');
|
|
$lmsuser = LambdaRequest::getrequest('contact', 'contact/get_one', ['id' => $lmsuser->id], env('LAMBDA_ACCESS_TOKEN', 'default_value'));
|
|
$lmsuser = $lmsuser->data->item;
|
|
$request->session()->put('lmsuser', $lmsuser);
|
|
|
|
$course_id = $request->input('id', $request->session()->has('current_course_id') ? $request->session()->get('current_course_id') : null);
|
|
if (!isset($course_id)) {
|
|
return redirect('/lmsmycourses?type=ongoing')->withSuccess('Successfully registered!!');
|
|
}
|
|
$request->session()->put('current_course_id', $course_id);
|
|
|
|
$lessons = LambdaRequest::getrequest('lms', 'lessons/list', ['partition' => $lmsuser->partition, 'id' => $course_id], env('LAMBDA_ACCESS_TOKEN', 'default_value'));
|
|
|
|
//echo '<pre>'; print_r($lessons); exit;
|
|
|
|
//$request->session()->put('article_count', $lessons->data->article_count + (isset($lessons->data->quiz_count) ? $lessons->data->quiz_count : 0) );
|
|
|
|
$request->session()->put('article_count', $lessons->data->article_count );
|
|
|
|
//echo '<prE>'; print_r($lessons); exit;
|
|
return view('lms.lesson', ['lessons' => $lessons->data->lessons, 'completed_articles' => isset($lmsuser->completed_articles) ? $lmsuser->completed_articles : [], 'course' => $lessons->data->course]);
|
|
}
|
|
|
|
public function article(Request $request)
|
|
{
|
|
$article_id = $request->input('id', null);
|
|
$type = $request->input('type', null);
|
|
if (!isset($article_id) || !isset($type)) {
|
|
echo 'Some Error occured!!!';
|
|
exit;
|
|
}
|
|
$lmsuser = $request->session()->get('lmsuser');
|
|
if ($type == 'article') {
|
|
$article = LambdaRequest::getrequest('lms', 'articles_bank/get_one', ['id' => $article_id], env('LAMBDA_ACCESS_TOKEN', 'default_value'));
|
|
//echo '<pre>'; print_r($article->data->item); exit;
|
|
return view('lms.article', ['article' => $article->data->item]);
|
|
} elseif ($type == 'quiz') {
|
|
$quiz = LambdaRequest::getrequest('lms', 'lmsquiz/getquizinfo', ['id' => $article_id, 'contact_id' => $lmsuser->id], env('LAMBDA_ACCESS_TOKEN', 'default_value'));
|
|
// echo '<pre>'; print_r($quiz->data->formdata);
|
|
// exit;
|
|
// var_dump($quiz->data->formdata->existing_attempts);
|
|
return view('lms.quiz', ['quiz' => $quiz->data->formdata, 'questions' => $quiz->data->questions]);
|
|
}
|
|
}
|
|
|
|
public function articlemarkcomplete(Request $request)
|
|
{
|
|
$article = $request->input('article', '');
|
|
$lmsuser = $request->session()->get('lmsuser');
|
|
$course_id = $request->session()->get('current_course_id');
|
|
$lmsuser = LambdaRequest::getrequest('contact', 'contact/get_one', ['id' => $lmsuser->id], env('LAMBDA_ACCESS_TOKEN', 'default_value'));
|
|
$lmsuser = $lmsuser->data->item;
|
|
$completed_articles = [];
|
|
if (isset($lmsuser->completed_articles)) {
|
|
if(is_array($lmsuser->completed_articles)) {
|
|
$completed_articles = $lmsuser->completed_articles;
|
|
} else {
|
|
$completed_articles = json_decode($lmsuser->completed_articles);
|
|
}
|
|
}
|
|
$completed_articles[] = $article;
|
|
$completed_articles = array_unique($completed_articles);
|
|
|
|
$article_count = $request->session()->get('article_count');
|
|
$access_token = User::where('user_id', $lmsuser->user_id )->first()->access_token;
|
|
|
|
DB::table("lms_courses_completion")->updateOrInsert(['contact_id'=>$lmsuser->id,'course_id'=>$course_id,'article_id'=>$article],['total_articles' => $article_count]);
|
|
|
|
$lmsuser = LambdaRequest::postrequest('contact', 'contact/update', ['id' => $lmsuser->id, 'completed_articles' => $completed_articles, 'article_count' => $article_count, 'completed_article_count' => count($completed_articles) ], $access_token);
|
|
|
|
// $data = ['contact_id' => $lmsuser->id,
|
|
// 'course_id' => $course_id,
|
|
// 'article_id' => $article,
|
|
// 'total_articles' => $article_count
|
|
// ];
|
|
|
|
|
|
|
|
//Log::debug(print_r($lmsuser, true));
|
|
//$request->session()->put('lmsuser', $lmsuser->data->item);
|
|
return response()->json(['status' => 'success']);
|
|
}
|
|
|
|
public function lmsquizsubmit(Request $request)
|
|
{
|
|
$lmsuser = $request->session()->get('lmsuser');
|
|
$post = $request->except('_token');
|
|
if (isset($lmsuser) && !empty($lmsuser) && $lmsuser->user_id != '') {
|
|
$finfo = LambdaRequest::postrequest('lms', 'lmsquizsubmission/submitquiz', [ 'formdata' => $post, 'username' => $lmsuser->name, 'email' => $lmsuser->email, 'phone' => $lmsuser->phone, 'quiz_id' => $post['quiz_id'], 'contact_id' => $lmsuser->id, 'partition' => 'rapport-crestroad']);
|
|
if ($finfo->status == 'success') {
|
|
return response()->json(['status' => 'success', 'submission' => $finfo->data->submission]);
|
|
} else {
|
|
return response()->json(['status' => 'failure']);
|
|
}
|
|
} else {
|
|
return response()->json(['status' => 'failure']);
|
|
}
|
|
}
|
|
|
|
public function generatecertificate(Request $request)
|
|
{
|
|
$lmsuser = $request->session()->get('lmsuser');
|
|
$course_id = $request->session()->get('current_course_id');
|
|
$course = LambdaRequest::getrequest('lms', 'courses/get_one', ['id' => $course_id, 'partition' => 'rapport-crestroad' ], env('LAMBDA_ACCESS_TOKEN', 'default_value'));
|
|
$course = $course->data->item;
|
|
//echo '<pre>'; print_r($courses); exit;
|
|
$output = Creation::lmscertificate($course, $lmsuser);
|
|
$filename = $output['filename'];
|
|
$folder = 'lmscertificate/'.$course_id.'/';
|
|
|
|
return view('lms.downloadcertificate', ['folder' => $folder, 'filename' => $filename]);
|
|
|
|
|
|
// $headers = array('Content-Type: image/png',);
|
|
// return Response::download($folder . '/' . $filename, 'certificate.png', $headers);
|
|
|
|
|
|
// echo 'sdfsdfsd'; exit;
|
|
}
|
|
}
|