public async Task <OneOf <ModelWithErrors <ViewModel>, PublishResult> > Handle(Command request, CancellationToken cancellationToken)
        {
            var providerId = _providerContextProvider.GetProviderId();

            if (!request.Confirm)
            {
                var(uploadRows, uploadStatus) = await _fileUploadProcessor.GetCourseUploadRowsForProvider(providerId);

                var vm = await CreateViewModel(uploadRows);

                var validationResult = new ValidationResult(new[]
                {
                    new ValidationFailure(nameof(request.Confirm), "Confirm you want to publish these courses")
                });
                return(new ModelWithErrors <ViewModel>(vm, validationResult));
            }

            var publishResult = await _fileUploadProcessor.PublishCourseUploadForProvider(providerId, _currentUserProvider.GetCurrentUser());

            if (publishResult.Status == PublishResultStatus.Success)
            {
                var journeyInstance = _journeyInstanceProvider.GetOrCreateInstance(() => new PublishJourneyModel());
                journeyInstance.UpdateState(state => state.CoursesPublished = publishResult.PublishedCount);
            }

            return(publishResult);
        }
Example #2
0
        public async Task <IActionResult> Get(Request request)
        {
            _journeyInstance = _journeyInstanceProvider.GetOrCreateInstance(() => new JourneyModel());

            return(await _mediator.SendAndMapResponse(
                       request,
                       vm => View(vm)));
        }
        public async Task <IActionResult> Get(
            Request request,
            [LocalUrl(viewDataKey: "ReturnUrl")] string returnUrl)
        {
            _journeyInstance = _journeyInstanceProvider.GetOrCreateInstance(() => new JourneyModel());

            return(await _mediator.SendAndMapResponse(
                       request,
                       vm => View(vm)));
        }
        public async Task <IActionResult> SelectTLevel()
        {
            _journeyInstance = _journeyInstanceProvider.GetOrCreateInstance(
                () => new AddTLevelJourneyModel());

            if (!_journeyInstanceProvider.IsCurrentInstance(_journeyInstance))
            {
                return(RedirectToAction()
                       .WithProviderContext(_providerContext)
                       .WithJourneyInstanceUniqueKey(_journeyInstance));
            }

            var query = new SelectTLevel.Query()
            {
                ProviderId = _providerContext.ProviderInfo.ProviderId
            };

            return(await _mediator.SendAndMapResponse(query, vm => View("SelectTLevel", vm)));
        }
Example #5
0
        public IActionResult Index([FromQuery] string postcode, [FromQuery] string returnUrl)
        {
            var journeyInstance = _journeyInstanceProvider.GetOrCreateInstance(
                () => new AddVenueJourneyModel(),
                new PropertiesBuilder()
                .Add(ReturnUrlJourneyInstancePropertyKey, returnUrl)
                .Build());

            if (!_journeyInstanceProvider.IsCurrentInstance(journeyInstance))
            {
                return(RedirectToAction()
                       .WithProviderContext(_providerContextProvider.GetProviderContext())
                       .WithJourneyInstanceUniqueKey(journeyInstance));
            }

            return(View(
                       nameof(PostcodeSearch),
                       new PostcodeSearch.SearchCommand()
            {
                Postcode = postcode
            }));
        }