// Bind(Include = "...") is used to avoid overposting attacks
        public async Task <ActionResult> EditInscripcion(EditInscripcionRecibidaViewModel viewModel)
        {
            try {
                var entity = _mapper.Map <Inscripcion>(viewModel.Inscripcion);

                if (entity.State == null)
                {
                    entity.State = Inscripcion.InscripcionStates.Active;
                }

                await _inscripcionEndpoint.Put(entity, _userSession.BearerToken);
            } catch (UnauthorizedRequestException) {
                return(RedirectToAction("AccessDenied", "Error"));
            } catch (BadRequestException ex) {
                viewModel.SetEstadosAsSelectList();

                ModelState.AddModelErrors(ex.Errors);

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

            return(Content("OK"));
        }
        // Search --> Búsqueda Mis Inscripciones --> TO-DO

        // Unsubscribe - POST Alumno/Inscripcion/ID
        public async Task <ActionResult> UnsubscribeInscripcion(int?id)
        {
            if (id == null)
            {
                return(Content("Debe incluir el id"));
            }

            try {
                await _inscripcionEndpoint.Get(id, _userSession.BearerToken);

                var inscripcionTask = _inscripcionEndpoint.Get(id, _userSession.BearerToken);
                await Task.WhenAll(inscripcionTask);

                var inscripcion = _mapper.Map <MvcInscripcionModel>(source: inscripcionTask.Result);

                if (inscripcion.State == MvcInscripcionModel.InscripcionStates.Active)
                {
                    inscripcion.State = MvcInscripcionModel.InscripcionStates.Canceled;
                }
                else
                {
                    return(Content("Esta inscripción ya fue cancelada, o ya ha finalizado la fecha del horario consulta"));
                }

                var entity = _mapper.Map <Inscripcion>(source: inscripcion);
                await _inscripcionEndpoint.Put(entity, _userSession.BearerToken);
            } catch (UnauthorizedRequestException) {
                return(RedirectToAction("AccessDenied", "Error"));
            } catch (NotFoundRequestException ex) {
                return(Content($"{ex.StatusCode}: Elemento no encontrado"));
            } catch (Exception ex) {
                return(RedirectToAction("SpecificError", "Error", new { error = ex.Message }));
            }

            // TempData may be used to check in the view whether the deletion was successful or not
            TempData["SuccessMessage"] = "Unsubscribe Sucessfully";
            return(Content("OK"));
        }