Every IT developer who used to be a student, but has been a student of credits, cannot remember all the schedules and I am also a person who often forgets the schedule, mistakes the schedule for When looking at the schedule from the school’s web site, I want to explode, I have to see what day it is today, then check what subject I study today, what period, which class … the class schedule displays in file format excel look real headache. That’s why I wrote a small web application that solves this.
Target
The goal of this article is to create a web application with the following functionality
- Import study calendar from excel file, analyze and display it on calendar to easily view calendars
- Create a Bot that automatically sends messages to remind you of your class schedule each day
Attached to the product, I also introduced and instructed how to use some good packages.
Some demo photos:
Technology and some packages used
Framework Laravel
Laravel is a free and open source PHP Framework …
Maatwebsite / Excel Package
This package handles importing and exporting data into the database through files such as excel, csv …
https://docs.laravel-excel.com/3.1/getting-started/
Package sun-asterisk / chatwork-php
This package was developed by the R&D department of Sun-asterisk. Package makes chatwork easier to work with …
https://github.com/sun-asterisk-research/chatwork-php
Laravel Full Calendar
This package supports calendar creation
https://github.com/maddhatter/laravel-fullcalendar
Embark on the code
Before coding, I also list out what to do first
- Create project laravel, create database connection
- Create a calendar display interface
- Get excel file of class schedule, create table to save subject data, create form to send files to handle insert into database
- Display the class schedule on the calendar
- Create a Bot chatwork, create a cronjob Bot send a message to the chatwork to remind you of the daily schedule
Part 1 install project laravel create database connection, composer …. do it yourself, I will do the tutorial from part 2.
Create a calendar display interface
This section will use the Laravel Full Calendar package so I will install it by command
composer require maddhatter/laravel-fullcalendar
Continue to create CalendarController and router to return view
Router
Route::get('/calendar', ' [email protected] ');
Controller, this section only displays the temporary calendar without any data, the data we will pass into the array of $ events is done.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">namespace</span> <span class="token package">App Http Controllers</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">Illuminate Http Request</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">App Event</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">Calendar</span> <span class="token punctuation">;</span> <span class="token keyword">class</span> <span class="token class-name">CalendarController</span> <span class="token keyword">extends</span> <span class="token class-name">Controller</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">index</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$events</span> <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token variable">$calendar</span> <span class="token operator">=</span> Calendar <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">addEvents</span> <span class="token punctuation">(</span> <span class="token variable">$events</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token function">view</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'calendar'</span> <span class="token punctuation">,</span> <span class="token function">compact</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'calendar'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </span> |
Create file view calendar.blade.php in foder resources
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <span class="token doctype"><!DOCTYPE html></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> html</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> head</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> meta</span> <span class="token attr-name">charset</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> utf-8 <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> meta</span> <span class="token attr-name">name</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> viewport <span class="token punctuation">"</span></span> <span class="token attr-name">content</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> width=device-width, initial-scale=1 <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> title</span> <span class="token punctuation">></span></span> Calendar <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> title</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> link</span> <span class="token attr-name">rel</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> stylesheet <span class="token punctuation">"</span></span> <span class="token attr-name">media</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> screen <span class="token punctuation">"</span></span> <span class="token attr-name">href</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> //netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> script</span> <span class="token attr-name">src</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> //code.jquery.com/jquery.js <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> script</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> script</span> <span class="token attr-name">src</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> //netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> script</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> script</span> <span class="token attr-name">src</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> //cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment.min.js <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> script</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> script</span> <span class="token attr-name">src</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> //cdnjs.cloudflare.com/ajax/libs/fullcalendar/2.2.7/fullcalendar.min.js <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> script</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> link</span> <span class="token attr-name">rel</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> stylesheet <span class="token punctuation">"</span></span> <span class="token attr-name">href</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> //cdnjs.cloudflare.com/ajax/libs/fullcalendar/2.2.7/fullcalendar.min.css <span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> head</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> body</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> content <span class="token punctuation">"</span></span> <span class="token style-attr language-css"><span class="token attr-name"> <span class="token attr-name">style</span></span> <span class="token punctuation">="</span> <span class="token attr-value"><span class="token property">margin</span> <span class="token punctuation">:</span> 50px</span> <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> a</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> btn btn-primary <span class="token punctuation">"</span></span> <span class="token attr-name">data-toggle</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> modal <span class="token punctuation">"</span></span> <span class="token attr-name">href</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">'</span> #modal-add <span class="token punctuation">'</span></span> <span class="token punctuation">></span></span> Import file <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> a</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> br</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> br</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> modal fade <span class="token punctuation">"</span></span> <span class="token attr-name">id</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> modal-add <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> modal-dialog <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> modal-content <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> modal-body <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> form</span> <span class="token attr-name">action</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> /calendar/import <span class="token punctuation">"</span></span> <span class="token attr-name">method</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> POST <span class="token punctuation">"</span></span> <span class="token attr-name">role</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> form <span class="token punctuation">"</span></span> <span class="token attr-name">enctype</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> multipart/form-data <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> legend</span> <span class="token punctuation">></span></span> Import file <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> legend</span> <span class="token punctuation">></span></span> @csrf <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> form-group <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> input</span> <span class="token attr-name">type</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> file <span class="token punctuation">"</span></span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> form-control <span class="token punctuation">"</span></span> <span class="token attr-name">name</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> calendar <span class="token punctuation">"</span></span> <span class="token attr-name">id</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> <span class="token punctuation">"</span></span> <span class="token attr-name">placeholder</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> Input field <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> button</span> <span class="token attr-name">type</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> submit <span class="token punctuation">"</span></span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> btn btn-primary <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> Submit <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> button</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> form</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> {!! $calendar->calendar() !!} {!! $calendar->script() !!} <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> body</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> html</span> <span class="token punctuation">></span></span> |
The interface above I use the CDN mn links that can be copied and run, the interface includes a form for me to send the file and the calendar to display the calendar, then the route / calendar will display the interface like this.
Get excel file of class schedule, create table to save subject data, create form to send files to handle insert into database
Next, I went to the school’s website to download the schedule file, here I exported the file in the class format displayed by the module, it seems that many schools use the same website template so the format is the same, if the school If you are different, then it’s okay, just edit a little bit in the file reading only
The file opened looks like this, it looks complicated.
Next I need to create a table to save data, migrate as follows
1 2 3 4 5 6 7 8 9 10 11 12 | <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">up</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> Schema <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">create</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'schedules'</span> <span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span> Blueprint <span class="token variable">$table</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">bigIncrements</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'id'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">string</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'class'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">timestamp</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'date'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">string</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'lesson'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">string</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'room'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$table</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">timestamps</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> |
Class column to save the class name, date is the school day, lession is the lesson, room is the classroom location. Remember to create a model named Schedule for this schedule data table.
In the previous interface form, I created the action sent to the route “/ calender / import” and now I create the router and the function to receive the file
Router
Route::post('/calender/import', ' [email protected] ');
Function import in CalenderController
1 2 3 4 5 6 7 | <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">import</span> <span class="token punctuation">(</span> Request <span class="token variable">$request</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> Excel <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">import</span> <span class="token punctuation">(</span> <span class="token keyword">new</span> <span class="token class-name">CalenderImport</span> <span class="token punctuation">,</span> <span class="token variable">$request</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">calender</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token function">redirect</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'/calender'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> |
This section uses the Maatwebsite Excel package so I will install it by command
1 2 | composer require maatwebsite/excel |
Publish config
php artisan vendor:publish --provider="MaatwebsiteExcelExcelServiceProvider"
Create a file to handle reading excel file and insert data into DB
php artisan make:import CalenderImport --model=Schedule
The content of this file is as follows
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">namespace</span> <span class="token package">App Imports</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">App Models Schedule</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">Maatwebsite Excel Concerns ToModel</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">Carbon Carbon</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">DateTime</span> <span class="token punctuation">;</span> <span class="token keyword">class</span> <span class="token class-name">CalenderImport</span> <span class="token keyword">implements</span> <span class="token class-name">ToModel</span> <span class="token punctuation">{</span> <span class="token comment">/** * @param array $row * * @return IlluminateDatabaseEloquentModel|null */</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">model</span> <span class="token punctuation">(</span> <span class="token keyword">array</span> <span class="token variable">$row</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$row</span> <span class="token punctuation">[</span> <span class="token number">0</span> <span class="token punctuation">]</span> <span class="token operator">></span> <span class="token number">0</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$period</span> <span class="token operator">=</span> <span class="token function">explode</span> <span class="token punctuation">(</span> <span class="token double-quoted-string string">"Từ"</span> <span class="token punctuation">,</span> <span class="token variable">$row</span> <span class="token punctuation">[</span> <span class="token number">7</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span> <span class="token variable">$i</span> <span class="token operator">=</span> <span class="token number">1</span> <span class="token punctuation">;</span> <span class="token variable">$i</span> <span class="token operator"><</span> <span class="token function">count</span> <span class="token punctuation">(</span> <span class="token variable">$period</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$i</span> <span class="token operator">++</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$dateRange</span> <span class="token operator">=</span> <span class="token function">explode</span> <span class="token punctuation">(</span> <span class="token double-quoted-string string">":"</span> <span class="token punctuation">,</span> <span class="token variable">$period</span> <span class="token punctuation">[</span> <span class="token variable">$i</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$date</span> <span class="token operator">=</span> <span class="token function">explode</span> <span class="token punctuation">(</span> <span class="token double-quoted-string string">" đến "</span> <span class="token punctuation">,</span> <span class="token variable">$dateRange</span> <span class="token punctuation">[</span> <span class="token number">0</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$dateFormat</span> <span class="token operator">=</span> DateTime <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">createFromFormat</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'d/m/Y'</span> <span class="token punctuation">,</span> <span class="token function">trim</span> <span class="token punctuation">(</span> <span class="token variable">$date</span> <span class="token punctuation">[</span> <span class="token number">0</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">format</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'Y-m-d'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$startDate</span> <span class="token operator">=</span> Carbon <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">create</span> <span class="token punctuation">(</span> <span class="token variable">$dateFormat</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$newformat</span> <span class="token operator">=</span> DateTime <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">createFromFormat</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'d/m/Y'</span> <span class="token punctuation">,</span> <span class="token function">trim</span> <span class="token punctuation">(</span> <span class="token variable">$date</span> <span class="token punctuation">[</span> <span class="token number">1</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">format</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'Y-m-d'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$endDate</span> <span class="token operator">=</span> Carbon <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">create</span> <span class="token punctuation">(</span> <span class="token variable">$newformat</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$dayOfWeek</span> <span class="token operator">=</span> <span class="token function">explode</span> <span class="token punctuation">(</span> <span class="token double-quoted-string string">"Thứ"</span> <span class="token punctuation">,</span> <span class="token variable">$dateRange</span> <span class="token punctuation">[</span> <span class="token number">1</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span> <span class="token variable">$j</span> <span class="token operator">=</span> <span class="token number">1</span> <span class="token punctuation">;</span> <span class="token variable">$j</span> <span class="token operator"><</span> <span class="token function">count</span> <span class="token punctuation">(</span> <span class="token variable">$dayOfWeek</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$j</span> <span class="token operator">++</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$studyTime</span> <span class="token operator">=</span> <span class="token function">explode</span> <span class="token punctuation">(</span> <span class="token double-quoted-string string">" tiết "</span> <span class="token punctuation">,</span> <span class="token function">trim</span> <span class="token punctuation">(</span> <span class="token variable">$dayOfWeek</span> <span class="token punctuation">[</span> <span class="token variable">$j</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$lesson</span> <span class="token operator">=</span> <span class="token function">explode</span> <span class="token punctuation">(</span> <span class="token double-quoted-string string">" tại "</span> <span class="token punctuation">,</span> <span class="token function">trim</span> <span class="token punctuation">(</span> <span class="token variable">$studyTime</span> <span class="token punctuation">[</span> <span class="token number">1</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$startDate</span> <span class="token operator">=</span> Carbon <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">create</span> <span class="token punctuation">(</span> <span class="token variable">$dateFormat</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">for</span> <span class="token punctuation">(</span> <span class="token punctuation">;</span> <span class="token variable">$startDate</span> <span class="token operator"><</span> <span class="token variable">$endDate</span> <span class="token punctuation">;</span> <span class="token variable">$startDate</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">addDay</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$startDate</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">dayOfWeek</span> <span class="token operator">==</span> <span class="token function">trim</span> <span class="token punctuation">(</span> <span class="token variable">$studyTime</span> <span class="token punctuation">[</span> <span class="token number">0</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token number">1</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$data</span> <span class="token punctuation">[</span> <span class="token double-quoted-string string">"date"</span> <span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token variable">$startDate</span> <span class="token punctuation">;</span> <span class="token variable">$data</span> <span class="token punctuation">[</span> <span class="token double-quoted-string string">"class"</span> <span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token variable">$row</span> <span class="token punctuation">[</span> <span class="token number">5</span> <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token variable">$data</span> <span class="token punctuation">[</span> <span class="token double-quoted-string string">"lesson"</span> <span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token variable">$lesson</span> <span class="token punctuation">[</span> <span class="token number">0</span> <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token variable">$data</span> <span class="token punctuation">[</span> <span class="token double-quoted-string string">"room"</span> <span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token double-quoted-string string">"N/A"</span> <span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token keyword">isset</span> <span class="token punctuation">(</span> <span class="token variable">$lesson</span> <span class="token punctuation">[</span> <span class="token number">1</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$data</span> <span class="token punctuation">[</span> <span class="token double-quoted-string string">"room"</span> <span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token variable">$lesson</span> <span class="token punctuation">[</span> <span class="token number">1</span> <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token variable">$user</span> <span class="token operator">=</span> Schedule <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">create</span> <span class="token punctuation">(</span> <span class="token variable">$data</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> <span class="token boolean constant">true</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </span> |
It looks so clunky: this piece of code I wrote and used about a year ago but I will stay like this a bit long but it seems easier to understand
The above function works as follows, it will read each row in the excel file, then check if the row is the subject (ignoring the other information rows), if it is the row that does not contain each subject then I handle cutting sequence to take class time, class day, lesson period, place of study and calculate the exact time of the school day according to the above time period and then save information of each class to DB …
The data is saved as follows
Display class schedule on calender
The display I just need to get the data out, create even a display on the calender, edit the function index on the controller is done, the completed CalenderController will be as follows.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">namespace</span> <span class="token package">App Http Controllers</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">Illuminate Http Request</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">App Imports CalenderImport</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">Maatwebsite Excel Facades Excel</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">App Models Schedule</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">Carbon Carbon</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">App Event</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">DateTime</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">Calendar</span> <span class="token punctuation">;</span> <span class="token keyword">class</span> <span class="token class-name">CalenderController</span> <span class="token keyword">extends</span> <span class="token class-name">Controller</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">index</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$events</span> <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token variable">$data</span> <span class="token operator">=</span> Schedule <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">all</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$data</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">count</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">foreach</span> <span class="token punctuation">(</span> <span class="token variable">$data</span> <span class="token keyword">as</span> <span class="token variable">$key</span> <span class="token operator">=</span> <span class="token operator">></span> <span class="token variable">$value</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$startDate</span> <span class="token operator">=</span> Carbon <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">create</span> <span class="token punctuation">(</span> <span class="token variable">$value</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">date</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$time</span> <span class="token operator">=</span> <span class="token function">explode</span> <span class="token punctuation">(</span> <span class="token double-quoted-string string">","</span> <span class="token punctuation">,</span> <span class="token function">trim</span> <span class="token punctuation">(</span> <span class="token variable">$value</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">lesson</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">switch</span> <span class="token punctuation">(</span> <span class="token variable">$time</span> <span class="token punctuation">[</span> <span class="token number">0</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">case</span> <span class="token number">1</span> <span class="token punctuation">:</span> <span class="token variable">$startDate</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">addHours</span> <span class="token punctuation">(</span> <span class="token number">7</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">break</span> <span class="token punctuation">;</span> <span class="token keyword">case</span> <span class="token number">4</span> <span class="token punctuation">:</span> <span class="token variable">$startDate</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">addHours</span> <span class="token punctuation">(</span> <span class="token number">9</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$startDate</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">addMinute</span> <span class="token punctuation">(</span> <span class="token number">30</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">break</span> <span class="token punctuation">;</span> <span class="token keyword">case</span> <span class="token number">7</span> <span class="token punctuation">:</span> <span class="token variable">$startDate</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">addHours</span> <span class="token punctuation">(</span> <span class="token number">12</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$startDate</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">addMinute</span> <span class="token punctuation">(</span> <span class="token number">30</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">break</span> <span class="token punctuation">;</span> <span class="token keyword">case</span> <span class="token number">10</span> <span class="token punctuation">:</span> <span class="token variable">$startDate</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">addHours</span> <span class="token punctuation">(</span> <span class="token number">15</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$startDate</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">addMinute</span> <span class="token punctuation">(</span> <span class="token number">30</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">break</span> <span class="token punctuation">;</span> <span class="token keyword">case</span> <span class="token number">13</span> <span class="token punctuation">:</span> <span class="token variable">$startDate</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">addHours</span> <span class="token punctuation">(</span> <span class="token number">18</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">break</span> <span class="token punctuation">;</span> <span class="token keyword">default</span> <span class="token punctuation">:</span> <span class="token variable">$startDate</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">addHours</span> <span class="token punctuation">(</span> <span class="token number">18</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">break</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token variable">$title</span> <span class="token operator">=</span> <span class="token variable">$value</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">room</span> <span class="token punctuation">.</span> <span class="token double-quoted-string string">" - "</span> <span class="token punctuation">.</span> <span class="token variable">$value</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token keyword">class</span> <span class="token punctuation">;</span> <span class="token variable">$events</span> <span class="token punctuation">[</span> <span class="token punctuation">]</span> <span class="token operator">=</span> Calendar <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">event</span> <span class="token punctuation">(</span> <span class="token variable">$title</span> <span class="token punctuation">,</span> <span class="token boolean constant">false</span> <span class="token punctuation">,</span> <span class="token keyword">new</span> <span class="token class-name">DateTime</span> <span class="token punctuation">(</span> <span class="token variable">$startDate</span> <span class="token punctuation">)</span> <span class="token punctuation">,</span> <span class="token keyword">new</span> <span class="token class-name">DateTime</span> <span class="token punctuation">(</span> <span class="token variable">$startDate</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">addHours</span> <span class="token punctuation">(</span> <span class="token number">2</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">addMinute</span> <span class="token punctuation">(</span> <span class="token number">30</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">,</span> <span class="token constant">null</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token single-quoted-string string">'color'</span> <span class="token operator">=</span> <span class="token operator">></span> <span class="token single-quoted-string string">'#ff6100'</span> <span class="token punctuation">,</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token variable">$calendar</span> <span class="token operator">=</span> Calendar <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">addEvents</span> <span class="token punctuation">(</span> <span class="token variable">$events</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token function">view</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'calender'</span> <span class="token punctuation">,</span> <span class="token function">compact</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'calendar'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">import</span> <span class="token punctuation">(</span> Request <span class="token variable">$request</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> Excel <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">import</span> <span class="token punctuation">(</span> <span class="token keyword">new</span> <span class="token class-name">CalenderImport</span> <span class="token punctuation">,</span> <span class="token variable">$request</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">calender</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token function">redirect</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'/calender'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </span> |
Now go back into the view and you’ll see the class schedule displayed
Create a Bot chatwork, create a cronjob Bot send a message to the chatwork to remind you of the daily schedule
This section firstly you need to have 2 accounts https://www.chatwork.com/ , 1 account as a bot to send messages and an account to receive messages.
have 2 accounts then I started creating cronjob to send messages to chatwork
To send a message to the chatwork, I need to install the sun-asterisk / chatwork-php package introduced at the beginning of the article
composer require sun-asterisk/chatwork-php
After that, we continue to run commands to create the command
php artisan make:command DailyNotification
This command will create DailyNotification.php file I will handle firing the message here
Now I need to get the token from the bot account, it will represent the bot account to send a message instead of entering the account and password.
Log in to the chatwork and go to this link to get the token https://www.chatwork.com/service/packages/chatwork/subpackages/api/token.php
If you already have a token, then modify the command as follows
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">namespace</span> <span class="token package">App Console Commands</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">Illuminate Console Command</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">App Models Schedule</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">DateTime</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">SunAsterisk Chatwork Chatwork</span> <span class="token punctuation">;</span> <span class="token keyword">use</span> <span class="token package">SunAsterisk Chatwork Helpers Message</span> <span class="token punctuation">;</span> <span class="token keyword">class</span> <span class="token class-name">DailyNotification</span> <span class="token keyword">extends</span> <span class="token class-name">Command</span> <span class="token punctuation">{</span> <span class="token comment">/** * The name and signature of the console command. * * @var string */</span> <span class="token keyword">protected</span> <span class="token variable">$signature</span> <span class="token operator">=</span> <span class="token single-quoted-string string">'command:notification'</span> <span class="token punctuation">;</span> <span class="token comment">/** * The console command description. * * @var string */</span> <span class="token keyword">protected</span> <span class="token variable">$description</span> <span class="token operator">=</span> <span class="token single-quoted-string string">'Send a daily message to chatwork'</span> <span class="token punctuation">;</span> <span class="token comment">/** * Create a new command instance. * * @return void */</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">__construct</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">parent</span> <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">__construct</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">/** * Execute the console command. * * @return mixed */</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">handle</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$now</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">DateTime</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$lessions</span> <span class="token operator">=</span> Schedule <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">where</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'date'</span> <span class="token punctuation">,</span> <span class="token variable">$now</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">format</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'Y-m-d'</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">get</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$chatwork</span> <span class="token operator">=</span> Chatwork <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">withAPIToken</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'your-api-token'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">foreach</span> <span class="token punctuation">(</span> <span class="token variable">$lessions</span> <span class="token keyword">as</span> <span class="token variable">$lession</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$mg</span> <span class="token operator">=</span> <span class="token single-quoted-string string">'Chào Thịnh! Nay bạn có lịch học môn : '</span> <span class="token punctuation">.</span> <span class="token variable">$lession</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token keyword">class</span> <span class="token class-name"><span class="token punctuation">.</span></span> <span class="token single-quoted-string string">' Tiết :'</span> <span class="token punctuation">.</span> <span class="token variable">$lession</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">lesson</span> <span class="token punctuation">.</span> <span class="token single-quoted-string string">' Tại phòng : '</span> <span class="token punctuation">.</span> <span class="token variable">$lession</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">room</span> <span class="token punctuation">.</span> <span class="token single-quoted-string string">' #viblo.asia/u/NguyenVanThinhB[hr]'</span> <span class="token punctuation">;</span> <span class="token variable">$message</span> <span class="token operator">=</span> Chatwork <span class="token punctuation">:</span> <span class="token punctuation">:</span> <span class="token function">message</span> <span class="token punctuation">(</span> <span class="token variable">$mg</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token variable">$chatwork</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">room</span> <span class="token punctuation">(</span> <span class="token double-quoted-string string">"your-room-id"</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">messages</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">create</span> <span class="token punctuation">(</span> <span class="token punctuation">(</span> string <span class="token punctuation">)</span> <span class="token variable">$message</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </span> |
here your-api-token is the token you got on your bot account
and your-room-id is the chat id between the bot and you, can be taken directly from the chat url or use the command in the package SunAsterisk Chatwork
Done then you run this command immediately Bot will send you a messgae learning schedule, php artisan command:notification
Now let me create a schedule for it to run daily, register in the kernel and set up cronjob on the server.
1 2 3 4 5 | <span class="token keyword">protected</span> <span class="token keyword">function</span> <span class="token function">schedule</span> <span class="token punctuation">(</span> Schedule <span class="token variable">$schedule</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$schedule</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">command</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'command:notification'</span> <span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">dailyAt</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'6:00'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> |
I let him run the notification at 6am. Or you can run before each lesson …
End
This article I introduced a number of packages and how to apply it, just a few small ones only make life simpler and more convenient. Thank you everyone for watching, looking forward to receiving your suggestions to improve the quality of the article. If you find it interesting, don’t forget to upvote
Make Awesome Things That Matter!