123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #!/usr/bin/env php
- <?php
- // Загружает первоначальные данные в БД
- // Аргументы:
- // 1. Путь к файлу .CSV, где хранятся id семестров avers
- // 2. Путь к файлу .CSV, где хранятся все работники техникума, которых нужно
- // добавить
- use BotKit\Common\Database;
- use BotKit\Entities;
- require __DIR__ . '/../src/bootstrap.php';
- $em = Database::getEM();
- $avers_period_path = $argv[1];
- $employee_path = $argv[2];
- // --Специальности и группы--
- $spec_names = ["СП","ТО","ТМ","ИС","ЭЛ","ПК","ОС","МО","ЭМ","НС","СВ","ТП"];
- foreach ($spec_names as $spec_name) {
- // Для каждой специальности создаётся запись специальности и 4 курса
- $spec = new Entities\CollegeSpec();
- $spec->setName($spec_name);
- $em->persist($spec);
- for ($i = 1; $i < 5; $i++) {
- $group = new Entities\CollegeGroup();
- $group->setSpec($spec);
- $group->setCourseNum($i);
- $em->persist($group);
- }
- }
- $em->flush();
- // --Аверс--
- $av_data = file($avers_period_path);
- $is_year_start = (int)date('m') < 7;
- for ($y = 1; $y < count($av_data); $y++) {
- $row = explode(",", $av_data[$y]);
- // --Определяем какая группа имеется ввиду в этой строке--
- // Определение специальности группы
- $target_spec = $em->getRepository(Entities\CollegeSpec::class)->findOneBy([
- 'name' => $row[1]
- ]);
- if ($target_spec === null) {
- // Не будем разбираться -- просто игнорируем
- continue;
- }
- // Определение курса группы
- $enrolled_at = $row[2]; // Когда зачислилась
- $target_course_num = date('Y') - $enrolled_at;
- if (!$is_year_start) {
- $target_course_num++;
- }
- $target_group = $em->getRepository(Entities\CollegeGroup::class)->findOneBy([
- 'spec' => $target_spec,
- 'course_num' => $target_course_num
- ]);
- // --Определение номера семестра--
- // Если WEEK_NUM1 - 1, то это начало нового учебного года, в одном году
- // два семестра.
- // Тем самым, номер семестра = ...
- if ($row[5] == 1) {
- // ... COURSE_NUM * 2 - 1
- $ord_num = $row[4] * 2 - 1;
- } else {
- // ... COURSE_NUM * 2
- $ord_num = $row[4] * 2;
- }
- // --Создаём запись--
- $period = new Entities\Period();
- $period->setGroup($target_group);
- $period->setOrdNumber($ord_num);
- $period->setAversId(trim($row[7]));
- $em->persist($period);
- }
- $employee_data = file($employee_path);
- for ($y = 1; $y < count($employee_data); $y++) {
- $row = explode(",", $employee_data[$y]);
- $employee = new Entities\Employee();
- $employee->setSurname($row[0]);
- $employee->setName($row[1]);
- $employee->setPatronymic($row[2]);
- $em->persist($employee);
- }
- $em->flush();
- echo "Старт базы данных проведён успешно!";
|