I'm trying to do in the code, a page edit, then the user on this edit page, it can delete the record, and if it delete, the system has to check, if there is a next record, it goes to edit screen next, if the next id does not exist, it tries the previous record, and if it has neither the next nor the previous one, it returns to the page to include a new one. It follows the logic I'm doing, but it does not always work.
[HttpPost]
public ActionResult ExcluirProduto(int id)
{
var result = false;
var item = db.Produtos.Find(id);
if (item != null)
{
db.Produtos.Remove(item);
db.SaveChanges();
result = true;
}
var itemProx = db.Produtos.Where(e => e.Id >= id).OrderBy(e => e.Id).Skip(1).Take(1).FirstOrDefault();
var itemAnte = db.Produtos.Where(e => e.Id <= id).OrderByDescending(e => e.Id).Skip(1).Take(1).FirstOrDefault();
int idprox = 0;
int idant = 0;
try
{
idprox = itemProx.Id;
}
catch { idprox = 0; }
try
{
idant = itemAnte.Id;
}
catch { idant = 0; }
try
{
if (idprox == 0 && idant == 0)
{
id = 0;
}
else
{
if (idprox != 0)
{
id = (itemProx.Id);
}
else
{
id = (itemAnte.Id);
}
}
return Json(new { Resultado = result, id });
}
catch {
id = 0;
return Json(new { Resultado = result, id });
}
}
And here is my AJAX that redirects the page:
function Excluir(idproduto) {
var idproduto = document.getElementById("Id").value;
var url = "/Produto/ExcluirProduto";
$.ajax({
url: url,
data: { id: idproduto },
datatype: "json",
type: "POST",
success: function (data) {
if (data.resultado) {
alert('Excluído com sucesso.');
if (data.id != 0) {
window.location.href = "/Produto/Editar/" + (data.id);
}
else {
window.location.href = "/Produto/Novo";
}
}
}
})
}
Remembering that I use MVC Core - Page Razor.