In my application that manages Courses , I'm in need of a validation via javascript
. I have a screen where student signs up for a particular course, what I wanted is that when he clicks the signup button, the Enrollment completed successfully , and the other is when you try to sign up for the same course, you should see the message You are already enrolled in this course in this box. I tried to do it in function Alerta
but my message only drops to else
. Can anyone help me?
My View
@model IEnumerable<MeuProjeto.Models.Curso>
<h2>Catálogo de Cursos</h2>
<span class="pull-right">
@using (Html.BeginForm("Inscricao", "Curso", FormMethod.Get))
{
<p>
Pesquisar Curso: @Html.TextBox("pesquisar")
<input type="submit" value="Pesquisar" class="btn btn-primary" />
</p>
}
</span>
<table class="table table-hover">
<tr>
<th>
Curso
</th>
<th>
Sigla
</th>
<th>
Ementa
</th>
<th>
Inicio
</th>
<th>
Fim
</th>
<th>
Carga Horária
</th>
<th>
Turno
</th>
<th>
Status
</th>
<th>
Quantidade de Vagas
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Nome_Curso)
</td>
<td>
@Html.DisplayFor(modelItem => item.Sigla)
</td>
<td>
<a href="~/Curso/[email protected]">Ementa</a>
</td>
<td>
@Html.DisplayFor(modelItem => item.Dt_Inicio)
</td>
<td>
@Html.DisplayFor(modelItem => item.Dt_Fim)
</td>
<td>
@Html.DisplayFor(modelItem => item.Carga_Horaria)
</td>
<td>
@Html.DisplayFor(modelItem => item.Turno)
</td>
<td>
@Html.DisplayFor(modelItem => item.Qtd_Vagas)
</td>
<td>
<div class="btn-group">
<div class="col-md-offset-2 col-md-10">
@using (Html.BeginForm("Inscricao", "Curso", FormMethod.Post))
{
if (item.Qtd_Vagas > 0)
{
<a class="inscricao btn btn-success" onclick="$(this).parents('form').submit(), Alerta()">Inscrição</a>
<input type="hidden" value="@item.Id" name="inscricaoId" />
}
else
{
<input type="submit" value="Não há vagas" name="detalhes" class="inscricao btn btn-default" disabled="disabled"/>
}
}
</div>
</div>
</td>
</tr>
}
</table>
<div class="form-group">
<a href="@Url.Action("HomeAluno", "Home")"><input type="button" value="Voltar" class="btn btn-danger" /></a>
</div>
<br />
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script>
$(document).ready(function() {
$(".inscricao").click(function() {
$.ajax({
type: "POST",
url: "Inscricao/",
data: { inscricaoId: $(this).data("inscricaoid") },
success: function() {
window.location.reload();
}
});
});
});
</script>
<script>
<--! TENTEI FAZER ASSIM, MAS SÓ ME APARECE A MENSAGEM DO ELSE -->
function Alerta() {
if (document.getElementsByClassName("inscricao").value == null) {
alert("Cadastro realizado com Sucesso!");
} else {
alert("Você já está inscrito nesse Curso!");
}
}
</script>
}
My Action Inscription
[HttpPost]
public ActionResult Inscricao(int inscricaoId, string pesquisar)
{
using (var scope = new TransactionScope())
{
//Aqui pega o usuario logado
Aluno aluno = db.Alunos.FirstOrDefault(a => a.Usuario == User.Identity.Name);
if (aluno == null)
return View("MeusCursos");
//Aqui pega o curso selecionado
var curso = db.Cursos.FirstOrDefault(c => c.Id == inscricaoId);
if (curso == null)
return View("MeusCursos");
//Aqui verifica se o aluno já está inscrito em algum curso
var alunoCurso = db.AlunoCursos.FirstOrDefault(ac => ac.Curso.Id == inscricaoId && ac.Aluno.Usuario == User.Identity.Name);
if (alunoCurso != null)
{
return RedirectToAction("Inscricao", "Curso");
}
//Aqui faz a associação do Aluno e Curso
alunoCurso = new AlunoCurso
{
Aluno = aluno,
Curso = curso
};
db.AlunoCursos.Add(alunoCurso);
db.SaveChanges();
//Aqui decrementa a quantidade de vagas dos Cursos
curso.Qtd_Vagas--;
db.Entry(curso).State = EntityState.Modified;
db.SaveChanges();
scope.Complete();
}
var cursos = from c in db.Cursos select c;
if (!String.IsNullOrEmpty(pesquisar))
{
cursos = cursos.Where(c => c.Nome_Curso.Contains(pesquisar));
}
cursos = cursos.OrderBy(a => a.Nome_Curso);
return View(cursos.ToList());
}