Beispiel #1
0
        public async Task HandleSearchBaseTermsAction(SearchBaseTermsAction action, IDispatcher dispatcher)
        {
            var returnCode    = HttpStatusCode.OK;
            var currentString = "true";

            if (!action.Current)
            {
                currentString = "false";
            }
            var translationResult = new RootObject <ResultBaseTranslation>();

            var hasTranslations = action.HasTranslations switch
            {
                EnumHasTranslations.WithTranslations => "true",
                EnumHasTranslations.WithoutTranslations => "false",
                _ => string.Empty
            };

            var queryString =
                $"{Const.BaseTerms}?text={action.SearchText}&page={action.SearchPageNr}&per_page={action.ItemsPerPage}&current={currentString}&base_term_language_id={action.BaseTermLangId}&has_translations={hasTranslations}";

            if (action.TranslationLangId != Const.PlLangId)
            {
                queryString += $"&translation_language_id={action.TranslationLangId}";
            }

            try
            {
                translationResult = await _httpClient.GetFromJsonAsync <RootObject <ResultBaseTranslation> >(
                    queryString, Const.HttpClientOptions);
            }
            catch (Exception e)
            {
                dispatcher.Dispatch(new NotificationAction(e.Message, SnackbarColor.Danger));
                returnCode = HttpStatusCode.BadRequest;
            }

            if (translationResult is null)
            {
                dispatcher.Dispatch(new SearchBaseTermsResultAction(
                                        new RootObject <ResultBaseTranslation>(),
                                        returnCode: returnCode));
                dispatcher.Dispatch(new NotificationAction(action.NoResults, SnackbarColor.Warning));
                return;
            }

            if (translationResult.Count == 0)
            {
                //no data result
                dispatcher.Dispatch(new NotificationAction(action.NoResults, SnackbarColor.Warning));
            }

            dispatcher.Dispatch(new SearchBaseTermsResultAction(translationResult,
                                                                returnCode: returnCode));

            if (returnCode != HttpStatusCode.BadRequest)
            {
                dispatcher.Dispatch(
                    new NotificationAction(action.SearchBaseTermMessage, SnackbarColor.Success));
            }
        }
Beispiel #2
0
 public static SearchState ReduceSearchBaseTermsAction(SearchState state, SearchBaseTermsAction action) =>