├── .editorconfig ├── .env.example ├── .gitattributes ├── .gitignore ├── app ├── Console │ └── Kernel.php ├── Exceptions │ └── Handler.php ├── Http │ ├── Controllers │ │ ├── AppBaseController.php │ │ ├── Auth │ │ │ ├── ForgotPasswordController.php │ │ │ ├── GoogleController.php │ │ │ ├── LoginController.php │ │ │ ├── RegisterController.php │ │ │ ├── ResetPasswordController.php │ │ │ └── VerificationController.php │ │ ├── CategoryController.php │ │ ├── CommentController.php │ │ ├── Controller.php │ │ ├── CouponController.php │ │ ├── CourseController.php │ │ ├── CourseUserController.php │ │ ├── HomeController.php │ │ ├── ItemController.php │ │ ├── PaymentController.php │ │ ├── RoleController.php │ │ ├── UserController.php │ │ └── ViewController.php │ ├── Kernel.php │ ├── Middleware │ │ ├── Admin.php │ │ ├── Authenticate.php │ │ ├── CheckForMaintenanceMode.php │ │ ├── EncryptCookies.php │ │ ├── Instructor.php │ │ ├── Moderator.php │ │ ├── RedirectIfAuthenticated.php │ │ ├── Student.php │ │ ├── TrimStrings.php │ │ ├── TrustProxies.php │ │ └── VerifyCsrfToken.php │ └── Requests │ │ ├── CreateCategoryRequest.php │ │ ├── CreateCommentRequest.php │ │ ├── CreateCouponRequest.php │ │ ├── CreateCourseRequest.php │ │ ├── CreateCourseUserRequest.php │ │ ├── CreateItemRequest.php │ │ ├── CreatePaymentRequest.php │ │ ├── CreateRoleRequest.php │ │ ├── CreateUserRequest.php │ │ ├── CreateViewRequest.php │ │ ├── UpdateCategoryRequest.php │ │ ├── UpdateCommentRequest.php │ │ ├── UpdateCouponRequest.php │ │ ├── UpdateCourseRequest.php │ │ ├── UpdateCourseUserRequest.php │ │ ├── UpdateItemRequest.php │ │ ├── UpdatePaymentRequest.php │ │ ├── UpdateRoleRequest.php │ │ ├── UpdateUserRequest.php │ │ └── UpdateViewRequest.php ├── Mail │ ├── CourseLaunched.php │ ├── CourseUpdated.php │ ├── PaymentConfirmed.php │ ├── PaymentSubmitted.php │ ├── PaymentSubmittedAdmin.php │ └── UserSignup.php ├── Models │ ├── Category.php │ ├── Comment.php │ ├── Coupon.php │ ├── Course.php │ ├── CourseUser.php │ ├── Item.php │ ├── Payment.php │ ├── Role.php │ ├── User.php │ └── View.php ├── Providers │ ├── AppServiceProvider.php │ ├── AuthServiceProvider.php │ ├── BroadcastServiceProvider.php │ ├── EventServiceProvider.php │ └── RouteServiceProvider.php ├── Repositories │ ├── CategoryRepository.php │ ├── CommentRepository.php │ ├── CouponRepository.php │ ├── CourseRepository.php │ ├── CourseUserRepository.php │ ├── ItemRepository.php │ ├── PaymentRepository.php │ ├── RoleRepository.php │ ├── UserRepository.php │ └── ViewRepository.php └── User.php ├── artisan ├── bootstrap ├── app.php └── cache │ └── .gitignore ├── composer.json ├── composer.lock ├── config ├── app.php ├── auth.php ├── broadcasting.php ├── cache.php ├── database.php ├── debug-server.php ├── filesystems.php ├── hashing.php ├── infyom │ └── laravel_generator.php ├── logging.php ├── mail.php ├── paystack.php ├── queue.php ├── repository.php ├── services.php ├── session.php ├── swaggervel.php ├── tinker.php ├── trustedproxy.php ├── view.php └── youtube.php ├── database ├── .gitignore ├── factories │ └── UserFactory.php ├── migrations │ ├── 2014_10_12_000000_create_users_table.php │ ├── 2014_10_12_100000_create_password_resets_table.php │ ├── 2019_02_19_183015_create_courses_table.php │ ├── 2019_02_19_184825_create_categories_table.php │ ├── 2019_02_19_185114_create_comments_table.php │ ├── 2019_02_19_185606_create_items_table.php │ ├── 2019_02_19_185858_create_payments_table.php │ ├── 2019_02_19_190845_create_course_user_table.php │ ├── 2019_02_20_110730_create_views_table.php │ ├── 2019_02_20_142729_create_roles_table.php │ ├── 2019_02_25_105443_create_coupons_table.php │ ├── 2019_03_19_145514_create_sessions_table.php │ ├── 2019_03_27_180428_create_accounts_table.php │ ├── 2019_03_27_180549_create_account_histories_table.php │ └── 2019_03_27_180629_create_refs_table.php └── seeds │ └── DatabaseSeeder.php ├── package.json ├── phpunit.xml ├── public.zip ├── public ├── .htaccess ├── css │ ├── app.css │ ├── custom-style.css │ └── custom.css ├── favicon.ico ├── images │ ├── 15230817_10202441234749872_4546448665061159477_n.jpg │ ├── background.jpg │ ├── background22.jpg │ ├── background4.jpg │ ├── course-image.jpg │ ├── course.jpg │ ├── laptop1.jpg │ ├── logo-coral.svg │ ├── woman_photo1.jpeg │ └── woman_photo2.jpg ├── index.php ├── js │ ├── app.js │ └── nicEdit.js ├── robots.txt ├── svg │ ├── 403.svg │ ├── 404.svg │ ├── 500.svg │ └── 503.svg ├── vendor │ └── swaggervel │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── index.html │ │ ├── oauth2-redirect.html │ │ ├── swagger-ui-bundle.js │ │ ├── swagger-ui-bundle.js.map │ │ ├── swagger-ui-standalone-preset.js │ │ ├── swagger-ui-standalone-preset.js.map │ │ ├── swagger-ui.css │ │ ├── swagger-ui.css.map │ │ ├── swagger-ui.js │ │ └── swagger-ui.js.map └── web.config ├── readme.md ├── resources ├── js │ ├── app.js │ ├── bootstrap.js │ └── components │ │ └── ExampleComponent.vue ├── lang │ └── en │ │ ├── auth.php │ │ ├── pagination.php │ │ ├── passwords.php │ │ └── validation.php ├── sass │ ├── _variables.scss │ └── app.scss └── views │ ├── auth │ ├── emails │ │ └── password.blade.php │ ├── login-element.blade.php │ ├── login.blade.php │ ├── passwords │ │ ├── email.blade.php │ │ └── reset.blade.php │ ├── register-element.blade.php │ ├── register.blade.php │ └── verify.blade.php │ ├── categories │ ├── create.blade.php │ ├── edit.blade.php │ ├── fields.blade.php │ ├── index.blade.php │ ├── show.blade.php │ ├── show_fields.blade.php │ └── table.blade.php │ ├── comments │ ├── create.blade.php │ ├── edit.blade.php │ ├── fields.blade.php │ ├── index.blade.php │ ├── show.blade.php │ ├── show_fields.blade.php │ ├── table-admin.blade.php │ └── table.blade.php │ ├── coupons │ ├── create.blade.php │ ├── edit.blade.php │ ├── fields.blade.php │ ├── index.blade.php │ ├── show.blade.php │ ├── show_fields.blade.php │ └── table.blade.php │ ├── course_users │ ├── create.blade.php │ ├── edit.blade.php │ ├── fields.blade.php │ ├── index.blade.php │ ├── show.blade.php │ ├── show_fields.blade.php │ ├── table.blade.1.php │ └── table.blade.php │ ├── courses │ ├── bank-payment.blade.php │ ├── contents.blade.php │ ├── create.blade.php │ ├── edit.blade.php │ ├── fields.blade.php │ ├── header.blade.php │ ├── index.blade.php │ ├── menu.blade.php │ ├── payment-options.blade.php │ ├── payments.blade.php │ ├── paystack.blade.php │ ├── show-item.blade.php │ ├── show.blade.php │ ├── show_fields.blade.php │ ├── subscribers.blade.php │ ├── table.blade.1.php │ └── table.blade.php │ ├── emails │ ├── courses │ │ ├── course_update.blade.php │ │ └── new_course.blade.php │ ├── payments │ │ ├── payment_approved.blade.php │ │ ├── payment_submitted.blade.php │ │ └── payment_submitted_admin.blade.php │ └── users │ │ └── signup.blade.php │ ├── errors │ ├── 401.blade.php │ ├── 403.blade.php │ ├── 404.blade.php │ ├── 419.blade.php │ ├── 429.blade.php │ ├── 500.blade.php │ ├── 503.blade.php │ ├── illustrated-layout.blade.php │ └── layout.blade.php │ ├── home.blade.php │ ├── items │ ├── create.blade.php │ ├── edit.blade.php │ ├── fields.blade.php │ ├── index.blade.php │ ├── show.blade.php │ ├── show_fields.blade.php │ └── table.blade.php │ ├── layouts │ ├── app.blade.php │ ├── datatables_css.blade.php │ ├── datatables_js.blade.php │ ├── menu.blade.php │ └── sidebar.blade.php │ ├── payments │ ├── create.blade.php │ ├── edit.blade.php │ ├── fields.blade.php │ ├── index.blade.php │ ├── show.blade.php │ ├── show_fields.blade.php │ └── table.blade.php │ ├── privacy_policy.blade.php │ ├── refunds.blade.php │ ├── roles │ ├── create.blade.php │ ├── edit.blade.php │ ├── fields.blade.php │ ├── index.blade.php │ ├── show.blade.php │ ├── show_fields.blade.php │ └── table.blade.php │ ├── terms_of_service.blade.php │ ├── users │ ├── create.blade.php │ ├── edit.blade.php │ ├── fields.blade.php │ ├── index.blade.php │ ├── show.blade.php │ ├── show_fields.blade.php │ ├── table-user.blade.php │ └── table.blade.php │ ├── vendor │ ├── flash │ │ ├── message.blade.php │ │ └── modal.blade.php │ ├── mail │ │ ├── html │ │ │ ├── button.blade.php │ │ │ ├── footer.blade.php │ │ │ ├── header.blade.php │ │ │ ├── layout.blade.php │ │ │ ├── message.blade.php │ │ │ ├── panel.blade.php │ │ │ ├── promotion.blade.php │ │ │ ├── promotion │ │ │ │ └── button.blade.php │ │ │ ├── subcopy.blade.php │ │ │ ├── table.blade.php │ │ │ └── themes │ │ │ │ └── default.css │ │ └── markdown │ │ │ ├── button.blade.php │ │ │ ├── footer.blade.php │ │ │ ├── header.blade.php │ │ │ ├── layout.blade.php │ │ │ ├── message.blade.php │ │ │ ├── panel.blade.php │ │ │ ├── promotion.blade.php │ │ │ ├── promotion │ │ │ └── button.blade.php │ │ │ ├── subcopy.blade.php │ │ │ └── table.blade.php │ ├── notifications │ │ └── email.blade.php │ ├── pagination │ │ ├── bootstrap-4.blade.php │ │ ├── default.blade.php │ │ ├── semantic-ui.blade.php │ │ ├── simple-bootstrap-4.blade.php │ │ └── simple-default.blade.php │ └── swaggervel │ │ ├── .gitkeep │ │ └── index.blade.php │ ├── views │ ├── create.blade.php │ ├── edit.blade.php │ ├── fields.blade.php │ ├── index.blade.php │ ├── show.blade.php │ ├── show_fields.blade.php │ └── table.blade.php │ ├── welcome.blade.php │ └── welcome1.blade.php ├── routes ├── api.php ├── channels.php ├── console.php └── web.php ├── server.php ├── storage ├── app │ ├── .gitignore │ └── public │ │ └── .gitignore ├── framework │ ├── .gitignore │ ├── cache │ │ └── .gitignore │ ├── sessions │ │ └── .gitignore │ ├── testing │ │ └── .gitignore │ └── views │ │ └── .gitignore └── logs │ └── .gitignore ├── tests ├── ApiTestTrait.php ├── CreatesApplication.php ├── Feature │ └── ExampleTest.php ├── TestCase.php └── Unit │ └── ExampleTest.php └── webpack.mix.js /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | insert_final_newline = true 7 | indent_style = space 8 | indent_size = 4 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | 14 | [*.yml] 15 | indent_size = 2 16 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | APP_NAME=Laravel 2 | APP_ENV=local 3 | APP_KEY= 4 | APP_DEBUG=true 5 | APP_URL=http://localhost 6 | 7 | LOG_CHANNEL=stack 8 | 9 | DB_CONNECTION=mysql 10 | DB_HOST=127.0.0.1 11 | DB_PORT=3306 12 | DB_DATABASE=homestead 13 | DB_USERNAME=homestead 14 | DB_PASSWORD=secret 15 | 16 | BROADCAST_DRIVER=log 17 | CACHE_DRIVER=file 18 | QUEUE_CONNECTION=sync 19 | SESSION_DRIVER=file 20 | SESSION_LIFETIME=120 21 | 22 | REDIS_HOST=127.0.0.1 23 | REDIS_PASSWORD=null 24 | REDIS_PORT=6379 25 | 26 | MAIL_DRIVER=smtp 27 | MAIL_HOST=smtp.mailtrap.io 28 | MAIL_PORT=2525 29 | MAIL_USERNAME=null 30 | MAIL_PASSWORD=null 31 | MAIL_ENCRYPTION=null 32 | 33 | PUSHER_APP_ID= 34 | PUSHER_APP_KEY= 35 | PUSHER_APP_SECRET= 36 | PUSHER_APP_CLUSTER=mt1 37 | 38 | MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" 39 | MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" 40 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | *.css linguist-vendored 3 | *.scss linguist-vendored 4 | *.js linguist-vendored 5 | CHANGELOG.md export-ignore 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /public/hot 3 | /public/storage 4 | /storage/*.key 5 | /vendor 6 | .env 7 | .phpunit.result.cache 8 | Homestead.json 9 | Homestead.yaml 10 | npm-debug.log 11 | yarn-error.log 12 | -------------------------------------------------------------------------------- /app/Console/Kernel.php: -------------------------------------------------------------------------------- 1 | command('inspire') 28 | // ->hourly(); 29 | } 30 | 31 | /** 32 | * Register the commands for the application. 33 | * 34 | * @return void 35 | */ 36 | protected function commands() 37 | { 38 | $this->load(__DIR__.'/Commands'); 39 | 40 | require base_path('routes/console.php'); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /app/Exceptions/Handler.php: -------------------------------------------------------------------------------- 1 | middleware('guest'); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/Http/Controllers/Auth/ResetPasswordController.php: -------------------------------------------------------------------------------- 1 | middleware('guest'); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/Http/Controllers/Auth/VerificationController.php: -------------------------------------------------------------------------------- 1 | middleware('auth'); 38 | $this->middleware('signed')->only('verify'); 39 | $this->middleware('throttle:6,1')->only('verify', 'resend'); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /app/Http/Controllers/Controller.php: -------------------------------------------------------------------------------- 1 | middleware('auth'); 28 | return view('home'); 29 | } 30 | 31 | public function welcome(){ 32 | 33 | if(Auth::check()){ 34 | return redirect()->route('courses.index'); 35 | } 36 | $categories = Category::all(); 37 | $courses = Course::all(); 38 | 39 | return view('welcome')->with('courses',$courses)->with('categories', $categories); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /app/Http/Middleware/Admin.php: -------------------------------------------------------------------------------- 1 | role_id != 1 ){ 22 | Flash::error('Sorry, you need to be an admin to access that page'); 23 | return redirect()->route('courses.index'); 24 | } 25 | 26 | return $next($request); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/Http/Middleware/Authenticate.php: -------------------------------------------------------------------------------- 1 | expectsJson()) { 18 | return route('login'); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/Http/Middleware/CheckForMaintenanceMode.php: -------------------------------------------------------------------------------- 1 | role_id > 3) { 21 | Flash::error('Sorry, you need to be an admin, a mod or an instructor to access that page'); 22 | return redirect()->route('courses.index'); 23 | } 24 | return $next($request); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/Http/Middleware/Moderator.php: -------------------------------------------------------------------------------- 1 | role_id > 2) { 22 | Flash::error('Sorry, you need to be an admin or a mod to access that page'); 23 | return redirect()->route('courses.index'); 24 | } 25 | 26 | return $next($request); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/Http/Middleware/RedirectIfAuthenticated.php: -------------------------------------------------------------------------------- 1 | check()) { 21 | return redirect('/home'); 22 | } 23 | 24 | return $next($request); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/Http/Middleware/Student.php: -------------------------------------------------------------------------------- 1 | role_id != 4) { 19 | Flash::error('Sorry, you need to be a student to access that page'); 20 | return redirect()->route('courses.index'); 21 | } 22 | return $next($request); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/Http/Middleware/TrimStrings.php: -------------------------------------------------------------------------------- 1 | course = $course; 24 | } 25 | 26 | /** 27 | * Build the message. 28 | * 29 | * @return $this 30 | */ 31 | public function build() 32 | { 33 | return $this->view('view.name'); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/Mail/CourseUpdated.php: -------------------------------------------------------------------------------- 1 | course = $course; 25 | } 26 | 27 | /** 28 | * Build the message. 29 | * 30 | * @return $this 31 | */ 32 | public function build() 33 | { 34 | 35 | return $this->view('emails.courses.course_update') 36 | ->subject('Course updated: '. $this->course->title) 37 | ->with('course', $this->course) 38 | ; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/Mail/PaymentConfirmed.php: -------------------------------------------------------------------------------- 1 | payment = $payment; 24 | } 25 | 26 | /** 27 | * Build the message. 28 | * 29 | * @return $this 30 | */ 31 | public function build() 32 | { 33 | 34 | return $this->view('emails.payments.payment_approved') 35 | ->subject('Payment approved, you may now access your course') 36 | ->with('payment', $this->payment); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/Mail/PaymentSubmitted.php: -------------------------------------------------------------------------------- 1 | payment = $payment; 24 | } 25 | 26 | 27 | /** 28 | * Build the message. 29 | * 30 | * @return $this 31 | */ 32 | public function build() 33 | { 34 | return $this->view( 'emails.payments.payment_submitted') 35 | ->subject('We are now reviewing your payment submission') 36 | ->with('payment', $this->payment); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/Mail/PaymentSubmittedAdmin.php: -------------------------------------------------------------------------------- 1 | payment = $payment; 24 | } 25 | 26 | 27 | /** 28 | * Build the message. 29 | * 30 | * @return $this 31 | */ 32 | public function build() 33 | { 34 | return $this->view('emails.payments.payment_submitted_admin') 35 | ->subject('Someone just made payment') 36 | ->with('payment', $this->payment); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/Mail/UserSignup.php: -------------------------------------------------------------------------------- 1 | view('emails.users.signup') 32 | ->subject('Thanks for reporting your payment'); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/Models/Category.php: -------------------------------------------------------------------------------- 1 | 'integer', 43 | 'name' => 'string', 44 | 'description' => 'string', 45 | 'view_count' => 'integer' 46 | ]; 47 | 48 | /** 49 | * Validation rules 50 | * 51 | * @var array 52 | */ 53 | public static $rules = [ 54 | 55 | ]; 56 | 57 | public function courses() 58 | { 59 | return $this->hasMany('App\Models\Course'); 60 | } 61 | 62 | public function payments() 63 | { 64 | return $this->hasMany('App\Models\Payment'); 65 | } 66 | 67 | } 68 | -------------------------------------------------------------------------------- /app/Models/Comment.php: -------------------------------------------------------------------------------- 1 | 'integer', 46 | 'user_id' => 'integer', 47 | 'course_id' => 'integer', 48 | 'category_id' => 'integer', 49 | 'item_id' => 'integer', 50 | 'body' => 'string' 51 | ]; 52 | 53 | /** 54 | * Validation rules 55 | * 56 | * @var array 57 | */ 58 | public static $rules = [ 59 | 60 | ]; 61 | 62 | public function course() 63 | { 64 | return $this->belongsTo('App\Models\Course'); 65 | } 66 | 67 | public function user() 68 | { 69 | return $this->belongsTo('App\Models\User'); 70 | } 71 | public function category() 72 | { 73 | return $this->belongsTo('App\Models\Category'); 74 | } 75 | public function item() 76 | { 77 | return $this->belongsTo('App\Models\Item'); 78 | } 79 | 80 | } 81 | -------------------------------------------------------------------------------- /app/Models/CourseUser.php: -------------------------------------------------------------------------------- 1 | 'integer', 53 | 'user_id' => 'integer', 54 | 'course_id' => 'integer', 55 | 'user_account_id' => 'integer', 56 | 'plan' => 'string', 57 | 'paid_amount' => 'float', 58 | 'status' => 'boolean' 59 | ]; 60 | 61 | /** 62 | * Validation rules 63 | * 64 | * @var array 65 | */ 66 | public static $rules = [ 67 | 68 | ]; 69 | 70 | public function user() 71 | { 72 | return $this->belongsTo('App\Models\User'); 73 | } 74 | 75 | public function course() 76 | { 77 | return $this->belongsTo('App\Models\Course'); 78 | } 79 | 80 | } 81 | -------------------------------------------------------------------------------- /app/Models/Item.php: -------------------------------------------------------------------------------- 1 | 'integer', 50 | 'user_id' => 'integer', 51 | 'course_id' => 'integer', 52 | 'view_count' => 'integer', 53 | 'is_free' => 'tinyint', 54 | 'thumbnail' => 'string', 55 | 'url' => 'string', 56 | 'title' => 'string', 57 | 'description' => 'string', 58 | ]; 59 | 60 | /** 61 | * Validation rules 62 | * 63 | * @var array 64 | */ 65 | public static $rules = [ 66 | 67 | ]; 68 | 69 | public function course() 70 | { 71 | return $this->belongsTo('App\Models\Course'); 72 | } 73 | 74 | public function comments() 75 | { 76 | return $this->hasMany('App\Models\Comment'); 77 | } 78 | 79 | public function views() 80 | { 81 | return $this->hasMany('App\Models\View'); 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /app/Models/Role.php: -------------------------------------------------------------------------------- 1 | 'integer', 39 | 'name' => 'string' 40 | ]; 41 | 42 | /** 43 | * Validation rules 44 | * 45 | * @var array 46 | */ 47 | public static $rules = [ 48 | 49 | ]; 50 | 51 | 52 | } 53 | -------------------------------------------------------------------------------- /app/Models/View.php: -------------------------------------------------------------------------------- 1 | 'integer', 47 | 'user_id' => 'integer', 48 | 'user_account_id' => 'integer', 49 | 'category_id' => 'integer', 50 | 'course_id' => 'integer', 51 | 'item_id' => 'integer' 52 | ]; 53 | 54 | /** 55 | * Validation rules 56 | * 57 | * @var array 58 | */ 59 | public static $rules = [ 60 | 61 | ]; 62 | 63 | public function item() 64 | { 65 | return $this->belongsTo('App\Models\Item'); 66 | } 67 | 68 | } 69 | -------------------------------------------------------------------------------- /app/Providers/AppServiceProvider.php: -------------------------------------------------------------------------------- 1 | 'App\Policies\ModelPolicy', 17 | ]; 18 | 19 | /** 20 | * Register any authentication / authorization services. 21 | * 22 | * @return void 23 | */ 24 | public function boot() 25 | { 26 | $this->registerPolicies(); 27 | 28 | // 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/Providers/BroadcastServiceProvider.php: -------------------------------------------------------------------------------- 1 | [ 19 | SendEmailVerificationNotification::class, 20 | ], 21 | ]; 22 | 23 | /** 24 | * Register any events for your application. 25 | * 26 | * @return void 27 | */ 28 | public function boot() 29 | { 30 | parent::boot(); 31 | 32 | // 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/Providers/RouteServiceProvider.php: -------------------------------------------------------------------------------- 1 | mapApiRoutes(); 39 | 40 | $this->mapWebRoutes(); 41 | 42 | // 43 | } 44 | 45 | /** 46 | * Define the "web" routes for the application. 47 | * 48 | * These routes all receive session state, CSRF protection, etc. 49 | * 50 | * @return void 51 | */ 52 | protected function mapWebRoutes() 53 | { 54 | Route::middleware('web') 55 | ->namespace($this->namespace) 56 | ->group(base_path('routes/web.php')); 57 | } 58 | 59 | /** 60 | * Define the "api" routes for the application. 61 | * 62 | * These routes are typically stateless. 63 | * 64 | * @return void 65 | */ 66 | protected function mapApiRoutes() 67 | { 68 | 69 | Route::prefix('api') 70 | ->middleware('api') 71 | ->as('api.') 72 | ->namespace($this->namespace . "\\API") 73 | ->group(base_path('routes/api.php')); 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /app/Repositories/CategoryRepository.php: -------------------------------------------------------------------------------- 1 | make(Illuminate\Contracts\Console\Kernel::class); 34 | 35 | $status = $kernel->handle( 36 | $input = new Symfony\Component\Console\Input\ArgvInput, 37 | new Symfony\Component\Console\Output\ConsoleOutput 38 | ); 39 | 40 | /* 41 | |-------------------------------------------------------------------------- 42 | | Shutdown The Application 43 | |-------------------------------------------------------------------------- 44 | | 45 | | Once Artisan has finished running, we will fire off the shutdown events 46 | | so that any final work may be done by the application before we shut 47 | | down the process. This is the last thing to happen to the request. 48 | | 49 | */ 50 | 51 | $kernel->terminate($input, $status); 52 | 53 | exit($status); 54 | -------------------------------------------------------------------------------- /bootstrap/app.php: -------------------------------------------------------------------------------- 1 | singleton( 30 | Illuminate\Contracts\Http\Kernel::class, 31 | App\Http\Kernel::class 32 | ); 33 | 34 | $app->singleton( 35 | Illuminate\Contracts\Console\Kernel::class, 36 | App\Console\Kernel::class 37 | ); 38 | 39 | $app->singleton( 40 | Illuminate\Contracts\Debug\ExceptionHandler::class, 41 | App\Exceptions\Handler::class 42 | ); 43 | 44 | /* 45 | |-------------------------------------------------------------------------- 46 | | Return The Application 47 | |-------------------------------------------------------------------------- 48 | | 49 | | This script returns the application instance. The instance is given to 50 | | the calling script so we can separate the building of the instances 51 | | from the actual running of the application and sending responses. 52 | | 53 | */ 54 | 55 | return $app; 56 | -------------------------------------------------------------------------------- /bootstrap/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /config/broadcasting.php: -------------------------------------------------------------------------------- 1 | env('BROADCAST_DRIVER', 'null'), 19 | 20 | /* 21 | |-------------------------------------------------------------------------- 22 | | Broadcast Connections 23 | |-------------------------------------------------------------------------- 24 | | 25 | | Here you may define all of the broadcast connections that will be used 26 | | to broadcast events to other systems or over websockets. Samples of 27 | | each available type of connection are provided inside this array. 28 | | 29 | */ 30 | 31 | 'connections' => [ 32 | 33 | 'pusher' => [ 34 | 'driver' => 'pusher', 35 | 'key' => env('PUSHER_APP_KEY'), 36 | 'secret' => env('PUSHER_APP_SECRET'), 37 | 'app_id' => env('PUSHER_APP_ID'), 38 | 'options' => [ 39 | 'cluster' => env('PUSHER_APP_CLUSTER'), 40 | 'encrypted' => true, 41 | ], 42 | ], 43 | 44 | 'redis' => [ 45 | 'driver' => 'redis', 46 | 'connection' => 'default', 47 | ], 48 | 49 | 'log' => [ 50 | 'driver' => 'log', 51 | ], 52 | 53 | 'null' => [ 54 | 'driver' => 'null', 55 | ], 56 | 57 | ], 58 | 59 | ]; 60 | -------------------------------------------------------------------------------- /config/debug-server.php: -------------------------------------------------------------------------------- 1 | 'tcp://127.0.0.1:9912', 8 | ]; 9 | -------------------------------------------------------------------------------- /config/hashing.php: -------------------------------------------------------------------------------- 1 | 'bcrypt', 19 | 20 | /* 21 | |-------------------------------------------------------------------------- 22 | | Bcrypt Options 23 | |-------------------------------------------------------------------------- 24 | | 25 | | Here you may specify the configuration options that should be used when 26 | | passwords are hashed using the Bcrypt algorithm. This will allow you 27 | | to control the amount of time it takes to hash the given password. 28 | | 29 | */ 30 | 31 | 'bcrypt' => [ 32 | 'rounds' => env('BCRYPT_ROUNDS', 10), 33 | ], 34 | 35 | /* 36 | |-------------------------------------------------------------------------- 37 | | Argon Options 38 | |-------------------------------------------------------------------------- 39 | | 40 | | Here you may specify the configuration options that should be used when 41 | | passwords are hashed using the Argon algorithm. These will allow you 42 | | to control the amount of time it takes to hash the given password. 43 | | 44 | */ 45 | 46 | 'argon' => [ 47 | 'memory' => 1024, 48 | 'threads' => 2, 49 | 'time' => 2, 50 | ], 51 | 52 | ]; 53 | -------------------------------------------------------------------------------- /config/paystack.php: -------------------------------------------------------------------------------- 1 | getenv('PAYSTACK_PUBLIC_KEY'), 10 | 11 | /** 12 | * Secret Key From Paystack Dashboard 13 | * 14 | */ 15 | 'secretKey' => getenv('PAYSTACK_SECRET_KEY'), 16 | 17 | /** 18 | * Paystack Payment URL 19 | * 20 | */ 21 | 'paymentUrl' => getenv('PAYSTACK_PAYMENT_URL'), 22 | 23 | /** 24 | * Optional email address of the merchant 25 | * 26 | */ 27 | 'merchantEmail' => getenv('MERCHANT_EMAIL'), 28 | 29 | ]; -------------------------------------------------------------------------------- /config/tinker.php: -------------------------------------------------------------------------------- 1 | [ 17 | // App\Console\Commands\ExampleCommand::class, 18 | ], 19 | 20 | /* 21 | |-------------------------------------------------------------------------- 22 | | Alias Blacklist 23 | |-------------------------------------------------------------------------- 24 | | 25 | | Typically, Tinker automatically aliases classes as you require them in 26 | | Tinker. However, you may wish to never alias certain classes, which 27 | | you may accomplish by listing the classes in the following array. 28 | | 29 | */ 30 | 31 | 'dont_alias' => [], 32 | 33 | ]; 34 | -------------------------------------------------------------------------------- /config/trustedproxy.php: -------------------------------------------------------------------------------- 1 | null, // [,], '*', ',' 19 | 20 | /* 21 | * To trust one or more specific proxies that connect 22 | * directly to your server, use an array or a string separated by comma of IP addresses: 23 | */ 24 | // 'proxies' => ['192.168.1.1'], 25 | // 'proxies' => '192.168.1.1, 192.168.1.2', 26 | 27 | /* 28 | * Or, to trust all proxies that connect 29 | * directly to your server, use a "*" 30 | */ 31 | // 'proxies' => '*', 32 | 33 | /* 34 | * Which headers to use to detect proxy related data (For, Host, Proto, Port) 35 | * 36 | * Options include: 37 | * 38 | * - Illuminate\Http\Request::HEADER_X_FORWARDED_ALL (use all x-forwarded-* headers to establish trust) 39 | * - Illuminate\Http\Request::HEADER_FORWARDED (use the FORWARDED header to establish trust) 40 | * - Illuminate\Http\Request::HEADER_X_FORWARDED_AWS_ELB (If you are using AWS Elastic Load Balancer) 41 | * 42 | * - 'HEADER_X_FORWARDED_ALL' (use all x-forwarded-* headers to establish trust) 43 | * - 'HEADER_FORWARDED' (use the FORWARDED header to establish trust) 44 | * - 'HEADER_X_FORWARDED_AWS_ELB' (If you are using AWS Elastic Load Balancer) 45 | * 46 | * @link https://symfony.com/doc/current/deployment/proxies.html 47 | */ 48 | 'headers' => Illuminate\Http\Request::HEADER_X_FORWARDED_ALL, 49 | 50 | ]; 51 | -------------------------------------------------------------------------------- /config/view.php: -------------------------------------------------------------------------------- 1 | [ 17 | resource_path('views'), 18 | ], 19 | 20 | /* 21 | |-------------------------------------------------------------------------- 22 | | Compiled View Path 23 | |-------------------------------------------------------------------------- 24 | | 25 | | This option determines where all the compiled Blade templates will be 26 | | stored for your application. Typically, this is within the storage 27 | | directory. However, as usual, you are free to change this value. 28 | | 29 | */ 30 | 31 | 'compiled' => env( 32 | 'VIEW_COMPILED_PATH', 33 | realpath(storage_path('framework/views')) 34 | ), 35 | 36 | ]; 37 | -------------------------------------------------------------------------------- /config/youtube.php: -------------------------------------------------------------------------------- 1 | env('YOUTUBE_API_KEY', 'YOUR_API_KEY') 14 | ]; 15 | -------------------------------------------------------------------------------- /database/.gitignore: -------------------------------------------------------------------------------- 1 | *.sqlite 2 | -------------------------------------------------------------------------------- /database/factories/UserFactory.php: -------------------------------------------------------------------------------- 1 | define(App\User::class, function (Faker $faker) { 17 | return [ 18 | 'name' => $faker->name, 19 | 'email' => $faker->unique()->safeEmail, 20 | 'email_verified_at' => now(), 21 | 'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret 22 | 'remember_token' => str_random(10), 23 | ]; 24 | }); 25 | -------------------------------------------------------------------------------- /database/migrations/2014_10_12_000000_create_users_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('name'); 19 | $table->string('email')->unique(); 20 | $table->string('first_name')->nullable(); 21 | $table->string('last_name')->nullable(); 22 | $table->string('phone')->nullable(); 23 | $table->string('paystack_authorization_code')->nullable(); 24 | $table->string('paystack_customer_code')->nullable(); 25 | $table->string('gender')->nullable()->default('male'); 26 | $table->date('date_of_birth')->nullable(); 27 | $table->tinyInteger('is_subscribed')->nullable()->default(0); 28 | $table->timestamp('email_verified_at')->nullable(); 29 | $table->string('password'); 30 | $table->integer('view_count')->default(0); 31 | $table->integer('role_id')->default(4); 32 | $table->rememberToken(); 33 | $table->softDeletes(); 34 | $table->timestamps(); 35 | }); 36 | } 37 | 38 | /** 39 | * Reverse the migrations. 40 | * 41 | * @return void 42 | */ 43 | public function down() 44 | { 45 | Schema::dropIfExists('users'); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /database/migrations/2014_10_12_100000_create_password_resets_table.php: -------------------------------------------------------------------------------- 1 | string('email')->index(); 18 | $table->string('token'); 19 | $table->timestamp('created_at')->nullable(); 20 | }); 21 | } 22 | 23 | /** 24 | * Reverse the migrations. 25 | * 26 | * @return void 27 | */ 28 | public function down() 29 | { 30 | Schema::dropIfExists('password_resets'); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /database/migrations/2019_02_19_184825_create_categories_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('name'); 19 | $table->longText('description')->nullable(); 20 | $table->integer('view_count')->default(0); 21 | $table->softDeletes(); 22 | $table->timestamps(); 23 | }); 24 | } 25 | 26 | /** 27 | * Reverse the migrations. 28 | * 29 | * @return void 30 | */ 31 | public function down() 32 | { 33 | Schema::dropIfExists('categories'); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /database/migrations/2019_02_19_185114_create_comments_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->integer('user_id'); 19 | $table->integer('course_id')->nullable(); 20 | $table->integer('category_id')->nullable(); 21 | $table->integer('item_id')->nullable(); 22 | $table->longText('body'); 23 | $table->softDeletes(); 24 | $table->timestamps(); 25 | }); 26 | } 27 | 28 | /** 29 | * Reverse the migrations. 30 | * 31 | * @return void 32 | */ 33 | public function down() 34 | { 35 | Schema::dropIfExists('comments'); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /database/migrations/2019_02_19_185606_create_items_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->integer('user_id')->nullable(); 19 | $table->integer('course_id'); 20 | $table->tinyInteger('is_free')->nullable()->default(0); 21 | $table->string('thumbnail')->nullable(); 22 | $table->integer('view_count')->default(0); 23 | $table->string('url')->nullable(); 24 | $table->string('title')->nullable(); 25 | $table->longText('description')->nullable(); 26 | $table->softDeletes(); 27 | $table->timestamps(); 28 | }); 29 | } 30 | 31 | /** 32 | * Reverse the migrations. 33 | * 34 | * @return void 35 | */ 36 | public function down() 37 | { 38 | Schema::dropIfExists('items'); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /database/migrations/2019_02_19_185858_create_payments_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->integer('user_id'); 19 | $table->string('name_of_depositor'); 20 | $table->longText('proof_of_payment'); 21 | 22 | $table->string('refund_details')->nullable(); 23 | $table->string('refund_payment_details')->nullable(); 24 | 25 | $table->integer('category_id')->nullable(); 26 | $table->integer('course_id')->nullable(); 27 | $table->double('amount',10,2); 28 | $table->string('status')->default('started_payment'); //started payment, returned from payment site, 29 | $table->string('mode_of_payment')->nullable(); //card, cash, online transfer 30 | $table->string('payment_processor')->nullable(); //paypal, paystack, stripe 31 | $table->softDeletes(); 32 | $table->timestamps(); 33 | }); 34 | } 35 | 36 | /** 37 | * Reverse the migrations. 38 | * 39 | * @return void 40 | */ 41 | public function down() 42 | { 43 | Schema::dropIfExists('payments'); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /database/migrations/2019_02_19_190845_create_course_user_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->integer('user_id'); 19 | $table->integer('course_id')->nullable(); 20 | $table->integer('category_id')->nullable(); 21 | $table->integer('user_account_id')->nullable(); 22 | $table->dateTime('paid_date')->nullable(); 23 | $table->dateTime('expiry_date')->nullable(); 24 | $table->string('plan')->nullable(); //monthly, quarterly, yearly, lifetime 25 | $table->double('paid_amount')->nullable(); 26 | $table->tinyInteger('status')->default(0); //0 : off, 1: on 27 | $table->softDeletes(); 28 | $table->timestamps(); 29 | }); 30 | } 31 | 32 | /** 33 | * Reverse the migrations. 34 | * 35 | * @return void 36 | */ 37 | public function down() 38 | { 39 | Schema::dropIfExists('course_user'); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /database/migrations/2019_02_20_110730_create_views_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->integer('user_id'); 19 | $table->integer('user_account_id')->nullable(); 20 | $table->integer('category_id')->nullable(); 21 | $table->integer('course_id')->nullable(); 22 | $table->integer('item_id')->nullable(); 23 | $table->softDeletes(); 24 | $table->timestamps(); 25 | }); 26 | } 27 | 28 | /** 29 | * Reverse the migrations. 30 | * 31 | * @return void 32 | */ 33 | public function down() 34 | { 35 | Schema::dropIfExists('views'); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /database/migrations/2019_02_20_142729_create_roles_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('name'); //Admin:1, moderators:2, instructors:3, students:4 19 | $table->softDeletes(); 20 | $table->timestamps(); 21 | }); 22 | } 23 | 24 | /** 25 | * Reverse the migrations. 26 | * 27 | * @return void 28 | */ 29 | public function down() 30 | { 31 | Schema::dropIfExists('roles'); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /database/migrations/2019_02_25_105443_create_coupons_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->integer('user_id'); 19 | $table->string('student_id'); 20 | $table->integer('course_id')->nullable(); 21 | $table->integer('category_id')->nullable(); 22 | $table->integer('user_account_id')->nullable(); 23 | $table->string('available_on_course_page')->default('no'); //no, yes 24 | $table->string('type')->default('free'); //free, discount 25 | $table->double('price', 8,2); 26 | $table->string('status')->default('on'); //on, off 27 | $table->dateTime('deadline'); //default infinte 28 | $table->float('coundown_timer',3,2)->nullable(); // hours 29 | $table->integer('total_available'); 30 | $table->integer('total_remaining')->nullable(); 31 | $table->timestamps(); 32 | }); 33 | } 34 | 35 | /** 36 | * Reverse the migrations. 37 | * 38 | * @return void 39 | */ 40 | public function down() 41 | { 42 | Schema::dropIfExists('coupons'); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /database/migrations/2019_03_19_145514_create_sessions_table.php: -------------------------------------------------------------------------------- 1 | string('id')->unique(); 18 | $table->unsignedInteger('user_id')->nullable(); 19 | $table->string('ip_address', 45)->nullable(); 20 | $table->text('user_agent')->nullable(); 21 | $table->text('payload'); 22 | $table->integer('last_activity'); 23 | }); 24 | } 25 | 26 | /** 27 | * Reverse the migrations. 28 | * 29 | * @return void 30 | */ 31 | public function down() 32 | { 33 | Schema::dropIfExists('sessions'); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /database/migrations/2019_03_27_180428_create_accounts_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->timestamps(); 19 | }); 20 | } 21 | 22 | /** 23 | * Reverse the migrations. 24 | * 25 | * @return void 26 | */ 27 | public function down() 28 | { 29 | Schema::dropIfExists('accounts'); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /database/migrations/2019_03_27_180549_create_account_histories_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->timestamps(); 19 | }); 20 | } 21 | 22 | /** 23 | * Reverse the migrations. 24 | * 25 | * @return void 26 | */ 27 | public function down() 28 | { 29 | Schema::dropIfExists('account_histories'); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /database/migrations/2019_03_27_180629_create_refs_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->timestamps(); 19 | }); 20 | } 21 | 22 | /** 23 | * Reverse the migrations. 24 | * 25 | * @return void 26 | */ 27 | public function down() 28 | { 29 | Schema::dropIfExists('refs'); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /database/seeds/DatabaseSeeder.php: -------------------------------------------------------------------------------- 1 | call(UsersTableSeeder::class); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "scripts": { 4 | "dev": "npm run development", 5 | "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", 6 | "watch": "npm run development -- --watch", 7 | "watch-poll": "npm run watch -- --watch-poll", 8 | "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", 9 | "prod": "npm run production", 10 | "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" 11 | }, 12 | "devDependencies": { 13 | "axios": "^0.18", 14 | "bootstrap": "^4.0.0", 15 | "cross-env": "^5.1", 16 | "jquery": "^3.2", 17 | "laravel-mix": "^4.0.7", 18 | "lodash": "^4.17.5", 19 | "popper.js": "^1.12", 20 | "resolve-url-loader": "^2.3.1", 21 | "sass": "^1.15.2", 22 | "sass-loader": "^7.1.0", 23 | "vue": "^2.5.17" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 13 | ./tests/Unit 14 | 15 | 16 | 17 | ./tests/Feature 18 | 19 | 20 | 21 | 22 | ./app 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /public.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepartner/laravel-course-learning-management-system/d5460b6087dc157fa9eeb7d724d48dc65c4e7ad7/public.zip -------------------------------------------------------------------------------- /public/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | 3 | Options -MultiViews -Indexes 4 | 5 | 6 | RewriteEngine On 7 | 8 | # Handle Authorization Header 9 | RewriteCond %{HTTP:Authorization} . 10 | RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 11 | 12 | # Redirect Trailing Slashes If Not A Folder... 13 | RewriteCond %{REQUEST_FILENAME} !-d 14 | RewriteCond %{REQUEST_URI} (.+)/$ 15 | RewriteRule ^ %1 [L,R=301] 16 | 17 | # Handle Front Controller... 18 | RewriteCond %{REQUEST_FILENAME} !-d 19 | RewriteCond %{REQUEST_FILENAME} !-f 20 | RewriteRule ^ index.php [L] 21 | 22 | -------------------------------------------------------------------------------- /public/css/custom-style.css: -------------------------------------------------------------------------------- 1 | .big-banner{ 2 | background-image: url('../images/background.jpg'); 3 | background-size: 100%; 4 | background-repeat: no-repeat; 5 | } 6 | 7 | .fresh-content{ 8 | background: linear-gradient(-45deg,#ec5252,#6e1a52); 9 | } -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepartner/laravel-course-learning-management-system/d5460b6087dc157fa9eeb7d724d48dc65c4e7ad7/public/favicon.ico -------------------------------------------------------------------------------- /public/images/15230817_10202441234749872_4546448665061159477_n.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepartner/laravel-course-learning-management-system/d5460b6087dc157fa9eeb7d724d48dc65c4e7ad7/public/images/15230817_10202441234749872_4546448665061159477_n.jpg -------------------------------------------------------------------------------- /public/images/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepartner/laravel-course-learning-management-system/d5460b6087dc157fa9eeb7d724d48dc65c4e7ad7/public/images/background.jpg -------------------------------------------------------------------------------- /public/images/background22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepartner/laravel-course-learning-management-system/d5460b6087dc157fa9eeb7d724d48dc65c4e7ad7/public/images/background22.jpg -------------------------------------------------------------------------------- /public/images/background4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepartner/laravel-course-learning-management-system/d5460b6087dc157fa9eeb7d724d48dc65c4e7ad7/public/images/background4.jpg -------------------------------------------------------------------------------- /public/images/course-image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepartner/laravel-course-learning-management-system/d5460b6087dc157fa9eeb7d724d48dc65c4e7ad7/public/images/course-image.jpg -------------------------------------------------------------------------------- /public/images/course.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepartner/laravel-course-learning-management-system/d5460b6087dc157fa9eeb7d724d48dc65c4e7ad7/public/images/course.jpg -------------------------------------------------------------------------------- /public/images/laptop1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepartner/laravel-course-learning-management-system/d5460b6087dc157fa9eeb7d724d48dc65c4e7ad7/public/images/laptop1.jpg -------------------------------------------------------------------------------- /public/images/woman_photo1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepartner/laravel-course-learning-management-system/d5460b6087dc157fa9eeb7d724d48dc65c4e7ad7/public/images/woman_photo1.jpeg -------------------------------------------------------------------------------- /public/images/woman_photo2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepartner/laravel-course-learning-management-system/d5460b6087dc157fa9eeb7d724d48dc65c4e7ad7/public/images/woman_photo2.jpg -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /public/vendor/swaggervel/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepartner/laravel-course-learning-management-system/d5460b6087dc157fa9eeb7d724d48dc65c4e7ad7/public/vendor/swaggervel/favicon-16x16.png -------------------------------------------------------------------------------- /public/vendor/swaggervel/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepartner/laravel-course-learning-management-system/d5460b6087dc157fa9eeb7d724d48dc65c4e7ad7/public/vendor/swaggervel/favicon-32x32.png -------------------------------------------------------------------------------- /public/vendor/swaggervel/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Swagger UI 7 | 8 | 9 | 10 | 31 | 32 | 33 | 34 |
35 | 36 | 37 | 38 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /public/vendor/swaggervel/swagger-ui.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":[],"names":[],"mappings":"","file":"swagger-ui.css","sourceRoot":""} -------------------------------------------------------------------------------- /public/web.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /resources/js/app.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * First we will load all of this project's JavaScript dependencies which 4 | * includes Vue and other libraries. It is a great starting point when 5 | * building robust, powerful web applications using Vue and Laravel. 6 | */ 7 | 8 | require('./bootstrap'); 9 | 10 | window.Vue = require('vue'); 11 | 12 | /** 13 | * The following block of code may be used to automatically register your 14 | * Vue components. It will recursively scan this directory for the Vue 15 | * components and automatically register them with their "basename". 16 | * 17 | * Eg. ./components/ExampleComponent.vue -> 18 | */ 19 | 20 | // const files = require.context('./', true, /\.vue$/i) 21 | // files.keys().map(key => Vue.component(key.split('/').pop().split('.')[0], files(key).default)) 22 | 23 | Vue.component('example-component', require('./components/ExampleComponent.vue').default); 24 | 25 | /** 26 | * Next, we will create a fresh Vue application instance and attach it to 27 | * the page. Then, you may begin adding components to this application 28 | * or customize the JavaScript scaffolding to fit your unique needs. 29 | */ 30 | 31 | const app = new Vue({ 32 | el: '#app' 33 | }); 34 | -------------------------------------------------------------------------------- /resources/js/bootstrap.js: -------------------------------------------------------------------------------- 1 | 2 | window._ = require('lodash'); 3 | 4 | /** 5 | * We'll load jQuery and the Bootstrap jQuery plugin which provides support 6 | * for JavaScript based Bootstrap features such as modals and tabs. This 7 | * code may be modified to fit the specific needs of your application. 8 | */ 9 | 10 | try { 11 | window.Popper = require('popper.js').default; 12 | window.$ = window.jQuery = require('jquery'); 13 | 14 | require('bootstrap'); 15 | } catch (e) {} 16 | 17 | /** 18 | * We'll load the axios HTTP library which allows us to easily issue requests 19 | * to our Laravel back-end. This library automatically handles sending the 20 | * CSRF token as a header based on the value of the "XSRF" token cookie. 21 | */ 22 | 23 | window.axios = require('axios'); 24 | 25 | window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; 26 | 27 | /** 28 | * Next we will register the CSRF Token as a common header with Axios so that 29 | * all outgoing HTTP requests automatically have it attached. This is just 30 | * a simple convenience so we don't have to attach every token manually. 31 | */ 32 | 33 | let token = document.head.querySelector('meta[name="csrf-token"]'); 34 | 35 | if (token) { 36 | window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content; 37 | } else { 38 | console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token'); 39 | } 40 | 41 | /** 42 | * Echo exposes an expressive API for subscribing to channels and listening 43 | * for events that are broadcast by Laravel. Echo and event broadcasting 44 | * allows your team to easily build robust real-time web applications. 45 | */ 46 | 47 | // import Echo from 'laravel-echo' 48 | 49 | // window.Pusher = require('pusher-js'); 50 | 51 | // window.Echo = new Echo({ 52 | // broadcaster: 'pusher', 53 | // key: process.env.MIX_PUSHER_APP_KEY, 54 | // cluster: process.env.MIX_PUSHER_APP_CLUSTER, 55 | // encrypted: true 56 | // }); 57 | -------------------------------------------------------------------------------- /resources/js/components/ExampleComponent.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 24 | -------------------------------------------------------------------------------- /resources/lang/en/auth.php: -------------------------------------------------------------------------------- 1 | 'These credentials do not match our records.', 17 | 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', 18 | 19 | ]; 20 | -------------------------------------------------------------------------------- /resources/lang/en/pagination.php: -------------------------------------------------------------------------------- 1 | '« Previous', 17 | 'next' => 'Next »', 18 | 19 | ]; 20 | -------------------------------------------------------------------------------- /resources/lang/en/passwords.php: -------------------------------------------------------------------------------- 1 | 'Passwords must be at least six characters and match the confirmation.', 17 | 'reset' => 'Your password has been reset!', 18 | 'sent' => 'We have e-mailed your password reset link!', 19 | 'token' => 'This password reset token is invalid.', 20 | 'user' => "We can't find a user with that e-mail address.", 21 | 22 | ]; 23 | -------------------------------------------------------------------------------- /resources/sass/_variables.scss: -------------------------------------------------------------------------------- 1 | 2 | // Body 3 | $body-bg: #f8fafc; 4 | 5 | // Typography 6 | $font-family-sans-serif: "Nunito", sans-serif; 7 | $font-size-base: 0.9rem; 8 | $line-height-base: 1.6; 9 | 10 | // Colors 11 | $blue: #3490dc; 12 | $indigo: #6574cd; 13 | $purple: #9561e2; 14 | $pink: #f66D9b; 15 | $red: #e3342f; 16 | $orange: #f6993f; 17 | $yellow: #ffed4a; 18 | $green: #38c172; 19 | $teal: #4dc0b5; 20 | $cyan: #6cb2eb; 21 | -------------------------------------------------------------------------------- /resources/sass/app.scss: -------------------------------------------------------------------------------- 1 | 2 | // Fonts 3 | @import url('https://fonts.googleapis.com/css?family=Nunito'); 4 | 5 | // Variables 6 | @import 'variables'; 7 | 8 | // Bootstrap 9 | @import '~bootstrap/scss/bootstrap'; 10 | 11 | .navbar-laravel { 12 | background-color: #fff; 13 | box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04); 14 | } 15 | -------------------------------------------------------------------------------- /resources/views/auth/emails/password.blade.php: -------------------------------------------------------------------------------- 1 | Click here to reset your password: {{ $link }} 2 | -------------------------------------------------------------------------------- /resources/views/auth/verify.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |
6 |
7 |
8 |
{{ __('Verify Your Email Address') }}
9 | 10 |
11 | @if (session('resent')) 12 | 15 | @endif 16 | 17 | {{ __('Before proceeding, please check your email for a verification link.') }} 18 | {{ __('If you did not receive the email') }}, {{ __('click here to request another') }}. 19 |
20 |
21 |
22 |
23 |
24 | @endsection 25 | -------------------------------------------------------------------------------- /resources/views/categories/create.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | Category 7 |

