public ActionResult SalvarArquivos(int id, string tipo)
        {
            try
            {
                foreach (string fileName in Request.Files)
                {
                    HttpPostedFileBase file    = Request.Files[fileName];
                    Arquivo            arquivo = new Arquivo();

                    if (file != null)
                    {
                        var path = Path.Combine(@Server.MapPath(@"~\Files\Clientes"),
                                                string.Format("c_{0}_{1}", id, file.FileName));
                        if (!System.IO.File.Exists(path))
                        {
                            file.SaveAs(path);
                            arquivo.Path         = path;
                            arquivo.OriginalName = file.FileName;
                            db.Arquivos.Add(arquivo);
                            db.SaveChanges();

                            AtendimentoArquivo atendimentoarquivo = new AtendimentoArquivo();
                            atendimentoarquivo.AtendimentoId = id;
                            atendimentoarquivo.Tipo          = tipo;
                            atendimentoarquivo.ArquivoId     = arquivo.Id;
                            db.AtendimentoArquivo.Add(atendimentoarquivo);
                            db.SaveChanges();
                        }
                    }
                }
            }
            catch (Exception e)
            {
                DebugLog.Logar(e.StackTrace);
                return(Json("Erro ao salvar arquivos!"));
            }
            return(Json("Arquivos salvos com sucesso!"));
        }
        public ActionResult Create([Bind(Include = "Id,Date,Hora,Minuto,EspecialidadeId,EspecialistaId," +
                                                   "PacienteId,Observacao,ValorPago,FormaPagamentoId,Tratamento")] ConsultaViewModel consultaViewModel,
                                   [Bind(Include = "Cpf,Nome,DataNascimento")] Paciente formPaciente,
                                   string cidade, string bairro, string rua, string numero, string telefone, HttpPostedFileBase file)
        {
            if (ModelState.IsValid)
            {
                using (var transaction = db.Database.BeginTransaction())
                {
                    string path = "";
                    try
                    {
                        var paciente = db.Pacientes.Where(x => x.Cpf == formPaciente.Cpf).FirstOrDefault();

                        if (paciente == null || string.IsNullOrEmpty(formPaciente.Cpf))
                        {
                            var lvtelefone = new Telefone();
                            lvtelefone.Numero = telefone;
                            db.Telefones.Add(lvtelefone);
                            db.SaveChanges();

                            var endereco = new Endereco();
                            endereco.Cidade = cidade;
                            endereco.Bairro = bairro;
                            endereco.Rua    = rua;
                            endereco.Numero = numero;
                            db.Enderecos.Add(endereco);
                            db.SaveChanges();

                            paciente                = new Paciente();
                            paciente.Nome           = formPaciente.Nome;
                            paciente.DataNascimento = formPaciente.DataNascimento;
                            paciente.DataCadastro   = DateTime.Now;
                            paciente.Cpf            = formPaciente.Cpf;
                            paciente.TelefoneId     = lvtelefone.Id;
                            paciente.EnderecoId     = endereco.Id;
                            db.Pacientes.Add(paciente);
                            db.SaveChanges();
                        }

                        Arquivo arquivo = new Arquivo();
                        arquivo.OriginalName = "";
                        arquivo.Path         = "#";
                        db.Arquivos.Add(arquivo);
                        db.SaveChanges();

                        var consulta = new Consulta();
                        consulta.Date                 = consultaViewModel.Date;
                        consulta.Hora                 = consultaViewModel.Hora;
                        consulta.Minuto               = consultaViewModel.Minuto;
                        consulta.EspecialidadeId      = consultaViewModel.EspecialidadeId;
                        consulta.EspecialistaId       = consultaViewModel.EspecialistaId;
                        consulta.PacienteId           = paciente.Id;
                        consulta.Observacao           = consultaViewModel.Observacao;
                        consulta.ValorPago            = consultaViewModel.ValorPago;
                        consulta.ArquivoId            = arquivo.Id;
                        consulta.AtendimentoRealizado = false;
                        consulta.Tratamento           = consultaViewModel.Tratamento;
                        db.Consultas.Add(consulta);
                        db.SaveChanges();

                        var atendimentoArquivo = new AtendimentoArquivo();
                        atendimentoArquivo.ArquivoId     = arquivo.Id;
                        atendimentoArquivo.Tipo          = "Consulta";
                        atendimentoArquivo.AtendimentoId = consulta.Id;
                        db.AtendimentoArquivo.Add(atendimentoArquivo);
                        db.SaveChanges();

                        if (file != null)
                        {
                            path = Path.Combine(@Server.MapPath(@"~\Files\Clientes"), string.Format("c_{0}_{1}", consulta.Id, file.FileName));
                            file.SaveAs(path);
                            arquivo.Path         = path;
                            arquivo.OriginalName = file.FileName;
                        }

                        if (consultaViewModel.FormaPagamentoId != -1)
                        {
                            db.PagamentosConsultas.Add(new PagamentoConsulta()
                            {
                                ConsultaId       = consulta.Id,
                                FormaPagamentoId = consultaViewModel.FormaPagamentoId
                            });
                        }

                        db.SaveChanges();
                        transaction.Commit();
                    }
                    catch (Exception e)
                    {
                        DebugLog.Logar(e.Message);
                        DebugLog.Logar(e.StackTrace);
                        DebugLog.Logar(Utility.Details(e));

                        if (System.IO.File.Exists(path))
                        {
                            System.IO.File.Delete(path);
                        }
                        transaction.Rollback();
                    }
                }
                return(RedirectToAction("Index"));
            }
            var paymentWays = db.FormasPagamento.ToList();

            paymentWays.Insert(0, new FormaPagamento()
            {
                Id = -1, Nome = "-"
            });

            ViewBag.EspecialidadeId  = new SelectList(db.Especialidades, "Id", "Nome", consultaViewModel.EspecialidadeId);
            ViewBag.EspecialistaId   = new SelectList(db.Especialistas, "Id", "Nome", consultaViewModel.EspecialistaId);
            ViewBag.FormaPagamentoId = new SelectList(paymentWays, "Id", "Nome", consultaViewModel.FormaPagamentoId);
            ViewBag.PacienteId       = new SelectList(db.Pacientes, "Id", "Nome", consultaViewModel.PacienteId);
            ViewBag.Hora             = GetListHour();
            ViewBag.Minuto           = GetListMinute();
            return(View(consultaViewModel));
        }