public ActionResult Detail(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            tbUsuario usuario = db.tbUsuario.Find(id);
            if (usuario == null)
            {
                return HttpNotFound();
            }

            var jogador = usuario.tbJogador.FirstOrDefault(x => x.usuarioId == usuario.usuarioId);
            var arbitro = usuario.tbArbitro.FirstOrDefault(x => x.usuarioId == usuario.usuarioId);

            UsuarioViewModel usuarioVM = new UsuarioViewModel();
            usuarioVM.Usuario = usuario;
            usuarioVM.Jogador = jogador;
            usuarioVM.Arbitro = arbitro;
            return View(usuarioVM);
        }
        public ActionResult Edit(int usuarioId, string usuarioNome, string usuarioEmail, string usuarioTelefone, int usuarioStatus, string[] usuarioPerfil, string jogadorDataNascimento, int? usuarioCidade, HttpPostedFileBase fileUpload)
        {
            try
            {
                tbUsuario usuario = db.tbUsuario.Find(usuarioId);

                if (usuario == null)
                {
                    throw new Exception(string.Format("|{0}|", "Status não encontrado!"));
                }
                usuario.usuarioEmail = usuarioEmail;
                usuario.usuarioNome = usuarioNome;
                if (usuarioTelefone == "() -")
                {
                    usuarioTelefone = string.Empty;
                }

                if (!string.IsNullOrWhiteSpace(usuarioTelefone))
                {
                    usuario.usuarioTelefone = usuarioTelefone;
                }

                usuario.tbUsuarioStatus = db.tbUsuarioStatus.Find(usuarioStatus);

                this.ExcluirPerfis(usuarioId);
                this.ExcluirJogadores(usuarioId);
                this.ExcluirArbitros(usuarioId);
                bool possuiJogador = false;
                bool possuiArbitro = false;
                foreach (string idPerfil in usuarioPerfil)
                {
                    if (int.Parse(idPerfil) == (int)Enuns.ePerfilUsuario.Jogador)
                    {
                        possuiJogador = true;
                    }

                    if (int.Parse(idPerfil) == (int)Enuns.ePerfilUsuario.Arbitro)
                    {
                        possuiArbitro = true;
                    }

                    var perfil = db.tbPerfil.Find(int.Parse(idPerfil));
                    if (perfil != null)
                    {
                        usuario.tbPerfil.Add(perfil);
                    }
                }

                if (fileUpload != null)
                {
                    this.ApagarArquivosUsuario(usuario.usuarioId);
                    var caminhoFoto = Path.Combine(Server.MapPath(Constantes.CAMINHO_FOTOS), usuario.usuarioId + Path.GetExtension(fileUpload.FileName));
                    fileUpload.SaveAs(caminhoFoto); // Save the file

                    usuario.usuarioFoto = string.Format("{0}{1}{2}", "~/Content/Fotos/", usuario.usuarioId, Path.GetExtension(fileUpload.FileName));
                }

                db.Entry(usuario).State = EntityState.Modified;
                db.SaveChanges();

                tbJogador jogador = null;
                if (possuiJogador)
                {
                    jogador = this.AdicionarJogador(usuario, DateTime.ParseExact(jogadorDataNascimento, Constantes.DATA_PADRAO, CultureInfo.InvariantCulture), usuarioCidade.Value);
                }

                tbArbitro arbitro = null;
                if (possuiArbitro)
                {
                    arbitro = this.AdicionarArbitro(usuario);
                }

                ViewBag.Status = new SelectList
                (
                    db.tbUsuarioStatus.ToList().OrderBy(u => u.usuarioStatusDescricao),
                    "usuarioStatusId",
                    "usuarioStatusDescricao",
                    usuario.usuarioStatusId
                );

                ViewBag.Perfil = new SelectList
                (
                    db.tbPerfil.ToList().OrderBy(p => p.perfilDescricao),
                    "perfilId",
                    "perfilDescricao",
                    usuario.perfilId
                );

                ViewBag.Cidade = new SelectList
                (
                    db.tbCidade.ToList().OrderBy(p => p.cidadeNome),
                    "cidadeId",
                    "cidadeNome",
                    jogador != null ? jogador.cidadeId.ToString() : string.Empty
                );

                ViewBag.Alterado = "S";

                UsuarioViewModel usuarioVM = new UsuarioViewModel();
                usuarioVM.Usuario = usuario;
                usuarioVM.Jogador = jogador;
                usuarioVM.Arbitro = arbitro;

                return View(usuarioVM);
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("|{0}|", ex.Message));
            }
        }
        public ActionResult Edit(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            tbUsuario usuario = db.tbUsuario.Find(id);
            if (usuario == null)
            {
                return HttpNotFound();
            }

            ViewBag.Status = new SelectList
            (
                db.tbUsuarioStatus.ToList().OrderBy(u => u.usuarioStatusDescricao),
                "usuarioStatusId",
                "usuarioStatusDescricao",
                usuario.usuarioStatusId
            );

            ViewBag.Perfil = new SelectList
            (
                db.tbPerfil.ToList().OrderBy(p => p.perfilDescricao),
                "perfilId",
                "perfilDescricao",
                usuario.perfilId
            );

            var jogador = usuario.tbJogador.FirstOrDefault(x => x.usuarioId == usuario.usuarioId);
            var arbitro = usuario.tbArbitro.FirstOrDefault(x => x.usuarioId == usuario.usuarioId);

            ViewBag.Cidade = new SelectList
            (
                db.tbCidade.ToList().OrderBy(p => p.cidadeNome),
                "cidadeId",
                "cidadeNome",
                jogador != null ? jogador.cidadeId.ToString() : string.Empty
            );

            ViewBag.Alterado = "N";

            UsuarioViewModel usuarioVM = new UsuarioViewModel();
            usuarioVM.Usuario = usuario;
            usuarioVM.Jogador = jogador;
            usuarioVM.Arbitro = arbitro;

            return View(usuarioVM);
        }