web-mooc/app/Http/Controllers/UsersController.php
2025-11-28 06:56:24 +00:00

858 lines
34 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Application;
use App\Models\Course;
use App\Models\Enrollment;
use App\Models\Instructors;
use App\Models\FileUploader;
use App\Models\Payout;
use App\Models\Permission;
use App\Models\Setting;
use App\Models\Message;
use App\Models\MessageThread;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Log;
class UsersController extends Controller
{
public function admin_index(Request $request)
{
$query = User::where('role', 'admin');
if (isset($_GET['search']) && $_GET['search'] != '') {
$query = $query->where('name', 'LIKE', '%' . $_GET['search'] . '%')
->orWhere('email', 'LIKE', '%' . $_GET['search'] . '%');
}
$page_data['admins'] = $query->paginate(10);
return view('admin.admin.index', $page_data);
}
public function admin_create()
{
return view('admin.admin.create_admin');
}
public function admin_store(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => "required|max:255",
'email' => 'required|email|unique:users',
'password' => "required|min:8",
], [
'name.required' => get_phrase('Name is required'),
'name.string' => get_phrase('Name must be a valid text'),
'name.max' => get_phrase('Name may not be greater than 255 characters'),
'email.required' => get_phrase('Email is required'),
'email.string' => get_phrase('Email must be a valid text'),
'email.email' => get_phrase('Please enter a valid email address'),
'email.unique' => get_phrase('This email is already registered. Please use a different email.'),
'password.required' => get_phrase('Password is required'),
'password.min' => get_phrase('Password must be at least 8 characters'),
]);
if ($validator->fails()) {
$firstError = $validator->errors()->first();
Session::flash('error', $firstError);
return redirect()->back()->withErrors($validator)->withInput();
}
$data['name'] = $request->name;
$data['about'] = $request->about;
$data['phone'] = $request->phone;
$data['address'] = $request->address;
$data['email'] = $request->email;
$data['password'] = Hash::make($request->password);
$data['facebook'] = $request->facebook;
$data['twitter'] = $request->twitter;
$data['website'] = $request->website;
$data['linkedin'] = $request->linkedin;
$data['role'] = 'admin';
$data['status'] = '1';
if (isset($request->photo) && $request->hasFile('photo')) {
$path = "uploads/users/instructor/" . nice_file_name($request->name, $request->photo->extension());
FileUploader::upload($request->photo, $path, 400, null, 200, 200);
$data['photo'] = $path;
}
$done = User::insert($data);
if ($done) {
$admin_id = User::latest('id')->first();
Permission::insert(['admin_id' => $admin_id->id]);
}
Session::flash('success', get_phrase('Admin add successfully'));
return redirect()->route('admin.admins.index');
}
public function admin_edit($id)
{
$page_data['admin'] = User::where('id', $id)->first();
return view('admin.admin.edit_admin', $page_data);
}
public function admin_update(Request $request, $id)
{
$validated = $request->validate([
'name' => 'required|max:255',
'email' => "required|email|unique:users,email,$id",
]);
$data = [];
$data['name'] = $request->name;
$data['about'] = $request->about;
$data['phone'] = $request->phone;
$data['address'] = $request->address;
$data['email'] = $request->email;
$data['facebook'] = $request->facebook;
$data['twitter'] = $request->twitter;
$data['website'] = $request->website;
$data['linkedin'] = $request->linkedin;
if (isset($request->photo) && $request->hasFile('photo')) {
remove_file(User::where('id', $id)->first()->photo);
$path = "uploads/users/instructor/" . nice_file_name($request->name, $request->photo->extension());
FileUploader::upload($request->photo, $path, 400, null, 200, 200);
$data['photo'] = $path;
}
User::where('id', $request->id)->update($data);
Session::flash('success', get_phrase('Admin update successfully'));
return redirect()->route('admin.admins.index');
}
public function admin_delete($id)
{
$threads = MessageThread::where('contact_one', $id)
->orWhere('contact_two', $id)
->pluck('id');
if ($threads->isNotEmpty()) {
Message::whereIn('thread_id', $threads)->delete();
MessageThread::whereIn('id', $threads)->delete();
}
$done = User::where('id', $id)->delete();
if ($done) {
Permission::where('admin_id', $id)->delete();
}
Session::flash('success', get_phrase('Admin delete successfully'));
return redirect()->back();
}
public function admin_permission($user_id)
{
$page_data['admin'] = User::where('id', $user_id)->firstOrNew();
return view('admin.admin.permission', $page_data);
}
public function admin_permission_store(Request $request)
{
$user_id = $request->user_id;
$permission = Permission::where('admin_id', $user_id)->first();
if ($permission) {
$set_permission = json_decode($permission->permissions, true) ?? [];
if (in_array($request->permission, $set_permission)) {
$pos = array_search($request->permission, $set_permission);
array_splice($set_permission, $pos, 1);
} else {
array_push($set_permission, $request->permission);
}
Permission::where('admin_id', $user_id)->update(['permissions' => $set_permission]);
return true;
} else {
$set_per = json_encode([$request->permission]);
Permission::insert(['admin_id' => $user_id, 'permissions' => $set_per]);
return true;
}
}
public function instructor_index()
{
$query = User::where('role', 'instructor');
if (isset($_GET['search']) && $_GET['search'] != '') {
$query = $query->where('name', 'LIKE', '%' . $_GET['search'] . '%')
->orWhere('email', 'LIKE', '%' . $_GET['search'] . '%');
}
$page_data['instructors'] = $query->paginate(10);
return view('admin.instructor.index', $page_data);
}
public function instructor_create()
{
return view('admin.instructor.create_instructor');
}
public function instructor_edit($id = '')
{
$page_data['instructor'] = User::where('users.id', $id)
->leftJoin('instructors', 'users.id', '=', 'instructors.user_id')
->select('users.*', 'instructors.nidn', 'instructors.status', 'instructors.id_sdm', 'instructors.id_sms', 'instructors.id_pt')
->first();
if (!$page_data['instructor']) {
Session::flash('error', get_phrase('Instructor not found'));
return redirect()->route('admin.instructor.index');
}
return view('admin.instructor.edit_instructor', $page_data);
}
public function instructor_store(Request $request, $id = '')
{
$validator = Validator::make($request->all(), [
'name' => "required|max:255",
'email' => 'required|email|unique:users',
'password' => "required|min:8",
'nidn' => "required"
], [
'name.required' => get_phrase('Name is required'),
'name.string' => get_phrase('Name must be a valid text'),
'name.max' => get_phrase('Name may not be greater than 255 characters'),
'email.required' => get_phrase('Email is required'),
'email.string' => get_phrase('Email must be a valid text'),
'email.email' => get_phrase('Please enter a valid email address'),
'email.unique' => get_phrase('This email is already registered. Please use a different email.'),
'password.required' => get_phrase('Password is required'),
'password.min' => get_phrase('Password must be at least 8 characters'),
]);
if ($validator->fails()) {
$firstError = $validator->errors()->first();
Session::flash('error', $firstError);
return redirect()->back()->withErrors($validator)->withInput();
}
if(get_settings('student_email_verification') != 1){
$data['email_verified_at'] = date('Y-m-d H:i:s');
}
$data = [];
$data['name'] = $request->name;
$data['about'] = $request->about;
$data['phone'] = $request->phone;
$data['address'] = $request->address;
$data['email'] = $request->email;
$data['facebook'] = $request->facebook;
$data['twitter'] = $request->twitter;
$data['website'] = $request->website;
$data['linkedin'] = $request->linkedin;
$data['paymentkeys'] = json_encode($request->paymentkeys);
$data['status'] = '1';
$data['password'] = Hash::make($request->password);
$data['role'] = 'instructor';
$data['email_verified_at'] = $request->email_verified == 1 ? now() : null;
if (isset($request->photo) && $request->hasFile('photo')) {
$path = "uploads/users/instructor/" . nice_file_name($request->name, $request->photo->extension());
FileUploader::upload($request->photo, $path, 400, null, 200, 200);
$data['photo'] = $path;
}
// Check if NIDN already exists in Instructors table with status = 1 (active)
$nidn = $request->nidn;
$existingInstructor = Instructors::where('nidn', $nidn)
->where('status', 1)
->first();
if ($existingInstructor) {
Session::flash('error', get_phrase('This NIDN is already registered as an active instructor.'));
return redirect()->back()->withInput();
}
try {
$api_url = "https://sindig.unesa.ac.id/apipddikti/api?nidn={$nidn}&auto=1";
$response = Http::timeout(30)->get($api_url);
$apiResponse = $response->json();
Log::info('API Response for NIDN: ' . $nidn, ['response' => $apiResponse]);
// Extract matched dosen data
$matched_dosen = $apiResponse['matched_dosen'][0];
Log::info('Instructor data to be saved:', $matched_dosen);
if (!isset($apiResponse['ok']) || !isset($apiResponse['matched_dosen']) || count($apiResponse['matched_dosen']) == 0) {
Session::flash('error', get_phrase('NIDN not found in the system. Please check your NIDN.'));
return redirect()->back()->withInput();
}else if (strtolower($matched_dosen['nama']) != strtolower($request->name)) {
Session::flash('error', get_phrase('Name does not match PDDikti records. Please check your name.'));
return redirect()->back()->withInput();
}
$user = User::create($data);
// Prepare instructor data - adjust fields according to your database
$instructor = [
'user_id' => $user->id,
'nidn' => $nidn,
'name' => $matched_dosen['nama'] ?? null,
'id_sdm' => $matched_dosen['id'] ?? null,
'id_sms' => $matched_dosen['nama_prodi'] ?? null,
'id_pt' => $matched_dosen['nama_pt'] ?? null
];
Log::info('Instructor data to be saved:', $instructor);
Instructors::create($instructor);
} catch (\Exception $e) {
Log::error('Error storing NIDN for admin: ' . $e->getMessage());
Session::flash('error', get_phrase('There was an error processing the NIDN. Please try again.'));
return redirect()->back()->withInput();
}
if(get_settings('student_email_verification') == 1) {
$user->sendEmailVerificationNotification();
}
Session::flash('success', get_phrase('Instructor add successfully'));
return redirect()->route('admin.instructor.index');
}
public function instructor_update(Request $request, $id = '')
{
$validated = $request->validate([
'name' => 'required|max:255',
'email' => "required|email|unique:users,email,$id",
]);
$data = [];
$data_instructor = [];
$data['name'] = $request->name;
$data['about'] = $request->about;
$data['phone'] = $request->phone;
$data['address'] = $request->address;
$data['email'] = $request->email;
$data['facebook'] = $request->facebook;
$data['twitter'] = $request->twitter;
$data['website'] = $request->website;
$data['linkedin'] = $request->linkedin;
$data['paymentkeys'] = json_encode($request->paymentkeys);
$data_instructor['nidn'] = $request->nidn;
$data_instructor['status'] = $request->status ?? 0;
$data_instructor['id_sdm'] = $request->id_sdm;
$data_instructor['id_sms'] = $request->id_sms;
$data_instructor['id_pt'] = $request->id_pt;
if (isset($request->photo) && $request->hasFile('photo')) {
remove_file(User::where('id', $id)->first()->photo);
$path = "uploads/users/instructor/" . nice_file_name($request->name, $request->photo->extension());
FileUploader::upload($request->photo, $path, 400, null, 200, 200);
$data['photo'] = $path;
}
User::where('id', $id)->update($data);
Instructors::where('user_id', $id)->update($data_instructor);
Session::flash('success', get_phrase('Instructor update successfully'));
return redirect()->route('admin.instructor.index');
}
public function instructor_delete($id)
{
$threads = MessageThread::where('contact_one', $id)
->orWhere('contact_two', $id)
->pluck('id');
if ($threads->isNotEmpty()) {
Message::whereIn('thread_id', $threads)->delete();
MessageThread::whereIn('id', $threads)->delete();
}
User::where('id', $id)->delete();
Session::flash('success', get_phrase('Instructor delete successfully'));
return redirect()->back();
}
public function instructor_view_course(Request $request)
{
$course = Course::where('user_id', $request->id)->get();
}
public function instructor_payout(Request $request)
{
$start_date = strtotime('first day of this month');
$end_date = strtotime('last day of this month');
$page_data['start_date'] = $start_date;
$page_data['end_date'] = $end_date;
$page_data['instructor_payout_complete'] = Payout::where('status', 1)->where('created_at', '>=', date('Y-m-d H:i:s', $start_date))
->where('created_at', '<=', date('Y-m-d H:i:s', $end_date))->paginate(10);
$page_data['instructor_payout_incomplete'] = Payout::where('status', 0)->where('created_at', '>=', date('Y-m-d H:i:s', $start_date))
->where('created_at', '<=', date('Y-m-d H:i:s', $end_date))->paginate(10);
return view('admin.instructor.payout', $page_data);
}
public function instructor_payout_filter(Request $request)
{
$date = explode('-', $request->eDateRange);
$start_date = strtotime($date[0] . ' 00:00:00');
$end_date = strtotime($date[1] . ' 23:59:59');
$page_data['start_date'] = $start_date;
$page_data['end_date'] = $end_date;
$page_data['instructor_payout_complete'] = Payout::where('status', 1)->where('created_at', '>=', date('Y-m-d H:i:s', $start_date))
->where('created_at', '<=', date('Y-m-d H:i:s', $end_date))->paginate(10);
$page_data['instructor_payout_incomplete'] = Payout::where('status', 0)->paginate(10);
return view('admin.instructor.payout', $page_data);
}
public function instructor_payout_invoice($id = '')
{
if ($id != '') {
$page_data['invoice_info'] = Payout::where('status', 1)->first();
$page_data['invoice_data'] = Payout::where('status', 1)->get();
$page_data['invoice_id'] = $id;
return view('admin.instructor.instructor_invoice', $page_data);
}
}
public function instructor_payment(Request $request)
{
$id = $request->user_id;
$payable_amount = $request->amount;
$start_timestamp = time();
$end_timestamp = time();
$payment_details = [
'items' => [
[
'id' => $id,
'title' => get_phrase('Pay for instructor payout'),
'subtitle' => get_phrase(''),
'price' => $payable_amount,
'discount_price' => $payable_amount,
'discount_percentage' => 0,
],
],
'custom_field' => [
'start_date' => date('Y-m-d H:i:s', $start_timestamp),
'end_date' => date('Y-m-d H:i:s', $end_timestamp),
'user_id' => auth()->user()->id,
'payout_id' => $request->payout_id,
],
'success_method' => [
'model_name' => 'InstructorPayment',
'function_name' => 'instructor_payment',
],
'tax' => 0,
'coupon' => null,
'payable_amount' => $payable_amount,
'cancel_url' => route('admin.instructor.payout'),
'success_url' => route('payment.success'),
];
session(['payment_details' => $payment_details]);
return redirect()->route('payment');
}
public function instructor_setting()
{
$page_data['allow_instructor'] = Setting::where('type', 'allow_instructor')->first();
$page_data['application_note'] = Setting::where('type', 'instructor_application_note')->first();
$page_data['instructor_revenue'] = Setting::where('type', 'instructor_revenue')->first();
return view('admin.instructor.instructor_setting', $page_data);
}
public function instructor_setting_store(Request $request)
{
if ($request->first == 'item_1') {
$key_found = Setting::where('type', 'instructor_application_note')->exists();
if ($key_found) {
$data['description'] = $request->instructor_application_note;
Setting::where('type', 'instructor_application_note')->update($data);
} else {
$data['type'] = 'instructor_application_note';
$data['description'] = $request->instructor_application_note;
Setting::insert($data);
}
$key_founds = Setting::where('type', 'allow_instructor')->exists();
if ($key_founds) {
$data['description'] = $request->allow_instructor;
Setting::where('type', 'allow_instructor')->update($data);
} else {
$data['type'] = 'allow_instructor';
$data['description'] = $request->allow_instructor;
Setting::insert($data);
}
}
if ($request->second == 'item_2') {
$key_found = Setting::where('type', 'instructor_revenue')->exists();
if ($key_found) {
$data['description'] = $request->instructor_revenue;
Setting::where('type', 'instructor_revenue')->update($data);
} else {
$data['type'] = 'instructor_revenue';
$data['description'] = $request->instructor_revenue;
Setting::insert($data);
}
}
Session::flash('success', get_phrase('Instructor setting updated'));
return redirect()->back();
}
public function instructor_application()
{
return view('admin.instructor.application');
}
public function instructor_application_approve($id)
{
$application = Application::find($id);
if (!$application) {
Session::flash('error', get_phrase('Application not found'));
return redirect()->back();
}
try {
DB::beginTransaction();
// Update application status
$application->status = 1;
$application->save();
$user_id = $application->user_id;
// Get the user instance
$user = User::find($user_id);
if (!$user) {
Session::flash('error', get_phrase('User not found'));
return redirect()->back();
}
// Update user role to instructor
$user->role = 'instructor';
$user->save();
// Update instructor status to 1 (active)
$instructor = Instructors::where('user_id', $user_id)->first();
if (!$instructor) {
// Handle case where instructor record doesn't exist
Session::flash('error', get_phrase('Instructor record not found'));
return redirect()->back();
}
$instructor->status = 1;
$instructor->save();
// Send approval notification email
$user->notify(new \App\Notifications\InstructorApprovalNotification($application));
DB::commit();
Session::flash('success', get_phrase('Application approved successfully'));
} catch (\Exception $e) {
DB::rollBack();
Log::error('Application approval error:', ['error' => $e->getMessage()]);
Session::flash('error', get_phrase('Failed to approve application'));
}
return redirect()->back();
}
public function instructor_application_delete($id)
{
Application::where('id', $id)->delete();
Session::flash('success', get_phrase('Application delete successfully'));
return redirect()->back();
}
public function instructor_application_download($id)
{
$path = Application::where('id', $id)->first();
if (file_exists(public_path($path->document))) {
return response()->download(public_path($path->document));
} else {
Session::flash('error', get_phrase('File does not exists'));
return redirect()->back();
}
}
public function revokeAccess($id)
{
$user = User::findOrFail($id);
if ($user->role === 'instructor') {
$user->role = 'student';
$user->save();
Session::flash('success', get_phrase('Instructor has been switched to Student successfully.'));
} else {
Session::flash('error', get_phrase('This user is not an instructor.'));
}
return redirect()->back();
}
public function student_index()
{
$query = User::where('role', 'student');
if (isset($_GET['search']) && $_GET['search'] != '') {
$query = $query->where('name', 'LIKE', '%' . $_GET['search'] . '%')
->orWhere('email', 'LIKE', '%' . $_GET['search'] . '%');
}
$page_data['students'] = $query->paginate(10);
return view('admin.student.index', $page_data);
}
public function student_create()
{
return view('admin.student.create_student');
}
public function student_edit($id = '')
{
$page_data['student'] = User::where('id', $id)->first();
return view('admin.student.edit_student', $page_data);
}
public function student_store(Request $request, $id = '')
{
$validator = Validator::make($request->all(), [
'name' => "required|max:255",
'email' => 'required|email|unique:users',
'password' => "required|min:8",
], [
'name.required' => get_phrase('Name is required'),
'name.string' => get_phrase('Name must be a valid text'),
'name.max' => get_phrase('Name may not be greater than 255 characters'),
'email.required' => get_phrase('Email is required'),
'email.string' => get_phrase('Email must be a valid text'),
'email.email' => get_phrase('Please enter a valid email address'),
'email.unique' => get_phrase('This email is already registered. Please use a different email.'),
'password.required' => get_phrase('Password is required'),
'password.min' => get_phrase('Password must be at least 8 characters'),
]);
if ($validator->fails()) {
$firstError = $validator->errors()->first();
Session::flash('error', $firstError);
return redirect()->back()->withErrors($validator)->withInput();
}
if(get_settings('student_email_verification') != 1){
$data['email_verified_at'] = date('Y-m-d H:i:s');
}
$data['name'] = $request->name;
$data['about'] = $request->about;
$data['phone'] = $request->phone;
$data['address'] = $request->address;
$data['email'] = $request->email;
$data['facebook'] = $request->facebook;
$data['twitter'] = $request->twitter;
$data['website'] = $request->website;
$data['linkedin'] = $request->linkedin;
$data['paymentkeys'] = json_encode($request->paymentkeys);
$data['status'] = '1';
$data['password'] = Hash::make($request->password);
$data['role'] = 'student';
$data['email_verified_at'] = $request->email_verified == 1 ? now() : null;
if (isset($request->photo) && $request->hasFile('photo')) {
$path = "uploads/users/student/" . nice_file_name($request->name, $request->photo->extension());
FileUploader::upload($request->photo, $path, 400, null, 200, 200);
$data['photo'] = $path;
}
$user = User::create($data);
if(get_settings('student_email_verification') == 1) {
$user->sendEmailVerificationNotification();
}
Session::flash('success', get_phrase('Student add successfully'));
return redirect()->route('admin.student.index');
}
public function student_update(Request $request, $id = '')
{
$validated = $request->validate([
'name' => 'required|max:255',
'email' => "required|email|unique:users,email,$id",
]);
$data['name'] = $request->name;
$data['about'] = $request->about;
$data['phone'] = $request->phone;
$data['address'] = $request->address;
$data['email'] = $request->email;
$data['facebook'] = $request->facebook;
$data['twitter'] = $request->twitter;
$data['website'] = $request->website;
$data['linkedin'] = $request->linkedin;
$data['paymentkeys'] = json_encode($request->paymentkeys);
if (isset($request->photo) && $request->hasFile('photo')) {
remove_file(User::where('id', $id)->first()->photo);
$path = "uploads/users/student/" . nice_file_name($request->name, $request->photo->extension());
FileUploader::upload($request->photo, $path, 400, null, 200, 200);
$data['photo'] = $path;
}
User::where('id', $id)->update($data);
Session::flash('success', get_phrase('Student update successfully'));
return redirect()->route('admin.student.index');
}
public function student_delete($id)
{
$threads = MessageThread::where('contact_one', $id)
->orWhere('contact_two', $id)
->pluck('id');
if ($threads->isNotEmpty()) {
Message::whereIn('thread_id', $threads)->delete();
MessageThread::whereIn('id', $threads)->delete();
}
$query = User::where('id', $id);
remove_file($query->first()->photo);
$query->delete();
return redirect(route('admin.student.index'))->with('success', get_phrase('User deleted successfully'));
}
public function student_enrol()
{
return view('admin.enroll.course_enrollment');
}
public function student_get(Request $request)
{
$user = User::where('role', 'student')->where('name', 'LIKE', '%' . $request->searchVal . '%')->get();
foreach ($user as $row) {
$response[] = ['id' => $row->id, 'text' => $row->name];
}
return json_encode($response);
}
public function student_post(Request $request)
{
for ($i = 0; $i < count($request->user_id); $i++) {
for ($j = 0; $j < count($request->course_id); $j++) {
$data['user_id'] = $request->user_id[$i];
$data['course_id'] = $request->course_id[$j];
$data['entry_date'] = time();
$course_details = $course_details = get_course_info($request->course_id[$j]);
if ($course_details->expiry_period > 0) {
$days = $course_details->expiry_period * 30;
$data['expiry_date'] = strtotime("+" . $days . " days");
} else {
$data['expiry_date'] = null;
}
$user = Enrollment::where('user_id', $request->user_id[$i])->where('course_id', $request->course_id[$j])->exists();
if (!$user) {
Enrollment::insert($data);
}
}
}
Session::flash('success', get_phrase('Student add successfully'));
return redirect()->route('admin.enroll.history');
}
public function enroll_history(Request $request)
{
if ($request->eDateRange) {
$date = explode('-', $request->eDateRange);
$start_date = strtotime($date[0] . ' 00:00:00');
$end_date = strtotime($date[1] . ' 23:59:59');
$page_data['start_date'] = $start_date;
$page_data['end_date'] = $end_date;
$page_data['enroll_history'] = Enrollment::where('entry_date', '>=', $start_date)
->where('entry_date', '<=', $end_date)
->paginate(10)->appends($request->query());
} else {
$start_date = strtotime('first day of this month ');
$end_date = strtotime('last day of this month');
$page_data['start_date'] = $start_date;
$page_data['end_date'] = $end_date;
$page_data['enroll_history'] = Enrollment::where('entry_date', '>=', $start_date)
->where('entry_date', '<=', $end_date)->paginate(10);
}
return view('admin.enroll.enroll_history', $page_data);
}
public function enroll_history_delete($id)
{
Enrollment::where('id', $id)->delete();
Session::flash('success', get_phrase('Enroll delete successfully'));
return redirect()->back();
}
public function manage_profile()
{
return view('admin.profile.index');
}
public function manage_profile_update(Request $request)
{
if ($request->type == 'general') {
$profile['name'] = $request->name;
$profile['facebook'] = $request->facebook;
$profile['linkedin'] = $request->linkedin;
$profile['twitter'] = $request->twitter;
$profile['about'] = $request->about;
$profile['skills'] = $request->skills;
$profile['biography'] = $request->biography;
if ($request->photo) {
if (isset($request->photo) && $request->photo != '') {
$profile['photo'] = "uploads/users/admin/" . nice_file_name($request->title, $request->photo->extension());
FileUploader::upload($request->photo, $profile['photo'], 400, null, 200, 200);
}
}
User::where('id', auth()->user()->id)->update($profile);
} else {
$old_pass_check = Auth::attempt(['email' => auth()->user()->email, 'password' => $request->current_password]);
if (!$old_pass_check) {
Session::flash('error', get_phrase('Current password wrong.'));
return redirect()->back();
}
if ($request->new_password != $request->confirm_password) {
Session::flash('error', get_phrase('Confirm password not same'));
return redirect()->back();
}
$password = Hash::make($request->new_password);
User::where('id', auth()->user()->id)->update(['password' => $password]);
}
Session::flash('success', get_phrase('Your changes has been saved.'));
return redirect()->back();
}
}