1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- package api
- // Файл создан для объединения проверок в пакете API
- // Здесь собраны проверки, необходимые для функционирования ИС "Учебная часть"
- // Управление осуществляется через функцию CheckRoute, которая переадресовывает запросы по нужным функциям
- // в зависимости от пути
- import(
- "encoding/json"
- "net/http"
- "../settings"
- )
- type CheckResult struct{ // Для вывода результата в удобном виде создаем структуру
- Status bool
- Hours int
- }
- func CheckRoute(w http.ResponseWriter, r *http.Request){
- if r.Method == "POST"{
- if r.URL.Path == "/api/check/planwithexample/"{
- planWithExample(w, r)
- }
- }
- }
- // Сверка часов УП с ОПОП
- func planWithExample(w http.ResponseWriter, r *http.Request){
- var subject Subjectofplan
- json.NewDecoder(r.Body).Decode(&subject) // Декодируем JSON в экземпляр структуры
- if subject.IDPlan > 0 { // Проверка на пустой POST-запрос
- json.NewEncoder(w).Encode(struct{ Error string }{ Error: "error during processing data" })
- return
- }
- // Выгружаем необходимые данные из БД
- var plan Studyplan
- settings.DB.First(&plan, subject.IDPlan)
- var example Exampleprogram
- settings.DB.Where("ID_specialty = ?", plan.IDSpecialty).First(&example)
- var subOfExample Subjectofexample
- settings.DB.Where("ID_subject = ? AND ID_exampleprogram = ?", subject.IDSubject, example.ID).First(subOfExample)
- // Завершаем выгрузку из БД
- // Проверяем часы
- if subOfExample.Totalhours>=subject.Hoursquantitytotal{ // Если все в порядке, то возвращаем true и количество вариативных часов
- var checkResult CheckResult
- checkResult.Status = true
- checkResult.Hours = int(subOfExample.Totalhours)-int(subject.Hoursquantitytotal)
- json.NewEncoder(w).Encode(checkResult)
- } else{ // Если нет - возвращаем false и недостающее количество часов
- var checkResult CheckResult
- checkResult.Status = false
- checkResult.Hours = int(subject.Hoursquantitytotal)-int(subOfExample.Totalhours)
- json.NewEncoder(w).Encode(checkResult)
- }
- }
|