module Update.SchoolYearUpdate exposing ( handleActivateSchoolYear , handleActiveSchoolYearReceived , handleCreateSchoolYear , handleDeleteSchoolYear , handleSchoolYearActivated , handleSchoolYearCreated , handleSchoolYearDeleted , handleSchoolYearsReceived ) import Api.SchoolYear import Http import Task import Types.Model exposing (Model, NewSchoolYear, SchoolYear, ToastType(..)) import Types.Msg exposing (Msg(..)) handleCreateSchoolYear : Model -> ( Model, Cmd Msg ) handleCreateSchoolYear model = if String.isEmpty model.newSchoolYear.name || String.isEmpty model.newSchoolYear.startDate || String.isEmpty model.newSchoolYear.endDate then ( model, Task.perform (\_ -> ShowToast "Bitte alle Felder ausfüllen" WarningToast) (Task.succeed ()) ) else case model.token of Just token -> ( { model | isProcessing = True }, Api.SchoolYear.createSchoolYear token model.newSchoolYear ) Nothing -> ( model, Cmd.none ) handleSchoolYearCreated : Result Http.Error () -> Model -> ( Model, Cmd Msg ) handleSchoolYearCreated result model = case result of Ok _ -> case model.token of Just token -> ( { model | newSchoolYear = NewSchoolYear "" "" "" , error = Nothing , isProcessing = False } , Cmd.batch [ Api.SchoolYear.fetchSchoolYears token , Task.perform (\_ -> ShowToast "Schuljahr erfolgreich erstellt!" SuccessToast) (Task.succeed ()) ] ) Nothing -> ( model, Cmd.none ) Err err -> ( { model | isProcessing = False }, Cmd.none ) handleActivateSchoolYear : Int -> Model -> ( Model, Cmd Msg ) handleActivateSchoolYear id model = case model.token of Just token -> ( model, Api.SchoolYear.activateSchoolYear token id ) Nothing -> ( model, Cmd.none ) handleSchoolYearActivated : Result Http.Error () -> Model -> ( Model, Cmd Msg ) handleSchoolYearActivated result model = case result of Ok _ -> case model.token of Just token -> ( { model | error = Nothing } , Cmd.batch [ Api.SchoolYear.fetchSchoolYears token , Api.SchoolYear.fetchActiveSchoolYear token , Task.perform (\_ -> ShowToast "Schuljahr erfolgreich aktiviert!" SuccessToast) (Task.succeed ()) ] ) Nothing -> ( model, Cmd.none ) Err err -> ( model, Cmd.none ) handleDeleteSchoolYear : Int -> Model -> ( Model, Cmd Msg ) handleDeleteSchoolYear id model = case model.token of Just token -> ( model, Api.SchoolYear.deleteSchoolYear token id ) Nothing -> ( model, Cmd.none ) handleSchoolYearDeleted : Result Http.Error () -> Model -> ( Model, Cmd Msg ) handleSchoolYearDeleted result model = case result of Ok _ -> case model.token of Just token -> ( { model | error = Nothing } , Cmd.batch [ Api.SchoolYear.fetchSchoolYears token , Task.perform (\_ -> ShowToast "Schuljahr erfolgreich gelöscht" SuccessToast) (Task.succeed ()) ] ) Nothing -> ( model, Cmd.none ) Err err -> ( model, Cmd.none ) handleSchoolYearsReceived : Result Http.Error (List SchoolYear) -> Model -> ( Model, Cmd Msg ) handleSchoolYearsReceived result model = case result of Ok years -> ( { model | schoolYears = years }, Cmd.none ) Err err -> ( model, Cmd.none ) handleActiveSchoolYearReceived : Result Http.Error SchoolYear -> Model -> ( Model, Cmd Msg ) handleActiveSchoolYearReceived result model = case result of Ok year -> ( { model | activeSchoolYear = Just year }, Cmd.none ) Err _ -> ( { model | activeSchoolYear = Nothing }, Cmd.none )