8 |
9 |
10 | @include('adminlte-templates::common.errors') 11 |
12 | 13 |
14 |
15 | {!! Form::open(['route' => 'categories.store']) !!} 16 | 17 | @include('categories.fields') 18 | 19 | {!! Form::close() !!} 20 |
21 |
22 |
23 |
24 | @endsection 25 | -------------------------------------------------------------------------------- /resources/views/categories/edit.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | Category 7 |

8 |
9 |
10 | @include('adminlte-templates::common.errors') 11 |
12 |
13 |
14 | {!! Form::model($category, ['route' => ['categories.update', $category->id], 'method' => 'patch']) !!} 15 | 16 | @include('categories.fields') 17 | 18 | {!! Form::close() !!} 19 |
20 |
21 |
22 |
23 | @endsection -------------------------------------------------------------------------------- /resources/views/categories/fields.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | {!! Form::label('name', 'Name:') !!} 4 | {!! Form::text('name', null, ['class' => 'form-control']) !!} 5 |
6 | 7 | 8 |
9 | {!! Form::label('description', 'Description:') !!} 10 | {!! Form::textarea('description', null, ['class' => 'form-control']) !!} 11 |
12 | 13 | 14 | 15 | 16 |
17 | {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!} 18 | Cancel 19 |
20 | -------------------------------------------------------------------------------- /resources/views/categories/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

