diff --git a/src/parser/index.ts b/src/parser/index.ts index 57c60a1..49378c4 100644 --- a/src/parser/index.ts +++ b/src/parser/index.ts @@ -36,7 +36,106 @@ const result = { zach: 0, // ЗАЧ - 143 sr: 0, // СР - 107 kontrol: 0, // Контроль - 108 - } + }, + courses: { + '1': { // 1 Курс + '1': { // 1 Семестр + zE: 0, + aud: 0, + sr: 0, + kontorl: 0, //Непонятно отуда берется, как проеряется , где то ест ьгде то нет + + }, + '2': { // 2 Семестр + zE: 0, + aud: 0, + sr: 0, + kontorl: 0, + } + + }, + '2': { + '1': { + zE: 0, + aud: 0, + sr: 0, + kontorl: 0, + + }, + '2': { + zE: 0, + aud: 0, + sr: 0, + kontorl: 0, + } + }, + '3': { + '1': { + zE: 0, + aud: 0, + sr: 0, + kontorl: 0, + + }, + '2': { + zE: 0, + aud: 0, + sr: 0, + kontorl: 0, + } + }, + '4': { + '1': { + zE: 0, + aud: 0, + sr: 0, + kontorl: 0, + + }, + '2': { + zE: 0, + aud: 0, + sr: 0, + kontorl: 0, + } + }, + '5': { + '1': { + zE: 0, + aud: 0, + sr: 0, + kontorl: 0, + + }, + '2': { + zE: 0, + aud: 0, + sr: 0, + kontorl: 0, + } + }, + '6': { + '1': { + zE: 0, + aud: 0, + sr: 0, + kontorl: 0, + + }, + '2': { + zE: 0, + aud: 0, + sr: 0, + kontorl: 0, + } + }, + }, + kafedra: { + index: null, + code: null, + name: null, + }, + competition: null, } @@ -55,6 +154,7 @@ async function getDisciplineCode(data, discipline) { result.disciplineName = filteredData[0]['@']['Дисциплина']; result.ectsCredits = filteredData[0]['@']['ЗЕТфакт']; result.totalAcademicHours.byPlan = filteredData[0]['@']['ЧасовПоПлану']; + result.kafedra.index = filteredData[0]['@']['КодКафедры']; return filteredData[0]['@']['Код']; } @@ -62,13 +162,25 @@ async function getDisciplineCode(data, discipline) { async function getHours(disciplineCode, data) { const filteredData = data['diffgr:diffgram']['dsMMISDB']['ПланыНовыеЧасы'].filter(item => item['@']['КодОбъекта'] === disciplineCode); - console.log(filteredData) + // console.log(filteredData) return filteredData } +async function getKafedraData(kafedraCode, data){ + const filteredData = data['diffgr:diffgram']['dsMMISDB']['Кафедры'].filter(item => item['@']['Код'] === kafedraCode); + result.kafedra.code = filteredData[0]['@']['Номер']; + result.kafedra.name = filteredData[0]['@']['Название']; + + return filteredData + +} + async function countHours(hoursArray) { hoursArray.forEach(item => { + const course = item['@']["Курс"]; + const semestr = item['@']["Семестр"]; + switch (item['@']["КодВидаРаботы"]) { case "1": result.formOfInterimAssessment.exam = Number(item['@']["Количество"]) @@ -86,13 +198,16 @@ async function countHours(hoursArray) { result.totalAcademicHours.lab = result.totalAcademicHours.lab + Number(item['@']["Количество"]) break; case "103": + result.totalAcademicHours.pr = result.totalAcademicHours.pr + Number(item['@']["Количество"]) break; case "104": result.totalAcademicHours.sem = result.totalAcademicHours.sem + Number(item['@']["Количество"]) break; case "107": - result.totalAcademicHours.sr = result.totalAcademicHours.sr + Number(item['@']["Количество"]) + result.courses[course][semestr].aud = Number(item['@']["Количество"])*2; + result.courses[course][semestr].sr = Number(item['@']["Количество"]); + result.totalAcademicHours.sr = result.totalAcademicHours.sr + Number(item['@']["Количество"]); break; case "108": result.totalAcademicHours.kontrol = result.totalAcademicHours.kontrol + Number(item['@']["Количество"]) @@ -112,6 +227,14 @@ async function countHours(hoursArray) { case "143": result.totalAcademicHours.zach = result.totalAcademicHours.zach + Number(item['@']["Количество"]) break; + + //Для семестров + case "6": + result.courses[course][semestr].kontorl = Number(item['@']["Количество"]); + break; + case "50": + result.courses[course][semestr].zE = Number(item['@']["Количество"]); + break; } @@ -122,10 +245,11 @@ async function countHours(hoursArray) { async function main() { const json = await getJSON(); - const disciplineCode = await getDisciplineCode(json, 'Правоведение'); + const disciplineCode = await getDisciplineCode(json, 'Физическая подготовка'); const hoursArray = await getHours(disciplineCode, json); + const cafedra = await getKafedraData(result.kafedra.index, json); countHours(hoursArray) result.totalAcademicHours.contRab = result.totalAcademicHours.lec + result.totalAcademicHours.lab + result.totalAcademicHours.pr + result.totalAcademicHours.sem + result.totalAcademicHours.gz + result.totalAcademicHours.tz + result.totalAcademicHours.ksu + result.totalAcademicHours.kl + result.totalAcademicHours.zach; - console.log(result) + console.log(JSON.stringify(result)) } main(); \ No newline at end of file