Ejemplo n.º 1
0
        public async Task <ActionResult> Apply(string id)
        {
            return(await Task.Run <ActionResult>(() =>
            {
                var response = _apprenticeshipApplicationMediator.Apply(UserContext.CandidateId, id);

                switch (response.Code)
                {
                case ApprenticeshipApplicationMediatorCodes.Apply.OfflineVacancy:
                    return RedirectToRoute(CandidateRouteNames.ApprenticeshipDetails, new { id });

                case ApprenticeshipApplicationMediatorCodes.Apply.VacancyNotFound:
                    SetUserMessage(response.Message.Text, response.Message.Level);
                    return RedirectToRoute(CandidateRouteNames.MyApplications);

                case ApprenticeshipApplicationMediatorCodes.Apply.HasError:
                    return RedirectToRoute(CandidateRouteNames.MyApplications);

                case ApprenticeshipApplicationMediatorCodes.Apply.IncorrectState:
                    SetUserMessage(response.Message.Text, response.Message.Level);
                    return RedirectToRoute(CandidateRouteNames.MyApplications);

                case ApprenticeshipApplicationMediatorCodes.Apply.Ok:
                    return View(response.ViewModel);
                }

                throw new InvalidMediatorCodeException(response.Code);
            }));
        }