|
@@ -0,0 +1,59 @@
|
|
|
+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 != nil { // Проверка на пустой 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 = subOfExample.Totalhours-subject.Hoursquantitytotal
|
|
|
+ json.NewEncoder(w).Encode(checkResult)
|
|
|
+ } else{ // Если нет - возвращаем false и недостающее количество часов
|
|
|
+ var checkResult CheckResult
|
|
|
+ checkResult.Status = false
|
|
|
+ checkResult.Hours = subject.Hoursquantitytotal-subOfExample.Totalhours
|
|
|
+ json.NewEncoder(w).Encode(checkResult)
|
|
|
+ }
|
|
|
+}
|