Course Categories

6 | @if(Auth::check() AND Auth::user()->role_id < 3) 7 |

8 | Add New 11 |

12 | @endif 13 | 14 |
15 |
16 |
17 | 18 | @include('flash::message') 19 | 20 |
21 |
22 |
23 | @include('categories.table') 24 |
25 |
26 |
27 | 28 |
29 |
30 | @endsection 31 | 32 | -------------------------------------------------------------------------------- /resources/views/categories/show.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | Course categories 7 |

8 |
9 |
10 |
11 |
12 |
15 | @include('categories.show_fields') 16 | 17 |

Courses

18 | @include('courses.table') 19 |
20 |
21 |
22 |
23 | @endsection 24 | -------------------------------------------------------------------------------- /resources/views/categories/show_fields.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | {!! Form::label('view_count', 'Page Views:') !!} {!! $category->view_count !!} 5 | 6 |
7 | 8 | 9 |

{!! $category->name !!}

10 | 11 |
12 |

{!! $category->description !!}

13 |
14 |
15 | 16 | 17 |
18 | 19 |
20 | {!! Form::label('created_at', 'Created At:') !!} 21 |

{!! $category->created_at->format('h:m a - D d M Y') !!}

22 |
23 |
24 | 25 |
26 | {!! Form::label('updated_at', 'Updated At:') !!} 27 |

