public string SelecionarSuspeito(int idSala, int idJogadorSala, int idSuspeito)
        {
            try
            {
                var sala = _salaBusiness.Obter(idSala);
                if (sala == default)
                {
                    return(JsonConvert.SerializeObject(new Operacao("Sala não encontrada.", false)));
                }

                var jogadorSala = _jogadorSalaBusiness.Obter(idJogadorSala);
                if (jogadorSala == default)
                {
                    return(JsonConvert.SerializeObject(new Operacao("Jogador Sala não encontrado.", false)));
                }

                var suspeito = _suspeitoBusiness.Obter(idSuspeito);
                if (suspeito == default)
                {
                    return(JsonConvert.SerializeObject(new Operacao("Suspeito não encontrado.", false)));
                }

                if (jogadorSala.IdSala != sala.Id)
                {
                    return(JsonConvert.SerializeObject(new Operacao("Jogador Sala não pertence a sala passada.", false)));
                }

                var suspeitoDesconsiderado = jogadorSala.IdSuspeito == null ? null : _suspeitoBusiness.Obter(jogadorSala.IdSuspeito.Value);

                jogadorSala.AlterarSuspeito(suspeito.Id);
                _jogadorSalaBusiness.Alterar(jogadorSala);

                var jogador = _jogadorBusiness.Obter(jogadorSala.IdJogador);
                var retorno = Json(new
                {
                    DescricaoJogador                = jogador.Descricao,
                    DescricaoSuspeitoSelecionado    = suspeito.Descricao,
                    DescricaoSuspeitoDesconsiderado = suspeitoDesconsiderado == null ? "" : suspeitoDesconsiderado.Descricao
                }, "json");

                var operacao = new Operacao(JsonConvert.SerializeObject(retorno), true);

                return(JsonConvert.SerializeObject(operacao));
            }
            catch (Exception ex)
            {
                return(JsonConvert.SerializeObject(new Operacao(ex.Message, false)));
            }
        }
        public Operacao RolarDados(int idJogadorSala, int idSala)
        {
            var jogadorSala = _jogadorSalaBusiness.Obter(idJogadorSala);

            if (jogadorSala == default && jogadorSala.IdSala != idSala)
            {
                return(new Operacao("Jogador não encontrado", false));
            }

            var sala = _salaBusiness.Obter(jogadorSala.IdSala);

            if (sala == default)
            {
                return(new Operacao("Sala não encotrada", false));
            }

            var crime = _crimeBusiness.Obter(sala.Id);

            if (crime == default)
            {
                return(new Operacao("Crime não encotrada", false));
            }

            if (crime.Solucionado())
            {
                return(new Operacao("A partida acabou, o caso já foi solucionado", false));
            }

            if (!jogadorSala.Jogando)
            {
                return(new Operacao("Jogador não está mais jogando", false));
            }

            if (!jogadorSala.MinhaVez())
            {
                return(new Operacao("Não está na vez desse jogador.", false));
            }

            if (jogadorSala.RolouDados)
            {
                return(new Operacao("O jogador já rolou os dados.", false));
            }

            jogadorSala.AlterarQuantidadeMovimento(_dado.Rolar());
            var jogador = _jogadorBusiness.Obter(jogadorSala.IdJogador);

            _historicoBusiness.Adicionar(new Historico(idSala, $"O jogador {jogador.Descricao} obteve {jogadorSala.QuantidadeMovimento} na rolagem dos dados."));
            _jogadorSalaBusiness.Alterar(jogadorSala);

            return(new Operacao("Operação realizada com sucesso."));
        }