public async Task <ActionResult> CreateHorario(CreateOwnHorarioConsultaViewModel viewModel)
        {
            try
            {
                Usuario user = await _usuarioEndpoint.GetCurrentUsuario(token : _userSession.BearerToken);

                viewModel.SetProfesor(user.Id);

                var horarioConsulta = _mapper.Map <HorarioConsulta>(source: viewModel.HorarioConsulta);

                await _horarioConsultaEndpoint.Post(horarioConsulta, _userSession.BearerToken);
            }
            catch (UnauthorizedRequestException)
            {
                return(RedirectToAction("AccessDenied", "Error"));
            }
            catch (BadRequestException ex)
            {
                IEnumerable <Materia> entities = await _materiaEndpoint.GetAll(_userSession.BearerToken);;

                var materias = _mapper.Map <IEnumerable <MvcMateriaModel> >(source: entities);
                viewModel.SetMateriasAsSelectList(materias);
                viewModel.SetDiasSemanaAsSelectList();

                ModelState.AddModelErrors(ex.Errors);

                return(PartialView("_CreateOwnHorario", viewModel));
            }
            catch (Exception ex)
            {
                return(RedirectToAction("SpecificError", "Error", new { error = ex.Message }));
            }

            return(Content("OK"));
        }
        public async Task <ActionResult> Subscribe(
            [Bind(Include = "HorarioConsultaFechadoId, Observation, Topic")] MvcInscripcionModel inscripcion)
        {
            try {
                Usuario user = await _usuarioEndpoint.GetCurrentUsuario(token : _userSession.BearerToken);

                inscripcion.State    = MvcInscripcionModel.InscripcionStates.Active;
                inscripcion.AlumnoId = user.Id;

                var entity = _mapper.Map <Inscripcion>(source: inscripcion);

                await _inscripcionEndpoint.Post(entity, _userSession.BearerToken);
            } catch (UnauthorizedRequestException) {
                return(RedirectToAction("AccessDeniedPartial", "Error"));
            } catch (BadRequestException ex) {
                HorarioConsultaFechado entity = await _horarioConsultaFechadoEndpoint.Get(inscripcion.HorarioConsultaFechadoId, _userSession.BearerToken);

                var horarioFechado = _mapper.Map <MvcHorarioConsultaFechadoModel>(source: entity);

                inscripcion.HorarioConsultaFechado = horarioFechado;

                ModelState.AddModelErrors(ex.Errors);

                return(PartialView("_Subscribe", inscripcion));
            } catch (Exception ex) {
                return(RedirectToAction("SpecificErrorPartial", "Error", new { error = ex.Message }));
            }

            return(Content("OK"));
        }
        public async Task <ActionResult> Edit()
        {
            try
            {
                Usuario entity = await _usuarioEndpoint.GetCurrentUsuario(_userSession.BearerToken);

                var currentUsuario = _mapper.Map <MvcUsuarioModel>(entity);

                return(View(currentUsuario));
            }
            catch (UnauthorizedRequestException)
            {
                return(RedirectToAction("AccessDenied", "Error"));
            }
            catch (Exception ex)
            {
                return(RedirectToAction("SpecificError", "Error", new { error = ex.Message }));
            }
        }