public async Task <ActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Servico servico = repoServico.Find(id);

            if (servico == null)
            {
                return(HttpNotFound());
            }
            ViewBag.AtendimentoID = new SelectList(repoAtendimento.GetAll(), "ID", "ID", servico.AtendimentoId);
            ViewBag.TipoServicoID = new SelectList(repoTipoServico.GetAll(), "ID", "Descricao", servico.TipoServicoId);
            return(PartialView("_Edit", servico));
        }
        public ActionResult Index(string sortOrder, string currentFilter, string searchString, int?page, string typeSearch)
        {
            ViewBag.CurrentSort = sortOrder;
            ViewBag.NomeParam   = String.IsNullOrEmpty(sortOrder) ? "Nome_Animal" : "";

            if (searchString != null)
            {
                page = 1;
            }
            else
            {
                searchString = currentFilter;
            }

            ViewBag.CurrentFilter = searchString;

            var atendimentos = from m in repoAtendimento.GetAll().ToList().OrderBy(c => c.Id)
                               select m;

            if (!string.IsNullOrEmpty(typeSearch))
            {
                switch (typeSearch)
                {
                case "NomeAnimal":
                    atendimentos = atendimentos.Where(s => s.Animal.Nome.ToUpper().Contains(searchString.ToUpper())).OrderBy(s => s.Id);
                    break;

                case "Cpf":
                    atendimentos = from atendimento in repoAtendimento.GetAll().ToList()
                                   join animal in repoAnimal.GetAll().ToList() on atendimento.AnimalId equals animal.Id
                                   join cliente in repoCliente.GetAll().ToList() on animal.ClienteId equals cliente.Id
                                   where cliente.CpfCnpj.Contains(searchString)
                                   select atendimento;
                    break;

                case "Fone":
                    atendimentos = from atendimento in repoAtendimento.GetAll().ToList()
                                   join animal in repoAnimal.GetAll().ToList() on atendimento.AnimalId equals animal.Id
                                   join cliente in repoCliente.GetAll().ToList() on animal.ClienteId equals cliente.Id
                                   join fone in repoFone.GetAll().ToList() on cliente.Id equals fone.ClienteId
                                   where fone.Numero.Contains(searchString)
                                   select atendimento;
                    break;

                case "Atendimento":
                    atendimentos = atendimentos.Where(s => s.Id.ToString().Equals(searchString));
                    break;

                case "NomeCliente":
                    atendimentos = atendimentos.Where(s => s.Animal.Cliente.Nome.ToUpper().Contains(searchString.ToUpper())).OrderBy(s => s.Id);
                    break;

                default:
                    break;
                }
            }

            atendimentos = atendimentos.OrderByDescending(x => x.Id);
            int pageSize   = 15;
            int pageNumber = (page ?? 1);

            return(View(atendimentos.ToPagedList(pageNumber, pageSize)));
        }