{!! $category->updated_at->format('h:m a - D d M Y') !!}

28 |
29 | 30 | -------------------------------------------------------------------------------- /resources/views/categories/table.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | @foreach($categories as $category) 18 | 19 | 33 | 34 | 46 | 47 | @endforeach 48 | 49 |
20 |

21 | 22 | {!! $category->name !!} ({!! $category->courses_count !!}) 23 | 24 |

25 | 26 | 27 |
28 | Views: {!! number_format($category->view_count) !!} 29 |
30 |
{!! str_limit($category->description, $limit = 150, $end = '...') !!}
31 | 32 |
35 | @if (Auth::check() AND Auth::user()->role_id < 3) 36 | {!! Form::open(['route' => ['categories.destroy', $category->id], 'method' => 'delete']) !!} 37 |
38 | 39 | {!! Form::button('', ['type' => 'submit', 'class' => 'btn btn-danger btn-xs', 'onclick' => "return confirm('Are you sure?')"]) !!} 40 |
41 | {!! Form::close() !!} 42 | 43 | @endif 44 | 45 |
-------------------------------------------------------------------------------- /resources/views/comments/create.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | Comment 7 |

8 |
9 |
10 | @include('adminlte-templates::common.errors') 11 |
12 | 13 |
14 |
15 | {!! Form::open(['route' => 'comments.store']) !!} 16 | 17 | @include('comments.fields') 18 | 19 | {!! Form::close() !!} 20 |
21 |
22 |
23 |
24 | @endsection 25 | -------------------------------------------------------------------------------- /resources/views/comments/edit.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | Comment 7 |

