public void Compartilhar(Compartilhamento compartilhamento) { new Contract <Postagem>() .IsNotNull(compartilhamento, nameof(compartilhamento), "Não foi informado nenhum compartilhamento para essa postagem.") .EnsureContractIsValid(); CriticarSeAcaoFoiRealizadaPeloAutor(compartilhamento.UsuarioId, "O autor da postagem não pode compartilhar sua própria postagem."); _compartilhamentos.Add(compartilhamento); }
public void Descompartilhar(Guid compartilhamentoId, Guid usuarioId) { Compartilhamento compartilhamentoQueSeraRemovido = _compartilhamentos.FirstOrDefault(c => c.Id == compartilhamentoId); new Contract <Postagem>() .IsNotNull(compartilhamentoQueSeraRemovido, nameof(compartilhamentoQueSeraRemovido), "O compartilhamento informado não existe.") .EnsureContractIsValid() .AreEquals(compartilhamentoQueSeraRemovido.UsuarioId, usuarioId, nameof(usuarioId), "O compartilhamento apenas pode ser descompartilhado pelo usuário que o realizou.") .EnsureContractIsValid <Postagem, DomainInvalidOperationException>(); _compartilhamentos.Remove(compartilhamentoQueSeraRemovido); }