Skip to content

Commit

Permalink
feat: add course to attendee (#359)
Browse files Browse the repository at this point in the history
  • Loading branch information
joaodiaslobo authored Nov 29, 2023
1 parent b6a4d49 commit 8e3ed94
Show file tree
Hide file tree
Showing 15 changed files with 427 additions and 6 deletions.
254 changes: 254 additions & 0 deletions data/courses.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,254 @@
Licenciatura em Engenharia Informática
Mestrado em Engenharia Informática
Doutoramento em Informática
Licenciatura em Administração Pública
Licenciatura em Arqueologia
Licenciatura em Artes Visuais
Licenciatura em Biologia Aplicada
Licenciatura em Biologia e Geologia
Licenciatura em Bioquímica
Licenciatura em Ciência de Dados
Licenciatura em Ciência Política
Licenciatura em Ciências da Computação
Licenciatura em Ciências da Comunicação
Licenciatura em Ciências do Ambiente
Licenciatura em Contabilidade
Licenciatura em Criminologia e Justiça Criminal
Licenciatura em Design de Produto
Licenciatura em Design e Marketing de Moda
Licenciatura em Direito
Licenciatura em Economia
Licenciatura em Educação
Licenciatura em Educação Básica
Licenciatura em Enfermagem
Licenciatura em Engenharia Aeroespacial
Licenciatura em Engenharia Biomédica
Licenciatura em Engenharia Civil
Licenciatura em Engenharia de Materiais
Licenciatura em Engenharia de Polímeros
Licenciatura em Engenharia de Telecomunicações e Informática
Licenciatura em Engenharia e Gestão de Sistemas de Informação
Licenciatura em Engenharia e Gestão Industrial
Licenciatura em Engenharia Eletrónica Industrial e Computadores
Licenciatura em Engenharia Física
Licenciatura em Engenharia Mecânica
Licenciatura em Engenharia Química e Biológica
Licenciatura em Engenharia Têxtil
Licenciatura em Estatística Aplicada
Licenciatura em Estudos Culturais
Licenciatura em Estudos Orientais: Estudos Chineses e Japoneses
Licenciatura em Estudos Portugueses
Licenciatura em Filosofia
Licenciatura em Física
Licenciatura em Geografia e Planeamento
Licenciatura em Geologia
Licenciatura em Gestão
Licenciatura em História
Licenciatura em Línguas Aplicadas
Licenciatura em Línguas e Literaturas Europeias
Licenciatura em Marketing
Licenciatura em Matemática
Licenciatura em Música
Licenciatura em Negócios Internacionais
Licenciatura em Optometria e Ciências da Visão
Licenciatura em Proteção Civil e Gestão do Território
Licenciatura em Psicologia
Licenciatura em Química
Licenciatura em Relações Internacionais
Licenciatura em Sociologia
Licenciatura em Teatro
Mestrado Integrado em Arquitetura
Mestrado Integrado em Engenharia Biológica
Mestrado Integrado em Engenharia Biomédica
Mestrado Integrado em Engenharia Civil
Mestrado Integrado em Engenharia de Materiais
Mestrado Integrado em Engenharia de Polímeros
Mestrado Integrado em Engenharia de Telecomunicações e Informática
Mestrado Integrado em Engenharia e Gestão de Sistemas de Informação
Mestrado Integrado em Engenharia e Gestão Industrial
Mestrado Integrado em Engenharia Eletrónica Industrial e Computadores
Mestrado Integrado em Engenharia Física
Mestrado Integrado em Engenharia Informática
Mestrado Integrado em Engenharia Mecânica
Mestrado Integrado em Engenharia Têxtil
Mestrado Integrado em Medicina
Mestrado Integrado em Psicologia
Mestrado em Administração Pública
Mestrado em Análise Estrutural Avançada e Projeto com Materiais Compósitos
Mestrado em Análise Estrutural de Monumentos e Construções Históricas
Mestrado em Arqueologia
Mestrado em Avaliação Aplicada à Formação nas Profissões da Saúde
Mestrado em Biodiversidade, Ecologia e Alterações Globais
Mestrado em Biofísica e Bionanossistemas
Mestrado em Bioinformática
Mestrado em Biologia Molecular, Biotecnologia e Bioempreendedorismo em Plantas
Mestrado em Bioquímica Aplicada
Mestrado em Biotecnologia
Mestrado em Ciência Política
Mestrado em Ciências Criminais
Mestrado em Ciências da Comunicação
Mestrado em Ciências da Educação
Mestrado em Ciências da Saúde
Mestrado em Ciências e Tecnologias do Ambiente
Mestrado em Cognição Humana
Mestrado em Comunicação de Ciência
Mestrado em Comunicação, Arte e Cultura
Mestrado em Construção e Reabilitação Sustentáveis
Mestrado em Contabilidade
Mestrado em Crime, Diferença e Desigualdade
Mestrado em Desafios das Cidades
Mestrado em Design de Produto e Serviços
Mestrado em Design e Inovação de Produtos Têxteis e Acessórios
Mestrado em Design para a Comunicação de Moda
Mestrado em Direito Administrativo
Mestrado em Direito da União Europeia
Mestrado em Direito das Crianças, Família e Sucessões
Mestrado em Direito dos Contratos e da Empresa
Mestrado em Direito dos Negócios, Europeu e Transnacional
Mestrado em Direito e Informática
Mestrado em Direito Judiciário (Direitos Processuais e Organização Judiciária)
Mestrado em Direito Transnacional da Empresa e das Tecnologias Digitais
Mestrado em Direito Tributário
Mestrado em Direitos Humanos
Mestrado em Economia
Mestrado em Economia Industrial e da Empresa
Mestrado em Economia Monetária, Bancária e Financeira
Mestrado em Economia Social
Mestrado em Educação
Mestrado em Educação Pré-Escolar
Mestrado em Educação Pré-Escolar e Ensino do 1º Ciclo do Ensino Básico
Mestrado em Engenharia Aeroespacial
Mestrado em Engenharia Biomédica
Mestrado em Engenharia Civil
Mestrado em Engenharia de Estruturas
Mestrado em Engenharia de Materiais
Mestrado em Engenharia de Polímeros
Mestrado em Engenharia de Sistemas
Mestrado em Engenharia de Telecomunicações e Informática
Mestrado em Engenharia do Produto
Mestrado em Engenharia e Gestão da Qualidade
Mestrado em Engenharia e Gestão de Operações
Mestrado em Engenharia e Gestão de Sistemas de Informação
Mestrado em Engenharia e Gestão Industrial
Mestrado em Engenharia Eletrónica Industrial e Computadores
Mestrado em Engenharia Física
Mestrado em Engenharia Humana
Mestrado em Engenharia Mecânica
Mestrado em Engenharia Mecatrónica
Mestrado em Engenharia Química e Biológica
Mestrado em Engenharia Têxtil
Mestrado em Engenharia Urbana
Mestrado em Ensino de Biologia e Geologia no 3º Ciclo no Ensino Básico e no Ensino Secundário
Mestrado em Ensino de Física e de Química no 3º Ciclo do Ensino Básico e no Ensino Secundário
Mestrado em Ensino de História no 3º Ciclo do Ensino Básico e no Ensino Secundário
Mestrado em Ensino de Informática
Mestrado em Ensino de Inglês no 1º Ciclo do Ensino Básico
Mestrado em Ensino de Matemática no 3º Ciclo do Ensino Básico e no Secundário
Mestrado em Ensino de Música
Mestrado em Ensino de Português no 3º Ciclo do Ensino Básico e no Ensino Secundário
Mestrado em Ensino do 1º Ciclo do Ensino Básico e de Matemática e Ciências Naturais no 2º Ciclo do Ensino Básico
Mestrado em Ensino do 1º Ciclo do Ensino Básico e de Português e História e Geografia de Portugal no 2º Ciclo do Ensino Básico
Mestrado em Espanhol Língua Segunda e Língua Estrangeira
Mestrado em Estatística para Ciência de Dados
Mestrado em Estudos da Criança
Mestrado em Estudos Interculturais Português/Chinês
Mestrado em Estudos Luso-Alemães
Mestrado em Filosofia Política
Mestrado em Finanças
Mestrado em Física
Mestrado em Genética Molecular
Mestrado em Geociências
Mestrado em Geografia
Mestrado em Gestão
Mestrado em Gestão de Projetos de Engenharia
Mestrado em Gestão de Recursos Humanos
Mestrado em Gestão de Unidades de Saúde
Mestrado em Gestão e Negócios
Mestrado em História
Mestrado em Humanidades Digitais
Mestrado em Lexicografia
Mestrado em Língua, Literatura e Cultura Inglesas
Mestrado em Literaturas de Língua Portuguesa
Mestrado em Marketing e Estratégia
Mestrado em Matemática e Computação
Mestrado em Media Arts
Mestrado em Micro e Nano Tecnologias
Mestrado em Modelação de Informação na Construção de Edifícios
Mestrado em Negócios Internacionais
Mestrado em Optometria Avançada
Mestrado em Património Cultural
Mestrado em Português Língua Não Materna
Mestrado em Psicologia Clínica e Psicoterapia de Adultos
Mestrado em Psicologia Clínica na Infância e Adolescência
Mestrado em Psicologia da Educação
Mestrado em Psicologia da Justiça
Mestrado em Psicologia do Trabalho e das Organizações
Mestrado em Química Medicinal
Mestrado em Relações Internacionais
Mestrado em Sistemas de Informação
Mestrado em Sociologia
Mestrado em Sociologia do Género e da Sexualidade
Mestrado em Sustentabilidade do Ambiente Construído
Mestrado em Técnicas de Caracterização e Análise Química
Mestrado em Tecnologia e Ciência Alimentar
Mestrado em Tecnologias Interativas
Mestrado em Temas de Psicologia da Educação
Mestrado em Tradução e Comunicação Multilingue
Doutoramento em Biologia
Doutoramento em Ciência e Engenharia de Polímeros e Compósitos
Doutoramento em Ciências da Cultura
Doutoramento em Ciências da Linguagem
Doutoramento em Ciências da Literatura
Doutoramento em Engenharia Biomédica
Doutoramento em Engenharia Civil
Doutoramento em Engenharia de Materiais
Doutoramento em Engenharia de Tecidos, Medicina Regenerativa e Células Estaminais
Doutoramento em Engenharia Eletrónica e de Computadores
Doutoramento em Engenharia Mecânica
Doutoramento em Engenharia Química e Biológica
Doutoramento em Engenharia Têxtil
Doutoramento em Filosofia
Doutoramento em Geologia - Geoconservação, Geologia Ambiental e Recursos Geológicos
Doutoramento em Gestão e Tratamento de Resíduos
Doutoramento em Matemática
Doutoramento em Química Aplicada
Doutoramento em Sustentabilidade do Ambiente Construído
Programa Doutoral em Arqueologia
Programa Doutoral em Arquitetura
Programa Doutoral em Bioengenharia
Programa Doutoral em Biologia Molecular e Ambiental
Programa Doutoral em Biotecnologia Marinha e Aquacultura
Programa Doutoral em Cadeias de Produção Agrícola - da mesa ao campo
Programa Doutoral em Ciência e Tecnologia Alimentar e Nutrição
Programa Doutoral em Ciência Política e Relações Internacionais
Programa Doutoral em Ciência, Tecnologia e Gestão do Mar
Programa Doutoral em Ciências da Administração
Programa Doutoral em Ciências da Comunicação
Programa Doutoral em Ciências da Educação
Programa Doutoral em Ciências da Saúde
Programa Doutoral em Ciências Jurídicas
Programa Doutoral em Design de Moda
Programa Doutoral em Economia
Programa Doutoral em Educação a Distância e e-Learning
Programa Doutoral em Engenharia Industrial e de Sistemas
Programa Doutoral em Estudos Culturais
Programa Doutoral em Estudos da Criança
Programa Doutoral em Fabrico Digital Direto para as Indústrias dos Polímeros e Moldes
Programa Doutoral em Física
Programa Doutoral em Geografia
Programa Doutoral em Gestão
Programa Doutoral em História
Programa Doutoral em Informática
Programa Doutoral em Marketing e Estratégia
Programa Doutoral em Matemática Aplicada
Programa Doutoral em Matemática e Aplicações
Programa Doutoral em Materiais e Processamento Avançados
Programa Doutoral em Medicina
Programa Doutoral em Modernidades Comparadas: Literaturas, Artes e Culturas
Programa Doutoral em Optometria e Ciências da Visão
Programa Doutoral em Psicologia
Programa Doutoral em Química
Programa Doutoral em Sistemas Avançados de Engenharia para a Indústria
Programa Doutoral em Sociologia
Programa Doutoral em Tecnologia e Sistemas de Informação
Programa Doutoral em Telecomunicações
11 changes: 10 additions & 1 deletion lib/mix/tasks/gen.attendees_with_password.ex
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ defmodule Mix.Tasks.Gen.AttendeesWithPassword do
defp create(number) do
Mix.Task.run("app.start")

courses = Accounts.list_courses()

Enum.each(1..number, fn n ->
nickname = "attendee#{n}"
email = Enum.join([nickname, @domain], "@")
Expand All @@ -35,8 +37,15 @@ defmodule Mix.Tasks.Gen.AttendeesWithPassword do
"password_confirmation" => password
}

course = Enum.random(courses)

account =

Check warning on line 42 in lib/mix/tasks/gen.attendees_with_password.ex

View workflow job for this annotation

GitHub Actions / OTP 25.x / Elixir 1.14.x

variable "account" is unused (if the variable is not meant to be used, prefix it with an underscore)
Accounts.create_attendee(%{"name" => nickname, "nickname" => nickname, "user" => user})
Accounts.create_attendee(%{
"name" => nickname,
"nickname" => nickname,
"course_id" => course.id,
"user" => user
})
|> elem(1)

IO.puts("#{email}:#{password}")
Expand Down
2 changes: 1 addition & 1 deletion lib/mix/tasks/gen.companies.ex
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ defmodule Mix.Tasks.Gen.Companies do

def run(args) do
if Enum.empty?(args) do
Mix.shell().info("Needs to receive atleast one file path.")
Mix.shell().info("Needs to receive at least one file path.")
else
args |> create
end
Expand Down
38 changes: 38 additions & 0 deletions lib/mix/tasks/gen.courses.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
defmodule Mix.Tasks.Gen.Courses do
@moduledoc """
Task to generate university courses
"""
use Mix.Task

alias Safira.Accounts

def run(args) do
if Enum.empty?(args) do
Mix.shell().info("Needs to receive at least one file path.")
else
args |> create
end
end

defp create(path) do
Mix.Task.run("app.start")

path
|> parse_txt()
|> insert_courses()
end

defp parse_txt(path) do
path
|> File.read!()
|> String.split("\n")
end

defp insert_courses(courses) do
Enum.each(courses, fn course ->
Accounts.create_course(%{
"name" => course
})
end)
end
end
35 changes: 35 additions & 0 deletions lib/safira/accounts/accounts.ex
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ defmodule Safira.Accounts do

alias Safira.Accounts.Attendee
alias Safira.Accounts.Company
alias Safira.Accounts.Course
alias Safira.Accounts.Staff
alias Safira.Accounts.User

Expand Down Expand Up @@ -106,6 +107,7 @@ defmodule Safira.Accounts do
|> Repo.preload(:badges)
|> Repo.preload(:user)
|> Repo.preload(:prizes)
|> Repo.preload(:course)
end

def get_attendee_by_discord_association_code(discord_association_code) do
Expand Down Expand Up @@ -264,4 +266,37 @@ defmodule Safira.Accounts do
|> get_user_preload!()
end
end

@doc """
Creates a course.
## Examples
iex> create_course(%{field: value})
{:ok, %Course{}}
iex> create_course(%{field: bad_value})
{:error, %Ecto.Changeset{}}
"""
def create_course(attrs) do
%Course{}
|> Course.changeset(attrs)
|> Repo.insert()
end

@doc """
Returns the list of courses.
## Examples
iex> list_courses()
[%Course{}, ...]
"""
def list_courses do
Course
|> order_by(:id)
|> Repo.all()
end
end
Loading

0 comments on commit 8e3ed94

Please sign in to comment.