8 |
9 |
10 | @include('adminlte-templates::common.errors') 11 |
12 |
13 |
14 | {!! Form::model($comment, ['route' => ['comments.update', $comment->id], 'method' => 'patch']) !!} 15 | 16 | @include('comments.fields') 17 | 18 | {!! Form::close() !!} 19 |
20 |
21 |
22 |
23 | @endsection -------------------------------------------------------------------------------- /resources/views/comments/fields.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 | {!! Form::label('body', 'Edit Comment:') !!} 7 | {!! Form::textarea('body', null, ['class' => 'form-control']) !!} 8 |
9 | 10 | 11 |
12 | {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!} 13 |
14 | -------------------------------------------------------------------------------- /resources/views/comments/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

Comments

6 |

7 | Add New 8 |

9 |
10 |
11 |
12 | 13 | @include('flash::message') 14 | 15 |
16 |
17 |
18 | @include('comments.table-admin') 19 |
20 |
21 |
22 | 23 |
24 |
25 | @endsection 26 | 27 | -------------------------------------------------------------------------------- /resources/views/comments/show.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | Comment 7 |

8 |
9 |
10 |
11 |
12 |
13 | @include('comments.show_fields') 14 | Back 15 |
16 |
17 |
18 |
19 | @endsection 20 | -------------------------------------------------------------------------------- /resources/views/comments/show_fields.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | {!! Form::label('id', 'Id:') !!} 4 |

{!! $comment->id !!}

5 |
6 | 7 | 8 |
9 | {!! Form::label('user_id', 'User Id:') !!} 10 |

{!! $comment->user_id !!}

11 |
12 | 13 | 14 |
15 | {!! Form::label('course_id', 'Course Id:') !!} 16 |

{!! $comment->course_id !!}

17 |
18 | 19 | 20 |
21 | {!! Form::label('category_id', 'Category Id:') !!} 22 |

{!! $comment->category_id !!}

23 |
24 | 25 | 26 |
27 | {!! Form::label('body', 'Body:') !!} 28 |

{!! $comment->body !!}

29 |
30 | 31 | 32 |
33 | {!! Form::label('deleted_at', 'Deleted At:') !!} 34 |

{!! $comment->deleted_at !!}

35 |
36 | 37 | 38 |
39 | {!! Form::label('created_at', 'Created At:') !!} 40 |

{!! $comment->created_at !!}

41 |
42 | 43 | 44 |
45 | {!! Form::label('updated_at', 'Updated At:') !!} 46 |

{!! $comment->updated_at !!}

47 |
48 | 49 | -------------------------------------------------------------------------------- /resources/views/comments/table-admin.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | @foreach($comments as $comment) 10 | 11 | 16 | 26 | 27 | @endforeach 28 | 29 |
12 |
13 | {{ $comment->user['name'] }} - 14 | {{ $comment->created_at->format('h:i a - D d M Y') }}
15 | {!! $comment->body !!}
17 | @if(Auth::check() AND (Auth::user()->id == $comment->user_id || Auth::user()->role_id < 3 ) ) 18 | {!! Form::open(['route' => ['comments.destroy', $comment->id], 'method' => 'delete']) !!} 19 |
20 | 21 | {!! Form::button('', ['type' => 'submit', 'class' => 'btn btn-danger btn-xs', 'onclick' => "return confirm('Are you sure?')"]) !!} 22 |
23 | {!! Form::close() !!} 24 | @endif 25 |
-------------------------------------------------------------------------------- /resources/views/coupons/create.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | Coupon 7 |

8 |
9 |
10 | @include('adminlte-templates::common.errors') 11 |
12 | 13 |
14 |
15 | {!! Form::open(['route' => 'coupons.store']) !!} 16 | 17 | @include('coupons.fields') 18 | 19 | {!! Form::close() !!} 20 |
21 |
22 |
23 |
24 | @endsection 25 | -------------------------------------------------------------------------------- /resources/views/coupons/edit.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | Coupon 7 |

8 |
9 |
10 | @include('adminlte-templates::common.errors') 11 |
12 |
13 |
14 | {!! Form::model($coupon, ['route' => ['coupons.update', $coupon->id], 'method' => 'patch']) !!} 15 | 16 | @include('coupons.fields') 17 | 18 | {!! Form::close() !!} 19 |
20 |
21 |
22 |
23 | @endsection -------------------------------------------------------------------------------- /resources/views/coupons/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

Coupons

6 |

7 | Add New 8 |

9 |
10 |
11 |
12 | 13 | @include('flash::message') 14 | 15 |
16 |
17 |
18 | @include('coupons.table') 19 |
20 |
21 |
22 | 23 |
24 |
25 | @endsection 26 | 27 | -------------------------------------------------------------------------------- /resources/views/coupons/show.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | Coupon 7 |

8 |
9 |
10 |
11 |
12 |
13 | @include('coupons.show_fields') 14 | Back 15 |
16 |
17 |
18 |
19 | @endsection 20 | -------------------------------------------------------------------------------- /resources/views/course_users/create.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | Course User 7 |

8 |
9 |
10 | @include('adminlte-templates::common.errors') 11 |
12 | 13 |
14 |
15 | {!! Form::open(['route' => 'courseUsers.store']) !!} 16 | 17 | @include('course_users.fields') 18 | 19 | {!! Form::close() !!} 20 |
21 |
22 |
23 |
24 | @endsection 25 | -------------------------------------------------------------------------------- /resources/views/course_users/edit.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | Course User 7 |

8 |
9 |
10 | @include('adminlte-templates::common.errors') 11 |
12 |
13 |
14 | {!! Form::model($courseUser, ['route' => ['courseUsers.update', $courseUser->id], 'method' => 'patch']) !!} 15 | 16 | @include('course_users.fields') 17 | 18 | {!! Form::close() !!} 19 |
20 |
21 |
22 |
23 | @endsection -------------------------------------------------------------------------------- /resources/views/course_users/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

Subscriptions

6 | 7 | 8 | @if (Auth::user()->role_id < 3) 9 |

10 | Add New 13 |

14 | @endif 15 | 16 |
17 |
18 |
19 | 20 | @include('flash::message') 21 | 22 |
23 |
24 |
25 | @include('course_users.table') 26 |
27 |
28 |
29 | 30 |
31 |
32 | @endsection 33 | 34 | -------------------------------------------------------------------------------- /resources/views/course_users/show.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | Course User 7 |

8 |
9 |
10 |
11 |
12 |
13 | @include('course_users.show_fields') 14 | Back 15 |
16 |
17 |
18 |
19 | @endsection 20 | -------------------------------------------------------------------------------- /resources/views/course_users/table.blade.1.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | @foreach($courseUsers as $courseUser) 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 35 | 36 | @endforeach 37 | 38 |
User IdCourse IdUser Account IdPaid DateExpiry DatePlanPaid AmountStatusAction
{!! $courseUser->user_id !!}{!! $courseUser->course_id !!}{!! $courseUser->user_account_id !!}{!! $courseUser->paid_date !!}{!! $courseUser->expiry_date !!}{!! $courseUser->plan !!}{!! $courseUser->paid_amount !!}{!! $courseUser->status !!} 27 | {!! Form::open(['route' => ['courseUsers.destroy', $courseUser->id], 'method' => 'delete']) !!} 28 |
29 | 30 | 31 | {!! Form::button('', ['type' => 'submit', 'class' => 'btn btn-danger btn-xs', 'onclick' => "return confirm('Are you sure?')"]) !!} 32 |
33 | {!! Form::close() !!} 34 |
-------------------------------------------------------------------------------- /resources/views/courses/contents.blade.php: -------------------------------------------------------------------------------- 1 | @include('items.table') -------------------------------------------------------------------------------- /resources/views/courses/create.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app',['title'=>'Create a course']) 2 | 3 | @section('content') 4 |
5 |

6 | Course 7 |

8 |
9 |
10 | @include('adminlte-templates::common.errors') 11 |
12 | 13 |
14 |
15 | {!! Form::open(['route' => 'courses.store']) !!} 16 | 17 | @include('courses.fields') 18 | 19 | {!! Form::close() !!} 20 |
21 |
22 |
23 |
24 | @endsection 25 | -------------------------------------------------------------------------------- /resources/views/courses/edit.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app',['title'=>'Edit course:'.$course->title]) 2 | 3 | @section('content') 4 |
5 |

