I have the following situation, I need to bring in my view the checklist (tbl_sistema_categoria_atendimento_checklist) that the user has registered for a certain category, the checklist should only be shown on the screen if the user selects a category that has a checklist.
Intheimageabove(tryingtofindasolution),IcreatedaViewinwhichIcallwhentheuserclicksthecategorythathasachecklist,however,itwasnotinthebestshapebecauseIcannotknowwhichusertheuserselectedandunselectedwhichwouldsendalltheoptionstothebankinthetbl_checklist_categorization).Iwouldliketoknowhowtoconsistentlybringthechecklistofthebankandstorethedueinit.
Andinthecontroldevelopedtogettothegivenchecklististhus.
Get:
publicActionResultIndex(long?RescueSessionID){intidusuarioLogado=0;try{if(Session["usuarioLogado"] != null)
{
//id da entidade logada
idusuarioLogado = ((tbl_usuario)Session["usuarioLogado"]).id_usuario;
}
}
catch
{
TempData["Message"] = Alert.Show("Login expirado!", Alert.Tipo.danger);
return RedirectToAction("login", "Home");
}
ViewBag.id_sistemas = new SelectList(db.tbl_sistema_empresa.Where(x => x.ativo == true).Select(x => x.tbl_sistema).OrderBy(x => x.sistema).ToList(), "id_sistema", "sistema");
ViewBag.id_categoria = new SelectList(db.tbl_categoria_atendimento.OrderBy(x => x.categoria_atendimento).Where(x => x.ativo == true), "id_categoria_atendimento", "categoria_atendimento");
//ViewBag.id_categoria = new SelectList(db.tbl_sistema_categoria_atendimento.Where(x => x.tbl_categoria_atendimento.id_categoria_atendimento == db.tbl_sistema_categoria_atendimento.FirstOrDefault().id_categoria_atendimento).Select(x => x.tbl_categoria_atendimento), "id_categoria_atendimento", "categoria_atendimento");
ViewBag.id_sub_categoria_atendimento = new SelectList(db.tbl_categoria_sub_categoria_atendimento.Where(x => x.tbl_categoria_atendimento.id_categoria_atendimento == db.tbl_categoria_atendimento.OrderBy(c => c.categoria_atendimento).Where(c => c.ativo == true).FirstOrDefault().id_categoria_atendimento).Select(x => x.tbl_sub_categoria_atendimento), "id_sub_categoria_atendimento", "sub_categoria_atendimento");
ViewBag.incidente = new SelectList(new List<SelectListItem> { new SelectListItem { Text = "Incidente", Value = "true" }, new SelectListItem { Text = "Requisição", Value = "false" } }, "Value", "Text");
ViewBag.estado = new SelectList(new List<SelectListItem> { new SelectListItem { Text = "Aberto", Value = "1" } }, "Value", "Text");
//aqui resgato os dados da sessão do logmein
tbl_atendimento tbl_atendimento = db.tbl_atendimento.Where(x => x.sessionid == RescueSessionID).FirstOrDefault();
////aqui verifico se já foi respondido o atendimento
//if (tbl_atendimento.tbl_categoria_sub_categoria.Where(x => x.id_usuario_cadastro == idusuarioLogado).Count() > 0)
//{
// //se o atendimento já foi respondido pelo funcionario então marco com sim, assim não apresenta o botão de salvar
// TempData["Respondida"] = "sim";
// TempData["Message"] = Alert.Show("Você já categorizou esse atendimento!", Alert.Tipo.warning);
//}
return View(tbl_atendimento);
}
Post:
[HttpPost]
public ActionResult Index(int id_sistemas)
{
try
{
int idusuarioLogado = 0;
try
{
//id da entidade logada
idusuarioLogado = ((tbl_usuario)Session["usuarioLogado"]).id_usuario;
}
catch
{
TempData["Message"] = Alert.Show("Login expirado!", Alert.Tipo.danger);
return RedirectToAction("login", "Home");
}
int id_categoria_atendimento = int.Parse(Request["id_categoria_atendimento"]);
int id_sub_categoria_atendimento = 0;
if (Request["id_sub_categoria_atendimento"] != null)
{
id_sub_categoria_atendimento = int.Parse(Request["id_sub_categoria_atendimento"]);
}
//usado para quando o funcionario informar o id da tarefa do redmine
int id_redmine = 0;
if (!string.IsNullOrEmpty(Request["id_redmine"]))
{
id_redmine = int.Parse(Request["id_redmine"]);
}
string descricao = Request["descricao"];
long Session_ID = long.Parse(Request["sessionid"]);
tbl_atendimento tbl_atendimento = db.tbl_atendimento.Where(x => x.sessionid == Session_ID).FirstOrDefault();
tbl_categoria_sub_categoria tbl_categoria_sub_categoria = new tbl_categoria_sub_categoria();
tbl_categoria_sub_categoria.incidente = bool.Parse(Request["incidente"]);
tbl_categoria_sub_categoria.id_atendimento = tbl_atendimento.id_atendimento;
tbl_categoria_sub_categoria.id_categoria_atendimento = id_categoria_atendimento;
if (id_sub_categoria_atendimento > 0)
{
tbl_categoria_sub_categoria.id_sub_categoria_atendimento = id_sub_categoria_atendimento;
}
else
{
tbl_categoria_sub_categoria.id_sub_categoria_atendimento = null;
}
//aqui resgato a criticidade e urgencia
tbl_categoria_sub_categoria_atendimento tbl_categoria_sub_categoria_atendimento = db.tbl_categoria_sub_categoria_atendimento.Where(x => x.id_categoria_atendimento == id_categoria_atendimento && x.id_sub_categoria_atendimento == id_sub_categoria_atendimento).FirstOrDefault();
tbl_categoria_sub_categoria.criticidade = tbl_categoria_sub_categoria_atendimento.criticidade;
tbl_categoria_sub_categoria.urgencia = tbl_categoria_sub_categoria_atendimento.urgencia;
tbl_categoria_sub_categoria.tma = tbl_categoria_sub_categoria_atendimento.tma;
tbl_categoria_sub_categoria.descricao_atendimento = descricao;
tbl_categoria_sub_categoria.id_usuario_cadastro = idusuarioLogado;
tbl_categoria_sub_categoria.data_cadastro = DateTime.Now;
tbl_categoria_sub_categoria.data_alteracao = DateTime.Now;
tbl_categoria_sub_categoria.id_usuario_alteracao = idusuarioLogado;
tbl_categoria_sub_categoria.id_usuario_cadastro = idusuarioLogado;
//db.Entry(tbl_categoria_sub_categoria).State = System.Data.Entity.EntityState.Added;
//aqui seto o estado do atendimento
tbl_estado_categoria_sub_categoria tbl_estado_categoria_sub_categoria = new tbl_estado_categoria_sub_categoria();
tbl_estado_categoria_sub_categoria.data_estado = DateTime.Now;
tbl_estado_categoria_sub_categoria.estado = int.Parse(Request["estado"]);
tbl_estado_categoria_sub_categoria.id_usuario_cadastro = idusuarioLogado;
tbl_estado_categoria_sub_categoria.tbl_categoria_sub_categoria = tbl_categoria_sub_categoria;
//db.Entry(tbl_estado_categoria_sub_categoria).State = System.Data.Entity.EntityState.Added;
tbl_atendimento_sistema tbl_atendimento_sistema = new tbl_atendimento_sistema();
tbl_atendimento_sistema.tbl_categoria_sub_categoria = tbl_categoria_sub_categoria;
tbl_atendimento_sistema.id_sistema = id_sistemas;
//if (id_sistemas.Count() > 0)
//{
// tbl_atendimento_sistema tbl_atendimento_sistema;
// foreach (int id_sis in id_sistemas)
// {
// tbl_atendimento_sistema = new tbl_atendimento_sistema();
// tbl_atendimento_sistema.tbl_categoria_sub_categoria = tbl_categoria_sub_categoria;
// tbl_atendimento_sistema.id_sistema = id_sis;
// db.tbl_atendimento_sistema.Add(tbl_atendimento_sistema);
// }
//}
//aqui seto o checklist da categoria
var tbl_sistema_categoria_atendimento_checklist = db.tbl_sistema_categoria_atendimento_checklist.Where(x => x.id_sistema == id_sistemas && x.id_categoria_atendimento == id_categoria_atendimento) ;
foreach (var item in tbl_sistema_categoria_atendimento_checklist)
{
tbl_checklist_categorizacao tbl_checklist_categorizacao = new tbl_checklist_categorizacao();
tbl_checklist_categorizacao.id_sistema = id_sistemas;
tbl_checklist_categorizacao.id_categoria_atendimento = id_categoria_atendimento;
tbl_checklist_categorizacao.id_usuario_cadastro = idusuarioLogado;
tbl_checklist_categorizacao.feito = item.ativo;
tbl_checklist_categorizacao.descricao = item.descricao;
tbl_checklist_categorizacao.data_cadastro = DateTime.Now;
tbl_checklist_categorizacao.tbl_categoria_sub_categoria = tbl_categoria_sub_categoria;
db.tbl_checklist_categorizacao.Add(tbl_checklist_categorizacao);
}
//db.SaveChanges();
TempData["Message"] = Alert.Show("Inserido com sucesso!", Alert.Tipo.success);
return RedirectToAction("Details", "atendimento", new { id = tbl_atendimento.id_atendimento });
}
catch (Exception ex)
{
TempData["Message"] = Alert.Show("Falha: " + ex.Message, Alert.Tipo.danger);
long Session_ID = long.Parse(Request["sessionid"]);
tbl_atendimento tbl_atendimento = db.tbl_atendimento.Where(x => x.sessionid == Session_ID).FirstOrDefault();
return RedirectToAction("Details", "atendimento", new { id = tbl_atendimento.id_atendimento });
}
}