diff --git a/src/APP.Platform/LegacyModels/ClassLib.Shared/Entities/DataTags.cs b/src/APP.Platform/LegacyModels/ClassLib.Shared/Entities/DataTags.cs index ba6f32cf..c37678ec 100644 --- a/src/APP.Platform/LegacyModels/ClassLib.Shared/Entities/DataTags.cs +++ b/src/APP.Platform/LegacyModels/ClassLib.Shared/Entities/DataTags.cs @@ -11,34 +11,34 @@ public static Dictionary> GetTags() new List { "JavaScript", - "React", - "Angular", - "Vue.js", - "Node.js", - "Express.js", - "jQuery", - "D3.js", - "Three.js", - "Backbone.js", - "Ember.js", - "Meteor.js", - "Electron", - "PWAs", - "WebAssembly", - "Web Scraping", - "Machine Learning", - "Análise de Dados", - "Desenvolvimento Web", - "Scripting", - "Desenvolvimento de GUI", - "Desenvolvimento de Jogos", - "Programação de Redes", - "Automação", - "Computação Científica", - "PLN", - "Visão Computacional", - "IoT", - "Desenvolvimento Blockchain", + "JavaScript : React", + "JavaScript : Angular", + "JavaScript : cVue.js", + "JavaScript : Node.js", + "JavaScript : Express.js", + "JavaScript : jQuery", + "JavaScript : D3.js", + "JavaScript : Three.js", + "JavaScript : Backbone.js", + "JavaScript : Ember.js", + "JavaScript : Meteor.js", + "JavaScript : Electron", + "JavaScript : PWAs", + "JavaScript : WebAssembly", + "JavaScript : Web Scraping", + "JavaScript : Machine Learning", + "JavaScript : Análise de Dados", + "JavaScript : Desenvolvimento Web", + "JavaScript : Scripting", + "JavaScript : Desenvolvimento de GUI", + "JavaScript : Desenvolvimento de Jogos", + "JavaScript : Programação de Redes", + "JavaScript : Automação", + "JavaScript : Computação Científica", + "JavaScript : PLN", + "JavaScript : Visão Computacional", + "JavaScript : IoT", + "JavaScript : Desenvolvimento Blockchain", } }, { @@ -46,22 +46,22 @@ public static Dictionary> GetTags() new List { "Python", - "Django", - "Flask", - "Web Scraping", - "Machine Learning", - "Análise de Dados", - "Desenvolvimento Web", - "Scripting", - "Desenvolvimento de GUI", - "Desenvolvimento de Jogos", - "Programação de Redes", - "Automação", - "Computação Científica", - "PLN", - "Visão Computacional", - "IoT", - "Desenvolvimento Blockchain", + "Python : Django", + "Python : Flask", + "Python : Web Scraping", + "Python : Machine Learning", + "Python : Análise de Dados", + "Python : Desenvolvimento Web", + "Python : Scripting", + "Python : Desenvolvimento de GUI", + "Python : Desenvolvimento de Jogos", + "Python : Programação de Redes", + "Python : Automação", + "Python : Computação Científica", + "Python : PLN", + "Python : Visão Computacional", + "Python : IoT", + "Python : Desenvolvimento Blockchain", } }, { @@ -69,23 +69,23 @@ public static Dictionary> GetTags() new List { "Java", - "Spring Boot", - "Hibernate", - "JavaFX", - "Web Scraping", - "Machine Learning", - "Análise de Dados", - "Desenvolvimento Web", - "Scripting", - "Desenvolvimento de GUI", - "Desenvolvimento de Jogos", - "Programação de Redes", - "Automação", - "Computação Científica", - "PLN", - "Visão Computacional", - "IoT", - "Desenvolvimento Blockchain", + "Java : Spring Boot", + "Java : Hibernate", + "Java : JavaFX", + "Java : Web Scraping", + "Java : Machine Learning", + "Java : Análise de Dados", + "Java : Desenvolvimento Web", + "Java : Scripting", + "Java : Desenvolvimento de GUI", + "Java : Desenvolvimento de Jogos", + "Java : Programação de Redes", + "Java : Automação", + "Java : Computação Científica", + "Java : PLN", + "Java : Visão Computacional", + "Java : IoT", + "Java : Desenvolvimento Blockchain", } }, { @@ -93,14 +93,14 @@ public static Dictionary> GetTags() new List { "C++", - "Software Embarcado", - "Aplicações de Alto Desempenho", - "Algoritmos e Estruturas de Dados", - "Programação Concorrente e Paralela", - "Sistemas de Tempo Real", - "Computação Gráfica", - "Aplicações de Simulação", - "Aplicações Científicas", + "C++ : Software Embarcado", + "C++ : Aplicações de Alto Desempenho", + "C++ : Algoritmos e Estruturas de Dados", + "C++ : Programação Concorrente e Paralela", + "C++ : Sistemas de Tempo Real", + "C++ : Computação Gráfica", + "C++ : Aplicações de Simulação", + "C++ : Aplicações Científicas", } }, { @@ -108,31 +108,31 @@ public static Dictionary> GetTags() new List { "C#", - ".NET", - "ASP.NET", - "ASP.NET Blazor", - "ASP.NET Razor Pages", - ".NET MAUI", - "Xamarin", - "Unity", - "ASP.NET Web Forms", - ".NET Windows Forms", - "WPF", - "WCF", - "Web Scraping", - "Machine Learning", - "Análise de Dados", - "Desenvolvimento Web", - "Scripting", - "Desenvolvimento de GUI", - "Desenvolvimento de Jogos", - "Programação de Redes", - "Automação", - "Computação Científica", - "PLN", - "Visão Computacional", - "IoT", - "Desenvolvimento Blockchain", + "C# : .NET", + "C# : ASP.NET", + "C# : ASP.NET Blazor", + "C# : ASP.NET Razor Pages", + "C# : .NET MAUI", + "C# : Xamarin", + "C# : Unity", + "C# : ASP.NET Web Forms", + "C# : .NET Windows Forms", + "C# : WPF", + "C# : WCF", + "C# : Web Scraping", + "C# : Machine Learning", + "C# : Análise de Dados", + "C# : Desenvolvimento Web", + "C# : Scripting", + "C# : Desenvolvimento de GUI", + "C# : Desenvolvimento de Jogos", + "C# : Programação de Redes", + "C# : Automação", + "C# : Computação Científica", + "C# : PLN", + "C# : Visão Computacional", + "C# : IoT", + "C# : Desenvolvimento Blockchain", } }, { @@ -140,25 +140,25 @@ public static Dictionary> GetTags() new List { "VB (Visual Basic)", - ".NET", - "Windows Forms", - "ASP.NET Web Forms", - "WPF", - "WCF", - "Web Scraping", - "Machine Learning", - "Análise de Dados", - "Desenvolvimento Web", - "Scripting", - "Desenvolvimento de GUI", - "Desenvolvimento de Jogos", - "Programação de Redes", - "Automação", - "Computação Científica", - "PLN", - "Visão Computacional", - "IoT", - "Desenvolvimento Blockchain", + "VB (Visual Basic) : .NET", + "VB (Visual Basic) : Windows Forms", + "VB (Visual Basic) : ASP.NET Web Forms", + "VB (Visual Basic) : WPF", + "VB (Visual Basic) : WCF", + "VB (Visual Basic) : Web Scraping", + "VB (Visual Basic) : Machine Learning", + "VB (Visual Basic) : Análise de Dados", + "VB (Visual Basic) : Desenvolvimento Web", + "VB (Visual Basic) : Scripting", + "VB (Visual Basic) : Desenvolvimento de GUI", + "VB (Visual Basic) : Desenvolvimento de Jogos", + "VB (Visual Basic) : Programação de Redes", + "VB (Visual Basic) : Automação", + "VB (Visual Basic) : Computação Científica", + "VB (Visual Basic) : PLN", + "VB (Visual Basic) : Visão Computacional", + "VB (Visual Basic) : IoT", + "VB (Visual Basic) : Desenvolvimento Blockchain", } }, { @@ -166,33 +166,33 @@ public static Dictionary> GetTags() new List { "PHP", - "Laravel", - "Symfony", - "CodeIgniter", - "Zend Framework", - "CakePHP", - "Yii", - "Phalcon", - "Slim Framework", - "WordPress", - "Drupal", - "Joomla", - "Magento", - "Opencart", - "Web Scraping", - "Machine Learning", - "Análise de Dados", - "Desenvolvimento Web", - "Scripting", - "Desenvolvimento de GUI", - "Desenvolvimento de Jogos", - "Programação de Redes", - "Automação", - "Computação Científica", - "PLN", - "Visão Computacional", - "IoT", - "Desenvolvimento Blockchain", + "PHP : Laravel", + "PHP : Symfony", + "PHP : CodeIgniter", + "PHP : Zend Framework", + "PHP : CakePHP", + "PHP : Yii", + "PHP : Phalcon", + "PHP : Slim Framework", + "PHP : WordPress", + "PHP : Drupal", + "PHP : Joomla", + "PHP : Magento", + "PHP : Opencart", + "PHP : Web Scraping", + "PHP : Machine Learning", + "PHP : Análise de Dados", + "PHP : Desenvolvimento Web", + "PHP : Scripting", + "PHP : Desenvolvimento de GUI", + "PHP : Desenvolvimento de Jogos", + "PHP : Programação de Redes", + "PHP : Automação", + "PHP : Computação Científica", + "PHP : PLN", + "PHP : Visão Computacional", + "PHP : IoT", + "PHP : Desenvolvimento Blockchain", } }, { @@ -200,26 +200,26 @@ public static Dictionary> GetTags() new List { "Ruby", - "Ruby on Rails", - "Sinatra", - "Rack", - "Hanami", - "Camping", - "Plugins e Gems", - "Web Scraping", - "Machine Learning", - "Análise de Dados", - "Desenvolvimento Web", - "Scripting", - "Desenvolvimento de GUI", - "Desenvolvimento de Jogos", - "Programação de Redes", - "Automação", - "Computação Científica", - "PLN", - "Visão Computacional", - "IoT", - "Desenvolvimento Blockchain", + "Ruby : Ruby on Rails", + "Ruby : Sinatra", + "Ruby : Rack", + "Ruby : Hanami", + "Ruby : Camping", + "Ruby : Plugins e Gems", + "Ruby : Web Scraping", + "Ruby : Machine Learning", + "Ruby : Análise de Dados", + "Ruby : Desenvolvimento Web", + "Ruby : Scripting", + "Ruby : Desenvolvimento de GUI", + "Ruby : Desenvolvimento de Jogos", + "Ruby : Programação de Redes", + "Ruby : Automação", + "Ruby : Computação Científica", + "Ruby : PLN", + "Ruby : Visão Computacional", + "Ruby : IoT", + "Ruby : Desenvolvimento Blockchain", } }, { @@ -227,20 +227,20 @@ public static Dictionary> GetTags() new List { "Go", - "Web Scraping", - "Machine Learning", - "Análise de Dados", - "Desenvolvimento Web", - "Scripting", - "Desenvolvimento de GUI", - "Desenvolvimento de Jogos", - "Programação de Redes", - "Automação", - "Computação Científica", - "PLN", - "Visão Computacional", - "IoT", - "Desenvolvimento Blockchain", + "Go : Web Scraping", + "Go : Machine Learning", + "Go : Análise de Dados", + "Go : Desenvolvimento Web", + "Go : Scripting", + "Go : Desenvolvimento de GUI", + "Go : Desenvolvimento de Jogos", + "Go : Programação de Redes", + "Go : Automação", + "Go : Computação Científica", + "Go : PLN", + "Go : Visão Computacional", + "Go : IoT", + "Go : Desenvolvimento Blockchain", } }, { @@ -248,18 +248,18 @@ public static Dictionary> GetTags() new List { "Android", - "Kotlin", - "Java", - "Android SDK", - "Android Studio", - "Android TV", - "Android Wear", - "Android Auto", - "Material Design", - "Jogos para Android", - "Realidade Aumentada (ARCore)", - "Aprendizado de Máquina (ML Kit)", - "IoT (Android Things)", + "Android : Kotlin", + "Android : Java", + "Android : Android SDK", + "Android : Android Studio", + "Android : Android TV", + "Android : Android Wear", + "Android : Android Auto", + "Android : Material Design", + "Android : Jogos para Android", + "Android : Realidade Aumentada (ARCore)", + "Android : Aprendizado de Máquina (ML Kit)", + "Android : IoT (Android Things)", } }, { @@ -267,19 +267,19 @@ public static Dictionary> GetTags() new List { "iOS", - "Swift", - "Objective-C", - "UIKit", - "SwiftUI", - "Cocoa Touch", - "Xcode", - "Aplicações para iPhone", - "Aplicações para iPad", - "Apple Watch", - "Apple TV", - "Jogos para iOS", - "Realidade Aumentada (ARKit)", - "Aprendizado de Máquina (Core ML)", + "iOS : Swift", + "iOS : Objective-C", + "iOS : UIKit", + "iOS : SwiftUI", + "iOS : Cocoa Touch", + "iOS : Xcode", + "iOS : Aplicações para iPhone", + "iOS : Aplicações para iPad", + "iOS : Apple Watch", + "iOS : Apple TV", + "iOS : Jogos para iOS", + "iOS : Realidade Aumentada (ARKit)", + "iOS : Aprendizado de Máquina (Core ML)", } }, { @@ -287,18 +287,18 @@ public static Dictionary> GetTags() new List { "Cross-platform", - "Xamarin", - ".NET MAUI", - "Flutter", - "React Native", - "Ionic", - "PhoneGap", - "Cordova", - "NativeScript", - "Unity", - "Aplicações Multiplataforma", - "Android e iOS", - "Jogos Multiplataforma", + "Cross-platform : Xamarin", + "Cross-platform : .NET MAUI", + "Cross-platform : Flutter", + "Cross-platform : React Native", + "Cross-platform : Ionic", + "Cross-platform : PhoneGap", + "Cross-platform : Cordova", + "Cross-platform : NativeScript", + "Cross-platform : Unity", + "Cross-platform : Aplicações Multiplataforma", + "Cross-platform : Android e iOS", + "Cross-platform : Jogos Multiplataforma", } }, { @@ -306,45 +306,45 @@ public static Dictionary> GetTags() new List { "Machine Learning", - "Redes Neurais", - "Deep Learning", - "NLP", - "Visão Computacional", - "Classificação e Regressão", - "Agrupamento", - "Detecção de Anomalias", - "Reconhecimento de Padrões", - "Análise de Sentimentos", - "Recomendação", - "Previsão", - "Mineração de Dados", - "Processamento de Imagens", - "Processamento de Vídeos", - "Processamento de Áudio", - "Análise de Texto", - "Reconhecimento de Voz", - "Geração de Linguagem Natural", - "Modelagem Estatística", - "Validação de Modelos", - "Otimização de Modelos", - "TensorFlow", - "Keras", - "PyTorch", - "Scikit-learn", - "Pandas", - "NumPy", - "Matplotlib", - "Seaborn", - "NLTK", - "SpaCy", - "OpenCV", - "Fast.ai", - "H2O.ai", - "Apache Spark MLlib", - "IBM Watson", - "Azure Machine Learning", - "AI Platform", - "Amazon SageMaker", + "Machine Learning : Redes Neurais", + "Machine Learning : Deep Learning", + "Machine Learning : NLP", + "Machine Learning : Visão Computacional", + "Machine Learning : Classificação e Regressão", + "Machine Learning : Agrupamento", + "Machine Learning : Detecção de Anomalias", + "Machine Learning : Reconhecimento de Padrões", + "Machine Learning : Análise de Sentimentos", + "Machine Learning : Recomendação", + "Machine Learning : Previsão", + "Machine Learning : Mineração de Dados", + "Machine Learning : Processamento de Imagens", + "Machine Learning : Processamento de Vídeos", + "Machine Learning : Processamento de Áudio", + "Machine Learning : Análise de Texto", + "Machine Learning : Reconhecimento de Voz", + "Machine Learning : Geração de Linguagem Natural", + "Machine Learning : Modelagem Estatística", + "Machine Learning : Validação de Modelos", + "Machine Learning : Otimização de Modelos", + "Machine Learning : TensorFlow", + "Machine Learning : Keras", + "Machine Learning : PyTorch", + "Machine Learning : Scikit-learn", + "Machine Learning : Pandas", + "Machine Learning : NumPy", + "Machine Learning : Matplotlib", + "Machine Learning : Seaborn", + "Machine Learning : NLTK", + "Machine Learning : SpaCy", + "Machine Learning : OpenCV", + "Machine Learning : Fast.ai", + "Machine Learning : H2O.ai", + "Machine Learning : Apache Spark MLlib", + "Machine Learning : IBM Watson", + "Machine Learning : Azure Machine Learning", + "Machine Learning : AI Platform", + "Machine Learning : Amazon SageMaker", } }, { @@ -352,36 +352,36 @@ public static Dictionary> GetTags() new List { "DevOps", - "Git", - "SVN", - "Mercurial", - "Jenkins", - "Travis CI", - "CircleCI", - "GitLab", - "GitLab CI/CD", - "Github", - "Github Actions", - "Octopus Deploy", - "AWS CodeDeploy", - "Prometheus", - "Grafana", - "New Relic", - "Sentry", - "Docker", - "Kubernetes", - "Docker Swarm", - "Rancher", - "Terraform", - "Ansible", - "Chef", - "Puppet", - "AWS CloudFormation", - "Testes de Infraestrutura", - "Provisionamento de Infraestrutura", - "Implantação de Aplicações", - "Gerenciamento de Ambientes", - "Automação de Processos", + "DevOps : Git", + "DevOps : SVN", + "DevOps : Mercurial", + "DevOps : Jenkins", + "DevOps : Travis CI", + "DevOps : CircleCI", + "DevOps : GitLab", + "DevOps : GitLab CI/CD", + "DevOps : Github", + "DevOps : Github Actions", + "DevOps : Octopus Deploy", + "DevOps : AWS CodeDeploy", + "DevOps : Prometheus", + "DevOps : Grafana", + "DevOps : New Relic", + "DevOps : Sentry", + "DevOps : Docker", + "DevOps : Kubernetes", + "DevOps : Docker Swarm", + "DevOps : Rancher", + "DevOps : Terraform", + "DevOps : Ansible", + "DevOps : Chef", + "DevOps : Puppet", + "DevOps : AWS CloudFormation", + "DevOps : Testes de Infraestrutura", + "DevOps : Provisionamento de Infraestrutura", + "DevOps : Implantação de Aplicações", + "DevOps : Gerenciamento de Ambientes", + "DevOps : Automação de Processos", } }, { @@ -389,46 +389,52 @@ public static Dictionary> GetTags() new List { "Cloud Computing", - "Amazon Web Services", - "Microsoft Azure", - "Google Cloud Platform", - "IBM Cloud", - "Alibaba Cloud", - "Oracle Cloud", - "IaaS", - "PaaS", - "SaaS", - "Serverless", - "Nuvem Híbrida", - "Armazenamento", - "Banco de Dados", - "Rede", - "Segurança", - "Big Data", - "Contêineres", - "Monitoramento", - "Gerenciamento de Custos", - "Backup e Recuperação", + "Cloud Computing : Amazon Web Services", + "Cloud Computing : Microsoft Azure", + "Cloud Computing : Google Cloud Platform", + "Cloud Computing : IBM Cloud", + "Cloud Computing : Alibaba Cloud", + "Cloud Computing : Oracle Cloud", + "Cloud Computing : IaaS", + "Cloud Computing : PaaS", + "Cloud Computing : SaaS", + "Cloud Computing : Serverless", + "Cloud Computing : Nuvem Híbrida", + "Cloud Computing : Armazenamento", + "Cloud Computing : Banco de Dados", + "Cloud Computing : Rede", + "Cloud Computing : Segurança", + "Cloud Computing : Big Data", + "Cloud Computing : Contêineres", + "Cloud Computing : Monitoramento", + "Cloud Computing : Gerenciamento de Custos", + "Cloud Computing : Backup e Recuperação", } }, { "Sistemas Operacionais", - new List { "Sistemas Operacionais", "Linux", "Windows", "macOS" } + new List + { + "Sistemas Operacionais", + "Sistemas Operacionais : Linux", + "Sistemas Operacionais : Windows", + "Sistemas Operacionais : macOS" + } }, { "Metodologias Ágeis", new List { "Metodologias Ágeis", - "Scrum", - "Kanban", - "Extreme Programming", - "Lean", - "Crystal", - "FDD", - "DSDM", - "TDD", - "BDD", + "Metodologias Ágeis : Scrum", + "Metodologias Ágeis : Kanban", + "Metodologias Ágeis : Extreme Programming", + "Metodologias Ágeis : Lean", + "Metodologias Ágeis : Crystal", + "Metodologias Ágeis : FDD", + "Metodologias Ágeis : DSDM", + "Metodologias Ágeis : TDD", + "Metodologias Ágeis : BDD", } }, { @@ -436,12 +442,12 @@ public static Dictionary> GetTags() new List { "Gerenciamento de Projetos", - "Jira", - "Asana", - "Trello", - "Microsoft Project", - "Basecamp", - "Redmine", + "Gerenciamento de Projetos : Jira", + "Gerenciamento de Projetos : Asana", + "Gerenciamento de Projetos : Trello", + "Gerenciamento de Projetos : Microsoft Project", + "Gerenciamento de Projetos : Basecamp", + "Gerenciamento de Projetos : Redmine", } }, { @@ -449,13 +455,13 @@ public static Dictionary> GetTags() new List { "Bancos de Dados", - "SQL", - "NoSQL", - "MySQL", - "PostgreSQL", - "MongoDB", - "Oracle", - "SQLite", + "Bancos de Dados : SQL", + "Bancos de Dados : NoSQL", + "Bancos de Dados : MySQL", + "Bancos de Dados : PostgreSQL", + "Bancos de Dados : MongoDB", + "Bancos de Dados : Oracle", + "Bancos de Dados : SQLite", } }, { @@ -463,21 +469,21 @@ public static Dictionary> GetTags() new List { "Qualidade de Software", - "Testes de API", - "Testes unitários", - "Testes de integração", - "Testes de software", - "Sonar Cloud", - "Selenium", - "JUnit", - "TestNG", - "Cucumber", - "Postman", - "NUnit", - "Robot Framework", - "Appium", - "SoapUI", - "JMeter", + "Qualidade de Software : Testes de API", + "Qualidade de Software : Testes unitários", + "Qualidade de Software : Testes de integração", + "Qualidade de Software : Testes de software", + "Qualidade de Software : Sonar Cloud", + "Qualidade de Software : Selenium", + "Qualidade de Software : JUnit", + "Qualidade de Software : TestNG", + "Qualidade de Software : Cucumber", + "Qualidade de Software : Postman", + "Qualidade de Software : NUnit", + "Qualidade de Software : Robot Framework", + "Qualidade de Software : Appium", + "Qualidade de Software : SoapUI", + "Qualidade de Software : JMeter", } }, { @@ -485,10 +491,10 @@ public static Dictionary> GetTags() new List { "Business Intelligence", - "Data Science", - "Data Analytics", - "Data Visualization", - "Power BI", + "Business Intelligence : Data Science", + "Business Intelligence : Data Analytics", + "Business Intelligence : Data Visualization", + "Business Intelligence : Power BI", } }, { @@ -496,12 +502,12 @@ public static Dictionary> GetTags() new List { "Segurança da Informação", - "JWT", - "Criptografia", - "Hacking", - "Penetration Testing", - "Redes", - "Firewalls", + "Segurança da Informação : JWT", + "Segurança da Informação : Criptografia", + "Segurança da Informação : Hacking", + "Segurança da Informação : Penetration Testing", + "Segurança da Informação : Redes", + "Segurança da Informação : Firewalls", } }, { @@ -509,14 +515,14 @@ public static Dictionary> GetTags() new List { "NOCODE & LOW CODE", - "Microsoft Power Apps", - "OutSystems", - "Google AppSheet", - "Appian", - "Mendix", - "Zoho Creator", - "Bubble", - "Google App Maker", + "NOCODE & LOW CODE : Microsoft Power Apps", + "NOCODE & LOW CODE : OutSystems", + "NOCODE & LOW CODE : Google AppSheet", + "NOCODE & LOW CODE : Appian", + "NOCODE & LOW CODE : Mendix", + "NOCODE & LOW CODE : Zoho Creator", + "NOCODE & LOW CODE : Bubble", + "NOCODE & LOW CODE : Google App Maker", } }, { @@ -524,23 +530,23 @@ public static Dictionary> GetTags() new List { "Mercado de trabalho", - "Revisão de currículo", - "Revisão de portfólio", - "Dicas para entrevista", - "Simulação de entrevista", - "Softskills", + "Mercado de trabalho : Revisão de currículo", + "Mercado de trabalho : Revisão de portfólio", + "Mercado de trabalho : Dicas para entrevista", + "Mercado de trabalho : Simulação de entrevista", + "Mercado de trabalho : Softskills", } }, { "Público-Alvo", new List { - "Estudantes", - "Iniciantes", - "Intermediarios", - "Experientes", - "Freelancers", - "Empreendedores", + "Público-Alvo : Estudantes", + "Público-Alvo : Iniciantes", + "Público-Alvo : Intermediarios", + "Público-Alvo : Experientes", + "Público-Alvo : Freelancers", + "Público-Alvo : Empreendedores", } }, }; diff --git a/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs b/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs index e629f287..4dc68406 100644 --- a/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs +++ b/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs @@ -139,7 +139,6 @@ IJoinTimeWebService joinTimeWebService OldTimeSelectionList = new(); TimeSelectionsCheckedUsers = new(); TimeSelectionBackstage = new(); - } [BindProperty] @@ -326,9 +325,7 @@ public async Task OnGetRenderCalendarAsync() foreach (var time in freeTimeList) { - - var joinTimes = await _joinTimeWebService.GetJoinTimesAtivos(time.Key.Id); - + var joinTimes = await _joinTimeWebService.GetJoinTimesAtivos(time.Key.Id); var pendentJoinTimes = joinTimes .Where(j => j.StatusJoinTime == StatusJoinTime.Pendente) diff --git a/src/Core/Domain/Interfaces/Repositories/IJoinTimeRepository.cs b/src/Core/Domain/Interfaces/Repositories/IJoinTimeRepository.cs index 7c4102aa..f8434fdb 100644 --- a/src/Core/Domain/Interfaces/Repositories/IJoinTimeRepository.cs +++ b/src/Core/Domain/Interfaces/Repositories/IJoinTimeRepository.cs @@ -8,6 +8,5 @@ public interface IJoinTimeRepository Task> GetFreeTimeMarcadosAntigos(); Task UpdateRange(List jts); Task> GetJoinTimesAtivos(Guid timeId); - } } diff --git a/src/Core/Infrastructure/Repositories/JoinTimeRepository.cs b/src/Core/Infrastructure/Repositories/JoinTimeRepository.cs index 2855ccf8..60a18d70 100644 --- a/src/Core/Infrastructure/Repositories/JoinTimeRepository.cs +++ b/src/Core/Infrastructure/Repositories/JoinTimeRepository.cs @@ -58,10 +58,13 @@ public async Task UpdateRange(List jts) public async Task> GetJoinTimesAtivos(Guid timeId) { return await DbContext - .JoinTimes - .Where(j => j.TimeSelectionId == timeId && - (j.StatusJoinTime == StatusJoinTime.Marcado || - j.StatusJoinTime == StatusJoinTime.Pendente)) + .JoinTimes.Where(j => + j.TimeSelectionId == timeId + && ( + j.StatusJoinTime == StatusJoinTime.Marcado + || j.StatusJoinTime == StatusJoinTime.Pendente + ) + ) .ToListAsync(); } } diff --git a/src/Core/Infrastructure/WebServices/Core/JointTimeWebService.cs b/src/Core/Infrastructure/WebServices/Core/JointTimeWebService.cs index 83285875..89a2d757 100644 --- a/src/Core/Infrastructure/WebServices/Core/JointTimeWebService.cs +++ b/src/Core/Infrastructure/WebServices/Core/JointTimeWebService.cs @@ -22,6 +22,6 @@ public async Task> GetJoinTimesAtivos(Guid timeId) { var route = Path.Combine(baseRoute, $"GetJoinTimesAtivos/{timeId}"); Console.WriteLine(route); - return await client.GetAsync>(route); + return await client.GetAsync>(route); } } diff --git a/src/Core/Presentation/EndPoints/JoinTimeEndPoints.cs b/src/Core/Presentation/EndPoints/JoinTimeEndPoints.cs index 8d4e487a..a41f71fe 100644 --- a/src/Core/Presentation/EndPoints/JoinTimeEndPoints.cs +++ b/src/Core/Presentation/EndPoints/JoinTimeEndPoints.cs @@ -35,7 +35,7 @@ [FromServices] IJoinTimeBusinessLogic _logic } } - public static async Task GetJoinTimesAtivos( + public static async Task GetJoinTimesAtivos( [FromRoute] Guid timeId, [FromServices] IJoinTimeBusinessLogic _logic ) @@ -43,7 +43,7 @@ [FromServices] IJoinTimeBusinessLogic _logic try { var result = await _logic.GetJoinTimesAtivos(timeId); - + return Results.Ok(result); } catch (Exception ex) diff --git a/tests/FreeTime/FreeTimeBackstageTest.cs b/tests/FreeTime/FreeTimeBackstageTest.cs index d600b1ef..bd8a2f21 100644 --- a/tests/FreeTime/FreeTimeBackstageTest.cs +++ b/tests/FreeTime/FreeTimeBackstageTest.cs @@ -13,12 +13,16 @@ public void CreateFreeTimeBackstage_ReturnsCorrectValues() bool expectedIlimitado = true; // Act - var result = FreeTimeBackstage.Create(expectedTimeSelectionId, expectedMaxParticipants, expectedIlimitado); + var result = FreeTimeBackstage.Create( + expectedTimeSelectionId, + expectedMaxParticipants, + expectedIlimitado + ); // Assert Assert.NotNull(result); - Assert.Equal(expectedTimeSelectionId,result.TimeSelectionId); - Assert.Equal(expectedMaxParticipants,result.MaxParticipants); - Assert.Equal(expectedIlimitado,result.Ilimitado); + Assert.Equal(expectedTimeSelectionId, result.TimeSelectionId); + Assert.Equal(expectedMaxParticipants, result.MaxParticipants); + Assert.Equal(expectedIlimitado, result.Ilimitado); } } diff --git a/tests/JoinTime/JoinTimeBusinessLogicTest.cs b/tests/JoinTime/JoinTimeBusinessLogicTest.cs index 37031b72..2e7b9ec2 100644 --- a/tests/JoinTime/JoinTimeBusinessLogicTest.cs +++ b/tests/JoinTime/JoinTimeBusinessLogicTest.cs @@ -161,7 +161,6 @@ public async Task GetJoinTimesAtivos_ShouldReturnEmptyList_WhenNoMatchingJoinTim ); var timeId = Guid.NewGuid(); - mockJoinTimeRepository .Setup(repo => repo.GetJoinTimesAtivos(timeId)) .ReturnsAsync(new List()); @@ -188,7 +187,13 @@ public async Task GetJoinTimesAtivos_ShouldReturnOnlyMarcadoJoinTimes() var joinTimes = new List { - JoinTime.Create(Guid.NewGuid(), timeId, StatusJoinTime.Marcado, false, TipoAction.Aprender) + JoinTime.Create( + Guid.NewGuid(), + timeId, + StatusJoinTime.Marcado, + false, + TipoAction.Aprender + ) }; mockJoinTimeRepository @@ -238,8 +243,20 @@ public async Task GetJoinTimesAtivos_ShouldReturnMarcadoAndPendenteJoinTimes() var joinTimes = new List { - JoinTime.Create(Guid.NewGuid(), timeId, StatusJoinTime.Marcado, false, TipoAction.Aprender), - JoinTime.Create(Guid.NewGuid(), timeId, StatusJoinTime.Pendente, false, TipoAction.Aprender) + JoinTime.Create( + Guid.NewGuid(), + timeId, + StatusJoinTime.Marcado, + false, + TipoAction.Aprender + ), + JoinTime.Create( + Guid.NewGuid(), + timeId, + StatusJoinTime.Pendente, + false, + TipoAction.Aprender + ) }; mockJoinTimeRepository @@ -252,9 +269,14 @@ public async Task GetJoinTimesAtivos_ShouldReturnMarcadoAndPendenteJoinTimes() // Assert Assert.NotNull(result); Assert.Equal(2, result.Count); - Assert.All(result, jt => Assert.Contains(jt.StatusJoinTime, new[] { StatusJoinTime.Marcado, StatusJoinTime.Pendente })); + Assert.All( + result, + jt => + Assert.Contains( + jt.StatusJoinTime, + new[] { StatusJoinTime.Marcado, StatusJoinTime.Pendente } + ) + ); mockJoinTimeRepository.Verify(repo => repo.GetJoinTimesAtivos(timeId), Times.Once); } - - } diff --git a/tests/JoinTime/JoinTimeEndPointsTests.cs b/tests/JoinTime/JoinTimeEndPointsTests.cs index 6048ef96..84e5cd98 100644 --- a/tests/JoinTime/JoinTimeEndPointsTests.cs +++ b/tests/JoinTime/JoinTimeEndPointsTests.cs @@ -43,20 +43,32 @@ public async Task UpdateOldJoinTimes_ReturnsBadRequest_OnException() [Fact] public async Task GetJoinTimesAtivos_ReturnsOk_WithValidData() { - // Arrange: + // Arrange: var mockLogic = new Mock(); var validGuid = Guid.NewGuid(); var joinTimes = new List { - JoinTime.Create(validGuid, validGuid, StatusJoinTime.Marcado, false, TipoAction.Aprender), - JoinTime.Create(validGuid, validGuid, StatusJoinTime.Pendente, false, TipoAction.Aprender) + JoinTime.Create( + validGuid, + validGuid, + StatusJoinTime.Marcado, + false, + TipoAction.Aprender + ), + JoinTime.Create( + validGuid, + validGuid, + StatusJoinTime.Pendente, + false, + TipoAction.Aprender + ) }; mockLogic.Setup(logic => logic.GetJoinTimesAtivos(validGuid)).ReturnsAsync(joinTimes); - // Act: + // Act: var result = await JoinTimeEndPoints.GetJoinTimesAtivos(validGuid, mockLogic.Object); - // Assert: + // Assert: var okResult = Assert.IsType>>(result); Assert.Equal(joinTimes, okResult.Value); } @@ -64,30 +76,34 @@ public async Task GetJoinTimesAtivos_ReturnsOk_WithValidData() [Fact] public async Task GetJoinTimesAtivos_ReturnsNotFound_WithValidDataButNoResults() { - // Arrange: + // Arrange: var mockLogic = new Mock(); var validGuid = Guid.NewGuid(); - mockLogic.Setup(logic => logic.GetJoinTimesAtivos(validGuid)).ReturnsAsync(new List()); + mockLogic + .Setup(logic => logic.GetJoinTimesAtivos(validGuid)) + .ReturnsAsync(new List()); - // Act: + // Act: var result = await JoinTimeEndPoints.GetJoinTimesAtivos(validGuid, mockLogic.Object); - // Assert: + // Assert: Assert.IsType(result); } [Fact] public async Task GetJoinTimesAtivos_ReturnsBadRequest_OnException() { - // Arrange: + // Arrange: var mockLogic = new Mock(); var invalidGuid = Guid.NewGuid(); - mockLogic.Setup(logic => logic.GetJoinTimesAtivos(invalidGuid)).ThrowsAsync(new Exception("Test error")); + mockLogic + .Setup(logic => logic.GetJoinTimesAtivos(invalidGuid)) + .ThrowsAsync(new Exception("Test error")); - // Act: + // Act: var result = await JoinTimeEndPoints.GetJoinTimesAtivos(invalidGuid, mockLogic.Object); - // Assert: + // Assert: var badRequestResult = Assert.IsType>(result); Assert.Equal("Test error", badRequestResult.Value); } @@ -95,15 +111,17 @@ public async Task GetJoinTimesAtivos_ReturnsBadRequest_OnException() [Fact] public async Task GetJoinTimesAtivos_ReturnsBadRequest_WithInvalidGuid() { - // Arrange: + // Arrange: var mockLogic = new Mock(); - var invalidGuid = Guid.Empty; - mockLogic.Setup(logic => logic.GetJoinTimesAtivos(invalidGuid)).ThrowsAsync(new ArgumentException("Invalid GUID")); + var invalidGuid = Guid.Empty; + mockLogic + .Setup(logic => logic.GetJoinTimesAtivos(invalidGuid)) + .ThrowsAsync(new ArgumentException("Invalid GUID")); - // Act: + // Act: var result = await JoinTimeEndPoints.GetJoinTimesAtivos(invalidGuid, mockLogic.Object); - // Assert: + // Assert: var badRequestResult = Assert.IsType>(result); Assert.Equal("Invalid GUID", badRequestResult.Value); } @@ -116,8 +134,20 @@ public async Task GetJoinTimesAtivos_ReturnsAllJoinTimes_WithMultipleResults() var validGuid = Guid.NewGuid(); var joinTimes = new List { - JoinTime.Create(validGuid, validGuid, StatusJoinTime.Marcado, false, TipoAction.Aprender), - JoinTime.Create(validGuid, validGuid, StatusJoinTime.Pendente, false, TipoAction.Aprender), + JoinTime.Create( + validGuid, + validGuid, + StatusJoinTime.Marcado, + false, + TipoAction.Aprender + ), + JoinTime.Create( + validGuid, + validGuid, + StatusJoinTime.Pendente, + false, + TipoAction.Aprender + ), JoinTime.Create(validGuid, validGuid, StatusJoinTime.Marcado, false, TipoAction.Ensinar) }; mockLogic.Setup(logic => logic.GetJoinTimesAtivos(validGuid)).ReturnsAsync(joinTimes); @@ -125,9 +155,8 @@ public async Task GetJoinTimesAtivos_ReturnsAllJoinTimes_WithMultipleResults() // Act: var result = await JoinTimeEndPoints.GetJoinTimesAtivos(validGuid, mockLogic.Object); - // Assert: + // Assert: var okResult = Assert.IsType>>(result); Assert.True(okResult.Value?.Count == 3); } - } diff --git a/tests/JoinTime/JoinTimeRepositoryTest.cs b/tests/JoinTime/JoinTimeRepositoryTest.cs index 22fafc2d..88107f00 100644 --- a/tests/JoinTime/JoinTimeRepositoryTest.cs +++ b/tests/JoinTime/JoinTimeRepositoryTest.cs @@ -28,13 +28,12 @@ public JoinTimeRepositoryTest() private void InitializeJoinTimes() { - _context.JoinTimes.AddRange( new List { JoinTime.Create( Guid.NewGuid(), - Guid.NewGuid(), + Guid.NewGuid(), StatusJoinTime.Marcado, false, TipoAction.Aprender @@ -124,8 +123,8 @@ public async Task UpdateRange_UpdatesJoinTimes() [Fact] public async Task GetJoinTimesAtivos_ReturnsCorrectJoinTimes() { - // Arrange: - var ts = TimeSelection.Create( + // Arrange: + var ts = TimeSelection.Create( Guid.NewGuid(), null, DateTime.Now.AddMinutes(-40), @@ -157,24 +156,31 @@ public async Task GetJoinTimesAtivos_ReturnsCorrectJoinTimes() await _context.SaveChangesAsync(); // Guid specificGuid = Guid.Parse("1cc5615c-c82f-4e5c-b2de-df5421c72a82"); - + // Act: var result = await _repository.GetJoinTimesAtivos(ts.Id); // Assert: Assert.NotNull(result); Assert.NotEmpty(result); // Verifica se há pelo menos um JoinTime retornado - Assert.All(result, jt => Assert.Contains(jt.StatusJoinTime, new[] { StatusJoinTime.Marcado, StatusJoinTime.Pendente })); + Assert.All( + result, + jt => + Assert.Contains( + jt.StatusJoinTime, + new[] { StatusJoinTime.Marcado, StatusJoinTime.Pendente } + ) + ); } - [Fact] + [Fact] public async Task GetJoinTimesAtivos_ReturnsEmptyList_WhenNoMatchingJoinTimes() { - // Act: + // Act: var nonExistentTimeSelectionId = Guid.NewGuid(); var result = await _repository.GetJoinTimesAtivos(nonExistentTimeSelectionId); - // Assert: + // Assert: Assert.NotNull(result); Assert.Empty(result); } diff --git a/tests/Live/LiveNotifyWorkerTest.cs b/tests/Live/LiveNotifyWorkerTest.cs index df994342..331e7a51 100644 --- a/tests/Live/LiveNotifyWorkerTest.cs +++ b/tests/Live/LiveNotifyWorkerTest.cs @@ -1,4 +1,3 @@ - using Background; using Domain.WebServices; using Microsoft.Extensions.DependencyInjection; @@ -17,19 +16,20 @@ public async Task StartAsync_ShouldCall_NotifyUpcomingLives() var mockServiceScope = new Mock(); var mockServiceProvider = new Mock(); - mockServiceScopeFactory.Setup(x => x.CreateScope()).Returns(mockServiceScope.Object); + mockServiceScopeFactory.Setup(x => x.CreateScope()).Returns(mockServiceScope.Object); mockServiceScope.Setup(x => x.ServiceProvider).Returns(mockServiceProvider.Object); - mockServiceProvider.Setup(x => x.GetService(typeof(ILiveWebService))).Returns(mockLiveWebService.Object); + mockServiceProvider + .Setup(x => x.GetService(typeof(ILiveWebService))) + .Returns(mockLiveWebService.Object); var liveNotifyWorkerSimulation = new LiveNotifyWorker(mockServiceScopeFactory.Object); const int EXECUTION_INTERVAL = 100; var cancellationTokenSource = new CancellationTokenSource(EXECUTION_INTERVAL); - - await liveNotifyWorkerSimulation.StartAsync(cancellationTokenSource.Token); + + await liveNotifyWorkerSimulation.StartAsync(cancellationTokenSource.Token); mockLiveWebService.Verify(x => x.NotifyUpcomingLives(), Times.AtLeastOnce()); } - [Fact] public async Task StartAsync_ShouldCall_NotifyUpcomingLives_Exceptions() { @@ -38,17 +38,22 @@ public async Task StartAsync_ShouldCall_NotifyUpcomingLives_Exceptions() var mockServiceScope = new Mock(); var mockServiceProvider = new Mock(); - mockLiveWebService.Setup(x => x.NotifyUpcomingLives()).ThrowsAsync(new Exception("teste exception")); + mockLiveWebService + .Setup(x => x.NotifyUpcomingLives()) + .ThrowsAsync(new Exception("teste exception")); mockServiceScopeFactory.Setup(x => x.CreateScope()).Returns(mockServiceScope.Object); mockServiceScope.Setup(x => x.ServiceProvider).Returns(mockServiceProvider.Object); - mockServiceProvider.Setup(x => x.GetService(typeof(ILiveWebService))).Returns(mockLiveWebService.Object); + mockServiceProvider + .Setup(x => x.GetService(typeof(ILiveWebService))) + .Returns(mockLiveWebService.Object); - var liveNotifyWorkerSimulation = new LiveNotifyWorker(mockServiceScopeFactory.Object); + var liveNotifyWorkerSimulation = new LiveNotifyWorker(mockServiceScopeFactory.Object); const int EXECUTION_INTERVAL = 100; - var cancellationTokenSource = new CancellationTokenSource(EXECUTION_INTERVAL); - var exception = await Record.ExceptionAsync(() => liveNotifyWorkerSimulation.StartAsync(cancellationTokenSource.Token)); - - Assert.Null(exception); - } + var cancellationTokenSource = new CancellationTokenSource(EXECUTION_INTERVAL); + var exception = await Record.ExceptionAsync( + () => liveNotifyWorkerSimulation.StartAsync(cancellationTokenSource.Token) + ); + Assert.Null(exception); + } }