You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
151 lines
5.2 KiB
151 lines
5.2 KiB
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Maatwebsite\Excel\Facades\Excel;
|
|
use PhpOffice\PhpSpreadsheet\IOFactory;
|
|
|
|
class LoseRootController extends Controller
|
|
{
|
|
//
|
|
private $_row_unit = 1;
|
|
private $_curriculum_six_id = 666;
|
|
private $_curriculum_seven_id = 777;
|
|
private $_curriculum_eight_id = 888;
|
|
private $_curriculum_nine_id = 999;
|
|
public function index_file()
|
|
{
|
|
return view("pages.home");
|
|
}
|
|
public function read_file(Request $request)
|
|
{
|
|
$file = $request->file('file_handle');
|
|
// ĐỌC DỮ LIỆU TỪ FILE EXCEL
|
|
$data_class_6 = $this->read_excel($file, "class_6"); // LỚP 6
|
|
// $data_class_7 = $this->read_excel($file, "class_7"); // LỚP 7
|
|
// $data_class_8 = $this->read_excel($file, "class_8"); // LỚP 8
|
|
// $data_class_9 = $this->read_excel($file, "class_9"); // LỚP 9
|
|
|
|
// TẠO LỘ TRÌNH LỚP
|
|
$trip_loseroot = $this->create_trip_loseroot($data_class_6);
|
|
// DỮ LIỆU ĐỂ ADD VÀO GIÁO TRÌNH (KEY = UNIT_ID)
|
|
$generate = $this->generate_curriculum($data_class_6, $this->_curriculum_six_id);
|
|
|
|
dd($generate);
|
|
}
|
|
public function create_trip_loseroot($data)
|
|
{
|
|
if (!empty($data)) {
|
|
|
|
}
|
|
}
|
|
public function generate_curriculum($data, $curriculum_id)
|
|
{
|
|
$data_by_skill = [];
|
|
$data_unit_topic = [];
|
|
// sắp sếp lại các bài vào unit
|
|
if (!empty($data)) {
|
|
// gán từng unit thành skill
|
|
foreach ($data as $num_week => $raw_data) {
|
|
foreach ($raw_data as $key_raw => $value_raw) {
|
|
$data_by_skill[$key_raw][$num_week] = $value_raw;
|
|
}
|
|
}
|
|
}
|
|
if (!empty($data_by_skill)) {
|
|
// gán các unit gồm các topic
|
|
$week_unit_topic = [];
|
|
foreach ($data_by_skill as $skill => $skill_raw) {
|
|
foreach ($skill_raw as $week_num => $raw) {
|
|
array_walk($raw, function ($v, $k) use (&$week_unit_topic) {
|
|
$topic_id = (int) $v;
|
|
$week_unit_topic[$k][] = $topic_id;
|
|
});
|
|
}
|
|
}
|
|
// lọc các topic cho vào bài
|
|
if (!empty($week_unit_topic)) {
|
|
foreach ($week_unit_topic as $week_number => $week_unit) {
|
|
$data_unit_topic[$week_number] = array_unique($week_unit);
|
|
}
|
|
}
|
|
}
|
|
return $data_unit_topic;
|
|
}
|
|
public function create_curriculum()
|
|
{
|
|
$data_curriculum = [
|
|
'id' => $curriculum_id,
|
|
'name' => null,
|
|
'image_intro' => $curriculum_name,
|
|
'author' => "Sunday English",
|
|
'goal' => null,
|
|
'description' => null,
|
|
'category_id' => $curriculum_name,
|
|
'status' => $curriculum_name,
|
|
'created_at' => $curriculum_name,
|
|
'created_by' => $curriculum_name,
|
|
'updated_at' => $curriculum_name,
|
|
'deleted' => $curriculum_name,
|
|
'json_data_curriculum' => $curriculum_name,
|
|
'updated_by' => $curriculum_name,
|
|
'type' => $curriculum_name,
|
|
'grade_id' => $curriculum_name,
|
|
'curriculum_avatar' => $curriculum_name,
|
|
'type_grade' => $curriculum_name,
|
|
'allow_learning_free' => $curriculum_name,
|
|
'curriculum_rootlessness' => $curriculum_name,
|
|
];
|
|
}
|
|
public function read_excel($file, $sheet_name)
|
|
{
|
|
$spreadsheet = IOFactory::load($file);
|
|
$sheet = $spreadsheet->getSheetByName($sheet_name);
|
|
$sheet = $spreadsheet->getActiveSheet();
|
|
|
|
// Lấy tất cả dữ liệu từ sheet và chuyển đổi thành mảng
|
|
$data = [];
|
|
foreach ($sheet->getRowIterator() as $row) {
|
|
$rowData = [];
|
|
foreach ($row->getCellIterator() as $cell) {
|
|
$value = $cell->getCalculatedValue();
|
|
$rowData[] = trim($value);
|
|
|
|
}
|
|
if (!empty($rowData[0])) {
|
|
$data[] = $rowData;
|
|
}
|
|
}
|
|
$list_week_format = [];
|
|
$row_unit = $data[$this->_row_unit];
|
|
$list_unit = [];
|
|
if (!empty($row_unit)) {
|
|
foreach ($row_unit as $row_u) {
|
|
if (is_numeric($row_u)) {
|
|
$list_unit[] = $row_u;
|
|
}
|
|
}
|
|
}
|
|
if (!empty($data)) {
|
|
foreach ($data as $d_unit) {
|
|
if (is_numeric($d_unit[0])) {
|
|
$week = $d_unit[0];
|
|
$skill = $d_unit[1];
|
|
unset($d_unit[0], $d_unit[1], $d_unit[2]);
|
|
$unit_id = 0;
|
|
$unit_topic = [];
|
|
foreach ($d_unit as $final_unit) {
|
|
if (!empty($final_unit)) {
|
|
$unit_id += 1;
|
|
$unit_topic[$unit_id] = $final_unit;
|
|
}
|
|
}
|
|
$list_week_format[$week][$skill] = $unit_topic;
|
|
}
|
|
}
|
|
}
|
|
return $list_week_format;
|
|
}
|
|
|
|
}
|
|
|