public async Task <ActionResult> Create() { try { // These tasks run in parallel until they are awaited by Task.WhenAll method var alumnosTask = _usuarioEndpoint.GetAll(_userSession.BearerToken); var horariosConsultaFechadosTask = _horarioConsultaFechadoEndpoint.GetAll(_userSession.BearerToken); await Task.WhenAll(alumnosTask, horariosConsultaFechadosTask); var alumnos = _mapper.Map <IEnumerable <MvcUsuarioModel> >(source: alumnosTask.Result); var horarioConsultaFechados = _mapper.Map <IEnumerable <MvcHorarioConsultaFechadoModel> >(source: horariosConsultaFechadosTask.Result); var viewModel = new CreateInscripcionViewModel(horariosConsultaFechados: horarioConsultaFechados, alumnos: alumnos); return(PartialView("_Create", viewModel)); } catch (UnauthorizedRequestException) { return(RedirectToAction("AccessDeniedPartial", "Error")); } catch (Exception ex) { return(RedirectToAction("SpecificErrorPartial", "Error", new { error = ex.Message })); } }
public async Task <ActionResult> Create(CreateInscripcionViewModel viewModel) { try { var entity = _mapper.Map <Inscripcion>(source: viewModel.Inscripcion); entity.State = Inscripcion.InscripcionStates.Active; await _inscripcionEndpoint.Post(entity, _userSession.BearerToken); } catch (UnauthorizedRequestException) { return(RedirectToAction("AccessDeniedPartial", "Error")); } catch (BadRequestException ex) { var alumnosTask = _usuarioEndpoint.GetAll(_userSession.BearerToken); var horariosConsultaFechadosTask = _horarioConsultaFechadoEndpoint.GetAll(_userSession.BearerToken); await Task.WhenAll(alumnosTask, horariosConsultaFechadosTask); var alumnos = _mapper.Map <IEnumerable <MvcUsuarioModel> >(source: alumnosTask.Result); var materias = _mapper.Map <IEnumerable <MvcHorarioConsultaFechadoModel> >(source: horariosConsultaFechadosTask.Result); viewModel.SetAlumnosAsSelectList(alumnos); viewModel.SetHorariosConsultaFechadosAsSelectList(materias); viewModel.SetEstadosAsSelectList(); ModelState.AddModelErrors(ex.Errors); return(PartialView("_Create", viewModel)); } catch (Exception ex) { return(RedirectToAction("SpecificErrorPartial", "Error", new { error = ex.Message })); } return(Content("OK")); }