58 lines
2.1 KiB
Rust

use gloo::net::http::Request;
use terminwahl_typen::{Nutzer, PlannedAppointment, RequestState};
use crate::Msg;
pub async fn fetch_teachers() -> Result<Msg, Msg> {
// Send the request to the specified URL.
let response = Request::get("/get/teachers/1").send().await;
// Return the ZuordnungMessage with the given network object and the response.
let response = response
.map_err(|_| Msg::AppointmentsSent(RequestState::Error))?
.json()
.await
.map_err(|_| Msg::AppointmentsSent(RequestState::Error))?;
Ok(Msg::ReceivedTeachers(response))
}
pub async fn fetch_slots() -> Result<Msg, Msg> {
// Send the request to the specified URL.
let response = Request::get("/get/slots/1").send().await;
// Return the ZuordnungMessage with the given network object and the response.
let response = response
.map_err(|_| Msg::AppointmentsSent(RequestState::Error))?
.json()
.await
.map_err(|_| Msg::AppointmentsSent(RequestState::Error))?;
Ok(Msg::ReceivedSlots(response))
}
pub async fn fetch_unavailable() -> Result<Msg, Msg> {
// Send the request to the specified URL.
let response = Request::get("/get/unavailable").send().await;
// Return the ZuordnungMessage with the given network object and the response.
let response = response
.map_err(|_| Msg::AppointmentsSent(RequestState::Error))?
.json()
.await
.map_err(|_| Msg::AppointmentsSent(RequestState::Error))?;
Ok(Msg::ReceivedUnavailable(response))
}
pub async fn send_appointments(
appointments: Vec<PlannedAppointment>,
nutzer: Nutzer,
) -> Result<Msg, Msg> {
let response = Request::post("/send/appointments")
.json(&(&appointments, &nutzer))
.map_err(|_| Msg::AppointmentsSent(RequestState::Error))?
.send()
.await;
let response = response
.map_err(|_| Msg::AppointmentsSent(RequestState::Error))?
.json()
.await
.map_err(|_| Msg::AppointmentsSent(RequestState::Error))?;
Ok(Msg::AppointmentsSent(response))
}