public JsonResult EditarChamado(ChamadoModelEdicao model)
        {
            try
            {
                Cliente c = (Cliente)Session["clientelogado"];

                ChamadoDal d = new ChamadoDal();

                Chamado chamado = d.FindById(model.IdChamado);

                if (chamado.Situacao.Equals("Aberto"))
                {
                    chamado.Assunto   = model.Assunto;
                    chamado.Descricao = model.Descricao;

                    d.SaveOrUpdate(chamado);

                    return(Json("Chamado Atualizado."));
                }
                else
                {
                    return(Json("Chamado não pode ser alterado, o mesmo já se encontra fechado."));
                }
            }
            catch (Exception e)
            {
                return(Json(e.Message));
            }
        }
        public JsonResult ListarChamado()
        {
            try
            {
                Funcionario f = (Funcionario)Session["funcionariologado"];

                ChamadoDal d = new ChamadoDal();

                var list = new List <ChamadoModelResultado>();

                foreach (Chamado chamado in d.FindAll())
                {
                    ChamadoModelResultado resultado = new ChamadoModelResultado();

                    resultado.IdChamado    = chamado.IdChamado;
                    resultado.Assunto      = chamado.Assunto;
                    resultado.Situacao     = chamado.Situacao;
                    resultado.DataAbertura = chamado.DataAbertura;
                    resultado.Cliente_Nome = chamado.Cliente.Nome;

                    list.Add(resultado);
                }

                return(Json(list));
            }
            catch (Exception e)
            {
                return(Json(e.Message));
            }
        }
        public JsonResult ExcluirChamado(ChamadoModelDelete model)
        {
            try
            {
                Cliente c = (Cliente)Session["clientelogado"];

                ChamadoDal d       = new ChamadoDal();
                Chamado    chamado = d.FindById(model.IdChamado);

                if (chamado.Situacao.Equals("Aberto"))
                {
                    d.Delete(chamado);

                    return(Json("Chamado excluído."));
                }
                else
                {
                    return(Json("Chamado não pode ser excluído, o mesmo já se encontra fechado."));
                }
            }
            catch (Exception e)
            {
                return(Json(e.Message));
            }
        }
        public JsonResult EditarChamado(ChamadoModelEdicao model)
        {
            try
            {
                Funcionario f = (Funcionario)Session["funcionariologado"];

                ChamadoDal d = new ChamadoDal();

                Chamado chamado = d.FindById(model.IdChamado);

                if (chamado.Situacao == "Aberto")
                {
                    chamado.Solucao        = model.Solucao;
                    chamado.Situacao       = "Fechado";
                    chamado.DataFechamento = DateTime.Now;
                    chamado.Funcionario    = f;

                    d.SaveOrUpdate(chamado);

                    return(Json("Chamado Atualizado."));
                }
                else
                {
                    return(Json("Esse chamado já foi fechado."));
                }
            }
            catch (Exception e)
            {
                return(Json(e.Message));
            }
        }
        public JsonResult ConsultarChamado_Situacao(ChamadoModelResultado model)
        {
            try
            {
                ChamadoDal d = new ChamadoDal();

                var list = new List <ChamadoModelResultado>();

                foreach (Chamado chamado in d.FindAllBySituacao(model.Situacao))
                {
                    if (chamado.Situacao.Equals("Aberto"))
                    {
                        ChamadoModelResultado resultado = new ChamadoModelResultado();

                        resultado.IdChamado    = chamado.IdChamado;
                        resultado.Assunto      = chamado.Assunto;
                        resultado.Descricao    = chamado.Descricao;
                        resultado.Situacao     = chamado.Situacao;
                        resultado.DataAbertura = chamado.DataAbertura;
                        resultado.Cliente_Nome = chamado.Cliente.Nome;

                        list.Add(resultado);
                    }
                    else
                    {
                        ChamadoModelResultado resultado = new ChamadoModelResultado();

                        resultado.IdChamado        = chamado.IdChamado;
                        resultado.Assunto          = chamado.Assunto;
                        resultado.Descricao        = chamado.Descricao;
                        resultado.Situacao         = chamado.Situacao;
                        resultado.DataAbertura     = chamado.DataAbertura;
                        resultado.Solucao          = chamado.Solucao;
                        resultado.Cliente_Nome     = chamado.Cliente.Nome;
                        resultado.Funcionario_Nome = chamado.Funcionario.Nome;
                        resultado.DataFechamento   = chamado.DataFechamento.ToString("dd/MM/yyyy");

                        list.Add(resultado);
                    }
                }

                return(Json(list));
            }
            catch (Exception e)
            {
                return(Json(e.Message));
            }
        }
        public JsonResult ListarChamado()
        {
            try
            {
                Cliente c = (Cliente)Session["clientelogado"];

                ChamadoDal d = new ChamadoDal();

                var list = d.FindAllByCliente(c);

                return(Json(list));
            }
            catch (Exception e)
            {
                return(Json(e.Message));
            }
        }
        public JsonResult ConsultarChamado_ID(ChamadoModelResultado model)
        {
            try
            {
                ChamadoDal d = new ChamadoDal();

                Chamado chamado = d.FindById(model.IdChamado);

                var list = new List <ChamadoModelResultado>();

                if (chamado.Situacao.Equals("Aberto"))
                {
                    model.Assunto      = chamado.Assunto;
                    model.Descricao    = chamado.Descricao;
                    model.Situacao     = chamado.Situacao;
                    model.DataAbertura = chamado.DataAbertura;
                    model.Cliente_Nome = chamado.Cliente.Nome;

                    list.Add(model);

                    return(Json(list));
                }
                else
                {
                    model.Assunto          = chamado.Assunto;
                    model.Descricao        = chamado.Descricao;
                    model.Situacao         = chamado.Situacao;
                    model.DataAbertura     = chamado.DataAbertura;
                    model.Solucao          = chamado.Solucao;
                    model.Cliente_Nome     = chamado.Cliente.Nome;
                    model.Funcionario_Nome = chamado.Funcionario.Nome;
                    model.DataFechamento   = chamado.DataFechamento.ToString("dd/MM/yyyy");

                    list.Add(model);

                    return(Json(list));
                }
            }
            catch (Exception e)
            {
                return(Json(e.Message));
            }
        }
        public JsonResult EdicaoChamado(ChamadoModelEdicao model)
        {
            try
            {
                Cliente c = (Cliente)Session["clientelogado"];

                ChamadoDal d = new ChamadoDal();

                Chamado chamado = d.FindById(model.IdChamado);

                model.Assunto   = chamado.Assunto;
                model.Descricao = chamado.Descricao;

                return(Json(model));
            }
            catch (Exception e)
            {
                return(Json(e.Message));
            }
        }
        public JsonResult EdicaoChamado(ChamadoModelEdicao model)
        {
            try
            {
                Cliente c = (Cliente)Session["clientelogado"];

                ChamadoDal d = new ChamadoDal();

                Chamado chamado = d.FindById(model.IdChamado);

                model.Assunto = chamado.Assunto;
                model.Descricao = chamado.Descricao;

                return Json(model);
            }
            catch (Exception e)
            {
                return Json(e.Message);
            }
        }
        public JsonResult EdicaoChamado(ChamadoModelEdicao model)
        {
            try
            {
                Funcionario f = (Funcionario)Session["funcionariologado"];

                ChamadoDal d = new ChamadoDal();

                Chamado chamado = d.FindById(model.IdChamado);

                if (chamado.Situacao.Equals("Aberto"))
                {
                    model.Assunto = chamado.Assunto;
                    model.Descricao = chamado.Descricao;
                    model.Situacao = chamado.Situacao;
                    model.DataAbertura = chamado.DataAbertura;
                    model.Solucao = chamado.Solucao;
                    model.Cliente_Nome = chamado.Cliente.Nome;

                    return Json(model);
                }
                else
                {
                    model.Assunto = chamado.Assunto;
                    model.Descricao = chamado.Descricao;
                    model.Situacao = chamado.Situacao;
                    model.DataAbertura = chamado.DataAbertura;
                    model.DataFechamento = chamado.DataFechamento.ToString("dd/MM/yyyy");
                    model.Solucao = chamado.Solucao;
                    model.Cliente_Nome = chamado.Cliente.Nome;
                    model.Funcionario_Nome = chamado.Funcionario.Nome;

                    return Json(model);
                }

            }
            catch (Exception e)
            {
                return Json(e.Message);
            }
        }
        public JsonResult EdicaoChamado(ChamadoModelEdicao model)
        {
            try
            {
                Funcionario f = (Funcionario)Session["funcionariologado"];

                ChamadoDal d = new ChamadoDal();

                Chamado chamado = d.FindById(model.IdChamado);

                if (chamado.Situacao.Equals("Aberto"))
                {
                    model.Assunto      = chamado.Assunto;
                    model.Descricao    = chamado.Descricao;
                    model.Situacao     = chamado.Situacao;
                    model.DataAbertura = chamado.DataAbertura;
                    model.Solucao      = chamado.Solucao;
                    model.Cliente_Nome = chamado.Cliente.Nome;

                    return(Json(model));
                }
                else
                {
                    model.Assunto          = chamado.Assunto;
                    model.Descricao        = chamado.Descricao;
                    model.Situacao         = chamado.Situacao;
                    model.DataAbertura     = chamado.DataAbertura;
                    model.DataFechamento   = chamado.DataFechamento.ToString("dd/MM/yyyy");
                    model.Solucao          = chamado.Solucao;
                    model.Cliente_Nome     = chamado.Cliente.Nome;
                    model.Funcionario_Nome = chamado.Funcionario.Nome;

                    return(Json(model));
                }
            }
            catch (Exception e)
            {
                return(Json(e.Message));
            }
        }
        public JsonResult AbrirChamado(ChamadoModelCadastro model)
        {
            try
            {
                Cliente c = (Cliente)Session["clientelogado"];

                Chamado ch = new Chamado();
                ch.DataAbertura = DateTime.Now;
                ch.Assunto      = model.Assunto;
                ch.Descricao    = model.Descricao;
                ch.Situacao     = "Aberto";
                ch.Cliente      = c;

                ChamadoDal d = new ChamadoDal();
                d.SaveOrUpdate(ch);

                return(Json("Chamado cadastrado com sucesso."));
            }
            catch (Exception e)
            {
                return(Json(e.Message));
            }
        }
        public JsonResult AbrirChamado(ChamadoModelCadastro model)
        {
            try
            {
                Cliente c = (Cliente)Session["clientelogado"];

                Chamado ch = new Chamado();
                ch.DataAbertura = DateTime.Now;
                ch.Assunto = model.Assunto;
                ch.Descricao = model.Descricao;
                ch.Situacao = "Aberto";
                ch.Cliente = c;

                ChamadoDal d = new ChamadoDal();
                d.SaveOrUpdate(ch);

                return Json("Chamado cadastrado com sucesso.");

            }
            catch (Exception e)
            {
                return Json(e.Message);
            }
        }
        public JsonResult ConsultarChamado_DataAbertura(ChamadoModelResultado model)
        {
            try
            {
                ChamadoDal d = new ChamadoDal();

                var list = new List<ChamadoModelResultado>();

                foreach (Chamado chamado in d.FindAllByDataAbertura(model.DataInicial, model.DataFinal))
                {
                    if (chamado.Situacao.Equals("Aberto"))
                    {
                        ChamadoModelResultado resultado = new ChamadoModelResultado();

                        resultado.IdChamado = chamado.IdChamado;
                        resultado.Assunto = chamado.Assunto;
                        resultado.Descricao = chamado.Descricao;
                        resultado.Situacao = chamado.Situacao;
                        resultado.DataAbertura = chamado.DataAbertura;
                        resultado.Cliente_Nome = chamado.Cliente.Nome;

                        list.Add(resultado);
                    }
                    else
                    {
                        ChamadoModelResultado resultado = new ChamadoModelResultado();

                        resultado.IdChamado = chamado.IdChamado;
                        resultado.Assunto = chamado.Assunto;
                        resultado.Descricao = chamado.Descricao;
                        resultado.Situacao = chamado.Situacao;
                        resultado.DataAbertura = chamado.DataAbertura;
                        resultado.Solucao = chamado.Solucao;
                        resultado.Cliente_Nome = chamado.Cliente.Nome;
                        resultado.Funcionario_Nome = chamado.Funcionario.Nome;
                        resultado.DataFechamento = chamado.DataFechamento.ToString("dd/MM/yyyy");

                        list.Add(resultado);
                    }
                }
                return Json(list);
            }
            catch (Exception e)
            {
                return Json(e.Message);
            }
        }
        public JsonResult ConsultarChamado_ID(ChamadoModelResultado model)
        {
            try
            {
                ChamadoDal d = new ChamadoDal();

                Chamado chamado = d.FindById(model.IdChamado);

                var list = new List<ChamadoModelResultado>();

                if (chamado.Situacao.Equals("Aberto"))
                {
                    model.Assunto = chamado.Assunto;
                    model.Descricao = chamado.Descricao;
                    model.Situacao = chamado.Situacao;
                    model.DataAbertura = chamado.DataAbertura;
                    model.Cliente_Nome = chamado.Cliente.Nome;

                    list.Add(model);

                    return Json(list);
                }
                else
                {
                    model.Assunto = chamado.Assunto;
                    model.Descricao = chamado.Descricao;
                    model.Situacao = chamado.Situacao;
                    model.DataAbertura = chamado.DataAbertura;
                    model.Solucao = chamado.Solucao;
                    model.Cliente_Nome = chamado.Cliente.Nome;
                    model.Funcionario_Nome = chamado.Funcionario.Nome;
                    model.DataFechamento = chamado.DataFechamento.ToString("dd/MM/yyyy");

                    list.Add(model);

                    return Json(list);
                }
            }
            catch (Exception e)
            {
                return Json(e.Message);
            }
        }
        public JsonResult ListarChamado()
        {
            try
            {
                Funcionario f = (Funcionario)Session["funcionariologado"];

                ChamadoDal d = new ChamadoDal();

                var list = new List<ChamadoModelResultado>();

                foreach (Chamado chamado in d.FindAll())
                {
                    ChamadoModelResultado resultado = new ChamadoModelResultado();

                    resultado.IdChamado = chamado.IdChamado;
                    resultado.Assunto = chamado.Assunto;
                    resultado.Situacao = chamado.Situacao;
                    resultado.DataAbertura = chamado.DataAbertura;
                    resultado.Cliente_Nome = chamado.Cliente.Nome;

                    list.Add(resultado);
                }

                return Json(list);
            }
            catch (Exception e)
            {
                return Json(e.Message);
            }
        }
        public JsonResult ExcluirChamado(ChamadoModelDelete model)
        {
            try
            {
                Cliente c = (Cliente)Session["clientelogado"];

                ChamadoDal d = new ChamadoDal();
                Chamado chamado = d.FindById(model.IdChamado);

                if (chamado.Situacao.Equals("Aberto"))
                {
                    d.Delete(chamado);

                    return Json("Chamado excluído.");
                }
                else
                {
                    return Json("Chamado não pode ser excluído, o mesmo já se encontra fechado.");
                }

            }
            catch (Exception e)
            {
                return Json(e.Message);
            }
        }
        public JsonResult EditarChamado(ChamadoModelEdicao model)
        {
            try
            {
                Cliente c = (Cliente)Session["clientelogado"];

                ChamadoDal d = new ChamadoDal();

                Chamado chamado = d.FindById(model.IdChamado);

                if (chamado.Situacao.Equals("Aberto"))
                {
                    chamado.Assunto = model.Assunto;
                    chamado.Descricao = model.Descricao;

                    d.SaveOrUpdate(chamado);

                    return Json("Chamado Atualizado.");
                }
                else
                {
                    return Json("Chamado não pode ser alterado, o mesmo já se encontra fechado.");
                }

            }
            catch (Exception e)
            {
                return Json(e.Message);
            }
        }
        public JsonResult EditarChamado(ChamadoModelEdicao model)
        {
            try
            {
                Funcionario f = (Funcionario)Session["funcionariologado"];

                ChamadoDal d = new ChamadoDal();

                Chamado chamado = d.FindById(model.IdChamado);

                if (chamado.Situacao == "Aberto")
                {
                    chamado.Solucao = model.Solucao;
                    chamado.Situacao = "Fechado";
                    chamado.DataFechamento = DateTime.Now;
                    chamado.Funcionario = f;

                    d.SaveOrUpdate(chamado);

                    return Json("Chamado Atualizado.");
                }
                else
                {
                    return Json("Esse chamado já foi fechado.");
                }

            }
            catch (Exception e)
            {
                return Json(e.Message);
            }
        }
        public JsonResult ListarChamado()
        {
            try
            {
                Cliente c = (Cliente)Session["clientelogado"];

                ChamadoDal d = new ChamadoDal();

                var list = d.FindAllByCliente(c);

                return Json(list);

            }
            catch (Exception e)
            {
                return Json(e.Message);
            }
        }