public void ObterNomes(CaracteristicaClienteSolicitacao carSol)
        {
            try
            {
                PreencheDependencias(carSol);

                var queryccl = carSol.Caracteristicas.Where(c => c.codccl == carSol.Caracteristica).Select(c => c.desccl).FirstOrDefault();
                carSol.NomCaracteristica = queryccl;
                var queryccc = carSol.Componentes.Where(c => c.codccc.ToString() == carSol.Componente).Select(c => c.desccc).FirstOrDefault();
                carSol.NomComponente = queryccc;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
        public void PreencheDependencias(CaracteristicaClienteSolicitacao carSol)
        {
            Task t1 = Task.Factory.StartNew(() =>
            {

                if (carSol.Caracteristicas == null)
                {
                    carSol.Caracteristicas = ListarCaracteristicas();

                }

                if (carSol.Componentes == null)
                {
                    carSol.Componentes = ListarComponentes();
                }

            });

            Task.WaitAll(t1);
            t1.Dispose();
        }
        public ActionResult SalvarCaracteristicas(CaracteristicaClienteSolicitacao car)
        {
            var s = Session["Solicitacao"] as Solicitacao;

            if (Request.IsAjaxRequest())
            {
                if (ModelState.IsValid)
                {
                    try
                    {
                        using (var caracteristicaBLL = new CaracteristicaClienteSolicitacaoBLL())
                        {
                            var carSapBLL = new CaracteristicaSapiensBLL();

                            car.Solicitacao = s;
                            carSapBLL.ObterNomes(car);

                            if (car.CodCaracteristicaClienteSolicitacao == 0)
                            {
                                car.Sequencial = s.Caracteristicas.Count + 1;
                                caracteristicaBLL.Salvar(car);
                                s.Caracteristicas.Add(car);
                            }
                            else
                            {
                                var caracteristica = caracteristicaBLL.ObterPorCodigo(car.CodCaracteristicaClienteSolicitacao);

                                var objToRemove = s.Caracteristicas.Where(c => c.CodCaracteristicaClienteSolicitacao == car.CodCaracteristicaClienteSolicitacao).FirstOrDefault();
                                var indice = s.Caracteristicas.IndexOf(objToRemove);

                                s.Caracteristicas.Remove(objToRemove);

                                caracteristica.Caracteristica = car.Caracteristica;
                                caracteristica.Componente = car.Componente;
                                caracteristica.Sequencial = car.Sequencial;

                                caracteristicaBLL.Atualizar(caracteristica);
                                s.Caracteristicas.Insert(indice, caracteristica);

                            }

                            Session["Solicitacao"] = s;

                        }

                        return Json(new { msg = "Caracteristica gravada com sucesso." }, JsonRequestBehavior.DenyGet);
                    }
                    catch (Exception ex)
                    {
                        return Json(new { msg = "Erro ao tentar gravar caracteristica: " + ex.Message }, JsonRequestBehavior.DenyGet);
                    }
                }
            }

            return View(s);
        }