public IServiceResult Emprestar(TipoMidia tipoMidia, int midiaId, string possuinteNome, string possuinteFormaDeContato)
        {
            var possuinte = new Possuinte()
            {
                Nome = possuinteNome, FormaDeContato = possuinteFormaDeContato
            };

            var emprestimo = new Emprestimo(possuinte)
            {
                EstaEmprestado = true
            };

            switch (tipoMidia)
            {
            case TipoMidia.Livro:
                var updateResponseLivro = esClientProvider.Client.Update <Livro, object>(midiaId, u => u.Doc(new { emprestimo = emprestimo }).RetryOnConflict(1));
                break;

            case TipoMidia.Cd:
                var updateResponseCd = esClientProvider.Client.Update <Cd, object>(midiaId, u => u.Doc(new { emprestimo = emprestimo }).RetryOnConflict(1));
                break;

            case TipoMidia.Dvd:
                var updateResponseDvd = esClientProvider.Client.Update <Dvd, object>(midiaId, u => u.Doc(new { emprestimo = emprestimo }).RetryOnConflict(1));
                break;

            default: return(ServiceResult.CriarFormularioInvalido(new List <string> {
                    "Midia não informada"
                }));
            }

            return(ServiceResult.CreateResultOk());
        }
        public IServiceResult Devolver(TipoMidia tipoMidia, int midiaId)
        {
            if (tipoMidia == 0 || midiaId == 0)
            {
                return(ServiceResult.CriarFormularioInvalido(new List <string> {
                    "Midia não informada"
                }));
            }

            var possuinte = new Possuinte()
            {
                Nome = string.Empty, FormaDeContato = string.Empty
            };

            var emprestimo = new Emprestimo(possuinte)
            {
                EstaEmprestado = false
            };

            switch (tipoMidia)
            {
            case TipoMidia.Livro:
                esClientProvider.Client.Update <Livro, object>(midiaId, u => u.Doc(new { emprestimo = emprestimo }).RetryOnConflict(1));
                break;

            case TipoMidia.Cd:
                esClientProvider.Client.Update <Cd, object>(midiaId, u => u.Doc(new { emprestimo = emprestimo }).RetryOnConflict(1));
                break;

            case TipoMidia.Dvd:
                esClientProvider.Client.Update <Dvd, object>(midiaId, u => u.Doc(new { emprestimo = emprestimo }).RetryOnConflict(1));
                break;

            default: throw new Exception();
            }

            return(ServiceResult.CreateResultOk());
        }