Beispiel #1
0
        public DetailDataListUseCaseResponse Handle(DetailDataListUseCaseRequest request)
        {
            var filmDirectors = new List <UserDetail>();

            request.ProgressPresenter.Initialize(TaskCount);
            request.ProgressPresenter.SetMessage("データを取得しています。しばらくお待ち下さい。");

            for (int i = 0; i < TaskCount; i++)
            {
                if (request.ProgressPresenter.IsCanceled)
                {
                    request.ProgressPresenter.SetMessage("取り消しています。しばらくお待ち下さい。");
                    Thread.Sleep(TimeSpan.FromSeconds(3));
                    return(new DetailDataListUseCaseResponse(ResponseResultType.Canceled, "ユーザーによってキャンセルされました。", null));
                }

                Thread.Sleep(TimeSpan.FromSeconds(1));

                var filmDirector = FilmDirectorCache.Cache.TryGetValue(i, out var value) ? value : throw new InvalidOperationException();
                filmDirector.CreateDateTime = DateTime.Now;
                filmDirectors.Add(filmDirector);

                request.ProgressPresenter.UpdateValue(i + 1);
            }

            request.ProgressPresenter.SetMessage("完了までもうしばらくお待ち下さい。");
            Thread.Sleep(TimeSpan.FromSeconds(3));

            return(new DetailDataListUseCaseResponse(ResponseResultType.Success, string.Empty, filmDirectors));
        }
        private async void ExecuteDetailDataListCommand()
        {
            DetailDataListUseCaseResponse response = null;

            UserDetailDataList.Clear();

            await DialogBus.ExecuteCancellable(p =>
            {
                var request = new DetailDataListUseCaseRequest(ProgressPresenter);
                response    = _detailDataListUseCase.Handle(request);
            });

            if (response.ResultType == ResponseResultType.Success)
            {
                UserDetailDataList.AddRange(response.GetUserDetails.Select(x => new UserDetailData(x)));
                await DialogBus.Information(DialogData.Build("データ取得 完了", "データの取得が完了しました。"));
            }
            else if (response.ResultType == ResponseResultType.Failed)
            {
                await DialogBus.Error(DialogData.Build("データ取得 失敗"
                                                       , $"データの取得に失敗しました。{Environment.NewLine}"
                                                       + $"{response.Cause}"));
            }
        }