6 | Course 7 |

8 |
9 |
10 | @include('adminlte-templates::common.errors') 11 |
12 |
13 |
14 | {!! Form::model($course, ['route' => ['courses.update', $course->id], 'method' => 'patch']) !!} 15 | 16 | @include('courses.fields') 17 | 18 | {!! Form::close() !!} 19 |
20 |
21 |
22 |
23 | @endsection -------------------------------------------------------------------------------- /resources/views/courses/header.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |

{!! $course->title !!}
5 | {!! $course->sub_title !!} 6 |

7 |
8 | -------------------------------------------------------------------------------- /resources/views/courses/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app',['title'=>'All courses']) 2 | 3 | @section('content') 4 |
5 |

Click on any course below to see more details about the course

6 | @if(Auth::check() && Auth::user()->role_id < 4) 7 |

8 | Add New 11 |

12 | @endif 13 |
14 |
15 |
16 | 17 | @include('flash::message') 18 | 19 |
20 |
21 |
22 | @include('courses.table') 23 |
24 |
25 |
26 | 27 |
28 |
29 | @endsection 30 | 31 | -------------------------------------------------------------------------------- /resources/views/courses/payments.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | {!! Form::label('user_id', 'User Id:') !!} 4 | {!! Form::number('user_id', null, ['class' => 'form-control']) !!} 5 |
6 | 7 | 8 |
9 | {!! Form::label('category_id', 'Category Id:') !!} 10 | {!! Form::number('category_id', null, ['class' => 'form-control']) !!} 11 |
12 | 13 | 14 |
15 | {!! Form::label('course_id', 'Course Id:') !!} 16 | {!! Form::number('course_id', null, ['class' => 'form-control']) !!} 17 |
18 | 19 | 20 |
21 | {!! Form::label('amount', 'Amount:') !!} 22 | {!! Form::number('amount', null, ['class' => 'form-control']) !!} 23 |
24 | 25 | 26 |
27 | {!! Form::label('status', 'Status:') !!} 28 | {!! Form::text('status', null, ['class' => 'form-control']) !!} 29 |
30 | 31 | 32 |
33 | {!! Form::label('mode_of_payment', 'Mode Of Payment:') !!} 34 | {!! Form::text('mode_of_payment', null, ['class' => 'form-control']) !!} 35 |
36 | 37 | 38 |
39 | {!! Form::label('payment_processor', 'Payment Processor:') !!} 40 | {!! Form::text('payment_processor', null, ['class' => 'form-control']) !!} 41 |
42 | 43 | 44 |
45 | {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!} 46 | Cancel 47 |
48 | -------------------------------------------------------------------------------- /resources/views/courses/subscribers.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | @foreach($course->users as $user) 15 | 16 | 17 | 24 | 25 | 26 | 39 | 40 | @endforeach 41 | 42 |
NameEmailGenderAmount
{!! $user->name !!} 18 | 19 | {!! $user->email !!} 20 | 21 | 22 | 23 | {!! $user->gender !!}N{!! $user->pivot->paid_amount !!} 27 | @if(Auth::check() AND Auth::user()->role_id < 3 ) 28 | 29 | {!! Form::open(['route' => ['courseUsers.destroy', $user->pivot->id], 'method' => 'delete']) !!} 30 |
31 | 32 | 33 | {!! Form::button('', ['type' => 'submit', 'class' => 'btn btn-danger btn-xs', 'onclick' => "return confirm('Delete this subscription?')"]) !!} 34 |
35 | {!! Form::close() !!} 36 | 37 | @endif 38 |
43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |
-------------------------------------------------------------------------------- /resources/views/emails/courses/course_update.blade.php: -------------------------------------------------------------------------------- 1 |

You are an active student in this course on Braintem.org 2 | It looks like the course has just been updated by the author.
3 | Click the link below to go check out the content that was added.

4 |

NOTE: You may find it difficult to log in if this device is not the device 5 | you used to signup. Just reply this email if you have such problems.

6 | 7 |

8 | You may access your course by visiting the course page at 9 | 10 | {{ $course->title }} 11 |

12 | -------------------------------------------------------------------------------- /resources/views/emails/courses/new_course.blade.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepartner/laravel-course-learning-management-system/d5460b6087dc157fa9eeb7d724d48dc65c4e7ad7/resources/views/emails/courses/new_course.blade.php -------------------------------------------------------------------------------- /resources/views/emails/payments/payment_approved.blade.php: -------------------------------------------------------------------------------- 1 |

Your payment has been approved.

2 | 3 |

4 | You may now access your course by 5 | visiting the course page at 6 | {{ $payment->course['title'] }} 7 |

8 | -------------------------------------------------------------------------------- /resources/views/emails/payments/payment_submitted.blade.php: -------------------------------------------------------------------------------- 1 | Thanks for letting us know about your payment for the course 2 | 3 | {{ $payment->course['title'] }}
4 | We will send you another email once your payment is confirmed.
5 | After payment confirmation you will be able to gain access to the course materials.
6 | 7 |

8 | SPECIAL BONUS: we have provided 82% discount specially for you on ANY other course you can buy from the 9 | site within the next 72 hours. Click here to proceed. 10 |

-------------------------------------------------------------------------------- /resources/views/emails/payments/payment_submitted_admin.blade.php: -------------------------------------------------------------------------------- 1 | Someone just made payment on 2 | {{ $payment->course['title'] }}
3 | Go and approve it. -------------------------------------------------------------------------------- /resources/views/emails/users/signup.blade.php: -------------------------------------------------------------------------------- 1 | Thanks for signing up on Braintem.org 2 | 3 | Do well to always check back for new courses. -------------------------------------------------------------------------------- /resources/views/errors/401.blade.php: -------------------------------------------------------------------------------- 1 | @extends('errors::illustrated-layout') 2 | 3 | @section('code', '401') 4 | @section('title', __('Unauthorized')) 5 | 6 | @section('image') 7 |
8 |
9 | @endsection 10 | 11 | @section('message', __('Sorry, you are not authorized to access this page.')) 12 | -------------------------------------------------------------------------------- /resources/views/errors/403.blade.php: -------------------------------------------------------------------------------- 1 | @extends('errors::illustrated-layout') 2 | 3 | @section('code', '403') 4 | @section('title', __('Forbidden')) 5 | 6 | @section('image') 7 |
8 |
9 | @endsection 10 | 11 | @section('message', __($exception->getMessage() ?: 'Sorry, you are forbidden from accessing this page.')) 12 | -------------------------------------------------------------------------------- /resources/views/errors/404.blade.php: -------------------------------------------------------------------------------- 1 | @extends('errors::illustrated-layout') 2 | 3 | @section('code', '404') 4 | @section('title', __('Page Not Found')) 5 | 6 | @section('image') 7 |
8 |
9 | @endsection 10 | 11 | @section('message', __('Sorry, the page you are looking for could not be found.')) 12 | -------------------------------------------------------------------------------- /resources/views/errors/419.blade.php: -------------------------------------------------------------------------------- 1 | @extends('errors::illustrated-layout') 2 | 3 | @section('code', '419') 4 | @section('title', __('Page Expired')) 5 | 6 | @section('image') 7 |
8 |
9 | @endsection 10 | 11 | @section('message', __('Sorry, your session has expired. Please refresh and try again.')) 12 | -------------------------------------------------------------------------------- /resources/views/errors/429.blade.php: -------------------------------------------------------------------------------- 1 | @extends('errors::illustrated-layout') 2 | 3 | @section('code', '429') 4 | @section('title', __('Too Many Requests')) 5 | 6 | @section('image') 7 |
8 |
9 | @endsection 10 | 11 | @section('message', __('Sorry, you are making too many requests to our servers.')) 12 | -------------------------------------------------------------------------------- /resources/views/errors/500.blade.php: -------------------------------------------------------------------------------- 1 | @extends('errors::illustrated-layout') 2 | 3 | @section('code', '500') 4 | @section('title', __('Error')) 5 | 6 | @section('image') 7 |
8 |
9 | @endsection 10 | 11 | @section('message', __('Whoops, something went wrong on our servers.')) 12 | -------------------------------------------------------------------------------- /resources/views/errors/503.blade.php: -------------------------------------------------------------------------------- 1 | @extends('errors::illustrated-layout') 2 | 3 | @section('code', '503') 4 | @section('title', __('Service Unavailable')) 5 | 6 | @section('image') 7 |
8 |
9 | @endsection 10 | 11 | @section('message', __($exception->getMessage() ?: 'Sorry, we are doing some maintenance. Please check back soon.')) 12 | -------------------------------------------------------------------------------- /resources/views/errors/layout.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | @yield('title') 8 | 9 | 10 | 11 | 12 | 13 | 14 | 47 | 48 | 49 |
50 |
51 |
52 | @yield('message') 53 |
54 |
55 |
56 | 57 | 58 | -------------------------------------------------------------------------------- /resources/views/home.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |
6 | 7 | 8 |
9 |
10 | @endsection 11 | -------------------------------------------------------------------------------- /resources/views/items/create.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 | 6 |
7 |
8 | @include('adminlte-templates::common.errors') 9 |
10 | 11 |
12 |
13 | {!! Form::open(['route' => 'items.store']) !!} 14 | 15 | @include('items.fields') 16 | 17 | {!! Form::close() !!} 18 |
19 |
20 |
21 |
22 | @endsection 23 | -------------------------------------------------------------------------------- /resources/views/items/edit.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 | 6 |
7 |
8 | @include('adminlte-templates::common.errors') 9 |
10 |
11 |
12 | {!! Form::model($item, ['route' => ['items.update', $item->id], 'method' => 'patch']) !!} 13 | 14 | @include('items.fields') 15 | 16 | {!! Form::close() !!} 17 |
18 |
19 |
20 |
21 | @endsection -------------------------------------------------------------------------------- /resources/views/items/fields.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 | 8 | 9 |
10 | 11 | 12 |
13 |
14 |

Add or modify item

15 |
16 |
17 | 18 | 19 |
20 |
21 | {!! Form::label('title', 'Title:') !!} 22 | {!! Form::text('title', null, ['class' => 'form-control','required']) !!} 23 |
24 |
25 | 26 | 27 |
28 |
29 | {!! Form::label('url', 'Url:') !!} 30 | {!! Form::text('url', null, ['class' => 'form-control']) !!} 31 |
32 |
33 |
34 |
35 | 36 | 49 |
50 |
51 | 52 | 53 | 54 |
55 | {!! Form::label('description', 'Description:') !!} 56 | {!! Form::textarea('description', null, ['class' => 'form-control']) !!} 57 |
58 | 59 | 60 |
61 | {!! Form::submit('Submit', ['class' => 'btn btn-primary']) !!} 62 |
63 | -------------------------------------------------------------------------------- /resources/views/items/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

Items

6 |

7 | Add New 8 |

9 |
10 |
11 |
12 | 13 | @include('flash::message') 14 | 15 |
16 |
17 |
18 | @include('items.table') 19 |
20 |
21 |
22 | 23 |
24 |
25 | @endsection 26 | 27 | -------------------------------------------------------------------------------- /resources/views/items/show.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | Course 7 |

8 |
9 |
10 |
11 |
12 |
13 | @include('items.show_fields') 14 | Back 15 |
16 |
17 |
18 |
19 | @endsection 20 | -------------------------------------------------------------------------------- /resources/views/items/show_fields.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | {!! Form::label('id', 'Id:') !!} 4 |

{!! $item->id !!}

5 |
6 | 7 | 8 |
9 | {!! Form::label('user_id', 'User Id:') !!} 10 |

{!! $item->user_id !!}

11 |
12 | 13 | 14 |
15 | {!! Form::label('course_id', 'Course Id:') !!} 16 |

{!! $item->course_id !!}

17 |
18 | 19 | 20 |
21 | {!! Form::label('view_count', 'View Count:') !!} 22 |

{!! $item->view_count !!}

23 |
24 | 25 | 26 |
27 | {!! Form::label('url', 'Url:') !!} 28 |

{!! $item->url !!}

29 |
30 | 31 | 32 |
33 | {!! Form::label('description', 'Description:') !!} 34 |

{!! $item->description !!}

35 |
36 | 37 | 38 |
39 | {!! Form::label('deleted_at', 'Deleted At:') !!} 40 |

{!! $item->deleted_at !!}

41 |
42 | 43 | 44 |
45 | {!! Form::label('created_at', 'Created At:') !!} 46 |

{!! $item->created_at !!}

47 |
48 | 49 | 50 |
51 | {!! Form::label('updated_at', 'Updated At:') !!} 52 |

{!! $item->updated_at !!}

53 |
54 | 55 | -------------------------------------------------------------------------------- /resources/views/layouts/datatables_css.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /resources/views/layouts/datatables_js.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/views/payments/create.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app',['title'=>'Creating payment']) 2 | 3 | @section('content') 4 |
5 |

6 | Payment 7 |

