regiov / voluntarios

Website voluntarios.com.br
GNU General Public License v3.0
15 stars 13 forks source link

Permitir que entidades convidem voluntários a se inscrever em vagas #75

Closed regiov closed 3 weeks ago

regiov commented 6 months ago

Quando uma entidade divulga uma vaga, esta só fica visível aos voluntários que acessam o site durante o período de inscrições. A ideia desta funcionalidade é permitir que as entidades, ao buscarem voluntários no site e navegarem pelos resultados, possam convidar determinados voluntários a ver o anúncio da vaga e eventualmente se inscrever nela, aumentando a exposição da vaga.

regiov commented 6 months ago

Sugestão de implementação:

regiov commented 6 months ago

Sugestão de modelo de dados:

 # Equivalente a carrinho de compras: esvazia conteúdo depois do envio
class PacoteDeConvites(models.Model):
    id        = models.AutoField(primary_key=True)
    usuario   = models.ForeignKey(Usuario, on_delete=models.CASCADE)
    criado_em = models.DateTimeField(u'Data de criação', auto_now_add=True)

#  Equivalente a conteúdo do carrinho de compras: esvazia conteúdo após envio
class VoluntarioASerConvidado(models.Model):
    id                 = models.AutoField(primary_key=True)
    processo_seletivo  = models.ForeignKey(ProcessoSeletivo, on_delete=models.CASCADE)
    voluntario         = models.ForeignKey(Voluntario, on_delete=models.CASCADE)
    incluido_em        = models.DateTimeField(u'Data de inclusão', auto_now_add=True)

# Após envio, dados ficam armazenados aqui
class ConviteProcessoSeletivo(models.Model):
    id                = models.AutoField(primary_key=True)
    processo_seletivo = models.ForeignKey(ProcessoSeletivo, on_delete=models.CASCADE)
    voluntario        = models.ForeignKey(Voluntario, on_delete=models.CASCADE)
    incluido_por      = models.ForeignKey(Usuario, on_delete=models.PROTECT)
    incluido_em       = models.DateTimeField(u'Data de inclusão na lista de convidados', auto_now_add=True)
    enviado_em        = models.DateTimeField(u'Data de envio', null=True, blank=True)
    #visualizado_em    = models.DateTimeField(u'Data de visualização', null=True, blank=True)