8 |
9 |
10 | @include('adminlte-templates::common.errors') 11 |
12 | 13 |
14 |
15 | {!! Form::open(['route' => 'payments.store']) !!} 16 | 17 | @include('payments.fields') 18 | 19 | {!! Form::close() !!} 20 |
21 |
22 |
23 |
24 | @endsection 25 | -------------------------------------------------------------------------------- /resources/views/payments/edit.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | Payment 7 |

8 |
9 |
10 | @include('adminlte-templates::common.errors') 11 |
12 |
13 |
14 | {!! Form::model($payment, ['route' => ['payments.update', $payment->id], 'method' => 'patch']) !!} 15 | 16 | @include('payments.fields') 17 | 18 | {!! Form::close() !!} 19 |
20 |
21 |
22 |
23 | @endsection -------------------------------------------------------------------------------- /resources/views/payments/fields.blade.php: -------------------------------------------------------------------------------- 1 | @if(isset($payment)) 2 |

3 | {{ $payment->course['title']}}

4 | @endif 5 | 6 |
7 | {!! Form::label('amount', 'Amount:') !!} 8 | {!! Form::number('amount', null, ['class' => 'form-control']) !!} 9 |
10 | 11 | 12 | 13 |
14 | 15 | 21 |
22 | 23 | 24 | 25 | 26 |
27 | 28 | 34 |
35 | 36 | 37 | 38 |
39 | {!! Form::label('payment_processor', 'Payment Processor:') !!} 40 | {!! Form::text('payment_processor', null, ['class' => 'form-control']) !!} 41 |
42 | 43 | 44 |
45 | {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!} 46 | Cancel 47 |
48 | -------------------------------------------------------------------------------- /resources/views/payments/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app',['title'=>'All payments']) 2 | 3 | @section('content') 4 |
5 |

Payments

6 | 7 | @if(Auth::user()->role_id < 3) 8 |

9 | Add New 10 |

11 | @endif 12 |
13 |
14 |
15 | 16 | @include('flash::message') 17 | 18 |
19 |
20 |
21 | @include('payments.table') 22 |
23 |
24 |
25 | 26 |
27 |
28 | @endsection 29 | 30 | -------------------------------------------------------------------------------- /resources/views/payments/show.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app',['title'=>'Payment id: '.$payment->id]) 2 | 3 | @section('content') 4 |
5 |

6 | Payment 7 |

8 |
9 |
10 |
11 |
12 |
13 | @include('payments.show_fields') 14 | Back 15 |
16 |
17 |
18 |
19 | @endsection 20 | -------------------------------------------------------------------------------- /resources/views/payments/show_fields.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | {!! Form::label('id', 'Id:') !!} 4 |

{!! $payment->id !!}

5 |
6 | 7 | 8 |
9 | {!! Form::label('user_id', 'User Id:') !!} 10 |

{!! $payment->user_id !!}

11 |
12 | 13 | 14 |
15 | {!! Form::label('category_id', 'Category Id:') !!} 16 |

{!! $payment->category_id !!}

17 |
18 | 19 | 20 |
21 | {!! Form::label('course_id', 'Course Id:') !!} 22 |

{!! $payment->course_id !!}

23 |
24 | 25 | 26 |
27 | {!! Form::label('amount', 'Amount:') !!} 28 |

{!! $payment->amount !!}

29 |
30 | 31 | 32 |
33 | {!! Form::label('status', 'Status:') !!} 34 |

{!! $payment->status !!}

35 |
36 | 37 | 38 |
39 | {!! Form::label('mode_of_payment', 'Mode Of Payment:') !!} 40 |

{!! $payment->mode_of_payment !!}

41 |
42 | 43 | 44 |
45 | {!! Form::label('payment_processor', 'Payment Processor:') !!} 46 |

{!! $payment->payment_processor !!}

47 |
48 | 49 | 50 |
51 | {!! Form::label('deleted_at', 'Deleted At:') !!} 52 |

{!! $payment->deleted_at !!}

53 |
54 | 55 | 56 |
57 | {!! Form::label('created_at', 'Created At:') !!} 58 |

{!! $payment->created_at !!}

59 |
60 | 61 | 62 |
63 | {!! Form::label('updated_at', 'Updated At:') !!} 64 |

{!! $payment->updated_at !!}

65 |
66 | 67 | -------------------------------------------------------------------------------- /resources/views/refunds.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |
6 | 7 |

Refund Policy

8 |

9 | All sales are final due to the nature of the product. 10 |

11 |

12 | In this course, a lot of sensitive information is revealed that can't be unseen or unlearned. 13 | This policy is in place to protect the intellectual property contained within this course. 14 |

15 |

16 | Please contact realDavePartner@gmail.com if you have any questions about this. 17 |

18 | 19 | @endsection -------------------------------------------------------------------------------- /resources/views/roles/create.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | Role 7 |

8 |
9 |
10 | @include('adminlte-templates::common.errors') 11 |
12 | 13 |
14 |
15 | {!! Form::open(['route' => 'roles.store']) !!} 16 | 17 | @include('roles.fields') 18 | 19 | {!! Form::close() !!} 20 |
21 |
22 |
23 |
24 | @endsection 25 | -------------------------------------------------------------------------------- /resources/views/roles/edit.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | Role 7 |

8 |
9 |
10 | @include('adminlte-templates::common.errors') 11 |
12 |
13 |
14 | {!! Form::model($role, ['route' => ['roles.update', $role->id], 'method' => 'patch']) !!} 15 | 16 | @include('roles.fields') 17 | 18 | {!! Form::close() !!} 19 |
20 |
21 |
22 |
23 | @endsection -------------------------------------------------------------------------------- /resources/views/roles/fields.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | {!! Form::label('name', 'Name:') !!} 4 | {!! Form::text('name', null, ['class' => 'form-control']) !!} 5 |
6 | 7 | 8 |
9 | {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!} 10 | Cancel 11 |
12 | -------------------------------------------------------------------------------- /resources/views/roles/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

Roles

6 |

7 | Add New 8 |

9 |
10 |
11 |
12 | 13 | @include('flash::message') 14 | 15 |
16 |
17 |
18 | @include('roles.table') 19 |
20 |
21 |
22 | 23 |
24 |
25 | @endsection 26 | 27 | -------------------------------------------------------------------------------- /resources/views/roles/show.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | Role 7 |

8 |
9 |
10 |
11 |
12 |
13 | @include('roles.show_fields') 14 | Back 15 |
16 |
17 |
18 |
19 | @endsection 20 | -------------------------------------------------------------------------------- /resources/views/roles/show_fields.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | {!! Form::label('id', 'Id:') !!} 4 |

{!! $role->id !!}

5 |
6 | 7 | 8 |
9 | {!! Form::label('name', 'Name:') !!} 10 |

{!! $role->name !!}

11 |
12 | 13 | 14 |
15 | {!! Form::label('created_at', 'Created At:') !!} 16 |

{!! $role->created_at !!}

17 |
18 | 19 | 20 |
21 | {!! Form::label('updated_at', 'Updated At:') !!} 22 |

{!! $role->updated_at !!}

23 |
24 | 25 | -------------------------------------------------------------------------------- /resources/views/roles/table.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | @foreach($roles as $role) 10 | 11 | 12 | 21 | 22 | @endforeach 23 | 24 |
NameAction
{!! $role->name !!} 13 | {!! Form::open(['route' => ['roles.destroy', $role->id], 'method' => 'delete']) !!} 14 |
15 | 16 | 17 | {!! Form::button('', ['type' => 'submit', 'class' => 'btn btn-danger btn-xs', 'onclick' => "return confirm('Are you sure?')"]) !!} 18 |
19 | {!! Form::close() !!} 20 |
-------------------------------------------------------------------------------- /resources/views/users/create.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | User 7 |

8 |
9 |
10 | @include('adminlte-templates::common.errors') 11 |
12 | 13 |
14 |
15 | {!! Form::open(['route' => 'users.store']) !!} 16 | 17 | @include('users.fields') 18 | 19 | {!! Form::close() !!} 20 |
21 |
22 |
23 |
24 | @endsection 25 | -------------------------------------------------------------------------------- /resources/views/users/edit.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | User 7 |

8 |
9 |
10 | @include('adminlte-templates::common.errors') 11 |
12 |
13 |
14 | {!! Form::model($user, ['route' => ['users.update', $user->id], 'method' => 'patch']) !!} 15 | 16 | @include('users.fields') 17 | 18 | {!! Form::close() !!} 19 |
20 |
21 |
22 |
23 | @endsection -------------------------------------------------------------------------------- /resources/views/users/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

Users

6 |

7 | Add New 8 |

9 |
10 |
11 |
12 | 13 | @include('flash::message') 14 | 15 |
16 |
17 |
18 | @include('users.table') 19 |
20 |
21 |
22 | 23 |
24 |
25 | @endsection 26 | 27 | -------------------------------------------------------------------------------- /resources/views/users/show.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | User 7 |

8 |
9 |
10 |
11 |
12 |
13 | @include('users.show_fields') 14 | 15 | 27 |
28 |
30 | 31 | @include('courses.table') 32 |
33 |
34 | @include('courses.table')
35 |
36 | 37 | 38 | 39 | 40 |
41 |
42 |
43 |
44 | @endsection 45 | -------------------------------------------------------------------------------- /resources/views/users/table-user.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | @foreach($course->users as $user) 12 | 13 | 14 | 21 | 22 | 23 | 36 | 37 | @endforeach 38 | 39 |
NameEmailGenderAmount
{!! $user->name !!} 15 | 16 | {!! $user->email !!} 17 | 18 | 19 | 20 | {!! $user->gender !!}${!! $user->pivot->paid_amount !!} 24 | @if(Auth::check() AND Auth::user()->role_id < 3 ) 25 | 26 | {!! Form::open(['route' => ['users.destroy', $user->id], 'method' => 'delete']) !!} 27 |
28 | 29 | 30 | {!! Form::button('', ['type' => 'submit', 'class' => 'btn btn-danger btn-xs', 'onclick' => "return confirm('Are you sure?')"]) !!} 31 |
32 | {!! Form::close() !!} 33 | 34 | @endif 35 |
40 | 41 | -------------------------------------------------------------------------------- /resources/views/users/table.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | @foreach($users as $user) 16 | 17 | 18 | 25 | 26 | 27 | 28 | 29 | 30 | 40 | 41 | @endforeach 42 | 43 |
NameEmailGenderIs SubscribedEmail Verified AtView CountRole Action
{!! $user->name !!} 19 | 20 | {!! $user->email !!} 21 | 22 | 23 | 24 | {!! $user->gender !!}{!! $user->is_subscribed !!}{!! $user->email_verified_at !!}{!! $user->view_count !!}{!! $user->role['name'] !!} 31 | 32 | {!! Form::open(['route' => ['users.destroy', $user->id], 'method' => 'delete']) !!} 33 |
34 | 35 | 36 | {!! Form::button('', ['type' => 'submit', 'class' => 'btn btn-danger btn-xs', 'onclick' => "return confirm('Are you sure?')"]) !!} 37 |
38 | {!! Form::close() !!} 39 |
-------------------------------------------------------------------------------- /resources/views/vendor/flash/message.blade.php: -------------------------------------------------------------------------------- 1 | @foreach (session('flash_notification', collect())->toArray() as $message) 2 | @if ($message['overlay']) 3 | @include('flash::modal', [ 4 | 'modalClass' => 'flash-modal', 5 | 'title' => $message['title'], 6 | 'body' => $message['message'] 7 | ]) 8 | @else 9 | 24 | @endif 25 | @endforeach 26 | 27 | {{ session()->forget('flash_notification') }} 28 | -------------------------------------------------------------------------------- /resources/views/vendor/flash/modal.blade.php: -------------------------------------------------------------------------------- 1 | 20 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/button.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 18 | 19 |
4 | 5 | 6 | 15 | 16 |
7 | 8 | 9 | 12 | 13 |
10 | {{ $slot }} 11 |
14 |
17 |
20 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/footer.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/header.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{ $slot }} 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/message.blade.php: -------------------------------------------------------------------------------- 1 | @component('mail::layout') 2 | {{-- Header --}} 3 | @slot('header') 4 | @component('mail::header', ['url' => config('app.url')]) 5 | {{ config('app.name') }} 6 | @endcomponent 7 | @endslot 8 | 9 | {{-- Body --}} 10 | {{ $slot }} 11 | 12 | {{-- Subcopy --}} 13 | @isset($subcopy) 14 | @slot('subcopy') 15 | @component('mail::subcopy') 16 | {{ $subcopy }} 17 | @endcomponent 18 | @endslot 19 | @endisset 20 | 21 | {{-- Footer --}} 22 | @slot('footer') 23 | @component('mail::footer') 24 | © {{ date('Y') }} {{ config('app.name') }}. @lang('All rights reserved.') 25 | @endcomponent 26 | @endslot 27 | @endcomponent 28 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/panel.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 12 | 13 |
4 | 5 | 6 | 9 | 10 |
7 | {{ Illuminate\Mail\Markdown::parse($slot) }} 8 |
11 |
14 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/promotion.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 |
4 | {{ Illuminate\Mail\Markdown::parse($slot) }} 5 |
8 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/promotion/button.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 12 | 13 |
4 | 5 | 6 | 9 | 10 |
7 | {{ $slot }} 8 |
11 |
14 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/subcopy.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 |
4 | {{ Illuminate\Mail\Markdown::parse($slot) }} 5 |
8 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/table.blade.php: -------------------------------------------------------------------------------- 1 |
2 | {{ Illuminate\Mail\Markdown::parse($slot) }} 3 |
4 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/markdown/button.blade.php: -------------------------------------------------------------------------------- 1 | {{ $slot }}: {{ $url }} 2 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/markdown/footer.blade.php: -------------------------------------------------------------------------------- 1 | {{ $slot }} 2 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/markdown/header.blade.php: -------------------------------------------------------------------------------- 1 | [{{ $slot }}]({{ $url }}) 2 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/markdown/layout.blade.php: -------------------------------------------------------------------------------- 1 | {!! strip_tags($header) !!} 2 | 3 | {!! strip_tags($slot) !!} 4 | @isset($subcopy) 5 | 6 | {!! strip_tags($subcopy) !!} 7 | @endisset 8 | 9 | {!! strip_tags($footer) !!} 10 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/markdown/message.blade.php: -------------------------------------------------------------------------------- 1 | @component('mail::layout') 2 | {{-- Header --}} 3 | @slot('header') 4 | @component('mail::header', ['url' => config('app.url')]) 5 | {{ config('app.name') }} 6 | @endcomponent 7 | @endslot 8 | 9 | {{-- Body --}} 10 | {{ $slot }} 11 | 12 | {{-- Subcopy --}} 13 | @isset($subcopy) 14 | @slot('subcopy') 15 | @component('mail::subcopy') 16 | {{ $subcopy }} 17 | @endcomponent 18 | @endslot 19 | @endisset 20 | 21 | {{-- Footer --}} 22 | @slot('footer') 23 | @component('mail::footer') 24 | © {{ date('Y') }} {{ config('app.name') }}. @lang('All rights reserved.') 25 | @endcomponent 26 | @endslot 27 | @endcomponent 28 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/markdown/panel.blade.php: -------------------------------------------------------------------------------- 1 | {{ $slot }} 2 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/markdown/promotion.blade.php: -------------------------------------------------------------------------------- 1 | {{ $slot }} 2 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/markdown/promotion/button.blade.php: -------------------------------------------------------------------------------- 1 | [{{ $slot }}]({{ $url }}) 2 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/markdown/subcopy.blade.php: -------------------------------------------------------------------------------- 1 | {{ $slot }} 2 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/markdown/table.blade.php: -------------------------------------------------------------------------------- 1 | {{ $slot }} 2 | -------------------------------------------------------------------------------- /resources/views/vendor/notifications/email.blade.php: -------------------------------------------------------------------------------- 1 | @component('mail::message') 2 | {{-- Greeting --}} 3 | @if (! empty($greeting)) 4 | # {{ $greeting }} 5 | @else 6 | @if ($level === 'error') 7 | # @lang('Whoops!') 8 | @else 9 | # @lang('Hello!') 10 | @endif 11 | @endif 12 | 13 | {{-- Intro Lines --}} 14 | @foreach ($introLines as $line) 15 | {{ $line }} 16 | 17 | @endforeach 18 | 19 | {{-- Action Button --}} 20 | @isset($actionText) 21 | 31 | @component('mail::button', ['url' => $actionUrl, 'color' => $color]) 32 | {{ $actionText }} 33 | @endcomponent 34 | @endisset 35 | 36 | {{-- Outro Lines --}} 37 | @foreach ($outroLines as $line) 38 | {{ $line }} 39 | 40 | @endforeach 41 | 42 | {{-- Salutation --}} 43 | @if (! empty($salutation)) 44 | {{ $salutation }} 45 | @else 46 | @lang('Regards'),
{{ config('app.name') }} 47 | @endif 48 | 49 | {{-- Subcopy --}} 50 | @isset($actionText) 51 | @component('mail::subcopy') 52 | @lang( 53 | "If you’re having trouble clicking the \":actionText\" button, copy and paste the URL below\n". 54 | 'into your web browser: [:actionURL](:actionURL)', 55 | [ 56 | 'actionText' => $actionText, 57 | 'actionURL' => $actionUrl, 58 | ] 59 | ) 60 | @endcomponent 61 | @endisset 62 | @endcomponent 63 | -------------------------------------------------------------------------------- /resources/views/vendor/pagination/default.blade.php: -------------------------------------------------------------------------------- 1 | @if ($paginator->hasPages()) 2 | 44 | @endif 45 | -------------------------------------------------------------------------------- /resources/views/vendor/pagination/semantic-ui.blade.php: -------------------------------------------------------------------------------- 1 | @if ($paginator->hasPages()) 2 | 36 | @endif 37 | -------------------------------------------------------------------------------- /resources/views/vendor/pagination/simple-bootstrap-4.blade.php: -------------------------------------------------------------------------------- 1 | @if ($paginator->hasPages()) 2 | 25 | @endif 26 | -------------------------------------------------------------------------------- /resources/views/vendor/pagination/simple-default.blade.php: -------------------------------------------------------------------------------- 1 | @if ($paginator->hasPages()) 2 | 17 | @endif 18 | -------------------------------------------------------------------------------- /resources/views/vendor/swaggervel/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davepartner/laravel-course-learning-management-system/d5460b6087dc157fa9eeb7d724d48dc65c4e7ad7/resources/views/vendor/swaggervel/.gitkeep -------------------------------------------------------------------------------- /resources/views/views/create.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | View 7 |

8 |
9 |
10 | @include('adminlte-templates::common.errors') 11 |
12 | 13 |
14 |
15 | {!! Form::open(['route' => 'views.store']) !!} 16 | 17 | @include('views.fields') 18 | 19 | {!! Form::close() !!} 20 |
21 |
22 |
23 |
24 | @endsection 25 | -------------------------------------------------------------------------------- /resources/views/views/edit.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | View 7 |

8 |
9 |
10 | @include('adminlte-templates::common.errors') 11 |
12 |
13 |
14 | {!! Form::model($view, ['route' => ['views.update', $view->id], 'method' => 'patch']) !!} 15 | 16 | @include('views.fields') 17 | 18 | {!! Form::close() !!} 19 |
20 |
21 |
22 |
23 | @endsection -------------------------------------------------------------------------------- /resources/views/views/fields.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | {!! Form::label('user_id', 'User Id:') !!} 4 | {!! Form::number('user_id', null, ['class' => 'form-control']) !!} 5 |
6 | 7 | 8 |
9 | {!! Form::label('user_account_id', 'User Account Id:') !!} 10 | {!! Form::number('user_account_id', null, ['class' => 'form-control']) !!} 11 |
12 | 13 | 14 |
15 | {!! Form::label('category_id', 'Category Id:') !!} 16 | {!! Form::number('category_id', null, ['class' => 'form-control']) !!} 17 |
18 | 19 | 20 |
21 | {!! Form::label('course_id', 'Course Id:') !!} 22 | {!! Form::number('course_id', null, ['class' => 'form-control']) !!} 23 |
24 | 25 | 26 |
27 | {!! Form::label('item_id', 'Item Id:') !!} 28 | {!! Form::number('item_id', null, ['class' => 'form-control']) !!} 29 |
30 | 31 | 32 |
33 | {!! Form::submit('Save', ['class' => 'btn btn-primary']) !!} 34 | Cancel 35 |
36 | -------------------------------------------------------------------------------- /resources/views/views/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

Views

6 |

7 | Add New 8 |

9 |
10 |
11 |
12 | 13 | @include('flash::message') 14 | 15 |
16 |
17 |
18 | @include('views.table') 19 |
20 |
21 |
22 | 23 |
24 |
25 | @endsection 26 | 27 | -------------------------------------------------------------------------------- /resources/views/views/show.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |

6 | View 7 |

8 |
9 |
10 |
11 |
12 |
13 | @include('views.show_fields') 14 | Back 15 |
16 |
17 |
18 |
19 | @endsection 20 | -------------------------------------------------------------------------------- /resources/views/views/show_fields.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | {!! Form::label('id', 'Id:') !!} 4 |

{!! $view->id !!}

5 |
6 | 7 | 8 |
9 | {!! Form::label('user_id', 'User Id:') !!} 10 |

{!! $view->user_id !!}

11 |
12 | 13 | 14 |
15 | {!! Form::label('user_account_id', 'User Account Id:') !!} 16 |

{!! $view->user_account_id !!}

17 |
18 | 19 | 20 |
21 | {!! Form::label('category_id', 'Category Id:') !!} 22 |

{!! $view->category_id !!}

23 |
24 | 25 | 26 |
27 | {!! Form::label('course_id', 'Course Id:') !!} 28 |

{!! $view->course_id !!}

29 |
30 | 31 | 32 |
33 | {!! Form::label('item_id', 'Item Id:') !!} 34 |

{!! $view->item_id !!}

35 |
36 | 37 | 38 |
39 | {!! Form::label('created_at', 'Created At:') !!} 40 |

{!! $view->created_at !!}

41 |
42 | 43 | 44 |
45 | {!! Form::label('updated_at', 'Updated At:') !!} 46 |

{!! $view->updated_at !!}

47 |
48 | 49 | -------------------------------------------------------------------------------- /resources/views/views/table.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | @foreach($views as $view) 14 | 15 | 16 | 17 | 18 | 19 | 20 | 29 | 30 | @endforeach 31 | 32 |
User IdUser Account IdCategory IdCourse IdItem IdAction
{!! $view->user_id !!}{!! $view->user_account_id !!}{!! $view->category_id !!}{!! $view->course_id !!}{!! $view->item_id !!} 21 | {!! Form::open(['route' => ['views.destroy', $view->id], 'method' => 'delete']) !!} 22 |
23 | 24 | 25 | {!! Form::button('', ['type' => 'submit', 'class' => 'btn btn-danger btn-xs', 'onclick' => "return confirm('Are you sure?')"]) !!} 26 |
27 | {!! Form::close() !!} 28 |
-------------------------------------------------------------------------------- /routes/api.php: -------------------------------------------------------------------------------- 1 | get('/user', function (Request $request) { 17 | return $request->user(); 18 | }); 19 | -------------------------------------------------------------------------------- /routes/channels.php: -------------------------------------------------------------------------------- 1 | id === (int) $id; 16 | }); 17 | -------------------------------------------------------------------------------- /routes/console.php: -------------------------------------------------------------------------------- 1 | comment(Inspiring::quote()); 18 | })->describe('Display an inspiring quote'); 19 | -------------------------------------------------------------------------------- /server.php: -------------------------------------------------------------------------------- 1 | 8 | */ 9 | 10 | $uri = urldecode( 11 | parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) 12 | ); 13 | 14 | // This file allows us to emulate Apache's "mod_rewrite" functionality from the 15 | // built-in PHP web server. This provides a convenient way to test a Laravel 16 | // application without having installed a "real" web server software here. 17 | if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) { 18 | return false; 19 | } 20 | 21 | require_once __DIR__.'/public/index.php'; 22 | -------------------------------------------------------------------------------- /storage/app/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !public/ 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /storage/app/public/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/.gitignore: -------------------------------------------------------------------------------- 1 | config.php 2 | routes.php 3 | schedule-* 4 | compiled.php 5 | services.json 6 | events.scanned.php 7 | routes.scanned.php 8 | down 9 | -------------------------------------------------------------------------------- /storage/framework/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !data/ 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /storage/framework/sessions/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/testing/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/views/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/logs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /tests/ApiTestTrait.php: -------------------------------------------------------------------------------- 1 | assertApiSuccess(); 8 | 9 | $response = json_decode($this->response->getContent(), true); 10 | $responseData = $response['data']; 11 | 12 | $this->assertNotEmpty($responseData['id']); 13 | $this->assertModelData($actualData, $responseData); 14 | } 15 | 16 | public function assertApiSuccess() 17 | { 18 | $this->assertResponseOk(); 19 | $this->seeJson(['success' => true]); 20 | } 21 | 22 | public function assertModelData(Array $actualData, Array $expectedData) 23 | { 24 | foreach ($actualData as $key => $value) { 25 | $this->assertEquals($actualData[$key], $expectedData[$key]); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /tests/CreatesApplication.php: -------------------------------------------------------------------------------- 1 | make(Kernel::class)->bootstrap(); 19 | 20 | return $app; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /tests/Feature/ExampleTest.php: -------------------------------------------------------------------------------- 1 | get('/'); 18 | 19 | $response->assertStatus(200); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /tests/TestCase.php: -------------------------------------------------------------------------------- 1 | assertTrue(true); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /webpack.mix.js: -------------------------------------------------------------------------------- 1 | const mix = require('laravel-mix'); 2 | 3 | /* 4 | |-------------------------------------------------------------------------- 5 | | Mix Asset Management 6 | |-------------------------------------------------------------------------- 7 | | 8 | | Mix provides a clean, fluent API for defining some Webpack build steps 9 | | for your Laravel application. By default, we are compiling the Sass 10 | | file for the application as well as bundling up all the JS files. 11 | | 12 | */ 13 | 14 | mix.js('resources/js/app.js', 'public/js') 15 | .sass('resources/sass/app.scss', 'public/css'); 16 | --------------------------------------------------------------------------------