ASP do início ao fim. Desenvolvimento de estrutura NET e Entity | Trevoir Williams | Skillshare

Velocidade de reprodução


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

ASP do início ao fim. Desenvolvimento de estrutura NET e Entity

teacher avatar Trevoir Williams, Jamaican Software Engineer

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

    • 1.

      Introdução

      2:49

    • 2.

      Crie uma conta do GitHub

      2:28

    • 3.

      Instale o Visual Studio 2019 Edição da comunidade

      10:14

    • 4.

      ATUALIZAÇÃO: instale Visual Studio 2022 Edição e Community Edition . NET 6

      2:16

    • 5.

      Crie . Projeto de web Net Core

      5:51

    • 6.

      Tour de ASP.NET de aplicação

      23:25

    • 7.

      Migre projeto para . NET 5

      5:12

    • 8.

      UPDATE: migre ao Project para . NET 6

      5:57

    • 9.

      Configuração de sites

      21:16

    • 10.

      Configurar Database, e as migrações

      32:39

    • 11.

      Repositório e a injeção de dependência

      25:36

    • 12.

      Implemente banco banco de dados e a funcionalidade de estrutura da entidade

      25:35

    • 13.

      Configurar modelos e AutoMapper

      32:04

    • 14.

      Analisar e adicionar mudanças no GitHub

      8:00

    • 15.

      Controlador e ações

      12:20

    • 16.

      Exibição de leave Type

      18:44

    • 17.

      Criar o tipo

      23:17

    • 18.

      Editar.

      19:43

    • 19.

      Visualização de detalhes na configuração leave

      6:06

    • 20.

      Função de order Leave

      14:55

    • 21.

      Adicione a tabela de dados com fonte e ícones de ted awesome

      29:31

    • 22.

      Analisar e adicionar mudanças no GitHub

      8:06

    • 23.

      Visão geral de autenticação core ASP.Net

      25:53

    • 24.

      Personalizando a página de registro e processo

      36:02

    • 25.

      Funcionalidade do login no Rever

      11:02

    • 26.

      Adicione papéis de padrão e usuário

      32:19

    • 27.

      Controle o usuário com autorização com papel

      19:10

    • 28.

      Analisar e adicionar mudanças no GitHub

      2:32

    • 29.

      Visão geral do módulo para leitar

      2:02

    • 30.

      Módulo de Allocation - Mudanças de banco de dados

      11:55

    • 31.

      Módulo de Allocation - criar visualização

      44:42

    • 32.

      Módulo de leave de leave

      29:53

    • 33.

      Módulo de - - Visualizar a locação por Leave por funcionário

      36:55

    • 34.

      Módulo de Allocation - edite a locação por o funcionário

      30:15

    • 35.

      Analisar e adicionar mudanças no GitHub

      4:30

    • 36.

      Visão Visão Geral de solicitação

      2:06

    • 37.

      Módulo de solicitação de licença - Mudanças de banco de banco banco de banco e ViewModels

      9:21

    • 38.

      Módulo de solicitação de leads para funcionários - configuração Controlledrs

      33:37

    • 39.

      Módulo de solicitação para Empregados - Configurar Admin

      11:33

    • 40.

      Módulo de pedidos de leave - criar um pedido da minha esquerda 1

      34:01

    • 41.

      Módulo de pedidos de leave - criar um pedido da minha licença 2

      40:44

    • 42.

      Módulo de solicitação de leave no Admin Rey Revisão

      40:02

    • 43.

      Visualizações de solicitação de Empregado - Empregado Leave -

      15:00

    • 44.

      Analisar e adicionar mudanças no GitHub

      7:38

    • 45.

      Pré-visualização de tema AdminLTE

      1:23

    • 46.

      Crie uma nova página de layout

      8:43

    • 47.

      Configurar o configuração OS Dependências

      39:01

    • 48.

      Fixes e adições essenciais

      14:00

    • 49.

      Páginas de registro personalizado

      9:59

    • 50.

      Analisar e adicionar mudanças no GitHub

      3:11

    • 51.

      Funções de repositório síncrono

      17:41

    • 52.

      Controladores e ações

      16:11

    • 53.

      Analisar e adicionar mudanças no GitHub

      2:37

    • 54.

      Revisão dos padrões de programação

      12:18

    • 55.

      Implemente um Repositório genérico

      30:01

    • 56.

      Implemente a unidade do trabalho

      14:54

    • 57.

      Controlador de Refactor

      13:02

    • 58.

      Controlador de pedidos de Refactor

      18:45

    • 59.

      Controlador de Refactor de Refactor

      9:21

    • 60.

      UPDATE: a o tipo forte inclui para a unidade do trabalho

      11:53

    • 61.

      Revisão de recursos de segurança construído

      7:26

    • 62.

      Método de supressão segura

      6:56

    • 63.

      Envie e-mails usando MailKit e SMTP

      19:24

    • 64.

      Visão geral de seção Publish

      3:50

    • 65.

      Configurar serviços na internet (IIS) em um servidor

      15:46

    • 66.

      Aplicativo para publicação no IIS e SQL Server

      29:39

    • 67.

      Crie a conta do Microsoft Azure

      7:12

    • 68.

      Publicação no Azure App e serviços SQL

      24:07

    • 69.

      Configurar um Pipeline automatizado no GitHub e Azure DevOps

      32:40

    • 70.

      Revisão de publicação

      2:13

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

830

Estudantes

--

Projeto

Sobre este curso

Visão geral

Aprenda a criar um sistema de gestão de de com Empregados usando ASP.Net Core 3.1, Entity Framing Framing Framing using e o padrão Repositório. Este curso completo vai mostrar como usar o Visual Studio , Microsoft SQL Server Express e explorar de desenvolvimento web dinâmico com Bootstrap e JQuery e várias bibliotecas de frontend .

ASP.NET Core 3.1 é o quadro de atual e cross-plataforma da Microsoft para construir aplicativos web de negócios de empreendimento. Neste curso, você vai aprender tudo que você precisa saber sobre a criação de ASP.NET Core 3.1 aplicativos, desde a compreensão da estrutura e arquivos à construção de uma aplicação completo na web.

Atualização para . NET 5

. NET 5 é o mais último na tecnologia SDK da Microsoft e enquanto desenvolvamos essa solução usando de uso . NET Core 3.1, fazemos um atualização para . NET 5 com um esforço mínimo. TUDO ainda funciona!

Por que aprender ASP.NET Core 3.1

Microsoft . NET é a plataforma que leva a tecnologia de negócios de muitas das principais corporações nos Estados Unidos nos Estados Unidos e muitos países. É a tecnologia predominante usada para conduzir a tecnologia de negócios de escala empresa de empreendedora. Empresas have . NETS devido pela sua escalabilidade, confiabilidade e suporte.

O . A língua de escolha para aprender em C#, como ele é entre os idiomas mais utilizados. É uma linguagem de programação de propósito geral que pode lidar com quase qualquer problema, de desktop à aplicativos web dinâmico. Como tal, há alta demanda pelo mundo para . Desenvolvedores de NET em uma variedade de indústria, para que ele esteja disponível para os candidatos com uma fundação construída sobre fundação construída sobre alicate base. Tecnologias NET.

Crie uma base forte em . Programação NET Core

  • Crie uma aplicação web totalmente sem dados usando a tecnologia de cutting de cutting

  • Conecte a um banco de banco usando Entity Framework Core

  • Padrão de realidade e injeção de dependência

  • Entender como o padrão funciona o MVC (Models, Visualizações e Controladores) padrão funciona em

  • Entender C# e . Sintaxe web core core web

  • Entender a autenticação usando a ASP.NET Core Identity

  • Entender como usar modelos, ViewModels e AutoMapper

  • Use o Bootstrap para Bootstrap para estilizar e manipular o layout geral

  • Gerencie pacotes com o NuGet Manager

  • Implemente o layout de sites usando o tema AdminlTE

  • Configurar GitHub para controle de fonte

  • Configurar o IIS na máquina de local (ou Windows Server)

  • Configurar a conta Microsoft Azure

  • Publicação . Aplicativo de NET Core no IIS

  • Publicação . Aplicativo web core no Microsoft Azure App Services

Conteúdo e visão

Para fazer este curso, você vai precisar ter um conhecimento sobre programação de objeto orientado, se não C#. Mesmo que você não tenha muito exposição à pessoa à . pilha de desenvolvimento NET, este curso é muito amigável e beginner com dicas de desenvolvimento.

Este é um curso enorme . Mais de 15 horas de conteúdo premium, mas inteligente quebrado para destacar um conjunto de atividades relacionado com com este módulo na aplicação que está sendo construído. Também vamos analisar de problemas e deputa enquanto vamos corremos à medida que andamos ao longo de começar, implementando as melhores práticas, escrevendo uma lógica eficiente e compreensão por que os desenvolvedores fazem as coisas do modo que eles. Seu conhecimento vai crescer, passo a passo durante o curso e você vai ser a dificuldade em ser o melhor que você pode ser.

Quando você tiver terminado o curso, você vai ter movido no Visual Studio e examinado no mesmo ano de ano passado, de forma alguma coisa, que será sua segunda natureza ao trabalhar no ano you . environment. Isso vai colocar suas novas novas novas habilidades aprendido em uso de de a prática e impressionar seu chefe e colegas de trabalho.

O curso é completo com arquivos de trabalho no GitHub, com a inclusão de alguns arquivos para tornar mais fácil para que você replicar o código demonstrado. Você vai poder trabalhar com o autor enquanto trabalha em cada aula e vai receber um certificado de conclusão ao concluir ao concluir o curso.

Conheça seu professor

Teacher Profile Image

Trevoir Williams

Jamaican Software Engineer

Professor

Habilidades relacionadas

Desenvolvimento Desenvolvimento web
Level: All Levels

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

Transcrições

1. Introdução: Ei pessoal, bem-vindos a este curso intitulado completo dotnet Core 3.1 e Entity Framework Development. Sou seu instrutor, alçapão Williams. Este é um curso muito detalhado para colocar você em funcionamento e programar no ambiente dotnet Core em nenhum momento. E alguns dos objetivos que esperamos alcançar para este curso são criar uma aplicação web totalmente orientada por dados. Entenda como os aplicativos dotnet Core fluem. Construir programa totalmente funcional usando o padrão de repositório e injeção de dependência. E algumas dessas expressões podem parecer mais assustadoras, mas ao longo deste curso, vou simplificar. Tudo é muito amigável para iniciantes, é muito detalhado. E no final, você deve ser um desenvolvedor completo de dotnet. Nós também veremos primeiro em espera, o padrão MVC funciona. Vamos chegar a uma melhor compreensão de C Sharp e certamente dicas e truques. E teremos um gostinho do uso de frameworks front-end para estilizar o layout geral e a aparência do nosso aplicativo web. Agora, fazer este curso é muito, muito benéfico para você. Dotnet é um dos mais populares. O conhecimento é usado para criar a empresa dos aplicativos. Desenvolvedores estão em demanda muito alta. É uma tecnologia muito predominante e é um conjunto de habilidades extremamente importante para ter nos dias de hoje. Durante a duração deste curso, usaremos o Visual Studio 2019 Community Edition, que é um ambiente de desenvolvimento muito poderoso na ferramenta escolhida quando você estiver fazendo o desenvolvimento dotnet. E isso nos permite integrar rapidamente com outros frameworks front-end como bootstrap, jQuery, Font Awesome e muitos outros. Ele também vem com a integração do Git, o que facilita a integração com o GitHub para fins de controle de fonte. E ele vem com muitos Management Studio para nossas atividades de gerenciamento de banco de dados. Em última análise, eu quero que ele esteja preparado para se abrir para o mundo da programação dotnet, você não precisaria de algum conhecimento de HTML, CSS e programação orientada a objetos se você tiver algum conhecimento de bancos de dados filamento, isso também é bom. Mas, em última análise, mais uma vez, isso é muito detalhado. Então, mesmo que você não se adapte a essas tecnologias, eu facilito muito para você se atualizar e se sentir proficiente em pouco tempo. Esta é apenas uma prévia do aplicativo que construiremos juntos, onde permitiremos os funcionários possam se candidatar a uma licença e configurar alguns recursos administrativos para que os usuários administradores possam gerenciar esses pedidos de licença. Então, se eles estão aprovando-os ou rejeitando-os e mostraram a história. Então tudo isso, mais uma vez, será dinâmico. Vamos estilizá-lo usando Bootstrap e admin LTE. E nós vamos nos divertir. Então, prepare-se para rolar. 2. Crie uma conta do GitHub: Ei, caras neste vídeo vão criar ou criar contas. Este é um passo muito simples. Levante-se. Torna-nos muito fácil para nós inscrevermo-nos. Você só precisa ir para ficar pulado na palma da mão. Isso é G I T H u b ponto c o m. Obter hub ponto com. Você vai pousar neste campo. Não, a partir daqui, se você já tem uma conta e você pode entrar e você pode praticamente parar de assistir o vídeo aqui se você não tem, no entanto, então o formulário do Senado está bem aqui. Você pode ler um pouco. Basta obter uma apreciação do que o gueto B serve. E é tudo um barco. Eles têm preços, então eles oferecem planos empresariais e planos de educação e planos diferentes para diferentes situações. Mas para o desenvolvedor solar para muito pequeno, você sabe, equipes que podem não ser empreendimento nunca do que eles te dão ah muito de graça. Então, para se inscrever, você só precisa colocar em um nome de usuário em um endereço de e-mail e uma senha em Depois de ter fornecido todas essas coisas e desde que o seu nome de usuário é único o suficiente fora do curso, então você clica. Inscreva-se para o gueto em. Você deveria estar dentro. Então eu já tenho uma conta, alguns ajustes reais Atribuindo você viu meus irmãos estão enlouquecendo tentando fornecer informações, então eu vou apenas entrar com minha conta existente. Então é isso que ele pode usar. Você está usando ele ou os militaristas para assinar. E a senha aqui estou. Este é o meu poço de pouso. Então eles realmente te dão, tipo, uma sensação fora da comunidade. É quase como um Facebook para desenvolvedores. Até certo ponto, você pode seguir as pessoas quando elas estão seguindo as pessoas, você vê suas atividades na página inicial da gripe. Você pode saltar para o seu repositório. Então, obviamente, se você é novo para se levantar, então você não teria nada listado para o lado aqui. O que? Não sou notícia. Tenho andado muito ocupado. Hum, colocando conteúdo em sair de quase qualquer pequeno projeto de estimação que eu começar. Eu tenho um get mais positivo, realmente precisa passar e limpar isso em Além disso, Eu tive alunos me adicionar ao seu repouso no passado. Eso que você conhece, poderíamos colaborar. Talvez eles estejam tendo um problema e eu poderia apenas verificar o cordão deles através das posições re. Todas essas coisas são possíveis através desta ferramenta justa e poderosa. possíveis através desta ferramenta justa e Mas uma vez que você criou seus cones e você está assinado em Ondo bem, você obviamente não veria o que eu estou vendo mais uma vez. Mas então isso completaria o sinal de ativo 3. Instale o Visual Studio 2019 Edição da comunidade: Ei, pessoal, neste vídeo estará instalando o Visual Studio 2019 Community Edition Agora para chegar ao site do Visual Studio, nós digitamos o visual studio dot Microsoft dot com Photo Não pareça estúdio bizarro, e nós quer obter a edição comunitária. Então temos profissionais e temos empreendimento. Mas na edição da comunidade é gratuito para indivíduos em usuários acadêmicos no ditz. Também aberto, senhor. Então, mais uma vez , hum, se você está em uma sessão interimprensa, você deve obter uma empresa e você tem que pagar uma licença para isso. Mas, em seguida, para o nosso projeto animal de estimação, um projeto individual ou projetos acadêmicos propósitos open source, comunidades lá é gratuito e é totalmente alimentado e esperando para ser usado. Então nós apenas colocar a comunidade em então que os gatilhos não são Senhor para um instalador. Então nós apenas clicamos naquele insultado que acabou de ser baixado Run. Ele inicializará Onda. Podemos ir em frente com nossas instalações para que possamos continuar em que apenas peixes alguns arquivos para nós. Tudo bem, então depois de terminar com as cargas de trabalho iniciais, então o que ele vai fazer é nos perguntar. Quais pacotes queremos instalar para suportar o que quer que seja que vamos desenvolver . Então, como eu disse, estamos desenvolvendo uma aplicação web, então precisávamos de SP dotnet e pacote de desenvolvimento Web ou carga de trabalho. Então pegamos essa caixa aqui e depois para a direita e dissemos, você vê que eles estão nos dando uma pequena lista do que será incluído. caixa aqui e depois para a direita e dissemos, Então, o mais recente framework dot net é quatro pontos ele. Então você sabe, é que estamos recebendo 4.4 a 4.6. Então eu entendo ir em frente na teca. Todos estes todos estes ponto net framework 4.6 ponto 1.2 ponto sete apontar em. Mas isso não é tudo . Precisamos desse núcleo Met, mas então este curso é baseado no ponto net core 3.1, que é o mais recente. Mas se você for com o Visual Studio e eles estão recebendo 0,1 completo para que possamos deixar isso em paz depois disso, então eu vou te mostrar como obter 3.1. Além disso, já que vamos fazer um pouco do seu jeito, vou levar a caixa A zero. Não temos que modificar muito mais lá. Só estou marcando essa caixa. Certifique-se de que temos quaisquer bibliotecas que exijam que você possa fazer um drill-down. Basta ver o que mais está disponível para você. Seguro. Ele desistiu do desenvolvimento de plataforma cruzada do núcleo da dot net. Se você clicar nessa carga de trabalho, então você terá mais algumas coisas do ponto net core. Mas eu acho que muitos desses já estão incluídos na carga de trabalho de desenvolvimento da Web, pois você percebe que o espaço total aumentará com cada carga de trabalho que você escolher. Então eu só vou pisar no Tick o 01 em. Eu só vou me certificar de que eu tenho a carga de trabalho de plataforma cruzada dot net no SB dot net e cargas de trabalho de desenvolvimento Web. Nós não estamos fazendo muito desenvolvimento com como seu para que você possa levá-lo se quiser. Se você sabe que tem espaço, tudo bem. E fora do curso, quanto mais você marcar é mais longo vai levar o download. Mas eu não vou levá-lo para esta partícula, É claro, claro, então mais uma vez nós apenas temos o sp dot net e desenvolvimento Web, e nós temos o darknet core cross-platform desenvolvimento nos números um para clicar, Instalar em, então que irá iniciar a instalação, que é realmente um não carregar. Então, com base na velocidade da Internet, isso vai variar em comprimento. Alguns apenas quinto currículo quando tudo estiver terminado aqui. Muito bem, então este processo está terminado. Burba levou apenas desaprender nosso em seu ver que eles exigem que eu reinicie o meu computador, a fim de completar esta configuração. Então eu vou dizer que não. Não que não precise reiniciar, mas há algo mais que quero mostrar antes de te deixar reconstruir. Então eu vou dizer, não sei o que é basicamente apenas não vai completar a instalação ainda. Mas eu só vou minimizar isso e eu vou mostrar a vocês que precisamos baixar as ferramentas dot net core 3.1 em, então eu já tenho isso aberto e você pode chegar a este site através de dot net dot Microsoft dot com on. Então eu estou na barra Don't Lord, onde ele está me mostrando que eu não posso saber o dot net core 3.1 ferramentas ou o tempo de execução para isso especificamente, bem como dot net framework quatro pontos ele. Então, na verdade, apenas instalamos o Visual Studio com o framework dot net. Quatro pontos. São ferramentas, então não precisamos prestar atenção nisso. Mas precisamos do núcleo 3.1 ligado. Eu disse anteriormente que o núcleo dot net é construído para várias plataformas. É plataforma cruzada. Então você vê que as janelas não sabem que o Lorde da Pedra Lennox, que os McCoys não sabem e eles têm um médico não, Senhor. Tudo bem, então vamos com as janelas. Estou usando um computador Windows em que estou ensinando com base no Windows. Dito isso, qualquer que seja um ano em que você não saiba o que é apropriado para você em DWI Run the up então eu sou Winton. Apenas não carregue o tempo de execução do núcleo dot net. Eu também estou indo para não saber o dot net core sdk, então eu só vou não saber o X 64 porque eu estava 64 bits em. Não podemos saber isso ao instalá-lo. Então, quando o instalador sai, é bastante simples, uma estrela brilhante em. Então ele fará o que precisa fazer. Então você verá que foi bem sucedido. Então eu realmente não levei tanto tempo para instalar em. Eu só vou voltar e também pegar o sdk. Então o que eu consegui foi um tempo de corrida. Eu fui fazer o download do SDK sem sdk curto para o kit de desenvolvimento de software. Então é aí que as verdadeiras ferramentas de desenvolvimento serão disponibilizadas para o estúdio visual interagir com aviso prévio. Eles estão dizendo que esta versão só é compatível com o Visual Studio 2019. Então, se você tiver 2017 ou uma versão anterior, então você pode querer atualizar. Então, não sei. Será que vamos apenas instalar que assim e, em seguida, começar A vem com uma vara instalar, deixá-lo fazer a sua coisa. E então ele diz que tudo foi instalado com sucesso e eles usam todos os seus próprios tempos e todos os outros apontando para nós. Os diferentes documentos que podemos usar para o seu recurso é para que possamos fechar isso. Sei que fizemos tudo isso. Então posso reiniciar os computadores. Eu não queria reiniciar e depois esquecer os passos. Então eu só me certifiquei de instalar tudo e então nós apenas fazer uma grande reinicialização Onda baixo o computador para fazer a sua coisa. Tudo bem, então saiba que Ari Start está completo. Cartas. Vá em frente e dispare o Visual Studio 2019 em. Você pode encontrá-lo indo para o menu Iniciar, e você provavelmente pode apenas digitar no Visual Studio aparecerá já fixado meu Visual Studio 2019 para o meu menu Iniciar, bem como para a minha barra de tarefas. Então, basta clicar neste ícone roxo que se parece com aquele sinal do infinito, vamos lançar o nosso estúdio visual assim que for lançado. Ele incentiva você a entrar ou criar uma conta, e você pode fazer isso mais tarde. Não, com a adição da comunidade, ele realmente vai te dar um pouco, como um teste de 30 dias se você não entrar. Então, se você escolher, não sei, talvez mais tarde e mais tarde na linha, você vê como eles estão dizendo, ou ele expirou ou algo assim. É só dizer que eles esperam que você tenha entrado quer entrar. Então não há experiência de expiração que você tem parte, então eu só vou entrar na conta do Windows, e isso é as janelas são cones. O Microsoft é um milho que eu dura muito antes? A Andi. Este é o que abusar de qualquer como suas atividades relacionadas que nossa casa entender para ir em frente e fazer login Mais uma vez, você pode criar um Microsoft cones ou, se você já tem um, basta usá-lo no login. Então, se você optou por entrar ou você disse que não sabe, talvez mais tarde você será levado para o discurso onde eles perguntam qual estilo você gosta. Tão escuro, tema escuro é toda a região. Eu não estou bem. Não, mas você pode escolher o tema que é apropriado para você nas configurações de desenvolvimento. Vou colocar esse desenvolvimento teia. Então, General, sim, tudo bem. Mas então que desenvolvimento? Esse tipo de colocar certas coisas em certos lugares para tornar mais óbvio para você ver. Tudo bem, então uma vez que você fizer tudo isso, você pode começar o estúdio de resultados Não, apenas não importa. Estou assinando porque estou em um servidor e eles são certas restrições, nossas próprias atividades. E então eu estou apenas destacando isso para mostrar que se você disse não saber, talvez mais tarde, então esta é uma tela que você vai ter. Assim que o Visual Studio Florentines, você será solicitado a entrar e à direita. Você vê que você tem um teste de 30 dias. Então, mais uma vez, seu período de avaliação como e que, por favor, faça login reboque um monte de produtos. Tudo que você realmente precisa fazer é entrar na mensagem de avaliação vai embora. Alguém é um sinal mais uma vez. Tudo bem, eu sei que eu estava registrado. Você vê isso? Eu tenho o cone personalizado que eles tinham no meu conteúdo. E então essa mensagem de avaliação realmente desapareceu. E assim eu posso escolher roupas. E então esta é a tela de lançamento do Visual Studio 2019. Daqui, posso verificar algo de uma fonte de controle. Posso abrir um projeto existente, abrir uma pasta local para criar novos projetos. Então vamos fazer uma pausa aqui mesmo. Se você chegou até aqui, então isso é perfeito. Você instalou os resultados do Studio 2019 Community edition em. Então você está pronto para a próxima atividade. 4. ATUALIZAÇÃO: instale Visual Studio 2022 Edição e Community Edition . NET 6: Ei pessoal. Nesta lição, instalaremos o Visual Studio 2022, que vem com dotnet six, que é o dotnet mais rápido até agora. Então, para começar, só precisamos ir até o Visual Studio dot Microsoft.com slash downloads. E então iremos em frente e vamos o download gratuito na edição da comunidade, que nos dará um instalador. Assim que executarmos esse instalador, poderemos selecionar as cargas de trabalho que queremos. As cargas de trabalho realmente se referem às bibliotecas ou às bibliotecas de suporte para o tipo de up que você está interessado em criar. Então, neste caso, definitivamente queremos obter esse ASP.net de desenvolvimento web na carga de trabalho de desenvolvimento web. Mas se você estiver interessado em outras tecnologias, você pode ir em frente e selecioná-las. Assim, você pode ver que tenho várias cargas de trabalho selecionadas com desenvolvimento do Azure, NodeJS e desenvolvimento de desktop. Então você pode ir em frente e dividi-los também. Eu acho que eles serão úteis com outros projetos que você pode acabar construindo tudo, uma vez que você tenha feito isso, você pode ir em uma vez que você tenha feito isso, frente e clicar em Instalar, o que seria feito no canto inferior direito. Obviamente, quanto mais cargas de trabalho você selecionar, maior o tamanho do download. Então, depois de concluir isso, você poderá continuar. Agora, quando esse download estiver concluído, você pode obter certas opções que eu não vou obter porque já o tenho instalado. Então isso vai orientá-lo sobre o que eu espero? Você pode ter uma opção na qual você escolhe seu tema. Como você pode ver, estou usando o tema escuro, mas então você tem a opção de um tema claro, um tema azul. E o problema é que o Visual Studio 22 tem muito mais temas do que seus antecessores. Então, mesmo que você não queira iluminar os temas iniciais, você pode obter todos os temas se precisar deles. Além disso, você pode ser solicitado a entrar. Portanto, se você já tiver o 2019 instalado em sua máquina e acabou de instalar em 2022, você já entrou em 2019, provavelmente não solicitará que você faça login novamente. No entanto, se esta for a sua primeira instalação do Visual Studio, você pode ser solicitado a entrar ou criar uma conta ativa, ponto em que você gostaria de usar apenas sua Microsoft emitido ao vivo em todos os loci que me ensinam um muitos cones com, ou você pode simplesmente ir em frente e criar um. E se eu, se minha memória me servir corretamente, você pode usar outro endereço de e-mail que não seja da Microsoft, secreta saliva, frio. 5. Crie . Projeto de web Net Core: vocês neste vídeo, vamos começar a criar nossa aplicação web core dot net. Você pode começar isso disparando um estúdio visual. Se você ainda não tem ele aberto, então quando você chegar a este ponto aqui provavelmente estava em branco para você porque você fez uma nova instalação. Fiz uma nova instalação. Apenas demonstre. Mas eu tenho outros projetos em que tenho trabalhado, então eu vou tê-los para o lado aqui onde ele meio que mostra seus projetos recentes. Mas para este exercício, vamos estar criando e você quer clicar, criar um novo projeto e, em seguida, usando a barra de pesquisa na parte superior, vamos apenas digitar o núcleo da palavra. Então, quando digitamos no tribunal, ele vai tipo de filtrar todos os modelos de projeto relacionados núcleo dominante em porque estamos especificamente fazendo uma aplicação Web, eu posso ser mais específico e CSB ponto net core on. Em seguida, ele irá mais uma vez filtrar e, em seguida, dar-nos o modelo de aplicativo web núcleo sp dot net para que possamos ir em frente e clicar neste, e queremos ter certeza de que é aquele com C sharp. Você pode ver outros com F Sharp e talvez vb dot net. Mas queremos aquele com C afiado e depois clicamos em seguida e damos um nome a ele. Alguém devia ligar para este. Deixar. Oi, amigo Management já que estamos criando um sistema de gerenciamento de licenças, então é deixar o gerenciamento de hífen ligado. Não precisamos modificar mais nada, a menos que você tenha um local específico no qual deseja colocar seu projeto. Então tudo o resto pode ficar como está, e eles vão apenas ir em frente e clicar em criar depois de clicar cria lá. Não nos pergunte que tipo de andaimes ou preset. Hum, você sabe o que? Com o que queremos criar um projeto para que possamos criar um projeto completamente vazio. Podemos criar um com um e p I, você sabe, modelo. Podemos fazer com uma aplicação Web modelos que podemos fazer com um modelo NBC ato angular GS, etcetera. Então, para este exercício foram selecionando o modelo de aplicação Web M. V c. Quer ter certeza de que este é o núcleo luva e não o framework dotnet. Certo? Então eu expliquei que a estrutura dotnet e não Niko são meio diferentes. Então queremos ter certeza de que estamos no núcleo darknet. E nós também queremos ter certeza de que a versão off dot net core é 3.1. Então eu tenho alguns listados aqui. Você pode não ter tantos, mas você deve ter o core 3.1 se você não tiver o core 3.1, então volte para o vídeo de instalação em Tentar e configure-o mais uma vez. Então eu estou selecionando o núcleo 3.1 à direita e disse que eles estão perguntando, Nós queremos configurar para https? Eles querem permitir o apoio médico. Quero deixá-los como não. Então, eu estou selecionando aplicativo Web com NBC dot net core 3.1 em, em seguida, para a autenticação. Vou mudar isso de nenhuma autenticação para contas de usuário individuais. Então o que isso vai fazer é realmente nos dar a estrutura para autenticação em nosso aplicativo onde podemos criar e Andi usar o usuário A cones nativamente estão fora da caixa. Tudo bem, então eu vou apenas selecionar cones de usuário individuais. Clique em OK em, então podemos ir em frente e clique em criar mais uma vez em Então ele vai iniciar o processo fora da criação do projeto. Uma vez que esse projeto é criado com sucesso do que você vê, uma interface que se parece com isso, eu posso ter personalizar minhas interferes porque você pode realmente mover em torno dos compradores de encaixe . Ele pode apresentar outros que você pode não ver. Então, por exemplo, eu acho que por padrão, a solução Explorer geralmente está no lado direito. Então é provavelmente o que você está vendo. , Na verdade, eu tenho uma preferência por isso no meu lado esquerdo, principalmente porque, você sabe, você sabe, como leitores ocidentais ou ler da esquerda para a direita. Começando pela esquerda, indo para a direita, é mais fácil para mim. Mas quero dizer, no final do dia, você pode atracar em desacoplar essas duas barras. Como quiser. Se eu tiver uma barra de ferramentas aqui que você não está vendo na sua e você pode simplesmente ir para a visualização, então você poderá clicar e você verá a experiência de pesquisa do Team Explorer. E todos esses. Todas estas ou a maioria destas são barras de ferramentas que aparecerão em nosso doutorado Se você não quiser que uma barra de ferramentas seja, você sabe, sempre exibida como, por exemplo, por exemplo, o explorador de soluções, Talvez queira mais imóveis para o seu tribunal do que pode usar este pequeno alfinete aqui. Esse é o seu auto ocultar, e você pode clicar nele e ele se esconde automaticamente. A Andi. Ele só aparece quando você passa por cima e clica nele. Quando você perde em enquanto há foco, você pode fazer o que você precisa fazer. E quando você terminar, você pode apenas clicar nele e ele vai, você sabe, apenas se esconder novamente. Então é um silencioso, versátil interfere. Você pode personalizá-lo, mover as coisas de acordo com sua preferência. Então, mais uma vez, tenho um especialista social à minha esquerda. Andi, eu gosto quando ele está lá para fácil acesso, tem um grande você sabe, telas tem imóveis suficientes. Esta página de destino que eles lhe dão algum recurso é que eles podem, você sabe, começar rapidamente com o código de construção. Mas para isso, pontuações estavam construindo um aplicativo específico em fazer muito mais coisas do que qualquer desses artigos provavelmente jamais mencionaria para você para que você possa colocar o nosso próprio no próximo vídeo. Nós vamos passar pelo explorador de soluções, e nós vamos ter você sabe, nós vamos passar e entender exatamente o que estamos olhando e como todos esses componentes desempenham um papel para nos ajudar com nosso aplicativo desenvolvimento. 6. Tour de ASP.NET de aplicação: Ei, pessoal. Neste vídeo, vamos olhar para a estrutura de pastas do nosso recém-criado aplicativo SP dot net core 3.1 Web . Não, nossa ferramenta de escolha é o Visual Studio Community Edition 2019 em In the Solution Explorer que nos oferece. Podemos ver todos os arquivos que estão em nosso projeto. Assim como, bem, vamos começar com o que está no topo para que você possa ver que este tipo de vista de árvore mais alto no Ártico. Mais alto são dar todos os arquivos. Tudo é um arquivo assim ou outra coisa. Então eu estou no topo. Então este é um arquivo de solução. Então, se você não está tão familiarizado com o Visual Studio em projetos no Visual Studio, o que eles fazem é criar Nós chamamos um arquivo de solução, que é como um diretor geral para todos os projetos que podem estar dentro de uma solução. Então você pode ter uma solução e ele tem um projeto Web. Tem ah, veja biblioteca de classe afiada. Você pode ter um projeto de área de trabalho. Você pode ter vários projetos em uma solução. Nesta situação, quem tem uma solução, vai deixar a gerência e nós temos um projeto. Então a solução está no topo. A maioria do projeto seria a segunda na lista. Nisso estão os nossos projetos Web. E se você clicar, ele meio que mostra que é realmente apenas um arquivo XML que está destacando, você sabe, certas propriedades que o projeto ou solução terá que manter o controle do que está sendo feito. Então a solução está no topo e geralmente tem aquele quadrado com aquele logotipo infinito que o estúdio visual tem. E então nós temos o projeto Web depois disso, e nós somos projeto, você sabe, os ícones tipo de pista você sobre o tipo de projeto que ele é. Então este é o nosso projeto na Web, Andi. É outro diretor como para todos Off os arquivos que serão usados são criados dentro do projeto Web. Então este projeto representa todos os nossos sites que estavam prestes a se desenvolver? Não, só andando pelos serviços ligados à F. E se você destruir isso, você skins, você pode em serviços conectados. Os serviços conectados incluem, como a Microsoft, vez que seus serviços podem desenvolver serviços. Qualquer coisa que possa ser pode ser conectado ao projeto e usar como um serviço Web ou um serviço adicional. Você pode usar isso como uma esperança para este vídeo. Eu não vou entrar nisso. Eu só queria entender o que você está olhando. E então temos dependência é assim se você expandiu dependências do que você está vendo analisadores . Então Dominic Cork vem com alguns analisadores que nos ajudam com a nossa depuração e/ou análise de desempenho. À medida que avançamos, temos estrutura. Então sabemos onde usar o ponto net core a partir do trabalho na loja dot net core referencias, em seguida, pacotes onde nós realmente sabemos que tipo de pacotes estavam usando e um pacote pode ser, como 1/3 biblioteca partido que é um utilitário. Assim, por exemplo, bootstrap será lançado em versões anteriores que você poderia baixar. Bootstrap. Não que você não possa saber Desculpe, mas não é implementado dessa maneira principalmente. Mas o ponto é, se você tem 1/3 biblioteca partido que você quer incluir em seu projeto, então você não sabe o que chamamos de um pacote usando uma ferramenta chamada new get. Então, se você é realmente dependência é e você vê algo chamado gerenciado, você recebe pacotes para cima. Outra tela que mostra o que está instalado. Então temos todos esses pacotes e lembre-se que tínhamos feito cones de usuário individuais e criamos um projeto. Então, quando você olha para ele, você vê o núcleo dot net essa identidade que você eu direito. Então esse é um pacote que não carregamos em determinadas bibliotecas, as abelhas de dados do arquivo de conexão do identificador. E então, se a biblioteca quiser ainda não estiver instalada, você sempre pode ir ao Bro's. Em. Eles devem menos todas as bibliotecas disponíveis para você na nova plataforma get. Então aqui está o nerd onde você não pode saber que Jake usa referências aqui mesmo sem ir manualmente e pegar os arquivos. Você tem parte superior de outono. Você tem alguns deles que alguns podem significar algo para você Eu sei que outros eu não, e tudo bem. Apenas observa que é importante que você inclua o pré-lançamento quando estiver pesquisando porque estamos usando aquela noite 3.1, que é nova no DSO. Algumas pessoas podem não ter publicado um, muito publicamente o darknet três apontam o dark net core 3.1 versão fora de seu pacote ainda. Então, incluindo pré-lançamento do que estamos disponibilizando esse lançamento para Donald e inclusão. Em seguida, temos propriedades. E se entrarmos em propriedades, você vê lançar as configurações do gramado que Jason, que abre este arquivo, nós não temos que tocar em nada aqui. Mas esta é a Srta. Guy. Apenas um incêndio com algumas diretrizes que quando estamos lançando, isso é o que esperamos fazer. Então você pode modificá-lo se você sabe exatamente o que você está fazendo. Caso contrário, então você pode deixá-lo como está e alterá-lo caso a caso. Nossa próxima temos ou www rota No. pasta Www Root tem nossos arquivos estáticos. E quando eu digo arquivos estáticos, quero dizer no arquivo CSS, qualquer arquivo de script Java ou qualquer lib tem o bootstrap na consulta JIA. Então vem com aquelas coisas já incorporadas. Ele vem com o bootstrap, hum, referências de arquivo por padrão. Então, se você estava planejando usar bootstrap, então você não precisa ir muito longe porque já é separado fora do projeto temporário que nós teríamos criado se quiséssemos qualquer arquivo JavaScript que fosse desenvolver . Colocamos aqui o site não CSS. é basicamente apenas lá cessa arquivo que eles nos dão que podemos modificar se você quiser adicionar coisas que bootstrap me, não necessariamente dar a nós. Então, ao todo, qualquer coisa que seja um arquivo estático do lado do cliente. Eles nos dão a estrutura de onde colocá-los no mar. Assistências, e eles geralmente são CS e GS arquivos não estaria fazendo cada arquivo dima necessariamente em um projeto como este. Então, é realmente arquivos CSS e JavaScript que seriam criados e colocados nessas pastas em todos aqueles que estão na pasta www Root. Em seguida, temos áreas em Daz. Entramos nas coisas de identidade. Vamos explorar o que acontece aqui. Mas as áreas são basicamente como uma segmentação fora de seus aplicativos. Você tem, como uma área de administração versus e funcionários era versus eu uso sua era de gestão. Então, por padrão, porque incluímos a autenticação do usuário, temos identidade como uma área em seu Está vazio. Não, mas quando chegarmos a esse ponto, você vê Philip um pouco mais. Em seguida, temos controladores. Não, quero dizer não ter passado muito tempo explicando o que a MTV e o mar realmente significam na NBC, mas eles representam modelos, vistas e controladores. No DSO, temos uma pasta quatro controladores, e você percebe que temos um cheio de quatro modelos. São eram uma pasta para exibições. Não, o controlador. Uma vez que ele aparece pessoa, isto é, Eu vou explicá-lo primeiro praticamente dita o que o aplicativo Web deve fazer. Então, quando alguém clica em uma página quando clica em um link, em vez disso, está solicitando conteúdo. Eles estão solicitando um lançamento. Então, quando o clique nesse link, esse é o nosso pedido, que é enviado para o controlador. Então Controlador recebe uma solicitação em. Então, quando ele recebe o pedido, ele diz: “ Ok, essa pessoa solicitou este link ou este conteúdo com base nas informações que eu estou recebendo . Então ele retornará o conteúdo da melhor forma possível. Se ele não pode, então você começa como que quatro ou quatro erros, modo que o controlador está literalmente puxando as cordas com base no que o usuário está solicitando versus o que o aplicativo tem para oferecer, disse usuário. Então, deixe-me colocá-lo em um termo um pouco mais simples ou bem dentro do contexto do que está no arquivo real. Então, nos controladores vendidos Aranda ganhamos o controle e é chamado de controlador doméstico. Então esse é um controlador home padrão de nomeação. Então, qualquer que seja o nome fora do controlador é, nós temos esse nome e, em seguida, o controlador de palavras, e ele deve estar sempre na comunidade. É assim no nosso arquivo. Este foi gerado para nós para que possamos passar por ele e olhar para ele. Vemos que temos controlador doméstico de classe pública. Portanto, o mesmo nome do arquivo é o mesmo nome da classe que está lá. E ele está herdando de nós uma classe base chamada controlador e que um insistindo, desde Onda começar com índice. Então índices geralmente a primeira página que senhores em qualquer site. Então, quando você vai chatear amazon dot com bulled up vem youtube dot com. A primeira página que aparece geralmente é chamada de índice, independentemente da extensão deste que PHP dot html Seja lá o que for, é quase sempre chamado de índice. Então, se fôssemos a loja dos irmãos, deixar a gerência e ir para a casa. Então ele disse, deixar a gestão sob disse barra casa, em seguida, a primeira coisa que ele faria é tentar encontrar índice. Tudo bem, então o índice de barra inicial é o conteúdo que nós, os usuários, estaríamos solicitando no DSO. O controlador vai verificar se ele tem um índice de função transportado. Se isso acontecer, então ele diz, O que índice eu devo fazer? Então diz “Return View”. Então, a visão é o que o usuário vê artes remoção Ter em desgaste V nufc modelo view controller. Então o controlador está vendo que eu recebi uma solicitação de um usuário no dso Eu vou fazer o que eu sou ordenado para porta. Este é o conteúdo que o usuário deve ver, que é a exibição qualquer que o usuário apreende a exibição. Então, se eu olhar na minha pasta views, então eu vou ver pasta ah com o nome correspondente para o meu controlador. Então eu tenho controlador doméstico. Esse é o nome do meu controlador Have Abuse pasta chamada home na função DSO Forever que é definido dentro do meu controlador. Então, pelo menos índice e privacidade. Se eu olhar dentro desta pasta views para todo o controlador, então eu deveria ver algum arquivo com o mesmo nome. Então eu tenho um arquivo de índice. Desculpe. Deixe-me apenas voltar lá rapidamente ter uma função de índice direita chamada índice e retornar view. A expectativa é que quando ele diz Return View vai olhar dentro dessa pasta com o nome correspondente para algum arquivo com o mesmo nome que a função. Então, para privacidade, você vê um arquivo chamado Seta de Privacidade. Candido Algo diferente Esses retornos de você com algum conteúdo nele assim que entraram nisso? Por que é um pouco diferente, mas no final do dia foram uma visão virada sobre o trabalho para retornar vista aqui. O tribunal é idêntico, mas, em seguida, contextualmente sabe que está retornando a vista que corresponde ao nome privacidade. Então ele olha na pasta e encontra um arquivo com um nome correspondente. Então, desde que começamos com Index, vamos olhar para a exibição de índice. Então, se eu não gosto do índice, você vê isso? É realmente só carregar e está vendo Ok, hum, cada um puxão Bem-vindo. Então este é um html cinco, mas observe a extensão, digamos, C s que html em Este é um Esta é uma extensão especial porque então nos permite o tipo off injetar acorde afiado C em nossa página como eu quero. Tudo bem, então aqui você pode ver que isso não se parece com HTML. Isto não é html um alto. É na verdade um pouco fora como um tipo C afiado de híbrido C afiado tipo html de híbrido. PH Tudo bem, então se você está familiarizado com PHP, então esse tipo off de acordo é aplicável em um arquivo HTML CS. Agora a página de erro padrão está aqui e está retornando de você. Mas é uma vista em algum lugar, e ele está retornando algum modelo de visualização de erro. Então note que, independentemente do nome, não vamos olhar para o nome fora disso. Mas se você está familiarizado com C Sharp e isso é realmente uma classe, isso é tão classe declarar. Eu estava retornando uma visão com uma classe que vai ter alguns dados. Você percebe isso, vendo pedido i d. E ele está afirmando qual o conteúdo dessa variável deve ser. Essencialmente, isso é conteúdo, então quando você estiver produzindo conteúdo, isso não é estático. Então o conteúdo estático é assim. Digitei-o e deixei-o. No entanto, com base nisso, com base no que eu declaro esta classe para ser no passado na visão, então isso pode ser contexto. Então eu posso ver se é este tipo de ferro neste tipo de mensagem fora, etc, etc. Ou talvez eu queira que os dados sejam exibidos. E uma vez que os dados são dinâmicos, o conteúdo deve ser exibido do que o que estamos usando é o modelo. Então tivemos a Sede de Viena, temos os pontos de vista. Temos os controladores. Agora estamos olhando para o M, que está em modelos. Temos um modelo para então, neste modelo andorinha, temos um modelo chamado modelo de visão de erro em você. Observe que esse é o mesmo que está sendo declarado ou inicializado aqui com algum conteúdo em ser passado para algum modo de exibição que deve corresponder com a palavra erro ou chamado Eric. Se olharmos nos pontos de vista e olhando compartilhado em, em seguida, olhar no poço no compartilhamento para que eles vão ver que temos esse erro, não CSS arquivo de visualização html lá. Tudo bem, então quando isso serve fora da era, Pidge, Pidge, ele está realmente indo dedo do pé, Servir esta vista com algum erro de texto e erro ocorreu ao fazer o seu pedido em. Em seguida, ele dá-lhe o mesmo pedido idéia notar que está citando a partir do modelo médico solicitar idéias. Então, notas no controlador onde um pedido de modelo de revisão I d. Assim, uma vez que esta vista é renderizada, ele tem qualquer conteúdo que foi colocado em um modelo de revisão, ele pode acessá-lo em. Então podemos imprimir dinamicamente que é dedo dos nossos usuários usando, bem, bem, a sintaxe nítida C. Então veja, nós temos uma declaração, e isso é o que eu quis dizer com a questão CS. Malala era o tipo de injetar algum C afiado com mais html. Tudo bem, então seguir adiante espero ter uma melhor compreensão da NBC. Eu sei que eu era como um curso intensivo, mas não se preocupe, temos um curso inteiro pela frente e vamos começar a entender tudo à medida que avançamos . Então temos as configurações do aplicativo que Jason este é o lugar onde cadeia de conexão cordas grandes são configuradas no todo. Queremos que o registro seja tratado em dso esta conexão padrão praticamente. Você pode alterar o nome se quiser, mas está lá no isso vai criar um banco de dados em um servidor chamado TV local. Então eu disse que estamos usando o SQL Express. Na verdade, estamos usando uma versão menor do SQL Express. E isso é chamado de DB local, que tipo de vem embutido no Visual Studio. Concedido, podemos acessá-lo no Visual Studio ou podemos usar este estúdio de gerenciamento. Mas isso depende de nós. Então eles são certas configurações fora da isca de abelhas lá certas configurações que podemos colocar aqui no acesso e está em um arquivo de configurações. Então, se precisarmos mudar alguma coisa, só viemos aqui, mudamos, avançamos ou programamos o arquivo CS. Este é um arquivo padrão que vem com aplicativos principais, e é realmente como um Isar inicial. Então é apenas criar o ambiente para o dedo do pé de aplicação do núcleo médico. Inicie e exista em então ou ponto de inicialização CS tem mais configurações para nós, então Doctor núcleo é muito modelo na natureza. Nós podemos colocar em conectores estado o fosso, hum, você sabe, referenciar as coisas aqui porta França, eles lá. No final do dia, este arquivo... este conflito começou aquele cessar-fogo. Desculpe vem com uma inicialização de configuração ativada. Podemos imaginar que configuramos diferentes serviços que são necessários. Então, por exemplo, precisamos nos conectar ao banco de dados que é definido pela String de Conexão Padrão, que acabamos de olhar no up sitting para que possamos alterar a string de conexão aqui. Mas então temos que ter certeza de que alteramos a cadeia de conexão. Podemos alterá-lo no arquivo de conflito. Desculpe, mas temos que nos certificar se o alteramos no arquivo de conflito, que o alteramos na inicialização que referência ao arquivo CS. Além disso, podemos configurar certos padrões sobre nossa identidade. Identidade, mais uma vez, é o que estamos usando. Manípulo, autenticação e autorização. Nós configuramos serviços para controladores com visualizações e leituras. Uma página é tão mais uma vez, ponto Net Core é versátil pode ser usado para desktop web ou até mesmo aplicativos móveis de aplicativos de console . Portanto, você pode não necessariamente precisar de tudo isso dependendo do contexto. Então, quando você configurar o projeto, sua inicialização, esse cessar-fogo vai parecer muito diferente com base em que tipo de projeto é que você está criando. Então eles param a aplicação, não precisariam de controladores e não precisariam de Razor PGE. Nossa aplicação Web faz isso. Nós fazemos isso. Temos também uma função de configuração para o ambiente. Assim, é fazer certas coisas com base no tipo de ambiente, e estamos usando certas funções de rotação em que estamos sentando como o padrão padrão para você está navegando deve ser semelhante. Então há um número de coisas que podemos configurar. Nós não vamos fazer nenhuma mudança, são muito intrusivos nas mudanças neste vídeo e lançar o curso Nós fizemos as mudanças em uma base caso a caso. Então saiba que vimos como o cheio de estrutura parece e temos um melhor entendimento fora. O que você não pode e acho que pulei a pasta de dados. Então a pasta de dados que eu pulei sobre ela as mangueiras da pasta de dados, nosso contexto de banco de dados em nossa migração. Então, nosso contexto de banco de dados é um arquivo onde, quando estamos sentando o banco de dados, nós não estaremos indo para o SQL Server e criando o banco de dados o tradicional que nós estávamos indo para usar uma técnica chamada Code First, onde nós estamos realmente apenas para construir classes que irão modelar o que são tabelas serão semelhantes. Você tem que adicioná-los a este arquivo em. Então temos que executar o que chamamos de migrações, que irá realmente gerar o banco de dados para nós com base nos modelos que teríamos criado são essas classes de dados são. Então eu não vou entrar nisso nisso. Eu só quero que você entenda o que está na pasta de dados, mas direito saber o que eu quero fazer é realmente executar este aplicativo como ele é, para que possamos ver como o nosso aplicativo Web parece fora da caixa sem modificações feitas. Então clicamos no gelo, expressamos a seta verde. Em seguida, ele inicia o que você chama de um processo de depuração onde ele verifica. Se você tiver algum erro de sintaxe ou qualquer, qualquer coisa em seu tribunal vai impedir que ele seja executado, então ele faz todas essas verificações. Então, no final dessas verificações, ele iniciará um navegador com seu aplicativo. Então este é o Visual Studio no modo de depuração. Tudo bem, então eles realmente baixo você dedo do pé clique em seus arquivos Onda, mas é feito diagnósticos e mostrando qualquer atividade baseada em seu uso fora do aplicativo. Enquanto está nesta manhã aqui, vemos que nosso aplicativo está carregado para que eu possa clicar em nosso próprio. Se eu puder clicar em casa tão embaraçoso que o diretório de índice ou a exibição de índice no controlador home será sempre o padrão. Você pode alterar isso, mas sempre será o padrão no DSO. Lembre-se, vimos uma etiqueta em todos os outros P rebocadores. Tudo bem. E, em seguida, se você clicar em privacidade do que cresce, é a privacidade barra inicial. Vê isso? Se eu mudar isso no meu índice direito, então ele vai voltar para o nosso discurso de índice em seguida no Visual Studio. Enquanto queremos ver todo ou aplicação está em execução, O que podemos fazer é no que chamamos de pontos de quebra. Digamos que estou experimentando alguma forma de era e não sei exatamente o porquê. Se essa flecha é, hum, eu posso definir um ponto de ruptura. Vamos ver aqui. Então este ponto de freio, basta clicar ao longo deste painel entre a barra de encaixe nas linhas do cabo, então o mais bem, maioria vai virar invertido quando estiver nesta seção. Mas então ele voltará ao normal aqui. Quando você clica, você vê esse ponto vermelho e essa linha é destacada em vermelho, certo? Então eu estou indo para broz o índice mais uma vez em, então o que vai fazer é apertar esta função e, em seguida, proceder para fazer o que está na função . Mas, em seguida, ele vai pausar no ponto de ruptura, porque é aí que eu quero aplicativo para pausar ou melhor deixe-me fazê-lo no campo de privacidade . Então vou fazer uma pausa para devolver a vista por privacidade. Então eu vou voltar. Então eu vou ver privacidade e então não perde o foco no irmão, e então ele destaca a linha onde ele está. Então é que você está prestes a fazer esse processo. Neste ponto, eu posso optar por pular o que significa que eu posso ir linha por linha, que são baixos. Eu para ver todas as variáveis e todos os valores que estão sendo definidos, ou eu posso apenas continuar ou pressionar f cinco para continuar. Em seguida, o aplicativo prosseguirá como deveria. Tudo bem, então isso é essencialmente buraco que execução global ou aplicação. Se eu fizer login que, acho que vou receber um erro porque eles são certos passos que ou eu não recebi um erro. Há certos passos que precisamos fazer companhia antes de fazermos isso. Então registro de vazamento de fatos. Então eu acredito que eu vou ter esse erro e lá vamos nós. Então, parecia que havia uma falha na operação do banco de dados. Precisamos fazer algumas migrações antes de prosseguir. Então isso é que está em atividade para mais tarde não. Mas para não, eu só queria que você entendesse como o Visual Studio funciona e como nosso projeto está resolvido para que eu possa realmente revelar fora desta janela do navegador. Andi, uma vez que você fecha a janela do navegador, Visual Studio vai sair, desmascarar mais do que voltar para o modo onde ele permite que você escreva código livremente. Então é isso para a turnê fora do cheio de estrutural para aplicação dotnet core 3.1. No próximo vídeo, vamos começar a configurar o Leo. Então você viu o Leo apenas sabe que ele já tinha esse tipo de sensação de bootstrap para ele. Mas nós vamos apenas ir em frente e fazer algumas modificações, pelo menos para começar 7. Migre projeto para . NET 5: Ei pessoal, neste vídeo vamos discutir como atualizar 2.In às cinco ou até mesmo instalá-lo se você nunca instalou qualquer framework .net. Então dominante cinco é tudo abrangente e é realmente compatível com um monte de coisas que você teria em seu ASP.net ou seu dominar core 3.1 aplicação. No entanto, se você deseja o meu concordou com o.net cinco, então este vídeo é para você. Então nossa jornada começa com uma simples pesquisa do Google para.net cinco, podemos seguir o primeiro link e então isso nos levará a uma era em que poderíamos baixar o SDK ou o tempo de execução ou bullet. Não há nenhuma limitação em qual você deve. Então você instalaria o SDK para que o Visual Studio forneça todas as ferramentas necessárias para criar um aplicativo dominante de cinco, enquanto o tempo de execução é mais define bibliotecas para que você possa hospedar o aplicativo como no iOS. Então você pode verificar o meu outro vídeo sobre hospedagem dominar aplicativos principais. E as etapas que você precisa seguir para instalar o tempo de execução, preparar como e publicar seu aplicativo. Então, para o SDK, queremos baixar a versão apropriada em, digamos, se você estiver no Mac, Linux, Windows, eles têm um pacote de instalação para você. Então você pode ir em frente e clicar no apropriado. Eu vou com o x 64. E uma vez que este download esteja concluído, você receberá este instalador, que permite que você simplesmente vá em frente e clique em Instalar. Você passa por qualquer verificação de segurança F2. E é um processo bastante rápido e direto, então ele vai deixar você saber e foi bem sucedido. Se não foi bem sucedido, você provavelmente deseja verificar novamente se você obteve a versão correta. Eu não sou Rachel, para o suporte da Microsoft. De qualquer forma, se você tem a tela de seda, então você está um passo mais perto. Então, novamente, vá em frente e clique em Fechar. E então, se você vai criar nosso novo projeto, então você pode ir em frente e iniciar o Visual Studio. Clique em Criar modelos do Projeto 2-0. E vamos com uma aplicação web principal. Clique em Avançar e dê um nome a ele. Então esta é apenas uma amostra, então eu não vou ser muito formal com nada molhado e clique em Criar. E, em seguida, nesta tela você seria capaz de selecionar Dot NYC core 5 da lista. E então você escolhe o modelo apropriado com o qual deseja trabalhar. Altere qualquer outra coisa e, em seguida, vá em frente e clique em Criar. Então é assim que você pode criar seu primeiro.net. Então, no caso em que você já tem núcleo, talvez 3.1 aplicação, em seguida, o que nós faríamos top graded ainda é trazer para cima o projeto. Clique no seu qual é o arquivo do projeto, e então isso irá apenas mostrar o XML, configuração XML por trás dele. E então você vai fazer algumas mudanças. Então, onde você vê detonar o núcleo 3.1, você não quer mudar isso para o núcleo .net ou.net, desculpe, 5. Então, assim como que.net cinco pontos ou deixe-me apenas torná-lo feito em maior para que seja mais óbvio. Então você vai querer apenas substituir ponto. Eu continuo vendo dot.net Core para cima 3.1 com net 5. Esse é o passo número um. As próximas etapas farão com que você atualize seu pacote ou referências. Então Randall, todos os meus pacotes que viriam 3.1, eu realmente gostaria de mudá-los para talvez cinco, certo? Ou eu poderia fazer uma construção. Bem, minha construção está realmente sentindo porque, vendo que minhas dependências não estão combinando com o que elas esperavam, que é o que estamos prestes a consertar. Então deixe-me tomar essa abordagem diferente em vez de construir ou fazer qualquer outra coisa, podemos clicar com o botão direito do mouse em nosso projeto, passar por cima para gerenciar novos pacotes get e, em seguida, olhar para instalado. E então você verá todas as atualizações disponíveis de talvez 3.1 para cinco ou de qualquer versão em que estava porque eu tenho algumas outras que não são dependências da Microsoft diretamente e elas estão oferecendo as opções de atualização. Então eu vou ir em frente e ir em frente e fazer todos esses objetos. Então, vou clicar em atualizações, selecionar todos os pacotes e carregar a atualização. E depois disso é o exercício, se eu fizer outra compilação, então eu vejo que tudo foi atualizado com sucesso. Então, em poucas palavras, talvez seu projeto seja diferente do meu em termos de dependências e bibliotecas que você está usando. Mas os passos são eu e você instala o SDK, você vem e altera sua estrutura de destino, atualiza todos os seus novos pacotes get. E então você deve ser bom para ir com o.net cinco. Se você voltar para o seu arquivo de projeto, então você verá que todos eles foram alterados para 5. Tudo bem, então esses são os passos que você pode tomar para atualizar sua série de páginas. Aplicação Mvc para.net cinco. 8. UPDATE: migre ao Project para . NET 6: Ei pessoal, bem-vindos de volta. Então, nesta lição, vou orientá-lo a atualizar seu projeto a partir de dotnet 52, dotnet six. Agora, isso é completamente opcional, e só estou sugerindo que se você mergulhou e já atualizou seu projeto a partir de dotnet, três pontos um, dotnet Core 3.12 dot net cinco, como a lição anterior teria sugerido. Se você não aceitou essa promessa, você pode continuar além desta palestra e apenas continuar com o resto do curso usando dotnet Core 3 ponto 1, 0.net Core 5 é compatível com tudo de dotnet Core 3.1. Então eu sugeriria que você fez a atualização, no entanto. No entanto, para esta lição em particular, dotnet Sikhs são dotnet Core six é fornecido apenas com o Visual Studio 2022. Portanto, se você estiver usando o Visual Studio 2020 e você já criou o projeto usando dotnet Core 3.1 ou dotnet Core 5. Então esta lição é orientá-lo sobre como atualizar esse projeto para dotnet 6. Então, mais uma vez, você já tem o Visual Studio 2022 e você tem o projeto em dotnet five ou dotnet Core 3.1, então esta lição é para ajudá-lo a atualizar para dotnet six. Caso contrário, você poderá prosseguir com o resto deste curso. Tudo o que estamos fazendo neste curso é compatível com versões avançadas. No entanto, à medida que você avança, você vê que o Visual Studio 2022 fornece algumas funcionalidades que você não verá presentes em 2019. Então, em termos de experiência, você pode ter coisas diferentes aparecendo em sua tela. Então você verá na minha tela, entanto, os conceitos gerais permanecem os mesmos. Então chega do meu monólogo, vamos começar. Então, o primeiro passo é ir para o nosso arquivo CSS. Agora, estou ciente de que você provavelmente não está muito familiarizado com o dotnet core e tudo bem. Vou muito devagar. Agora, você veria que eu já estou no dotnet, na net ou até 3.1, é aí que estou começando. Então isso significa que se você ainda não está no core 3.1, o que estou prestes a fazer também funciona. Então, vamos primeiro namorar ou atualizar isso para ver a net 6. Em seguida, vamos pegar dois novos pacotes e colocá-los aqui embaixo do grupo de itens para referências de pacotes. Portanto, tenha cuidado ao digitar essas referências de pacote incluem Microsoft dot, ASP NET Core, JSON Patch e a versão é 6. A mesma coisa se aplica à de armazenamento em cache de pontos da Microsoft dots versão de abstrações de armazenamento em cache de pontos da Microsoft dots em 6. Assim, você pode clicar em pausa e digitá-los. Mais uma alteração que vamos fazer é no arquivo settings.js ON do aplicativo. Então, vamos substituir essas duas linhas, linhas 89, ou pelo menos para mim lá, 89, mas o aviso de dois pontos da Microsoft e o Microsoft dot hospedando informações de vida útil do ponto. E vamos substituir isso pelo aviso de dois pontos do Microsoft dot ASP NET Core. Certifique-se de colocar aspas corretas e os tribunais estão vendo, como você vê aqui, fazer uma pausa e replicar de acordo. Agora, depois de fazer essas alterações, você pode criar a solução para que você possa segurar o Control Shift e pressionar B. Ou você pode simplesmente ir para Construir e seguir em frente e apertar essa opção. E isso sugerirá para você é que você tenha certos ativos que estão fora de sincronia. A razão para isso não está usando dotnet six e nossas versões ainda não estão concluídas. Então, se você já estiver no dotnet cinco, verá versões com cinco. Você já os teria atualizado para cinco. Você estaria vendo o mesmo tipo de erro. Então, o que precisamos fazer é clicar com o botão direito nosso projeto e depois descer para Gerenciar pacotes NuGet. E você pode não estar familiarizado com isso, mas à medida que avançamos neste curso, você estará interagindo mais com o gerenciador de pacotes. Portanto, esta é uma ferramenta que permite que você tenha certeza de que você está usando a versão correta das bibliotecas para a versão do dotnet que você está usando atualmente. Então, se você olhar em atualizações, verá que ele veio pré-empacotado com determinadas bibliotecas, determinados pacotes. E muitas das versões estão desativadas. Suas versões podem ser diferentes das minhas, mas neste momento todas elas precisam ver seis. Então, o que você pode fazer é selecionar todos os pacotes e clicar em Atualizar. E então você pode ir em frente e concordar e clicar em Ok para qualquer aviso que você receber. E assim que a dor das atualizações for apagada, você pode pressionar a compilação novamente e depois fazer uma reconstrução desta vez. Então, isso limpará a solução, restaurará todos os pacotes e garantirá que ela veja tudo de acordo com o que espera. E uma vez que isso seja feito mal sucedido , você pode prosseguir. Então é assim que você atualiza para dotnet 6. Então você vê, mesmo se você não atualizou o dotnet cinco, ainda pode mergulhar e atualizar o dotnet 6 do dotnet Core 3.1. Então, eles gostam do curso. Como eu disse, o Visual Studio 2022 é diferente de 2019 em, em termos de alguns dos recursos. Então você estará experimentando certas coisas, como IntelliSense aprimorado, mais sugestões de IA. E talvez você não veja isso na minha tela porque estou usando 2019, que é uma versão mais antiga. No entanto, tudo o que é ensinado é praticamente o mesmo e compatível com versões anteriores. Então você não deve ter absolutamente nenhum problema. Eu reajuste de acordo. Então continue e divirta-se. 9. Configuração de sites: Ei, caras neste vídeo vão começar a modificar algumas das estéticas em torno de nossa aplicação. Então eu tenho isso em pessoas mais do que este é o nosso aplicativo em. Você pode ver que é muito claro, mas ninguém é simplesmente é mais ou menos é mais assim. Não se importe com os espaços em branco, mas algumas modificações que vamos fazer incluem alterar o nome que é exibido aqui. CC licença na gestão de pontuação. Esse é o nome real do nosso projeto. Mas esse pode não ser o nome do aplicativo em si. Então aprendemos como mudar isso. Vamos entender que podemos atender as mudanças uma vez. São certas mudanças uma vez ideal. Rep. Ricky jogar o aplicativo porque ou aplicativo núcleo líquido ponto dá ou algo como um pH baixo leigos onde mudamos as coisas uma vez e é alterado globalmente. Então você percebe que a barra de valete no rodapé são estáticos, independentemente fora da página ou sobre se eu ir para a privacidade é a mesma barra de nervos Rodada rodapé. Se eu for me registrar, é a mesma barra de nervos no rodapé. Tudo bem, então você sabe o que é isso? Há certas coisas que são consistentes. E isso porque há um arquivo base que pode ser modificado no dedo do pé. Você me conhece, essas coisas meio estáticas em global em nossa aplicação. Então, de volta ao Visual Studio, e eu vou fechar isso saindo do modo de depuração, e então voltamos para o Visual Studio ligado. Vamos entrar nas vistas. O Fuller. Vamos expandir, compartilhar. Nós estamos indo toe layout dot CSS html. Então isso abre uma grande pizza HTML. Se você fez algum trabalho com HTML e por extensão bootstrap, então você deve ser. Sabe, você deve ser capaz de navegar no seu lugar neste discurso. Há algumas coisas aqui que são um pouco diferentes da questão padrão da paz. Mas à medida que avançarmos, vou explicá-los. Sem problema. Então nós temos o padrão Isham de formatos, ou o que eu chamo de esqueleto, onde temos ou não digitar ou declarar suas declarações no topo ou cabeça puxão e ou corpo puxar tudo o que dentro de onde html banheira tirano no interior fora da cabeça. Temos certas metatags que são necessários para nós para ser ambos globalmente aceitável em nossas chances de também ter são responsivos. Site sobre estes Isso é exigido pelo Bootstrap para gastos design de site responsivo. Então temos nosso título, então a primeira coisa que quero mudar é o título. Então você vê aqui ele tem licença na gestão de pontuação, que é o OG liteks que nós dissemos que nós queremos nos livrar. Então você também vai notar que é Ele tem isso no sinal e algo que é tipo de realçado, irritado e não muito parecido com HTML ou texto estático. Então, uma vez que você vê o exterior em que grande destaque sobre o texto, isso significa que é sintaxe navalha ou C nítido em html. Praticamente assim. Ver dados é um tipo de variável que está disponível para nós dentro de nossas aplicações de núcleo de ponto net , e nós podemos tipo de sentar os dados de visualização para ser o que queríamos ser do controlador em diante. Então isso é o que vai ser impresso nesta seção fora do título em, em seguida, o hífen e deixar o gerenciamento em êxtase. Então, na verdade, vou mudar isso. Fui ligar para o núcleo do nosso aplicativo, deixar o gerenciamento para mais contexto, praticamente quando você vai no Amazon dot com e clicar no discurso de crédito. Se você olhar em seu Tubb, você percebe que você vê produtos hífen, amazon dot com. Ou talvez ver Amazon dot com hífen. Alguns indicam que pager é praticamente tudo o que fazem. Amazon dot com seria estático. Isso nunca muda. Mas, em seguida, eles lhe dizem dinamicamente em que pager baseado em quando você cresce. Então, se eu voltar para os controladores são mais se eu voltar para as exibições fora de casa em I Click Index do que você vê aqui que nós estamos realmente definindo o título de dados Ver Toby Homepage em, então no layout ele vai ser imprimir o que eu coloquei nesse título e Então hífen , seja qual for a estática que eu coloquei lá. Então, para cada peça que vamos criar, podemos se você quiser. Se quer ser tão meticuloso, não há problema. Apenas certifique-se de que você é muito especial sobre o que você colocou lá. Então homepage hífen núcleo deixar aplicativo é o que vai ser carregado quando Breaux de modo que nossa página inicial em para privacidade, será política de privacidade, hífen núcleo deixar gerenciamento tudo bem, modo que para que a seção de dados de visualização funciona em. Então você vê que estamos fazendo referência à nossa folha de estilo bootstraps bootstraps, bem como o site que CSS e vincula o site de barra CSS. Esse CSS e que está indo de nossas raízes www usa Fuller. Esse site neste está indo da pasta lib bootstrap Beast CSS em que temos os arquivos bootstraps. Tudo bem, então é assim que esses links funcionam e, por extensão, é semelhante para o arquivo de script. Então os scripts são geralmente referenciados na parte inferior da página para que o P se rende antes dos arquivos de script renderizar porque, você sabe, nós não queremos que ele mantenha nosso pessoal esperando na técnica DSO Modern nos faria colocar o na parte inferior da pizza que um conteúdo pode ordenar até que o fogo tira carregue . Então temos isso ligado. Nós também temos uma seção que eu chego à seção Basta, você sabe, vamos começar modificando sobre barra suficiente. Então são suficientes. Bar é uma barra de bootstrap suficiente em def. Você não está tão familiarizado com bootstrap Party quer mais reforço com o que você pode fazer com Bootstrap, então você pode ir para o seu site, obter bootstrap dot com, onde você terá acesso a todos fora de sua documentação, exemplos e assim por diante. Então Bush, para cima 4.4, é o mais recente. Isso é e isso é o que Bem, eu não tenho certeza se é quatro pontos para que o projeto vem com, mas é definitivamente quatro. Então o seu se você não é o mais recente e você está muito perto do mais recente sobre mais uma vez cobre edifício, então não temos que prestar atenção, muita atenção para as instruções de instalação. Mas se você quiser entender, segure o suficiente por obras e mantenha o trabalho de classes. Então podemos ir para o pé. Acredito que seja a documentação. Em seguida, podemos olhar para você para provocar se iniciar utilitários do que seus componentes. Andi, Como você pode ver, é um documento bastante grande, mas em componentes e temos nuff comprador. Então, quando clicamos barra suficiente, em seguida, ele nos leva para a seção onde podemos realmente olhar para o núcleo que é necessário para o comprador suficiente. E esse é o exemplo do que o tribunal abaixo vai dar para você, então você pode ser um cara que você pode usar este, hum, guia para entender melhor o tribunal, mas eu vou estar passando por algumas das mudanças que vamos fazer para a nossa candidatura. Então, em primeiro lugar, eu não quero barras leves o suficiente. Temos uma opção de desligar a luz. Escuro. Deixe-me voltar. Onda mostrar-lhe as diferentes opções. Você tem a Sibéria. Você tem cabelo azul escuro, Nós temos azul claro. Eu queria ser bastante escuro bar no BG Dash escuro. Então eu vou voltar para o meu tribunal e eu vejo aqui que eu não tenho luz de barra. Isso é quase o padrão. Então eu vou ver traço escuro em ir mudar isso para B G traço escuro. Mas se eu apagar que faço espaço cultural, então você vê que o tipo de tribunal do estúdio visual me dá, sabe, algo que chamamos de inteligência. Por isso, ajuda-te a ir junto com a tua corte. Mesmo com aulas de bootstrap, Eu fiz isso RBG escuro. Então eu estou selecionando BG escuro em. Essa é uma mudança que eu estou fazendo que eu vou fazer algumas alterações em minhas propriedades de navegação . Então, para cada link que aparece na barra suficiente, você precisa de um aliado com o item da classe agora ativado. Então você tem um tio Tug com Charles. Será que as aulas para o ataque ANC já querem que eles pareçam, então eu quero que seja preciso para ser traçado texto . Eu queria ser branco. Acredito que posso ver o direito de uma esposa. Então eu preciso que o texto seja branco porque o comprador de nuff vai ficar escuro. Tudo bem, então eu estou meio que invertendo isso aqui. Tudo bem, então o meu romance sobre, então o texto traço branco vai torná-lo texto branco na área spe é ser controlador, olhos iguais a casa. E a ação é índice. Então isso significa que quando eu clicar nesta casa Ling tudo bem, como fizemos quando entramos no livro. Mais decidir vir sobre onde casa e privacidade links. Então este é o link inicial ligado. Este é o link de privacidade. Quando você clica, a ligação doméstica vai procurar o controlador chamado home. Certo. E estabelecemos que temos um controlador chamado para casa. Então ele vai procurar a ação. É uma ação é praticamente essa função que eu mostrei o interior fora do controlador para que você veja que ele é chamado resultado de ação. Então a ação é que a função em fez. Ele deve ter o índice de nome. Então ele está procurando por uma ação chamada Index. Então, quando eu clico em casa, essa é a minha solicitação de usuário para ver a ação de índice ou exibição no controlador doméstico. Então, quando eu clicar em casa vai procurar em primeiro lugar que os controles desse controlador não existe e você recebe um erro. Tudo bem, então, se ele encontrar, então ele vai procurar a ação dentro dele. E se não existir, você também recebe um adiantado. Se ele existe, então ele vai fazer o que quer que esteja dentro desse espaço. A função neste caso é apenas retornar a exibição, Então, não é ninguém para olhar na pasta Views para a coleção de visualizações inicial correspondente em. Então ele vai para o dedo do pé. Renderizar nosso conteúdo de índice. Não, o conteúdo do índice é sobre cada palestra que diz Bem-vindo e nosso Peter que tem algum link e alguma narrativa sobre aquele tribunal noturno. Então o que acontece é que quando clicamos que este é o campo Leo, qualquer visão é retornada por ação acima é renderizado dentro do corpo Orender. Muito bem, então este é o nosso rebatedor. Seis com barra suficiente e depois vamos para a seção de conteúdo. Então, mais uma vez, eu estou fazendo tudo isso, assumindo que você tem alguma exposição ao HTML em. Então você sabe que Mishima PGE Depois de fazer o seu hit e banheiras de corpo que são necessários absolutamente necessários para a estrutura adequada. A nova estrutura sua página da seção hitter que geralmente tem o suficiente por em seus banners e qualquer outra coisa. E então você tem o conteúdo que está na página em tudo isso, maior parte do rodapé. Então, se você olhar para ele de perto, você vê que são macho Peach tem a seção de cabeçalho com nossa barra suficiente direita que tem todos os nossos links sobre. Ele também tem, ah o que chamamos de uma parcial para as funções de arrastar. Tudo bem, mas então nós também temos um dar que tem uma classe chamada recipiente sobre esta é as seções principais que é a seção de conteúdo fora tudo chateado em. Cada vista é renderizado dentro desta seção que é por isso ou vista pode ser tão leve porque não temos que passar e ser claro Tudo fora da sintaxe html e tudo mais. Toda vez que temos de você, só precisamos nos concentrar no HTML que é necessário para isso. conteúdo da partícula é feito com o pH. Tudo bem, vamos. Então, ele é processado como nesta seção, dentro do contêiner em Contin Aires, uma classe bootstrap que nos dá, como um bom preenchimento de 80% em qualquer tela que está sendo visualizada em. Tudo bem, então eu estou apenas andando por isso vai voltar e modificar nossa barra suficiente um pouco em um pouco porque eles são algo sonny para nossas bundas acontecendo, nós adicionamos, nós temos nosso contêiner, que renderiza o nosso conteúdo de visualização a cada vez. E depois temos o nosso rodapé. Então nossa seção de rodapé eu não vou modificar a estética fora dela, mas eu quero modificar o conteúdo. Então nós temos a cópia, hum, porcentagem de cópia, química. E isso nos dá esse sinal de direitos autorais. Então eu quero mudar isso, e eu vou te mostrar alguns pedaços fora. Sintaxe de navalha. Então lembre-se que navalha nos fechar dedo do pé colocar c afiado em vez de quatro sintaxe html. Praticamente assim. Eu vou modificar este ano, Toby mais dinâmico porque agora é 2019 e eu estou realmente gravando este vídeo na véspera de Ano Novo então literalmente amanhã vai ser 2020. Então eu estou apenas fazendo isso conhecido para que indo em frente quando você vê 2020 no meu Rodapé, mesmo que nós começamos 2019 ano quando sentar 2020 é por isso. Então ele sistema para 19 e é estático como 2019. Então eu sou o que está indo para o pé. Use um pouco de c afiado para torná-lo mais dinâmica. Eu vou dizer na hora da assinatura, tudo bem, tudo bem, e então eu posso ver “Não”. Então, se eu alguma vez quisesse saber a hora Não, enquanto eu estou falando, eu usaria o cronometrado. Não, mas então eu quero apenas o ano para que eu possa ver o ponto. Então só ganhe o ano. Então o que vai fazer é ter o login de direitos autorais, em seguida, obter o ano como atos o tempo que o aplicativo Web está carregando, ou o ano de acordo com o tempo no servidor que ele está saqueando, Então meu computador é preciso, bastante preciso. Então amanhã quaisquer alterações 2020, em seguida, o meu dia será 2020 se o tempo do servidor estiver errado. Senhor aplicador são o tempo do computador está errado, então, obviamente, este valor será errado. Mas o fato é que é dinâmico. Não será 2019 mesmo quando for 2020 e 2021. Então eu só estou fazendo isso um pouco mais do que e me tornei apenas demonstrando. Todo c afiado pode ser inserido em nosso HTML com bastante facilidade através da arte do motor de barbear em. Então vou mudar este texto no DSO. Eles também devem dizer gerenciamento de licença de núcleo. E eu vou copiar isso para que eu não tenha pisado novamente Eu deixo aquele link de privacidade e então nós temos ou script, hum, arquivos sendo carregados. Então FRG consulta script fogo sendo carregado o bootstrap JavaScript fogo sendo carregado em nosso site personalizado que arquivo Js, que também está vindo de nosso doublet de sua rota. Gs Fuller. Não, por favor, observa que com scripts e com CSS, a ordem é importante. Então isso significa que às vezes você tenta instalar alguns, você sabe, como uma pedreira J. Guitarrámos alguma coisa, e depois colocas as referências do guião acima da referência do Jake Worry. Isso é um não, porque então você só recebe um rosado não vai funcionar e então você vê Oh, meu Deus, meu Deus, o que eu estou fazendo de errado? Eu não posso fazer isso. Então a ordem importa. Então eu só recomendo que quaisquer arquivos de script adicionais que você vai adicionar que não sejam Jake ou, er, bootstrap. Você acabou de colocá-los por baixo. Eles só continuam adicionando, acrescentando, eu acho que eu nunca coloquei acima Tudo bem, essa é uma boa regra de ouro fora do curso, caso a caso. Se entende o que está fazendo , tudo bem. Mas apenas para ficar longe de problemas, se você não tem tanta certeza, basta sempre adicioná-los abaixo em. Então temos o nosso cruzamento aqui. Então lembre-se, deixe Orender corpo, que está renderizando fora de nossos pontos de vista. Nessa seção, temos renderizar seção bem, que é causado scripts, que eu perder-nos os scripts de inserção na vista em uma base caso a caso, porque podemos não precisar de cada script cinco para cada visão única. Tudo bem, então você quer reduzir nossos incêndios, o Senhor em que páginas. Então, à medida que avançarmos, veremos o propósito disto, mas estou apenas a dizer-te para que serve. você não tem que remover. Você pode, se quiser. Você não tem que fazer isso. Eu diria que não é assim, então o quê? Nós vamos fazer? Não, só faz retoques finais. Armazenar bar suficiente. Eu só quero mudar no topo aqui, onde temos a primeira seção sobre a dívida dizendo gestão de licença e quero colocar no aplicativo em que é gestão de pontuação licença. Então este é o texto que será impresso na própria barra de navegação. Nós não temos que nos preocupar muito mais, mas eu vou apenas adicionar alguns outros links aqui. Então, temos casa. Temos privacidade. Eu tenho alguns outros links. Esse é o nosso dedo chave, nossas atividades pendentes. Então eu escrevi 1/4 e eu vou apenas substituir o acorde existente pelo novo tribunal e apenas dar uma olhada rápida no que eu estou fazendo. Alguns substituindo o link de privacidade pelo meu cabo adicional no DSO. Mais uma vez, estamos construindo um sistema de gerenciamento de licenças. Então a primeira coisa que coloquei em privacidade policial é uma que é pedir licença. Só vou me certificar de que meu texto também é branco. Tudo bem, então solicite licença. Isso é o que o empregador vai fazer. E então eu tenho outro, e este aqui está na forma de um drop down. Então é assim que se deixa cair o Don. Na verdade, eu só peguei o cabo exemplo de bootstrap dot com porque eles tinham um exemplo drop-down . E em seu exemplo drop down, eles disseram que para obter um link drop-down, certo, isso é um link drop-down que precisamos ir para l Eu precisamos toe tem núcleo que se parece com isso . Então eu copiei isso e modifiquei as partes que eu queria uma chave. A entrega. Não vincule texto na ação real ou rebocadores de âncora. Em vez disso. Então eu poderia me essa modificação em. Então eu tenho os itens suspensos e eu tenho todos eles. Mas à medida que avançarmos, vamos preenchê-los como colocamos as funções. Então vamos conhecer o trabalho de links. Então, neste momento, esse não é o meu objectivo. Só quero que minha barra de nozes pareça um pouco com o que eu espero parecer. Andi, eu só estou indo dedo do pé, uh, teca este texto traço branco e certifique-se de que ele está dentro de cada item pendente para ter certeza que leva estes brancos. Mas eu sou. Então eu vou apenas ir e depurar e ver como ele se parece. Certo, então é assim que parece, certo? - Não. Em dso você vê que o número mudou muito escuro em fez tantas coisas ainda não leva traço branco. Então você vê que eles estão escondidos aqui. Mas então os outros são então essas são pequenas coisas que você sabe como você vai junto você testa e então seus aliados Oh, eu não me deixei mudar isso em outra coisa. Sabe que mudei meus prédios para texto que é branco enquanto a lista é branca, então tudo aqui é branco, então eu vou falar sobre mim. Essas modificações na coisa boa é que você pode realmente mudar o tribunal enquanto no modo de depuração. Então deixe-me começar com a parcial. Então eu vou encontrar o meu explorador de soluções, que pode ter mudado posição oposta em eu vou para o show de piras de madeira. Então este log em mangueiras parciais, os links para o registro e alguns mudando este dedo do pé branco. E eu vou mudar este para branco também em, em seguida, economizar em. Então eu posso apenas atender a mudança e ver até mesmo voltar para o meu modo de depuração Atualizar para baixo Uma vez as alterações são refletidas, então você sabe que você fez algo certo? Então eu fui em frente e fiz todas as mudanças em mim. Esses textos são escuros no DSO sabem que você está vendo tudo. Certo, então temos o nome do aplicativo. Pode ser um logótipo. Sabe, eu só estou fazendo o nome do aplicativo agora. A Andi. Então, quaisquer alterações que fizermos, elas iriam ondular todas as visões que serão renderizadas dentro desta seção, que está entre nossa barra de navegação no rodapé. Então, isso é um dedo de introdução rápida fazendo alterações estéticas em sua aplicação como você achar melhor. Se você tem que sentir que talvez você tem o administrador, tenente. Seja o que for, seja qual for o tema que você tem ou o que for olhar e sentir que você está indo para você pode apenas me as mudanças uma vez nos estoques de layout CSH em um arquivo no dia será global. Toe seu aplicativo se você quiser mais de um carregamento e você pode realmente criar outro arquivo em camadas em uma base caso a caso. Você faz referência ao arquivo Leo dentro da vista. Ainda não criamos nenhuma visualização. Então, quando chegamos a esse ponto, então você vê o que eu quero dizer com referência. Está na vista, então você pode ir em frente e eu essas mudanças e qualquer outra que você achar melhor. A Andi. No próximo vídeo, começaremos a criar nosso banco de dados. 10. Configurar Database, e as migrações: Ei, pessoal, bem-vindos de volta neste vídeo, vamos começar a modelar sobre banco de dados, e na minha tela há um modelo de dados real fora do que vamos criar usando nossa estrutura de entidade chamada First Technique. Agora, este é um diagrama de modelo de dados. Deixe-me ver se posso ficar um pouco maior para você. Tudo bem, então eu tenho que vai ser maior na tela. Andi comer retangular, ou cada caixa representa Ah, mesa. Então você vê aqui que alguns têm o nome são as palavras ISS ser net no início. Então, o usuário de amendoim alega que é usuários de amendoim etc? Estes são todos tipo fora auto gerado pela nossa identidade. Hum, construído em funcionalidade de identidade dada a nós por s p dot net Core saber que temos algumas outras tabelas que estaremos criando manualmente lá. Aqui embaixo. Deixar histórias. Deixe o tipo de alocações Steve. Podemos querer mais um. Nós me quer menos como vamos junto com refinado o design em. Isso é o que o tribunal nos impede de fazer mantendo tudo fora para design de banco de dados no tribunal. Afaste-se em um tipo de estrutura para que possamos, assim como nós avançamos, então eu estou apenas dando a vocês uma visão geral do que estamos prestes a criar e perceber que as relações serão criadas estarão caminhando através de como cada uma dessas coisas será facilitado em nosso real os adultos. Agora vamos para o estúdio visual e começar a projetar ou aulas. Então, em primeiro lugar, temos uma pasta aqui chamada Data on. O que quer que vá nos dados é, você sabe, é recomendado que tenha a ver com o banco de dados. Então, usando o tribunal primeiro, o que vamos fazer é criar algumas aulas de tribunal que serão convertidas na batida dos estábulos que acabamos de ver. Mas para começar, queremos gerar nosso banco de dados são configurados por batida obesos em, para que possamos continuar trabalhando com essa base de dados. Então, a primeira coisa que queremos fazer é ir para as nossas configurações que Jason em nós temos a conexão padrão com a conexão String toe. Nosso banco de dados de toda essa string representa uma conexão. String os diferentes mecanismos de banco de dados. A string pode parecer diferente. um Estamos usandoummecanismo de banco de dados chamado BB local. É versão Zaveri Avery Light off SQL. E é meio nativo. Bem , vem com estúdio visual. Então, instalando resultados para você, você teria obtido esse mecanismo de banco de dados no DSO. Esse é o que estamos usando. Então, para se conectar a esse mecanismo, precisamos dizer que servidor é igual a ligado. Então já deve estar lá. Barra de banco de dados local m. S s que um banco de dados local para que não tenhamos que alterar essa parte. Mas, em seguida, para o banco de dados bem-vindos nesta seção deve ser o nome fora do banco de dados que queríamos criar. Então ele nos deu Ah, bem em nosso nome degenerado com um bom, mas não é necessariamente o que eu quero. Isso é um bocado cheio de boca. Então eu só vou simplificar um pouco isso. Vou chamar isso de gerenciamento de licença. Então eu vou tirar tudo isso em bancos de dados iguais a deixar o gerenciamento. Então, quando executamos bem, precisamos executar para gerar o banco de dados em nosso banco de dados deve ser deixar no gerenciamento de pontuação . É isso que estamos procurando. Então podemos deixar tudo o resto sob os padrões para não. Pelo menos você não tem que incomodar aqueles em então, se você se lembra de quando tentamos registrar o dedo do pé . Ele nos disse que precisávamos configurar o banco de dados e que precisávamos fazer uma migração e todo tipo de palavras extravagantes. Então é só isso que vamos fazer? Não. Então, fora das costas, o que vai acontecer é que tem migrações. Então, se estamos indo para a pasta de dados e as migrações para a sua e vemos que temos aqui um arquivo com um monte de zeros e é criar esquema de identidade Então, se dermos uma olhada rápida neste arquivo de migração verá que temos um aberto meu terceiro em. Se eu entrar em colapso que vemos que nós também temos ah método maçante. Então, o método não baseado calos. Ok, deixe-me remover isso então. Os métodos acima é deixe-me criar estes e estes são os constrangimentos para as criações. Então ele vai criar um SP net Rolls s s usuários de amendoim. Todas essas coisas são padrão. E se você olhar em usuários de SP, você vê todas as colunas e as restrições que eles terão todas essas coisas maravilhosas . Eu não estou lhe dizendo para estudar este arquivo e se tornar um especialista neste incêndio necessariamente isso foi mais uma vez também gerado porque nós selecionamos usuário consular individual criando nosso projeto em À medida que avançamos, vamos ver que este tipo de arquivo será gerado com as diferentes alterações que fazemos direito, Então toe efeito uma migração. O que queremos fazer é procurar o console do gerenciador de pacotes, então ele deve estar na parte inferior da janela do Visual Studio. Se não estiver lá, então você pode discoteca para ver Onda. Eu sinto muito. Não ver, mas tolos realmente ferramentas. Em seguida, você obtém o gerenciador de pacotes nos consoles do gerenciador de pacotes. Quando você clicar nisso, então esta janela que eu realcei aqui deve ser disponibilizada para você em. Então o que veremos é atualizar os bancos de dados de dinheiro. Portanto, há realmente dois passos para isso. Mas então o primeiro passo já é meio que cuidar de porque já temos o arquivo de migração . Não vou me meter muito nisso quando começarmos a construir nosso banco de dados, você vê a relevância disso. Mas temos a migração primeiro. O que precisamos fazer é atualizar o banco de dados, então jogar banco de dados basicamente diz se há um banco de dados que eu vou atender as mudanças como eu gosto para mim. Com base no arquivo de migração que é mais recente no diff, não há banco de dados do que este. Command está realmente indo para ir em frente e criar o banco de dados com base nos arquivos de migração que estão disponíveis. Então, quando eu digo até o banco de dados e pressione enter vai entrar em nosso próprio processamento off, ele vai construir um projeto sobre. Então, uma vez que esse sucesso, em seguida, vamos receber uma mensagem vendo feito. Então, se você não recebeu nenhuma mensagem de erro, você não recebeu nenhuma escrita vermelha ou cada escrita amarela, e é algo que olha para isso que significa que algo deu muito certo. Então, uma vez que você tenha feito isso, então podemos verificar se um banco de dados foi criado com base no nome que você colocou seu. Então eu coloquei licença na gestão de placar. Então eu estou esperando para ver um banco de dados chamado Leave on the Score Management. Então, para chegar aos bancos de dados, o que vamos fazer é ir para ver. Em seguida, vamos procurar o objeto SQL server explorar. Então, isso é como um gerenciamento de servidor SQL integrado um, painel, que visa estudante disponibiliza para nós por padrão é olhar para a instância de banco de dados local que está incorporada ao Visual Studio. Então eu já o tenho aqui. Eu posso expandir este servidor SQL expandir em, em seguida, dentro do SQL Server, você veria para incensos banco de dados locais. Então nós estamos indo com o m s que um banco de dados local como descrito em nossa string de clínico e eu vou expandir isso em, em seguida, na lista fora de bancos de dados que eu vejo gerenciamento de licenças. Então, se eu expandir, deixar punição e expandir as tabelas, então veremos que algumas tabelas foram criadas com base na última migração em nós temos como um histórico de migração que é apenas uma mesa de caminhões em todos aqueles está sendo tabelas líquidas que vimos em nosso diagrama Montel anterior. Então é assim que foi fácil implantar todas essas tabelas necessárias para a nossa autenticação são usuários no gerenciamento de regras, fica se eu tentar registrar novamente, eu não deveria obter um erro sobre, você sabe, faltando banco de dados Operação bloco direito. Deve funcionar. Não. No entanto, nosso trabalho não é feito porque ainda temos algumas outras tabelas que são necessárias que não são necessariamente apenas sobre os usuários e assim para criar nossas tabelas a primeira coisa que eu vou fazer e entender para colapsar o que não é absolutamente necessário para a tarefa em mãos. Alguém para fechar a migração, encontrar roupas ou arquivo G filho. A primeira coisa que queremos fazer é criar em como uma tabela de perfil de funcionário. Então eu vou escrever Clickbait er ir para a aula de anúncios. Então eu vou criar um novo arquivo sobre Ball uma nova classe e eu vou chamá-lo de funcionários. É uma aula sobre o nome fora. O elenco é empregado. Alguém para clicar, adicionar e, em seguida, isso me dá na classe de funcionários Não em funcionários geralmente tem primeiro nome, imposto de sobrenome I D. Data off joint aniversário. Você pode adicionar outras coisas. Você sabe, o que compõe o empregado na organização que você trabalha com o que estas são as propriedades com que eu estou trabalhando em Soto em nossa propriedade você pode enquanto você pode percorrer o caminho longo e direita cadeia pública o nome fora do propriedade que neste caso será o primeiro nome em. Então podemos ter imaginário no set. Ah, mais curto. Estamos maneira mais rápida de fazer isso é escrever a palavra prop Isso é P R O P. Pressionado duas vezes. Então. Visual studio tipo de gera essa linha para você, modo que o tipo de dados seria string novamente. Ele pressionou para cima para mover do tipo de dados toe nome da propriedade eo nome é sobrenome em. Em seguida, você dispersa, entra e, em seguida, move-se para a próxima linha. Então, seja qual for a maneira que achar mais fácil de fazer isso, você pode fazê-lo dessa maneira. Mas mais uma vez, estamos fazendo o primeiro nome, sobrenome Imposto I D. na data de nascimento. E é assim que se espera que a nossa turma se pareça. Primeiro nome, sobrenome Imposto I D data de nascimento. O curso comum fora dois dias são fora do tipo tempo de batida estão em. Então podemos ter mais um para que eu possa apenas duplicar esta terra segurando o controle e pressionando b aviso. Não precisei destacar os leões fora do curso. Você pode copiar e colar, mas apenas clicando na linha em segurar no controle e Presidente de ele irá duplicar tantas vezes como você faz Essa combinação de teclas em Eu vou colocar isso como fez criado bit significado. O registro de funcionário foi adicionado ao nosso banco de dados para que você possa adicionar quantos quiser. Então isso foi apenas um exemplo. Eu não vou continuar com o que ele criou. Então é assim que meu perfil de funcionário será. Você sabe? Outra coisa a notar é que o funcionário praticamente é o usuário, então eu não quero ter uma tabela de usuário e uma tabela de funcionários separada. Gostaria que a tabela de usuário, que tem usando na senha em Você sabe outros pequenos detalhes sobre o usuário que ajuda com autenticação também pode ter os detalhes sobre o que um funcionário deve ter para estender essa tabela. Então lembre-se que a tabela de usuário é realmente gerado para nós, e eu posso apenas voltar para escalar objeto Explorer em expandir esse usuário estável em Olhe para as colunas em Então as colunas teriam, você sabe, um I D, que é uma chave primária. O nome de usuário um normalizado usando-o o endereço de e-mail. Então, todas essas coisas já estão incluídas no SB net User stable, mas então eu quero essas propriedades primeiro Nome, imposto de sobrenome I D data de nascimento data de nascimento dedo também ser ah parte fora dessa tabela de usuário. Então o que eu vou fazer é estender este dedo da mesa também tem essas propriedades em para fazer isso. O que vou fazer é usar herança. Então use nosso cólon nisso. Eu vou especificar um nome de classe, que, neste caso, é identidade usuário. Então usuário identidade é, ah, classe que representa o estábulo. Este é girá-lo usuário estável é representado pelo usuário identidade tabela. Você notou aquela linha vermelha. Podemos apenas clicar lá em, em seguida, se nós mais, temos que pequena bola branca que está sugerindo como podemos corrigi-lo na correção para ele é incluir alguma biblioteca faltando, que é SB identidade núcleo net. Então, apenas ao incluir essa biblioteca em nossa listagem de biblioteca no topo, vimos o problema. E então não temos mais erros para nossos funcionários, Gus. Agora podemos rolar essas alterações diretamente para o banco de dados, parecem ao mesmo tempo por um criando uma migração e, em seguida, atualizar no banco de dados. Então eu vou primeiro voltar para o nosso console do gerenciador de pacotes. Então esta é a primeira aula que eu adicionei em Bem, antes de eu chegar lá, há realmente mais um passo que eu preciso completar, que é o anúncio que ele. Então, nossos arquivos de Contexto DB. Então eu preciso clicar no banco de dados do aplicativo. Contexto são assim que vemos aqui que é a classe e é chamado de contexto Application Devi. Mas seu verdadeiro poder vem de sua herança fora do outro contexto de identidade de classe banco logo em seguida, temos ah construtor aqui. Então, abaixo do construtor, eu preciso dizer a ele que na construção do banco de dados em fazer o que quer que seja que você faz por padrão, você também precisa disso são esses estábulos de modo que mais recentemente criado Tabela é funcionários, que está herdando do usuário de identidade. Então eu preciso ver público em, em seguida, dizer db definir aberto sob parêntesis. Notei que a inteligência está me guiando, então preciso de funcionários. Então esta é uma classe que eu espero ser uma mesa, mas que eu preciso dar um nome real. Vou chamá-lo de empregados, então eu tenho o meu genérico obter Andi sentar. Então, não, eu apenas criei propriedade dentro do contexto de banco de dados do aplicativo e disse que ele deve ser uma parte fora do conjunto de banco de dados. Então, sempre que ele está gerando o banco de dados de dados em banco de dados, o que quer que ele precisa fazer, ele precisa ter certeza de que a classe de funcionário é contabilizado. Nele é implantado em uma tabela ou pela maneira que definimos. Ele estende a classe de usuário identidade, são usuário SP. É ser que o usuário também inclui o que os funcionários têm para oferecer. Então, quando fizermos isso, podemos executar uma migração. Então, voltamos para o console do gerenciador de pacotes e dizemos, adicione a migração de hífen e, em seguida, damos um nome a ele. Então, é claro que você quer manter os indianos escaneados fora único para que possamos rastrear mudanças no banco de dados. É fácil dizer, Oh, o que eu fiz naquele momento. Então, vou ver os funcionários adicionais comerem pontos porque foi isso que fizemos. Adicionamos pontos de dados de funcionários que identificam a classe de usuário. Então, uma vez que adicionamos a migração e pressionamos enter está indo para construir, em seguida, gerar esse arquivo de migração nesta migração gerada. Gordura está realmente indo dedo do pé tem o mesmo up e não funciona que acabamos de ver no outro. Então, na função acima que você vê aqui, ele está realmente fazendo alguns em colunas, e ele está vendo ad ah coluna off tipos, string TSP usuários. Aqui está um fora do tempo ser juntado. É adicioná-lo à data de nascimento dos usuários da SP Net, todos os pontos de dados que eu disse que queria fazer parte dos usuários do S amendoim. Vai adicioná-los ao seu coração. Então é isso que esta migração cinco sabe. Depois de fazer tudo isso. A próxima coisa que eu quero fazer é até o que o banco de dados pressione enter, e então nós começamos a notar que isso foi feito. Então, se voltarmos ao nosso explorador de objetos em enquanto, eu já tenho a tabela aberta, então se eu clicar nela e clicar em Atualizar, que eu acho que vai apenas atualizar a exibição inteira de qualquer maneira, tudo bem, e depois perfuramos de volta, não entramos na nossa mesa. Então você vê que o novo ar colunas lá nós temos juntado com um pouco de nascimento foram primeiro nome, imposto de sobrenome I D. Então, isso é realmente o quão fácil de ainda ser ele. Este banco de dados e se não quisermos uma coluna. Podemos voltar, remover a coluna dela. Mas então, fora do curso, temos que fazer uma migração e, em seguida, atualizar o banco de dados mais uma vez. Então, essencialmente, se você fosse compartilhar esse resfriado com alguém, ou eu sei que esse projeto em você disse a eles, certo, aqui está um projeto. Você precisa de um banco de dados. Podemos apenas executar o banco de dados de atualização. E o que o mecanismo está realmente indo para fazer é ir do primeiro arquivo para o arquivo mais recente , e ele está realmente indo para fora todas essas alterações usando o método aberto em para saber exatamente quais mudanças ele precisa fazer para criar a versão mais recente fora do banco de dados com base em onde o projeto estava, como naquela época. Tudo bem. Então é por isso que a primeira técnica do tribunal é meio fácil de rastrear. Quais alterações estão sendo feitas em seu banco de dados. Horas extras Onda ajudam as pessoas a saber exatamente o que está acontecendo quando tudo bem, então nós adicionamos uma mesa ou nós estendemos uma mesa. Mas temos três mesas que precisamos agir. Então eu vou apenas ir em frente e criar outra classe. Estou clicando com o botão direito, dados clicando, adicionar classe escolhendo. Em seguida, a próxima tabela que vamos adicionar é deixar histórico. Então adicionamos Deixar o histórico ligado. Eu só vou em frente e em todas as aulas antes de começar a colocar quaisquer propriedades nelas . Então, temos a história da licença. Temos licença porque, bem, bem, ela vai embora. A história vai acreditar num recorde. O tipo de folha é um tipo fora de licença que a pessoa tirou com seu pai materno ou, você sabe, férias. Então vamos ter a tabela de alocação de licença, que também está armazenando o quê? Quantos dias cada funcionário tem para cada tipo fora licença direita para que você possa ter 10 férias estes, mas cinco anos sessenta etcetera, etcetera. Então essas são as três tabelas que estavam configurando para começar com Onda como vamos ao longo do primeiro Andi mais fácil realmente de fazer vai acreditar tipos porque as outras tabelas têm dependência é do tipo licença, então eu vou criar ou ir volta para a nossa classe tipo licença em. Então o que eu vou fazer é colocar em três propriedades. Então lembre-se que posso dizer adereços da nossa parte. Então isso é público. Eu não me desculpo. Então a ideia seria a chave primária fora da mesa. Então é sempre bom. descida do banco de dados sempre tem uma chave primária. Outra propriedade seria o nome do nome sendo o tipo off. Deixe seu nome fora do tipo fora de licença. Então o nome da string para baixo. Mais um, que seria feito tempo sobre isso seria feito criado. Tudo bem, eu estou meio que misturando minhas linhas aqui. Então, mais uma vez, você pode t este tipo de maneira mais curta fora escrever nas propriedades. Ou você pode escrevê-los no caminho mais longo. De qualquer forma funciona. Mas então precisamos do que chamamos de atributos. Ainda tipo de especificado para o banco de dados que quando você está gerando esta tabela, isso é o que é necessário para estes, certo? Então, por exemplo, eu vou colocar um atributo chave sobre a propriedade ID. Certo, então isso é especificar que esta é a propriedade chave e tem uma linha vermelha. Voltarei depois para o nome. Eu vou especificar que este é necessário para que em bancos de dados e você pode muito não são sozinho sabe assim sem a palavra t pássaro t necessário. Então isso teria Bean gerado como uma coluna que alos sabe o que então Não faz sentido criar um tipo de folha sem nome. Se não há nome, então não pode haver um tipo de folha, certo? Eu não vou ser tão duro e rápido na data criada porque eu posso forçar esse valor mais tarde. Mas pelo menos eu quero mostrar a vocês que temos que tributos ter o colchete, a palavra ou o nome fora do atributo e fechar colchete. Assim, as linhas vermelhas mais uma vez indicam que algo está faltando para que possamos pairar sobre ele, clicar em nossa lâmpada e chegar lá a solução. Ou podemos. Se estamos apenas digitando, não podemos nos preocupar com o máximo. Você acabou de conhecer as correntes estão indo bem no meio do mundo e, em seguida, manter controle e pressionar ponto sobre. Em seguida, ele vai nos dar uma sugestão sobre o menos para que é outro cartão de tubarão teclado curto que você pode usar. Então eu vou apenas ir em frente com a sugestão toe incluir os dados do modelo de componente em notações no tipo de licença. Então temos a chave. Então o banco de dados, você sabe que esta é a chave primária para o estável e ele é gerado no significado necessário que isso deve ser gerado como não neve. E então eu posso ver se este arquivo próximo a ser modificado é deixar alocações para deixar um local. Ele terá a propriedade i d que também vai ter que atributos chave. Então eu vou apenas controlar isso, obter a sugestão e deixar isso ser feito. Nós também vamos toe tem propriedades para o número fora destes que será na forma de inteiro em para as datas em que o registro é criado. Então nós temos público em número fora estes em nós temos o dia ser criado em. Então vamos ter referência aos funcionários para quem estas alegações estão sendo feitas, bem como o tipo de licença que as alegações estão sendo feitas novamente. Então vamos pensar nisso. Eu sou um empregado. Eu tenho um “eu d”. Estou sendo alocado cinco, que é o número fora desses dias de doença, certo? Estou a ter 56 dias, por isso tens de saber quem sou ou quem é o empregado, bem como o tipo desligado. Deixe que este número fora este é ser uma picareta que você aplicar dedo aplicado. Desculpe. Então o que precisamos saber é ver público para começarmos com a referência dos funcionários. Então dizemos empregados públicos. Tudo bem, então podemos dar à propriedade o mesmo nome que os funcionários preparam. Então isso está dizendo para o mecanismo de banco de dados que precisamos de alguma forma ter certeza de que estamos referindo funcionários ou que o empregado toe quem este registro de alocação de licença vai ser relacionado com os detalhes de que os funcionários estão disponíveis para seleção. Se eu estou olhando para essa alocação direito, então eu vou ver o empregado I d. porque eu ainda preciso dessa propriedade para o empregado i d. que é o que realmente muitas vezes assim funcionários. Então, na verdade, o empregado vai ser uma corda e por que eu sei que é uma corda? Porque se eu entrar no meu explorador de objetos e olhar para esta propriedade quatro eu iria estar em Environ Shar não é cebola. Então, tradicionalmente, eu sempre ensino bacias posteriores que eles usam em seu uso Ah Geo I d. Tudo bem, uma identificação única que geralmente é sempre uma corda longa. E isso é bom. Então eu só vou dizer, cadeia pública em, em seguida, ver os funcionários que eu d. Tudo bem, então não, parecia que para qualquer funcionário que eu D é referenciado aqui. Eu posso obter todos os detalhes e armazenar em vez de funcionários, objetos que é além de acreditar classe de alocação ou registro direito em. Então vamos fazer coisas semelhantes para o nosso tipo de folha porque ainda precisamos saber o que o imposto de licença está lá. Nós podemos querer os detalhes, então eu vou apenas colocar o tipo de licença no tipo de folha i D. Não para outros atributos ou bem, outro atributo que precisa ser adicionado é um para a chave estrangeira, onde nós realmente pode ditar o nome que a chave estrangeira deve ter na mesa enquanto não é muito diferente aqui, então eu vou apenas dizer, chave estrangeira na chave estrangeira para os funcionários. Chave estrangeira é o empregado que eu vi. Vamos vê-lo novamente para o tipo de licença em seu tipo de licença I D. Então ele parece meio redundante. Não, porque esses são os nomes reais da chave estrangeira, mas, mas, hum, propriedades. Mas então, na próxima tabela, você vê onde ele realmente vem a calhar. Mas então você vê que eu li linhas, e isso é porque eu preciso incluir outra coisa. Então eu só uso minha lâmpada. Livre-se dessa referência desta vez. É anarquia de dados anotações esquema ponto. Então sei que eu posso salvar este arquivo e, em seguida, passar para o próximo no próximo é deixar história e deixar histórias bastante bicos. Eu só vou me apressar, escrevê-los, e então eu vou apenas dizer que o que foi feito é tão ir embora. A história vai ter muito mais dados do que as outras duas tabelas, e nós vamos passar por elas primeiro. Então começamos com a chave, que, que, como eu disse antes, é tradicionalmente um inteiro. Em seguida, passamos para a nossa primeira referência de chave estrangeira. Agora, lembre-se que eu disse antes que a chave estrangeira, um atributo não pode nos dizer como queremos ser chamados. Quero dizer, eu tento manter a mesma mensagem de texto, mas pode ser diferente no seu caso, mas o fato é que uma chave estrangeira está solicitando um funcionário que eu entenda. Então esse seria o empregado que está solicitando as licenças. Então, essa é outra chave estrangeira referenciada sobre tabela de usuário ou tabela de funcionários. Não, você deve estar se perguntando, ok, mas a mesa de funcionários não tinha um I.D. então, se você voltar para a nossa classe de funcionários, lembre-se que colocamos cinco propriedades. Aqui estão seis Propriedades cinco, mas, em seguida, estamos estendendo usuário identidade. Então, qualquer identidade que o usuário tem como suas próprias propriedades, que eu posso realmente vai, é meio difícil ver qual identidade usuário tem a oferta como suas próprias propriedades. Mas então, se formos para o banco de dados, você pode ver as colunas que estão lá do que funcionários realmente incorpora essa classe de usuário identidade . Então, o que quer que seja a partir da classe de usuário identidade ou do ESPN que usuário estável que queremos ,podemos realmente acessá-lo apenas por referência ou tabela de funcionários, , porque nossa classe de funcionários está herdando as propriedades da identidade usuário. Então você quer a ideia dos empregados. Nós também temos o nosso público iniciado público terminou, então de quando a quando deve sair ser aplicável. Temos o tipo de folha. Então eu estou solicitando que eu estou solicitando uma licença dessas datas para essa data em. Quero este tipo fora. Saia, certo. Procurar férias, etc. Em. Em seguida, o pedido foi feito no dia em que foi ação e ação aqui apresenta se ele foi aprovado ou não. Então você vê aqui que tem touro público aprovado e este touro boonies sim ou não? Mas também tem um ponto de interrogação. Então isso me dá um pouco de trapaça. Onde pode ter estado terceiro fora? Não. Tudo bem, então isso significa que é notável para que possa ser colocado em um estado não aprovado ou ah, sim. O valor não é nenhum valor. Não, obviamente significaria que está pendente. Isso não significa que a ação ainda assim fez ação estaria em branco. Enquanto isso é não. Uma vez que o estado fora este muda, em seguida, a expectativa é que nós nos certificamos de que a ação data também muda em. Então temos outra chave estrangeira ligando a nossa mesa de funcionários desta vez é aprovada pelo I.D. então você é um empregado, você está fazendo o pedido. Quem está aprovando é provavelmente também sobre funcionários fora da empresa. Então queremos saber quem aprovou. Sua licença é para sempre. Ação, você vai sair. O que? Eles aprovaram que são negados. A Andi. Então podemos rastrear quem solicitou, quem aprovou em alguns fez algumas vezes e detalhes sobre o que estava sendo solicitado. Então é isso que a tabela de histórico de licença tem reservado para nós. Saiba, uma vez que criamos essas três classes de dados, precisamos ter certeza de que as envolvemos no contexto do banco de dados do aplicativo. Então fizemos isso com a mesa dos empregados. Então temos que nos certificar de que fazemos isso com as outras três mesas. Então, neste seguinte o mesmo padrão que é um banco de dados público definir o nome fora da classe que foi criado em, em seguida, o nome fora da tabela, então você vai notar que eu tenho Esta é a minha convenção de nomenclatura onde eu chamo a classe pelo seu singular estados. Mas então eu chamo o caixa por seu estado plural porque a fita geralmente é uma coleção fora das propriedades que compõem um estado singular. Certo. Então esta é uma instância fora, e esta é muitas instâncias, certo? Então, quero dizer, você pode colocar em seu próprio nome e convenção. Não há nada difícil e possível isso, mas isso é meu. Então eu tenho histórico de licença, histórico licença, tipo de licença tipos de licença deixar alocação para sair. Alocações são tão saber que eu fiz todas essas coisas com as tabelas são conjunto de minhas classes de dados. Andi, resolvi o contexto DB. A próxima coisa que eu vou fazer é começar ou em outra migração, alguns que é uma migração add traço. E então eu quero dizer que eu deixei tabelas de detalhes em, pressione, enter e, em seguida, isso irá gerar sobre novo arquivo de migração em def. Você acabou de descartar migrações e vê cada arquivo. Assim como o 1º 1, o que eu fiz. Os empregados que conheço são os mais recentes do seu podem ver que está na hora de perplexos. Sublinhe qualquer nome que lhe demos no comando. Você pode tomar o seu tempo e analisar o que está sendo feito. Se desejar. Não vou gastar tempo com isso. Eu só vou seguir em frente e executar a migração fazendo o banco de dados. Então, usando o comando para cima aberto nas setas do teclado. Você pode realmente percorrer todos os comandos que você já fez neste console. Então o banco de dados e pressione enter on, eu vou esperar até que isso esteja terminado. Certo, recebi uma mensagem de “não “sem erros. E se eu voltar para o meu SQL server Object Explorer e atualizar, em seguida, voltar para o meu banco de dados em tabelas, então eu deveria estar vendo tudo fora do S Bean it tabelas existentes, bem como minhas alocações de licença , minha licença históricos em tipos de licença. E se eu olhar para as colunas do que as colunas e a data em que os nomes e os tipos de dados devem todos tipo de corresponder com o que eu projetei e você vê onde as chaves estrangeiras estão em, tudo parece em ordem. Então essa é a minha criação de banco de dados. Então, mais uma vez, qualquer tabela que você deseja criar o preferido são recomendados, Por favor, para você colocar a classe modelo. Eu chamo de uma classe de modelo ou a classe de dados que eu digo está na pasta de dados. Lembre-se, para adicioná-lo ao contexto do BB do aplicativo como uma classe ou propriedade do conjunto de banco de dados em, então você precisa criar uma migração usando o console do gerenciador de pacotes. Então, você vê, adicione a migração de hífen o nome fora da migração ativada. Em seguida, uma vez que isso é feito, então você vê banco de dados otimista. Se você não tem erros, então você deve acabar tão longe quanto eu estou. Se você tiver alguns erros, sinta-se à vontade para entrar em contato comigo e eu posso ajudá-lo a trabalhar com eles. 11. Repositório e a injeção de dependência: Ei, pessoal, bem-vindos de volta. Neste vídeo vamos começar a implementar ou repositório padrão na configuração do nosso projeto com injeção de dependência. Agora, antes de entrarmos no que essas palavras extravagantes significam Independência do Repositório. Vejamos um aplicativo no nível mais básico. Nós apenas configurar as classes de dados ou objetos de banco de dados que são carregar-nos para gerar um banco de dados. Nenhum aplicativo que é devido a sua com o seu site A ou é neste aplicativo stop, mesmo um móvel até a maioria desses aplicativos, especialmente se eles interagem com um banco de dados ou alguma forma de bater uma loja. Eles estão nos permitindo, como usuários, fazer quatro coisas com esses dados. Ou nos permite criar os dados, ler os dados ou, você sabe, assentos revisá-los. Atualizar dados significando fazer alterações. Os dados existentes ou remover dados são excluir para shorts. O acrônimo para essas quatro operações é bosta de multidão. Consulte para cria R para ler você para obter atualizações sobre antes de excluir. Então, mais uma vez, não importa o quão chique o aplicativo parece, não importa enxada chamativo. É quando você acerta a exclusão para ver uma animação e todas essas coisas, não importa todo olhares chamativos no final do dia. A operação mais básica é que ele é remover dados do banco de dados ou criar batidas e um banco de dados, ou apresentá-lo a você. Veja clique no seu perfil em talvez Facebook e você está vendo todas as informações que você inseriu anteriormente. Então você está vendo. Os dados estão lendo os dados. Se você fizer uma alteração em seus dados, seu perfil no Facebook, então você está atualizando os dados. É isso no final do B. Então nosso padrão de repositório é um padrão muito popular. É uma maneira de escrever e estruturar seu tribunal. Isso é o que queremos dizer quando dizemos que os padrões no DIT são muito, muito populares no desenvolvimento de aplicativos de nível empresarial. Ajuda-nos a restringir o buraco. Nós interagimos com os dados e criar camadas são propriedade das operações de banco de dados, a lógica de negócios nos EUA Então passamos algum tempo. Não podemos matar-te. Eu, que seria mais defender o olhar e sentir em. Essa é a apresentação para o usuário. E, em seguida, a lógica de negócios provavelmente virá mais nos controladores quando começarmos a construir deve nossos controles para diferentes modelos. Mas agora estamos nos concentrando nas operações de banco de dados, e é aí que esse padrão de repositório vai entrar em jogo. Então eu vou criar uma nova pasta nesta estrutura do projeto. Então entenda, dedo do pé colapso, tudo o que não é absolutamente necessário agora em eu vou criar dois novos Fuller o primeiro 1 E apenas clicando no projeto, eu vou clicar com o botão direito sobre isso. Eu vou ver Adicionar em, depois pasta e, em seguida, o primeiro 1 eu vou chamá-lo de contratos. Então a segunda pasta Son ia repetir esses passos. Vou ligar para o Repositório. Eu sei que se você estava tomando nota, mas enquanto eu tinha isso selecionado, este tribunal realmente foi modificado enquanto eu adicionei mais, hum, pastas. Então você vê, criado para o interesse para os contatos em Repository Pasta. Então não precisamos ver esse arquivo. Realmente. Podemos fechar isso. Então, a primeira coisa que eu quero fazer é adicionar uh, contrato sobre os contratos são praticamente o interferes é então eles são positivos que eles padrão repositório iria nos fazer criar interfaces, classes onda que implementam a interface. Então nossa interferência é como um modelo para o que são classe deve ter, e eu vou explicar isso. Então, o primeiro contrato que vou criar, clique com o botão direito do mouse em ir para o anúncio. Depois fui ver a aula, mas não estou a criar uma aula. Estou criando uma interferência. Então, usar essa mesma caixa Poppel em iria selecionar interferes em vez disso em Então eu vou chamar este eu repositório bestas. Tudo bem, então, como eu disse antes, portanto, portanto, grandes operações que cada banco de dados, maioria dos bancos de dados ou aplicativos nos permitem fazer contra o banco de dados que é criar dados, visualizar dados ou manipulou os dados se estamos excluindo, estão fazendo uma alteração. Então a primeira coisa que eu vou fazer com isso interfere é que eu vou torná-lo muito genérico porque cada tipo fora da tabela de banco de dados ou em nossa situação, dados ou classe de domínio funcionários vivem acima. Eu olho, seu filho deixa a história. Eles estão todos indo para uma perda ou quatro deficiências para executar multidão contra os registros que estão nestas tabelas. Então eu vou criar esta base, interfere em torná-lo público nesta interface baseada está indo dedo do pé, ter algum genérico identificar ar chamado T em que eu estou indo apenas para ver um eram t classe cólon . Então o que isso está dizendo é que eu estou fazendo essa interface genérica o suficiente para que eu possa passar qualquer classe aqui nessa classe deve ser capaz de executar qualquer operação que eu estou indo para o lado on-line. Tudo bem, Então isso está tornando este repositório base genérico o suficiente sobre as operações genéricas ou globais que cada classe são cada tabela deve ser capaz de executar seria criar, atualizar, excluir na parte vista. Então, tendo feito isso, eu vou realmente apenas para direita fora as operações que devem ser implementadas uma vez que estamos implementando operações de banco de dados em torno de qualquer classe que está sendo passada dentro. Então o primeiro 1 que eu vou fazer é encontrar também eu estou usando a coleção I. Então esta é a lendária aula de coleção de quadrinhos. Então, se você está familiarizado com C afiado, você sabe que Ver Sherpas Um número de coleções que você tem lista que você tem inúmeras, como wearable. I coleção é genérico o suficiente para que você quase pode ser qualquer fora daqueles. Mas então se você não está familiarizado com C afiado, basta pensar nisso como um ar e. Tudo bem, então isso é apenas dizer que eu estou aceitando qualquer tipo de ari fora de objetos que podem ser passados dentro Então, qualquer tipo fora de área que é uma coleção fora do tipo T T seria sua classe. Mas então, porque eu estou fazendo chá e fazendo genéricos ou chá, aqui é apenas um genérico identificar Raro dizer que qualquer classe onde eles vão acreditar tipo deixar história pode ir lá na operação seria encontrar tudo o que significa que eu sou retornando tudo do banco de dados. E se você estiver familiarizado com bancos de dados e SQL, isso será como uma estrela selecionada de qualquer que seja o nome da tabela difícil. Então esse é o achado todo. Em seguida, o próximo a ver seria toe se eu quisesse ver apenas um registro, e eu provavelmente iria querer encontrar esse registro por I D. Então eu estou criando outra função. A criação era como um batedor de função para ver alguma classe. Quero encontrar esse registro por ID e estou aceitando um parâmetro inteiro chamado idee, mas sabemos que podemos não ter parâmetros inteiros. Podemos ter outro, mas tudo bem. Podemos deixá-lo como inteiro para nenhum outro set off comandos seria criar atualização e excluir. Então eu vou colocar aqueles em que eu estou vendo touro porque eu quero indicar, como todo o sucesso desta operação foi, Sobule vai retornar sim ou não em baseado em DS Arnott, Eu posso usar minha lógica de negócios lidar dedo do pé Segure o u I apresenta o era o nosso sucesso para o usuário, certo? Então eu não quero me meter muito nisso. Eu só quero dizer que eu aprecio o que está acontecendo enquanto estamos construindo nesta aula. Então este repositório baseado classes indo toe tem ah função para obter todos os registros fora. Qualquer tipo de classe que eu estou procurando tabela que eu estou procurando Eu quero encontrar um registro específico com base no i d. Isso é fornecido Andi deseja criar alguma entidade fora do tipo T Então o nome da variável é entidade que é genérica o suficiente no tipo Eesti, que também é genérico e o mesmo para atualizar e excluir em nossa operação final, seria salvar agora mais uma vez, tudo isso é genérico e esta é uma base. Esta é uma interface base, que significa que todos os outros interferem para qualquer outra tabela específica deve herdar desta base porque estas quatro operações estão aqui definidas para todos em então nessa interface particular, se há outras operações que eu precisava para essa tabela em particular, então nós podemos implementá-las lá. Então, como primeiro ato, vou implementar um repositório para o nosso tipo de licença. Uma vez que não tem dependências, isso deve ser o mais fácil de querer. Implementar alguém para clicar com o botão direito ou contratos pasta Ir para adicionar anúncio na classe C. Mas, mais uma vez, estamos adicionando um inter fees em aviso de que a convenção de nomenclatura para as interfaces seria I em qualquer que seja. Então, neste caso, vou chamá-lo. Eu saio do repositório tipo, certo? Isso é isso. É a minha convenção de nomes. Então eu apenas clique em Adicionar, então quando isso cria seu um, eu quero torná-lo público para evitar quaisquer erros no futuro. Então eu posso saber muito meu eu deixar repositório toe sair tipo repositório Desculpe Teoh herdar do meu repositório base. Então acabei de fazer a base de repositórios. Lembre-se que repositório baseado deve ter algum tipo algum tipo de variável sendo declarado com ele algum tipo de classe irmão sendo declarado com ele e decisão Eric Então, desde que eu estou lidando com o repositório tipo folha. Então eu vou passar no tipo de licença como no meu carro. Completa é que está completando informal, mas não é isso que eu quero. Eu quero tipo de licença e eu fui para pressionar escape desta vez em vez de entrar. Então o tipo de folha é uma classe com a qual eu esperava interromper. Tudo bem, então fora do curso vai me dar um erro porque eles estão em pastas diferentes , espaços de nomes diferentes. Só preciso incluir isso. Então eu apenas sobre o controle deles em parada total e, em seguida, pressione enter, e, em seguida, ele irá adicionar essa referência para a pasta onde Leaf type está em. Então temos. Não é adicionado. Então é assim que você faz esta interface herdar ou deixar o tipo de, ou um repositório Bees. Então saiba que eu tenho ID de modelo o que deve acontecer. E mais uma vez, estou tentando manter isso simples porque estamos no começo eso isso eu deixo. Repositório não é ninguém para definir as operações de banco de dados que são realmente implementadas em nosso repositório. Então eu estou indo para ir em criar classe e desta vez vai ser uma classe em uma pasta repositório Alguém diretamente que clique em Adicionar ir para classe na classe Leavitt EUA em. Então eu estou chamando este um repositório tipo de licença. Tudo bem em. Então eu clico em. Então não, eu tenho uma nova classe que é chamada de repositório tipo folha. Está em branco. A expectativa é que o que foi definido dentro deste repositório deve ser definido dentro do aviso de discussão. Nada foi definido neste repositório em Isto interfere em vez disso, mas ele está herdando de I base repositório, que tem cinco funções definidas, que significa que esperamos toe para cinco funções declaradas em vez. Então, esperamos definir o comportamento fora dessas cinco funções dentro do repositório tipo folha . Então, a maneira mais rápida de obtê-los é herdar do nosso repositório I deixar tipo ligado. Vou explicar por que não herdamos do repositório de animais aqui. Vou explicar isso, mas para não, vamos trabalhar com isso. Então eu deixar o repositório tipo ativado. Eu estou apenas copiando isso em que eu vou torná-lo herdar disso e então uma vez que eu fizer isso, você vai separar a linha. Não. Em primeiro lugar, eu preciso incluir o espaço de nome onde os contratos estão em, em seguida, usar aviso de que a linha vermelha ainda está lá. Se eu pairar desta vez, é uma flecha diferente. Não é dizer que ele não implementa o membro Interferes e percebe que parece tudo fora dessas funções provenientes da base do repositório. Tudo bem, então está esperando que se eu estou herdando disso interfira que quaisquer funções estão sendo declaradas mais uma vez conhecidas estão sendo declaradas aqui. Mas todos eles estão sendo declarados aqui e sua base de pôsteres está sendo herdada por eu deixar o repositório de tipos no DSO herdando eu deixo o repositório de tipos. É basicamente herdar o fato de que essas funções precisam ser definidas em então eu posso apenas usar minha lâmpada mais uma vez NC implementar interface e ele vai apenas steamroll através e implementar todas as nossas funções. Associar id ao nosso repositório obeso? Não. Agora vamos dizer que existem certas funções e isso não é explicar por que não estamos apenas herdando das abelhas do repositório? Não, estes são apenas o croata básico. Mais uma vez, esses são a base. Essas são as quatro milhões de funções que você sempre faz em qualquer função em qualquer tabela. Certo? Mas então talvez haja Ah função que só eu deixo tipo Repositório precisa saber. Então a base não fica irritada porque se a base souber que todos os outros que herdam das abelhas também o saberão. Então eu posso ir em frente e definir outra função aqui mesmo no DSO Inside eu deixar tipo repositório em DSO Quando deixar tipo de depositante herda dele, ele vai saber tudo o que a base sabe, bem como qualquer coisa que sua correspondente repositório interfere sabe. Então vamos dizer que eu queria um que retornou alguns I coleção em porque este é específico. Não, tem que ser fora do tipo de licença. Tudo bem, então desta vez não é que não há t dentro deste contexto. Então eu quero uma coleção fora do tipo folha em. Em seguida, esta função é suposto obter funcionários por tipo de licença. Tudo bem, digamos que eu queria colocar todos os funcionários que tiraram uma licença de tipo particulado então isso vai levar para o indiciado do ICTY sendo o i d para o tipo de licença de partículas . Agora que eu defini isso dentro fora, eu deixo repositório tipo. Se eu voltar para a classe herdando, então você vê a linha vermelha está lá na seta sabe é que eu não ter implementado todas as funções em que é porque não é ver que uma função é uma parte fora. Deixo repositório tipo para que eu possa ir em frente e implementar interface nele só irá adicionar essa função para a lista off funções a serem definidas. Então, com isso, eu vou pausar em dez centavos permitirá que você vá em frente e crie os outros repositórios, as outras interfaces e classes de repositório correspondentes para deixar um local no histórico de licença . Vou deixar você fazer isso. Eu vou fazer isso. Vou completá-lo para que você possa referenciá-lo. Mas eu quero que você vá em frente e tente se sentir fora fazendo isso você mesmo. Tudo bem. Então eu espero que você pause o vídeo e tentou você mesmo. O que? Estou prestes a passar pelo que eu esperava que você tivesse completado. E se não o fez, é encontrar. Então vamos passar juntos e você vai encontrar o recurso é para esses arquivos criados no recurso é para este vídeo. De qualquer forma, o que nós deveríamos fazer era criar o “Eu deixo um repositório de localização”. Deixo o repositório de história Onda. mesmo para as classes de repositório reais. Então, se completarmos a sua alocação bem sucedida do que licença deve ser assim. Lembre-se de colocar em seu público se ele ainda não for gerado com ele. Interface pública. Deixo o repositório de alocação ligado. Estamos herdando da besta do repositório com a classe apropriada que é deixar um local no mesmo para a história. Temos o mesmo formato parecem manteiga e apenas o nome diferente em que temos certeza de herdar para a parte tipo de classe direita em, em seguida, para as respectivas classes reais. Então vamos herdar. Deixo repositório de alocação que acabamos de rolar aveia A implementação para as funções inter fees dentro do arquivo de classe em. Fizemos o mesmo para o repositório do histórico de licenças. Não, há mais uma coisa. E isso seria como o começo de nossa injeção de dependência. Nosso olhar para o que a injeção de independência realmente é. Mas nós precisamos realmente deixar essas classes de repositório saber sobre o banco de dados, então sim, eles sabem sobre as classes e todas essas coisas, mas eles não incorporam a conexão real com o banco de dados. Andi, se você se lembra desse aplicativo, contexto DB realmente incorpora essa conexão. Então isso é como nosso gateway e nossa ponte para o próprio banco de dados. Então ele realmente mangueira todas as funções off ou estrutura de entidade aqui mesmo na conexão real com o banco de dados. Então precisamos de um objeto fora do tipo aplicativo BB contexto em então que vai nos muito para realmente interagir com o banco de dados. Então, voltando para o 1º 1 que fizemos, que é deixar o repositório tipo na classe antes do nosso criador e a implementação fora todas as outras funções, eu vou declarar privado, ler sobre Lee ou propriedade sobre. Eu vou fazer isso fora do tipo aplicativo BB contexto em. Então eu vou chamá-lo bem, sublinhado db Tudo bem, então o padrão para propriedades privadas você vai usar um sublinhado quando seu nome e ameaças de modo que isso é como um bom dizer que se alguém aparecer, César chamado. Eles sabem tudo sublinhado. Isso significa que é uma variável privada são o que quer que seja do lado da sua classe. Então esse é o primeiro passo. O segundo passo é criar um construtor para o nosso repositório. Então temos a Andi pública, ou será que o atalho para os construtores é um C T O.R . E primeiro duas vezes nele realmente gera aquele bloco construtor fora da quadra para você. Então você deve estar familiarizado com ou PR Constructor é qualquer função que tem o mesmo nome que a classe e faz alguma inicialização é quando essa classe é chamada Orenstein. Ela odiava Então, nesta situação, o que esperamos que isso faça é rebocar inicializar. Ah, cópia fresca da nossa variável de contexto de banco de dados de aplicação. Então você notou que diz que está definido, mas nunca é usado. É só ali. Então a primeira coisa que eu quero fazer é realmente dar a este um parâmetro no teste de um perímetro fora do mesmo tipo que eu sou sobre inicializado entender? Para copiar esse contexto de banco de dados do aplicativo, mas não sublinhado db. Então este é privado e este está vindo através do construtor. Então vamos apenas inicializar o privado para ser qualquer valor que venha através do instruir o construtor. Desculpe. Então, nosso construtor não é inicializado tem isso. Então é assim que a injeção de dependência parece neste passo um. Isto não é tudo. Há a injeção de dependência. É bastante fora alguns passos, mas este é o primeiro 1 Então este bloco fora do tribunal precisa estar presente em todos os arquivos de classe repositório . Então, vamos copiar isto? Nós escrevemos uma vez em Eu saio do repositório, então eu só fui copiá-lo, e eu vou deixar um local, e eu vou colocá-lo lá no que eu vou mudar é apenas o nome fora da causa construtor óbvio para a construção. O nome não pode acreditar no tipo de repositório. Então eu só estou aqui para ter certeza que é o nome do carro em. Então eu vou fazer uma coisa semelhante em deixar a história. Andi, basta mudar o nome em então nossas classes de dados ou são classes positivas estão quase prontos para ação. Então nós fizemos um pouco fora de trabalho configurando esta estrutura mais uma vez no repositório Potter e seus militares que é um padrão. É uma estrutura. Então, se você fizer isso com esses três e você descobrir você mais cinco mesas em Utah anúncio, então eu espero que você siga o padrão e faça isso mais cinco vezes. Para cada uma dessas tabelas, pode parecer tedioso, mas no final das datas de volta estrutura que permite que você mantenha seu tribunal ainda melhor, porque ele corta muito fora a repetição, ajuda você centralize sua quadra e facilita a manutenção ao longo do tempo. Tudo bem, então agora ou funções são definidas, mas eles realmente não têm nenhuma funcionalidade. Eles só vão lançar exceções, e nós vamos deixá-los assim no próximo vídeo onde nós realmente vamos através e definimos as operações de banco de dados neste vídeo, nós estamos apenas colocando no chão que estamos colocando no fundação sobre A última coisa que eu quero fazer é rebocar estranho o conhecimento desses arquivos de repositório e seu propósito é a nossa inicialização que fogo CS. Então nós entramos neste arquivo brevemente, e vimos que tínhamos uma função de serviços CONFICKER que, você sabe, ele inicializa é algumas coisas. Então eu vou adicionar um pouco mais de inicialização está aqui, e eu vou fazer isso após a inicialização do banco de dados sobre estes czar de inicialização toe, adicionar nosso repositório ou contrato na relação de classe de repositório toe o dot net core aplicação. Certo. Então o que eu vou fazer é dizer que os serviços não estão ligados. Então eu fui ver a escola de anúncios em então nós temos a nossa primeira classe, e eu vou ver eu deixar o repositório de tipos ligado, em seguida, colocar uma vírgula em. Então eu estou esfregando que eu deixar repositório tipo para sua classe de postura muito ar, que é deixar repositório tipo ligado. Então eu vou fechar o aparelho e o semi-cólon. Não há fora de curso lá em linhas porque precisamos incluir os espaços de nome. Então eu só uso meu controle ancorado. Andi, inclua esse espaço de nome para o repositório de tipo I leave, que é os contratos em. Então eu vou fazer o mesmo aqui em incluir o próximo espaço de nome para o nosso repositório. Tudo bem, tudo bem. Então, uma vez que adicionamos educado em, nós colocamos em nosso repositório ou interfere em cima da classe repositório, Então, se você obter quaisquer linhas vermelhas e você provavelmente só quer verificar suas referências em cima , certifique-se de que você tem a espécie de nome correto para os respectivos arquivos em. Então vamos fazer isso para cada um do nosso pierce. Então temos que deixar repositório tipo. Nós também tenho que deixar o repositório de história er e nós também tenho que deixar um repositório local . E como vê, as linhas vermelhas estão aparecendo? Não, porque está percebendo que há alguma incompatibilidade entre as interferências sendo referenciadas na classe repositório. Então, para limpar isso, podemos apenas ter certeza de que estamos apenas ouvindo corretamente. Então eu só vou copiar o nome dos interferes e movê-lo para cima e, em seguida, remover o I. E então tudo é, você sabe, você sabe, nosso início daquele relógio de fusíveis de arquivo CS. Terrível isso. Então, eu só vou dar um par de coisas comuns aqui para ver. Então, esta seção lida com a adição de referências para repositório em contratos para iniciar o arquivo. Certo, então esse é o comentário que eu adicionei para essa seção. Então, mais uma vez, para tantas outras tabelas de dados que podemos ter querer criar um contrato para essa tabela, quer a classe positiva criadora dessa tabela? Então, e então você apenas adicioná-los nessa seção dentro do início sobre classe CS. Então, esses são alguns passos para implementação ou padrão de repositório. Por favor, note que mais uma vez, todas as funções que teriam sido implementadas estão praticamente vazias. Eles só vão lançar exceções. Então, em nosso próximo vídeo vai realmente começar a colocar as operações de dados por classe ou por função em vez de modo que possamos ter alguma operação de banco de dados bater em nossa aplicação. 12. Implemente banco banco de dados e a funcionalidade de estrutura da entidade: Ei, pessoal, bem-vindos de volta neste vídeo. Estaremos configurando nossa funcionalidade de banco de dados. - Não. Em nosso vídeo anterior, passamos por e começamos a implementar sobre repositório, padrão ou interferências é nas classes de repositório para herdar das interfaces. No entanto, quando implementamos as funções que teriam sido ou alinhadas nas interfaces, não passamos por definir a funcionalidade real nessas funções. Então nós temos o touro criar função aqui, mas é apenas lança e não implementado exceção. E esse é basicamente o caso para cada um deles. Então vamos passar pela configuração de um fora dos repositórios e começamos com o repositório tipo folha . Este é o 1º 1 que montamos na toca. Vou fazer uma pausa e permitir que você prepare os outros. E então podemos passar por isso juntos. - Não. Ah classe de repositório do tipo relevo. É herdar de eu deixar repositório tipo que, se olharmos para isso, ele também está herdando da base repositório em. Tem a sua própria função nessa implementação em que interfere. Então, temos cerca de seis funções de suas abelhas cartazes e, em seguida, temos uma função adicional do I leave type repositório no DSO sobre a classe herdar ou classe repositório teria um total de sete funções que precisam ser implementadas. Agora vou começar a escrever em funções na mesma ordem que elas apareceriam na classe interferes. Isso não é por nenhuma razão em particular. É só que, você sabe, na construção. Se você não está tão familiarizado com a estrutura de entidade, eu vou trazer-lhe passo a passo, mostrar-lhe como você pode usar a estrutura de entidade para interrogar o banco de dados. Então vamos começar com o encontro da coleção I. Além disso, a idéia por trás desta função é que uma vez que esta função é chamada relativa a qualquer repositório e qual de sua classe está lidando com , qualquer tabela roubando com ela deve recuperar todos os registros nessa tabela. Tudo bem, então, para o contexto, se você quiser fazer a grade de todos os tipos de folhas que são comidos pelo sistema, então você precisa obter todos os registros do tipo de folha do banco de dados. E então você precisa encontrar tudo certo. Então, ao implementar essa formação, nós vamos encontrar tudo em sua direita aqui tudo certo sobre as expectativas que estavam retornando alguma forma fora da coleção fora da batida, um tipo de folha que mais uma vez é apenas uma classe em. Eu posso apenas manter o controle e clique sobre ele irá para a implementação real fora da classe. Nossa definição da classe em vez disso vai nos mostrar o que é. É uma classe de banco de dados ou uma classe de dados, Deby disse. Acabou a aula, você quer colocar. Mas o fato é, é uma tabela no banco de dados e é representada em nosso projeto como uma classe chamada tipo folha . Então eu quero cada single Eu quero uma coleção fora de registros que se pareciam com esta classe praticamente assim nesta função, que é encontrar tudo que eu fui para apagar este trono, você não implementou exceção e então eu estou indo toe invocou minha conexão para o banco de dados . Então, para mais vídeo anterior, nós tínhamos definido uma conexão ruim através desta variável chamada DB, alguém para usar na pontuação DB e então eu vou dizer ponto e então você perceberia que você tem algumas formas de shuns disponíveis para você, mas então, o mais importante, você começa a ver que você realmente tem as tabelas necessárias disponíveis para funcionários do CLC, você vê, deixe o tipo Seja o que for que configuramos em nosso contexto de banco de dados como uma classe de dados que pode ser acessado, um notado tipos de folha está lá. Então podemos realmente acessá-los através do DD. Então, para obter sobre essa lista após o ponto eu apenas segurar no controle e imprensa espaço, e isso traz de volta essa inteligência sobre. Então eu posso começar a digitar tipos de licença. Então eu preciso fazer isso em uma coleção. Então, apenas dizendo, db os tipos de folha que está literalmente executando uma estrela de seleção de tipos de folha declaração. Se você está familiarizado com SQL, se eles não estão, então basicamente isso é apenas dizer, me devolva todos os tipos de folhas. É literalmente isso. - Tudo bem. Mas então, porque eu preciso dele em algum tipo de coleção, eu vou ver isso para listar fogo. Então ah, lista em C Sharp é uma maneira muito, muito flexível de obter uma coleção que pode ser usada em várias aplicações. Você não tem que fazer muita digitação depois disso. Você pode apenas dizer para listá-la, mas então você percebe que ele tem uma linha vermelha porque é que eles não retorna um valor porque ele está esperando que nós estamos retornando uma coleção fora tipo licença. Então tudo o que eu preciso fazer realmente é apenas um retorno, ele acredita que tipos que listem algumas pessoas. Quero dizer, todo mundo tem um padrão diferente de citações, e algumas pessoas provavelmente colocaria o vírus onda variável de jantar uma maneira agradável e rápida de declarar variáveis que podem salvar nossos tipos de licença. Onda, que é igual a isso, que os resultados desta afirmação. Então, o que for retornado desta declaração é armazenado dentro de fora, deixe tipos ligados. Então podemos retornar os tipos de licença para que todos façam de forma diferente. Você pode desenvolver seu próprio estilo. Qualquer que seja mais rápido ou mais fácil para você, tudo bem. Mas no final do dia, contanto que entenda o que está acontecendo ,tudo bem. Mas no final do dia, contanto que entenda o que está acontecendo , Então estamos pegando tudo sobre eles que salvamos. Eu alivio tipos. Tipos de licença de banco de dados para lista. Então nós estávamos girando todos os degraus da folha, e eles estavam lançando o dedo do pé um c afiado puro que eu chamei pelo menos, que é como um Ari glorificado. Tudo bem, desculpe. Você tem que ter um número de sentados fora. Objetos são valores são realistas e flexi pode crescer. Pode se contrair. Pode ser qualquer número a qualquer momento. Então, é uma coleção muito flexível que, como eu disse, como eu disse, então nós apenas lançá-lo dedo do pé elenco o que é devolvido aqui para nossa lista fora tipos de licença. E então nós apenas devolvemos isso. Então qualquer coisa que está chamando este formulário filho deve ser preparado dedo do pé receber uma lista fora tipos de licença , arte, e é isso. Isso é tudo o que precisamos para obter todos os tipos de folhas do nosso banco de dados. Agora, o próximo que precisamos implementar é multado por I.D. I.D. então esse cenário para isso seria que nós queremos ver os detalhes do tipo de folha articular AARP . Certo? Então você vê que nós temos doentes onde as férias saem. Desta forma, eu só quero ver férias sair. Talvez sejam erros de ortografia. Talvez haja algum detalhe que eu queira ver quem o criou. Tudo o que eu clicar nele só para ver aquele registro. Então, nesse cenário, eu preciso encontrar esse tipo de folha especificamente, e eu estou usando o I D, que é a chave ou chave primária no banco de dados. Estou usando isso para identificar exclusivamente aquele particular, hum, folha que. Então o próximo que estou implementando está bem por Lee. - Não. Localizar por i d retorna no objeto tipo folha. Não uma lista, não uma coleção, mas apenas um objeto, porque, lembre-se, estamos encontrando um em particular. Tudo bem, então eu vou remover esta linha fora da quadra. Então eu vou salvar Ire. Tipo de deixar. Tudo bem é igual a em sua mais uma vez, eu vou chamar meu D V, que é minha conexão com o banco de dados. Meu objeto de banco de dados que na tabela com o qual estou lidando é mais uma vez deixar tipos ativados. Então, nesta situação, eu realmente preciso encontrar um. Então eu tenho duas opções aqui. Eu posso dizer que e c encontrar para que eles nos dão uma função real chamada find que recebe como um parâmetro qualquer identificação única que deve bem, coisa que deve identificar exclusivamente um registro em qualquer tabela em ordem que estamos olhando em que nós apenas passando que permite é assim que nós sabemos que quando estamos fazendo isso, nós precisamos passar em que identificador único em, em seguida, em um trabalho diferente. Vai fazer o resto em encontrá-lo com base nesse identificador exclusivo em. Então só voltamos. Tipo de deixar. Tudo bem em. É isso. A outra maneira de escrever isso e você provavelmente vê isso escrito assim também. E eu só comentei Pensamento é que você poderia dizer, db dot a tabela Onda se deixar tipos. E então é aqui que você está em um comentário. Se você quer frio, isso não está indo para o pé ou você quer escrever algo que não é o que interfere com o tribunal. Você acabou de colocar barra, barra e isso vai entrar no dedo do pé dessa linha. Então, é um ponto de banco de dados deixar tipos em. Então você diz ponto e então você teria algo sobre. Eu apenas removo isso rapidamente para que eu possa obtê-lo com a inteligência primeiro ou padrão Então primeiro ou padrão, e então você entra em algum Lambda, hum, declaração. Mas ainda não estou pronto para isso. Vamos fazer isso mais tarde, então não vou entrar nisso ainda. Tudo bem, então essa é outra maneira de fazer isso. Outra coisa. Outro exemplo. Quando nos tornamos mais experiente com a sintaxe do quadro de entidade para encontrar por eu d em. Então nós nos preocupamos, encontrar um tipo de folha com esse i D articular que é único, que no fogo é devolvido e armazenado dentro desta variável e e nós estamos retornando essa variável e percebemos que é satisfeita porque o visual studio sabe que tipo de folha está sendo retornado no tipo Leave é o tipo de retorno esperado. Não, vamos nos divertir um pouco mais. Então vamos para a criação. Então, isso é quando estamos criando tipos de licença de alguém se sente fora do farm, clique em Salvar e, em seguida, a próxima velocidade é atualizada com o encontrar todos os dados. Assim, as grandes atualizações em tudo o que acabamos de adicionar são exibidas lá. Assim, a função de criação precisa do dedo, exceto os dados em realmente colocá-lo no banco de dados. Tudo bem, então para ou criar função, o que vamos fazer é ver o banco de dados conectado no objeto DVR de pontuação direito sobre. Em seguida, vamos especificar a tabela, que é deixar tipos, então observa que devemos estar recebendo alguma variável ou algum tipo de objeto fora do tipo deixar em. Estamos chamando de entidade. Então, uma vez que ele atinge esta função, ele é suposto receber dados no formulário fora da entidade. Então banco de dados que deixam tipos em. Então vamos dizer que o anúncio porque esses tipos é realmente como uma coleção. Tipos de licença é literalmente uma coleção fora de registros dos tipos de licença de tabela. Então estamos dizendo que eu só quero adicionar esta entidade ou este novo tipo de folha. Então, a coleção de tipos de folhas existentes Então estamos vendo conectado o banco de dados, me dê os tipos de folha de tabela são todas as coleções fora de registros de tipos de licença em neste novo. Então adicione uma brisa aberta e então você vê, até mesmo a inteligência é guiada aqui e dizendo que o que está esperando é algo fora do tipo folha Agora você pode chamá-lo de entidade, então vamos chamá-lo de entidade. Agora, isso poderia ter sido chamado de qualquer coisa, e eu não precisava ser chamado de entidades apenas chamadas de entidade porque nós definimos para ser entidade aqui. Eu poderia ter chamado tudo de BJ. Eu poderia ter chamado. Pai é que isso não importa. O fato é que estamos recebendo algum tipo de dados Andi neste caso específico tipo off leaf, e estamos apenas chamando isso de entidade. Certo, então isso é apenas um nome de objeto de homem muito ocupado. Então nós. Basicamente acabamos com isso. Então nós dizemos, D d, que é deixar tipos que anúncios, nós passamos na entidade. Certo, então há mais uma coisa que precisa ser feita depois que passamos e que é a mesma coisa. Mas eu realmente não estou para escrever na função salvar ainda, então eu vou apenas fazer um comentário lá para que eu possa me lembrar que eu preciso salvar minhas anotações. Isto está à espera de um booleano. Então nós estamos recebendo uma linha vermelha aqui porque uma não está retornando até que ele não está retornando o valor dos dados do carro. Então, vou deixar esse comentário. Iam voltar em D consertá-lo mais tarde. Então eu vou apenas ir em frente e implementar outro no próximo. Na linha seria até ele, então para fazer uma atualização, ele está basicamente seguindo o mesmo padrão. Nós conectamos ou banco de dados. Pegamos nossa mesa, os passos, então chamamos a função, e porque somos uma surra, eles nos dão uma atualização de formulário filho. Agora eu posso dizer que isso é um alívio porque antigamente, nos dias anteriores, fora da estrutura da entidade não era tão fácil. Então não, nós podemos ver essa atualização sobre o passado na entidade exatamente o mesmo em então, tendo eu essa mudança, nós ainda precisamos vê-lo. Então isso é outra coisa que precisamos salvar aviso. Nós temos uma função de dizer, ainda não implementamos. Então, quando começarmos a implementar, vou limpar o resto. Certo, então fizemos isso para atualizar o próximo na fila seria deletar. Então temos a nossa leitura que temos ou criamos. Temos a nossa atualização sobre nenhuma formulação ou excluir bem para excluir. É praticamente o mesmo padrão que já vimos antes no que vamos fazer é conectar ou banco de dados, obter a nossa tabela. Se digitar, então nós dizemos ponto sobre desta vez nós queremos remover Tudo bem, então não é acreditar desta vez, mas ele é removido em. Estamos removendo essa entidade da coleção em Mais uma vez. Precisamos salvar os dedos, então, por favor, você não pode escrever esta linha. Isso é bom. Algo será feito, mas não será comprometido com os bancos de dados. Como um compromisso com o banco de dados. Não nesta corrida. Um banco de dados, na verdade. Execute a consulta. Certo, então, não, precisamos descobrir o que precisa acontecer no nosso cofre. Então, para salvar, vou remover isso. Andi, tudo o que realmente acontece dentro ou salvar é o que vemos no placar. Ele pegou o banco de dados? E então vemos mudanças salvas, e isso é literalmente tudo o que precisa acontecer. Para ver isso muda. Então você poderia literalmente ter colocado essa linha aqui. Tudo bem, assim que você disser DBC de mudanças, você pode colocar essa linha lá. Mas porque estou escrevendo, estou esperando um touro. Então, se foi evite função, então seria bom porque as funções vazias não retornam valores. Então, fazendo isso evitar a forma, filho, tudo teria corrido bem. Mas isso não é o que temos. Temos um touro, então vamos trabalhar com o que temos. Então, espera-se que o ouro diga sim. Arcanjos não fizeram nenhuma mudança não foi feita. Tudo bem? Então, quando salvamos as alterações, precisamos saber onde a mudança é realmente feita. Porque se isso foi feito, então espera-se que eu mude para ser feita apenas para vê-lo para todos os outros onde eu indiquei que nós precisamos realmente, Seve. Então, quando nós salvamos as mudanças, isso vai tipo de retornar algum formulário fora para GIA que diz, um se casa algum registro teria sido editado praticamente tudo bem, Então este é o número de registros que são editados. Então isso significa que nunca deve ser menor do que um em uma situação como esta, se você está excluindo algo que pelo menos uma coisa deve ser alterada. Se você está adicionando pelo menos uma coisa deve estar mudando. Sua operação nessa coisa deve ser mudada. Então isso significa que eles devem sempre devolver algo maior que zero. Então eu vou fazer isso em um retorno booleano vendo o retorno. E então eu fui para mim isso em uma declaração lógica. Tudo bem, onde eu vou ver, retorne o valor se retornar a gaveta de resultados cair. Se o valor retornado por esta função, salvar alterações é maior que zero. Então esse ouro não está satisfeito porque vai avaliar isso. Ele não salva mudanças, mas eu acho que uma infra-estrutura melhor é menos confuso, no entanto, e provavelmente vai funcionar melhor é se eu apenas colocá-lo em uma resposta verbal. Vier mudanças é igual dedo do pé na pontuação. Db dot salvar alterações. Tudo bem, então este não é ninguém para armazenar algum número inteiro para o número de mudanças necessárias sobre isso. Voltarei depois disso se as mudanças forem maiores que zero. Então, se é ótimo que termine aqui, então isso é bom. Se não for, então, obviamente, temos um problema, certo? Então salvamos as alterações e depois retornamos. Se for, se a mudança for feita maior do que zero, o que significa que nunca deve ser zero em uma situação como esta, para que possamos retornar qualquer que nossa função salvar nos dê. Então, em nossa função de atualização, não vamos voltar. Veja, se sim, aqui está um fluxo. Atualizamos a entidade no banco de dados, e depois ligamos o retorno. Chamamos a função segura na mesma função que está retornando. Um booleano vai me dar o troco. Então diga-nos sim ou não. Se as alterações foram realmente ver o que Desculpe salvou a alteração. Andan nos diga se essas mudanças foram realmente salvas ou não. E então a loja de retorno cai. Então, esta função de atualização em todas as outras funções não será verdadeiro ou falso se for seguro. Então eu só vou pegar essa função de salvamento de retorno a partir de agora, colocá-lo na exclusão em aviso prévio. Toda essa linha vermelha vai embora também na criação em que linha vermelha também vai embora. Tudo bem, então essas são as mudanças que são necessárias para ter ou operações de multidão abertas correndo onde quer que criem fora da elite. Nós não queremos implementar ou obter funcionários por tempo de folha ainda. Vou deixar essa em branco. Se você quer tentar, então isso é bom. Mas deixo esse em branco até conseguirmos mais no reboque das nossas aplicações. Mas agora estou desafiando você. Toe, vá em frente e repita essas etapas nas outras classes de repositório. Então vamos começar com o histórico de licença. Hum, eu queria passar e fazer a criação da elite, encontrar todas essas funções para este histórico de licenças e quatro repositórios de alocação de licenças . Não, eu pausar a gravação e espero que você pause o vídeo e realmente tenha feito isso. Mas eu vou fazer isso. - Não. E espero que tenha trabalhado com inteligência, certo? E espero que tenha trabalhado com inteligência, Então você pode copiar, colar e mudar o essencial porque o tribunal deve ser praticamente o mesmo. É o mesmo padrão em toda a linha. Então este é o meu repositório tipo folha. A que fizemos juntos. Na verdade, eu vou copiar essas funções, e então eu vou para o meu repositório de alocação de licença em Eu fui para o leste nesta é uma rua. Eu não preciso dessa. Então, se você fez isso, eu espero que você esteja ciente de que você não precisa dele. Mas então eu tenho um monte de erros, porque não, parecia que eu não estou implementando e isso é porque meus tipos de dados perder muito, então eu posso realmente fazer um achado e substituir onde eu estou indo toe, Basta tomar dar alocação. Tudo o que é tipo de licença. Só vou substituir com as palavras. Deixe um local, certo, certo, alça alguém no dedo do pé, controle f ligado. Em seguida, use esta cenoura aqui, que deixa cair no achado e seção Ripley alguém dedo do pé encontrar deixar, digite Neste arquivo em. Vou substituí-lo por. Deixe um local ligado, então eu posso ir um por um em substituição. Tudo bem. Tudo bem. Kendall, senhor, por favor. Tudo em, depois de eu ter substituído tudo. Então você vê meus erros furar caminho e eu estou feito. Tudo bem. Então essa é uma maneira agradável, rápida e fácil de realmente apenas replicar o tribunal. Porque mais uma vez, é o mesmo padrão, certo? Há outro nível de obstrução que podemos fazer no repositório Procter. E onde nós realmente apenas escrevemos esses refrigerados e nós apenas impõe a qual classe ele se aplica. O que? Vou deixar esse nível fora disto. Faça Toro em apenas mantê-lo simples. Então eu vou fazer isso de novo para deixar a história em ir apenas fazer Ah, copiar e colar. Então uma maneira rápida e agradável de fazer a substituição. Eu posso apenas destacar a palavra e, em seguida, fazer o controle f e ele irá preencher automaticamente o que foi destacado. Então estou procurando ou confundi-lo. Estou procurando deixar um local, Andi, estou substituindo por histórico de licença. E então eu posso apenas fazer o nosso lugar. Todas as 14 ocorrências foram telefonadas e substituídas, então. Bem, eu tenho um pequeno problema aqui porque então isso é história de licença. Eu sinto muito. É por isso, sim. Então eu vou ter que me render manualmente. Coloque-os em então. Lá estou eu. Eu estou feito. Então, para ter certeza de que eu não tenho erros, o que podemos fazer é fazer uma compilação rápida. Eles podem usar isso, mas às vezes você não quer necessariamente lançar. Tão chateada. E então você só quer verificar se há erros. Ele pode apenas segurar o turno de controle no Dboey. E então que inicia são construídos onde ele apenas passa, verifica seu código e certifique-se de que tudo está em ordem e que você está livre de erros . E vejo aqui que estou tendo uma falha, que indica que eu tenho uma lista para que você possa clicar em uma versão para ver quais são os erros . Eu só vou para aqui. Está bem. Desculpe. Era uma garota de referência de um vídeo artístico anterior. Então eu consertei isso rapidamente. Ele não tinha a biblioteca de carrinho para o tipo de folha de repositório da ilha. De qualquer forma, se eu fizer uma compilação novamente, então veremos que uma compilação, bem-sucedida, conhecida, falhou. Então, se eu clicar mais cedo, eu tenho zero erros. Isso é bom. Então, não, que nós completamos um repositório, embora para alocação de licença e deixar histórico eu não preciso voltar para a minha inicialização em Let my começou por meu middleware. Então este fogo de inicialização representa o que você chama de meio. Onde estão as configurações do meio onde. Preciso que saiba que os outros repositórios já foram contabilizados. Deixo o repositório de tipo. Tudo bem, então eu preciso apenas passar. E eu estava destinado a controlar de Onda. Duplicar aqueles em então eu estou apenas trocando estes auto, eu deixar história história na alocação de licença morrer. Tudo bem, eu sei disso. Traga-me essas mudanças. Eu preciso ter certeza de que o interfere e a classe muito Então eu só vou ter certeza que da versão olho de um lado à esquerda no dia, eu tenho a classe correspondente para a direita, então eu apenas fiz isso rapidamente. Acabei de fazer uma cópia em paz e remover todas essas coisas. Então, se você quiser digitar Oh, tudo bem. Se quiser fazer assim. Isso é bom. Além disso , qualquer que seja mais fácil para você, ninguém sai. Os princípios por trás desse tipo de padrão é que você não quer colocar muita lógica de negócios em muitos lugares em sua aplicação. Cada camada deve ser específica e responsável por uma coisa. Então, nos meus primeiros dias, eu costumava colocar um monte de cheques bem aqui na seção de repositório do meu aplicativo. Onde é esse cheque? - Não. É isso que você sabe? Isto está vazio? Devo devolvê-lo ou não? Eu parei de fazer isso porque eu só quero que este arquivo seja justamente relacionado às operações TBIs. Direto em seguida, no controle. É aí que fazemos todas as coisas extravagantes. Então nós fazemos nossas validações que são bastante verificações para fazer nossas verificações policiais no controlador em que é onde a lógica real pode se sentar. Então é isso para este vídeo que temos configurado com sucesso ou camada de acesso a dados em conectou-o ao banco de dados. Então, é claro, você ainda não viu muita ação, mas estamos fazendo o trabalho de base à medida que o aplicativo cresce, então temos uma base e um modelo a partir do qual podemos replicar o que precisa ser feito 13. Configurar modelos e AutoMapper: Ei, pessoal, bem-vindos de volta nesta lição nós estaremos montando ou vendo modelos Onda configurando auto mop er antes de eu entrar em qualquer coisa pesada. O que passa e explica quando te salvo modelos, o que exatamente isso significa. E então vamos dar uma olhada no Outono Oper em. Então entraremos no tribunal de verdade. Não, para começar, um modelo é uma obstrução fora da tabela de banco de dados no nível básico. É isso. No nosso caso, é na verdade o modelo para a tabela de banco de dados porque estamos usando um primeiro padrão tribunal . Então entidade para turva começar baixo você para criar o banco de dados. Eles ainda fazem. Mas tradicionalmente você cria o detalhe abelhas em. Então você criaria um diagrama de modelo desse banco de dados dentro de seu projeto de estúdio visual . Então esse seria o modelo de suas abelhas de dados, e seria semelhante ao banco de dados. Diagrama moderno, certo? Não, Nesta situação, nós realmente teríamos escrito C classes afiadas sobre. Deixe-me usar o tipo de folha, por exemplo. Então nós escrevemos C classe afiada chamado tipo folha. Demos a ele uma chave chamada “Eu D uh propriedade necessária “chamada Onda. Nós damos-lhe uma propriedade tempo batida em. Então nós projetamos para a frente esta classe C afiada. Tudo bem, nós a projetamos em uma tabela real e a tabela foi gerada em nossos dados Abelhas e eu apenas encontrei essa tabela rapidamente, e está em nosso banco de dados de gerenciamento de licenças ligado. Aqui vamos nós. Então nós temos i d, que é uma chave primária, que é idêntico ao i d. Aqui temos nome em, Nós temos d criado para que tudo o que teríamos definido nesta classe foi criado como uma tabela. Então este é um modelo para a nossa tabela conhecido com uma visão bloqueável modelos. É uma abstração adicional do modelo de besouro real. Então você não quer necessariamente interagir diretamente com isso se você não for duro. Deseja usar isso para fins de banco de dados? Mas então para gerar nossos pontos de vista e fazer certas operações no controlador? Então nós vamos para o pé, ter o que chamamos de modelos de visão que são mais obstrução sobre isso. Então teremos que converter os dados do modelo de visualização para o modelo real antes de passá-lo para o nosso relatório que teríamos configurado, na verdade. Terrio, a operação do banco de dados? Não, mencionei outra coisa no título. Estes são novos modelos na configuração superior do outono. Então Autumn Upper é uma biblioteca que nos permite fazer essa conversão facilmente. Então, vamos passar pela configuração de modelos de visualização para um tipo de folha em. Estaremos implementando Outono Upper No. As primeiras coisas primeiro. Vou colocar todos os meus modelos de visão dentro da minha pasta de modelos no seu projeto. Então, dos meus controladores de contratos, Peter tem todos os arquivos reais de classes de abelhas de dados. Vou fechá-los. Mas então os modelos não terão o nosso modelo de visão. Então eu vou apenas clicar com o botão direito na nossa pasta Modelos esgueirados. Adicionar cerca de uma classe em. Então vamos ligar para este. Deixe o tipo ligado. Em seguida, você pode chocalhar o modelo de visão palavras, se você quiser. Só quero chamá-lo de VM, então essa é a minha convenção de nomes. Se você se sentir melhor digitando modelo de visão geral, tudo bem. Mas são só as minhas convenções de nomes. Em vez de dizer view model asi vm em então Bem, praticamente isso é uma obstrução fora da classe de banco de dados original, então eu realmente vou apenas copiar essas propriedades daqui em diante colocar aqui. Então você provavelmente está se perguntando. Certo, então por que copiar e colar? Por quê? Por que se preocupar com o modelo View se é realmente apenas uma cópia sobre a paz? Portanto, há situações em que você pode ter mais. Há menos propriedades dentro do modelo de visão do que a classe Beat Abi real terá . Então esse é o ponto dessa obstrução, porque talvez na página de edição há certas coisas que você não gostaria de exibir no e no índice. O Peter. Certas coisas que você pode querer me mostrar. Quer colocar em uma propriedade adicional em calcula em tempo real, modo que o modelo de vista tipo de dá-lhe esse tipo fora de flexibilidade dedo do pé. Personalize qualquer experiência que você quiser. O usuário deve ter. Então, a vista Lembre-se, discutimos que as vistas são o que o usuário vê, modo que a exibição que é gerada seria baseada em alguma classe os campos que são expostos, os dados que dizem acesso toe. Então, usando um modelo de visão você pode com uma rampa para cima ou tonificado sobre a quantidade de dados que uma pessoa tem acesso dedo do pé em nossa visão particular, outra coisa que nos permite fazer é impor certas verificações prévias em nossos pontos de vista. Então, quando eu digo pregar, exceto eu, como em uma forma, me dar querer sentimentos necessários me dar querer algumas estipulações, nossa própria validação de dados. Então, por exemplo, eu posso colocar a propriedade necessária no modelo de exibição no DSO fora do curso depois de incluir essa biblioteca. Tudo bem, então, então, uma vez que isso está incluído, o que isso vai fazer é fora qualquer visão que é, gerar que herdar. São dados e seu comportamento a partir deste modelo de visão vai impor que o nome é necessário . Então, se eu tenho um formulário quando eu tenho um formulário para criar um tipo de folha e você tem que colocar no nome fora desse tipo de folha, eles não podem enviá-lo vazio porque este é o nosso campo adquirido. Eu, no entanto, não quero conhecer, seja ele criado necessário, porque isso é algo que eu vou estar sentado na caixa crescido. Então eu não sou um para mim, e isso é necessário. Então você provavelmente se perguntaria. Ok, então se eu estiver sentado no fio de fundo, me incomode por um instante, e isso é um ponto válido. Então, uma mãe viveu de obstrução é que às vezes você pode ter uma visão diferente modelos para fins diferentes. Então, por exemplo, este pode ser o modelo de visão detalhada onde eu vou curtar cada detalhe de barcos. Este item, Andi, posso ter outro. Algumas pessoas dividem isso em arquivos diferentes de algumas pessoas. Use um arquivo global em apenas ter as diferentes classes dentro desse arquivo. Então estes são os detalhes do esporte ao redor. Este é o modelo de exibição de detalhes em, em seguida, pode antes do modelo de exibição criar. Não preciso da identificação certa. E para detalhes isso não seria necessário porque essa exibição então não há necessidade exigir dados, já que os detalhes que você está realmente apenas mostrando a OTAN. Este é um lado criativo que você modelo, apenas o I D. Porque, bem, não há idéia no momento da criação, entanto, o nome é necessário para a criação em então. Talvez no momento da criação, eu realmente não coma a data. Então, essas são pequenas coisas que você pode fazer com seus modelos de visão. Como eu disse para ou tonificado em seu barco, quantidade fora de dados que está sendo exposto para a visão que será herdá-lo ou toe aumentar a quantidade fora de dados. Não, quando chegarmos a realmente gerar as visualizações e os controladores, então você vai apreciar completamente por que nós estaríamos fazendo este trabalho duro, porque o Visual Studio realmente gera um pouco fora do campo para você quando você usa o Andaimes. E então, se você se esbarrar, seis sentimentos e você só precisa, seis sentimentos e você só precisa, então você não terá que gastar tempo limpando eles. Se você está andaime em cima de você, modelo que você já projetou dedo do pé só tem os campos que você precisa para essa visão em particular , então você não precisa gastar tanto tempo limpando porque eles já passaram tempo sentado no modelo vista. Então é um tipo de situação de galinha e ovo, um fluxo de caixa em uma. É o que você preferir quando chegarmos ao ponto fora do andaime, então veremos o verdadeiro poder fora dos modelos de visão. Tudo bem, então para as outras duas classes de dados que estavam se concentrando no que você acredita, alocação e deixar o histórico, eu vou criar modelos de visão, e eu estou literalmente apenas indo para fazer um abstração da classe de dados, e eu só vou adicionar alguns atributos de Violet de Son a eles. Eu não sou um dedo do pé gastar tempo limpando e cidade ou BTS versus cria. Eu deixo o tipo de lead VM como ele é, Mas então eu vou ir em frente e fazer o histórico de folhas e deixar alocação diferente. Então eu apenas ir em frente e criar uma nova classe mais uma vez neste será para o histórico de licença e eu chamei VM em. Acho que adicionamos. Então eu vou fazer mais uma para alocação de licenças. Certo, então temos ou deixamos uma VM local ou deixamos o histórico e deixamos o tempo. Os arquivos GM são assim para alocação de licença. Como eu disse, eu entendo fazer uma cópia direta em, então eu vou apenas modificar as anotações de dados. Então esses atributos que colocamos no topo são chamados de anotações de dados. Então, para deixar al apreciação removido. As chaves são mais chaves estrangeiras porque elas não são absolutamente necessárias em uma VM, então elas são absolutamente necessárias na classe de dados. Bem, eles não são necessários no modelo de visão então. Você vê aqui que o mês de exibição está fazendo referência a uma classe de dados, então ele está tentando fazer referência à classe de dados do funcionário e está tentando fazer referência à classe de dados do tipo folha. Mas então, idealmente, não queremos que Toby faça referência à classe de dados de alguns modelos. Então você modelo deve falar com o nosso modelo de visão sobre necessidades de uma classe. Você começa a dissuadir as aulas, então é por isso que temos essa obstrução. Então isso significa que eu preciso configurar um modelo de visão para os funcionários também tão interessante para criar que rapidamente. Tudo bem, então. Aqui está outra situação em que modelo vista pode vir a calhar porque quando queremos olhar para qualquer funcionário onde, na verdade, não posso usar um registro? E se você se lembrar da tabela Usuários, que é uma rede rápida de usuários, que é o que nossa classe de dados de funcionários está herdando, então os funcionários realmente nos dão todos esses dados. Nós realmente não precisamos exibir todos esses dados. Estamos olhando para um empregado. Só precisamos do nome do usuário, o endereço de e-mail em uma determinada chave. Está fora dos dados, então um modelo de visão mais uma vez nos ajuda a abstrato. Está fora dos dados, Certas coisas a partir do nível do banco de dados focam-se no que realmente precisamos ver, então eu vou apenas fazer referência a certos combustíveis chave. Eu usaria um nome e refeição naqueles que adicionamos, que serão unidos a ele após o nascimento. Primeiro nome, último nome nos impostos . Então peguei as propriedades do dia da aula de empregados que colocamos. Não, só vou adicionar os outros da mesa. Então eu quero que isso seja do lado enquanto eu estou digitando para que eu possa girá-lo para a duração fora do meu A Por meu exercício aqui no dia, eu apenas cronometrar estes rapidinha No. Uma coisa a notar é que enquanto estamos digitando ou quando estamos digitando estes através, precisamos ter certeza de que a ortografia que ganhou os tipos de dados muito O que estão no poço, a tabela de dados ou a classe de dados. Então eu não posso ter corda usando ele aqui, mas fazer referência ao Char usando ele aqui que vai falhar. O mapeamento vai sentir porque, em seguida, eles são duas propriedades diferentes em. Então ele não vai saber que isso combina com isso. Então a digitação à noite contém o i. D. o nome de usuário no e-mail. I mais o caso e eu mais dados cápsula Environ estrela é que eu preciso de uma maneira B C de ver corda. Então eu tenho que dizer , usando o nome é Camel Cased manteve um caso você e terminou depois de mim. Claro, eu maiúsculo qualquer um e pareço para o e-mail com um e maiúsculo em. Então eu vou adicionar quatro número em que será o fim deste exercício, então prob em número completo é armazenado como Environ char Então para o número deve ser uma string aqui no número de telefone. Então isso vai realmente ajudá-lo a marchar para trás a classe subjacente para funcionários que é usuário identidade. Então, tudo o mais que eu terminei com o banco de dados, então não, então eu posso apenas rastejar nele e eu entendo que o meu estado realmente. É sempre bom que quando você está escrevendo código, você apenas fala compilações. Posso apontar onde você está faltando. Então eu percebo, sei que eu não voltar e corrigir as eras na licença VM alocação então não, Eu posso mudar esta loja funcionários VM e eu posso mudar este dedo deixar Isso vai abrigar um detalhes. Desculpe. Isso deve ser apenas voltar e verificar e ter certeza que estou escrevendo. Então foi Deixe isso através dos meus detalhes. Deixe o tipo B. M. Então eu só usei os detalhes. Desde detalhes teria tudo o que eu preciso que deve voltar no coração objeto e não há erros em então ele só sabe que deixar alocação. Veum deve estar esperando alguma propriedade fora de funcionários fora do tipo funcionário VM em licença tipo com detalhes. Deixe que GM para que mais uma vez pudéssemos passar e criar diferentes modelos de visão para os funcionários. Você sabe, um para visualização, um para criação, um para este. Para isso, cabe a você. Eu vou fazer isso das duas maneiras doente e pelo menos ter um modelo e ver como ele pode funcionar em DSO. Vamos seguir em frente com o mais leve, então vou em frente e deixar a história. Eu vou fazer isso rapidamente fora aqui para que você possa positividade aqui e tentar trazer a propriedade é você mesmo em. Então podemos continuar juntos. Tudo bem, então eu trouxe todas as propriedades e isso mudou todos os desejos errôneos para o modelo View correspondente ou classe VM, então, é claro, nós temos que pegar todos esses atributos porque eles não são no cabo em um modelo poucos. Não, podemos começar a adicionar alguma validação. Alguém para voltar para deixar a alocação em primeiro lugar. Coloque em alguma validação. Então, o número de dias de folga é necessário porque quando eles estão preenchendo o formulário e sentados na alocação, eles precisam ver o número desses que quem quer que seja tem. Tudo bem, , outra coisa que a alocação de licenças precisará para ter é acessar a lista funcionários e a lista de licenças. Se você notar que este é realmente um, esta não é uma lista. Esta é uma entidade chamada funcionários. Em Esta é uma entidade chamada Leaf Type e com o correspondente I DS, direita. Então, enquanto ele está armazenando enquanto a tabela de dados está indo para armazenar uma idéia de funcionário e um tipo de licença, I D. it. Realmente. Ao permitir que o usuário philo, a lista exigirá que eles selecionem a partir de uma lista suspensa em. Então, vamos precisar incluir algum mecanismo que representa a lista fora dos itens que terão os funcionários e a lista fora itens que terão os objetos tipo folha são assim para fazer . Isso incluirá, em nossa opinião, modelo em que eu vou usar em inumeráveis desta vez. Então e eu inumeráveis lá estavam usando um tipo de dados chamado Selecionar Menos Tudo Certo, Tim Onda. Vamos chamar este de empregados. Então isso representa uma lista suspensa dos funcionários no banco de dados, e então eu vou apenas incluir essa biblioteca. Tudo bem, vamos fazer o mesmo vendo para o tipo de folha acima. Assim como empregados. E digamos que temos tipos de licença. Então, mais uma vez, os pobres fora do modelo de visão, isso vai derramar a vista. Isto é o que o usuário está vendo, e o que eles precisam ver é um menu suspenso ou algum formulário fora da lista que eles podem cobra uma seleção de. Então, estamos colocando no select this em nossa classe view model porque eles são muito mais flexibilidade com os tipos de dados que são suportados aqui do que teríamos na classe de alocação de licença real que foi usado para modelar o banco de dados. Então fizemos isso para alocação de licenças, e estou bem vestida para deixar a história. Vamos apenas rever isso em vemos aqui que tudo parece em ordem, mudou todos os funcionários e os detalhes. Referências. Bem, este passo vai realmente ser usado para armazenar a licença. Referências são pedidos, antes Andi, quer tenham sido aprovados ou não. Então só pensei que eu tinha se alguém está preenchendo um pedido de licença, então eles vão colocar a data de início. O fim. É, hum no Ben. Eles precisam selecionar o tipo de licença que estão solicitando. Então isso significa que eu preciso de uma lista suspensa para o tipo fora destes. Então eu vou usar o mesmo número inumerável de alocação de licenças e colocá-lo bem aqui, porque então este é o tipo de licença sobre isso. Só incluo essa referência que faltava. E então eu vou adicionar alguns atributos para o que eu considero necessário para data de início que definitivamente vai ser necessário quando a pessoa está solicitando Deixar em. Isso inclui essa referência rapidamente. Hum, o Indy, definitivamente vai ser necessário. O poço, isso é tudo o que é necessário. Realmente? Então eu posso determinar os funcionários solicitantes, ou nós estaremos determinando isso para que o usuário tenha que fornecer essas informações para que eles não tenham que atender o Andi exigido. A ação solicitada oito. Todos eles serão aprovados. Não tem que ser. Então, você sabe, em um caso a caso você sabe o que é necessário e o que não é quando você está pensando no futuro. Mas no final do negócio, podemos sempre voltar e podemos adicionar Subtrair em modificar como consideramos adequado como a nossa aplicação , ele cai. Então é isso para definir os modelos de visão, pelo menos para não, é isso. , Não, o que precisamos fazer, ele se estabeleceu para o Outono Superior. Então, como eu estava dizendo, precisamos de uma maneira de nos converter. Os dados que são fornecidos para esta classe digitam em um objeto fora deste passo de vidro. Então, quando é um pedido de licença entra. Então talvez eu poderia ter feito um trabalho melhor chamado nesta mesa, deixar a história. Eu poderia ter pulado pedidos, mas vamos trabalhar com isso. Então deixe o histórico quando o pedido de ah entra nesta mesa sobre os empregados. Todos esses pontos de dados são preenchidos. Eles não são pontos de dados. que o banco de dados reconhece porque este é VM e o banco de dados reconhece apenas acreditar tabela histórico vindo de classes de dados ou. Certo. Então é isso que ele reconhece. A história, não deixar a história. VM. Então isso significa que podemos sentar manualmente e reconstruir, deixar histórico, objeto e colocar, atribuindo todos os valores provenientes da VM no reboque. A classe de dados correspondente. Andi, esse será um método muito tedioso. Funciona, mas é tedioso. E então vamos trabalhar de forma mais inteligente, não mais difícil. Então nós temos uma ferramenta chamada Outono Superior que realmente vai olhar para as duas classes que dissemos que estes dois precisam mapear. Estes dois precisam de muito. Então vai muito as propriedades uns com os outros. Então era isso que eu estava dizendo. Você tem que ter muito cuidado e certeza de que você está muito no caso e muito nos tipos de dados . Ele vai procurar capital, nosso capital e solicitando empregado. Eu d sobre ele. Está bem, eu deveria deixar a história e estou mapeando para sair. A História V não tem essa mesma propriedade. Ok, eu vou pegar o valor e atribuí-lo mais, e ele faz isso tipo de automaticamente. Então nós estamos indo apenas para percorrer as etapas fora, configurá-lo em. DWI pode seguir em frente depois disso. Não, para começar o outono superior, vamos usar nosso novo gerenciador de pacotes get para que possamos apenas ir para a nossa solução . Explorador, certo? Clique em dependências clique em Gerenciar novos pacotes get e, em seguida, se ele teme terras na instalação Apenas Goto bro está ligado. Certifique-se de que você tem incluir pré-lançamento marcado em e nós vamos procurar Auto Mahbur. Então, vamos começar a sair. Estas bibliotecas estavam indo para obter Autumn Oper e nós vamos estar recebendo extensões Outono Oper para dependência. injeção não é, então vamos clicar nisso. Podemos apenas deslizar a seta para baixo uma vez. Deixe que comece a baixar. Então Newgate vai fazer a sua coisa, pegar o pacote e colocá-lo no carrinho. Coloque dentro do projeto e, em seguida, uma vez que é feito, em seguida, se você vai para instalado, você vai ver listado lá Então ilimitado antic são limpar a pesquisa. Mas não. Você vê que o automóvel está listado entre seus pacotes instalados. Se você descartou dependências e pacotes Goto. E você também verá Oper Autumn listado aqui não há. Voltaremos ao Breaux e procurarei por Autumn Upper mais uma vez porque ainda não terminei. Então todo o termo superior em então. Estamos procurando por este. Então estamos à procura de extensões. Injeção de dependência da Microsoft em. Então o que? Você não conhece essa versão para John Sete. Mais uma vez, certifique-se de que incluir pré-lançamento está colado. Eu sei que isso foi baixado. Eu tenho ambos em meu projeto, então eu posso apenas olhar construção fraca. É sempre recomendado que uma vez que você instala um novo pacote ele ou constrói para que você saiba, todas as referências são tipo de cozido dentro. Então, apenas a mudança de controle e ser e fazer uma construção rápida e nossos edifícios completos com zero flechas e assim podemos seguir em frente. Então, não, onde temos as referências de que os pacotes no outono superior, mas não, precisamos deixar nosso tribunal saber o que fazer com o outono superior. Então a primeira coisa que vamos fazer é criar uma pequena pasta. Então, você sabe, nós queremos manter nosso núcleo limpo. Então, sempre que você tem um pequeno cordões são pequenas aulas. Preciso de herege e discreto. Uma pasta. Dê-lhe um nome bonito. Então, vou chamá-lo de “este”. Os mapas estão bem limpando Zia. Então eu quero criar um arquivo de classe lá. Alguém para chamar a este arquivo cruzado Auto minha queimadura. Certo, então esse nome não se chocaria. Esse é o meu nome para a minha aula. Então esse nome que essa palavra iria realmente bater? Não, dentro desta aula, a primeira coisa que vou fazer é herdar de, ah, arquivo ou outra classe chamada perfil. Então eu vou fazer isso. E, em seguida, uma referência carregador deste joelho ainda colocando nosso uso outono meu pessoal. Está a referir-se à nossa biblioteca. Tudo bem, então Outono, uma biblioteca da prisão ou a dependência que acabou de ser adicionada através de você tem algum lugar referenciando isso. Então vamos montar um construtor para o nosso “pode-nós”. Então talvez isso seria um pouco confuso se eu já que eu dei o mesmo nome. Então eu só vou mudar esse nome do pé na minha parte superior. Então, em vez de chamar nossos elencos de outono, quer chamá-lo de minha parte superior? Justo, remova qualquer confusão, certo? Portanto, é sempre uma boa prática que seja qual for o nome do arquivo da classe, ele também nomeia a classe interna. Tudo bem, então eu apenas renomeei o arquivo para mapeador ponto CS na classe. O nome é muh para Andi sei que estou criando sobre construtor em. Então, dentro deste construtor, eu vou criar os esfregões que devem existir em nossa aplicação. Então deixe-me apenas fazer um em explicar enquanto eu vou junto, alguém para dizer criar tudo certo, colchetes angulares abertos. E então eu vou ver o que duas classes devem mapear. Então você vê, é meio que dizendo, você quer uma fonte? Quero um destino, certo? Então, qual é a fonte? Vejo que uma fonte seria uma classe de dados. Então vamos ver. Tipo de licença é Classe Anita. Então eu quero isso limpo. Assim por diante. Então eu tinha duas classes são para ver modelos para tipos lyft de detalhes tipo de licença e que criar os passos que eu vou fazer um off. Então eu quero que a classe de dados do tipo folha, que é a minha fonte, seja mapeada para os meus detalhes. Confiança tipo de licença desculpe e é Veum. Os detalhes deixam o tipo VM para que a classe de dados, que é a nossa fonte, seja esfregada para o meu destino, que é o meu modelo de visão, e, em seguida, entender para incluir todas essas referências para que todos saibam sobre todos. Tudo bem, então, não, o esfregão sabe que deve criar, hum up ou nós vamos isso está criando um esfregão entre a fonte, que é nossa classe de dados e classe de destino em. Então eu só fecho as chaves, e depois o semi-cólon. Não, a coisa com óperas de outono que literalmente vai fazer fonte o destino, que significa que se eu estou tentando obter dados daqui para armazenar aqui, então você vai saber sobre isso é baseado na direção. Então tem, ah, função. Então, após o abrir e fechar, muito site Express disse que E então eu quero chamar outra função chamada mapa reverso, que então verá que ele pode ser mapeado em qualquer direção. Então dessa forma eu não tenho que fazer uma noite e vendo isso para aquilo e para esta direita, que deve dizer, classe de dados, classe de dados, o U Motor no modelo de visão para classe de dados, reverter esfregão com automaticamente saber que está bem, Qualquer direção está bem por mim. Tudo bem, então eu posso fazer isso com os detalhes e então, ERM ciente da GM. Então onde detalhes sobre onde. Criar tempo de licença. Então nós definitivamente temos que fazê-lo porque esperamos que Outono superior anote um mapa desta classe posterior para este modelo de visão. Então temos que ver modelos aqui, e para cada modelo de visão que temos, teríamos que fazê-lo esta semana. Então foi o que eu disse. Você pode quebrar sua visão, mães, mães, para ser muito específico para o tipo de vocês, ou você pode apenas fazer um global, então isso seria feito uma vez. Então o que eu posso fazer agora é apenas duplicar essas linhas, certo? Todos os outros mapas para a história, alocação de funcionários. Então eu vou apenas fazer uma pausa e fazer isso. E você pode pausar aqui também no dia tentar e fazê-lo antes de eu retomar. Tudo bem, então eu terminei. Eu apenas duplicei essas linhas e mudei todos os nomes da classe de dados no modelo de visualização em De manteve o mapa inverso. Então isso é praticamente tudo o que precisamos. E para todas as outras classes de dados e todos os outros modelos de visualização que serão introduzidos. Só precisamos adicioná-lo a esta lista de “Mãe Pings”. Então, o próximo passo é toe realmente deixar oh, nosso middleware ou donna aplicação core inicializar outono superior. E esses ings mapa entrou para o aplicativo está em execução são então vamos fazer isso indo tor começar sobre arquivo CS e, em seguida, precisamos adicionar um novo serviço. Então deixe-me colocar um pouco de espaço aqui. Então eles adicionaram estes três serviços para mais de nosso presente para repositório. Tudo bem, então, não, eu vou adicionar outro, e eu vou encontrar este aqui para a nossa parte superior de outono. Então eu vou dizer serviços ponto em então eu vou ver o lema estranho, ma, sem aviso prévio o inter pecado parou. E isso é provavelmente porque você precisa incluir alguma biblioteca para obter essa função. Mas deixe-me apenas terminar de digitar velho antes de irmos e adicionar qualquer coisa. Então eu estou vendo no outono superior em. Então eu vou dizer tipo fora, em seguida, de aparelho. Vou ver o nome da turma, que tínhamos como marcadores. Então lembre-se que chamamos de Ma per que acabou e está no novo espaço ou na cheia de meus pings. Então esfregue er aan den, isso é o que vai estar aqui. Então não, precisamos incluir algumas referências que eu preciso dizer usando Oper Autumn em primeiro lugar para que este telefone mostrado seja reconhecido. Tudo bem, então nós tivemos um pouco de um piscar de olhos porque nós ligamos ou classe esfregona er, mas realmente não deveria ter esse nome porque mapeador é classe Noah Conflitante, então eu vou chamá-lo de mapas em vez disso. Então eu vou voltar para o meu arquivo, que é o meu superior, que CS, e eu vou renomear este arquivo toe maps. Então o revestimento com os estúdios que se você renomear o arquivo, ele vai perguntar se ele deve passar e realmente nas classes sob referências lá dentro , então esfregões distantes iranianos. E assim ele automaticamente renomeou a classe e o construtor. Dois mapas para mim, então entenda, para ver se isso voltar para a minha inicialização e, em vez disso, eu vou dizer tipo off esfregões direito em . Então, quando eu incluir a referência, ele vai me perguntar se eu quero incluir a referência para que o arquivo, que é o meu arquivo de classe desta vez. Então vamos rever o que acabamos de fazer. Então, estamos adicionando um novo serviço, e estamos vendo isso quando você sabe que nosso aplicativo principal está sendo iniciado. Queremos um serviço que adiciona no outono arquivo de configuração superior no tipo off ou informar este arquivo mops neste arquivo de mapas ou classe está vindo de nossa configuração que fizemos com todos os mops. Então, não, No final deste exercício, quando estamos realmente realizando nossas operações com uma view models on, estamos recebendo dados e precisamos convertê-lo da versão do modelo view para os dados salas de aula em porque repositório honrado não está procurando modelos de exibição está procurando classes de dados. Então, precisamos converter os dados armazenados no objeto modelo vista em dados de reboque que é armazenado no objeto de classe de dados que pode ser passado para o repositório e por extensão, o banco de dados. E assim o outono superior vai atender esse processo fácil. Então, nós não vimos o automóvel, e na verdade, nós estávamos apenas sentados em apenas obter uma apreciação sobre por que precisamos de modelos de visão e por que precisamos de Autumn Oper ligado . Então, quando estamos configurando nossos controles, então veremos o verdadeiro poder desligar ambos. 14. Analisar e adicionar mudanças no GitHub: Ei pessoal, neste vídeo, estaremos revelando as mudanças ou trabalhado até este ponto. Onda. Vamos fazer upload do nosso projeto para nos levantarmos. Agora vamos começar por rever o que fizemos até este ponto com o nosso projeto, nós configuramos sobre classes de repositório que configuramos ou conexões de banco de dados. Nós criamos alguns modelos de visão. Início do Outono Oper. Não tocamos em nossos controles e ainda não tocamos em nossas visões. Mas pelo menos fizemos o império para que é modelo, que é uma operação relacionada com dados? Não, é sempre bom manter cones relativamente curtos fora do que você está fazendo. Significa que você implementa algo, você verifica. , Portanto,o controle de origem foi projetado para ajudar as equipes a colaborar até mesmo como um desenvolvedor individual para ajudá-lo a manter o controle do que você está fazendo. Então, com isso em mente, quando você faz grandes mudanças ou você implementa algo novo, você quer verificá-lo porque qualquer coisa pode acontecer na sua máquina local ou onde quer que seja que você está de acordo quando você registrá-lo na central repositório. Pelo menos você tem uma cópia de segurança das últimas alterações que foram feitas. Então nosso mecanismo de controle de fonte fora de escolha é ghetto Bob on dit é uma plataforma de nuvem e você teria ou deveria ter criado uma conta já. E se você não tem, então você pode apenas e eu vou apenas assinar fora do meu levantar-se rapidamente. Se você vai para obter esperança ponto com, então você será dado uma folha de inscrição bem aqui na primeira página. Isso fornece um único usando novo seu endereço de e-mail e uma senha e você está dentro. Se você já tem uma conta, você pode ir em frente e que entrar, e, em seguida, vamos criar um repositório para o nosso projeto. - Não. Uma vez que você se inscreveu em nosso login, podemos prosseguir com o Visual Studio Onda. Podemos ir em frente e adicionar este controle de fonte do projeto para que você tenha duas opções para fazer isso. Você verá no canto inferior direito do projeto para controle de código-fonte no controle de código-fonte e você clicar nisso e você vê presente ou você pode clicar com o botão direito na solução e você verá uma opção. Essa é a solução de publicidade dele para o controle da fonte. Agora, se você não vê nenhum ou você não vê recebe, então isso significa que você precisa não carregar, obtê-lo geralmente vem com estúdio visual, mas talvez algo deu errado e você não entendeu, então você pode sempre basta ir dedo do pé obter traço s c m ponto com ou você pode Google pelo menos são bons . Eu não era fogo também recebe traço SCM ponto com, e você pode apenas ir para Dawn Lords em, em seguida, basta marcar o não Senhor. Se você está usando o Windows fora do curso, então esse é o que é para você. Mas você pode escolher de acordo com seu sistema operacional em. Depois de instalar isso, você pode reiniciar o computador e reabrir o projeto. Então você deve ver que obter Icahn como uma opção, então eu vou ir em frente e clicar. Fique assim no controle da fonte e eu vou pegá-lo. E o que ele faz é criar um repositório local, então get cria dois repositórios, mas get cria um repositório na máquina em que está, então se ele está em sua máquina, então você tem I repositório em sua máquina. Mas o estúdio visual também é muito bem integrado, com plataformas de hospedagem de controle remoto de fonte como guitarra, então ele vai forçá-lo a salvar alterações antes de criar três Paluch localmente. Mas então ele também está perguntando, onde você quer criar o backup de suas palavras de cabo locais? Ele criou uma cópia local do seu cabo para que você tenha uma cópia local desligada. Suas alterações são rastreamento local de suas alterações. Mas não, é pedir. OK, você quer empurrá-lo como seus serviços div up? Ou você quer usar o gueto bar? Algum outro tipo off obter repositório remoto. Então, ele vai pedir-lhe que em dez centavos usando guitarra porque essa é a minha arma de escolha para este tutorial, alguém para dizer publicado para obter hub. Neste ponto, ele pode pedir que você registre. Sabe, estou usando praticamente o mesmo tronco de reboque. Amarre tudo para que não me perguntasse de novo. Ele sabe quem eu sou, então vou deixar o nome “Leave Dash”. Você pode colocar em uma descrição. Se você quiser em, você pode clicar em publicar, Então, se você escolher repositório privado, então as pessoas não serão capazes de vê-lo em seu perfil, então isso significa que você tem que adicionar pessoas manualmente em, então isso pode incorrer em custos se você precisa adicionar a muitas pessoas. Mas então, se você deixar público que todo mundo pode ver. Então, é claro, você sabe, se sua informação sensível queria público para mas para o propósito deste tutorial, eu quero deixar isso público para que você possa olhar para o meu perfil, ir para a minha guitarra e veja o código-fonte. Se você precisar de algum reforço fora do que é feito nessas lições, então eu vou ir em frente e clicar em Publicar, e então ele vai trabalhar um pouco de magia. Então, no final, isso vai atualizar e me mostrar que o repositório foi criado com sucesso. A Andi. Está me dando um link para os repositórios. Se eu clicar neste link, então ele vai dedo do pé do Bro o repositório indesejável com todos fora do tribunal que eu escrevi até à data, Sisi foi criado. O último compromisso foi há dois minutos. Se eu entrar na pasta que eu estou vendo todas as minhas pastas e arquivos que eu tenho trabalhado , e para que este seja um bom cavalo de remorso, essa versão fora dos meus tribunais se meu computador falhar, certo? - Não. Então eu posso voltar, levantar-me e obter a última inversão verificada. Então é por isso que eu digo que é importante verificá-lo quando você faz grandes passos em sua citação em. Também é uma boa prática. A galinha ligou. Isso funciona porque se você trabalha em uma equipe na qual não quer ter um erro, então você tenta verificar essa era. Depois aparece outra pessoa e pega o teu cordão. Isso é o que você chama de check-out quando eles chegarem aqui cordão. E então eles têm candidatos Arisa que foram culpa sua, certo? Então sempre código de frango que sua costa funciona e então você segue em frente. É uma boa maneira de colaborar com a Snow daqui, e posso dispensar daqui. Posso incluir mais informações criar. Eu me leio para que você saiba, se as pessoas se depararem com este arquivo ou esta história do relatório, eles sabem exatamente o que é um barco. Eu posso ser mais descritivo adicionando, bem, uma descrição na página no topo, então isso não é nenhuma descrição. Não sabe o que é um barco. Ele pode adicionar uma wiki para que pessoas que eu, você sabe, esta é uma plataforma de código aberto. Talvez estejas a criar algo que queiras partilhar com as pessoas. Você pode criar um mau, que é como um problema desligado log O problema r, tipo solução Andi de documentos. Se é que você quer adicionar mais pessoas, Toby, Toby, os colaboradores são contribuintes para o seu projeto, e você pode ir para configurações e você pode ir para o colaborador. Então, isto. Então você montou um projeto de equipe. Ele tem que ir para colaboradores, e então você pode apenas encontrá-los usando ele e para eles. E então tudo fora, você estaria em uma equipe trabalhando naquele repositório central. Certo, então é assim que você coloca seu tribunal do estúdio visual na banheira. Então, à medida que avançamos e construímos mais modelos a cada vez, vamos nos certificar de verificar essas alterações e manter este repositório optou por oito 15. Controlador e ações: Ei, pessoal. Neste vídeo, vamos começar a construir nosso módulo de gerenciamento de tipo folha, e vamos começar com os controladores. Neste vídeo, vamos criar um novo controlador para nossos gerenciamentos de tipo folha antes de um continuum passar um pouco de tempo explicando o trabalho completo dos controladores, ou qual regra? O acordo realmente não é assim. O controlador faz exatamente o que seu nome sugere que controla. Ele controla o fluxo entre a solicitação de um usuário sobre o conteúdo em um servo. Como resultado, ele está no leme de qualquer interação da Web com seu aplicativo. Assim, os projetos quando criamos vieram com controle doméstico já estão lá e prontos para uso. E você? Passamos algum tempo explorando como funciona. Vemos que casa é realmente o nome fora da área. Mas, em seguida, o padrão é que temos nome ah e, em seguida, o controlador de palavras. É sempre uma cápsula de camelo Andi. O controlador herda de uma classe base chamada Controller, que é fornecido pelo projeto. O controlador tem certas funções que são chamadas ações em. Essas ações têm nomes na caça de retorno com base na necessidade. Assim, mesmo que o índice e a privacidade verá a exibição de retorno. O que realmente acontece é que se você solicitar conteúdo para o discurso de índice fora do controlador doméstico do que tem sido para acertar esta ação e tem sido para retornar view on, então o que ele realmente faz quando é retornado, view é que ele vai para o visualiza verificações de pasta. Se houver uma pasta com o mesmo nome de um controlador, então o nome dos controladores é home. Tem de haver uma pasta chamada Home On. Então ele precisa ver de você com o mesmo índice de nome, o que ele faz. Ele precisa ver algum arquivo, que é ah dot CS Isham de arquivo em. Em seguida, ele retorna o conteúdo fora desse arquivo em que é o que o usuário vê. Então, para começar a criar nosso modelo, precisamos montar a multidão. As operações estão na classe de gerenciamento de tipo folha são tabelas, em vez disso, a primeira etapa é configurar um controlador. E então vamos começar a configurar os pontos de vista, sua ação no controlador. Então, vamos começar. Então, para criar um controlador, clicamos com o botão direito na pasta de controladores, vamos adicionar. Então vemos no topo da lista. Temos controlador, então selecionamos que em, em seguida, foram dadas as opções muitas vezes controlador vazio. Então você vê, Home Home tem alguns chamados Nós podemos obtê-lo vazio, significando que apenas como uma coisa básica o espaço do nome, as bibliotecas sobre o fato de que é uma classe chamada seja lá o que chamamos de herdar do controle. E depois fazemos o resto para que possamos escolher vazio. Podemos escolher um com leitor em ação Então ele vem parado com as ações básicas de multidão como eu estou dizendo que nós as ações são essas funções em qualquer interação com o aplicativo é realmente lotado aqui que criar, ler, atualizando nossos dados excluindo direito, para que possamos obtê-lo com o básico, mas genérico e, claro, temos que escrever o cabo para ele. Ou podemos ir em frente fazer o controlador NBC com vistas usando framer entidade. Então, o que? Este faz isso. Eu baixo. Nós também. Criar um controlador centrado em torno de um quatro classes de dados, a sala onde erramos. Criamos classes de dados neste caso, deixar tipo, e, em seguida, ele irá gerar todas as operações fora da multidão usando entidade para o seu Então eu vou fazer isso em primeiro lugar no número um para mostrar a você por que este não é o que estamos indo para pressionar para a frente. Então, o na construção basicamente reverenciado um aplicativo central dominante que você não está usando modelos de repositório e visualização e todas essas coisas extravagantes. Então esta seria a opção que você vai com onde você acabou de selecionar isso. Você clica. Adicione que, a partir desta caixa de diálogo, você seleciona a classe de modelo. Então, você pode na lista selecionar qualquer classe que você quiser. Andi, neste caso, eu vou com o tipo de licença. Então, é tipo de licença proveniente da classe de dados lionized espaço de nome de dados em. Então eu escolho o contexto que seria aplicação Devi contexto Andi. Eu não tenho dedo do pé tocar em mais nada, mas notar que ele está gerando o controle e em para mim ele sabe que a sua construção de um controlador baseado na classe modelo fora do tipo folha. Por isso, é deixar tipos de controlador. Então eu clique em adicionar E quando esse processo é feito, temos um controlador com um monte de código gerado. Então nós temos um controlador com lotes de tribunal e nós também temos uma nova pasta em nossos pontos de vista chamado Leave Types of About a leave types control agora que uma pasta chamada Leave Types com um número off arquivos um para cada off as operações cortadas estão em, assim criar os leads, Detalhes e índice seria antes de ler e editor antes otimista. Agora, se olharmos para o cabo que foi gerado neste controlador, vemos que ele inclui nosso contexto DD aplicativo, que, lembre-se, lembre-se, é como sobre gateway para o banco de dados. Vejo que inicializa. É apenas da mesma forma que nós inicializá-lo em ou repositório? E enquanto você continua a examinar o que está lá, vemos que temos uma ação chamada Índice. Mas temos um arquivo em nossos tipos de folha de pastas views chamado Índice. Assim, para cada ação que foi gerada em nosso controlador que temos um arquivo de visualização correspondente para essa ação. Então você vê que eu quero dizer, é basicamente faz muito fora do cortejo para você criar para ver para um é dar-lhe o capataz, e o outro lida com a ação submeter. Então, depois de preencher o formulário e, em seguida, você clicar. Submeta isto. Http post versão off criar lida com os dados erráticos, tem e faz qualquer pré e pós verificações que ele precisa fazer o mesmo pode ser dito sobre a edição. Temos o editor e temos o formulário no arquivo correspondente, mas também temos a versão post fora da ação. Tão interessado o suficiente que o andaime teria feito a maioria fora do cortejo por você. E então você provavelmente está se perguntando, então por que se preocupar com o repositório se podemos gerar tudo fora da pontuação? Bem, o fato é que sim, ele gera, sim, ele vai funcionar. Mas então há certas restrições ou limitações para o que você realmente pode fazer certas validações que você pode impor porque lembre-se que nós não queremos tocar as classes beta e forçador e validações como comprimento, e você saber certas pequenas coisas que o usuário deve estar vendo. Queremos tipo de criar que viver fora da obstrução entre ninguém que o usuário vê e o que o banco de dados experimenta. Então é por isso que nós temos os modelos para lidar com as gerações de visão, e nós temos as classes de dados toe lidar com a interação com as abelhas de dados em Isso é o que esse padrão é tudo sobre, criando que vivem de abstração e manter capacidade. Então o que eu vou fazer é eu vou apenas remover estes. Então, sim, eu o gerei. Só estava mostrando ao seu anfitrião. Andaimes trabalha alguém para excluir o controlador no den. Eu vou remover essa pasta views também. Então, isto nunca existiu, tanto quanto me diz respeito. Então a demo acabou, e não, vamos fazer o trabalho real. Então eu vou voltar para os controladores corretamente clique em Adicionar controlador. E desta vez eu vou apenas fazer um controlador genérico com ação correta de leitura. Então não há nada herdado neste. É apenas geral. Vamos preencher as lacunas e gerar as visualizações à medida que avançamos, então eu estou criando isso com o leitor em ações como adicionar. Então eu vou dar-lhe os tipos de licença nome no troller, então clique em adicionar assim uma vez que é feito e acabamos com um controlador de aparência muito genérico, não há nada espetacular aqui. Sim, há alguma qualidade. Dar a todos nós as ações que criam as duas cria fazer e é etcetera. Mas se você olhar dentro deles. Todos eles estão vazios. A única coisa que eles realmente têm é a visão de retorno. Então nós vamos, primeiro lugar configurar este dedo controlador herdar nossa classe repositório. Então a coisa sobre injeção de dependência é que você não vai realmente fazer referência à classe em si. Mas você está apenas referindo as taxas inter que implementou ou que a classe implementou . E então outra dimensão para isso é que precisamos também fazer referência ao Oper de Outono que vamos usar. Então eu vou começar com um privado em, uh, nós podemos fazer você só ler, mas eu vou apenas fazê-lo rezar. Eu vou dizer que eu saio do repositório de tipos, e então fora do curso tem sido para me pedir para incluir a referência para aquele arquivo um pouco distante . Se eu tivesse alguma pista sobre essa referência, então eu vou chamar este relatório. Então sublinhe os relatórios. Lembre-se, uma vez que você tem particular, nós usamos um sublinhado. Isso é apenas uma convenção de nomenclatura que nos ajuda a lei, o que é atual. Então eu vou fazê-lo ler apenas lá, dizendo que eu deveria fazer você ler só eu faço ler. Então isso é para a pesquisa sobre isso. Eu só estou dentro para duplicar isso e eu vou incluir eu esfregar er em, em seguida, foi chamar este um ma superior em. Então eu vou fazer essa referência. Também usando ópera de outono foram incluindo essa referência para I esfregão. Então, esta é uma demonstração desligada. O que a injeção de dependência realmente é. Então injeção de dependência é apenas referenciar um objeto, e isso implica o que as dependências estão lá para esse objeto. Por isso, estou a referir-me aos interferes aqui. Mas então essa interface conhece as funções que precisam ser chamadas, e por extensão, ela irá chamá-las para a classe repositório. Então, sim, isso é um bocado. Isso é um tanto acadêmico. Mas vamos ver exatamente como funciona, certo? Então eu preciso de um serviço de construtor usando a chave. O tubarão iria assentar são aan den. Neste construtor, espera-se que eu passe em dois parâmetros, um para o repositório e outro para a minha mãe superior. Certo? Então, da mesma forma que fizemos o contexto de banco de dados. Nós estamos fazendo isso, mas então eu estou tirando os sublinhados aqui. Então eu deixo o repórter do repositório e eu sou o mapeador superior Andi lá dentro. Fora disso, vamos saber inicializar relatório tohave o valor fora do veneno re tão sublinhado para ter o valor fora do nosso conjunto de parâmetros re na parte superior do enxame vai ter o valor off ou parâmetro mop er E assim que acabamos de completar formar algumas partes fora de injeção de dependência no reboque, este novo controle para sempre controle que vamos estar fazendo para qualquer relatório que vamos precisar. Vamos ter que fazer essas falas. Então, em alguns controladores que vão adiante, provavelmente vamos precisar de alguma funcionalidade do repositório de tipo I leave, bem como do repositório de funcionários it. Então nós vamos ter que incluí-los da mesma maneira em inicializá-los em nosso construtor. Agora, com isso feito, eu teria completado a configuração inicial deste controlador ligado. Não há muito mais o que fazer nesta lição de partículas. Na próxima lição, começaremos a configurar ou a exibição de índice. Tudo bem, então no próximo vídeo, continuaremos a partir daqui. Mas se você completou isso, então bom trabalho 16. Exibição de leave Type: Ei, pessoal, bem-vindos de volta neste vídeo, vamos começar a sentar ou indexar ação na vista para o controlador de tipo relevo. Agora, já configuramos ou controlamos e incluímos. Nossa dependência está na forma fora do repositório tipo folha e sobre mapeador. E não, precisamos escrever alguma quantia fora do tribunal de tal forma que quando alguém brose é para o controlador de tipos de folhas ou para deixar o tipo de fala para esse módulo. A primeira peça que eles vão ver é Index, e precisamos mostrar algo na página de índice. Como está, não temos nenhuma vista. Não. O que? Não temos nenhuma pasta que corresponda. O controlador de tipo folha está ligado? Não temos nenhum conteúdo para exibir. Então nós fomos para um código de escrita que nós estamos indo para consulta o banco de dados, obter de volta todos os tipos de folhas no banco de dados em, em seguida, retornar uma visão que isso agradar todos esses registros, acabou, usuário. Então a primeira coisa que eu vou querer fazer é realmente vai encontrar todos os tipos de licença. Então, dentro da ação, eu vou usar meu objeto repositório na forma de sublinhado Re puxar. Eu vou chamar a função que definimos que é suposto para retornar todos os tipos de licença porque o índice vai ser uma lista fora dos tipos de licença que estão no banco de dados . Então eu vou usar Vier para definir alguma variável, e eu estou chamando tipos de licença. Então eu vou torná-lo igual dedo do pé qualquer ponto sobre relatório e quando eu digo não usar aviso que nós obter todas as funções que teriam feijão definido dentro de nossos repositórios tipo folha eu quero encontrar tudo porque eu retornando todos fora deles. Então, vou ver as pessoas que não descobrirem. Portanto, o que quer que isso retorne será armazenado dentro de fora tipos de licença. Nenhuma nota que esta função localizar tudo está retornando uma coleção fora de deixar objetos de tipo. Não está retornando objetos tipo de licença, vista, modelo. Então lembre-se que passamos pelo fato de que nossa visão precisa obter objetos de modelo de exibição, não os objetos de dados. Então não, precisamos mapear o que é retornado em um formulário de nossa classe de dados ou classe de modelo de exibição. Então eu vou salvar modelo de fogo no modelo vai representar a versão marcada fora dos dados até agora, Mãe vai ser igual toe ou mop er objeto ponto mop e, em seguida, mapa I baixa-nos para definir que estavam recebendo isso ou temos um fonte, o que significa que estamos recebendo a classe de dados nesta situação. Mas queremos ser o outro, então veremos qual é a fonte e qual é o destino, o que estamos chegando, o que queremos. A sujeira, Toby. No final, os resultados mapeados devem estar na operação. É sempre ele em cima. Então eu estou realmente recebendo uma lista a partir disso. Então isso está realmente voltando. Pelo menos é minha coleção. Mas se voltarmos para a definição da função em, Eu apenas segurei no controle e para unclipped e eu fui para encontrar tudo e eu posso clicar com o botão direito Ou melhor, deixe-me apenas ir para o meu repositório tipo folha em. Vemos aqui isso ou descobrimos que tudo está voltando, pelo menos, certo. Então eu vou ver que eu quero minha parte superior do esfregão para colocar a lista fora. Em seguida, a lista está fora do tipo de licença porque isso é o que voltou para sair tipos É uma lista fora, literalmente. Deixe o tipo ligado. Depois fui ver vírgula e depois quero limpar a lista da classe de dados. Deixe tipo toe uma lista fora da nossa lista A fora do nosso tipo de licença o objeto M em. Lembre-se que também era. Então eu criei ferramenta no Dime foi usar os detalhes, deixar VM Então eu acho que um é bom para esta situação. Então os detalhes deixam essa VM Tudo bem, Então é assim que você defendeu sua direta a lista de palavras, e então você abre um colchete tio, e então você especifica o tipo de dados que a lista deve ter, Então isso pode ser depois em cambagem do tipo string. Ou pode ser um tipo de objeto, como, neste caso, deixar tipo, deixar tipo, que é sobre personalizado definido para nós que criamos algum mapeamento a partir de uma lista fora do tipo de folha de classe de dados toe uma lista fora da exibição detalhes do modelo. Deixe o tipo V M ligado. Então, no final disso, eu preciso fechar o colchete inicial de cima do mapa em diante. Então eu vou ver que objeto deve ser. Que objeto são objetos? Os dados devem ser muito Então os dados estão realmente vindo de tipos de licença porque isso é o que está mangueira o que é retornado da função acima, porque eu vou copiar isso e colocá-lo dentro dessas chaves, em seguida, fechado. Então não, eu tenho um monte de linhas vermelhas. Preciso passar pela Onda. Esfregue isso. Então eu fui toe incluir todas as bibliotecas que pode ser visto em. Então eu lidei com isso. Estamos recebendo mais uma terra vermelha onde parecia que não pode converter da coleção I do sistema No genérico I coleção para lista genérica do sistema. Tudo bem, então eu tenho duas opções. Eu posso colocar um para listar no final fora deste ou porque eu não tinha a disfunção é realmente retornar coleções, mesmo sangrenta que para listar na função aqui. Está realmente devolvendo a coleção I para que eu possa mudar. Quero dizer, eu sempre posso usar isso para ser lista, ou posso mudar isso e honrar aquilo. Então lista Andi, que fará outra conversão. Então, sim, está voltando. Eu coleciono que retornou lista aqui. Então ele voltou. Ele faz eu coleção, e eu estou re convertendo para lista e, em seguida, tudo está OK ou eu posso realmente mudar da lista aqui toe I coleção. Então, o que quer que eu esteja aumentando, pode ser de quase todos os tipos de dados genéricos de qualquer acordo genético na época. Desde que as caxumba estejam definidas, então você não tem nenhum problema. Então eu vou apenas deixá-lo aqui como ah ponto para listar em que resolve o nosso problema em então saber que nós temos os dados em então nós marcamos os dados. Nós marcamos os dados e eles estavam armazenando dados dentro de modelos. Se você passar o mouse sobre o modelo, você vê que ele está realmente fora da lista de tipos. Detalhes VM em Isso é o que queremos passar nossas visualizações dos dados passados. Para o nosso ponto de vista, só precisamos ter retornado vista. E então, na brisa aberta, colocamos os dados que devem ser passados. Então agora ou visualizar uma vez que ele é carregado, ele terá acesso a quaisquer dados que estão presentes no modelo. E é por isso que eu continuo dizendo que nossas mães de visão muito mais versáteis do que a própria classe de dados porque eu posso colocar quase qualquer quantidade fora de dados estáticos, bem como o inimigo mais tarde na minha antiga classe, Andi, eu posso manipular e segurar massagem deve ser formado antes que a vista realmente obtê-lo. Então não, nós precisamos realmente gerar a visão que irá exibir os dados desse modelo. Então, para gerar a visão, temos duas opções. Podemos manualmente ir e corretamente cuidar e abrir uma nova pasta e, em seguida, dar-lhe os tipos de folha de nome e, em seguida, criar uma vista fora do curso Isso foi um grande estúdio visual múltiplo torna mais fácil para nós. Como vimos com andaimes, era muito mais fácil. Mas nós pensamos andaimes ou sem gerar todo o controlador e todas as visualizações, nós podemos fazê-los individualmente, no entanto, clicando com o botão direito na visão de mundo. E então vemos a opção no modo de exibição. Em seguida, a partir da exibição de anúncio , definimos o nome para que o nome teria sido herdado de qualquer ação a exibição para a ação que estamos implementando, Podemos especificar um modelo. Neste caso, gostaria de ter uma lista. Então, um índice é geralmente uma lista, então ele vai realmente nos dar frio que júris uma tabela listando todos os registros que estão sendo retornados, ou consulta, podemos rotinar a classe model ou a classe model terá muito muito quaisquer dados estavam retornando. Então, nossas classes de modelo off detalhes Deixe o tipo VM para que eu possa apenas encontrar isso nos detalhes listeria . Deixe a VM ligada. Posso deixar o contexto de banco de dados do aplicativo ativado, então vá em frente e clique em. E uma vez que a operação de andaimes é feita, então nós acabamos com uma pasta com o mesmo nome que o nosso controlador. Deixar tipos deixar tipos na exibição correspondente para o que acabamos de gerar, que é indexado. Se olharmos para o mar de arquivo, vemos que ele parece, bem, um pouco único. Mas o que realmente é apenas um detalhe no topo com um link criar. Então isso é um modelo, certo? Assim, a lista Tempe nos dá um anjo e botão tag para criar uma tabela com colunas, e essas colunas são determinadas pelo que colunas estão disponíveis na classe modelo que foi usado para o modelo. Então, se eu olhar para trás, os detalhes, deixar o tipo V M. Isso é segurar o controle e clique na pessoa. Então eu vejo que tivemos colunas I D nome em fez criado e como resultado, o discurso de índice sabia que legalmente deveria deixar de fora I d na listagem superior. Certo, porque você não necessariamente lista a chave primária quando estamos visualizando dados. Mas não foi através do nome no ser criado em. Então coloca o suficiente para cada um. Então esta é alguma ação Reaser acontecendo onde é para cada item voltando no modelo. Então modelo é uma palavra-chave que representa os dados que acertou. Então eu poderia ter chamado isso qualquer coisa que eu não precisava necessariamente nomear modelo do lado do controlador. Mas na perspectiva de pontos de vista, o modelo de palavra-chave com uma maiúscula e representa o que d topo ele cortar. Andi , sabe que tem uma lista. Se você olhar para o topo aqui, você vê, isso é defender isso. O modelo é pelo menos o nosso que eu conhecia, Maribel. Desativado digite esse tipo de objeto, que é detalhes Deixar tipo VM. Então é ver que eu sei que eu tenho uma coleção. E assim para cada item nesta coleção, eu quero uma nova regra com duas colunas, uma para o nome em uma para o D criado ou três colunas. Então, um para mim, Um para o criado e uma coluna dedicada a editar detalhes e excluir links. Tudo bem, então nós vamos apenas fazer isso para teste rápido Executar este pinto entrar em modo de depuração. Então eu cliquei em Are start on e vamos ver se este trabalho artes ou aplicação foi lançado. E então eu vou ir para gerenciar e clicar em tipos de licença. Mas se você notar que no canto inferior esquerdo é apenas no Astor, porque nós realmente não configurar qualquer link para isso, Então eu só vou voltar e ainda no barco ancorado Ir para a minha solução Explorer, encontrar minha pasta compartilhada em pontos de vista sobre um Lee Haute. Então meu Leo Page tem os links ligados. Então vamos olhar para a semana inteira sobre links em bem, definir uma âncora, definir uma âncora, falar com o controle do dedo do pé de redirecionamento e uma ação específica em um controlador. Então temos rebocadores auxiliares aqui, e podemos apenas dizer SP traço, e depois o primeiro 1 queremos este controlador. Então, o controlador com o qual estamos trabalhando é tipos de licença, e então eu vejo SP traço novamente em 1º de dezembro. Ação sobre a ação que eu quero é índice Então, em outras palavras, quando este tio ataque para tipos de alívio é clicado, a expectativa é que ele vai olhar para a ação de índice dentro fora do controlador de tipos de folha em DSO. Quando eu atender essas alterações e salvar, eu voltar para a página da Web e atualizar, Então eu vou tentar novamente. Tudo bem, quando eu atualizei, eu notei que a mudança não foi feita. E isso é porque às vezes você precisa você pode precisar reiniciar um projeto ou você pode precisar habilitar essa coisa chamada Rose Erling. Então, eu estou indo para ir e habilitar o link do navegador Direto. Eu também estou indo apenas para reiniciar o meu motor d barco apenas atualiza tudo independentemente e todas as mudanças que eu fiz devem ser refletidas. Tudo bem, então o projeto está atualizado e eu vou ir em frente e crescer mais uma vez para deixar tipos em cima desta vez, o link é para cima e lá vamos nós. Então, não, onde na página que teria os dados. Então, estamos olhando para a tabela com uma coluna para o nome e uma coluna para Did Created on notice . Todos criaram este tipo com a Kate. É literalmente a forma como escrevemos na aula. É assim que é apresentado aqui, o que não é necessariamente desejável. Mas isso é o que é, e alguém para mostrar-lhe como podemos modificar o modelo de visão dedo lidar com este tipo de experiência . Eu sou e não tenho que fazê-lo manualmente no arquivo de exibição. Mas não há dados porque ainda não adicionamos nenhum registro. Se eu pudesse criar novo, então ele está indo toe dado erro, porque então ele procurou a visão criar em notar que ele não poderia encontrar nada dentro de qualquer lugar chamado Cria que CS HTML. Isso é porque você ainda não gerou esses espectadores, então pelo menos sabemos que está funcionando se eu fizer um ponto de interrupção. Então eu vou voltar para o meu projeto para voltar para o controlador em ir para definir um ponto de ruptura na primeira linha fora de nossas ações de índice, Compreender, para atualizar que pagou alguém para clicar no link novamente em então ele vai para acertar os pontos de freio. É só que ele está acendendo. Vemos-te aqui onde? Ok, ele atinge o ponto de freio e, em seguida, ele vai para os custos de função. Eu vou usar F 11 dedos, dar um passo a passo no que está acontecendo. E assim ele vai no reboque. Nossa classe de repositório , está chamando encontrar tudo em. Em seguida, ele vai usar aquele acorde que escrevemos dedo do pé interrogar para ver se há algum tipo de folha . E se eu ver que um condado zero não havia tipos de licença para ser trazido. Então eu vou continuar com 11 e, em seguida, ele sai da classe poster costela volta para o controlador. Nenhum tipo folheado no controlador tem todos os dados que ele precisa são conhecidos neste caso. E, em seguida, acima da minha parte superior entra em ação, em seguida, se eu apenas fazer se 11 nós vemos que ele faz o mapeamento e, em seguida, ele retorna de você. E então eu só faço f cinco para apenas continuar e ignorar quaisquer outros tijolos em. Em seguida, ele recarrega a página para que possamos ver que tudo está funcionando como nós conectamos trabalho do dedo do pé. Agora eu vou mostrar a vocês como você pode fazer ajustes no modelo de exibição que afetará a retenção. Estas peças são feitas na vista. Então eu fui para sair do modo de depuração porque você pode alterar alguns chamados no modo de depuração. Não posso mudar um tribunal. Assim, o cabo do modelo de exibição está entre aqueles que você pode achar difícil de alterar enquanto estiver em exibição no modo de depuração. Então eu vou passar por cima para deixar o tipo VM ativado. Então eu vou adicionar um atributo sobre a propriedade criativa escritura em. Então este vai ser exibido em então este apelo não é ter uma cinta e então eu posso ver o nome é igual dedo do pé e então eu vou dizer ação criada, então notei que eu estou indo para eu estou colocando um espaço aqui porque ele estava vindo ou Camel K é apenas da mesma maneira. Então eu disse, este nome de jogo é igual ao espaço criado. Então, parece mais amigável para o leitor, alguém atualizar o dedo do pé. Vou fazer essas alterações indo para o modo de depuração novamente e ver que diferença isso fez na tela. Muito bem, então a nossa candidatura está aberta. Nós manos deixar tipos e, em seguida, você notaria que a impressão é diferente. Rótulo é diferente, então é isso que podemos controlar os rótulos fora ou sente em nossas visualizações sem ter que fazê-lo manualmente, porque você pode imaginar se temos 10 visualizações que estão usando esse mesmo modelo de exibição em então para essas 10 visualizações que você tem que passar e alterá-lo manualmente. Então estamos usando o modelo de visão. Só mudamos uma vez. Nós apenas dizemos, quando você está sendo exibido, ele se exibe assim. Tudo bem, então até o nome do nome é meio genérico. Eu provavelmente posso colocar um nome de exibição fora do tipo de folha, identificar ou deixar o nome do tipo. Seja lá o que for que eu queira colocar. Isso é o que realmente será renderizado na exibição para o usuário. Tudo bem, então é assim que os modelos de visualização funcionam com visualizações e facilitam a manutenção. Certo, só uma breve recapitulação do que fizemos. Nós configuramos a nossa visão de índice onde usamos ou dependência dedo do pé fazer um B dois b quadrado chamado, e usamos braço superior para esfregar os dados provenientes do banco de dados para a estrutura do modelo de visão . E então nós geramos a visão com base no modelo de visualização passado nos dados, e nós verificamos que ele atingiu o banco de dados, obteve os dados são conhecidos neste caso em fez a operação como esperado, no próximo vídeo, nós vamos trabalhar através de nossas ações de criação em. Em seguida, vamos começar a criar dados para que a próxima vez que olhar para a lista fora tipos de licença no banco de dados, em seguida, haverá dados Toby exibido. 17. Criar o tipo: Ei, os caras neste vídeo estarão trabalhando através da configuração ou criação de ação para nossos tipos de licença , controlador e modelo. No vídeo anterior, já teríamos configurado ou indexado, onde buscamos todos os registros no banco de dados em Ben os retornou, gerou a visão que os mostraria fora do curso. Não há nada na base de dados, é por isso que sabemos quando fazer a criação para que possamos começar a criar registros e realmente ver que estamos interrogando o banco de dados. Então eu vou para baixo para Meyer, criar opção em, criar opção em, então o que eu vou fazer é gerar uma visão com base no modelo de valor de licença de criação. Então eu só vou voltar para os meus modelos e ir para o meu modelo de visualização tipo folha e o Aqui nós temos o criar licença tipo VM ativado. Tudo o que realmente precisa é o nome porque nós temos nome, nós d será gerado uma vez que ele é inserido no banco de dados em. Além disso, nós seremos responsáveis por garantir que nós fornecemos ele criado. Mas queremos que o usuário obtenha um farm onde tudo o que eles têm para fornecer é um nome para o tipo de folha que eles estão criando. Então eu vou voltar para o meu controlador em Eu vou gerar Você alguém dirigiu a palavra view, Clique em Adicionar View. E, em seguida, ele já está implicando que ele está criando que o nome de exibição deve ser criado porque ele sabe a ação em ir para escolher um modelo. Criar andan. A classe de modelo que vou usar é a VM de tipo de licença de criação. Então, como eu disse antes, você pode criar um modelo de visão grande, e então você gasta tempo limpando a fazenda ou qualquer visão que você está gerando. Ou pode gastar tempo criando vários modelos de exibição específicos para cada exibição que você pretende ter. Então eu tenho o modelo de exibição de tipo de licença cria em. Vou deixar tudo o resto como está e clique em adicionar. Então esse andaime gera que poucos tudo bem, então nós e era coincidente onde parece que havia os poucos não poderia ser gerado porque requer uma chave primária nele tem que ser definido. Então, por essa lógica, não podemos usar esse modelo de visão específico ou idéia por trás do modelo de exibição para criar essa visão , então tenha cuidado ao escolher as sensações quando você está cuspindo-as, você tem que incluir a chave. Baseado nisso, vou seguir em frente com os detalhes. Deixe o tipo VM porque aquele tinha um atributo chave e eu vou ir em frente e clicar novamente em Let It Andaime a exibição. Espero que aprendam a lição que sabem que precisam ter cuidado com os sentimentos. De um modo geral, andaimes está ansioso para ter uma chave primária. Então, com base nessa lógica, minha abordagem inicial de ter o modelo de visualização de detalhes diferente do modelo de visualização de tipo de criação é falho. Então o que eu vou fazer é condensar alguém para remover a ideia dos tipos de criação . Só estou modificando meus modelos de visão aqui. Eu vou adicionar o atributo para o nome acima necessário aqui em. Então eu vou tirar o nome especial fora do tipo de licença da liga de detalhes, então fora do curso, se eu fizer tudo isso, então eu vou ter que passar por dedão contínua após refrator do tribunal. Então, onde quer que eu tenha referenciado detalhes, deixe o tipo VM. Eu preciso saber renomeá-lo toe deixar tipo VM e visual studio vai torná-lo mais fácil para mim, optando por apenas renomear Essas referências são propriedade do meu projeto. Então, se eu voltar para o meu controlador, então você vê que eu sei de deixar tipo VM e não mais detalhes Deixar tipo VM Também na minha pasta pings ma , as alterações foram feitas de modo que não, Eu não tenho mais um cria. Eu posso remover esta linha e eu tenho apenas uma linha para o meu tipo de licença VM Tudo bem , então , carregando, nós vamos voltar para o seu controlador sobre óleo. Desculpe. Então nós tínhamos acabado de criar o nosso “você” criativo. Eu só vou passar para a minha visão de criação em Olhe para ele novamente. Eu vejo aqui que ele está nariz lyft vm Mesmo que nós criamos com detalhes Mais uma vez, Visual Studio refratou o tribunal para nós. Vou tirar esta linha. Eu não preciso disso cada um para mentir especificando estão declarando o que o tipo de dados é que ele é construído em cima off. Mas esta é a criação em que você percebe que está realmente apenas nos dando uma fazenda. Está vendo que temos Ah, bem, bem, é uma forma de bootstrap. Então photobox eu não tenho certeza se é pesquisador, mas vamos vê-lo em alguns. Então, sempre em forma, temos, ah, resumo de validação. Por isso, dá quaisquer erros com o modelo. Então podemos imprimi-los aqui no topo do que temos na entrada para o nome. Então nós temos o SP quatro, hum, tag helper, que basicamente nos permite ver. Ok, você quer uma entrada? Que ponto de dados do modelo que foi usado para gerar esses modelos. Você quer esta entrada para? Então eu quero uma entrada para o nome. Eu também quero na entrada para ser ele criado. Então vamos ter que fazer alguma coisa. E especialmente com o criativo, porque isso vai ser um DEET em. Não quero que os usuários coloquem a mão livre DEET. Então vamos colocar um seletor de escrituras manualmente para controlar o valor que entra para ser criativo. Tudo bem, então se voltarmos ao nosso tackle de formulário, percebemos que temos outro tipo de ajudante, essa é a sua ação SP igual a criar. Então esta é a ação b igual a criar está indo dedo do pé. Uma vez que clicar no topo olhar no reboque ou controlador e criar ventilador. Então nós criamos temos outro criar com o atributo http post, que é, na verdade, o que vai ser o único recebendo e processando os dados que estão vindo de nossa ação enviar no criar. Tudo bem, então a primeira coisa que queremos fazer é realmente olhar para o nosso trabalho. Então eu vou apenas entrar no modo de depuração. Eu vamos olhar para o nosso criativo você está bem? Então, para chegar à nossa página de criação, vamos gerenciar tipos de licença e, em seguida, isso nos levaria ao discurso de índice. E, em seguida, a partir da nossa página de índice podemos clicar sobre criar New Link, que já está conectado para levar à página de criação. E assim temos ou criar página. Então nós temos o nosso campo para nome e nós temos o campo para a ação criada. Então, como eu estava dizendo antes que seria uma hora de encontro tão contextualmente que o irmão ou sabe que ele deveria colocar algum tipo de seletor de data dentro do controle. Mas o lado negativo usando o selecionador de data do ouvido distritos é que cada profissional tem sua própria versão de um seletor de data. Então, você quer consistência entre as experiências do usuário para que você não queira deixar isso assim . E uma pessoa está usando cromo. Outro está usando borda, e eles estão vendo duas coisas diferentes. Então nós vamos inserir são apenas selecionadores para que todos vejam a mesma coisa, que, a longo prazo, se você for, se você tiver que apoiar esta aplicação, funcionará melhor para você demonstrar o que acontece quando clicamos em criar. Então, eu só estou indo para o Visual Studio rapidamente e definir um ponto de ruptura na segunda ação Criar em Den Eu estou indo para o pé. Em primeiro lugar, clique em criar e, em seguida, você percebe que ele está dizendo que estes são campos obrigatórios. E isso é porque nós especificamos no modelo de vista que eles são necessários alguém para colocar férias Onda e eu vou tentar colocar alguns bits usando o seletor de data ou ter mudança . Ele vai ainda, e então eu vou clicar em criar novamente. Ok, então realmente necessário especificar a hora também neste controlador de data hora para que você possa ver o perigo está lá se nós apenas deixá-lo porque nós realmente não precisamos do tempo ou nós realmente não queremos que os usuários estejam colocando isso em qualquer de qualquer maneira, então eu vou ir em frente e clique em Criar hits. O ponto de interrupção que configurou na segunda função de criação. Então, uma vez que clicar em criar a partir do formulário, ele vai bater a função post e, em seguida, espera-se que não para fazer nossas verificações postais e certificar-se de que todos os dados são saudáveis e massagear ele está ligado. Em seguida, envie-o para o banco de dados. E então, se tudo for bem sucedido, então lemos Arat toe sobre listagem. Se não, então pegamos erros e os entregamos de acordo. Então é por isso que temos um criar no topo deste é eu ficar no caminho do criar com o post alguém para sair do modo de depuração em. Então vamos escrever um tribunal. Então a primeira modificação que vou encontrar é com a nossa data criada. Então eu disse que isso colocaria um selecionador de datas. Mas a realidade é que eu não quero que um usuário veja o criativo que é para nossos fins de auditoria, alguém para remover esse controle completamente. Então só temos o campo para o nome. Tudo bem. No dia eu vou encontrar este botão, então estamos usando botões bootstrap. Então, primeiro, onde ele está no controle de forma de controle de classe, que é , Ah, classe bootstrap para você sabe que essas bordas arredondadas eu vi na caixa de texto. Se olharmos para o span que está exibindo a seta, também temos um booster classes como perigo traço texto. Isso nos dá as tomadas vermelhas que vimos subir. Então não venha aqui para o botão que temos BT e Bt e traço primário que nos dá um botão azul ligado. Quero que este botão azul preencha todo o espaço. Eu vou dizer batido bloco de traço, e então que irá atender o botão esticar de uma extremidade fora da tela para a extremidade extrema na outra tela em. Então esta é uma forma muito simples. Andi, isso é tudo para o formulário, pelo menos por agora. Para que possamos receber essas mudanças. Não, precisamos controlar o que acontece depois de um sublocado ter ocorrido uma volta para o controlador, eu sei, indo modificar sobre ações http post. Então, em primeiro lugar, eu sei que tipo de dados eu quero sobre os dados que eu quero. Vindo do meu formulário é fora do tipo licença VM. Então eu vou apenas ter certeza de que o parâmetro que está na minha opção creed causou é tipo off leave type, e eu vou chamar este modelo um. Eu posso chamar a data que eu posso chamá-lo qualquer coisa é liberar um parâmetro. Então, não, qualquer coisa que eu esteja fazendo em relação aos dados que foram enviados será armazenado dentro do modelo não está ligado. Então eu fui para a transação no catch on error. Então este é osangue do cordão umbilical que diz que vou tentar algo, e se funcionar, isso é bom. sangue do cordão umbilical que diz que vou tentar algo, e se funcionar, Se não funcionar, então é isso que eu quero fazer. Isso é o que a captura de tentativa é. Então eu vou ver Em primeiro lugar, modelo de estado é o que é então modelo estado seria como um estado que literalmente o modelo está em significado. Os dados que estão vindo depois que eu enviei foram todos os dados que são necessários realmente fornecidos. E se não foi, então o que eu quero fazer? Alguém a dizer, Se, em seguida, eu tenho esta coisa esta propriedade disponível para mim, chamar o estado modelo em, em seguida, ele tem uma propriedade ou um elenco era como uma classe estática em que tem uma propriedade chamada é válida. Então isso é devolver um ouro. Então é basicamente ver se é válido, então o que você quer fazer? Então eu vou meio que virar isso ao redor, e eu vou dizer se não é válido. Tudo bem, então estou checando. Se não for valorizado, então eu só quero retornar a vista porque eu gosto de verificar o cenário ruim primeiro e tomar medidas antes de lidar com as coisas boas. Certo. Então eu vou dizer se não é válido e o sinal de exclamação é o que faz com que não tudo certo, então. Eu realmente só quero voltar a vista. Andi, também vou incluir o modelo nisso. Então, sejam quais forem os dados trazidos, se não forem valorizados, retornarei a exibição, e retornarei os mesmos dados que vieram na exibição em que estou retornando fogo. Então, se isso não for agudo, significa que tudo estava bem. Então, observe o próximo passo. Então eu vou dizer vier tipo de licença é igual a, hum para cima versão fora desses dados de Lyft I V m toe a classe de dados tipo folha. Eu só vou dizer sublinhado mapeador e, em seguida, chamar a força no mapa. Então estou vendo que quero ir embora. Digite o tipo de licença de classe de dados. Isso é o que eu quero. Mas o que eu quero ser ele até isso é modelo. Tudo bem, então o modelo representa no objeto fora da licença vmc. Só estou vendo minha parte superior. Por favor, limpe este modelo este objeto fora sair através deste tipo de dados e, em seguida, uma vez que você fez o mapeamento da loja dentro fora tipo de licença em Então uma vez que ele é armazenado dentro fora tempo de licença meu próximo passo é chamar o relatório. Então eu vou chamar meus pontos pré pesquisa em seu dedo do pé tem uma função chamada criar alguém para passar no meu objeto recém-limpo fora tipo deixar tipo no reboque, criar e depois lembrar que criar está realmente retornando um ouro, que significa que se isso não foi bem sucedido, eu posso tomar outra ação. Então eu só vou ter outra função. Outro muito Glancy é o sucesso vai ser igual a qualquer função chamada retorna em então eu vou ver se não é sucesso significando se o sucesso dele retorna. Se este é um valor falso, então a ação que eu quero tomar está indo para o pé. Adicionar em erro ao estado do modelo. Então modéstia, ou realmente representa? Bem, tem uma propriedade que é uma coleção de erros que podem ser exibidos. Então é por isso que temos a seção de resumo de erros aqui, certo? Então, eu vou adicionar Então, com o estado mãe alguém para ver um modelo estados erros de pensamento ou adicionar modelador ou outro sobre. Então eu vou definir Bem, deixaria a chave em branco, mas eu vou definir uma Sra. Isso é algo errado. Certo, então isso significa que algo deu errado na operação. Não houve mudança de rosa. Mesmo que tenhamos o modelo, temos os dados, passamos por cima, então passamos para a função de criação. E fez o que fez com o banco de dados. Mas zero mudanças foram feitas, e estamos vendo que algo deu errado. E então, se algo deu errado, então queremos retornar a exibição mais uma vez com os dados. Certo, então agora estamos retornando a exibição com os dados, mas desta vez com uma era adicional para exibição. Então, se isso não for executado, que a música vai para a direita até o retorno onde ele redireciona a ação chamada índice, que é o nosso mínimo Não, eu perdi um passo onde eu não fornecer um valor para a data que criou. Então o que eu vou fazer é eu vou ver depois do mapeamento. Então eu vou dizer deixar o tipo de ponto que ele é criado é igual dedo em. Em seguida, basta chamar fez tempo Dot sabe que significa que sempre que a operação foi executada, sempre que chegar a este ponto no tribunal, ele deve atribuir a batida e tempo fora do servidor. Esse aplicativo está sendo hospedado em como os valores que eles criaram e, em seguida, proceder para enviá-lo para o banco de dados. Então é assim quando eu disse que nós não exigimos que o usuário faça isso, nós vamos fornecê-lo. Podemos realmente fazer qualquer coisa que queremos fazer com o modelo e todos os dados que estão sendo passados entre o formulário para o banco de dados. Nós controlamos tudo isso dentro da ação antes de enviá-lo para o banco de dados. - Não. Uma outra coisa que precisamos fazer é modificar o modelo de exibição para que você tenha notado que ele era necessário, mesmo que eu tenha a configuração necessária sobre o nome, e eu não tenha necessário configurar. Ao longo do tempo em que estávamos nos sentindo no formulário, ele realmente exigiu o dia. Então eu preciso atender esse valor diurno. Notável Silas. Ele é um ponto de interrogação para um dia, que significa que na vista modelo Lovely não vai me pressionar dedo fornecer um valor para ele em. Eu posso fornecer um valor para ele em qualquer ponto que eu, então eu vou apenas ir em frente e pressione F cinco, que é um cookie afiado para iniciar o modo de depuração em. Então vamos ver o que mais Labour precisa dele ou aplicação é que eu vou começar colocando um ponto de ruptura no nosso oh, ele já está lá, então vamos deixar isso lá e então vamos em frente e passar pela nossa direita. Isso é então vamos passar pelo aplicativo para clicar, gerenciar, deixar tipos, em seguida, clicar, criar novo e, em seguida, para o nosso formulário, e você pode ver que até mesmo o colocar Bt e Block. Era menor, mas é maior, mas não. Mas deve haver outra coisa que o restringe ao espaço para que possamos modificar a estética mais tarde. Mas nós só precisamos fornecer nome Ah em algum lugar para dizer férias e, em seguida, clique em criar em modo de depuração são R D Bug. Nosso ponto de ruptura. Desculpe é atingido para que eu possa passar o mouse sobre a variável no modo de depuração e ver você exatamente o que está em uma variável. Então, se eu passar o mouse sobre um modelo, então eu vejo que eu tenho os três atributos Have I D, que é zero ele criou, que não é nenhum nome Onda, que tem o valor de férias que acabamos de colocar na fazenda. Não é alguém que passe e veja o que acontece? Então eu vou apenas usar F 11 e então ele vai. Então, nossa primeira verificação onde ele está é o estado do modelo valorizado. Isso é verdade, então isso significa que isso não será executado. Então, se 11 vai pular além disso, se declaração, então ele vai para o meu acorde superior. Então ele vai mapear os dados de volta para os dados de tempo de folha. Classificar tipo de licença olhando. Está fora do tipo de dados deixar, digitar, desafiar, expandir. Então eu vou ver que eles criaram tem algum valor genérico porque menos no design, ele tem que ter um valor. O i. D zero e o nome é férias. Então, vemos que os dados que vieram como folha tipo VM não é mapeado com sucesso em Apenas deixe digite a classe de dados. Em seguida, nós fornecemos com a data real hora. - Não. Então não criou tem para estes data em. Se eu olhar para o objeto mais uma vez, então eu vejo que todas as propriedades exceto eu d agora têm valores. E é claro que eu seria mais fácil porque eu seria definido uma vez que ele é criado. Então, passamos para a terra do tribunal onde ele realmente se submeteu ao banco de dados. Então vamos para o repositório e ele o adiciona e então passamos para o nosso mar de mudanças. Tudo bem, então, se olharmos para mudanças, vemos que é uma. Então está nos mostrando que pelo menos uma mudança foi feita Então isso vai retornar verdadeiro no DSO são retornos de classe positivamente. Verdadeiro também E assim o nosso cheque para ver, se não sucesso Sucesso é verdade, por isso não é longe. Então ele pula sobre esta declaração em vai diretamente para o Ari direto. Então, eu só vou pressionar F cinco neste ponto em, então deixe que ele leia Arat em. Lá vamos nós. Não, vemos que estamos lendo do banco de dados, e acabamos de enviar dados para o banco de dados e isso é excelente. Não, O que precisamos fazer é modificar ou configurar ou editar detalhes e excluir funções, e então estamos em um bom rolo. Então eu estou indo apenas para sair do Bogan faria aqui. Vou tirar este ponto, saber que temos certeza de que isso está funcionando modo de depuração, e então nós apenas revisamos o que fizemos. Então nós configuramos nosso criativo você gerando ou visualizando com base no modelo de exibição que teríamos configurado. Então, quando nós enviamos, nós configuramos a ação http post para a ação de criação correspondente em nós configuramos para receber dados na forma de folha tipo V M. E então nós verificamos para ter certeza de que tudo foi valorizado assim Como eu disse, validações podem ser feitas a partir do modelo de exibição. É aí que as anotações de data e atributos entram em jogo. Eles verificaram com essas anotações de dados e percebem que tudo está OK. Em seguida, ele foi no dedo do pé de volta para o nosso modelo de dados original. Transferir o detalhe também em Ben submete ao banco de dados e, em seguida, após a submissão bem-sucedida, ele retornou são redirecionados em vez do discurso do índice, mostrando-nos todos os dados. Então foi isso que fizemos para tentar a captura. Nós Esta é apenas uma boa maneira de lidar com erros. Então, para pegar, eu vou fazer algo como o que fizemos para o sucesso, onde eu vou apenas adicionar um erro de estado de modelo para ver se algo deu errado e nós vamos retornar a exibição com os dados. Certo, então isso significa que se alguma exceção foi lançada, talvez a conexão do banco de dados tenha sido detectada ou houve alguma ocorrência anormal enquanto a operação estava acontecendo. É quando a pegadinha realmente entra em jogo. Em seguida, a maneira como você lida com Eros determina que usuários inteiros perceberão sua aplicação. Então, se você tem o graciosamente onde você apenas diz, bem, algo deu errado. Mas aqui está um formulário novamente, então talvez o usuário, se você é melhor do que apenas ver um grande erro, desagradável cuspindo coisas que eles realmente não entendem. Tudo bem, então 18. Editar.: Ei, pessoal, neste Ouça, nós vamos continuar nossos desenvolvimentos configurando ou editar vista agora semelhante toe over, criar ações que temos e nos opusemos para criar. Então, nós também temos um get on ah post para ele. A Andi. É o mesmo racional Nós obtemos os dados em troca de você com o formulário que seria nosso formulário de edição. E então, uma vez que você clica no botão que envia o formulário ou algo é as alterações que provavelmente foram feitas no formulário, então vamos para o post para, em seguida, fazer o que for preciso para ter certeza de que estamos recebendo o CARRINHO resultados. Não, por favor saiba que para a ação get para a ação de edição, temos um parâmetro que estamos recebendo no formulário off i d. Então ele precisa obter algum eu desvalorizar que ele vai usar toe, identificar o registro que precisa ser editado. Então, se voltarmos para o nosso arquivo de índice ou vista de índice, você percebe que para os links de ação que foram gerados em, podemos nos concentrar na edição que tivemos o botão de edição nele passado em alguma coisa neste escreveu I d s B helper nesta edição, Um ajudante puxou nossos atributos e são as estradas B I d. E passou no item que eu d. Então lembre-se, item aqui representa os itens que vêm na coleção fora dos registros sendo processados nesta visão. Então, estamos recebendo todos os tipos de licença em para cada regra que é gerada ou para cada item que está nessa coleção. Tipos fora da folha estavam gerando uma regra sobre. Estamos colocando seu nome e a data criada, bem como três botões, cada um dos quais chamará diferentes ações de detecção no ID ou valor de chave primária para essa regra. Então o que precisamos fazer é ter certeza de que estamos usando que eu d toe Fitch, o registro particular que precisa ser editado quando você clicar em Editar em um rolo. Agora, a primeira coisa que eu gostaria de fazer antes de seguir em frente com isso é a nossa vez, a primeira coisa que eu quero implementar dentro desta ação é uma verificação para ter certeza de que o que eu desvalorizar está sendo passado, que há realmente um registro no banco de dados para que eu desvalorizar. E então o que eu quero fazer é modificar o repositório para tipos de folha. Eu vou voltar para o meu repositório tipo folha. Vou implementar uma nova função. Na verdade, vou colocá-lo no repositório baseado porque pode ser útil em todos os repositórios , herdando de um repositório abelhas. Então eu vou incluir outro telefone filho neste vai ser um ouro em que eu vou dizer que existe. Então este quadro e vai apenas dizer sim ou não, esse registro com essa idéia existe sobre isso está levando em ordem em então fora do curso. Se eu colocá-lo nas cervejas do repositório e eu salvar, então isso significa que tudo o que está herdando do Repositório Bs precisa dele implementado. E então eu preciso voltar para minhas classes de repositório e eu vou começar com leave type repository e você vê que há um erro sobre ele, dizendo que eu preciso implementar o repositório em então eu tenho minha função is existes e eu apenas faço isso para o Os outros dois. Tudo bem, existe em todas as posturas. Deixar o histórico, bem como deixar um local são tão mais uma vez, uma vez que você colocar qualquer coisa na interface, você tem que ter certeza de que você implementou na classe herdeira. Então agora minha próxima ação seria configurar a disfunção dentro do contexto fora dos tipos de licença . Então eu vou tirar isso em Eu estou indo para salvar nosso ou 12 são existem, vai ser igual toe DB. É por isso que objeto de banco de dados em. Eu vou ver tipos de licença, e então a função que eu vou usar desta vez é que qualquer assim dot qualquer vai retornar um sim ou não, mas então ele está retornando sim ou não com base em algumas condições. Então, se eu apenas dizer que qualquer, assim como este é basicamente apenas vai voltar se houver algum registro dentro desta mesa. Então, se você quiser verificar se uma tabela está vazia, esta é uma maneira rápida e agradável. Ou está vazio ou não está vazio. Então, se houver algum registro e ele retornar verdadeiro, há registros. Se souberem que retorna, não há registros, mas, especificamente, quero saber se há algum com essa partícula. Eu d alguém para ter que usar o que chamamos de expressão lambda no DSO Dentro desses aparelhos , eu estou indo dedo do pé invocado pelo Lambda Token. Chamo-lhe uma variável alarmada que fala lambda, seja lá o que for que queiras usar. Mas isso pode ser qualquer coisa pode ser w pode ser saída pode escolher você Q é o mais frequentemente usado. Uma vez que você seguro na maioria dos exemplos para expressões lambda que você pode nunca ver em, então eu tenho igual em grau para, em seguida, entrar. Então eu vou ver são iguais e flecha. Então isso é como uma flecha. Fico confuso, migrado e em menos do que dizer às vezes. Então me perdoe, mas temos de você e depois uma flecha. Então eu quero ver um bonito que assim Q incorpora qualquer objeto que está dentro desta coleção e assim eu posso ter acesso a todas as propriedades que qualquer objeto pode ter, incluindo o I D. Então eu estou apenas dizendo, É Há qualquer objeto na coleção fora tipos de licença que tem um I D. Isso é igual a idéia de ser passado através do perímetro aqui, então eu apenas digo que eu d em. Então, uma vez que eu obter um resultado para isso, entender, para retornar existe. Então, quer seja verdadeiro ou falso, só vai devolver isso. O que quer que esteja chamando esta função obterá um valor de retorno off true ou falls. Então, agora que você escreveu os do tribunal aqui fora do curso, você pode simplesmente levá-lo e replicado através dos outros arquivos do repositório em. Vou fazer isso rápido. Se esta cópia em paz e, em seguida, certifique-se de mudar fora da referência tabela em relação ao mais rápido Esta é a história. Alguns podemos deixar histórias. Se há algum com que eu d em fazer o mesmo para alocações de licença em, então isso é feito. Tudo bem, então agora que colocamos essa função em nosso repositório, vamos voltar para nosso controlador, e então vamos encontrar uma modificação de nossa outra modificação enquanto você constrói . Então ele vai precisar saber se há algum registro com idéia antes de tentar as maneiras que é hora de fazer qualquer operação. Então isso é checar se há algum registro com que eu d. Então lembre-se que eu disse sempre o pior caso ou o caso ruim primeiro. Então eu vou dizer se não for assim, se isso avaliar as quedas e o que queremos fazer é retornar e então temos uma boa função aqui que podemos retornar. Isso não é telefone. Então nós sabíamos que estão usando sites e obter que quatro ou quatro era quando você clica em um link para obter uma era não telefonada. E isso é o que isso gerará para nós. E nós dar a volta, não telefonou ou um 440 Então o usuário, É claro, você pode personalizar essa experiência um pouco mais, mas para esta situação, estamos apenas mantendo-o simples. Então, se não há registro com isso, eu d, então nós retornamos não são telefonados. Caso contrário, queremos que o dedo do pé fique com o tipo de folha. Então eu vou chamar um tipo de licença é igual a re puxar ponto em. Então eu vou encontrar por eu d. Então você vê, nós montamos o quadro já ligado. Estamos encontrando o registro com o ID que está sendo passado no parâmetro aqui. Agora nossa visão precisa ser configurada com nosso modelo de licença VM ou View. Então, como temos feito para criar e qualquer outra visão que tenhamos configurado, precisamos fazer um mapa em algum lugar para salvar. Nosso modelo é igual a no placar. Mapeador pontos esfregão. Em seguida, estamos abafando para deixar o tipo VM. Esse é o tipo de dados foram mapeando dedo no objeto que estavam mapeando para esse tipo de dados é deixar tipo ativado. Em seguida, podemos fechar que no modelo DSO não vai incorporar os dados que foram copiados de, ou classe de base de dados ou um dedo classe de dados. Nossa classe de modelo de visão. É saber modelo sobre. Então estamos retornando a exibição com os dados no modelo. Então saiba que eu fiz isso. Valisei que não temos um boneco que eu vi. Estamos tentando não perder tempo ou a força de pesquisa de Fetch e I D. Isso não existe. Então, depois de muito bem que temos o registro de que ela está sendo solicitada, limpá-lo para o modelo. Eu sei que estamos retornando a exibição com modelos, então não, nós precisamos das visualizações reais Eu vou clicar com o botão direito do mouse em ir para adicionar vista, então eu vou selecionar o modelo para ele, então nós vemos que nós temos um modelo para ele. Ele na classe modelo que vai ser usado é deixar tipo V. M. Então eu acho que na lista. Desta vez, eu vou realmente colocar em um Leo opiáceos. Então é geralmente opiáceo. Lembre-se que tínhamos passado algum tempo montando um Leo PH mais cedo. A Andi. Ele será basicamente sempre padrão dedo do pé um para que você possa ir e especificar indo dedo do pé, clicando neste botão de reticências em, em seguida, entrar em visualizações sobre Andi compartilhado. Você pode encontrar o pouco então nós temos apenas um, mas você pode ter vários Eos. Só estou mostrando que se você tiver vários layouts, talvez você tenha modelos diferentes trabalhando com. Em seguida, você pode selecionar qual layout você deseja que esta exibição específica tenha para que não haja nenhum dano em selecioná-la de fato. É o seu por padrão de qualquer maneira, porque o único que temos, e também está configurado no arquivo de início View. Mas então vamos em frente e clique. Acrescente, então é luta para fora da vista. Ok, então agora temos a nossa vista e eu vou apenas limpá-la, remover isto cada um para puxar. Então podemos dar uma olhada nisso. E percebemos que ele se parece com mais criar vista. Obtemos um formulário e obtemos entrada para o nosso texto, que será o nome e a entrada para a data criada, que não queremos. Então eu vou apenas remover isso porque eles criados não devem ser editados. Certo, Onda? Uma coisa adicional que eu quero apontar embora, é a presença fora disso? Dê que desculpe esta entrada. Desculpe, isso tem um tipo de oculto. Percebemos que é S P para I.D. I.D. então a coisa é, nós precisamos rastrear o i d fora do registro porque a única coisa que o controlador sabe é o que a visão está enviando para ele. Então, se fôssemos remover esta linha com as entradas, a entrada escondida para I D. Porque eu não preciso exibir a chave primária para o usuário quando eles estão editando o gravador. Mas então nós temos que tem escondido. Mas se o removermos completamente do formulário quando clicarmos, enviarmos ou salvarmos neste caso o controlador quando chegar ao leilão para o post do TTP, ele não terá que esse modelo não terá essa ideia. Tudo bem, então você vê que ele está preparado para obter um eu d aqui, mas isso é por padrão. Mas a maneira como nós brigamos uma vez que ele está lá como um campo escondido, ele será incluído em todo o modelo em dissuadir senta que está sendo devolvido. E assim, para o controlador de tipos de licença em, Eu só vou ver se a mudança que eu quero dizer aqui e eu estou indo dedo do pé modificar o botão um pouco. Então isso é salvar. Eu estou indo para mim. Este salvar mudanças em Eu também vou atender este Bt e sucesso So Bt e sucesso dá-nos um botão verde em vez de um botão azul que é batido e primário no mergulho. Também vai conhecer este bt e bloquear alguém para sair ou editar vista olhando como este para não se eles estão em seus ajustes para conhecê-los mais tarde. Mas eu vou me concentrar agora na ação post para a edição, alguém para remover os parâmetros padrão que foram gerados para nós e podemos usar o mesmo tipo de promessa que usamos na ação criar host. Então eu vou apenas colocar de volta licença tipo VM e chamá-lo modelo em então na tentativa. A primeira coisa que vou fazer é validar que os dados eram vitais, validaram os dados danificados. Então eu posso realmente apenas tomar esta declaração se Andi Otik volta porque é o mesmo cheque. Estou verificando que quanto mais o estado é valorizado porque talvez nós editamos o formulário que eu colocaria em um nome de tipo folha em branco. Então, quando clicamos em enviar, ainda precisamos ter certeza de que o estado do modelo é válido. Se não for, então nós apenas retornamos a exibição da mesma maneira, e ele irá retornar a visualização de edição com quaisquer dados que foram colocados em. Tudo bem, então depois de termos limpado esse obstáculo, nós podemos realmente apenas guerra Ah, muito fora do tribunal pelo que fizemos com a ação de criação. Então eu posso mais uma vez tomar o tipo de licença. Andi, eu posso Muppet Box lembrar que esta linha está mapeando. Alguns apenas inter emprestado essa linha alguém para esfregá-lo do tipo de folha VM toe deixar tipo ou classe de dados e armazenamento nesta variável em, então eu não preciso modificar a data criada porque eles criaram nunca deve ser alterado porque que é definido quando é período e não muda novamente. Mas então eu posso dizer sucesso de vírus. Então eu só vou pisar até agora, é tão sucesso é igual a ou relatório pontos sobre. Em seguida, criamos uma função que disse o que em então, embora esteja esperando na entidade ou alguns objetos fora tipo de licença tipo, que temos aqui. Então você vê, estamos passando o tipo de licença em nossa função de opiáceos. Então vamos verificar. Se não for sucesso. Então também vamos voltar ou ver, e também vamos adicionar um erro de estado modelo, alguns apenas mentais. Mais uma vez, empresta esta terra de corda e mete-a lá dentro. Andi, deve ser isso. Então, se for bem sucedido, então ele irá redirecionar a loja na experiência nos mostrando a lista novamente. E, claro, você sempre pode mudar onde ler Eric. Então, se você tem um determinado voou em mente e você sempre pode mudar a ação de redirecionamento do dedo do pé e você pode até ver ler Eric dedo na ação em um controlador diferente, se desejar. Mas eu só vou modificar a área de captura. Além disso, coloque em que o erro de estado do modelo Onda retorna a exibição com os dados ligados. Então isso completaria a maior parte do que precisamos fazer para nossas ações. Então eu estou realmente indo para depurar e nós podemos testar. Certo, então nunca vamos conseguir ou editar os tipos de licença de página na madrugada estão em experiência. Nós vamos clicar nele. Então, se você olhar no canto inferior esquerdo, verá o link sendo gerado. Deixar tipos cortar-lo cortar um. Então esse desejo representa o i. D associado a esta regra, bem como que eu desvalorizo que vai ser passado no reboque. Nossa ação. Tudo bem, então eu só vou voltar para Click Edit e a expectativa é que o primeiro vai carregar com os dados para esse tipo de licença articular. Então, se eu mudar essa idéia no link em, digamos 10 então eu só tenho um registro. Obviamente não há tipo de licença com uma idéia de 10 e eu carrego enter. Depois acabamos com a flecha. Então é isso que não telefonou. Chamado de execução deles porque, Bem, ele procurou por um com 10 e não encontrou. E assim devolveu o telefone do mercado. Então, é claro que ele pode gerenciar melhor essa experiência, se você quiser, mas eu estou indo a sério e voltar para a visualização de edição com uma. Depois vou ver as férias. Estou mudando o nome de Vicky, filho. A licença de férias não são e, em seguida, eu cliquei, salvar as alterações em. Então ele vai para o poste. Envie as alterações para o banco de dados em, em seguida, se você notar a data de criação, foi redefinido. Então eu disse que iríamos estar sentando a data criada porque isso nunca deveria mudar. No entanto, porque ele veio e eu vou apenas colocar um ponto de interrupção sobre essa ação pós para que você possa ver exatamente o que está acontecendo. Eu vou colocá-lo nesta linha, tudo bem, tudo bem, então eu vou para editar novamente, e eu vou apenas ver se ela muda para que você possa ver exatamente o que está acontecendo com esse valor de data. Então, quando eu passar o mouse sobre o tipo de folha, você vê que os valores de data redefinindo porque eu não estou configurando-o no controlador, mas eu também não estou rastreando na edição. Então é algo que preciso de camionar. O que vou fazer é sair do barco ancorado. Então eu vou voltar para a vista para isso. Ele no DSO que eles foram criados é algo que eu não preciso exibir, mas eu preciso rastrear. Então eu vou tratar isso criado da mesma maneira que estou tratando o i d. Eu não preciso exibir o i d para o usuário. No entanto, eu preciso empilhá-lo fazendo isso durante uma edição. Então eu vou apenas duplicar esta linha, e então eu quero ver que eu quero um formulário escondido, hum, elementos para ele criado. Ok, então eu perdi umas férias, então eu vou deixar as férias sozinho para criar outra no Ben. Vamos ver exatamente como isso funciona, então eu vou voltar para o modo de depuração, criar uma nova vítima, deixar o tipo ativado, depois editá-lo, e então vemos que a data criada é rastreada. Tudo bem. Alguém para criar um e eu vou chamar esta licença por doença, e depois criar. Não, é editorialista, e vejo que tem um valor de data melhor criado. Vou editá-lo no dedo do pé, talvez tirar a palavra deixar ligada, e depois salvar as alterações. Então vamos atingir o ponto de ruptura. E quando eu passar o mouse sobre ele, você vai ver que ele criou valor é rotina. Então ainda sabemos o valor da data criada. Segundo nós. Vá em frente e continue. Vou remover o ponto de ruptura. Continue em frente. Então você vê que ele rotinia os dados. Então, sempre que você tem dados ou você tem algum objeto que você quer rotinar certos elementos fora porque fora da natureza fora do nosso modelo e ver relacionamento modelo e os pontos de dados, o que está sendo rastreado? O que não está sendo rastreado? Você sempre pode criar sentimentos ocultos que manterão os dados entre eles em servi-lo quando necessário. Então eu vou... Bem, precisamos definir nossos detalhes e deletar alguém com o dedo do pé. Bem, eu vou remover férias férias férias e eu vou criá-lo novamente em então deve ficar tudo bem depois disso se nós começar a editá-lo, então na próxima lição nós vamos definir os detalhes que você estava quando clicamos, serão levados a uma página que mostra apenas os detalhes sobre o que for necessário é que queremos nos concentrar. 19. Visualização de detalhes na configuração leave: Ei, pessoal. Neste Nissen será configuração ou visualização de detalhes em nosso modelo de gerenciamento de tipo de folha para configurar ou vista de detalhes. Só precisamos fazer algumas verificações. Quer verificar se o registro que estava solicitando detalhes realmente existe, então? Se isso acontecer, então prosseguimos para obter os dados. Renderizar a vista para que vamos começar em primeiro lugar fazendo uma declaração if se e eles vão chamar nosso objeto de relatório que existe. Então vamos verificar se ele existe, e então isso retornará. Verdadeiro se ele existe, eu quero retornar ou eu quero verificar. Se ele está indo Toe seguro também existe e ele espera um perímetro na forma de um inteiro. Então, estamos passando. O I D vai verificar se esse registro existe em tudo, ou se ele não existe, então nós só queremos retornar, não telefonado. Então vai refinar essa experiência mais tarde. Então, se isso não avaliar ou esta declaração peça não é executado do que o que queremos fazer é obter var tipo de licença vai ser igual a mais relatório ponto encontrar por I d. Então vamos encontrar esse tipo de licença particular por seu I d em. Então vamos criar outra variável. Chame de modelo neste. Vamos guardar as versões do esfregão ou ligar para a minha parte superior, não para esfregar. Então estamos limpando carne. Digite a classe de dados no reboque. Deixe o tipo V. M. Então eu digo para deixar o tipo V M ligado. Então estamos passando o objeto que está armazenando ou dita sobre. Então saiba que temos aquele modelo que conhecemos. Basta passar por cima da nossa vista. Então, o próximo passo seria para scuffled Esta vista com base neste tipo de folha VM nos baseou Alguns apenas visualizam indiretamente goto vista de anúncio. Escolha o modelo em, neste caso, queremos os detalhes sobre. Então vamos escolher a classe de água, que vai ser deixar o tipo V M ligado. Então tudo o resto pode ficar como está. E depois clicamos. Acrescente, então. Alô? É para gerar a vista. Tudo bem, então não, nossa visão é gerada e, como de costume, entenda, apague esta etiqueta 84 em sua nós podemos apenas dar uma olhada rápida no que está sendo exibido Então nós temos um BT e D abas Eso como de costume. Você sabe, nós podemos modificar isso, mas eu entendo a deixá-lo como o modelo padrão. Mas isso é o que temos como vista. Então nós temos um nome pacífico para em seguida, temos uma exibição para e se você notar, ele está usando Lambda Expressions passeios. Eu quero o nome de exibição do auxiliar HTML para a função que vai exibir o nome eo nome lá é realmente deixe-me encontrar o meu modelo. Então o nome lá que está falando é realmente nome de exibição. Então lembre-se o que dissemos que tributo para data criado onde dissemos que o nome deve ser batida espaço criado. Então o que este ajudante realmente faz é que ele diz me dar o nome que é especificado como o nome quatro para os atributos no modelo. Tudo bem, então nós estamos recebendo o nome de qualquer propriedade chamada nome que existe dentro ou deixar o tipo VM ativado . Mas então ele obtém o valor real. Então não é exibir o valor e dizemos display para então podemos realmente apenas embrulhar este bloco inteiro fora reserva leva dentro de qualquer coisa que queremos em uma tag P em um H um ou H cinco top. Seja o que for que eles querem fazer, podemos realmente apenas embrulhar todos os nossos HTML são propriedade thes helper tags para obter o tipo de conteúdo fora inteiro. Você queria olhar bem. Assim, da mesma forma que está recebendo o nome de exibição para e a data criada em. Em seguida, ele está exibindo o criador bit real e, em seguida, explodir. Vemos que temos um link assim em qualquer página e ele está passando meu modelo. Então nós sabemos que uma vez que estávamos clicando nele, ele está esperando toe ter um valor para o i. D. Então nós estamos passando mais modelo essa idéia como um parâmetro em. Em seguida, ele também tem um botão apenas para voltar para o índice, que é rotulado como volta para a lista. Então eu vou rapidamente executar isso e podemos dar uma olhada no discurso de detalhes. Tudo bem, então da nossa página de índice, eu vou apenas clicar em detalhes e então nós vamos vê-lo navega para os detalhes do item com o I D para, e é assim que o discurso de detalhes se parece. Então o nome nele é doente e, em seguida, data criou seu espaço criado porque ele está exibindo o nome em que bit off detalhes para que eu possa ver que é uma coisa muito simples. É muito , simplista, como acabei de dizer, mas podemos modificá-lo como desejarmos. Se eu clicar em editar, ele será redirecionado para o tom de edição. Vacillate de volta à lista. Volta ao índice. Portanto, é sempre uma boa regra seguir ao projetar uma página web onde você pode chegar a qualquer página de quase qualquer outra. PH. É uma boa regra de ouro, tudo bem, então só pelo andaime fora das vistas, percebemos que eles estão nos ajudando com essa regra. Onde se eu estiver na página de edição em, eu quero voltar para Index. Eu não tenho necessariamente que vir aqui e levar isso de novo. Mas há uma ligação certa. Estão acessíveis para voltar à lista. Se eu estiver no discurso detalhes sobre, Eu quero editá-lo ou voltar para a lista, eu posso fazer qualquer um, então é uma boa regra dedo. Siga em frente, então, a partir do discurso do índice, eu posso sempre apenas ir para criar um novo Então é isso para não em nosso discurso de detalhes. A próxima coisa que vamos fazer é trabalhar em nossas funções de exclusão. 20. Função de order Leave: Pessoal, Pessoal, neste Ouçam, vamos configurar as ações de exclusão no nosso controlador. Não, por padrão ou código gerado pelo controlador. Dê-nos para apagar ações. Temos um que tem acesso e outro que atua como o posto. Então, praticamente como obter é mais como ele vai nos dar uma tela de confirmação. Tem certeza de que deseja excluir o registro que você acabou de clicar em excluir e que vai nos dar como um sim ou não? Se escolhermos sim, então é misc elegante. Aja como uma forma. Envie em, então as expectativas de que o passemos para a postagem em e, em seguida, execute a exclusão nessa ação do host. Pessoas diferentes abordam a exclusão de forma diferente. Algumas pessoas praticam o que chamam de exclusão suave, onde não removem o registro do banco de dados. Eles colocaram isso em um estado fora em atividade que levaria um pouco mais de personalização do nosso tribunal. Andi, algumas pessoas simplesmente apagam. Então agora, eu só vou fazer a exclusão de base à medida que um projeto se expande. Então talvez vejamos a necessidade de fazer uma elite suave em vez disso fora. Dificilmente assim para não, eu só vou definir a exibição para a ação de exclusão para obter ação, e então eu vou configurar a lógica para o pós-processamento. Então agora você já teria feito tanto o criador quanto a exclusão, então você estará familiarizado com o get on the post. Então, se você der uma olhada no que é esperado, parece muito semelhante ao que fizemos com o nosso feito. E é tão literalmente apenas indo para copiar tudo o que fizemos para a edição em. Só vou colá-lo dentro da deletar. Então, estamos verificando se o registro que está sendo passado existe em apenas remover essa linha extra . Se não existir e retornamos o erro de telefone não se existirem, que significa que esta instrução não foi executada. Ele foi ignorado. Então queremos que o encontremos por mim. Então queremos que devolva os dados. Então, nossas visualizações Eu sou apenas contratado vista em goto vista de anúncio e, em seguida, este tempo ou modelo é excluir. Então eles têm um modelo para a elite. Como de costume sobre os dados estão nossas classes de modelo deixar o tipo VM ativado. Em seguida, clique em Adicionar são para que a vista que temos parece muito semelhante. Tore excluir vista Compreender para remover que H para tag assim que obtemos excluir e ele nos dá uma mensagem. Muito certo que você deseja excluir isso fora do curso. Podemos mudar o texto como assim desejamos. Então ele nos dá os detalhes de qualquer registro que está prestes a ser removido, e então eles nos dão alguma forma onde ele está procurando a opção. Excluir. Ele tem o elemento oculto para o i. D. fora do registro que está sendo exibido em. Então está vendo Você quer se submeter? Então diz “apagar”. Eu só vou dizer Value Leader registros que estão mudando o texto no botão em seu já Bt e perigo, que é um botão vermelho. Então este torná-lo Bt e traço bloco como de costume em, então nós temos um dólar para listar. Então, se você pegar esse fogo e então você olhar para ele, algum remorso sobre o fato de que você está deletando, então você sempre pode apenas pensar de volta para a lista e voltar para a lista se você mudar idéia. Então eu sei que nós preparamos o “get” para a vista. Não, precisamos configurar a lógica por trás da execução das exclusões. Eu só quero pegar o cabo emprestado de nossas ações postais existentes porque você percebe que estamos fazendo um monte de coisas. É o mesmo padrão. Realmente. Então, em primeiro lugar, vou pegar o modelo. Bem, na verdade não vou pegar o modelo porque na verdade , na verdade, é só passar por mim, então notar ou forma nesta situação é apenas passar adiante . são os únicos dados que podemos esperar do formulário que está sendo que está chamando nosso post http. Então, no anfitrião de elite, eu realmente vou ter em idee. Não vou passar por nenhum modelo. Então, para que o modelo seja passado, eu teria que passar por cima realmente preencher este formulário com todos os elementos fora, como o que teríamos visto no Criador e no formulário de edição. Onda, não precisamos fazer isso. Só precisamos da ideia. Então, vou mostrar-lhe tudo com apenas a idéia de novo, ainda operar. Então, na exclusão, passamos no i D. Mas então está me dando um erro. Oh, sim. Então, esta área é porque parecia que já existe uma função Resultados Ação excluir. Não posso aceitar um perímetro na minha conta de uma função mãe do mar e do tipo de retorno. Mesmo nome com o mesmo permitido. Então eu entendo, dedo do pé colocado no modelo. Mas isso não tem sucesso. Esta é apenas a distinção entre a ação post delete no get delete. Tudo bem, então o que vai acontecer aqui é que eu vou ver Bem, o modelo vai estar vazio de qualquer maneira, então isso não faz muito sobre nós estamos esperando pelo menos o I.D. I.D. então saiba que Eu tenho a ideia. A primeira coisa que preciso encontrar é a entidade. Então eu vou salvar nosso tipo de licença é igual a Andi. Relatório. Objeto ancorado. Encontrar por i d. Porque assumiu onde eu posso realmente identificá-lo no banco de dados no DSO Não, esta é a entidade que eu vou ser o líder. Então a próxima coisa que eu vou fazer é que eu vou salvar Ire é o sucesso é igual a sublinhar re puxar pontos. E então tivemos uma função delete que está esperando na entidade perímetro off tipo licença , que é incorporada pelos resultados retornados por encontrar por I d estão em. Em seguida, colocamos na chamada de função, então podemos fazer nossa estima e ver se ele foi excluído com sucesso. E eu vou pegar emprestado um depoimento de um bloco existente. Então, se não foi bem sucedido do que retornar, colocar em uma área no estado do modelo, nós realmente não precisamos sequer colocar em um ar no estado do modelo. Realmente? Porque não estamos validando o estado modelo já que tudo o que estamos recebendo de volta é a idéia. De qualquer forma, em não há nenhum resumo de validação riel sendo colocado em qualquer lugar aqui. Então, se ele não foi excluído com sucesso, então nós apenas retornamos a exibição com o modelo. Caso contrário, redirecionamos para o nosso índice. Eu também sou aprendido a verificar se este eu d ou o registro existe, então eu vou ver ter obtido tipo licença, eu vou colocar em uma declaração if em, digamos, digamos, licença se tipo de licença é equivalente a saber. Certo, então isso significa que ele pegou um I.D. I.D. que procurou. Então nada foi devolvido, então isso ainda está vazio. Então voltamos, não telefonamos. Então é uma coisa semelhante ao que temos feito até agora. É um pouco diferente por causa do chão fora. Todo estava sentado gravando o quê? Em última análise, é o mesmo efeito líquido. Então você sabe que há várias maneiras de montar o tribunal e situacional. Você pode ter que escrever de forma diferente. Então esta é uma saída. Implementando eu excluir outra maneira que você pode implementar uma exclusão é fazendo tudo em apenas um get ação. Então, quando a pessoa clica, exclui, então nós apenas fazer o olhar para cima dentro fora do get fazer a exclusão e, em seguida, redirecionar Então nós realmente não teríamos ah vista de confirmação. Mas nós apenas temos em ação que ações a exclusão e, em seguida, redireciona o índice. Mas é claro que você quer colocar em seus cheques para ter certeza de que essa pessoa está absolutamente certa de que está tentando excluir esse registro. Você quer ter certeza de que você está colocando em ofensiva em paz fora de qualquer erro de usuário. Tudo bem, então vamos verificar e ver como isso funciona e eu estou indo para o pé. Bem, se houver um erro no try catch, então eu vou retornar a exibição com o modelo. Além disso, de repente, basta colocar isso. E então eu fui para depurar mais do que vamos testar o calor. Tudo bem, então estamos no Index e estamos testando sobre a função de exclusão. Então as férias deixam esse tipo de bagunçado porque o grande valor criado não faz nenhum sentido. Toquem-nos como seres humanos. Então eu vou excluir este, e então eu vou criá-lo novamente. Então eu vou clicar, excluir, e então ele vai trazer a tela de confirmação. Lá vamos nós. Então está nos mostrando os detalhes. Tem certeza de que deseja excluir isso em seguida, o grande botão vermelho que diz Excluir registro ou prestes a Liston? Mais uma vez, nós vamos consertar todas essas estéticas, mas por nenhuma vontade apenas como levar a gravar em. Em seguida, ele redireciona o índice, tendo removido o registro dos dados, ser bem-sucedido. Então eu só vou entrar em uma multidão cheia para que possamos ter certeza de que tudo funciona. Então eu vou criar um novo foram um cartão em. Eu fui para o Recriar férias férias férias férias e então eu digo, Criar em. Então vemos que estamos recebendo um sensato seja para o nosso registro de férias. Eu também vou fazer ou editar doente porque ele deve dizer licença por doença e não apenas seis alguém para dizer licença por doença e, em seguida, salvar mudanças em. Em seguida, verificamos se nossa função de edição funciona se clicarmos nos detalhes e eu estou apenas clicando no meio , então ele abre detalhes em duas guias diferentes. Então estamos vendo os detalhes da licença médica, e estamos vendo os detalhes da licença de férias. Por isso, temos a certeza de que os detalhes funcionam. Então nós apenas verificamos que a exclusão funciona. Agora eu vou modificar nossa funcionalidade de exclusão um pouco, e eu vou levar toda a necessidade para ir para o campo de confirmação e, em seguida, excluir novamente. O que vou fazer é colocar uma pequena mensagem de confirmação. Então, se a pessoa clicar nos leads, eles vão ver nosso pop up perguntando a eles. Eles têm certeza em Então, se eles clicar sim, então ele prossegue. Se eles clicarem em não, então nada acontece. Mas não teria dedo do pé navegador um todo outro p apenas a camisa Ascari se você está pronto para excluir. Então eu quero voltar ao meu acordo sobre Eu ainda estou no modo de depuração. Não vou sair mais do desmascaramento. Vou para a minha vista de índice. Então eu encontrar Índice e, em seguida, eu vou modificar o comportamento do meu botão excluir. Então, dentro do tio alternar para excluir, eu vou colocar em um script Java uma função chamada no clique. Então esse é um evento tão obscuro. Ecbc. Eu queria fazer algumas coisas que eu digo em Click is Equal toe E então eu só, como, inserir algum código JavaScript dentro dessas aspas para que ele vai fazer algo quando é clicado. Então, quando ele faz isso eu queria voltar e, em seguida, eu fui para ver confirmar em então. Isto é o que vai mostrar a caixa do papai, então confirme que vai invocar uma caixa pop-up. Mas depois quero uma mensagem dentro da caixa de bolhas que vou definir. Tem certeza que está? Você deseja começar a excluir este registro. Então estamos perguntando ao usuário Tem certeza de que deseja excluir esse registro? É quando eles clicam. Excluir. É pedir isso aí mesmo no Peach. Tudo bem, então isso é mudança. Número um, as segundas cadeias, eu vou ter que sair do modo de depuração porque não, eu vou mudar o comportamento de nossas ações, alguém para fazer tudo dentro do jogo. Vou acabar com a vista de retorno e, em seguida, confirmar, então eu vou sair do livro mais do que fez essas mudanças. Agora, nós já vimos isso apenas com a idéia. Podemos realmente obter o registro que queremos e manipulado como quisermos. Então, literalmente. Todo o núcleo que é colocado neste desta função http post poderia ter sido colocado dentro fora do get. Então, o que eu quero fazer é tirar tudo isso onde eu encontrar meu eu d em. Então eu verifico se não está ligado. Então eu tentei apagar, e então eu redirecionei, eu vou tirar todo este tribunal, na verdade, verdade, apenas substituir o que já está escrito lá dentro por aquele tribunal. Então, quando eu clicar no botão excluir, ele vai acertar essa ação. Ele sabe que a idéia vai encontrá-lo por I D. Ele vai verificar se ele é pequeno em retorno um 404 Se ele está em então vai ver eu quero tentar e excluir e, em seguida, vamos verificar se ele foi bem sucedido. Se não foi bem sucedido, então não há nenhuma visão de que eu estou voltando. Em vez disso, posso devolver uma dessas funções embutidas. Então estou voltando, não telefonei. Aqui. Eu vou devolver algo como pedidos ruins, que é uma flecha de 500 que é, você sabe, muito popular quando algo dá errado. Então, vou devolver o nosso corpo solicitado. Então, se você está tentando deletá-lo e algo deu errado, então nós recebemos o pedido de corpo. Então redirecionamos o índice. Então, fazendo essas alterações, eu posso realmente simplesmente excluir isso Se eu quiser o que eu quero deixá-lo lá, eu não quero removê-lo ao ir para o modo de depuração e testar esta nova funcionalidade de exclusão . Então, para testar o pensamento de ir para criar Ah, aleatório um número vai chamar este um teste em criar em então vamos testar se podemos excluí-lo de uma só vez. Então, quando eu tratar as pistas, temos o nosso pop up. Tem certeza de que deseja excluir esse registro? Então essa é a caixa de diálogo de confirmação sendo acionada pelo nosso código JavaScript em. Em seguida, eu clico em OK. Então ele vai agir e redirecionar, então é quase como se nada tivesse acontecido. Mas o registro não está faltando, então não são as páginas que são muitas. atualização do registro desapareceu, e mesmo que eu atualize você perceba, onde está o banco de dados novamente? Nele não volta. Então essa é uma maneira agradável e limpa de fazer uma exclusão sem ir para uma outra página inteira. Só para fazer a pergunta, tem certeza que quer fazer isso com isso? Concluímos nossas operações de multidão nos próximos vídeos. Vamos modificar a aparência e a sensação que vamos mudar. Segure os detalhes da edição e exclua os links. Olhe, modificando todo ou exibições. Não, só alguns ajustes. Basta torná-lo um pouco mais atraente para baixo. Vamos terminar com a estética, e então vamos verificar as nossas mudanças para ter conversa 21. Adicione a tabela de dados com fonte e ícones de ted awesome: Ei, pessoal, bem-vindos de volta a outra lição nesta sessão. Vamos implementar umas oito notas para a nossa página de índice. Estaremos implementando alguns ícones. Você sabe, basta adicionar um pouco mais de estilo nas nossas páginas Até agora, apenas para rever o trabalho que fizemos até agora, nós concluímos as operações de multidão para nossos tipos de folhas. Temos feito sobre página de índice onde listamos todos os tipos de folha atualmente no banco de dados . Nós criamos nossa forma de criar e entender toe abrir cada um em seu próprio topo. Fizemos nossa exclusão ou detalhes sobre o nosso. Então temos a nossa forma de criar, simples, mas elegante. Onde quer que edite formulário em. Nós também pode ver os detalhes e vemos que podemos clicar em Excluir em Será que ele vai nos prometer . Temos certeza? E, em seguida, se clicarmos em OK, em seguida, a exclusão vai realmente acontecer. Então, se completa multidão agora o que queremos fazer neste Tu Toro é mudar a forma como o olhar e sentir fora da mesa. Então você vê a mesa. É estática, é literalmente apenas na tabela html. Se houver 100 registros e parece simples. Não, porque só há dois. Se houvesse 10 você provavelmente chegaria a meio caminho da página se houvesse 100 você acabaria rolando. Então vamos implementar oito por mesa. Nós somos o número fora do registro. Bem, a tabela de dados vai realmente transformar a apresentação fora dos registros dando-nos chamada . Além disso, a pesquisa não implementará uma pesquisa. Não, vamos colocar a tabela de dados e depois podemos refiná-la à medida que avançamos. Mas pelo menos teremos a tabela de dados lá para que quando mais registros começarem a entrar, estamos fazendo difícil de nos preocupar que a dica vai continuar adicionando regras e que terá que rolar. Eventualmente, Body irá adicionar em paginação para que ele vai mostrar talvez 10 registros no primeiro discurso e então nós temos que ir para o segundo pago para os próximos 10 etcetera, etc. Também vamos adicionar alguns estilos aos nossos links a c criar novos. É só uma ligação para a cama. Editar detalhes, liderar. Eles são tudo que você sabe, jogar links será adicionar alguns estilos e também importar alguns ícones em nosso aplicativo para adicionar um pouco mais de estilo ao visual e sentir. - Não. Antes de começar todas essasatividades maravilhosas e excitantes, atividades maravilhosas e excitantes, eu só quero voltar para o estúdio visual no ponto, algo bem rápido. Então antes eu teria mencionado que, você sabe, quando no modo de depuração, se você fizer uma alteração na página original, então as alterações seriam refletidas. Se você apenas atualizar, você pode não ter essa experiência, e você teria ativado o link do navegador em Ainda não teve essa experiência. Então estúdio visual realmente faz a coisa da escola onde um ele realmente hospeda o site em um. Em uma versão muito pequena fora serviços de informação da Internet são s como expressa nele permite que você realmente lançador aplicativo independente off o barco, humor em fazer mudanças e atualizar e vê-los. Então, por exemplo, eu não estou no modo de depuração agora, mas eu vou para o meu irmão e iniciar o aplicativo em. Eu posso ir em frente e clicar em criar novo em você ver que o pH mudou. Vou colocar em um tipo de teste clique criar no aplicativo que foi criado. Então eu estou fazendo tudo isso independente modo off depuração saber que a desvantagem para isso é se eu definir um ponto de interrupção, então ele não será capaz de parar no meio fora do processo e realmente me permitir ver as variáveis e realmente desmascarar o aplicação. Então você sabe, quando estamos fazendo talvez mudanças de design, você sabe, usuário interfere mudanças, então esse método provavelmente seria mais rápido onde, especialmente se você tiver dois monitores, você Ter os irmãos de um lado, qualquer um do tribunal do outro lado. Você fez a mudança sua atualização. Você vê exatamente o que está acontecendo quando você está fazendo outras modificações, a corte e a lógica, e você quer realmente depurar o acorde nítido C. Então você provavelmente quer fazê-lo no modo de depuração, então você tem que meus pensamentos. Você pode usá-los como quiser. Então, para esta sessão, vamos usar a versão Broza Link off depuração em. Vamos apenas fazer algumas alterações visuais em nós apenas bones entre estúdio visual em nossa aplicação no navegador. Agora, com tudo isso dito, vamos entrar no telefone. Então eu estou em um site tabelas de dados dot net on. Você pode ver que é uma ganância interativa avançada. E aqui está um exemplo do que você pode esperar uma vez que você implementá-lo em, ele é gratuito. As instruções para começar estão à esquerda. Eles dizem que você precisa incluir dois arquivos, um para CSS e um para G s. Agora, se você olhar para eles, você percebe que eles são realmente links da Web. Se eu apenas clicar no CSS na cópia e se eu abrir uma nova guia e colar, então você percebe que um arquivo aparece no irmão. Então, estes são o quê? Porque CD e links CD e segurado para rede de entrega de conteúdo sobre o que as pessoas fazem é em vez fora, exigindo que você não carregar o arquivo CSS rígido como, Oh, nós temos o arquivo CSS bootstrap em nosso aplicativo, por exemplo. E outros vão lá, garantir o quê? Quero dizer, então em w w nós temos o CSS Desculpe. Em lib, temos o bootstrap em um CSS indistinto, e temos o fogo real aqui. Então, em vez de exigir que nós temos o arquivo físico na máquina, o que eles fazem é hospedá-lo na Internet e eu perdi apenas incorporar o cabo através de sua hospedagem Então, mais uma vez, o primeiro passo é toe incorporar são incluir o CSS ou o link para o arquivo CSS em nosso tribunal. Alguns querem voltar para o estúdio visual em busca de hora em hora, página antiga. Então eu vou para baixo para visualizações compartilhadas em layout aberto em então, em nossa página Leo, encontramos a era em que os arquivos CSS foram incluídos em algum lugar para incluí-lo sob as bootstraps. Então eu disse isso antes que a ordem importa quando você está incluindo CSS e JavaScript arquivados. Então você garante que, você sabe, bootstrap está provavelmente no topo porque muitas coisas herdam um monte de outros frameworks herda de bootstraps. CSS. Então eu só fiz o controle de sobre duplicado o arquivo em. Então eu só vou substituir o bootstrap do pé do ar treff com CD e link. Então, o que isso faz é quando a página Leo renderiza ela incluirá a referência ao fogo CSS que acabamos de ver através do nosso navegador. Então eles também dizem que temos que incluir um Js arquivos no vegetate este link Js e então eu fui fazer uma operação semelhante onde eu vou descer para a seção JavaScript em. Vou duplicar esta linha com as alças de bota. Mais uma vez, vou colocar depois do Jake onde vou colocar depois do bootstrap. Então eu vou apenas substituir este link pelo CD e Link. Sei que as incluímos. A próxima diretiva é chamar uma única função, então vamos ter que escrever algum JavaScript para obter esta placa de função. Então eu vou apenas copiar este barco, voltar para o nosso estúdio visual e ir para o nosso índice porque o nosso discurso de índice tem a tabela que gostaríamos de transformar na tabela de dados. E só como um lembrete, vou voltar para a candidatura. E esta é a dica de que estou falando. Então esta tabela precisa ser algo mais parecido com esta demonstração que estamos vendo aqui. Então eu vou incluir eu referência a esse snippet JavaScript. Mas a primeira coisa que eu vou fazer é dar em i d. Então eu vou dizer I d. E se você está familiarizado com cada semelhante, então você sabe que uma idéia é como uma identificação única onde para qualquer elemento HTML alguém Digamos que eu d é igual a E eu só vou chamar este encontro de uma colher de sopa. Então, depois de rotular nossa tabela com os dados i d tbl estavam indo apenas para ir para a parte inferior da página. E vamos criar uma seção para os scripts. - Não. Em nossa página de layout, você notará que, você sabe, abaixo de toda a inclusão fora de todos os arquivos de script, temos uma seção onde vemos renderizar scripts de seção. Então isso nos permite entrar no Stan. Ela comeu uma seção onde podemos colocar JavaScript em tribunal, se necessário. Então, para fazer isso, eu vou dizer na seção de sinais, e então eu vou ter que especificar o nome, que é scripts. Então, se olharmos para trás, são roteiros de nomes e então abrimos roupas, aparelhos dentro desses aparelhos. Não, os direitos de fim de semana são JavaScript. Então eu entendo abrir uma seção de script e então eu vou acelerar o cabo vindo do site. Então eu estou indo apenas para corrigir a formatação um pouco aqui para que ele está lá agora, dentro desta consulta g A. Então este é Jake se preocupar dentro deste bloco, O que ele está fazendo é ver que eu estou procurando um elemento com o i d. Então que hashtag e Jake ou er em JavaScript em geral realmente significa em íntimo com que eu d. E então o que vier depois da hashtag é o que ele está procurando. Então, porque esta tabela de dados TBL é o que eu quero converter para a tabela de dados, eu vou ter certeza de que eu vejo hashtag TBT l dados não tabela de dados. Então isso está chamando nossa função, e esta função é telefonada dentro de nosso arquivo que somos tabelas de dados longe que tínhamos acabado de incluir. Lá vamos nós. Então, o perigo fora, incluindo esta referência depois que estamos chamando nosso Jake ou registro, é que ele vai dar uma enfermagem e encontrar disfunção porque mais uma vez, seqüência importa. Então, uma vez que tenhamos feito todas essas atividades, queremos vê-lo para que você possa ver que uma vez que uma família veja se tem um asterisco, eles podem ver se você pode construir se quiser. Eu só vou usar a mudança de controle e s e o que isso faz é que parece que todas as mudanças, então, todos os fatos que você tem aberto na nossa mudança de controle não salva em vão salvar todos eles porque estamos mudando o cliente enfrentando o tribunal, significa javascript em HTML, não temos que construir. Então, se você fizer c mudanças bruscas, então você tem que construir para ter certeza de que todos sabem o que está acontecendo. Se você está apenas fazendo alterações visuais, então salvar é OK. Mas agora eu vou voltar para o nosso aplicativo, e então eu vou atualizar, e isso pode demorar um pouco depois da atualização. Então você deveria estar vendo algo parecido com isso. Se você não está vendo algo parecido com isso, então você provavelmente tem algumas referências ausentes são algumas referências extraviadas que podem sempre clicar com o botão direito, ir para inspecionar. E então eu estou esperando que você provavelmente está usando cruel mais foi a maioria dos navegadores modernos têm o console de qualquer maneira, em seguida, o conselho provavelmente estaria mostrando um monte de erros em destaque em vermelho. Então, se você está recebendo esses erros, ele pode compartilhá-los comigo, e eu posso ajudá-lo com eles. Se você não está recebendo quaisquer erros e você tem um console limpo como eu faço e concordou ser exibido como deveria. Então você está no caminhão certo. Você sabe o que esta ganância permite que você faça é enquanto você pode apenas começar por D criado tudo bem, quase sem esforço. Comece por nomes como muitas colunas como você tem que você pode. Ele vem por padrão com partida. Ele vem com paginação. Como eu disse, só tenho três registros e diz que mostram 10 ferimentos. Então, se eu tivesse 20 anos, teria uma idade que a página dois. A Andi. Eu posso até mudar um número fora dos registros que eu pretendo que nós gostaríamos de ver no primeiro pêssego, certo? Então é um muito É uma maneira muito agradável de apenas obter uma agradável mesa interativa no dia, até mesmo incluir um pequeno recurso de pesquisa. Mas você tem que trabalhar um pouco mais para conseguir isso. Oh, eles são reais. Funciona logo fora da caixa. Funciona. Então, mesmo quando estamos olhando para a lista de funcionários, você sabe que você pode simplesmente clicar em pesquisar, encontrar o que você quer. Então isso é um bom nós fora configurar bater uma grade Andi que vamos passar para a próxima atividade . Saiba onde tornamos nossos botões um pouco mais atraentes. Então saiba que estou farto das tabelas de dados. Vou fechar esta conta. Então eu tenho para outros tipos disponíveis ou aberto para mim. Então nós vamos estar usando fundos incríveis para tipo de trazer um pouco de vida para a nossa aplicação com alguns ícones. Certo? Então eu tenho que fazer o máximo aqui. Eu tenho um, que é bootstrap cdn dot com barra fundo. Incrível em eu tenho outro que é divertido. Incrível ponto com barra o ícone 4.7 pontos ou barra. Então eu quero explicar exatamente o que eu estou fazendo dentro, e eu vou começar com aquele com o ícone Tão divertido. Incrível fornece, você sabe, ícones agradáveis e limpos que podemos apenas incorporar macho questão reta. Tudo o que precisamos é de um arquivo CSS, e então podemos apenas incorporar ícone Então um sinal de adição para o anúncio, talvez lápis olhando ícone para ele. Seja qual for o propósito, eles têm um ícone para quase todas as situações. O site é agradável e limpo, mas então você vai ver onde eles estão pedindo que você atualize para a versão cinco. Então, estou no quatro. Dwell by para ser específico 4.7 porque com 4.7 é a versão mais recente que quatro tiveram para oferecer e versão quatro é muito mais fácil de resolver fora da caixa do que a versão fogo. Então eu vou ficar com 4.7. Ah, muito fora aplicativos modernos ainda usam 4.7, e eles ainda têm bons ícones que podemos usar por algum tempo. Então estamos usando. Mais uma vez, 4.7 nos ícones são como listados. Andi, quer dizer, quase para qualquer ocasião você tem uma Nikon, se quiser. Eu conduzo sugere e-mail. Eles dão seu envelope se você quiser algo para o banco de dados. Se você quer algo para obter informações, eles têm ícones para quase tudo. E se você tem uma idéia em mente, você não conhece necessariamente o barco ícone. Você tem uma idéia que você sempre pode pesquisar. Mais do que provavelmente o nome do ícone é o que você está pensando, então você sempre pode filtrar com bastante facilidade. Então, como eu disse, nós realmente só precisamos de um arquivo CSS para usar a fonte. Incrível. Andi, eles te dão o arquivo CSS para baixar. Você pode realmente obter o arquivo CSS através do site, mas, em seguida, se você apenas fundo Google Awesome 4.7 CD e, em seguida, você ser levado a decidir bootstrap CD em On, eles lhe dão o link Cdn que eles estão hospedando para que possamos apenas usar o Cdn em vez de obter um arquivo físico e tentar incorporá-lo em nossos aplicativos. Então eles dizem, Tudo o que você tem a fazer é clicar nesta seção e ela é copiada para a área de transferência em. Então eu vou deixar a gerência, voltar para o meu Leo ou Paige. Então eu estou adicionando um novo CSS para alguém do pé neste aqui sob todas as outras referências. Então eu só fiz controle ser duplicado essa linha para o arquivo CSS tabela de dados. E então eu estou substituindo esse link com este CD em. Então, assim como com o exemplo de tabelas de dados, se eu disser que Cdn Lincoln ritmo no navegador e bro para ele, então você verá que é apenas um grande arquivo CSS. E a razão pela qual este arquivo CSS parece tão confuso e complicado se você ainda não sabe é que é o que você chama de homens. Se eu assim unificação é realmente tirar todos os espaços brancos todos fora do você realmente divertido personagens e era espécies e linhas de freio. Para mim. O arquivo em tamanho menor porque um computador gosta dele assim. Parece confuso para computadores humanos. Absolutamente nenhum problema em ler isso. Tudo bem, então é apenas um monte de estrelas e estilo de comer praticamente nos dá no ícone, então ele precisa referenciar a estrela ícone que nós gostamos. Então podemos incorporá-lo em nossa idade, então eu vou voltar, tendo incluído a folha de estilo em. Então podemos voltar para a página de índice em. Podemos fazer algumas mudanças. Dedo são ligações. Então vamos começar com nossos links de criação. Então eu tenho um tio puxando para apenas adicionar algumas aulas a ele. Então é uma etiqueta de tio de avião. E quando eu digo classe igual, você vê que a inteligência está dando a você, ah todo host off classes bootstrap que estão disponíveis. Então primeiro vou fazer com que pareça um botão. Então eu só vou dizer Bt e assim bootstrap segue. Faça um link. Um Tio Tug normal parecia um botão, então eu disse btm em então eu queria ser um laço azul, Alguém para dizer BT e Dash Primary. Tudo bem, mas então eu quero um sinal de mais, então vai parecer um botão azul que diz “criar”. Mas então eu quero, tipo, tipo, um sinal de mais antes que as palavras criem novo. Então eu quero ir para financiar o Incrível. Então eu vou procurar e ver se eles têm algum sinal de mais em você vê que eles têm mais e para cima círculo próximo e eles têm diferentes variações fora de um mais são o que? Eu vou com um simples. Então eu vou clicar sobre isso em seguida. O que eles fazem é me dar o tribunal de incorporação, então eu não posso. Se você pode ver alguém ampliando um pouco hoje você provavelmente pode ver o cabo um pouco melhor, então eu posso realmente apenas copiar este bloco fora do texto. Volte para o meu cordão e coloque-o dentro do ANC no topo. Então, temos o puxão de âncora. Então temos o texto a ser exibido dentro da etiqueta do tornozelo no fechamento, alguém para colocá-lo dentro da área de texto. A etiqueta do tornozelo não tem esse puxão, que faz referência à Effie em FA Plus. Então essas aulas estão vindo de lá. CSS Pai, nós apenas incluído para se divertir. Incrível, certo? Então f A e F A plus on. Então temos criar novo em algum lugar. Fique de pé para colocar o espaço entre o ícone Andi ou palavras criar novo. E então eu fui para a mudança de controle para ver o layout ajustáveis desculpas no discurso de índice sobre isso, eu vou voltar para o meu aplicativo e apenas atualizar para ver as mudanças. Está bem? E isso é um começo. Então temos índice e criamos nova Andi. Na verdade, quero mudar o texto. Índice vai Índice não me diz qual página? Amã. Sim, eu sei que é índice, mas vamos ter muitas páginas de índice. Eles provavelmente querem ser alguém específico para mudar as varas. Isso é uma pequena mudança, mas o objetivo do rial aqui era fazer com que o botão parecesse um pouco mais. Você sabe, o pop um pouco mais. Então temos que criá-lo em. Temos aquele pequeno sinal de mais lá. Então eu vou fazer as mesmas alterações para qualquer exclusão, exclusão e detalhes. Então, voltando para o meu cordão. Em primeiro lugar, permitam-me mudar em tipos de licença extra e provavelmente colocar como um cada são. Então isso é abreviação de regras horizontais. Isso coloca uma pequena linha lá em você sabe, um pouco de separação e, em seguida, temos ou criar botão e, em seguida, eu posso rolar e, em seguida, temos ou editar em excluir e detalhes. Então, primeiro, eles vão copiar a aula. A diretriz de classe. Isso significa que o botão que o link parece um botão. Então, eu só vou acelerar isso em cada um em então, com base na operação, podemos mudar a cor. Então, sim, primário. Mas então talvez eu vá colocar um aviso porque eu quero que Eddie seja laranja. Quero detalhes. Talvez para ser um sucesso. Verde. Tudo bem, na verdade, eu vou virar. Eu vou embora, bater-nos nas primárias, e depois vou mudar, criar sucesso no dedo do pé. Então criar vai ser um botão verde com um sinal de mais, e vai ser detalhes de aviso. Este primário e deletar será um perigo, o que seria um botão vermelho. Então, se eu quero dizer essas mudanças rapidamente, economizar em apenas fazer um rápido re fresco apenas para ver o que está acontecendo. Que deveríamos vê-los mais parecendo botões. Tudo bem, lá vamos nós. Então temos qualquer detalhes excluir sob verde criar botão que na textura em Behar em regras. Então, você sabe, quero dizer, este é o meu pequeno estilo. Isto sou eu a manter isto simples. Você pode ter outras idéias, então, à medida que você evoluir, então você pode personalizar seu aplicativo e usar suas próprias cores como quiser. Mas se você entende o que está acontecendo até agora, então você está no caminho certo. Então, para editar, vou usar um lápis em algum lugar para voltar a financiar. Incrível em. Então vou procurar algo como um lápis. Talvez se eu digitar a palavra, eles teriam algo para mim. Tudo bem. Então eu só digitei a palavra editar, e eles me deram um monte de ícones que sugerem edição. Então eu vou usar um lápis simples. Então este lápis de uso, eu posso clicar nele. Eu tenho o mesmo contato visual com uma turma diferente desta vez. Um para o lápis. Andi, eu estou indo para o pé. Adicione isso ao botão de edição estão ativados, em seguida, para obter detalhes. Vou usar um na íntegra. Eu posso. Então eu volto, então eu só vejo em quatro. Então eu só procuro em quatro. Então eles me dão informações. Então, quero dizer, você pode ir e voltar, para frente e para trás e rápido e copiar e colar. Ou você pode apenas perceber que qualquer que seja o nome que eles estão dando a você que é basicamente o nome da classe. Então eu sei essa informação se eu quiser isso simples em quatro. Vamos eu quero informações, mesa, círculo. Então, para entrar na frente, afirme que pode reutilizar o mesmo Doug em que tenho a Effie. Então eu tenho Effie Dash em quatro círculos de traço. Tudo bem. No círculo Espo, Circle incorretamente. Tudo bem. Em seguida, para o perigo. Vou apenas inserir, surfar ou apagar. Eu vou inserir outra hora, e eu acho que para excluir são eu acho que eles têm um ícone chamado lixo. Se não o fizerem, então deixamos o dedo do pé. Reverter. Confirmado que também vou levar todas essas barras. Então, as barras, deixe-me ir boxe. Você pode ver o que eu quero dizer com as barras. Estas são as barras. Essas linhas são tubulações que algumas pessoas chamam de impacto. Então eu estou tirando isso do visor. Então temos detalhes de edição em cada um, tem seu ícone tudo em um espaço em. Então eu economizo. Então eu vou voltar e vamos verificar se o que estamos fazendo está funcionando. Tudo bem, então vemos aqui que a edição tem um lápis detalhes como que eu chamo e apago tem o lixo . Tudo bem. Mas então, eu não sei, talvez os botões pareçam um pouco palavrões para mim. Então eu acho que um uso típico se eles vêem o lápis e a laranja, eles provavelmente vão deduzir que isso é para ele. Se eles vêem apenas o eu provavelmente implica que eles vêem mais informações. E se eles virem o lixo, isso implica excluir, especialmente dada a codificação de cores de cada botão. Então eu só vou modificar a medicina novamente porque eu não gosto das palavras lá, e eu vou apenas deixar o ícone. Então eu vou voltar para o meu tio puxão. Eu só vou quebrar a linha para que você possa ver exatamente o que está acontecendo dentro do meu tio Tugs. Então eu estou colocando uma etiqueta no tornozelo e eu estou tirando toda a palavra deletar da minha laranja . Mas ex-editor em, em seguida, para os detalhes que eu estou assumindo os detalhes do mundo em que eu estou apenas usando o ícone para informações sobre, em seguida, apenas da mesma maneira que eu quero tirar toda a palavra excluir fora do botão vermelho em. Só estou usando a lata de lixo. Então, quero dizer, mais uma vez, seu próprio estilo vai se encaixar e você pode personalizá-lo como quiser. Mas e isso é assim que eu quero meu discurso de índice. Parece que vejo isso. E então eu vou refrescar mais uma vez arte, e lá parece um pouco mais limpo. E então nós só temos o lápis, a informação e excluir Andi. Quero dizer, esta coluna tinha um religioso tem alguma palavra. Eu só vou colocar as tarefas de título lá. Então, para ações, sim, essas serão ação. Então, para colocar esse hitter título, lembre-se que tínhamos na tabela, tínhamos os cabeçalhos da tabela e tínhamos o nome de exibição para o nome onde a data foi criada, e então onde este vazio neste vazio representado no MT. Cabeça de tabela fora para a coluna com as ações que eu estou literalmente indo dedo do pé foram na palavra ações em então que iria resolver fora completa as mudanças que estamos fazendo. E lá vamos nós. Então, vou sair com uma sugestão. Então, quando nós configuramos a tabela de dados e nós definimos o script Seção quatro tabela de dados, por favor, saiba que cada vez que temos um pitch índice porque cada vez que fazemos operações cortadas para uma determinada classe de dados, nossa tabela nós vamos terminar acima com o mar e quatro pontos de vista Todo o índice de tempo criar detalhes sobre fez isso? Não, isso significa que cada vez que você provavelmente vai querer que a tabela de dados para estar em qualquer discursos de índice que estão sendo processados no momento. A maneira como fizemos aqui é que você vai ter que fazer isso toda vez que você tem um discurso de índice . Agora, o que você poderia fazer está no arquivo JS. Então, em nosso layout, Página já estavam referindo arquivo Js que teríamos obtido como parte fora do modelo em que está dentro w w raiz Js no local que Js você poderia colocar o tribunal javascript aqui. Então você poderia ser disciplinado o suficiente para saber que uma vez que você é, você sabe, você tem um discurso de índice, e você quer que algo seja uma tabela de dados que você chama isso. Eu faria TBL DT para dados. Desculpe. Dados tibiais. Não, o possível lado negativo disso é que você só pode ter um elemento naquele momento com uma idéia. Então, se você tem várias tabelas na mesma página que você quer ser tabela de dados Evita tabela Desculpe, Então você vai ter que modificar o alvo de reboque cabo, cada um indo para a frente. No entanto, eu posso escrever este script uma vez, e eu só vou ensinar esta seção sobre, colocar dentro off site dot gs uma vez para que eu pudesse escrevê-lo uma vez e, em seguida, ser disciplinado o suficiente para saber que cada vez que eu tenho um índice, eu vou ter certeza que eu dar a tabela o i d t b um mais tarde para que um lado Jesse incluído, que sempre será porque ele está na página de layout de qualquer maneira, Então essa tabela com que i d será automaticamente uma tabela de dados. Então eu só fiz essa mudança, e então eu vou apenas atualizar no show que ele ainda estava funcionando. Tudo bem, então as atualizações não e nós ainda temos ou tabela de dados. E desta vez eu mover o tribunal de diretamente dentro da vista do dedo do pé são arquivo JavaScript que está sendo referenciado pelo tom baixo leigo. Lembro-me das páginas de layout que regem tudo o que estamos vendo, pelo menos, certo? - Não. Então é isso para as modificações para essas duas visualizações São essas poucas visualizações que eu poderia usar esta oportunidade para dizer que quando vamos para a página de criação em, vemos que ela já está ocupando parte da página se você quiser que ela ocupe mais ou tudo Fora da dor. Então você vê que a página realmente se estende a partir desta margem, dedo essa margem para a direita, Tudo bem, então você pode usar essa linha para classificar fora do medidor onde ele começa e pára. Mas então isso está apenas ocupando parte do espaço. Então, na verdade, o que está acontecendo é que no criativo você e eu vamos encontrá-lo rapidamente. Deixar tipos criá-lo está usando uma chamada de classe diff. MD quatro. Então, no bootstrap, você pode definir a largura de toda a sua página usando esta diretiva chamada MD ou classe. Em vez disso. Então, se eu quisesse, vai de um dedo do pé. 12. Desculpe. Ah, sim, 12 e 12. Então eu estou tomando um antes. Então é isso que eu terceiro fora do espaço potencial. Se eu aumentar isso em morrer, economizar, então eu apenas voltar e atualizar. Então você vê que todo o conteúdo ocupa mais espaço. Tudo bem, vamos. Lá vamos nós. Portanto, não é retirá-lo das potenciais 12 colunas. Isso significa entre onde a caixa de texto e os botões param à direita. A maior margem que era 12 espécies em óleo. Quatro espaços em vez de contabilizados não são ocupados. Então as pessoas que têm formas que maca na cruz Às vezes eles apenas chamam MD 12 ou às vezes logístico que dão. Eles não incomodam dedo do pé especificar e um baixo os controles para apenas sentir todo o espaço. Então eu mudei para 12 e lá vemos que ele está enchendo todo o espaço. Andi, eu disse que Bt e blocos do botão estão enchendo todo o espaço. Não, os links da nossa lista de batalha ainda parecem mortos. Estou desafiando você a finalizar maneira criativa de configurar seus links de lista de batalha dentro de fora das visualizações individuais para criar detalhes de edição sobre o que líderes que têm qualquer visão mais. Mas eu estou desafiando você a encontrar uma maneira agradável e criativa de representar a lista de batalha em qualquer outro link que possa parecer simples. 22. Analisar e adicionar mudanças no GitHub: Ei, pessoal, nesta lição, vamos verificar nossas mudanças no nosso controle de fonte. Mas antes de entrarmos nisso, eu só quero recapitular o que nós não fizemos na lição anterior, que é onde nós modificamos os links para olhar, você sabe, um pouco mais animado em algum lugar cor para as páginas em Guy deixou você com um realmente inserir alguns estilos no reboque. Os botões e, você sabe, ser criativo. Então, eu mesmo aceitei o desafio, mas não fiz muito. Tudo o que fiz foi bem para a página Editar. Eu adicionei estilo. Uma surra começou de volta à lista naquela praia em grande estilo seria Bt e Dash delineado traço secundário. Então, se você queria mais referências para as estrelas de botões e o que é possível, então você sempre pode verificar todas as seções de botões na nossa documentação de bootstrap. Então, há gets bootstrap dot com em, então você sabe, na documentação, basta procurar componentes nos botões direito em. Então eles mostram a cada um de suas opções. Você tem primário secundário Andi cada enquanto o nome em cada borda é basicamente a classe e a cor que você pode esperar. Então você tem em quatro diferentes das primárias. Então, na verdade, eu poderia ter usado ou deveria ter usado informações em vez de fora primário para os detalhes . Então, eu só vou para mim essa mudança rapidamente. Então isso é algo contratado para mim. Então, tudo o que eu tenho que fazer para detalhes em vez de dizer beaty e Primary S A Bt e dash informações sobre DSO, é açougueiro torna mais fácil para este cores do anúncio e, em seguida, eles têm outro conjunto onde eles dizem contornos vendidos. Você obtém o contorno de cores e você vê o botão completo quando você passa o mouse. Então foi o que fiz pelo menos pelas costas. Mas eu fiz isso online e você tem uma cor quando você paira. Cartão. Eu fiz isso por isso. Eu fiz isso para detalhes. Também em Di fez isso para tratar, mas e quatro criar. Eu tinha o botão para criar como Bt e Block. Então eu apenas fiz uma lista apoiada, também batendo bloco e eu vejo que eles apenas ocuparam como mais espaço, você sabe, cheio com fora de qualquer linha. Então essas são as mudanças que eu fiz para você problema. Oito outras mudanças e estou ansioso para ver o que você fez. Mas o objetivo deste vídeo é checar nossas mudanças. Não, como estamos indo junto desde que adicionamos ou projetamos para controle de fonte com cada pai que modificamos, você notou que há um carrapato vermelho. Alguns têm cadeados e outros hereges. O cadeado significa que o check-in foi feito não foi modificado desde a última versão que foi adicionada ao controle de origem. O Reddick significa que foi desejado. Então, se você apenas pairar, você vê o final nisso. Isso significa que alguns editores feitos nele está pendente de um cheque no repositório. Ele não foi registrado no controle de origem como um arquivo modificado. Então, em outras palavras, se eu perdesse esse projeto agora, se meu projeto se Michel Butor se desculpou, caiu, então tudo o que eu teria terminado que tudo com um carrapato vermelho teria sido perdido são essas mudanças seriam perdidas porque eu sinto para verificá-los no controle da fonte. Então esses são os hereges. Você também notará alguns com vantagens verdes. E aqueles estão vendo pendentes em So. O sinal de mais é que desde a última versão fora do projeto. Este arquivo foi adicionado. O que? Fui modificado ou não. Quero dizer, foi adicionado. Eu não sei nada sobre este arquivo. Então o mecanismo de rastreamento local no computador, que é o mecanismo get que teríamos configurado inicialmente que o mecanismo de rastreamento local está vendo que eu sei a versão anterior do projeto. Nestes estão a mudança que você tem a mim. Tens de me deixar guardá-las para que se tiveres de recuperar o teu jejum de mim, terei registos deles. Então, como eu disse, se eu perdesse tudo agora, tudo com um herege e cada verde mais estaria perdido. Então eu teria que ir e recuperar a versão que foi verificada pela última vez para o controle de origem . Então, neste vídeo, eu só vou verificar ou mudar. Fizemos algumas mudanças. Adicionamos operações de multidão para nossos tipos de ajuda. Em nós adicionamos modelos de visualização. Adicionamos Oper de Outono. Nós mudamos algumas interfaces de interface e adicionamos alguns novos arquivos ao longo do caminho. E não, precisamos checar, então, faça o check-in. Posso distrair as soluções. Lembre-se que a solução está no topo da árvore, Iraque, a solução em. Então eu vou e vejo commit embora a tela do cometa vai me dizer que eles são 18 mudanças gastando tudo bem em. Então estão pedindo uma mensagem. Não, a mensagem precisa ser descritiva por duas razões. Se estou desenvolvendo isso sozinho, quando estou cometendo uma mudança estão cometendo você sabe o cordão. Quero lembrar a mim mesmo o que foi feito nesta versão que estou adicionando ao controle de código-fonte. Isso serve a um duplo propósito. Porque não, se eu estiver trabalhando em uma equipe, então alguém que aparece depois de eu ter cometido tribunal pode olhar para minha mensagem de comprometimento e meio que deduzir o tipo de trabalho que eu acabei de colocar no que é. Estou verificando. Então, nesta seção, você sabe, eles realmente exigem isso. E eu disse que você é descritivo. Então eu vou ver se eu deixei repositórios tipo. Andi adicionou. Peter mesas, Onda fundo ícones incríveis. Tudo bem, então acho que isso resume tudo o que fizemos. Adicionamos repositórios. Oh, e eu vou dizer e bruto então nós adicionamos, deixar repositórios tipo e crude em um tabelas de dados em fundos ícones impressionantes. Agora, quando você clica em Cometa, ele está indo para o cometa. Localmente, não vai empurrá-lo para se levantar. Vai começar localmente, para fazer tudo. Uma vez eu só uso a seta para baixo e eu digo Commit tudo e afundar então eu vou fazê-lo localmente. Faça todas as alterações aqui. Então você vai se conectar para ter esperança. Em seguida, empurre todas as mudanças para obter arte. E então, uma vez feito isso, você deve ver sincronizar com sucesso pagamentos de entrada e saída. Então faz duas coisas. Ele faz uma sincronização onde se você estiver verificando no tribunal depois que alguém o fez , então ele não carregará a versão mais recente que está no controle de origem em, em seguida, em suas alterações. Então, ele meio que certifique-se é que certifique-se de que há paridade no cordão em todos os momentos e em seu tribunal. Então, mais uma vez em um cenário de equipe, quando você tem várias pessoas fazendo modificações no mesmo aplicativo, uma vez que você faz essa sincronização, ele empurra as mudanças de ar, não carrega as mudanças de outras pessoas Então, neste ponto, se alguém estava fazendo mudanças na construção Outono outro modelo enquanto eu estava lidando com esses tipos, uma vez que eu fiz essa sincronização, então eu teria suas mudanças que eles teriam. Minhas mudanças são Então eu fui para chegar no topo, e eu estou muito bem que as mudanças que eu fiz estão presentes em. Você pode ver e deixar o gerenciamento na pasta. Vou ver a mensagem do cometa adicionado tipo Leave. Então, se você tropeçar em cima dele. Mas esse é o último compromisso, que foi feito há um minuto. Podemos sempre ver a história do ah fora. Todos os comitês que você vê são seis commits no total. Se eu clicar em seis commits, então ele vai me mostrar o histórico de tudo o que eu fiz. Eu fiz alguns arquivos de projeto que criei o leia-me no último ou mais recente. Um que eu fiz foi ainda adicionar os repositórios de tipo licença de licença. O último que acabei de fazer nele também fundiu a marca para que eu possa olhar para ramos em outra palestra. Eu não quero entrar em ramos neste particular para Tora, mas no final do dia, nós verificamos em nossa fonte marcou para nos levantarmos. nossa equipa tem acesso ao cabo, se precisarem. 23. Visão geral de autenticação core ASP.Net: Ei, pessoal, bem-vindos de volta a isto. Ouça, vamos fazer um tour pelo SP .net Cores Identity apresenta o que eu digo. Recursos de identidade Identidade é o conjunto de recursos ou a biblioteca que uma velocidade nele central usa para gerenciar a autenticação? Usuários Andi Até agora em nossa aplicação, temos feito um pouco fora do trabalho. Nós configuramos os layouts até certo ponto. Colocamos no futebol alguns recursos de multidão para tipos de alívio onde podemos adicionar tipos de licença. Remova os tipos de licença, edite-os. Onda revista-os. Não, eu tenho certeza que você provavelmente está no final recebendo essas lições e pensando, bem, bem, eu tenho certeza que em um sistema de gerenciamento de licenças, não seria assim tão aberto para qualquer um ser capaz de entrar e gerenciar o tipo de folha. Algo como tipos de licença deve ser reservado para talvez um usuário administrador e nozes Mimi são usuários regulares da mesma maneira. Pretendemos colocar em recursos os pés, solicitar licença e, por extensão, gerenciar aplicativos de licença, o que significa aprová-los ou rejeitá-los. Além disso, funcionários gerenciados e esses recursos sugerem que os usuários precisam estar em diferentes categorias, certo? Alguém precisa ser capaz de um registro, que significa que em um concurso que existe em algum lugar para eles colocar em meu nome de usuário na senha e realmente autenticar contra o que sabemos. Então o que nós saberíamos é o que está no banco de dados a informação para qualquer determinado usuário no banco de dados. Alguém entra e coloca a informação, e então verificamos que a informação que eles colocaram está correta. Em seguida, nós concedemos-lhes acesso toe, se o aplicativo completamente ou para certos aspectos fora do aplicativo. Então, neste vídeo, vamos passar pelo que é preciso para realmente configurar a funcionalidade de login, permitindo que as pessoas se registrem em nosso aplicativo grandioso, permitindo que elas acessem o aplicativo ou rejeitem-no. - Não. Quando criamos este aplicativo, indicamos que queríamos criá-lo com cones de usuário individuais. Suporte em DSO porque selecionamos essas opções em nosso menu principal ou barra suficiente. Antes de começarmos a colocar outros links, percebemos que tínhamos um log no Link Onda Register Ling. Tudo bem, então eles nos deram a mentira a estrutura subjacente para isso acontecer e então o recurso é uma coisa que tivemos que fazer era executar uma migração inicial, que é onde nós realmente lançamos as tabelas que eram necessárias para isso ser suportada. Então, você sabe, antes de não, talvez nós teríamos tido o dedo do pé. E quando eu digo antes, não, Em versões anteriores fora dotnet framework na programação dwell dotnet e na maioria das outras aplicações, você realmente tem que sentar e construir suas tabelas de usuário e, você sabe, equipar todas essas coisas. O que aconteceu é que eles realmente nos dão o quadro. Então nós só tivemos que executar alguns comandos sobre eles foram realmente criados para nós, e nós podemos aproveitá-lo. Em seguida, eles têm uma série de recursos por razões de segurança e que podemos aproveitar, construir em cima de melhorar como podemos ver melhor. Mas então o fato é que é um sistema de log in bastante robusto que eles estão nos dando fora da caixa, e nós queremos apenas ter uma melhor compreensão disso antes de começarmos a modificar. Agora, de volta ao Visual Studio, fui ao meu explorador de objetos do SQL Server. Lembre-se de que, se você não ver essa dor em qualquer lugar, você sempre pode clicar em View on. Então você seria capaz de apenas selecioná-lo da vista, e então você pode arrastá-lo dedo do pé qualquer seção da janela do estúdio visual, você se sente mais confortável com ele sendo que eu gosto dele para a esquerda fogo. Então, eu só vou ficar escuro. É deste lado, Andi. Fui para o SQL Server do que para os meus habitantes locais. Banco de dados local barra m s instância de banco de dados SQL Em base de dados Deixe o gerenciamento como esse é o nome de para banco de dados em. Então eu estou apenas mostrando que há um número fora tabelas aqui com o nome SP que ponto net ou melhor, o lá fingiu que os nomes das tabelas são fingidos com s ser o próximo. Tudo bem, então tudo fora, isso teria sido incluído no exercício inicial de migração onde nós brigamos nas tabelas de banco de dados para começar. Agora, todas as tabelas do desempenham alguma forma de papel na gestão dos nossos utilizadores. Então eu tenho certeza que você pode deduzir que s usuários P Net é onde os usuários estão sendo armazenados em Se nós expandirmos isso e apenas olhar para as colunas, você vê que nós temos um I D. que identifica exclusivamente qualquer usuário. Eu uso o nome e endereço de e-mail em Nós temos senha silenciar no número de telefone. E então, quando estávamos construindo nossos modelos, nós realmente criamos um modelo de funcionário que herdou da classe de usuário líquida SB subjacente em. Estendemos adicionando mais fusíveis que consideramos necessários para o nosso sistema. Mas o fato é que, fora da caixa, recebemos do discriminador do pé ou do I D para discriminar. Embora escale o padrão com nossas bibliotecas de identidade, também temos o rolo líquido SP. Então a tabela de regras praticamente a história. O nome, hum e irá normalizar o nome e eu d em alguns outros dados. Então o que é realmente importante é o nome e eu passo dizendo que esse é o mais importante entre o nome Ayman Normalized porque esse é o nome fora da regra é um administrador ou é um papel de funcionário? É um supervisor? Ou, você sabe, diferentes aplicativos têm diferentes níveis fora dos usuários, e isso é o que chamamos de regras. Portanto, as regras em si são armazenadas nesta tabela porque, em seguida, você não deseja criar um usuário e, em seguida, atribuir uma regra. E talvez você soletrar administrador atualmente nesta ocasião, e então você acaba com a mesma regra com variações diferentes. Então começamos a surgir uma vez. Então temos outra tabela importante chamada está sendo regras de usuário net. Então este é, se você sabe, banco de dados bem. Este é um relacionamento de muitos para muitos porque você tem muitos usuários em. Muitos usuários podem incorporar muitas regras porque você pode ter em um administrador que também é um funcionário, então eles teriam que ter mais de uma regra. Então, para evitar duplicações em qualquer uma dessas tabelas, eles criaram outra tabela que atende, hum, meio caminho, que é a ESPN. É a função de usuário estável, onde ele armazena o usuário i D e a ideia de função. Em outras palavras, se eu sou um usuário em Eu sou um funcionário e funcionários papel I D para, em seguida, a gravação é ser usuário net . Rose vai se parecer com o usuário I d. um com a regra I d para. Se você é talvez um supervisor no administrador de armas, então você vai ter duas entradas na idéia do usuário e vamos a identificaçãodeles identificação foi cinco. Então saímos de 5 para 1, que é administrado e cinco dedos três, que é supervisor. Seja o que for que o ponto é, aqui é onde criamos a associação entre eu usuário Andi ele ou seu governo Onda. Para este vídeo, esses são os três. mais importante, foi sob três tabelas que eu vou focar enquanto nós entendemos exatamente como as autenticações do usuário funcionam, sem voltar para o nosso aplicativo. Nosso primeiro experimento ainda é criar um usuário, então quando falamos sobre criar um usuário, é realmente registro. Você vai para Facebook Dot com pela primeira vez. Você quer registrar o seu literalmente criando. Eu uso um registro dentro do registro do Facebook, então literalmente, quando você vai ao Facebook e um companheiro que se inscreve, tudo o que eles fizeram foi manter essa informação na tela, colocá-lo em um banco de dados exatamente como o que eu acabei de mostrar . Você coloca em um estábulo de usuário ligado. Em seguida, eles são baixos você para entrar, e cada vez que você colocar em seu nome de usuário que você especificou e essa senha, tudo o que eles fazem é manter essa informação e verificar se há um registro no estábulo de usuário que na verdade, como eu uso o nome que parece assim, Ana Pastor, que parece que a maneira em diante. Eles dizem que sim, está correto. Aqui, aqui está a informação. Está incorreto. Por favor, Dragon, isso é literalmente tudo o que está acontecendo no DSO. Uma velocidade faz com que seja tão fácil para que eu possa literalmente ir nos registrar. Eu posso fornecer um endereço de e-mail e eu vou usar Ah, um endereço de e-mail legítimo, alguém para colocar em um dos meus endereços de e-mail menos usados. E eu vou colocar uma senha. Então a senha que estou colocando é a palavra senha. E então eu fui para Click Register. Então, quando eu clicar em registrar ok, então é especificar que minha senha precisa atender a determinados padrões, e tudo bem. Podemos ser os padrões tão fora da caixa. Você vê que eles estão meio que nos dizendo a força da senha que é necessária. Então a força das posturas que eles estão dizendo que eu devo sobre estes não Mary milho não alfanumérico. Poroutras palavras, outras palavras, devo ter letras maiúsculas. Um P maiúsculo devo ter algum personagem que não seja um número ou, ah, onde está a nossa carta? Então eu vou colocar o sinal para, você sabe senha s W O R d Andi. Eles disseram que eu preciso ter um número, então eu vou colocar um. Então isso é um P maiúsculo no sinal. S S S W O R D um. Não quero tentar de novo. Tudo bem, então ele passa para uma página chamada Confirmação de Registro e, em seguida, eles nos dão uma pequena mensagem dizendo que não temos um remetente realmente registrado, então você pode ler docks para Seo para configurá-lo, que estará fazendo mais tarde. Mas normalmente isso seria e-mail, mas eles estão nos dando Ah, como um sentimento feroz em Inglês padrão. Caso isso não signifique muito para você quando você está assinando para a maioria dos sites atualmente , eles não podem ver paz. Verifique seu e-mail para confirmar sua identidade. Quando você vai para o e-mail, geralmente vê um e-mail deles. Onde é que a sacralidade se ligava? Então você está oficialmente registrado. Então é só isso que eles estão dizendo. Que precisamos configurar algo que realmente irá acionar um e-mail que faça algo assim. Mas enquanto isso, aqui está o link que você teria obtido na EMEA de qualquer maneira. Então, mais uma vez, podemos fazer isso. É um dia mais tarde. Mas vamos continuar com a confirmação ou registro. Então, clicamos aqui para confirmar. Então eles dizem “Ok, confirme o e-mail”. Então? Então eu voltei para a minha página inicial e não, eu posso tentar entrar. Então, quando eu clicar em plug in, eu vou colocar no e-mail que eu acabei de usar na senha, que é p no sinal. Se arrepender. P maiúsculo fora S W O R d um. No caso de haver na mesma senha que eu em. Então eu basta clicar em fazer login em então você vê que foram amados ser e notar que Não, o texto no aqui que disse login e registrar Não altera o Olá? Alguma coisa, que é o meu endereço de e-mail. Andi, eles têm um botão de logotipo. Então, se eu clicar longboats óbvio que eu terminaria a sessão. Mas só por estar aqui, eles sabem que eu não estou logando. Agora eu vou voltar para o Visual Studio, voltar para o nosso banco de dados e eu vou mostrar a vocês as mudanças que aconteceram quando fizemos processo de registro. Então, em s usuários de amendoim entender para a direita, Clique nessa tabela e, em seguida, eu vou salvar seus dados. E então isso, Lords, aquele PN de dados mostrando todos os dados no banco de dados e especificamente todos os usuários no banco de dados desde que SB Net usuários de armazenar as informações do usuário em Se você prestar muita atenção , você percebe que o primeiro verdadeiro realmente tem em informações para que o usuário acabou de criar o nome de usuário é Lone Crusader 1989 no Gmail ou o mesmo e-mail que eu digitei. Normalizar normalizar geralmente significa que eles trazem em reboque um padrão. Então, se você pode ter escrito isso em casos mistos, eles vão tornar tudo maiúsculo, você sabe, assim como eu me sinto seguro no caso de, hum, você sabe, pessoas diferentes digitam certo bits de informação de forma diferente. Então, normalizando seu para um padrão para reduzir erros. Um, o endereço de e-mail é o mesmo que normalizá-lo para que você possa olhar através de todos estes, você vê, e-mail confirmado é verdade. Então, quando não clicamos no link, isso teria sido cai sobre. Enquanto isso for para nós, esse usuário não conseguiria fazer login. Mas então, porque clicamos no link ou em circunstâncias normais, O e-mail teria sido enviado para o grupo de registro em. Em seguida, eles pensariam que o e-mail iria então mudar esta bandeira para true. Então tudo isso é construído em sua própria fora da caixa em literalmente. Isso é tudo o que essas grandes empresas com sistemas de registro que parece tão avançado e robusto, pedindo-lhe para confirmar e-mail. Isso é tudo o que eles fazem. Eles têm, ah flug em você. Clique nesse link. Essa bandeira não foi alterada. Então, quando você tenta entrar, eles dizem: “ Rapaz, Rapaz, você precisa mudar a bandeira.” Tudo bem, então temos um e-mail Confirmado é verdade. Nós temos o que você chama de senha tem e entendemos para expandir esta coluna, e vamos passar algum tempo olhando para os valores lá dentro. Então lembre-se que minha senha era P maiúsculo no sinal S S W o R d um que é em inglês ou qualquer língua em que estamos. Mas foi na Avenue, uma combinação de letras, um número e algum personagem. Não, veja o que está armazenado em nosso banco de dados. Um. Você nunca deve estar armazenando senhas em texto sem formatação. Isso é perigoso porque então se alguém teve acesso ao banco de dados e viu sua senha apenas Louis para dizer a palavra verdade, eles poderiam apenas ver sua senha, então isso é um risco claro de segurança. Eles sabem que têm informação suficiente para ir em frente e acessar seus cones. Então, sempre que você está armazenando senhas e isso é universal para qualquer sistema ou qualquer desenvolvimento preso que você está usando, sempre crie o que chamamos de silêncio. Agora, fora da caixa, a estrutura de identidade Oh, são criadas bibliotecas. Este recurso realmente silenciou a senha para que você não precise fazer muito mais trabalho depois pedir a pessoa para a postura, talvez impor um padrão. Mas, em seguida, o armazenamento dele está sendo cuidado fora pelo recurso. Tudo bem, então este silêncio você nunca pode dizer qual era a minha senha originalmente olhando para aquele bloco de texto movendo-se por lá. Outras colunas que são para este vídeo, para os fins deste vídeo. Menos importante, rapaz do sistema simultâneo de selos de segurança. Temos um número completo de campo quando não foi confirmado. Então, vemos quatro números e número completo confirmado queda. Então essa cena que você poderia construir em um recurso onde você envia um SMS para o número alguma coisa começa como certas plataformas de mensagens fazem. Hum, então você pode seguir em frente e você vê que todos esses outros campos não estão lá realmente sei porque, Bem, o registro de usuário foi criado com base em informações que foram dadas na fazenda. A fazenda não solicitou a data de nascimento ser unida. Primeiro nome, imposto de sobrenome. Eu sabia o suficiente que era necessário no momento da inscrição. Então, claro, modificar nosso aplicativo, podemos exigir a informação modificando o formulário certificando-se de que é enviado para o banco de dados. Ou podemos, você sabe, configurar alguma interface que possamos realmente, hum, solicitar essa informação em uma data posterior. Mas no final, fora do d, queremos manter nosso registro simples para este sistema. Claro, olhamos para o buraco. Poderíamos modificá-lo mais tarde, mas com o propósito dessa liberdade, quer mantê-la simples? Precisamos é um nome de usuário e uma senha ou um endereço de e-mail e uma senha, e você vê aqui que foram usados no endereço de e-mail como o nome de usuário. Além disso, isso também é algo que provavelmente gostaria de modificar porque eu uso o nome Nem sempre grita senha. Desculpe, eu uso o nome porque ele sempre rasteja e-mail. Então nós queremos modificar isso, que nós permitimos que eles digam nome de usuário, digite um e-mail em uma senha, e então eles estão no sistema. Agora, se clicarmos em “olá”. Se você passar o mouse sobre o bloco de texto que lhe diz olá, você percebe que a mão aparece, que sugere que ele é clicável diretamente. Quando fazemos isso, vemos que recebemos, ah, ah, gerenciar tipo de painel, e você provavelmente vê uma mensagem dizendo Obrigado por confirmar seu e-mail. Tudo bem, mas você verá tudo isso. E a partir daqui você seria capaz de ver o perfil fora do usuário ou o usuário que está fazendo lobby Em vez disso, pode ver seu perfil. Eles podem ver seus e-mails e, provavelmente, fazer uma atualização. Eles podem alterar sua senha colocando na atual e colocando em uma nova. Ele suporta dois fatores. Autenticação, é claro, teria que configurar isso corretamente em. Em seguida, eles permitem que você visualize, faça um backup de seus dados pessoais e também exclua sua conta. Estou mostrando tudo isso porque mais uma vez, todas essas coisas estão fora da caixa. Tudo o que você tem a fazer é ter uma apreciação para todo Eles trabalham em, em seguida, modificar. Mas a compilação inicial que funciona não está lá porque a Microsoft está vendo Vamos tirar essas pequenas coisas que todo mundo quer fora do caminho e focar nas coisas que realmente importam. Então eles te dão isso fora da caixa, e então eles dizem, Ok, bem, se você precisa modificar, então vá em frente. Não, estivemos olhando para visualizações, modelos e controladores todo esse tempo. Andi, eu te mostrei isso no tribunal. Se você quisesse ver e entender de volta ao Visual Studio, voltando para a solução que se quiséssemos ver os controladores que poderíamos sempre ir e ver o controlador no controlador causou a ação. Então sabemos quando ele causou isso. Ação de índice vai procurar o índice de exibição em. Então vamos ver o índice. Devemos estar confortáveis o suficiente com o conceito fora que por não, Mas se você olhar mais fundo, você percebe que não há controladores que mencionaram usuários. Não há nada aqui que tenha nada a ver com usuários. No entanto, se olharmos para o link, sugere que há uma seção chamada Identidade em um Conde e gerenciar se sabemos algo menos sobre o Lincoln. Outros vão deixar tipo, vez que é um que construímos quando dizemos tipos de licença barra vai procurar o controlador chamado tipos de folha. Se clicarmos em qualquer link como se clicarmos em editar, então sabemos que ele está procurando o controlador chamado Leaf Types, e ele está procurando a ação, chamou-o e, em seguida, este passando o permitido para. Então o fato é que, com base no link, podemos resolver as dívidas onde exatamente no tribunal, essas ações estão sendo tomadas, então eu posso facilmente descobrir que Oh, é chamar a ação Editar, que é colocando a ferramenta. Então ele está retornando a visão que sabemos que podemos encontrar dentro da pasta views. Podemos simplesmente olhar para ele facilmente. Não, mais uma vez, o ponto é que a estrutura de identidade não está lá onde você pode encontrar as vistas. Onda. Quero dizer, eu posso passar algum tempo olhando através dele. Oh, você pode pausar o vídeo e apenas olhar através e me dizer se você encontrá-los, mas eles não são tão facilmente identificáveis em. Isso é porque eles não criaram uma estrutura como a estrutura do controlador de visualização modelo que estamos criando. Eles não fizeram isso pelas características de identidade. Agora você pode estar em alguma coisa se você parar, então você começou a procurar por si mesmo. E então, se você fosse para áreas em áreas expandidas, você veria que há uma pasta aqui chamada Identity on. Então dentro da identidade. Você tem páginas, mas então você só tem uma riqueza paga de você começar, que é apenas dizer qual layout ele deve usar. Você pode ter vários layouts, mas isso é algo para outro dia. Mas o fato é que isso é tudo o que vemos sugerindo que há alguma característica de identidade em algum lugar. Então eu sou como um ato final para este vídeo. Vamos construir aveia. Todas as páginas ou outros têm provedores de estúdio visual com acesso a todas as páginas que estão sendo usadas dentro do gerenciamento de identidade. Tudo bem, então você pode apenas fazer esses poucos passos e então você tem todas as páginas e então nós podemos começar nossos formulários de loja de modificação e toda nossa lógica funciona. Então, em primeiro lugar, eu estou indo dedo direito Clique em áreas em então eu vou clicar. Acrescente, então, e você não. Não tem que ser épocas, mas apenas certo. Clique em, em seguida, ver novos itens brigados. Veja, isso é o que nós fizemos Controlador, você não tem aula desta vez nós estamos fazendo você item brigado Então nós clicamos em novo item em seguida, isso vai então nos perguntar o que nós queremos vivê-lo? E então neste lado aqui vamos ver a identidade. Então, basta clicar em identidade e clicar em. Acrescente, então, vai fazer algum trabalho. Em seguida, eles nos dão esta caixa de diálogo onde há dizer Ok, estamos prestes a adicionar identidade O que FAZ você quer para que possamos selecionar você sabe um por um que nós queremos em uma vez que nós selecioná-los, então eles serão fornecidos para nós Mas então eu sou Vou apenas dizer que eu quero todos eles então eu vou apenas clicar em substituir rapidamente para que os arquivos estão implícitos, por assim dizer, e eu vejo implícito porque nós não temos visibilidade sobre eles, então eles estão implícitos que eles estão lá. Então eles estão dizendo que querem anular o insinuar rápido com o jejum físico. Estou dizendo que acabou em todos os arquivos. Dê-me ataque rápido físico e ver em modificar, como eu desejo em. Então eles vão dizer, OK, OK, qual é a classe de contexto de dados? Sabemos que temos o contexto do banco de dados do aplicativo como nosso contexto. Russ em frente. Então podemos ir em frente e clicar em. Nós não precisamos fornecer nenhuma outra informação sobre. Então vamos fazer um pouco mais de trabalho são para que possa ter levado um tempo. Mas uma vez que é feito, você começa esta boa cadela com um me ler, avisando que o suporte foi adicionado. Andi, se você precisa fazer outras coisas, então eles te dizem que você pode adicionar essas linhas ao seu arquivo de início do ponto CS. Mas se eu olhar no meu início desse arquivo de série e eu veria que eles já estão lá, eu já tenho a minha abordagem de lá, uma autorização de autenticação. Todas essas coisas estavam lá antes, então eles estão apenas avisando que você pode fazer isso no caso, certo? Mas já o temos, então podemos tirar isto e depois prosseguir. Agora, se olharmos para a nossa esquerda dentro das páginas dentro de entidades e áreas, então veremos que temos um monte de arquivos novos. E se explicarmos contas, vemos que temos muitas tarifas novas. Cada um desses novos incêndios corresponde com uma visão que nós veríamos ao fazer alguma opção relacionada ao usuário são algumas operações relacionadas ao usuário. Então, por exemplo, fizemos um registro. Só sei. Então, se eu clicar no registro, então você vê que ele lhe dá o tribunal para o formulário de inscrição. Eles pedem o e-mail, eles estão pedindo a senha e, em seguida, pedem que você confirme a senha diretamente no. Foi isso que nos deu o formulário de inscrição na época. Outra coisa a notar é que ainda não temos um controlador, Então você provavelmente está se perguntando, OK, então eu vejo o front-end ou vejo o HTML e eu vejo no formulário é, você sabe, ser processado. O que acontece depois que eu clicar em enviar. Então lembre-se que com os nossos modelos NBC, NBC De acordo com quando batemos, Enviá-lo causou, mas o controlador eo que fazemos depois de clicar em enviar, teríamos especificado dentro de um controlador. Ainda não há nenhum controlador em qualquer lugar aqui para qualquer identidade relacionada. E isso é porque esses pontos de vista estão usando para que as vistas de identidade estão usando algo chamado Páginas navalha. Então, Onda, com isso, eu vou fechar este capítulo, e então podemos aprofundar um pouco mais nele. Mas eu só quero ter uma apreciação do que está acontecendo. Então temos o nosso registo que CS html. Sabemos que isso é uma vista, certo? E nós olhamos e vemos isso. Mas se olharmos de perto, vemos que há ah correto para a esquerda, ou esta é a seta que sugere que há algo mais preso dedo do pé da vista. Então, se eu comparar isso com as vistas que temos, então eu apenas voltei para a minha pasta views em Eu estou olhando para os tipos de folhas views e você percebe que esses usuários apenas tão rápido, não há correto para a esquerda. Não há mais nada. Estas vistas correspondem apenas com o que está no controlador são, Mas, em seguida, nesta situação, esta vista, que é a mesma frente HTML e e você sabe raisel front-end. Ele realmente tem um arquivo de extensão estendida C sharp que está embaixo dele. Então, quando eu expandir e expandir qualquer um desses discursos que foram gerados, você vê que há um arquivo nítido em C debaixo dele. Então, se eu entrar no registro não sensacional que c afiado, então eu vou começar a ver tribunal que seria parecido com o que temos feito entre nossos modelos onde construímos uma aula. Então este ano, eu tenho uma aula pública e eu chamo de modelo de entrada. Estou fazendo algumas propriedades com algumas notações de dados especificam as validações. Andi, também estou a fazer algumas funções onde vejo a Onda posar. Tudo bem, então mais uma vez, eu não vou mergulhar no fundo. Só estou avisando que qualquer lógica que rege o comportamento fora da página de registro fora do front-end está sendo feito dentro do arquivo CS ponto que está anexado ao arquivo view. Então, no próximo vídeo, vamos em frente e modificar o registro no log informa 24. Personalizando a página de registro e processo: Ei, caras neste vídeo vão passar por segurar o registro. Então, em nosso vídeo anterior, nós fomos em frente e nós brigamos tudo fora das páginas relacionadas à identidade. Nós também demos uma olhada na página de registro onde vimos que esta visão tinha o formulário ou este arquivo, que está registrado no CSE Channel, era a visão que tinha o formulário para as importações de e-mail e as senhas em. Depois percebemos que ele também tinha, como, como, um código por trás de um arquivo na forma de um arquivo nítido C ou classe C afiada, que eu nos carrego para controlar o fluxo fora do aplicativo. Não, vamos passar algum tempo e entender exatamente está acontecendo aqui. E então teremos um melhor entendimento. Segure as páginas da navalha de trabalho. Então, este ar chamado de páginas navalhas, onde o Tribunal C Sharp está diretamente ligado ao poucos arquivos. Certo, então vamos seção por seção. Então sabemos que a seção de uso é onde incluímos todas as nossas bibliotecas. Abrimos o nosso espaço de nomes, que é o nosso projecto. Essa é a estrutura da pasta que vem para baixo para o mais rápido que é eras identidade pensamento, páginas escuras e você vê que ele corresponde que são Coned em. Então nosso arquivo está dentro da pasta de milho deles. Esse é o espaço do nome. Eu tenho uma aula, e nós chamamos de modelo de registro. Então, por não, você deve estar familiarizado com quando dizemos modelos queremos dizer modelos de visão. Queremos dizer classes que são projetados especialmente para a visão de partículas na vista é projetado dedo do pé interagir com as propriedades que estão sendo entregues são servidos diretamente pela classe em questão ou o modelo de visão em questão em então esta visão particular modelo está herdando de ah classe baseada chamado modelo de página. Então modelo de página é construído na velocidade em um núcleo em nossa classe nesta situação está herdando dele, que lhe permite certas coisas que nossos modelos de visão regular provavelmente não foram fazendo . Ou não tivemos a necessidade de fazer porque nossas funcionalidades espalham mais aveia do que no tribunal atrás para a visão direta. Tudo bem, então vamos em frente e inicializamos alguns fora. Nossa dependência é, e já sabemos sobre injeção de dependência. Então, temos dependências em porque assinando gerenciadores de usuários gerenciadores. Então, esses dois são muito importantes para nos ajudar a obter algumas funções interagir com o banco de dados do usuário e os dados do usuário enquanto você avança. Nós temos o logger por mais tempo Basta manter descoberto o que está acontecendo Em que ponto em que temos a remoção do centro de e-mail no construtor de turismo, que inicializar é cada uma dessas dependência está em. Então vamos para alguma propriedade. Então vemos aqui que somos propriedade chamada modelo de entrada. Andi Input modelo é uma classe em sua entrada propriedades e, em seguida, vê-lo como uma anotação de dados que está comprando propriedade. Então comprar propriedade basicamente diz que se se algo é dito na classe ou sim , nós temos o modelo, certo? Então, se algo é que eles disseram em um modelo em nós damos a propriedade comprando propriedade, basicamente dá a visibilidade vista fora desta propriedade. Então, nesta situação, estamos dizendo a visão de que ele deve ter visibilidade de alguma classe chamada input on. Em seguida, se nos movermos ao longo na entrada é fora do tipo Desculpe, algum objeto chamado entrada em sua fora do modelo de entrada tipo classe. Em nós temos um euro de retorno, que eu vou entrar no propósito fora eventualmente em. Temos uma lista fora alternativas de autenticação são log externo. Então isso é se nós podemos esquecer, como ligado no Facebook e todos aqueles que você conhece, Google. Todos esses outros tipos de soluções de login único podem ser integrados, e podemos adicioná-los a uma lista, mas não entraremos nisso hoje. Então, se eu seguir em frente, você vê que a próxima coisa é a implementação ou a definição fora do modelo de entrada. Então temos implementar modelo de entrada implementado aqui, e é implementado no tipo na forma muitas vezes objeto chamado de entrada shore. Mas, em seguida, a definição fora do nosso modelo de entrada de classe é escreve abaixo. Então modelo de entrada é uma classe em. Tem as propriedades que estão sendo desossadas dedo do pé da forma. Então eu estou indo para os ossos entre o formulário no modelo, hum, longe daqui. Então, nós vemos que temos as propriedades, e-mail, senha e confirmar senha. Você vê que cada um deles tem uma notação que fala as validações que precisam ser realizadas. Então estamos vendo que isso é necessário. O e-mail é obrigatório. É suposto ser um endereço de e-mail tão validado como tal. Assim, você pode validar com base no tipo de dados um endereço de e-mail apenas lá. Você pode ver que é suposto ser um endereço de e-mail. Sobre isso. Podemos ver a exibição Nome é genial. Posso facilmente mudar para, digamos, endereço de e-mail. Eu não quero exibir o nome apenas para ser e-mail. Então este nome bonito, lembre-se, é o que é exibido no formulário como o rótulo para a entrada para qualquer propriedade que está sendo definido para ou acima. Agora, se eu voltar para o meu arquivo de exibição e dar uma olhada, eu vou ver aqui que eu tenho a seção para o e-mail nele, como o rótulo é antes de inserir esse e-mail. Então lembre-se que em O. P, uma vez que você tem um modelo, podemos acessar as propriedades públicas usando apenas o operador ponto. Então eu tenho entrada como o modelo ou temos modelo de entrada como nosso passo de classe, e então temos a propriedade. Isso é osso para o formulário que está sendo introduzido. Então entrada é o nosso objeto fora tipo modelo de entrada, que significa que podemos dizer entrada que entrada de e-mail que pastore entrada que confirmar senha em podemos fazer tudo isso no formulário. Então não, ele está dizendo que este é o rótulo para a propriedade de e-mail dentro de um objeto de entrada quatro. E eu também quero uma entrada para que parece propriedade sobre também a validação. E então ele faz a mesma coisa para senha e a mesma coisa para confirmar Posser, que significa que se precisássemos adicionar mais a este formulário, tudo isso para dizer que se você quisesse adicionar mais a este formulário do que teríamos que voltar ao nosso modelo de entrada em adicionar propriedades adicionais ao formulário para obter mais detalhes lá. Então, eu só vou continuar, ver que talvez em que referência meus funcionários. Então lembre-se, temos funcionários como nossa classe de dados sobre funcionários. Além disso, toe todas essas propriedades aqui. Então, olhando para trás, estou vendo o que mais precisamos. Então, talvez quando alguém se registrar, eu quero que eles forneçam pelo menos a data de folga. A nossa Lemina usou-o depois disto. Use seu imposto I d. Tudo bem, Então, quando você está se registrando, você deve colocar em seu endereço de e-mail colocando um imposto I d onda senha. Tudo bem, você sabe, o quê? Vamos usar o primeiro nome, sobrenome, sobrenome, já que isso é comum o suficiente. Então nós queremos o primeiro nome no sobrenome fora, alguém que está se inscrevendo quando eles estão no ponto de registro. Certo? Então, apenas usando esse exemplo, eu vou voltar para registrar o ponto c SCS associacional em. Então eu vou adicionar essas duas propriedades para o modelo de entrada, então eu vou ver necessário porque eu exijo que você coloque em seu primeiro nome. A Andi. Vou ver que o tipo de dados esperado aqui. Eu não tenho certeza se cadeia de tipo de dados vai ser tão rigoroso considerando que segundos um tipo de dados pontos em, então ele iria listar. Oh, o tipo de tipos de dados que ele está suportando. Estes estão dentro. Hum, então você vê, ele tem alguns Denham para o tempo de dados que ele vai permitir, mas eu acho que tudo bem, então eu posso apenas dizer texto para especificar que, você sabe, textos deve ser o que entra neste campo quando ele está validando em. Então eu posso definir um nome de exibição. Então dizer que exibir no nome é igual a neste será o primeiro nome. Tudo bem, então esse é o meu primeiro. Então, essas são as notações de validação ou detalhes que irão passar na validação. Mas então eu preciso da propriedade em si. Então é uma corda de adereço. Este é o primeiro nome, uh, que erradamente, e ele apenas fala tão rápido. Então banheira de cordas primeiro em pessoa. Digite em DSO Nós adicionamos primeiro nome e l esta cópia tudo isso porque é bom ser muito semelhante para o sobrenome. Embora a alteração é o nome de exibição para durar no nome da propriedade também para sobrenome. Então, não, eu só adicionei a sensação do dedo do pé do modelo. Até onde a estação da CIA ou o View sabem, pode suportar dois campos adicionais. Então, não, eu preciso escrever o dedo do pé, adicioná-los ao formulário. Então, eu só vou empurrar os limites. Vou pegar todo esse bloco que é todo esse grupo deformado para e-mail. Eu vou copiá-lo, então eu vou apenas adicioná-lo duas vezes direito acima. Mas, em seguida, o primeiro 1 vai ser o ponto de entrada Primeiro nome na entrada é para entrada. Esse primeiro nome em tudo neste grupo de formulário inteiro é relativo ao primeiro nome em. Então o 2º 1 vai ser para o sobrenome. Então, tudo aqui é relativo. O sobrenome que eu sei. Você vê que o formulário de inscrição apenas pensou um maior não, você tem sentimentos para o primeiro nome, sobrenome no e-mail. Ah, senha na necessidade de confirmar a senha. Se precisasse usá-lo, poderia usá-lo se quisesse colocar outras coisas que poderiam colocar em outras coisas. Vou mostrar-lhe mais tarde por que o endereço de e-mail acaba como um usá-lo. Mas o ponto é, se você não queria que alguém para eles para especificar que eu usá-lo, então você poderia realmente apenas eu tenho a propriedade com a validação necessária ou o, você sabe,o você sabe, que é preferido como um validação para esse campo em. Em seguida, certifique-se de que ele está representado dentro do formulário. Também vou mudar este quarto de beleza e traço primário para BT e Dash Block. Apenas, você sabe, pequenas mudanças. Mas eu sou o fim do diácono. Seja qual for. E então, se você olhar mais para baixo no formulário, você vê a seção onde eles estão permitindo que ele se registre com outro serviço. Então, porque esta lista que eu mostrei mais cedo dentro do nosso modelo on the line lá está, não há nada em que levanta. Nada entra em que isso em. Então há um pouco de estima e isso está sendo executado, o que significa que se a lista estiver vazia, então mostre esta mensagem. Se a lista menos não está vazia do que botão produtor por enter nessa lista, direita, assim você pode imprimir contextualmente não são imprimir HTML ou qualquer coisa com base em condições diferentes usando simples se mais usando, você sabe, muito C afiado olhar tribunal. Tudo bem, então eu vou salvar essas mudanças. Eu posso apenas fazer a mudança de controle e s para salvar todas as alterações. Na verdade, eu me sinto melhor fazendo uma construção alguém para controlar turno em, ser tão segurando controle e turno e expressando ser em fazer uma compilação. - Não. Após uma compilação bem-sucedida, temos certeza de que não temos erros. E eu só vou colocar um ponto de ruptura dentro da nossa classe modelo aqui, então eu vou rolar para baixo para uma dessas funções em Então eu vou colocar um ponto muito na função get, e eu fui colocar um ponto de interrupção no post. Então temos UNGH ETS. Terei uma cura lá, uma pia que temos no poste virado. Então, eu só vou colocar esses pontos lá e então vou desmascarar mais do que e vamos ver exatamente o que acontece sair do caminho, Tudo bem, então agora estamos no modo de depuração. Vamos tentar registrar um usuário, então eu vou clicar em registrar no Ben. Vai fazer uma pausa, e, em seguida, o estúdio visual tem sido para iluminar dizendo que tudo o que você atingiu um ponto muito alto. Então você vê, quando eu clico em registrar, o que ele está fazendo é carregar. Ele está chamando esta função, que é apenas dizendo, Definir um retorno seu e configurar a lista Loggins externa para que a lista é inicializada aqui em ele obtém-na de algum serviço que saberia se tivéssemos configurado qualquer log externo listas não são que nós não temos, então isso está vazio, mas o retorno que você é é basicamente como se você está acima, digamos que você está no Amazon dot com em você estava no discurso do produto. Mas então ele disse, Oh, você quer entrar ou você quer se registrar? Desculpe. Então você clica em registrar enquanto você está na velocidade do produto. Você preenche o formulário e você está registrado e eles automaticamente se conectam. Mas eles devolvem o discurso do produto. Esse é um propósito fora do retorno que você é. Oh, então o retorno que você é eu vou definir contextualmente baseado em você sabe onde está, qual lance você está registrando a partir de agora. Então foi então esta é a página em que ele estava quando você se registrou. A razão diz, Igual e tudo é que é apenas dizer que se nenhum valor fornecido e fazê-lo, não, não, isso é tudo o que ele diz. Portanto, se nenhum valor foi fornecido dentro desta variável, então é padrão. Mas deveria ser “não”. Então, como está, estamos recebendo um valor sem retorno. Retorne seu URL em um vazio, alugado fora Loggins externo, mas não é ele sabe que está indo para a vista, Então ele não está retornando de você ou qualquer coisa porque isso é chamado que está correndo atrás da vista de qualquer maneira. - Não. Quando olhamos para a nossa tela, estamos vendo bem, temos o primeiro nome o sobrenome o endereço de e-mail a senha sob o Posser confirmado em vemos para o lado aqui onde eles estão dizendo isso. Certo, lembra dessa declaração? Se não houvesse serviços externos de exploração madeireira, então mostre isso, Senhora Deputada que não há água, água, seja lá o que estiver a ser apresentado lá também. Então, não, eu posso ir em frente e preencher este formulário. Então eu vou dizer usuário de teste, esse é o primeiro nome sobrenome e eu fui ver um teste no e-mail que com sabe que o e-mail não tem que ser um legítimo porque, bem, ele não vai enviar um e-mail de qualquer maneira, em seguida, o pastor, Eu vou usar a mesma senha p no sinal S S W Apple rd um em vai reutilizar isso em. Então eu vou registrar o “Não “primeiro. Então eu vou cometer um erro no pastorado e confirmar a senha. Eu clico em registrar. É validar e ver a confirmação da senha que eles passam na confirmação . Não faça muito. Andi, se olhares para trás para o nosso modelo, verias que essa era a mensagem que estava a ser enviada. Então eles realmente têm Ah compere gitano t mostrar que está tudo bem. Estou apenas comparando qualquer valor que está indo para isso com o valor que está indo dedo do pé, qual de outras propriedades que neste caso é senha. Então nossa senha de propriedade e, em seguida, as anotações de dados é comparar senha, que é essa propriedade com esta propriedade em, em seguida, o Aramis. Deve ser o pastor e o pastor de confirmação. Não muito tão certo Não é mesmo submeter ao post e saber se é válido ou não, está apenas me dizendo que eles não fazem muito. Tudo bem, no DSO eu vou ir em frente e re digitá-lo de uma maneira que muito é sabonete. Em San Avaliado, um Bort venceu da mesma forma. Se eu não colocar no valor do primeiro nome, ele está me dizendo que é necessário porque eu especificou os dados na notação que disse necessário . Então, tudo no formulário é necessário no DSO no preenchimento de todo o formulário, ele irá automaticamente pedir-lhe, basicamente ao mesmo tempo. Então, ao contrário dos controladores onde ele tem dedo do pé, vá para a ação post e, em seguida, verifique se ele é válido, em seguida, retornar com uma mensagem. É como se estivesse carregando o modelo inteiro e consumindo-o e informando em Fly que, , você está no filho da Violet fora do que o modelo vê, os valores são baixos para ser assim, primeiro nome, último nome endereço de e-mail patrocinado. Está tudo em ordem. Eu cliquei em registrar e então chegamos no próximo intervalo. Os pontos são os próximos. Ponto de ruptura aqui é no post sobre estamos vendo aqui que bem, vamos passar e olhar para o que cada linha faz tão bem, o retorno que você religioso sendo definido com base no que está sendo passado em. Então vendo se é se não está vazio, que eu quero o valor. Se estiver vazio, então basta enviá-los de volta para a página inicial praticamente. Isso é tudo o que parece. Os Loggins externos. Você sabe que estes já estão vazios, alguém para apenas sentar outro ponto de ruptura. E uma coisa legal é que você pode usar F 11 para ir linha por linha, mas eu realmente não preciso ir para essas duas linhas porque elas não têm valor para mim. Então eu posso definir outro ponto de ruptura em outro lugar, e então eu posso apenas pressionar cinco, e ele vai continuar para o próximo ponto de ruptura para que o IRA amarelo mostre qual ponto de ruptura ou qual linha é essa? Então eu removi aqueles dois e em nenhum lugar. Neste ponto de interrupção, você também pode passar o mouse sobre a linha e realmente clicar neste ícone. Então ele apenas executa a execução para essa linha exata de qualquer maneira, então temos várias opções para depurar ou destruir seu tribunal enquanto você avança. Passei por cima da Model State. Ele faz a verificação. Eu só vou fazer um 11 e ele diz que é válido, então ele se move para baixo no reboque. O oh, aqui está. Então o estado modelo é válido é ele é avaliado como verdadeiro, Então o que ele faz, é me dar de ah var. Usuários de nosso usuário que é uma nova variável são novos objetos. Então viers uma palavra muito grande que você pode usar para ver. Quero uma variável. Não sei que tipo de dados pode ser. Então me dê uma variável. A Andi. Assumirá que é apertado com base no que foi atribuído. Então, se eu disse Vier Nome, Andi disse, igual um que ele sabe que é uma inter faceta da cúpula de ferro é igual entre as aspas abertas em colocar em uma frase do que Gnome não é uma string. Então esse é o apoio da palavra Varty. Quando você não tem certeza de que tipo de dados você está esperando, você pode salvar ire no DA um nome de variável em. Então vai. Ele assumirá que o tipo de objeto depois. Então eu estou vendo aqui. Esse usuário var é igual a um novo usuário de identidade. Andi estava passando o usando-o em Este é todo o valor do nome de usuário acaba sendo o endereço de e-mail porque ele está passando o nome de usuário como entrada. Esse e-mail no e-mail como entrada esse e-mail. Agora não há nenhuma sensação para o nome de usuário. Se você tivesse colocado alguns para o nome de usuário, então você acabou de dizer usar o nome é igualdade de entrada ponto Qualquer que seja o campo um e-mail mutuals é igual à entrada que o e-mail A menos que você altere esse aviso de nome de propriedade que está criando o usuário com apenas aqueles que propriedades. Mas tínhamos outras propriedades mortas no primeiro nome e sobrenome. Portanto, precisamos modificar nosso tribunal para ter certeza de que quando criamos esse usuário entidade ele sabe o nome de usuário. E-mail. Primeiro nome Onda sobrenome depois de fazer tudo isso, ele passa no possível. É um cria outra variável chamada resultados em. Então este é o monitor do usuário, Doc. Criar um canto para que ele passa no objeto de usuário que acabamos de criar via identidade. O usuário de identidade que ele passa nesse objeto, bem como qualquer senha que digamos. Esta função praticamente vai tirar o hashing da senha e a inserção no banco de dados em todas essas coisas maravilhosas no Dennis. Se o resultado foi bem sucedido. Significado, nós criamos com sucesso este usuário no U no banco de dados, então eu amo que ele foi criado. Então o log EA foi criado em boas condições, em seguida, gera o cabo. Então, lembra-se disso, certo? Em nenhum lugar fazendo algumas coisas de confirmação por e-mail. Então vamos gerar esse acorde. Hum, e então ele faz que os fundos necessários. Geralmente, é todo esse tribunal, e então ele envia para a página de e-mail de confirmação. Então isso é um redirecionamento. Então, o pH confirme. Em seguida, ele vai no dedo do pé envolvido o serviço de centro de e-mail, que não configuramos em. Envie esse e-mail para qualquer e-mail que acabou de ser fornecido com o texto confirme seu e-mail. Por favor, confirme sua identidade clicando no link no corpo do e-mail que eram lugares do Senado enviando uma etiqueta no tornozelo com um link para quem acabou de gerar como o cordão de confirmação neste quarteirão fora do tribunal aqui neste quarteirão. Bloco legal. Parece que sinto muito. Tudo bem. Não, depois de fazer tudo isso, ele verifica. Não requer confirmação da conta Andi. Se isso acontecer, então leia Eric para a página. Então, esta é na verdade uma opção. Podemos desligar alguém para mostrar que você espera e desligá-lo. Mas eu ainda vou configurar o remetente de e-mail para que possamos verificar Holter. Podemos desligá-lo. Então, está furando. Está ligado ao nosso desligamento? Se estiver ligado, então queremos redirecionar esse discurso, que é outro documento de identidade que temos na luta com esse endereço de e-mail seguida, caso contrário, nós só queremos ir em frente e fazer login na pessoa . Então é isso que o bloco fora do tribunal que o gerente de contratação tem a ver com suas incisões de sinais . Se você está logando em estradas de registro, que a disfunção de ponto do gerente de assinatura arrastar este usuário no DSI é persistente, é cai sobre. Então redirecionamos o dedo do pé de onde você estava vindo. Se houver algum link atribuído lá, se houver setas, então especificamos as setas que estão sendo geradas. No final de tudo isso, retornamos a página. Não, isso foi um bocado. Quero dizer, o tribunal é bastante simples. Quero dizer, É meio que é muito. Sim, é simples. Se você apenas seguir a sequência, você pode meio que você viu isso? Preste atenção aos nomes dos objetos e aos nomes das funções. Você pode deduzir o que está acontecendo, e ele está morto porque criar uma pia. Vejo usuário. Tenho certeza que você pode descobrir que isso está criando o usuário com a senha, certo? Sterking Isso foi bem sucedido? Isso foi bem sucedido em? Então ele faz o que você sabe que é suposto fazer como ele vai junto. Tudo bem, alguém para ir em frente nos continentes, na verdade, apenas por engano. Mas eu cliquei no botão “play” nessa linha. Então, se eu apenas clicar neste botão play, você vê, apenas pula o dedo do pé dessa linha, ele apenas executa como ele vai junto. Então, tudo o que é suportado é feito, e se você quiser apenas ver o que acontece em uma linha específica, ele apenas irá avançar. Mas no final disto, não está terminado. Não é mais pausar para eu depurar. Então você vê que nós redirecionamos para este discurso, você está vendo mais rápido para confirmar seu tempo de chamada, Justin, para confirmar. E isso é obrigado por confirmar seu e-mail. Então essa é a próxima página para a qual ele passa uma vez que é confirmado em. Então eu quero sair do barco ancorado, e então nós vamos olhar para a base de dados e eu estou apenas interagir com a tabela e salvar seus dados. Então vemos que outro. Oh, eu já tinha aberto. Então, se você já tê-lo aberto, você pode apenas clicar neste botão de atualização aparecer e, em seguida, ele vai reexecutar que selecionar preocupação em re exibir os dados que estão lá e vemos aqui saber que temos para os usuários. Temos teste agora. Nós acabamos de criar, e nós conhecemos Crusader em aviso de que nós ainda não temos nome ou sobrenome para ninguém. Então eu vou modificar o tribunal para que tenham certeza de que o fusível adicional realmente é empurrado para o banco de dados. Antes de fazer isso, vou excluir o usuário de teste. Eu só criei. Eu só vou excluí-lo para que eu possa reutilizar esse endereço de e-mail Onda incorporado também é validação que você não pode reutilizar e endereço de e-mail estão usando você. Bem, sim, até estou usando ele se já existe. Então tudo fora, essas validações já estão incorporadas. Então não, eu vou voltar para minha cerimônia de navalha registrada no CSE Schimmel que o arquivo CS e então eu vou modificar nossa criação fora da identidade que os usuários são condicionais. Cama para o usuário diz, use o e-mail nome em Não, Eu quero dizer vírgula em quando eu disser vir. Eu estou vendo todos fora do outro fusível potencial que estão vindo do banco de dados também, Mas, em seguida, notar Identidade usuário não tem os medos adicionais que eu criei quando eu coloquei no empregado. Então, quando eu estou olhando para campos adicionais que ou estes são todos os padrões que eu não estou vendo primeiro nome não vendo sobrenome em. Eu posso apenas trazer de volta a classe de dados de funcionários onde usuário de identidade estendida, e eu fiz esses combustíveis dedo que eu não usar sobre, realmente. Eu os adicionei à mesa, mas não à turma. Orientação para o usuário. Então, na criação de um novo usuário de identidade, ele realmente não sabe sobre estes porque estas são partes de funcionários. Então o que eu vou fazer, então, é em vez de criar um novo usuário de identidade, eu vou criar um novo funcionários em então fora do curso, eu vou ter que trazer sobre as inclusões após a execução que está rodando o arquivo, e eu estou vendo novos funcionários no aviso de e-mail de nome de usuário nem manchetes porque funcionários sabe sobre o fusível de usuário identidade usá-lo no e-mail em Quando eu pressionar vírgula em, eu uso espaços de controle para ver a lista. Então eu vou notar que eu estou vendo tudo fora da identidade, usar seus campos, além disso, toe meus campos adicionais para funcionários. Então eu vou dizer também, primeiro nome é igual a pontos de entrada. Primeiro nome ligado. Então eu vou ver o sobrenome é igual a entradas ponto sobrenome, tudo bem, e eu entendo respirar o leão para que eu não tê-lo saindo muito da tela. Tudo bem, então esta forma de tribunal um pouco. Então agora eu tenho um novo funcionários sendo criado e lembre-se, funcionários estende identidade usuário soas, faras Qualquer coisa que requer identidade usuário está preocupado. Funcionários se parece com o usuário de identidade. Então eu estou criando um novo empregado e que eu estou deixando passar para cima na pia A. Criar. E se você olhar no se você discreta, passar o mouse sobre, mouse sobre, criar um dissipador e, em seguida, olhar para o que ele requer, você vê que ele requer usuário identidade. Estou passando por um empregado. Mais uma vez, está estendendo o usuário identidade. Então, na medida em que criar ISS pia está em causa. Ele está recebendo um objeto que se parece o suficiente como ilhas usuário, ele tem mais problemas. Vou remover os meus pontos de pausa. Desde que sabemos entender o que está acontecendo neste post enfrentando função, Eu vou fazer outro registro. Alguns apenas entre salvar todas as alterações em. Então eu vou fazer outro registro e então nós vemos o recurso completo. Não, desta vez eu não vou entrar em depuração mais como eu disse antes. O que vou fazer é usar as ligações aéreas do irmão. Então esta seta de atualização ao lado do botão de estrela entender para clicar que Dawn Iro Andi Em primeiro lugar , precisa de qualquer uma das meninas Airlink, se você ainda não fez então eu vou clicar painel de Erling do irmão, que traz este painel para a esquerda. Bem, aos meus direitos, isso pode trazer para cima em outro lugar na sua tela. Mas depois quero salvar-te, mano. Senhor. Agora, quando você fizer isso vai realmente lançar uma versão rápida off. Eu é chamado Eyes Express, que é tipo de construído em estúdio visual, mas então ele vai realmente hospedar Ah, encenando fora do seu site sem você estar em D ambos Morneau mais uma vez, se você está neste mais se você fizer qualquer ajuste, você pode acompanhar suas mudanças da maneira que você pode quando você está em pessoas mais defensivas, Rick pontos duro. Então eu vou ir em frente e me registrar e eu vou para você reutilizar o mesmo usuário de teste Andi endereço de e-mail e alguns não usam seu fim do militarista em. Em seguida, a senha é o mesmo Pastor p na assistência de sinal da organização um em. Eu só estou usando uma senha porque eu não quero ter muitos pastores e não lembrar você sabe qual é qual. Então, não, eu vejo. Primeiro nome, sobrenome E militaristas. Oh, não, eu estou adicionando os adicionais e expectativas de que quando eu clicar em registrar e eu estou registrado, quando eu olhar na base de dados, eu deveria ver que eu uso um registro com o primeiro nome no último nome. Então, quando eu clicar em registrar, ele vai para a ilustração de confirmação. E sim, sabemos tudo isso. Nós clicamos aqui , nos registramos, então não podemos ir e verificar no banco de dados. Vou trazer de volta o Visual Studio ainda não no modo de depuração. Mas eu vou para o meu explorador de objetos em Olhe na minha mesa. Acho que já o tenho aberto. Sim, eu sei. E, em seguida, quando eu clicar, atualizar, em seguida, ele vai me mostrar o registro para o usuário recém-criado, que é o usuário de teste no primeiro nome. Sobrenome tem valores. Então, para qualquer coisa que quiséssemos entrar, nós poderíamos apenas, você sabe, modificar nosso registro e ter certeza de que estamos contando para isso. Você também notará que, em discriminados vendo funcionários versus orientação para o usuário, então discriminador está realmente atraindo quais classes são baseadas classes que estão sendo usadas para criar esses registros de usuário. Então ele sabe que o usuário de identidade é a classe nesta situação porque essa era uma padrão . Mas depois modificamos e sabemos que estamos criando funcionários. Você está criando registros está na classe empregado em vez disso fora. Então isso significa que você pode realmente ter diferentes classes por tipo de usuário em. Você pode facilmente discriminar, que é o que, com base no discriminador. Mas isso é mais uma classe de ouvir que real. É como para papéis são qualquer coisa assim é só ver Oh sim, esta classe base foi usada para este disco em. Então talvez seja mais fácil para você administrar a pedreira. Não, para os requisitos de registro ou para a exigência de que no final do nosso registro, enviamos uma refeição. Vou desativar esse recurso indo para o início do ponto CS Então ele veio habilitado para mim. Não tenho certeza se é incapaz para você. Se não for, tudo bem. Mas se é por você e você quer enganar Lee, então podemos ver que estamos removendo essa linha. Então, quando estamos sentando fora dos serviços de identidades padrão que na identidade padrão, identidade usuário em você pode mudar dessa maneira. Você não precisa, e eu quero. Mas nós poderíamos mudar isso o empregado ou qualquer outra classe abstrata, mas eu deixo os padrões para os padrões. Certo. Mas então para as opções. Não quero essas opções. Você pode adicionar muitas outras opções. Você pode apenas dizer opções de vírgula pontos em. Então eles vão tipo de mostrar-lhe as outras opções que estão disponíveis para você. Desculpe. Bem, na verdade, na verdade, eu teria que refratar o tribunal. Desculpe. Então você pode ter várias opções. Você acabou de começar a expressão Lambda Options no nu. Abre cotação. Desculpe. Brisa. A corrida está aberta e próxima. Em seguida, com cada opção, ele faz com que o semi dois-pontos e opções Anisa ativado. Então você vê um ponto e, em seguida, você seria capaz de ver as outras opções que você pode tomar e especificar uma força de senha a partir daqui. Sabe, se você quiser exigir maiúsculas, minúsculas, caracteres únicos ou você só queria ser simples. Você poderia impor isso a partir deste nível. Você poderia definir o tempo padrão sobre o número de aveia Tarlac desligado às vezes. Você sabe que ele poderia limitar tantas coisas a partir deste ponto ou permitir tantas coisas a partir deste ponto. Então, um off as coisas que está habilitado é a opção para ter a conta de exigir confirmada é verdadeira. Isso significa exigir que eles confirmam que estão passando pelo e-mail. Eu só vou desativar que nós fizemos um pouco fora do trabalho em, então eu vou desativar isso em. Nós não estaremos confiantes de que o serviço de e-mail pelo menos não sei Então não. Quando alguém se registra, não precisa confirmar seu endereço de e-mail novamente no DSO. Provavelmente temos que voltar ao nosso registo no DCI e algo que ainda reflita esse gene . Então temos aqui que a pessoa está pronta agitada. Então temos que enviar o e-mail. Então, se desativarmos a necessidade do e-mail do que nós realmente não precisamos de nenhum fora desta escola, na verdade, a única chamada que precisa acontecer depois que a pessoa tem feito lobby com sucesso é o fato que nós vamos assiná-los e, em seguida, os redireciona porque tudo acima que vai além de no mais longo colocado, são os mais cegos. Mas tudo abaixo de mais tempo é voltado para enviar esse e-mail, redirecioná-los para a página, fazendo-os clicar em algo para confirmar. Tudo isso desaparece se permitirmos que a pessoa se registre. Então eu vou assumir todo o quarteirão fora do tribunal. Andi, eu só vou pegar toda essa brisa reta. O que vai acontecer é que quando alguém se registrou com sucesso foi simplesmente entrar em, em seguida, voltar para suas repetições de água que havia ligado. Eu vejo que sei que o registro, um, bloco fora do tribunal parece o mais simples Alguém teste o sal e eu fui me registrar novamente. Tudo bem, então eu estou no processo de sentir todo esse formulário e na verdade tentei usar o mesmo endereço de e-mail, e ele está me dizendo que ele já foi tomado. Então, mais uma vez, essa validação está lá para, tipo, o nome de usuário e, bem, isso é sobre usá-lo. Não necessariamente no e-mail, mas eu deixo isso para mais tarde, então eu vou ver um teste no test dot com, e nós usamos o CMP no sinal S W O R d um sinal de assistência do já um, e então nós clicamos em registrar e então nós observar que vamos estreitos dedo do pé permitido o em estados um redireciona para a página inicial em Nós não estamos mais sendo assim. Não houve necessidade de registro na confirmação. Nós apenas nos registramos e então estamos logados. Então, isso é tudo o que podemos fazer para simplificar nossa experiência de personalização ou registro. Todo mundo vai querer uma experiência diferente para seus usuários. 25. Funcionalidade do login no Rever: Ei, pessoal, neste vídeo, nós só vamos estar olhando através do log in funcional. Não vamos fazer nenhuma modificação ou trabalho demais. Eu só quero que tenhamos uma apreciação do que um processo de log in realmente é. Não, tenho certeza que todos usam sistemas. Quero dizer, você provavelmente tem logar em alguma forma de sistema para ser capaz de consumir este mesmo vídeo no DSO Você está familiarizado com o fato de que para entrar em um sistema você tem que fornecer alguns nomes, alguns únicos, identificar ar para você em, em seguida, fornecer uma senha que, bem, se qualquer um estiver em cartões, eles rejeitarão suas tentativas de obter acesso ao sistema. Agora, em termos mais simples ou em termos, falando sobre, você sabe, todo o fluxo entre o formulário e o banco de dados e a lógica entre o que realmente acontece é que você coloca um nome que você coloca em um você clica em, insira algo que coleta suas informações e, em seguida, verifica. Se esse nome nesta senha existir nas abelhas de dados. E isso é o que queremos ver exatamente inteiro, um, nossa aplicação, nossa aplicação, todo o nosso núcleo de rede escura realmente nos ajuda a alcançar esse tipo de funcionalidade. Então eu já estou amando aqui como teste esse teste em comum com o Click Lago. E então voltamos à estaca zero onde temos registro e registro. Então, já temos alguns usuários no sistema. Eu só vou clicar em fazer login em, em seguida, na nossa tela de login. Eles estão pedindo nosso e-mail e pastor, e mais uma vez temos acesso ao log em paz para que possamos personalizar isso. Podemos remover isto se quisermos. Podemos mudar a rotulagem. Podemos fazer nossas caixas de texto botões maiores, maiores. O que quer que queiramos fazer. Podemos fazer, mas por não, não estou incomodando muito a estética. Só estou me concentrando na funcionalidade. Então, quando fornecemos um e-mail e eu fui ver um teste de um ponto com em, então eu fui para evitar um passer Duquesa p em assinado S S W O R d um em. Então eu clico em log in o que vai acontecer, e eu apenas menciono o tribunal. Eu não estou no modo de depuração, mas entender para trazer o tribunal e nós olhamos para a nossa função juntos. Então eu estou encontrando blogs e olhando para o tribunal atrás ou os Rays são o tribunal, o arquivo judicial para os Raios de PGE. Então eu vou abrir esse arquivo do tribunal e então vamos ver o que acontece juntos. Então vemos que temos um modelo. É herdar do modelo de página onde a inicialização da guerra é, e então o material de injeção acontecendo lá em cima nós temos ou modelo de entrada. Então eles estão tentando manter o mesmo nome que atravessam. Não há nada de especial no modelo de entrada de nomes. Ele está tentando manter o mesmo nome para que não pareça, você sabe, muito confuso. Mas poderia chamar isso de um modelo de registro e outro na chamada PGA. Ele lançou um modelo, etcetera, etc, mas bem garantido, você não pode fazer isso porque eles já têm isso. Então eu estou apenas apontando, ou que o uso off modelo de entrada em ambos o login e a página de registro. Não é nenhuma palavra-chave, Percy. É que é assim que chamam a turma. Então temos nossos modelos e nossas propriedades que estão sendo desossadas para o formulário e, em seguida, dentro do modelo de entrada vemos aqui que temos ah, campo para e-mail, que é obrigatório, e é fora do tipo de endereço de e-mail, o que significa que ele deve ser formato de endereço de e-mail. Nós também temos a nossa senha necessária, e então nós temos algo que é um ouro para Lembre-se de mim ou não em obter ele renderiza a página praticamente. Isso é o que ele faz. Faz, diz “Return”. Você está se não for nenhuma mensagem de exibição RMT se precisar ser configurado. O retorno Euro Sino tiff, Se alguma coisa, que você possa ter um processo de registro limpo, ele tenta limpar quaisquer cookies que possam estar lá e, em seguida, no post. É aí que o trabalho realmente é feito. Assim que eu clicar, enviar ou eu poderia entupir o formulário. Ele aciona a ação de postagem, que então define o retorno. Você Earl valida o estado fora dos dados. Essa é a validade dos dados que estão sendo enviados e, em seguida, ele vai para ver resultados é igual a assinatura gerente encaixado senha assinar um coletor de modo que a assinatura posturada vai passar e você pode apenas passar o mouse sobre a função e, em seguida, você obtém um dica sobre o que ele está exigindo. Então ele realmente silencioso requer o nome de usuário na senha para entrar. Então está vendo “Me dê”. Eu uso o nome, dê-me uma senha, dê-me um valentão e dê-me um ouro. Isso é o que ele está pedindo Então estamos passando o e-mail porque estamos usando o e-mail como o nome de usuário, pelo menos por padrão. Isso é o que é. Então, a menos que mudemos sua sob formulário de registro e mudar a lógica e nós não precisamos mudar isso, mas entrada de e-mail, não e-mail na entrada da senha em então eles estão perguntando, Você quer se lembrar de mim? Então é isso que eles querem dizer com persiste que eu persistir as informações desta pessoa mesmo depois que eles fecham o navegador. Se eles voltarem e ainda estiverem logados. Então, a não ser que penses, lembra-te bem de mim o que decidirem é definido. Então ele meio que diz que o bloqueio em caso de falha é verdade. Então isso significa que se alguém vier e transferir, faça login ou alguma vez falhou tentativa de registro e bloqueá-lo direito. Então, esta função realmente leva suas informações hashes dis posturado porque lembre-se, nosso pastor não armazena a maneira como soletramos ou nós iria identificá-lo em um pedaço de papel que não é tão certo banco de dados. Portanto, esta função é responsável por transformar os dados no reboque. O que uma reforma é necessária, Verificando-o contra os registros no banco de dados em, em seguida, vendo sim ou não em. Então é isso que fica armazenado. Então os resultados são armazenados e ele tem uma bandeira. Foi bem sucedido ou não? Então, se foi bem sucedido, isso significa que a pessoa era amada estar lá. Não redirecionado a página inicial. Tudo bem, então. Se o se você sabe, com base no tudo sair dos resultados, então diferentes ações podem ser tomadas, e isso é praticamente o log on. Então, mais tarde, eles realmente têm essa função em postagens e verificação. E-mail, significa , Hum, isso é semelhante é sempre visto na página de registro, onde ele está enviando uma verificação para confirmar seus cones. Se você tentar fazer login antes de confirmar seus cones, então eles podem acionar isso. Então, todos eles estão lá para uso fora do curso que podemos tomar ou o que não queremos em personalizar o que queremos, você sabe, em uma partícula de distância Mas a fundação já está dito é entender confirmado que o log em funciona apenas clicando em fazer logon. Então a experiência é que somos redirecionados. Rasgou homepage em. Podemos ver que estamos logados porque eles estão nos identificando pelo nosso nome de usuário ou , neste caso, o endereço de e-mail. Seja qual for o valor armazenado na seção de nome de usuário, isso é o que o Norte tem. Se eu clicar, então vamos por cima do dedo do pé, gerenciar e, em seguida, gerenciar aloes uma configuração ou perfil. Então todos os é novamente, nossas páginas que nós acessamos oh em nós sabemos que perfil tem muito mais a ele do que apenas usar um nome e número de telefone, não o seu Continuar a usar o nome direito são liberados por padrão. Eles estão dizendo que você não pode mudar seu uso dele, mas nós podemos mudar todos aqueles diferentes. Só vamos fazer um perfil sobre mim. Basta encontrá-lo para que ele seja gerenciado. Então nós temos que entrar em gerenciar e então eu posso encontrar a visão de perfil, que eu sinto muito, talvez eu esteja procurando o errado, isso é barra de dinheiro barra índice são então é realmente uma barra cone gerenciar em lembrar que o primeiro discurso que você faria Senhor é geralmente Índice. Então eu só tenho que encontrar o arquivo de índice. Lá vamos nós. E esse é o nosso perfil. Nós vemos ou usá-lo no número completo em se entrarmos no tribunal atrás. Então, se quiséssemos o perfil completo fora do usuário, então teríamos dedo colocado em mais propriedades dentro do modelo que está sendo desossado para a vista e, em seguida, um ainda mais baixo, na verdade, você sabe, ímpares são subtrair do pêssego perfil da pessoa sobre o que eles podem e não podem mudar. Tudo bem, e veja aqui onde eles colocaram a bandeira. Desativar. Então isso é literalmente tudo o que desativa essa entrada para usá-lo. Eles só disseram: “ Deficiente”. Posso remover isso. Em seguida, eu carrego o usuário para ser capaz de alterar seu perfil são changer nome de usuário. Se eles precisam de pé sobre, em seguida, no post, o que significa que esta pessoa apresentou alguma mudança. Então podemos colocar em tribunal para ter certeza de que estamos contabilizando qualquer modificação que eles possam ter feito em seu perfil. Agora, como ato final, eu vou apenas orientá-los sobre o que acontece ou como o tribunal parece para o cabeçalho . Seis em. Ok, então isso está usando parecia diferente Leo página do que eu tenho. Eu só vou voltar e voltar de novo. Onda, vou guiar-te pelo núcleo que governa o que acontece nesta secção. Quando quando somos amados no que vemos e quando somos amados, tudo o que vemos no que está disponível dentro dos pontos de vista compartilhados entender o colapso do dedo do pé, são áreas completamente e ir para baixo para pontos de vista do que compartilhados em. Então podemos olhar em cima de registro parcial, por isso são longos, imparciais. Basicamente, ele herda a assinatura do CME e usar um gerente que vimos em. Então eles só dizem, se o gerente de lixar, que está conectado. Então isso é como uma verificação para ver é sua atual é que eles estão em sessão de usuário ativa agora . Se houver uma sessão de usuário ativa que significa que alguém entrou, então eu quero exibir na barra suficiente Ah, link toe a gerenciar no texto. Olá ao usuário dot Identifique esse nome. Então, qualquer que seja o nome de usuário é Qual a razão pela qual a coluna de nome de usuário fora deste usuário que é amado ser Isso é o que será impresso como um resultado fora que Então eu posso mudar tudo isso se eu não quiser dizer olá. Eu só queria dizer o nome de usuário. Isso é bom. Hum, e também há o botão lei cabra que quando clicamos bloqueio, ir para apenas postado logotipo Pass, que Termini sua decisão sobre se não houver nenhum. Então, isto é, se há muito da sessão em, então o outro. Eles estão dizendo que me dê o link do registro e me dê o link de registro ligado. Isso é basicamente tudo o que há para fazer login. Então, mais uma vez, você pode personalizar sua experiência se precisar de ajuda. Sabe que tem uma ideia particular em mente e não tem certeza. Exactamente. Manter executado. Sinta-se livre para me dar uma linha e ficar feliz em ajudar 26. Adicione papéis de padrão e usuário: Ei, pessoal, neste vídeo, vamos definir alguns padrões, algumas regras padrão. Padrão Onda, usuário administrador. O ponto de ter esses padrões seria que quando nós temos nossa aplicação lá certas regras que vão estar lá em nós queremos ter certeza de que pelo menos um usuário vai ser criado porque se nós terminar de desenvolver aqui e então nós movê-lo para um ambiente novo com nosso primeiro banco de dados. O ponto é que quando o aplicativo é iniciado em uso para criar certas coisas na parte superior da base de dados para que bem, podemos ter alguma autenticação e alguém com uma funcionalidade de função para que dois fora dessas regras serão administrador e empregar ano de idade em. Além disso, queremos ter certeza de que ganhamos pelo menos um usuário administrativo porque, bem, bem, quando todos se registram, eles devem se registrar sob uma regra de funcionário. Não, só um lembrete rápido. Nosso papel basicamente define quem você é no sistema. O que é que o que é que você pode fazer isso um administrador do que esse papel implica, ou que o nome da função implica que essa pessoa deve ser capaz de fazer Cada coisa é, você sabe, coisas administrativas no sistema, Usuário da Onda. Bem, nós sabemos o que é um usuário. Eu uso um pessoal louds em, Então a regra identifica o que este usuário pode e não pode fazer no sistema. Então, mais uma vez, queremos ter em funcionários e uma função de administrador em também pelo menos um usuário administrativo . Então, para começar, vamos saltar para o estúdio visual. Então vamos para a nossa aula inicial. Então vamos para o início dessa série e então temos que fazer algumas modificações aqui. Então, o que vamos fazer, ele configurar o que chamamos de semente de classe são semeando é algo que é um termo que é usado para descrever o que você faz para um banco de dados quando você configura padrões. Então, inserindo dados padrão no banco de dados, estamos chamando isso de semear o banco de dados ou colocando em coisas sem realmente passar pelos movimentos fora do sistema. Então estamos forçando dados para o sistema, e é isso que vamos configurar agora. A primeira modificação que queremos fazer é em horas configurar a função de serviços. Queremos encontrar a linha. Isso é um serviço. Essa é a nossa identidade padrão do pai em trabalho diferente? Por isso, temos de acrescentar uma mentira adicional a isto. Só estou colocando um pouco de espaço. Em seguida, após a parte onde ele adiciona identidade padrão e diz Identidade usuário, vamos para a próxima linha e, em seguida, eu digo ponto em seguida, o que eu quero adicionar é regras. Então eu vou adicionar alguma representação. Quatro regras. Então eu digo para adicionar regras. Aan den. A classe padrão para estava saindo da identidade é regras de identidade. Desculpe, regras de identidade e, em seguida, eu abrir e fechar parênteses em. Então talvez eu precise incluir algo aqui para me livrar dessa linha vermelha. Na verdade, o que eu tenho aqui é um erro de ortografia. Então é uma regra de entidade, não regras de identidade. Desculpe por isso. Então temos na entidade usuário e temos regra de identidade. Tudo bem, então nós apenas adicionamos isso aos serviços quando estamos iniciando ou padrão no mecanismo. Só estamos nos certificando de que as regras também serão iniciadas. Então, tendo feito isso, vamos passar para a nossa função de configuração em entender, para respirar essas linhas porque eu vou estar adicionando outras linhas para este parlamento. Uma lista do que estou adicionando. O 1º 1 eu só vou depois do fim. Se eu colocar vírgula, então eu vou adicionar gerenciador de usuários e, em seguida, eu vou abrir meus colchetes. E neste eu estou passando as classes de identidade para usuários em que, por padrão, estou usando Identity User. Então eu estou indo para reutilizar usuário de identidade aqui, então qualquer que seja o padrão. Então, se você é mais avançado do que você provavelmente teria mudanças no funcionário ou em qualquer classe de dados que você está usando toe over ready, então tudo bem. Mas seja qual for a classe que você está passando, vamos reutilizar a classe em que estou usando Identity User. Eu vou ligar para este gerente de usuários e então eu usei para fora, então a próxima linha vai ser rolar. Minha natureza tem sido entre parênteses e, em seguida, estou passando tástico em regras de identidade e apenas copiar e colar isso em. Então este vai ser o gerente de regras. Tudo bem, então nós temos esses dois novos parâmetros dentro off ou configurar a função. Não, O que precisamos fazer depois de ter completado isso está configurado. Ah, eu vou configurar uma classe estática, nossa classe que vai ser chamada dentro off ou configurar a função para que possamos definir a funcionalidade aqui. Mas é uma boa prática manter este tribunal o mais limpo possível. Então, qualquer elevador pesado ou qualquer corda adicional que não seja necessariamente apenas uma inicialização desapareça . Você provavelmente deve colocar em outro lugar e, em seguida, basta chamá-lo neste nesta função ou nesta fonte, começar sobre o arquivo CS. Então eu entendo ir em frente e passar para o meu projeto no Solution Explorer, certo? Clique em meu projeto e eu vou adicionar uma classe em. Vou chamá-lo de dados de sementes. Então, crie os dados de sementes de classe, tudo bem, então não estou ciente de nossa classe, a primeira coisa que vou fazer a essa classe é torná-la estática. Então, em C afiado, quando nos fazemos uma classe estática em significa que podemos chamar os elementos no castelo. As propriedades são as funções sem ter que inicializar um objeto fora desta classe. Então eu vou mostrar isso em alguns. O que exatamente? Quero dizer, mas vamos apenas fazer estática, então eu vou ter, ah, ah, estática pública. Então, uma vez que as classes estáticas, então todo o resto lá dentro precisa ser estático. Então, se você tem uma formação, ela tem que ser iniciada. Temos um imposto de propriedade, seja estático, mas estou chamando essa função de semente. Então, dentro dos parâmetros para isso eu estou tomando biscoito. Os mesmos dois permitiram que eu apenas instalei em startups. Entenda, Koba, e copie-os. Então, tenha o gerenciador de usuários no gerenciador de rolagem. Eu apenas copiá-los como os parâmetros dentro da função de semente ligado. Então eu fui aberto e fechar vários e, em seguida, fora do curso, eu tenho que ir em frente e incluir quaisquer espaços de nome faltando. Então eu estou apenas para controlar ponto em trazer todos os espaços de nomes que faltam. Lá vamos nós. Tudo bem, então isso é o que uma função. Mas então eu tenho duas outras funções que alguém tem um dedo do pé. Isso é um usuário de sementes e um que diz regras de sementes. Então eu estou realmente apenas em copiar esta linha porque eu não vou digitá-lo contado a partir do zero. Mas explicarei quais são exatamente as mudanças. Então este não é rememorizado usuários de sementes neste só vai ver o parâmetro para os gerenciadores de usuários. Só estou removendo o monitor do original e abrimos e fechamos. Prepare-se. Então eu posso apenas repetir esse passo abaixo. Mas este é chamado de rolos de sementes. Então este não tem o gerenciador de usuários. Mas este tem o gerente de funções. Então, no final deste exercício, você deve ter uma música de forma chamada Seed, que tem, que tem, com o gerenciador de usuários e os perímetros do gerenciador de regras um chamado de usuários de sementes. que só leva o gerenciador de usuários permitir er em um chamado semente rosa. Isso só leva o parâmetro de funções. Tudo bem, não, vamos começar com a configuração fora das nossas regras. Então eu estou fazendo isso dessa maneira porque queremos que as regras existam antes do usuário. Então, no dia, esse é o fluxo lógico. Então eu só estou fazendo isso como um fluxo lógico. Isso não é realmente necessário para ir nessa direção. Só estou fazendo isso é um fluxo lógico. Então vamos montar ou subir. Então, já identificamos que precisamos de usuários administrativos e usuários administradores serão os únicos que adicionam remover tipos de licença que deixam alocações, Aprovam ou rejeitam solicitações de licença e tal em Então nossos funcionários serão os únicos que apenas fazer login e solicitar licença e talvez olhar para o seu perfil e não ser seus próprios perfis, coisas assim. Então precisamos regras mais uma vez, administrador de funcionários. Então a primeira coisa que eu quero fazer você ver se eu quero verificar se a regra existe, porque se a regra existe, então eu não preciso criá-la. E depois da primeira vez, o papel vai existir. Mas não é como se eu fosse fazer isso. Que esta classe ou escreva esta pontuação, coloque-a na inicialização, faça, faça, crie as regras e, em seguida, retire-a da inicialização. Vou deixá-la na partida. E isso significa que se eu executar 20 vezes, eu não quero que esta regra seja criada 20 vezes. Então o que eu vou dizer é, se a regra não existe, então criado tudo bem, então toda vez que ele é executado, ele vai apenas dizer, Oh, Rolexes não está bem? Eu não me importo. Então, se não significa, talvez seja um novo banco de dados. Ah, sistema fresco lá. Não há nada na base de dados inicialmente. Em seguida, ele vai ir em frente e criá-lo. Então é isso que é uma pobre semeadura. E quando você está no seu núcleo corretamente, você pode, você sabe, ir em frente, ignorar um monte de redundâncias e erros. Então, onde Winter neste corretamente e ver se não rolar gerente. Um gerenciador de regras de aviso aqui é o objeto que estava passando no gerenciador de regras de parâmetro encaixado. Eles iam usar uma função do gerenciador de regras. Então vemos que temos um número de funções. O que? O que me interessa para esta operação é que o rolo existe. Tudo bem, então está vendo, se não rolar existe que uma pia e então eu vou abrir meus parênteses em seguida, o parâmetro que estou passando. Você sabe, o valor em passar para esta função é ah, string com Bem, o nome desligado, o fora das regras. Estou checando se o administrador do anúncio existe, então vamos pegar o valentão na bala real. E para isso eu tenho que dizer não resultado. Tudo bem, então tudo isso vai retornar um booleano dizendo: “ Será que existe? Sim ou não? Mas então eu estou forçando não. Só estou checando, se não for assim. Se não existe, então a ação que pretendo tomar é criar uma nova regra. Alguém para salvar a Ire. A função é igual a nova regra de identidade DSI. Então, o ciclo quando estamos criando, eu uso um usuário de identidade da Web. Quando estamos criando uma função, temos rolo de identidade, e então eu vou inicializar este novo objeto passando em um nome no nome vai ser igual ao papel que eu estou interessado em criar, que é administradores. Nome é igual ao administrador e, em seguida, use um ponto-e-vírgula. Então, estou verificando. Se ele não existir, então eu quero criar um novo objeto de função chamado Administrador, que removeu esse cínico. E assim estou criando uma nova função chamada Administrador. Isso é apenas o objeto. Agora eu preciso realmente agir a criação. Então a ação, a criação que eu vou ver os pontos do gerente de rolo criar, você acha? E então eu estou passando no papel que faz isso. Então, basicamente, está dizendo que se o administrador de função não existe, seguida, criar seu antigo on, então eu vou fazer a mesma coisa, então eu vou apenas copiar este bloco em. Eu vou fazer a mesma coisa para os empregados Rose. Então, já faça o cheque. Se você pegar isso, eu só vou mudar este tempo de administrador para funcionários. Vou me certificar de que criarei uma função chamada funcionários. Nós cuidamos disso assim. Então, não quando ele executa, quando este bloco fora do tribunal ou disfunção é chamado na inicialização, ele vai ver se não há nenhum administrador de chamada nominal criado. Se não é conhecido chamado Funcionários criados em para tantas regras quanto podemos precisar, podemos fazer blocos semelhantes fora do tribunal. Não, preciso ver o usuário administrador. Então eu vou escrever um bloco semelhante fora do tribunal novamente. Eu vou ver se gerenciador de usuários eu me lembro de usar gerentes o objeto que usamos na passagem e departamento er algo se gerente de usuário encaixado neste momento eu estou usando uma função diferente, então eu não estou quero ver é existe. Mas vou tentar encontrar por aqui. Bem, eu fui tentar encontrar pelo nome. Certo, então encontre meu nome em que eles usam o nome que estou dando para o meu padrão. O administrador é literalmente só para mim. Então, qualquer usuário administrador, os usuários administradores padrão só querem porque Acme on, Então eu vou ter que dizer que o resultado. Mas então os resultados desta vez não estão me dando um valentão. E na verdade está retornando o usuário. Então, para verificar, se eu tenho o usuário não são. Eu só vou dizer se o resultado é não. Então o 1º 1 estava devolvendo um ouro. Desta vez eu estou entrando em objetos sob ver Será que eu tenho um objeto completo ou a perna? Objeto eterno. Então, se eu tenho um objeto nulo, isso significa que o nome não leva isso ou nenhum usuário com esse nome existe. Então eu estou indo para salvar nosso usuário é igualdade novo em que estamos criando. Eu uso esse usuário de identidade divertido, em seguida, usuário T Andi, abrir minhas chaves em Então eu estou inicializando o nome de usuário. Bem, eu ainda gastei a identidade erradamente. Tudo bem, então deixe-me tentar de novo. Então, se eu controlasse o espaço agora eu recebo a minha inteligência. Eu posso ver nome de usuário é igual a em Eu estou sentado o nome de usuário toe admissão em. Então eu vou definir também o e-mail Então e e-mail é igual a ID Média no host local, algum arbitrário. Eu tinha um e-mail malvado. Quero dizer, não é, você sabe, é um usuário genérico. Então esse é o meu objeto. E então eu posso fechar ou desculpar, usar o cínico e terminar. Então eu preciso realmente criá-los. Então, vou salvar nossos resultados. É igual toe usuário manager pontos cria você acha? Andi, se você se lembrar de algo ou processo de registro quando estamos criando um dissipador, precisamos passar um usuário e uma senha. Então eu vou passar no objeto de usuário que acabamos de criar, uh, que é usuário de identidade. Você pode ver o pneu aceso e então você diz vírgula ligada. Então estamos esperando um pouco de corda. Isso vai ser os transeuntes eu sou realmente, realmente só vai manter a massa é simples na direita, a palavra senha com um p comum para adicionar média na senha em, então eu estou eu quero os resultados. Eu vou dizer resultados pontuais. Então, estamos vendo armazenar os resultados desta operação, por favor. Nesta variável depois que chegamos lá fora da operação. Não, precisamos checar. Foi bem sucedido? Não são assim que eu vou ver se resultado isso é bem sucedido. Em seguida, queremos Toe adicionado este usuário às regras. Então deixe-me abrandar e recapitular um pouco. Então você entende exatamente o que está acontecendo onde verificar se há algum usuário pelo nome de usuário admin. Se algo voltar então isso é falso porque estamos checando se é não. Então, se algo vier, mas então não se sabe. Então, obviamente, nada acontece aqui. Se nada voltar e não temos, em seguida, queremos inicializar são criar um objeto fora tipo identidade usuário chamado User on. Estamos passando o administrador usando ele em algum endereço de e-mail para este usuário e eles estavam indo para tentar criar este usuário. Agora, se este usuário foi criado com sucesso com o nome de usuário desligado, adicione-me neste caso e um desgraçado fora do curso. Isso sou só eu escrevendo e tentando manter as coisas simples. Você provavelmente colocou outros valores, mas a questão é, estamos verificando se isso foi bem sucedido. Então, se isso foi bem sucedido e descobrimos que estão se baseando. Se resultado que conseguiu, então precisamos atribuir este usuário toe nossa função porque acabamos de criar o usuário. E vimos que podemos criar usuários. Mas não havia associação com uma regra, pelo menos não antes. Não. Então, não, estou criando esse usuário no. Eu vou me certificar que após a criação deste usuário ele recebe um Scient ou alguém para dizer, gerente de usuário ponto estranho para governar, hum sobre. Em seguida, estou adicionando este usuário, para que ele passando o objeto de usuário na função que estou adicionando problemas. Itto é administrador vai com o administrador, rola fora do curso. Você quer ter certeza de escrever esta palavra corretamente porque ela está procurando por esse nome. Não vai tentar criar uma regra para caber no que você colocou lá. Então, se não há mundo pelo administrador do nome, provavelmente para obter uma flecha, mas sabemos que a maneira onde o inverno no tribunal é que o administrador mais existe antes do usuário ser criado, certo? Então, depois disso, nós apenas vemos pesos de ponto, que é basicamente indo para apenas aplicação. Certifique-se de que isto termine antes que muito mais possa acontecer. Tudo bem, Aan den, saiba que temos duas funções configuradas. Precisamos colocá-los dentro de quatro função principal, que é o que vai ser chamado, que então vai chamar esses dois. Então, mais uma vez, as funções mais existe antes que o usuário seja criado. Então eu estou vendo as regras de sementes primeiro. Aan den. Bem, ele espera um parâmetro do tipo gestor de função no valor da variável, principalmente gestor de estrada , que teríamos definido neste ele espera um parâmetro do tipo gestor de função no valor da variável, principalmente gestor de estrada, que teríamos definido neste parâmetro antes. Não. Então eu só vou passar os rolos de semente de valor e passou em Roll Manager tem objeto. E, em seguida, no mar Rose, eu vou dizer usuários de sementes em. Então eu estou passando o valor usado seu gerente. Não. Com tudo isso feito, temos mais um passo, que é para mim o ponto de inicialização CS Call que função sobre. Bem, obviamente na inicialização. Então precisamos adicionar o tribunal que causa essa função são aquelas funções set off em nosso arquivo de inicialização e que será feito dentro da função conficker em. Faremos isso depois de configurarmos ou os serviços de autenticação e autorização estiverem ativados. As minhas batidas, então, o que vou fazer é chamar a classe estática. Então, mais uma vez, uma classe estática permite que ele apenas chame para que eu possa dizer semente, é, uh, que é o nome da classe estática em. Então veja encaixado. E então eu tenho acesso a todas as funções que eu posso porque o que eu realmente só quero semente. Na verdade, o que eu vou fazer é me esses privados. Então eu fiz as duas funções que eu não preciso chamar de nenhum outro lugar particular. Então eu quero dizer usuários de sementes e sementes rosa privada Andi Bem, semente é pública. Então, quando eu chamar semente de semente saberá que tem acesso a sementes surgidas e usuários de sementes. Então eu só chamei Seed Aan den como parâmetros. Ele está esperando gerente de usuário e gerente rolado, e nós temos acesso a aqueles de nossos materialistas firmes. Em nossa função de configuração, os soldados passam pela ferramenta monitoram objetos que ela está esperando. Então ela é apenas uma grande cadeia de margaridas. Então nós apenas injetamos eles até o apartamento uma listagem aqui para que nós sabemos que podemos ter acesso para eles em então nós somos Daisy, encadeando-os para a nossa função estática que nós configuramos, que é então, por sua vez, indo apenas para passá-los junto para as funções que as exigem. Agora, a expectativa quando eu executar no lançamento de vínculo meu aplicativo é que quando eu entrar no banco de dados, eu deveria estar vendo duas regras. E eu deveria estar vendo que eu usuário chamado Admin Onda pelo menos uma entrada na tabela de funções de usuário mostrando que admin é atribuído ao particularize Tudo bem. Então eu entrei no modo de depuração e recebi esse erro e ele está vendo algo sobre eu iniciar outra operação na mesma ameaça. Então eu vou sair do barco ancorado. Vou refratar o tribunal. Em vez disso, vou atribuir os resultados da variável. Então eu só vou salvar nossos resultados é igual a on. Então eu vou dizer, criar Ihsan cruel, em seguida, obter os resultados. Então, da mesma forma. Na verdade percebem que às vezes é mais estável quando você apenas para o resultado, ou você obtém o resultado, mesmo que você não precise usá-lo depois. Então, vamos apenas fazer com isso ligado. Vamos tentar de novo. Andi medir sobre o grau de sucesso que então o fator é que o gerente de Roe não criar uma pia passando no papel que estava instando um pouco fora do tribunal. Não, estou vendo o vírus velho é igual ao mesmo bloco fora do tribunal resultados que alguém executar mais uma vez e vamos ver. Tudo bem, então desta vez ou aplicativo lançado com sucesso. Mas vamos verificar se o que para dados foi criado Alguns voltando para o meu projeto indo para meu explorador de objetos Escalon em. Então eu vou expandir. Bem, são usuários de amendoim. Em primeiro lugar, Andi, eu penso no topo Open já. Então, apenas um rápido re fresco em. Tínhamos que usar usuários. Agora temos três. Andi, eu estou aqui olhando para eles e eu vejo que esse meio não foi criado, são deixe-me algo provavelmente deu errado com o tribunal e nós podemos voltar. Mas não vou só verificar se as regras foram criadas, , então olhei para a ESPN, é Rose Stabler. Bem, ok, então pelo menos nós temos nossas regras de função de administrador e funcionários tão bem, se o usuário não foi criado e eu tenho certeza que o usuário e Rule Association não foi criado, então eu não vou se preocupar em ir lá, mas venha fora do modo livro em Nós podemos verificar novamente nossa batida semente Ah, configuração nossos caras. Então eu coloquei um ponto de interrupção dentro da função de usuários de sementes no Ben. Executei o aplicativo novamente em fez um passo através. Então, usando o esforço F, passo através de cada linha fora da quadra e vejo o erro fora dos meus caminhos. O problema é com a senha. Então, os resultados. Se eu passar o mouse sobre os resultados, então ele vai me dizer que o objeto está me dizendo que ele falhou porque o pastor requer não-alfanumérico. Então eu estava tentando um par de desconforto longe para colocar em um simples passador. Mas é impor a regra de que requer uma senha complexa. Então eu vou colocar uma senha complexa e então nós não teremos nenhum problema depois disso . Então eu estou indo dedo redigitado nesta temporada passada P no sinal S S O R D um em. Então eu vou mais uma vez executar em. Então devemos estar vendo nosso usuário administrador Onda a atribuição para a regra de administrador. Tudo bem, então foi baixo morto, livre de erros e então vamos olhar para trás em nossas tabelas de banco de dados, então eu espero ver o usuário. Então, a raia do topo abre. Então, quando eu atualizo, eu deveria ter quatro usuários. Aqui vamos nós, temos no usuário admin, recém-criado aan den. Se eu examinar as regras de usuário de rede da controladora, lembre-se de que esta é uma tabela. Essa é a função que o usuário tem. Ele vai ter uma referência do i d para o papel e uma referência para o i. D para o usuário. Certo, então esse é o papel que eu teria. E isso é o que o usuário i d parece como contra seus dois para cordas de aparência complexa . Mas essas são as ideias. Então, essencialmente, se eu quiser fazer qualquer off os usuários existentes pertenciam a um papel particular, então eu vou precisar encontrar que os usuários i d. Então eu teria que voltar para s usuários de amendoim em Vamos dizer que eu queria fazer o usuário t em s que seja eu quero que este usuário esteja no rolo off funcionários para que depois de tomar o empregado I d. E eu vou apenas fazê-lo e fluir um ano de idade I D e colocá-lo na coluna regra I D. Então, depois de ir e colocar esse usuário em, coloque-os lá dentro, pegue seu i d e coloque lá dentro. Implore o usuário i d coluna e, em seguida, eu posso mover para baixo. Assim, uma vez que você seguiu em frente, ele se compromete a mudar para o banco de dados para que você possa inserir manualmente registros no banco de dados. Então eu vou fazer isso. Vou fazer de todos os outros empregados. Então, já configuramos Adminis um administrador. Eu só disse que este 1º 1 como um empregado vai continuar. A mudança não é uma razão para eu estar fazendo isso manualmente. É que eles existiam antes que o papel existisse. Tudo bem, então o simples se eu que eles existiam antes do papel existir significa que não há nenhuma maneira de eu realmente voltar e dizer, hum, que eles são o que Rose são Eu estou fazendo isso manualmente porque não há outra maneira de Eu. Toe associá-los, pelo menos ainda não teria que ser painel Lota que estão mais próximos associar o usuário com a regra que queremos. Então eu estou fazendo isso manualmente, o que claramente não é viável porque estamos criando um sistema onde as pessoas devem ser capazes vir e se registrar no registro deve ser exclusivo para os funcionários. Então, há um pouco de sol ou uma suposição segura. Eu vou sair do modo de depuração, e eu apenas me certifiquei de que todos que não estão no sistema não estão no rolo de funcionários sobre isso. Temos as regras de administração. Então, mais uma vez, na próxima vez que o sistema for executado, ele não criará, recriará o usuário administrador ou recriará as regras porque elas já estão lá e nós colocamos nossas verificações. Não, eu estava na presença de ver que não é prático ter pessoas se registrando e depois voltar para a entrada do banco de dados e atribuí-las ao nosso papel. Então eu vou modificar ou registro cabo alguém de volta para áreas e de volta para nossas páginas de conta e encontrar ou registrar cabo que pegou atrás em ir para modificar este processo de registro onde ele cria o usuário. Então nós apenas fizemos isso, ele construiu um objeto de usuário. Em seguida, ele criou o usuário em. Então, ele disse que se a criação foi bem sucedida, em seguida, fazer algo Mas isso é exatamente o que nós acabamos de fazer em nossos dados ver. Nós construímos sobre objeto para o nosso usuário. Nós criamos o usuário em, então passou a dizer se ele foi bem sucedido do que queríamos adicionar à regra para que possamos tirar este bloco fora do tribunal aqui em, colocá-lo em nossa lógica de registro. Então eu vou dizer, se o registro se a etapa de criação foi bem sucedida, então eu quero adicionar a regra sobre, em seguida, tem que mudar o tipo de objeto porque estamos dependência, injetando ou temos a dependência ou um objeto representa o usuário monitorar outra pessoa para usar esse objeto gerenciador de usuários nele tem a mesma função em para rolar. Vai levar o mesmo usuário porque somos consistentes com a nossa nomeação, certo? Então você é consistente dentro de um eu em toda a aplicação. Ele pode usar os mesmos nomes em vários lugares e mover o trimestre com facilidade. Alguns inverno atribuem este usuário à regra, não administrador, mas funcionários. Então, sempre que alguém registra os designou para a regra dos funcionários, então podemos seguir com o que quer que tenha acontecido. Então eles podem ser assinados novamente e mais uma vez avançando. Quando as pessoas se registam, você assume que você está em uma estrada particular e pensa fora de qualquer outro sistema quando você se registra para você, também, nunca cometeria o erro fora, dando ao nosso usuário regular em adicionar papel médio por acidente ou qualquer coisa assim. Eles sabem que quando você estava neste formulário, você vai ser um usuário regular. Então sabemos em nossa aplicação. Quando você se registrar através do nosso formulário, você vai ser um funcionário. Estavam semeando na administração. Então podemos configurar um dedo do pé mecanismo. Adicionar mais anúncios significa talvez como entendermos, mas para não, temos um usuário administrador, e temos o potencial de ter tantos funcionários no sistema quanto precisarmos. E com isso feito, basicamente não estamos configurando as quatro linhas e os usuários padrão em. Nós também colocar em tribunal para que os usuários não padrão, você sabe, usuários ad hoc, usuários que se casam que qualquer ponto sempre terá um rolo padrão off funcionários. Então, em seguida, onde estão indo para configurar algumas autorizações para ver que se você é um administrador do que o seu menu, me olhar assim. E se você é um empregado do que seus muitos podem parecer assim também, se você é um funcionário, você não tem acesso a coisas administrativas sobre. Um administrador não deve ser capaz de pedir licença, sabe, coisas assim. Então, no próximo vídeo, vamos configurar as autorizações Parool. 27. Controle o usuário com autorização com papel: Ei, caras neste vídeo estarão olhando para configurar o acesso baseado em regras. Não, para algum contexto. Com a nossa aplicação, temos algumas opções. Temos a opção de solicitar licença, e também temos algumas opções administrativas onde eles podem resolver, crer tempos, deixar alocações, deixar aplicativos e gerenciar funcionários. Não dentro de uma aplicação real. E os funcionários nunca devem ter qualquer negócio gerenciando essas coisas administrativas no sistema e que da mesma forma. E o administrador provavelmente nunca estaria solicitando licença no DSO. Queremos restringir com base nos Turow's que temos, que são admin no empregado, o que cada 11 vê no menu e dois podem realmente acessar. Então, este vídeo é voltado para ver como podemos autorizar o acesso a certas partes do aplicativo com base em, bem, se você está amando ou não. Além disso, com base na sua regra, a primeira coisa que eu quero fazer é configurar mais contexto para um menu marcado. Então, quando alguém recebe esta tela, se não estiver logado, provavelmente só deve ver sua casa. E sim, sabemos onde quer que esteja jogando homepage, tudo bem. Mas no final, fora do dia, não queremos que eles sejam capazes de se levantar. Clique em solicitar licença, portanto, mesmo que seja exibido, eles não devem ser capazes de prosseguir com um pedido de licença neste dia. Faça login. Ainda não nos foram informados os recursos, mas ainda foi configurado todo Podemos, ou veja como podemos restringir o acesso independentemente. Além disso, se a pessoa não é amor ser e ainda mais se ela é amorosa, mas não é um administrador, não queremos que ela tenha acesso ou visibilidade fora das opções de gerenciamento no aplicativo. Então o que vamos fazer é começar configurando algumas autorizações. Ou algum dedo do pé de filtro saberá o que é exibido no menu? E quando voltar ao Visual Studio, se vamos modificar o menu do que temos que modificar a nossa página de layout porque é onde o nosso menu é definido ou barra suficiente? Então você vê aqui que nós temos o Dave Well, nós começamos com a barra de navegação e nós temos nosso botão, e então nós temos nossos links. Então este é o 1º 1 que é o lar. O 2º 1 que é aplicar para licença em, em seguida, esta seção onde estamos vendo que apenas um administrador deve ver isso em seu menu. Então toe contextualizado isso podemos provavelmente referenciar sobre Le Guin página parcial sobre ele meio nos dá uma idéia do que é possível. Então, quando não estamos autenticados, quando alguém não é amado no aplicativo, ele só verá um link que diz Registrar e um link que é um cone quando está registrado ou lobbying. Desculpe. Então eles estão vendo o mar na mesma seção Um link que está dizendo olá. Você está usando ele em outro link para a lei, cabra. O fato é que isso, se a declaração é, está lidando com o que eles vêem quando então a condição é que alguém entrou? Se houver, em seguida, exibida a mensagem de saudação e o botão de logotipo de outra forma exibir registro e registrar para que possamos adotar esse tipo de lógica off em usá-lo para determinar em nossa aplicação o que a pessoa vai ver na barra de navegação quando chegar lá. Então, a primeira coisa que queremos fazer é reutilizar este Se instruções eu estou apenas indo dedo do pé, copie isso e colá-lo para que ele vendo se o gerente de assinatura que está registrado no usuário. E então você vê que o gerente de assinatura tem uma linha vermelha porque precisamos de uma biblioteca para que o gerente de assinatura funcione. Mas antes de fazer isso, eu vou dizer que eles se a pessoa está conectado, então eles precisam ver este bloco, que é o lado lista suspensa vai fechar a declaração if. Então essa declaração está aberta. Prepare-se. Fechamos a cinta. Então, se a pessoa assinou, então vamos imprimir isso na tela, certo? Não, o gerente de contratação mais uma vez tem uma linha vermelha. Se eu voltar a registrar imparcial e prestar um pouco mais de atenção do que eu percebo que lá acima , incluindo algumas bibliotecas então sempre usando a Biblioteca de Identidade em também estavam injetando o gerente de assinatura e os gerentes de usuários. Eu só vou copiar tudo isso do registro em parcial, e então eu vou colar no layout no topo do poço. Então, estamos incluindo essas bibliotecas no layout. Seu layout realmente tem acesso aos objetos para o gerenciador de assinatura e gerenciador de usuários. E então quando eu transo sozinho, vemos que a linha vermelha se foi porque não, o pedido que bibliotecas são prisões. Então, isso está dizendo mais uma vez é o usuário conectado, em seguida, exibido alguém dedo para voltar para o meu irmão e testar o tribunal em. A expectativa é que quando eu atualizar que gerenciar não deve ser exibido porque eu não estou assinado aqui. Tudo bem, então depois de atualizarmos, percebemos que não há muitas opções para dinheiro, então saberemos que havia uma. Mas por causa da introdução off ou declaração, não há mais um. E então eu vou seguir em frente e entrar, depois ter no amor estar. Vemos que muitas opções não estão disponíveis. Então isso é tudo que você pode, você sabe, determinar o que permitiu ser usado ou vê em sua tela versus eu não sou amado no usuário. Não, dissemos que só queríamos que as pessoas que estão fora do cargo de administrador pudessem ver isso. Então, neste momento, esse usuário está fora da função de funcionários porque nós configuramos essa regra antes no dso essa pessoa quando mesmo quando essa pessoa faz login lá realmente não deve ver a opção de gerenciar. Então eu ainda vou ter a maior parte da quadra um pouco. Então vamos verificar se a pessoa adorava estar em? Então vamos ter que fazer outra verificação e ver se os pontos de usuário estão em regra. Então vamos especificar a regra que estamos verificando. Então isso é um condenado que é como uma convenção de funções. Bem quando você quer verificar está em algo ou leste alguma coisa, é apenas qualquer coisa que seja a ação. Então, estamos verificando se o usuário está na regra e na regra que estamos verificando para a turnê do ministério de anúncios . Se o usuário é um administrador e, em seguida, abrimos e essas chaves e lembre-se que foi com as declarações, o quer que esteja dentro das brisas, o que quer que esteja indo para obter ação. Então fizemos este bloqueio, colocamos lá dentro. Então, se alguém está amando estar em, se eles são administradores, então nós verificamos. Então imprimimos isto. Então, se eles não são administrativos e claramente isso seria impresso. Então, quando eu salvar isso e voltar para a página e atualizar, a expectativa é que, tendo sido amado em como um empregado, esta opção de gerenciamento desaparecerá no menu no Douala. Então ainda estamos logados como empregados. Mas não há opção de gerenciamento porque não somos administradores. Deixe-me tentar de novo. Eu vou adorar barcos, e então eu vou fazer login novamente e desta vez como administrador. Então eu vou dizer adicionar maldade na fumaça. Uma coisa inteira. Vamos lá, o P lá fora SSW rd um, em seguida, faça o login. Oh, meu Deus, mas isso não é ponto com. Este é o anfitrião Loca. Acho que vou precisar mudar isso. Eu provavelmente vou obter um erro de validação. Deixe-me tentar de novo. P no sinal S S W O R D um. Tudo bem. Então eu sinto muito. Eu configurou meu usuário administrador com um pouco de confusão. Então o nome de usuário que eu vou transformar em um endereço de e-mail. Então agora eu estou na tabela SB net users no banco de dados, e eu vou apenas ir em frente e dizer que eu estive em loca hosts dot com, Então, a fim de mudar isso, então nós vamos ter que fazer alguma configuração porque eu estava um pouco complacente em unidades , então eu só estou vendo que devemos ter admin at loca host dot com como o nome de usuário em, em seguida, esse mesmo nome de usuário ou endereço de e-mail como o usuário baixo normalizar perto em nossa cápsula em então nós sabemos os endereços de e-mail. Quero dizer, no host local ponto com no endereço de e-mail normalizado é local. Host é admite host local ponto com Então podemos apenas fazer essas alterações e enviar. Talvez você não tenha esse problema. Eu faço. Então, se você me seguiu até o chá, então eu estou apenas mostrando para você para tentar isso de novo. Então admin no host local ponto com a nossa senha e não foram registrados negócio são. Então eu estou amando este administrador em Dwell. A opção de menu não está lá, e eu tenho certeza que é porque eu estava soletrando erro em algum lugar, e isso é o que eu tenho. Eu tive muitos traidores assim Adminis Street ou sobre. Então eu vou apenas para mim que Jian salvar e, em seguida, atualizar e depois de uma atualização, agora estamos vendo o que estamos esperando. Então, o usuário administrador está vendo as muitas opções que o funcionário não conseguiu ver nesse usuário amoroso ou não amoroso. Ainda mais não consegui ver não. Restringir o menu é uma coisa. Mas então, se você é inteligente, você sabe, se você é um atacante inteligente ou alguém que está atacando assistente pode ser inteligente em. Eles podem estar prestando atenção suficiente para perceber que sempre que eles vão deixar tipos, os linxes, host local ou qualquer que seja o link é barra licença tipos. Agora, eu só vou fazer uma experiência e mostrar algo com esse alguém para copiar este link onde eu conheço essa garota. Eu vou adorar barco e enquanto estamos restringindo a visibilidade, então isso não é amor ser usuário em, estamos restringindo sua capacidade de clicar no menu e clicar em tipos de licença. Mas então, se eles estavam prestando atenção e eles foram diretamente para lá, então eles ainda teriam acesso, o que ainda é indesejável. Não queremos que alguém que não esteja logado, tenha acesso a esta tela, mesmo que digita o link indiretamente. Então, há outro nível de proteção que podemos adicionar para que possamos voltar ao nosso projeto. E desta vez vamos adicionar essa proteção ao controle. Então, vamos para controladores ir para deixar controladores de tipo ligado. Então, para o controlador de tempo de licença, podemos adicionar uma anotação de dados que é autorizada. Não, deixe-me colocar isso em perspectiva. Eu posso ver autorizado diretamente sobre uma ação, e eu vou fazer isso. Autorize. Tudo bem em. Então incluirei a biblioteca desaparecida. Então isso vai realmente dizer que se alguém tentar Bro's para esta ação ou obter a exibição associada a esta opção, ele precisará fazer login antes de chegar lá. Alguém para atender a essa mudança, salvar e, em seguida, voltar para a nossa página e, em seguida, lembre-se que quando nós apenas uma barra tipos de licença estão realmente carregando o índice. Então, quando eu atualizar isso, então você vai começar a ver a tela de login e, em seguida, o retorno que você é um link vai começar a fazer sentido onde ele realmente está armazenando. O retorno que você é é qual é a questão. Quando eu tento diretamente para Bros deixar tipos, isso me trouxe para a tela de login, então é isso que a palestra autorizada faz para você. Ele diz que se você disse isso sobre qualquer visão ou qualquer ação dentro do controlador quando essa exibição é solicitada, então a pessoa usou para fazer login para continuar. Agora que a lesão é que quando você definir sobre a ação, você vai ter que sentar sobre cada ação dentro do controlador se isso é desejado, porque se eles não devem ser capazes de ver o índice, então eles realmente não devem ser capaz de visualizar quaisquer detalhes. São nossos criar alguma coisa sobre, a propósito que nós se estamos sendo atenção mais uma vez saberíamos que se dissemos barra aqui é um exemplo tal que ele cortar um que Oh, bem, eu não tenho nada com eu d um fazer. Eu posso ser também. OK, lá vamos nós, então. Ainda posso ter acesso a isso sem ser autenticado. Assim por diante. Maneira mais fácil de configurar a autenticação para todo o controlador porque tudo o que é deixar tipos associados não deve ser acessível por alguém que não é um administrador. Alguém para pegar este rebocador autorizado e eu sou inverno em vez disso. Coloque-o no topo fora da criação de classe para deixar tipos de controlador. Então você tem a linha. Essa é a aula pública dele. Seja qual for o nome do controlador. Andi, você vai colocar que autorizar anotação de dados acima disso. O que isso faz é dizer que todo este controlador e todo o seu conteúdo e tudo o que ele foi colapsá-lo pressionando que menos Assinar todo o conteúdo deste controlador. Cada ação tem que ser o que você tem que ser autorizado, a fim de obter acesso a qualquer fora dessas ações. Então, quando eu faço essa alteração e salvo e, em seguida, ir e atualizar, eu percebo onde eu estou apenas atualizando a tela de edição, ainda não autenticado. Então eu estou recebendo a tela de login. E mesmo se eu tentar qualquer outro, posso sentir muito que isso está na minha área de transferência. Se eu tentar, deixe-me tentar remover isso e dizer barra deixar tipos em cara tentou fazer algo como criar para que eu possa ir barra criar. Ele ainda vai solicitar que eu faça login antes que eu possa seguir em frente. Não, deixa-me entrar no Just see. E só para provar que isso vai funcionar. Então eu estou fazendo login como um funcionário, estar fora do ssw rd one e então eu estou fazendo login em seu Não, eu tenho acesso à tela de criação sobre isso ainda está errado, então eu quero dizer, nós estamos construindo até ele. Então, isso ainda está errado porque, como funcionário, eu realmente não deveria ser capaz de acessar a criação para tipos de licença. Eu não deveria ser capaz de acessar nada para tipos de licença ou qualquer coisa que seja administrativa. Então não, precisamos colocar outra coisa em nosso autorizado fora para especificar quem está autorizado a obter acesso e quem, neste caso, significa a regra. Então eu posso abrir corridas com a palavra autorizar. E vemos que no tênis, nos sustentando que temos três opções a acrescentar. Temos esquemas de autenticação de políticas e temos regras nesta situação. Queremos regras, alguém para dizer regras iguais. Depois a regra. E eu revelei a brecha. Contente-se com você fazer isso mais tarde com a regra de que estamos autorizando a interagir com qualquer coisa dentro. Este controlador é adicionar turnê do ministério, alguém para mim, aquele ajuste e Seve E então eu vou voltar sendo logado como os funcionários, e eu vou atualizar e então você vai ver que nós nos damos bem na tela. Uau. Melhor ainda, nem conseguimos o acesso. Temos um acesso negado. Nós nem tivemos o pirulito na tela porque ele está dizendo que você não vai ter que ter a oportunidade de fazer login. Você não é um dedo do pé pesado. Aceda a este recurso, está bem? Então, se eu estava agindo como empregados, eu queria fazer isso, mas eu estava em tudo que eu tenho acesso hoje à noite. Eles não estão atrás da lei Cabras em, então faça login novamente. E então desta vez como administrador. Então lembre-se que foram mudar de administrador no host local ponto com no nosso pastor. Isto ser atribuído um pouco sarpy fora avaliado da organização um, e então eu estou logado. Então eu estou vendo minhas muitas opções, e então eu posso manos livremente para minhas opções administrativas. Tudo bem, então é isso. Então, podemos fazer nosso próprio, você sabe, global restringindo o acesso a certas partes de sua aplicação para certas pessoas. Então, só para recapitular, a primeira coisa que fizemos foi olhar todo da perspectiva da perspectiva HTML ou do pH Razer, podemos restringir o que alguém vê. Portanto, mesmo que seja um caso em que você queira que o botão de exclusão apareça para uma determinada regra, mas não para outra função, você sabe que um funcionário pode visualizar, mas ele não pode editar e excluir. Mas, em seguida, um administrador pode realmente e realmente só precisa de nossas declarações sobre. Na verdade, eu estou indo apenas para abrir a vista de índice para o tipo Leave. Já que é um que temos, vou mostrar que temos o tornozelo. Ele mostrará o botão de edição, um para os detalhes e outro para a exclusão. Só preciso de uma declaração “se “, como a que usamos no Leo para o menu. Eu digo, Se o usuário é amor ser, se o usuário está no papel, então eles podem fazer isso, em seguida, imprimir que mais. Imprima qualquer outra coisa, tudo bem, então isso significa que eu poderia dizer OK, imprimir os detalhes, mas mesmo assim, mas se a pessoa é má, então exiba a edição Onda excluir. Então é assim que podemos controlar o que cada linha vê a partir da exibição. Não, para o controlador, você sabe, restringir apenas com base no que eles podem ver no Click não é suficiente, porque se alguém está sendo atenção para as meninas, eles provavelmente ainda podem tentar Irmão direto para a página que eles estão interessados em Andi, talvez por Alicia. Então, a fim de bloquear o fosso, nós apenas teríamos certeza de que nós autorizamos se a pessoa antes apenas limitá-lo a log sendo pessoas e nós apenas dizemos autorizar. Então, para o contexto, quando você tenta ir em algo no Facebook e comeu um pouco de novo, isso é tudo o que eles realmente têm. Eles só têm algo que é acesso autorizado. Então este encontro a pessoa tem que se conectar, então, se você talvez você está com um amigo e você viu que eles tinham acesso de administrador para algo. Eu prestei atenção ao conde, e então você vai para casa e você tenta com o seu login, você pode ter acesso. Então talvez você não esteja na regra em que seu amigo está. Então o fato é que você pode restringi-lo com base na regra dizendo chave aberta autorizada, definindo a regra ou regras para que você sempre possa dizer vírgula em quantas regras você sabe que você pode ter. Então, neste caso, eu realmente só quero que a função de administrador para ter acesso a este controlador Andi, como temos sido, cargas são prever seus outros controladores que apenas o administrador deve ter acesso a , e eles vão ser outros controladores tão bem quando eu fui para restringir, mas apenas alguém que é amor ser devemos ter acesso a. Então, isso é tudo para aprender como restringir o acesso do usuário a determinadas partes do seu aplicativo e contextualizar o que cada regra de usuário vê. 28. Analisar e adicionar mudanças no GitHub: Ei, pessoal, bem-vindos de volta a este vídeo, nós vamos apenas rever todas as mudanças que fizemos em nosso projeto até este ponto na verificação em nossas mudanças para levantar-se. Não, só um lembrete. Se olharmos em nosso Explorer ou especialista em soluções, veremos que temos alguns arquivos com cadeados azuis. Isso significa que desde a última vez que eles foram verificados no controle fonte, eles não mudaram nosso eles não foram modificados. E então nós temos alguns com sinais próximos, o que significa que eles foram adicionados, eles são completamente novos arquivos, eles não estão no controle de origem. E depois temos alguns com alguns carrapatos vermelhos. E aqueles realmente significam que eles têm uma versão no controle fonte sobre estes significa herege que as alterações para esses arquivos ainda não estão comprometidos com o controle fonte. Então é isso que vamos estar fazendo neste vai ser um processo muito simples. Basta clicar com o botão direito na nossa solução. Nós clicamos em commit, então damos uma mensagem de commit para lembrar que queremos que nossa mensagem seja limpa e, você sabe, simples quanto possível. Para que alguém que apareça possa entender. Então escrevi uma pequena patroa. Você só está dizendo que eu configurou o usuário fora do padrão Rose e administrador em modificar o processo de registro. Então essa é a minha mensagem em quadrinhos. E depois de fazer essa mensagem, eu simplesmente não faço a seta e digo “Comprometa tudo e afunda e então isso vai.” Atualizando meu repositório local aqui na máquina também empurrou as mudanças para obter esperança. E mais uma vez, se você está trabalhando em uma equipe, então ele não vai carregar o mais recente, hum, projeto que está lá que você pode não ter. Tudo bem, vamos. Uma vez que esse processo é concluído, você sempre pode ir para ficar pulado. Vamos lá, verifique se o frango foi feito com sucesso. Então, no Greep. Oh, eu vejo que deixar a gerência nos últimos comitês lá em se eu entrar. Então foi. Mostre-me o que foi, você sabe, alterado como resultado de que commits ou qualquer pasta, qualquer arquivo que foi verificado com aquele comitê terá essa mensagem de commit ao lado dela . É isso. Então, na manhã seguinte você vai realmente começar a construir sobre o módulo de gestão de funcionários, e vamos ver como isso vai ser. Então é isso. Verificamos nossas mudanças e não estamos prontos para o próximo desafio. 29. Visão geral do módulo para leitar: Ei, pessoal, nós vamos começar um novo modelo fora ou aplicação, e isso será para a licença. A alocação para este modelo estará habilitando uma nova seção rasgada aplicação. Portanto, temos o nosso top gerenciado, que só é acessível pelos usuários do administrador em para a licença. As alocações estarão listando todos os tipos fora da folha, que já temos uma interface para criar. Então temos todos os tipos de folhas aqui que podemos criar. Mas então, para cada um que é criado, nós vamos para o pé, tê-los listados nas alocações de licença em. Em seguida, teremos botões dedicados que configurarão todos os dias de folga que cada funcionário tem para cada tipo de licença. Agora o truque é que vamos ter que fazer algumas alterações no banco de dados. Nós vamos ter que modificar a tabela de tipos de folha porque eu quero ser capaz de definir um número padrão fora destes por tipo de licença. Como, por exemplo, é padrão que você obtenha 10 dias de licença por doença todos os anos. Também é padrão que você obtenha 15 dias de férias todos os anos, etc. Então, quando o tipo de folha é criado, precisamos permitir que o usuário coloque esse número padrão fora de dias para esse tipo de folha em. Então, para a alocação, vamos ter que fazer ajustes em nossa tabela de dados existente. Além disso, porque você deseja definir essa alocação de tipo de licença para um período em que apareceu seria para o ano civil. Então nós vamos estar adicionando duas novas tabelas de banco de dados de loja, uma para os tipos de folha toe set, o número padrão off dias em outro para o período para alocações de licença de modo que quando atribuímos esse tipo de licença de alocações Onda o ele vai dizer que é para o período fora do ano em que ele está sendo definido, e nós vamos automatizar a descolagem desse cais. Então, sem mais, eu faço, hum, no próximo vídeo, vamos começar a trabalhar nas mudanças de banco de dados que estavam indo fazer em. Vamos construir este modelo gradualmente 30. Módulo de Allocation - Mudanças de banco de dados: Ei, pessoal, bem-vindos de volta neste vídeo vai começar a fazer ajustes em nossas classes de dados e então nós vamos migrar. Essas alterações nos bancos de dados devem ser um vídeo curto. É só para mostrar que à medida que desenvolvemos uma aplicação, queremos dizer, você sabe, mudar a maneira de pensar o jeito do Gene. Queremos implementar algo que tenha implicações sobre a estrutura de base de dados subjacente em ORD usando tribunal. Primeiro, é muito fácil modificar nosso banco de dados à medida que avançamos. Basta mantê-lo como optou oito quanto possível com nossos objetivos no momento. Portanto, nosso objetivo para esta lição em particular é adicionar a outros campos. Vou sentir a mesa dela? Então eu tenho que dizer a alguém que acho que eu sinto para colocar em cada uma na tabela tipo folha. Vamos adicionar um novo campo, e isso é para um número padrão de dias de folga. Então eu só vou dizer público em, então eu vou ver em então eu vou dizer dias padrão. Tudo bem, então este vai ser o número fora destes quando estamos criando um deixe para cima. Quando o administrador cria uma licença digite o padrão, esse será o número de dias de folga. Isso é padrão para qualquer pessoa. Isso é um valor base. Hum, quando você está alocando a licença, não, você pode fazê-lo caso a caso. Para dizer que você sabe, as regras de negócios ditariam que as pessoas que estão na organização por mais de cinco anos provavelmente obter mais cinco dias para água. O valor base é que você sabe, você não pode apenas gostar disso, mas é por isso que eu estou colocando neste valor base. Isso é para esses campos dizer que, você sabe, você sabe, no momento da criação fora de um tipo de folha? Este é o número fora destes que é padrão para este tipo de folha. Então nós vamos adicionar isso aos dados T a classe de dados e a classe de dados mais uma vez está na pasta de dados em nós encontramos o particulado um que é deixar, digite em. Adicionamos a propriedade em, então a próxima que estamos ajustando é alocação de licença. Então, para alocação de licenças, já temos o número de dias de folga. Andi, não é redundante. Estou definindo o número de dias na alocação também, porque lembre-se, este pode ser um valor calculado em uma base caso a caso. Além disso, queremos que esse número seja modificado ou, pelo menos, reflita. Quando alguém está se candidatando para licença vai precisar deste número dedo fazer algum mestre, mostrar-lhes quantos dias eles realmente têm contra eles fazendo difícil, certo, Mas o ou deixar alocação para estar armazenando o número fora dias que AARP articular tem em um tipo de folha particular em. Então o que eu vou acrescentar a isso é um período nesse período mais uma vez indicará que Bem, eu estou chamando um ponto. Eu sou período realmente vai ser um fim que representa o ano. Então isso está sendo gravado no ano 2020. Então esse é um primeiro período que será introduzido no sistema. Então, no período de 2020, quando eu localizo licença, todos foram buscar isso articuladamente para o Pier 2020. Quando for 2021, o sistema será configurado de uma forma que eu quero dizer que podemos automatizá-lo mais tarde. Mas a maneira que eu estou construindo isso sabe é que quando eles clicar, alocar, deixar tipo que ele deve verificar está lá na alocação para um empregado para um determinado período que é apareceu em que. Não, se houver, então não faça de novo. Se não houver, então aplique. Então, se fizermos isso uma vez para 2020 que os funcionários nunca devem obter outra alocação Inter para o período de 2020. No entanto, se fizermos isso em 2021, em seguida, que o empregado que teve para 2020 vai saber vai obter uma nova alocação para 2021 em. Tudo será recalculado. Mais uma vez, as regras de negócios podem determinar que podem ser usadas para determinar o número real desses em relação ao valor base. Então eu passei por um monte de explicações, mas eu estou apenas mostrando a justificativa para as modificações que eu estou fazendo isso. Eu não quero que este seja outro tribunal junto. Quero que entendamos exatamente o que está acontecendo sobre por que eu estou fazendo as mudanças para que você possa ver isso de uma maneira diferente. Quer dizer, você sabe, ter uma maneira diferente de pensar se você se sentir livre para compartilhar isso comigo. Mas para não, eu estou adicionando esses dois sentimentos por essas razões particulares. Então saiba que eu adicionei essas taxas. Eu tenho uma série de ajustes em mim. Caso contrário, em primeiro lugar, preciso atualizar o banco de dados real. Lembre-se que nós já teríamos gerado o banco de dados. Se eu ir para o SQL Object Explorer mais uma vez, se você não vir isso sobre painéis estão em qualquer lugar na sua tela. Você sempre pode ir para ver em encontrá-lo. Explorador de objeto de servidor SQL em. Então, se eu drill-down no banco de dados, que é gerenciamento de licença, então você vai ver que eu já tenho essas tabelas e deixar tipos é bem, ele não tem o padrão essas colunas que eu acabei de adicionar. Tudo bem, então ele tem um braço de três sentidos, e é menos padrão. Então, obviamente, eu preciso atualizar este banco de dados para que ele não tem d para estes. Então, a fim de fazer isso, vamos para o nosso pacote. Console do gerenciador de pacotes Cônsul. Desculpe em. Se você não vir isso no menu base, você pode ir para as ferramentas em você. Veja, você começa gerenciador de pacotes, e então você pode dizer console gerenciador de pacotes. Então é nisso que você pega essa ferramenta. Em seguida, aqui você pode adicionar uma migração. Então, cada vez que você faz um ajuste no seu banco de dados, você quer dizer o arquivo? Você sabe, você fez ajustes nas classes de dados e você tem que adicionar uma migração. Onda. Já passei por isso. O que eu faço de novo. Cada vez que você adiciona uma migração, você obtém um novo arquivo. Esse tipo de retrata as mudanças. Então, quando você estiver adicionando a migração, você deseja colocar uma pequena mensagem. Seu dedo do pé meio que retrata as mudanças que você fez. - Não. Se alguém vier depois de 56 meses sem as suas migrações, eles têm este projeto fresco, talvez até mesmo do gueto bar. Do que a um monte de motor de origem. Eles podem executar facilmente um comando que examinará toda a migração primeiro e criará o banco de dados para o último ou mais recente padrão. Portanto, é uma boa maneira de rastrear as alterações que você está fazendo, e você sempre pode remover migrações. Você sempre pode revogar as alterações feitas, mas é uma boa maneira de rastrear todas as alterações feitas no banco de dados. Então adicione migração e, em seguida, eu vou dizer, adicionou e dias de falha. Onda aqui estão bem, então eu estou vendo padrão adicionado. Estes e par daqueles são as duas coisas adicionaram uma imprensa enter. Ele faz alguma magia onde ele constrói o projeto em Uma vez que é concluída, vamos ver a compilação da mensagem bem-sucedida e que podemos remover a migração pelo seu nome. Mas o mais importante, se você olhar nessa migração para, você vê que há um novo arquivo de migração que reflete isso ontem à noite? Ótima. Então nós apenas adicionamos Certo, então esse é o primeiro passo. Passo dois ou bem, será o passo dois. O primeiro passo será fazer uma modificação. segundo passo é adicionar a migração no dedo do pé finalmente, embora a atualização de segurança do banco de dados no banco de dados Dash, e você pode realmente apenas para parar a instrução auto complete e, em seguida, você pressionar enter on . Em seguida, ele irá mais uma vez construir o projeto em def. Tudo está bem, então você verá mensagens de sucesso em. Em seguida, a demonstração final de sucesso é voltar para o banco de dados, atualizar os objetos de dados em, em seguida, olhar e verificar se os novos campos foram adicionados às respectivas tabelas. Então eu estou indo para tabelas indo para tipos de licença, perfurando para baixo em colunas. Em seguida, você verá os dias padrão que foram um pouco bem-sucedidos na mesma maneira para alocações de licença . Você verá que há um novo campo chamado período. Além disso, o arquivo do tribunal para a migração pode ter aberto para você onde eles estão mostrando todas as modificações tão terríveis para mim. Então você quer dizer que você pode gastar tempo, você sabe, apreciar isso, mas geralmente é gerado para você em Se é livre de erros, então você realmente não tem nenhum problema. Então eu posso excluir que as próximas mudanças que eu quero fazer, hum, hum, estão em torno dos modelos de visão. Portanto, lembre-se de que os modelos de visualização estão literalmente modelando a classe de dados. Podemos adicionar e remover as sensações como quisermos. Mas para o tipo de folha V. M. Certo? Não, eu preciso ter certeza de que eu tenho representação para os dias padrão, e eu também tenho que ter certeza de que é necessário alguém para dizer exigido que eu vou colocar na propriedade em Eu só escrevi adequada e pressione parou duas vezes em dias padrão. Lembre-se que ano você precisa coincidir com o caso em muito o nome para que os mapas de automóveis forma limpa em. Eu também vou colocar em algumas outras validações como eu estou indo para definir outra anotação de dados em, e eu vou chamá-lo de intervalo. Então intervalo é basicamente me permitindo validar um campo numérico, e leva ah muitos momentos de máximo. Então o mínimo é um, mas não faz sentido. O outro tipo de licença com zero D no máximo é talvez Oh, não. deve haver nenhum tipo de licença que exceda 25 dias. Tudo bem , quero dizer, você pode colocar isso. Você pode usar isso com um grão de sal baseado nas regras de negócios e qualquer que seja, hum, diretrizes que você recebeu pelo negócio fora do curso. Você tem que gerenciá-lo em conformidade. Então eu vou definir no ar uma mensagem que significa que a mensagem de erro não será o que é exibido quando este intervalo violado. Portanto, a mensagem de erro é Digite. Ah, número valioso. Tudo bem, então quando isso for, você sabe, violou essas regras, então você verá a mensagem. Insira um número válido. Então esse é o tipo de folha VM e, em seguida, apenas da mesma maneira para a alocação de licença off. Além disso, eu quero colocar um nome de exibição adequado surround avisos, dias padrão como uma coisa de caixa de câmera. Então eu vou colocar em uma exibição sobre o nome em, em seguida, o texto que eu quero exibido é número padrão fora destes. Então o número padrão é desativado. Isto é ver o que é. Este é apenas o rótulo que será impresso no formulário que deixar o tipo Veum é usado na alocação de licença. VM já tem algumas coisas aqui. Alguém para modificar isso. Deixar alocação v m. Eu teria criado com uma coisa particular em mente, mas eu vou ser modificá-lo. Mas à luz do que estamos fazendo, eu vou fazer os seguintes mods primeiro antes de números fora dias eu estou indo dedo do pé. Tudo bem, bem, vou voltar a isso. Então eu vou remover o rebocador necessário Onda. Eu também vou adicionar ah, propriedade quatro período I Mais uma vez, P estrada representa esse ano civil. Essa é a alocação é válida. Quatro. Tudo bem, então fizemos uma pequena marcha. Eu posso construir este projeto e então vamos ver se temos algum problema com as modificações que fizemos até agora com base na velha mensagem put e ver que ele foi bem sucedido. Então eu não tenho erros. E assim terminamos com quaisquer atualizações de banco de dados, pelo menos para não. Então, no próximo vídeo vai começar a projetar a vista 31. Módulo de Allocation - criar visualização: Ei pessoal, neste vídeo, vamos criar na configuração da funcionalidade necessária para suportar ou deixar a alocação. No entanto, antes de entrar em tudo isso, eu só vou fazer algumas modificações em algum código existente, ou seja, as visualizações que estão lá apoiando as operações de multidão para tipos de licença. Não, se você se lembra, nós apenas colocamos um novo campo nos tipos de licença, e isso foi para o número padrão de dias de folga. O que eu quero fazer é refletir esse novo valor. Então eu atualizei o modelo de exibição, atualizei a classe de dados e o banco de dados e tudo mais. Mas precisamos realmente mostrar esse valor para o usuário. Então, se eu voltar para as visões existentes sobre isso é você sabe, você pode fazer isso de duas maneiras, você pode tentar regenerar todas as visões, o que para mim é meio estranho, você sabe, tedioso. Toda vez que você faz uma alteração, ele após região eri a exibição ou você pode apenas aprender a modificá-lo. Então, se você tem um apreço pelo todo, o tribunal é uma entrevista que ele pode apenas modificar porque você modificou seu modelo de visão. Você tem novos dados precisam exibir os dados que deseja remover. Se você sabe como mudar o componente visual, que é a visão, então você pode, você sabe, flexionar um pouco mais facilmente. Então, com tudo o que disse, estou começando com a velocidade do índice. Então eu quero estar na lista. Desconhecem Alicia no nome nas datas em que o tipo de folha foi criado. Pessoalmente, acho que podemos fazer sem a data criada. Eu usuário que vai para ver a lista fora. Deixar impostos? Não, quando não precisa saber quando o tipo de lead foi criado, no entanto, o número padrão disso pode ser útil. Então o que eu vou fazer é substituir esse campo por padrão está tudo bem. Então nós vamos obter o nome de exibição para o nome, que nós não colocamos nenhuma notação melhor para isso. Então, só vai ver o nome. Eles obterão o nome de exibição por padrão. Estes e eu apenas voltar em dobro, verificar o modelo de vista e ter certeza de que eu estou derramando vermelho. Obtém o nome padrão antes deste camelo Desculpe cased que está correto em. Então vamos ter a exibição para em vez de exibir o grande criar que eu vou exibir os dias padrão em tudo o resto pode permanecer o mesmo. Assim como nossa tabela de dados para tipos de folhas. Só vai ter o nome no número padrão de dias de folga para esse tipo de licença? - Não. Da mesma forma, eu preciso mostrá-lo na edição porque agora é ele está mantendo a data criada e a idéia. Está a escondê-los, claro, mas preciso de uma maneira de fazerem uma mudança, certo? Especialmente porque isso é depois do fato. Porque acabamos de adicionar isto. Então, isso significa, felizmente, que só criamos três. Nós podemos voltar e apenas editar os três em Coloque no novo sentimento que está lá, que é necessário. Então eu vou apenas para copiar esta seção que nos dá a caixa de texto em, entender para colá-lo, eles não querem dizer que é antes dos quatro dias em vez disso. Tudo bem, , então, tudo o que disse nome. Eu só vou fazer com que veja antes disso. Certo, agora temos duas caixas de texto. Um para o nome, um para os dias padrão. Tudo me deixa na mesma. Vou ver os detalhes sobre os detalhes. Eu posso manter a data criada porque quero dizer, aqueles que seriam um detalhe. Então eu vou apenas copiar tudo fora da grande pasta bit criado. É sobre duplicar isso. Mas eu vou mudar um deles para dias padrão. Como vê, fazer modificações é relativamente fácil. Quero dizer, você tem a estrutura, você sabe, o valor que deseja exibir. Você tem o acesso ao modelo no modelo, dá-lhe acesso a tudo o que estava dentro da classe modelo vista que você teria definido. Então eu vou ver isso. E, em seguida, a modificação final que eu vou fazer é na criação desta modificação é muito semelhante à edição. Então eu já fiz isso na edição nas edições e criar realmente são idênticos. Então eu estou apenas indo para copiar isso em, dividi-lo em criar em dso quando estamos criando um tipo de folha, temos o nome no padrão é que precisamos fornecer e precisamos fornecer ambos porque ambos são puxados conforme necessário. Tudo bem, então com essas modificações feitas foram para o aplicativo. E não, estou olhando para a minha inexperiência. Estou vendo que todo mundo está no zero. Bem, vai estar aqui porque quando o banco de dados foi atualizado, Andi anula o valor. Não era uma carga. Então tivemos que colocar. É difícil colocar um valor padrão, que é zero. Então, mais uma vez, nós já dissemos que zero não é um valor aceitável na praticidade. Assim, do lado do usuário, teríamos adicionado a validação do intervalo para ver 1 a 25. Mas do banco de dados, você sabe, isso é um lado do cliente ou esse é o lado da interface do usuário da validação. O que acontece no banco de dados pode ser uma história diferente. De qualquer forma. Teríamos adicionado a funcionalidade dedo do pé editar alguém para apenas clicar no meio Bun. A edição para estas ferramentas para férias, mesmo teste de licença médica é irrelevante. Alguém para testar, certo? Não pressione excluir. Clique em OK em, então isso vai fazer a sua coisa. Mas eu vou para editar por um número de dias e notar porque o número que eu estou recebendo aquele seletor de números eu realmente revestir. Está me dizendo que eu preciso inserir um número válido para que ele esteja realmente validando que o número tem que fazer sentido. Então dissemos que 10 era o bomosuficiente para as folhas doentes. Salvar alterações em dez centavos foi passar para o outro. Editar na licença de férias Digamos que o número padrão de dias de folga nesta organização é 15. Então, fazendo ele modelá-lo assim, você sabe, cada organização pode ir e definir seus próprios dias padrão de acordo com suas regras de negócios . É entender que o dedo do pé fecha as janelas em excesso. E então lá vamos nós. Então deixe-me apenas atualizar isso mais uma vez para refletir valores reais de 10 e foram 15. E, em seguida, quando vamos criar novo, temos nome e antes lá. Então eu vou chamar isso na licença de maternidade no número padrão fora deste para licença de maternidade é o que nós definimos como as marcas 25. Então digamos 25. São cerca de cinco semanas. Pode ser mais do que isso para que ele possa ver não, que minha validação pode precisar ser ajustada porque se são 50 dias em uma organização e isso claramente não pode ser 25 e com base na minha validação, 50 não é um número válido. Então você sabe, você teria que sentir sua aplicação de acordo com as regras de negócios que você está usando ou você está aderindo a alguém para criar esse novo tipo de licença no DNO. Temos três tipos folheados foram licença de maternidade. Temos licença por doença. Temos licença de férias , não que não façamos modificações. Dedo são tipos de folhas. Vamos trabalhar com esse foco. Desculpe por criar a exibição para a alocação. Então a primeira coisa que eu vou fazer é criar o controlador para a alocação de licença alguém dedo sob parar isso porque eu quero me aposentar. É que eu vou quebrar controladores Goto adicionar controlador. Vamos criar que o leitor de controles NBC no anúncio Ação Slick quando chamar o seu controlador de alocação de licença e clicamos em adicionar Uma vez que temos o controlador, então eu vou apenas fazer a minha injeção de dependência regular, incluindo o nosso er esfregão em ido sobre nossas pessoas tipo folha, bem como nosso relatório de alocação de licenças. Então, apenas a expedite, sua compreensão para passar por cima para deixar tipos ligados. Então vou pegar emprestado. Então, em primeiro lugar, eu estou com o bar autorizado porque, bem, isso é realmente padrão, então nós deveríamos ter feito. O autor está acima do controlador. Lembre-se de que estamos autorizando os administradores a interagir com qualquer coisa neste controle no. Então eu sou um restaurante para pegar essas referências. Em seguida, eu vou adicioná-los na parte superior do controlador em, em seguida, apenas usando o meu ponto de controle Adicionar quaisquer referências ausentes. Então faça o repositório tipo de licença e eu vou chamar o cisne. Ive re puxar em indo para duplicar que em vai chamar este. Deixo alocação, alguns referenciando o repositório de alocação I deixar neste é deixar I relatório de localização. Então eu realmente estou apenas mostrando a vocês o fato de que você pode ter vários repositórios dentro de um controlador. Não é necessariamente que se o controlador é chamado para uma determinada coisa, então você só pode usar fazer operações para isso porque eu vou obter tipos de licença envolvidos e eu vou estar fazendo alterações na tabela de alocação de licença também. E assim qualquer um dos dois repositórios. Então eu estou apenas, você sabe, configurando o controlador no construtor aqui em dis mudando todos os objetos. Então eu tenho representação fora do repositório tipo folha no repositório de alocação de licença. Então, quero dizer, eu não estou falando sobre essas mudanças. Estou tentando vendê-los o suficiente para que você possa ver o que está acontecendo, e eles são bastante simples. É só copiar e colar. E eu estou literalmente apenas adicionando uma linha dos repositórios que já eram referência de tipos de crença em diante. Se eu tivesse a linha na declaração aqui, então eu estou adicionando que uma terra para o construtor em, em seguida, fora de curso para fazer representação para ele no corpo. Então eu não estou consertando as linhas vermelhas. Só estou mudando as referências do quarto primeiro. Então, no relatório de licença placar vai ser igual a sair. Relatório. Aqui temos no placar. Deixar alocação, re puxar ser igual a deixar alocação. Ondulação no DMA. Per é um campista feliz. Não temos que mudar nada na minha parte superior. Tudo bem, hum, você vai. Então é sublinhado vindo da referência da declaração deve ser igual igual ao sem sublinhado vindo do instrutor con. E então eu fui mudar o nome do construtor. Claro, Toe realmente dizer deixar controlador de alocação. Então esse é o nosso construtor. Eu só dirigi para fora em linhas diferentes em vez de ter uma longa linha rodando. Então eu só vou usar meu controle ancorado em referência qualquer coisa que está faltando. Por isso, temos de fazer referência ao meu superior em que nenhuma ordem é restaurada o nosso universo. Então temos todos os quatro. Dependência é, pelo menos para não. Tudo bem, então, para a página de índice, as páginas de índice realmente só vai carregar todos os tipos de folhas como eu disse. Mas vou dar uma reviravolta no lado da vista. Tudo bem, então eu vou literalmente copiar esta escola porque é isso que eu quero. Entenda a peça. Tudo bem, então, obviamente, não é relatório, então é relatório de licença que vamos chamar para encontrar todos os tipos de folhas. Então eu vou fazer referência à folha. A melhor classe usando o ponto de controle em também deixar o ponto de controle do modelo Ver incluir essas referências. Eu posso remover esta linha sobre como retornar a exibição, então eu estou recebendo todos os tipos de folhas e, em seguida, eu estou armazenando-os no modelo, tendo mapeado em. Então eu vou criar a vista alguém dedo direito você clicar em vista, encontrar o modelo que é lista porque eu realmente queria ser uma lista em. Eu vou usar o tipo de folha V m. Então eu só encontrar a folha que VM tinha queria esta classe de contexto de dados. Estou limpando isso, não referenciando bibliotecas de scripts na promotoria. Pense no anúncio. Então o que vamos fazer é modificar este modelo, certo? Então eu vou tirar essa criação porque eu realmente não preciso disso. Eu vou tirar a coluna ID , bem como os dias padrão e ele criou. Eu realmente não preciso disso. Então isso é que eu aludi ao fato de que podemos ter vários modelos de visão usados para coisas diferentes. Eles vêem se nós tínhamos construído um modelo de visão especificamente para isso do que esta modificação seria necessária porque eu poderia ter gerado essa visão com base nessa garrafa de campo sem a adição fora anos. Mas é o que é, Andi. Quero dizer, é realmente seis de meia dúzia fora do outro. Poderíamos ter feito o modelo de visão e colocado no mundo. Há apenas foram colocados no trabalho aqui, então estamos apenas removendo todos os fatos. Então o que eu realmente quero é apenas a mesma tabela listando cada tipo de folha em. Então eu vou deixar um botão de ação que estou tomando em todos esses. Só vou deixar um de propósito. Este Barton é o dedo do pé. Vou colocar o texto. Então este é Ah Reza em html tag helper aqui. Certo, então está nos dando um link de ação. Este é o texto que eu vou dizer alocar os funcionários. Andi, eu quero dizer set leave como ação que eu queria chamar em seguida o parâmetro a ser passado em será em Eu vou tomar todos os comentários. Será um i d sobre o i d para ser passado em será I GDT que i d. Então eu tendo que idéias vindo de modelo em diante. Lembre-se de que nosso modelo é baseado em uma lista fora do tipo de licença VM. Então, para cada tipo de folha, vamos ligar o dedo do pé que eu d a este botão. Então, quando clicarmos neste botão, ele vai ver Chamá-lo dizendo isso. Isto é o que está correndo para a tela. O que vai chamar esse controlador Andi, vai passar nesse valor chamado Idee Onda. Nós fazemos o que precisamos fazer dentro do controle ou realmente, as ações. Está chamando isso de ação. Desculpe. Então, de volta ao nosso controlador de alocação de licenças Ah, nós podemos realmente criar um modelo, uh, leilão personalizado. Certo? Então nós geramos um com um monte de opções, certo? Todos estes, os curdos são gerados, mas eu posso realmente apenas criar um segundo literalmente apenas direito público porque eu quero uma ação que, você sabe, ele tem um nome específico, e provavelmente faz algo específico que os outros não fazem. Alguns a chamarem, sentem-se, saiam. Tudo bem, então. Set leave é projetado para assumir o parâmetro int chamado I d. Então eu estou realmente indo para pintar um quadro para vocês em seguida eu vou mostrar para vocês por que eu estou indo para criar um outro modelo de visão e por que é sempre uma boa idéia. Então eu realmente quero um modelo de visão que vai dizer o número fora de registros que teria sido atualizado após esta operação é executada. Seria bom se eu apenas carregar esse modelo view retornou a mesma visão, bem como o valor. Então eu fui voltar. Então eu vou deixar alocação v M Onda. Eu vou ligar para este, então eu vou criar uma nova aula pública sobre. Vou chamá-lo de criar. Deixe nossa VM de localização ativada. Então este vai dar o dedo do pé. Ter ah propriedade rompeu. tempo em diante vai dizer número atualizado em então isso. Também vai ter. Ah, lista fora da folha tipo V EMS. Certo. Então, vai dizer que deixe a VM pública ligada. Isso vai ser lista fora da folha do tipo VM. Então agora vamos fazer algumas modificações de outra forma. Ah, o que vamos fazer Saber que temos que saber o quê? Este é o modelo de visão que vai ser usado. O que vou fazer é modificar o tribunal de controle existente. Então aqui temos o tempo de folha v ems, e então eu disse que o modelo é igual dedo do pé este. Compreender? Para dizer, uh, tipos de licença mapeados é igual a lista fora do tipo de folha para deixar essa veemência. Lembre-se que estamos carregando o modelo para ser o menos fora da escola Lyft IBM do banco de dados . Não, só estou fazendo outra variável. Então eu vou declarar que o modelo real é igual a Onda. Vou definir esta mãe para ser igual a um novo objeto. Tipo desativado, Criar alocação de licença VM Tudo bem, ativado, então. Deixar alocação. Veum tem duas propriedades. Uma é deixar tipo ligado. Eu deveria chamá-lo de tipos de licença porque é uma lista. Então, é tipo de alívio, Então, tudo bem, eu gosto de ser muito claro com meus rótulos, e as variáveis estão dentro, então tipos de licença é igual ao imposto de folha esfregada. Muito bem, vários tipos de crença é uma lista fora da folha tipo VM. Então nós estamos recebendo a folha Times do banco de dados foram mapeando-os da classe de dados para a classe de modelo View, que é o que está sendo referenciado em vez de dentro do modelo de view que acabamos de criar. E então o que eu estou fazendo é passar que o modelo de visão estão criando na instância deste você modelar, dando-lhe o valor padrão fora do que está vindo do banco de dados. Onda, eu vou definir o número atualizado para ser igual a zero. Tudo bem, sobre isso não leva nenhuma resposta cínica que os rendimentos cínico depois da brisa em, então eu vou voltar vista com modelo. Então minha visão já foi gerada para ser uma lista em sua herdar o tipo Lyft I V. M. E é tudo o que então eu vou ter que fazer algumas modificações. Caso contrário, eles vão ser incompatibilidades de dados. Então, em primeiro lugar, modelo não pode estar em inumeráveis fora do tipo de licença VM. Tem que ser uma instância fora cria alocação de licença. Então eu vou apenas remover a palavra-chave inumerável, bem como colchetes angulares. Em. Quero alterar é deixar o tipo, por isso crio a VM de alocação de licença quando não o faço. Uma vez que eu fizer isso, você vai ver um monte de erros. Então, não, eu vou ter que modificar onde ele está procurando esta lista porque ele está olhando para o modelo. Então, desta vez, desde que o modelo é criar licença de alocação VM, a lista precisa vir da propriedade, alguém para dizer que sair tipos. Então, mais uma vez, eu criei um novo modelo de exibição chamado Create Leave Alocação Veum, que contém a lista fora dos tipos de exibição, bem como outra propriedade e quantas outras propriedades como nós médio necessário, mas que é o que ele tem. Então vai ser o modelo para a nossa página de índice. Mas então, para a nossa listagem estavam usando essa lista dentro do modelo. Então, dentro do modelo, eu sou realmente o que eu vou fazer. Apenas remova isso. Não preciso listar o nome da vista. Tipos de deixar entender para ler os tipos de licença de texto estático. Então deixar tipos não é realmente o ponto focal que. Então estou listando torneiras de licença. Eu só tenho uma mesa com uma coluna que é seu tipo de licença em outra coluna que é talvez como ação aqui e depois dentro da rosa real. Eu vou ter o nome fora do tipo folha, bem como o botão de ação, que é o Alocar Toe Funcionários em sua chamada. O conjunto de ação deixar passar em todo o meio fora I d. Então, de volta no controlador, podemos começar a construir ou o que ou definir licença. Ex-Sun realmente vai fazer isso quando são certamente função vem primeiro, então precisamos encontrar o tipo de folha. Isso foi rápido. Então estamos passando o I D dos tipos de folhas. Eu vou salvar nosso tipo de licença é igual a E então eu vou chamar meu relatório de licença, que é chamado de elevador como um realmente deve chamá-lo de relatório tipo de licença. Mas eu vou encontrar por mim e então eu passei em que eu desvalorizo. Então não, eu tenho o tipo de folha. Meu próximo objetivo é definir o número fora dissociado com este tipo de licença toe cada funcionário que está no sistema, alguém para salvar funcionários ire igual. Então eu sei, vou ver que eu preciso de outra dependência porque para obter os funcionários que são realmente usuários, há, ah, ah, biblioteca ou função embutida na identidade. Ligue para o gerente de usuários, certo. Eu teria olhado para o gerente de usuários quando estávamos olhando para semear a data, e eu apenas ir sobre a sua rapidamente e vemos aqui que temos gerenciador de usuários, então eu estou realmente indo dedo do pé rapidamente. Copie isto, então. Vou comer injetado como dependência neste projeto. Então, em Anethe mapeador montado apenas leitura privada. Então, eu só estou mostrando isso enquanto você vai junto, você vai perceber tudo o que eu preciso desta ou qualquer outra operação. E é assim que você realmente vai em frente Coloque na funcionalidade porque você pode planejar. Mas você nunca vai realmente avaliar cada cenário desde o início, então eu vou apenas incluir isso em. Eu vou fazer o mesmo taco de injeção de dependência, e nós vamos fazer referência a ele. Nossa declará-lo e, em seguida, eu vou chamar a instância dentro fora do controlador Alguns esta cópia e colagem para acelerar este processo. Andi, você não copia sobre paz realmente ajuda você a ver se o tempo em que, desde que você entenda o que está fazendo, você não tem que gastar muito tempo retrabalhando direito. Então agora tem gerenciador de usuários. Sei que tenho a dependência. Para que eu possa saber. Chamar o objeto gerenciador de usuários e dizer ponto em seguida, temos duas vezes fora usuários. Temos aqueles no rolo de funcionários. Temos esses nos minerais publicitários. Eu só quero empregados, certo? Então eu vou dizer gerenciador de usuários ponto em, então eu posso dizer obter usuários na função assim que você vê, obter usuários em rolagem, em seguida, dentro fora desta função chamada. Ele espera que o nome da função como uma string soc funcionários porque essa é a regra que eu quero em. Então eu digo ponto nos resultados. Então, depois disse não resultado, realmente obter a lista de funcionários e, em seguida, este está retornando e eu lista, que é apenas um outro tipo off locação. É uma coleção de funcionários do sistema. Não, o que eu vou fazer, saber que tem o tempo de folga que está em questão e ter os funcionários em questão. Eu não vou iterar através de todos os funcionários e configurar a alocação em conformidade. Então, para cada funcionário que está aqui, eu vou criar na entrada na alocação de licença em se você lembrar o que nosso objeto de alocação de licença . Nossos dados. Sim, bem, o que precisa parecer é que isso também é gerado. Colocamos o número de dias de folga, que vem do tipo de licença que colocamos na data criada, que determinamos a partir do controlador. Nós referenciamos os funcionários por i d, que estamos recebendo porque sabemos da coleta fora dos funcionários, nós temos o tipo de folha I D. Vamos determinar o período, que é, se é se o botão é clicado para saber o ano em que é clicado é o período certo? Então o que eu vou fazer é ver para cada estrada de serviço para cada um e pressionado duas vezes, e isso gerou. E então eu posso apenas dizer m em funcionários. Então este sou eu que não vou passar. Eu não sei quantos funcionários estão lá, então eu, para cada um é um bom lubrificante rápido para passar do primeiro para o último sem precisar saber o número certo. Então eu vou ver algo como var. Localização é igual a novo, e eu lembro que não queremos usar nossas classes de dados com muita frequência ou, pelo menos, neste estágio, usamos nosso modelo de exibição e, em seguida, mapeamos algum lugar para dizer nova licença I localização VM on, em seguida, usar minhas chaves para fazer o inicialização. Vou colocar o cínico sob o signo de nada em diante, para o primeiro objeto ou a primeira propriedade que preciso. Não há nenhuma artéria em particular depois que disse estas propriedades, você pode fazê-lo em qualquer trimestre. Então criou vai ser tempo morto não sei vírgula próxima propriedade empregado I d Sowden definir funcionários o que eu diria o eu d direito. Então empregado i d para ser armazenado no banco de dados será ponto vazio em MPs provenientes deste objeto. Então está dizendo para cada um fora deste objeto nesta coleção fora de objetos. Então isso significa que cada vez que ele é executado, você pode acessar esses dados de iterações através dessa propriedade, apenas no caso de você não estar familiarizado com para cada loop, então ponto EMP E então eu posso obter o i d. apenas no caso de você não estar familiarizado com para cada loop, então ponto EMP E então eu posso obter o i d. Então eu tenho que funcionários que eu d em então o tipo de licença i d em questão é igual dedo I d. Porque você sabe que vem do parâmetro. É com essa ideia que estamos lidando. Tudo bem, então vamos em frente e vemos vírgula novamente. Número de dias de folga será igual ao padrão desassociado com o tipo de folha Então dizemos tipo de licença. Isso foi mais cedo recuperado pontos. Dizemos que o padrão está bem em. Então nós c vírgula em que outra propriedade precisamos definir? Nós também precisamos definir período e, em seguida, período seria o ano para que eu possa ver algo idéia tempo que eu não sei. Mas então eu só quero os anos que eu disse não novamente e apenas recuperado o valor do ano, que é de fato e de fato, um inteiro. Tudo bem, não fora do curso. Se eu pressionar vir novamente, verá que há outras propriedades. Mas o fato é que essas propriedades não aparecem no banco de dados. Eu não tenho que colocá-los. Mesmo que eu os defina, vamos ter que limpar de volta para a classe de dados e assim eles seriam ignorados de qualquer maneira, então eu os deixo em paz. Então o que isso está fazendo mais uma vez é recuperar o tipo de licença para o qual foram alocações sentadas . Vai recuperar todos os empregados. Então ele vai dizer para cada funcionário, criar uma alocação. Não, eu já estou vendo uma espécie fora de lacuna nesta lógica porque então se eu clicar doente cinco vezes, ele vai criar cinco conjuntos diferentes alocações para os mesmos empregados cada vez. Então o que eu gostaria de fazer é tipo de set on if declaração, como um pouco de controle para dizer, OK, eu tenho um empregado ou eu tenho a coleção em então para este empregado, há uma alocação para este tipo de licença para este período já se houver, então não faça nada de outra forma continua. Eu posso sentar na declaração de dentro disso e dizer algo como, se e então aqui nós podemos ser criativos. Eu posso voltar para o repositório de alocação de licença e configurar Ah, função de relatório completo para o que eu acho que seria preferido. Então eu vou deixar a declaração se a declaração é necessária. Mas eu ia escrever o que disse aqui. Mas eu acho que o mar para nós seria apenas criar a função repositório Alguém para ir até a deixar um repositório local vai Primeiro, eu vou encontrar o contrato de licença, relata o repositório de alocação. Então eu vou ver algo como cheque. Olho para o seu filho e verifico que a alocação vai tirar um perímetro das unidades, deixar o tipo I D. Andi. Também vai precisar de um empregado e isso seria como uma corda. Então corda emprega e eu d. Oh, e este retorno, que seria ouro. Então vai ser ouro. Verifique um local em seguida fora do curso. Se eu fizer isso no interfere, em seguida, depois de implementado na classe repositório real, então eu vou apenas implementar interfere em. Então, se estou verificando alocação, preciso de algo a ver com funcionários, o que significa que preciso recuperar aquele empregado. Bem, eu não preciso de um gerente. Na verdade, eu realmente não, então Oh, e eu também vou passar no período, então eu vou ver Bem, não, eu não posso determinar isso na hora. Posso determinar isso na hora. Eu sinto muito. Há tantas maneiras de fazer isso que aconteceu. Estou pensando em voz alta. Então aqui está o que eu vou fazer. Então, para esta função, eu estou assumindo estagiários aliviando o tipo I D e um empregado de corda I d. Tudo bem, então aqui dentro, eu vou salvar nosso período é igual ao tempo não sei o ano do Doc. Então, como a função é chamada, eu sei com o que Pierre e nós estamos trabalhando. Então eu vou ver retorno sobre, então eu posso chamar uma função que já está aqui, que é talvez encontrar também encontrar tudo já está indo para executar a pedreira para obter todas as alocações de licença nos pontos do sistema em. Então eu posso ver que somos alguém para criar expressões lambda. Então esta função encontrar tudo está retornando uma coleção ou onde quer que você está retornando uma coleção com sua lista A em Mary, você pode usar Lambda Expressions para filtrá-lo em algum lugar para ver onde q encaixou em ir para verificar se o empregado I d. É igual ao que está chegando. Então, se a ideia do empregado nesse registro é igual à do empregado que entra, eu d. Tudo bem, então eu posso criar várias condições a bordo. Então, onde este empregado que eu d no registro é igual ao de entrada. Andi, o tipo de folha dos registros que Acuna deixa tipo I D. é igual ao tipo de folha I d vindo do nosso perímetro Onda. Mais uma vez o período que você ponto período é igual toe o período que acabamos de definir acima desta linha direita no meu lado esquerdo fora desigual aqui alguns vendo encontrar tudo. Então eu estou recebendo todas as alocações de licença, mas eu quero todos eles foram Estas condições são atendidas que a idéia do empregado existe com esse tipo de folha I d nesse período. E então a linha vermelha está lá porque isso está retornando uma coleção que atende esses critérios são esse critério. Então minha função é esperar um touro. Então eu posso apenas dizer ponto qualquer para que qualquer um só vai dizer, há alguma coisa nesta coleção? Sim ou não? Isso é tudo o que eu realmente quero. Filtre a coleção e me diga se tem algum registro. Então nós apenas devolvemos sim ou não para aquela operação. Tudo bem. Então lá, lá vai, poderia alguma vez neste em múltiplas linhas. Mas eu estou apenas mostrando as expressões po off lambda e eu vou desesperar a terra que cada parada completa para que você possa vê-lo, você sabe, um pouco mais definido. Tudo bem, então com o “onde “podemos ter tantas tias, assim como toda a sua equipe de prontidão com o Anson. Ou você pode fazer isso com isso. Foram declarações lá. Então somos covardes. A alocação alguém para ver isso e, em seguida, voltar para o nosso controlador em algum lugar para fechar qualquer coisa que não é absolutamente necessário. Então, de volta no controle e fui ver se em que eu quero dizer relatório de alocação de licença ancorado. Verifique a alocação em então, para a localização de Cheka. Estou passando no tipo de folha I d que está entrando através dos parâmetros que eu d em então eu também vou passar em imp dot i d como usuário ou os funcionários que eu d em. Então eu estou vendo se isso é verdade, então eu quero quebrar. Isso é impreciso, na verdade quero continuar tão breve terminaria o loop. O que continuar diria apenas Ignorar esta iteração. Então, se há uma alocação para esta licença eu d sobre este empregado em foram pré determinar que esta operação só vai ser executado durante um determinado período. Então vamos pular essa iteração. Se ele voltar nesta condição não for atendida, então ele irá em frente e criar o objeto de alocação de licença. Então precisamos de alguém para salvar a nossa licença. Um local é igual a, e então chamamos nossos pontos mapeadores esfregão. Então nós podemos realmente apenas esfregar e ver o objeto de destino. Então estamos mapeando para o objeto de destino desligado. Deixe um local. A classe de dados no objeto que estava mapeando nessa direção é um local. Tudo bem, então eu quero dizer maneira ter feito algumas coisas aqui que isso pode ser. Espero que tenha prestado atenção. Se tiver alguma dificuldade ao longo do caminho, sinta-se à vontade para me alcançar, ajudá-lo. Mas, você sabe, isso é o que acontece quando você está construindo. Estes sistemas empresariais têm toe chamado para esses diferentes cenários em você tem que ser flexível, porque qualquer coisa pode mudar no negócio do crime pode mudar implacavelmente requisitos de negócios e regras de negócios são literalmente apenas um monte de quatro voltas e um monte fora. Se as declarações nos lugares certos, é isso que você recebe. Os resultados que você precisa mesmo depois desse tribunal de ano ainda podem não ser tão perfeitos quanto você precisa . Tudo bem, então mais uma vez, hum, iterando através de todos os funcionários verificando se eles já têm uma alocação para o período em que eles não estão de pé, nós construímos um objeto a partir do modelo de visão tipo. Em seguida, mapeamos o objeto para a classe de dados em. Então salvamos. Não, não pedimos desculpa, acrescentamos. Então eu digo, deixe um relatório de localização, crie. Então eu vou passar o objeto de alocação de licença em alguns criando essa alocação de licença tudo bem, e então, depois de todas essas criações estão fazendo isso, ele vai criar para cada funcionário. Está criando essas alocações. Em última análise, tudo isso precisa é de uma direção para entrar, se ele vai retornar uma visão ou ele vai apenas redirecionar para indexar alguns realmente apenas ventilados Índice Redirecionado. E vou pedir emprestado o tribunal do nosso controlador de licenças. Vemos que você pode dizer, Redirecionar a opção em você pode dar-lhe um nome. Alguém dedo do pé. Copie isto. Vou ver “Redirecionar para o índice”. Agora, o que eu não fiz foi atualizar o número atualizado, e eu vou realmente desafiá-lo a fazer isso. Então eu vou fazer isso. Eu fornecerei o código-fonte. Mas eu estou desafiando você dedo do pé fazer isso onde você está indo para tomar uma contagem fora de casa muitas vezes este Lupron praticamente em seguida adicionado ao modelo. E, em seguida, quando você redirecionar, você passou em que o objeto modelo no índice em. Em seguida, você exibe esse número no discurso do índice, modo que soa como uma boca cheia. Mas acho que fizemos a maior parte do trabalho duro neste vídeo. Mais uma vez, adicionamos um monte fora da lógica de negócios para o off real. Ah, localização. Há mais lógica que poderíamos adicionar onde poderíamos em uma base caso a caso, determinado todo ao longo Este empregado tem sido com a organização. um Porque temosumobjeto comum dentro do objeto de nossos funcionários, o que exigiria um pouco mais de modificação. Mas eu não quero sobrecarregado com muito. Uma vez isso foi silencioso e atividade. Então, nesta atividade, analisamos o uso de mais de um repositórios. Nossa dependência está de dentro para fora. Controlador articular, olhamos para a criação de um modelo de visualização personalizado em. Analisamos a modificação de uma página para fazer exatamente o que queremos. Então, como um ato final, nós vamos apenas entrar de barco ancorado no teste Nosso novo recurso. Alguém disse que um rápido, ah, ponto de ruptura isso a ação e, em seguida, vamos testar a nossa aplicação. Alguém vai deixar alocações. Oh, eu preciso configurar e você apenas definir os links todos e eu vou definir o link dentro do Senhor alguém para sair de depuração ancorado. Volte para a solução, localize a exibição compartilhada. O layout ligado para isso vinculado para deixar alocações, entender para copiar em um existente em, em seguida, colá-lo aqui em. Então este controlador é Deixe uma chave baixa Sean. Deixar alocação, não deixar alocações. O software parece ser muito cuidadoso com esta primavera. Então vamos voltar para o modo de depuração e Austrália. Muito bem, trabalho StarLink. Então você vê que podemos fazer um pouco de refinamento, certo? Nós temos adicionado, você sabe, alguns bootstraps estilo starling assim poderia adicionar alguns estilos e tirar aquela barra que tubo. Mas deixo isso para mais tarde. Eu deixo você para embelezar sua página, mas o mais importante, quando você está sobre o link que você vê no canto inferior esquerdo, é chamando set leave ou set cars que saem com o tipo de licença I D. Como um parâmetro certo? Então, para licença médica, um, com um clique, funcionários alocador, e então resistiu está acendendo porque atingiu o ponto de ruptura. Então está a ter a ideia. Alguém dedo do pé saltar à frente para Lyon 54 em que ponto ele começa o para cada loop aan den. Está pegando todos os empregados. Acabei de ver os objetos dos empregados. Eles vêem que somos três empregados. Então, esses são os três usuários que estão na função de funcionário no banco de dados. Tudo bem, on, ele já tem o tipo de licença em todos os detalhes e necessidades para esse tipo de folha, que seria o padrão. É etcetera, etcetera em dez centavos, na verdade, apenas indo para o pé. Coloque um ponto de ruptura na parte onde está prestes a criar o tipo de folha. Então eu vou apenas remover o primeiro ponto de ruptura e pressionar cinco para que ele continue. Em seguida, o primeiro 1 que iria obter um Você viu aqui o objeto de alocação de licença foi criado nele tem o empregado i D. Ele tem o tipo de folha i d. O número de dias de folga e o período de 2020 em também a data criada. Mais uma vez, eles não serão valores porque a classe de dados em si tem o objeto empregado, bem como o objeto tipo folha Lá em. Mais tarde, você vê o propósito deles antes do Não. No banco de dados, não há funcionários, e não há nenhuma folha que o que temos as idéias retornadas, banco de dados alguém para pressionar F 5 e ele vai correr novamente, e então ele passou por esse ciclo uma vez mais e ele fez a sua verificação. Vai construir o outro. Então, já que eu só tenho três, eu vou mover esse ponto de ruptura e ajustá-lo para a tecla de retorno F cinco. E assim está prestes a voltar. Deixe que ele faça isso. Em seguida, ele retorna ao índice. Então, obviamente, precisamos de alguma pista visual pa 32. Módulo de leave de leave: Ei, pessoal, nesta lição, continuaremos nosso modelo de alocação de licenças sobre o que faremos é configurar as exibições de substituição ou a funcionalidade de adição excessiva, o significa que devemos permitir que o usuário administrador visualize o funcionário, visualize as alocações e edite a alocação em uma você sabe, uma base individual quando necessário. Então vamos colocar em algum trabalho nosso próprio colocando nessa funcionalidade. Mas antes de continuar com isso, eu só quero trazer presente para vocês as modificações que eu quero dizer para a tela. A última vez que fizemos essa tela de alocação de licença, tudo o que estava lá era apenas o dedo do pé do link. O Lee, os funcionários do Allocator não vão. Você pode ver que é um botão verde. Pelo menos fica verde quando eu pairo. Então, o que eu fiz foi adicionado a classe bootstrap, e eu também adicionei o ícone cinco ou o Awesome frente. Desculpe não ter podido usar o botão para o lápis. Eu só estou compartilhando as modificações do tribunal que quero dizer, o fio original teria sido um e-mail todos os dias para o nosso ajudante. Então nós temos os ajudantes estimados, e então nós podemos ter a capacidade de escrever HTML mais nativo com alguns, você sabe, ajudantes de puxar ao longo do caminho. Então eu vou fazer apenas uma comparação para que você possa ver exatamente o que qualquer um foi capaz realizar. Não para a ligação de acção que já teríamos tido até este ponto. O que eu fiz foi Atacama no DSI novo novamente em, em seguida, iniciar uma nova seção em que link ação bloquear fora do tribunal e adicionar um aviso de classe. As classes de sinal igual dedo do pé e, em seguida, eu fui capaz de adicionar a classe loja de touro. Isso teria dado o botão verde, e tudo bem. Mas então eu queria o lápis nele e teria havido algumas limitações usando o link de ação que foi gerado para nós. Então eu só mudo. Deve ser a etiqueta de âncora correspondente olhando tribunal onde temos o mesmo Bem, é um ataque de tio que está nos dando um link. Nós colocamos nas mesmas aulas, o Bt em, mas o uso de verão Bt e traço delineado sucesso traço. Então é por isso que você sabe que é branco até você pairar sobre ele. Torna-se verde, certo? Então isso é Bt e traço delineado, traço bem sucedido. Então, para cada um dos botões com este sucesso a primária lesionada que você tem em Oland Alternative. Então, se você não quer decidir cólica e usar a linha antiga e, em seguida, eu tenho a ação SP que é definido aviso de licença que teria correspondido com o que tínhamos na seção de ação off para o link de ação em então ter SP traço Road Dash i D, que é o valor de estrada que precisa ser passado para o conjunto de ação Deixe para que ele computar faixa em que teria sido representado aqui onde dissemos novo andan em idéias seção igual a agir que é assim É realmente o mesmo tribunal. Exceto que eu era capaz de inserir que eu puxei para aquele ícone passando no fundo aulas impressionantes que são necessários para esse lápis. Então esta é uma comparação lado a lado. O que qualquer frio teria rendido um teria rendido o verde sólido e o verde sólido seria a ação. Lincoln percebe que não tem lápis. Eu poderia ter conseguido olhar para a internet se eu quisesse, mas o fato é que, eu não poderia colocar o ícone do Incrível lá dentro e então isso é o que eu fiz para conseguir esse fundo . Ícone incrível. Tudo bem, quero dizer, só estou mostrando para o caso de você querer experimentar você mesmo. Não. Como eu disse para esta manhã, o que vamos fazer é sentar na vista para os funcionários uma lista de funcionários da empresa em. Então eles serão capazes de ver as alocações que esse funcionário em particular tem em então e se a Sra. ou mesmo excluir. Agora, esta manhã. Vou voltar para o meu controlador de licença Onda, continuar na mesma veia. Nós não vamos apenas usar as ações padrão que foram geradas, mas vamos criar um monte de nossas próprias ações que realizaram o que queremos. Então, a próxima ação seria definir uma visão para a lista de funcionários. Certo? Então eu vou criar uma nova ação, então eu vou ver ação. Bem, eu vou criar ação vendo os resultados da ação pública. Então eu vou chamar essa lista de funcionários e, em seguida, lista de funcionários é literalmente vai fazer isso. Liste os empregados, certo? Então, para obter os funcionários, eu vou salvar nossos funcionários é igual a Andi para colocar os funcionários no sistema. Eu só vou reutilizar este tribunal parece que eu posso literalmente dizer esta linha porque eu vou usá-lo novamente. Tudo bem, então você vê que muitos tribunais se repetem ao longo do caminho, mas então, baseado na maneira como você escreve, você pode modificá-lo uma ou algumas vezes com base em sua arquitetura. Então, usar o padrão de repositório que ele vê era apenas para nós manter o código subjacente e apenas repetir as referências ao cabo, tornando as modificações e manutenção mais fáceis ao longo do caminho. Então, temos nossos funcionários igual ao gerente de usuário, retornando todos os usuários na regra de funcionário sobre. Então o que queremos fazer é esfregar este alguém para salvar o nosso modelo é igual a, e então vamos vê-lo acoplado e esfregá-lo. Então eu posso apenas dizer que eu quero esfregar os dedos deste tipo de modelo. Eu posso ver uma lista em, em seguida, abrir a tag lista foram colocados no tipo eo tipo aqui é funcionários o M. Então nós fizemos o modelo vista apenas para os funcionários em. Então vou passar os empregados de valor. Então, mais uma vez, estou me preocupando com todos os funcionários nessa regra sobre. Então eu só vou limpá-los para a minha classe modelo vista em. Então eu vou retornar a vista com o modelo sendo passado dentro e, em seguida, fechar isso. Então, quando esta ação é chamada, ele vai trazer tudo o que está indo para coro para todos os funcionários em dmat -los para o modelo de visão. Então eu estou com gerar de, você sabe, chamada lista funcionários, e eu soletrar funcionários erroneamente aqui para que funcionários Tudo bem, então eu clique direito Ver ir para exibição de anúncio em ir para escolher o modelo. A lista de modelos. A classe modelo vai ser funcionários VM em então. Normalmente, quando estamos usando modelos de visualização, realmente não precisamos da classe de contexto de dados para que possamos limpar isso. Em seguida, vou clicar em adicionar. Assim, em nossos pontos de vista criados, podemos fazer pequenos ajustes. Podemos colocar o espaço para a lista de funcionários nesta fase. Eu não quero que ninguém seja capaz de criar um funcionário, alguém para remover a referência toe que link em que eu posso apenas refinar os cabeçalhos para a tabela, então eu não quero i d eu não quero Bem, para o nosso contexto são os Até agora eu tenho usado o nome de usuário e e-mail como a mesma coisa. Eles têm o mesmo valor, então eu não preciso dos dois, mas você pode manter os dois, mas eu não preciso dos dois. Então, o que eu realmente me pergunto pelo menos é o e-mail. Não preciso de um número completo para ser listado na lista. Talvez eu possa bater os detalhes de um funcionário, mas eu faço no nome e sobrenome e realmente quero que antes de ver os e-mails, eu estou apenas reorganizando meus cabeçalhos para a tabela como eu achar melhor. Certo. Hum e eu não preciso ver o imposto eu d a data de nascimento e eu posso deixar a data juntada. Bem, eu posso deixá-lo. Posso desenterrá-lo. Eu vou tirá-lo, na verdade. Então eu realmente estou esperando para ver o primeiro nome, sobrenome e endereço de e-mail fora dos funcionários. Então, claro, se eu raramente é os cabeçalhos, então eu realmente preciso reorganizar o herói ou as colunas nas regras que estão sendo geradas em tempo real, então eles precisam se alinhar para que isso faça sentido . Então eu estou removendo o que não é relevante para ser I d. nome de usuário tirou um muitas linhas. Claro, Lá em, queremos primeiro nome e sobrenome acima do endereço de e-mail um movimento aqueles lá em, em seguida, tudo abaixo do endereço de e-mail até que a coluna de ação é considerado excedente. Então, para a ação vincula as ações de tempo permitindo neste momento envolveu ver talvez os detalhes deste empregado. Então eu vou tipo fora de reforço. Não. Então, quando eles clicam no link de detalhes, eles vão ver todas as informações para isso. Empregados. Você sabe todos aqueles bálsamo adicionais, pedaços de informações que acabamos de tirar sobre funcionários. Todos eles vão ser listados lá, bem como todas as alocações de licença para os funcionários. Então eu não quero que eles sejam capazes de editar alguém para fazer esse juramento. E eu não quero que ninguém apague com certeza. Eu só vou mover essa barra em frente. Então, como eu disse, então eu quero me encontrar. Meus detalhes não pareciam semelhantes. Toe o botão Allocator funcionários que eu mostrei no início do vídeo. Então, tudo o que eu vou fazer é ir até aquela página em, copiar esse acorde e voltar, colá-lo para que eu possa apenas remover isso, ou eu posso me comprometer com a caixa de transporte e controle segurando controle e pessoa pressionada. Casey, isso é um tribunal rápido para comentar. Então eu vou apenas modificar isso onde a ação desta vez vai ser. Detalhes. Onda escreveu, eu d permanece o mesmo, que é o item que eu d Então lembre-se que este é um ritual de quatro passando por cada item no modelo e modelo é uma coleção de funcionários baseada no modelo view, hum, Tipo de teatro vermelho. Então, para cada item, eu estou apenas vinculando esse particular eu d com cada empregado dedo do pé esta corda. Tudo bem, eu vou mudar isso. Então é vista. Detalhes são podem ser apenas detalhes. Tudo bem, na caneta. Então eu não quero um lápis. Em vez disso, eu provavelmente iria com o botão de pesquisa. Então, o ícone de pesquisa do artista em vez Então, procure. Tudo bem, então, para uma busca. Não, não sei. Não memorizei isto. Sempre que preciso de algo, volto à documentação e encontro um que se encaixe no que quero. Então esse assunto que vai nos dar, como um pequeno botão de lupa. Então a próxima coisa que eu vou fazer é eu vou ligar na camada. PH eu tenho, ah link aqui para funcionários assim gerenciar e funcionários. Vou configurar esse controlador no dia de ação quando configurar esses atributos. Eu só vou remover cada F em. Em seguida, o controlador seria alocação de licença na ação desta vez seria lista de funcionários. Então, quando eu clicar em funcionários, vamos para listar funcionários. Estou fazendo isso direito. Não, mais tarde, podemos refiná-lo. Mas eu estou fazendo isso agora porque eu já tenho que muitos são item e eu estou basicamente criando essa funcionalidade aqui. Tudo bem, então. Eu também vou apenas encontrar isso em uma tabela de dados em para torná-lo em uma tabela de dados. Eu só olho para trás para o que eu fiz com os tipos de licença. Alguns querem ir até lá, fizeram o I D T.B dos dados. Então, estou apenas copiando isso. Então você vê, quando você faz isso uma vez. Se você se lembrar que você fez isso. Você só precisa ir em uma referência ao tribunal em que você já trabalhou Andi só você sabe, hum, ele já está lá. Diga, apenas faça uso disso. Então, sim, sim, eu já incluí esse script que muda qualquer coisa com os dados do T.B. T.B Em uma tabela de dados. Então, literalmente, isso é tudo que eu precisava fazer por causa de todo o esforço no tribunal apenas no I d equivale a dados da tíbia . Agora que eu fiz tudo isso, eu vou executar ou apenas ir para o meu link do navegador, iniciar o navegador em, então nós vamos avaliar nossas mudanças até agora. Tudo bem, então se você tem uma seta Pidge, é muito porque você já tinha o Broza Link aberto serializar. Ele só suporta uma instância, então se você já tem ela aberta, então a segunda vez que tentar, ele vai sentir. Mas de qualquer forma, eu já o tenho aberto aqui, então há poucos funcionários da gerência. Então vamos ter um pequeno erro, então isso é apenas avaliar a era. E então eu vou te dizer exatamente o que está acontecendo aqui. Então, primeiro mentiu, dizendo que há um erro de mapeamento entre funcionários e funcionários. VM Andi Há alguns. Portanto, ele está nos informando que há configurações para funcionários e funcionários. Veum. Tudo bem, mas então, não, eles vão ver mais tarde. Não que há tanta falta entre SB dot net core identidade usuário. Andi Deixar o gerenciamento de dinheiro É que o M que os funcionários VM Mais especificamente, ele está nos dizendo que há um mapeamento de problemas a partir da lista de funcionários VM em funcionários modelo porta . Então vamos voltar ao tribunal para ver exatamente o que perdemos. Então, se voltarmos para a nossa lista de funcionários ação em, analisamos de perto os tipos de dados que estão sendo retornados, então percebemos que funcionários de bar, que está recebendo todos os funcionários, está realmente recebendo, ah, tempo de dados chamado Identity User. E se você se lembrar Identity User é que tipo de dados baseado que dot net core nos deu para representar qualquer usuário no sistema, certo, Então estamos recebendo de volta usuário identidade, mas estamos mapeando toe funcionários VM e se nós voltar para nossos mapas, então eu vou limpar solda e mapas, e então vemos aqui que nós não estamos contabilizando os funcionários VM mapeando o usuário identidade do usuário Mas estamos no mapeamento para funcionários sabem um número de coisas que jogam. E eu só vou explicar isso porque nós vamos fazer algumas modificações e eu vou explicar tudo enquanto vamos junto com os funcionários. Lembre-se que os funcionários da classe de dados e eu estamos apenas segurando o controle e clicando, então ele vai saltar para a classe que está herdando do usuário identidade. Então você provavelmente está vendo bem, então, se ele está herdando do usuário identidade em, nós o usamos intercambiavelmente no enredo no passado. Por que é um problema tão grande? Não. Bem, quando inicializamos sobre a funcionalidade de identidade em nosso aplicativo, teríamos inicializado com usuário de identidade e não funcionários. Então, se olharmos de perto para os dados que volta quando fazemos em operação, como apenas voltar para o controlador como obter todos os funcionários são todos os usuários na regra sobre o seu retorno sobre o usuário identidade, isso significa que é retornando tudo, exceto o primeiro nome no sobrenome, ea data juntou-se no imposto i D, que são todas as coisas que posteriormente adicionou adicionando ou classe de dados empregado. Então, em outras palavras, quando usado dados ao usar, use um gerenciador, certo? Não, porque ele foi inicializado para ser usado com usuário de identidade. Nenhum desses campos voltará, que é um problema para os funcionários da nossa lista, porque estamos tentando listar o primeiro nome, o sobrenome e o e-mail. E é um problema maior porque não estamos contabilizando o mapeamento de usuário de identidade para qualquer VM de funcionário de modelo de visualização. Então isso vai acender um pouco de refratário em nosso cordão em seu único natural, porque você começaria com o padrão. Mas então você quer mais. Você precisa entender e apreciar as mudanças que você precisa fazer toe facilitar o mais em palavras menores sobre saber, usando apenas usuário identidade era perfeitamente bom para perceber que precisávamos toe ver os dados adicionais, que está na classe de funcionários. Então o que precisamos fazer é inicializar sobre a funcionalidade de identidade a partir de, ou iniciar o arquivo nazista. Usando a nossa classe de dados do funcionário nele será completamente aceito, porque os funcionários, como uma classe de dados, já está incorporando tudo o que está dentro do usuário identidade em, em seguida, alguns. Tudo bem no que estamos interessados agora é isso e alguns porque já temos todas as identidades lá. Então eu vou dar um passo a passo. Ainda é o que as mudanças precisam acontecer, então eu vou primeiro interromper a escola status em Eu vou mudar identidade usuário. Então, em serviços que adicionam identidade padrão, eu estou mudando os funcionários do usuário identidade em seguida para todas as outras instâncias desativadas. Algumas inicialização são algumas alusão do usuário identidade. Eu precisava ver os funcionários, alguns apenas copiando isso em seguida em baixo. Lembre-se que tínhamos gerenciador de usuários e gerenciador de rolagem usará seu gerenciador de forma mais específica . Gerenciador de usuários. Não há necessidade de usar funcionários no mar Dados Nós vamos ter uma era porque ele sabe sobre usuários de identidade entender toe hold no controle. Clique nessa função. Pule sobre isso em seguida, todos os lugares que o usuário de identidade waas eu só vou começar a substituir por funcionários tudo bem, afastando-se do curso se ele ainda não está incluído, que não seria, Eu só vou usar o controle acoplado em permitir que ele inclua a referência Não, nós poderíamos fazer isso um por um, mas vai ficar muito entediante em. Ok, então, como eu substituí empregados aqui do que para outras terras apareceram porque ele está esperando empregados. Mas estou adicionando novos usuários de identidade ao Vier. Preciso adicionar novos funcionários ao ver funcionários. Isso me abre o anúncio todos os outros campos que eu quero dizer não ter sido capaz de adicionar, porque eu estava usando apenas evidência para o usuário. Lembre-se quando estamos modificando nossa destruição Página foram adicionando na classe de funcionários. Eu não sou a classe de usuário de identidade porque queríamos os campos adicionais ou o primeiro nome. O sobrenome é etcetera. Então não, eu preciso ter certeza de que em todos os lugares no meu projeto que tinha gerenciador de usuários estão assinando gerenciador referenciando Identity user Sem referências, funcionários. E a razão para essa mudança maciça em todo o aplicativo é que estamos inicializando com funcionários, então não pode haver uma falta muito se estamos fazendo referência a algo com identidade. Não estamos usando identidade em relação à classe de funcionários. Então, um exemplo de onde isso pode ter telefonado, é o log in fire show onde estamos usando identidade. Claro, mas então você sabe, para assinar gerente e gerenciador de usuários lá ainda referenciando usuário identidade, então aqueles precisam ser alterados. Funcionários, acho que acabei de fazer um controle. Tudo bem, Bom. Então empregados de novo. E, em seguida, a linha vermelha significa que eu preciso adicionar o sinal de at usando o gerenciamento de licença. Então isso é um nome de projeto dados ponto. Então esse é o nome que fala, certo? É a biblioteca ou a pasta. Neste projeto. Eles podem ir ver onde está a aula. Então, para todos os lugares que estão usando Identity User, eu precisava ver funcionários muito bonito. Uma boa maneira de fazer isso é segurar o F pressionando descontrolado que traz o controle encontrar que é uma boa opção que eu posso expandir isso. Então o que eu vou procurar é um usuário de identidade. Então eu posso ver substituto com a palavra empregados. Não, isso não vai consertar tudo, porque então ainda temos que passar e consertar as referências. Mas eu ainda vou fazer isso porque é muito mais rápido. Foi onde eu tenho certeza que não nos lembramos de todos os lugares, especialmente como oh, nós teríamos brigado em um monte fora de vistas para o material de identidade em todas as marchas e o uso de identidade padrão. Ou assim, fazendo isso dessa maneira, ele vai passar por todo o aluguel do projeto. Ou é este documento atual que eu posso expandir isso sob o projeto atual em então? Quero dizer, se você quer ser muito prudente, você pode substituir o próximo para que você possa fazer um por um. Então, obviamente, substituiria este. Porque o empregado precisa disso. Se houver um lugar que o usuário de identidade precisa ser referenciado, é seu direito. Então eu posso pular aquele que eles encontram em seguida. E então foi uma busca. Em seguida, ele vai pousar dentro do deixar um controlador de localização onde tínhamos inicializado gerenciador de usuários com usuário de identidade. Então eu posso ir em frente Onda substituir. Então eu vou substituir um por um só para que você possa ver e então ele vai para trás. Então eu só vou fazer eu substituir tudo para acelerar isso, mas vai haver algum controle de danos que nós vamos ter que fazer algum Justin toe See, substituir toda Andi. Isto está dizendo que se você fizer isso se você tomar esta caixa, então você será capaz de sob as mudanças no indivíduo fora como se fosse indesejável. Eu não vou aceitar isso. Só quero dizer que sim. Ele só vai passar por todo o projeto em substituir cada incenso fora de identidade usuário funcionários, incluindo a guerra muito que estamos tentando evitar. Mas nós já estamos lá, alguns apenas em identidade usuário. Certo, então esse está restaurado. Mas quando eu fizer uma compilação, vamos descobrir que eles vão ser um monte de erros porque, não, não, há uma nova classe chamada funcionários em um monte de arquivos sobre não há referência real. E temos 71 erros. Então não devemos nos preocupar com o 71 porque muitos desses erros estão no mar e no arquivo. Então eu vou apenas clicar duas vezes em cada erro. Ele vai diretamente para o erro no Dhere. Eu posso apenas dizer que nós só precisamos adicionar o sinal de at usando gerenciamento de licença, não linha de dados. Tudo bem, então fazemos isso e eu vou copiar esta linha porque eu posso garantir que essa linha será necessária em um monte de outros arquivos. Então eu fiz um em Não, nós não somos de 71 eras toe over para que ele a um erros. Então eu apenas clique duas vezes em Então eu apenas passo por cada um. Então, se é classe ah arquivado, então eu posso usar a mesma instrução usando. Só não preciso do sinal de “at “debaixo do “Semi Colon”. Andi, eu só vou a algum lugar fazer isso alguém para fazer mais um pouco, mas eu quero que você faça isso sozinho. Eu não quero me preocupar até a morte com este saquê de vídeo e pausar o vídeo. Continue a fazê-lo sozinho. Você já tem que fazer é ir para a lista da era e você vê onde Comando Nice. Eles estavam em 65. Então isso está citando isso é que você tem sobre um pouco de trabalho livre e um pouco fora re factoring que vai para cortejar às vezes é por isso que eu estou aqui. Estou aqui para mostrar o lado feio dos revestimentos, assim como um belo lado da cortejamento. Então, se é um arquivo de classe, nós apenas o baseamos e removemos o sinal de at, colocamos o semi dois-pontos, então todo mundo fica feliz sabendo que, Ok, funcionários sendo contabilizados. Então você continua voltando para aquela era realista e uniforme. Quero dizer, é para que não se esconda automaticamente. Eles apenas clicam duas vezes um por um em cada arquivo e passam por alguém para pausar. Eu vou fazer isso sozinho. Você pode pausar um vídeo e terminá-lo do seu lado. Tudo bem, então eu tenho o meu. Não reboce três erros, e isso está no arquivo de gerenciamento agora. Então, como eu disse, sim, seria o número era grande, mas muitos deles estavam no mesmo arquivo porque eles tinham várias referências em cada referência que não estava sendo contabilizada era um aerossol e foi fazer lá dentro. Gerenciado o suficiente está no topo do fogo. Coloque na instrução usando com o sinal em, então que parábola longe Onda. Quando eu controlar o turno aqui de novo, eu sei que conseguir uma construção bem sucedida. Então, agora que fizemos aquele grande exercício, vamos dragar. Então eu vou abrir o link Broza mais uma vez porque depois que você construir brasileiro fica incapacitado, é isso que eles percebem. Então, só vemos na sala dos irmãos. Tudo bem, então eu tenho esse erro em. Será que eu acredito que isso pode ser algum problema com o meu DITA em não necessariamente o projeto. Então eu estou no modo de depuração no que ele está dizendo é que eles não podem inserir para fora os mesmos usuários. Aparentemente, eu fiz alguns ajustes daqueles fatoração em tudo o que eu fiz pareciam eles. Então o que eu quero fazer é parar e eu mostro-lhe porque você pode ter sido contado. Se não, então você está bem. Mas eu só vou entrar rapidamente em meus dados de exibição estável do usuário SB Net no Mais uma vez. Isso é muito que tem muito pouco a nada a ver com o que acabamos de fazer. Mas ele está dizendo que ele não pode ter toe adicionar usuários malvados. Por alguma razão, é. É muito da criação de dois. Então eu vou pegar tudo que tem a palavra em maldade. Então, todos esses três eu estou apenas excluindo aqueles dos meus dados. Desculpe. Tudo bem. E então eu fui executar mais uma vez em um modo de depuração, que os dados do mar devem ir em frente e criar. E você usuário administrador para mim de qualquer maneira. Tudo bem, então ou aplicativo carregado. Compreender? Para adicionar blogs rapidamente, pois o anúncio significa que é administrador no host local. Esteja no Papai Noel com o R d um. Essa é a minha senha que usei. Tudo bem, então depois de sentir o combustível, deixe-os serializados eu sou um pouco número. Então eu disse que queria dizer aquele anfitrião local. Eu não coloquei o ponto com, então eu vou passar por isso novamente. Mas desta vez não vou. Eu não vou perder seu tempo com ele, Mas apenas no caso de você estar enfrentando o mesmo problema que eu estou, eu estou removendo este usuário administrador do banco de dados mais uma vez em Eu ainda estou no teclado. A maioria dos dedos sublinhados reinicia. O aplicativo no modo de depuração em que deve resolver esse problema de login. Tudo bem, então vamos tentar de novo. A Andi. Eu sou amada sendo a excelência, e eu vou passar para a visão dos meus funcionários. Andi, estou recebendo um erro no Visual Studio, e a seta é que a string de entrada não estava em um formato atual. Andi, acho que sei exatamente o porquê. Então o que está acontecendo aqui é uma exceção de mapeamento onde ele está vendo que ele vê dois elementos que parecem que eles devem ser mapeados. Mas há alguma falta apertada muito, e está estudando ou cordando, então eu posso te dizer exatamente o que aconteceu. Eu estou indo para o pé. Pare! Saia do modo barco. Se você não está contra isso do que acidente, se você está, então tudo bem. Vou mostrar-te o que está a acontecer. Mas lembre-se que os funcionários I D é uma string vindo do banco de dados. Mas, em seguida, na VM do funcionário, mantenha o controle e clique. Nós o definimos como um int. Então Oper Outono através de uma exceção porque ele vendo o que eu vejo que idéias em ambas as classes Mas unidade String um está em. Algo está errado lá, certo? Então eu vou fazer isso novamente, apenas voltando para o modo de depuração. Andi, vamos ver o que acontece. Tudo bem, então eu fui direto para o discurso da lista de funcionários sobre o DNO. Estou vendo uma página listando os funcionários, então todo esse trabalho duro para que possamos finalmente obter todas as informações sobre nossos usuários do nosso banco de dados, certo? Então, mais uma vez, o que acabamos de passar foi mudar todas as referências de usuário de identidade em nosso aplicativo . Um bem, usuário de identidade faz referência à classe padrão que veio com o projeto. Mas nós criamos uma classe personalizada para estender essa classe padrão neste personalizado plus tinha pontos de dados que provavelmente queríamos exibir no DSO. Eu trouxe esses para a frente. Tudo bem, então o que fizemos foi mudar todas as referências, o usuário de identidade para usar funcionários em vez disso. Tudo bem, no DSO em qualquer lugar que temos o gerente de usuários ou gerente de assinatura, precisamos usar as classes de funcionários que fora identidade usuário em que vai estender nossa capacidade de acesso. Os outros dados apontam na tabela do usuário que eu era parte um das modificações que estamos fazendo a parte dois. Vamos realmente criar essa visão detalhada onde clicamos em um funcionário. Então, já temos a vista listando os funcionários e temos a busca. Transformamos isso em uma tabela de dados. Assim, como muitos funcionários são como uma organização, podemos procurar pelo nome Andi. Em um cenário da vida real, talvez cada funcionário teria um número i. D único em relação à empresa. Então, o que quer que seja, eles seriam capazes de procurar aqui em filtrar as mesas. Em seguida, eles poderão clicar em detalhes que nos mostrarão os detalhes, o perfil completo de que os funcionários, bem como suas alocações de licença. Então é nisso que vamos trabalhar na parte dois desta atividade. 33. Módulo de - - Visualizar a locação por Leave por funcionário: Ei, pessoal, bem-vindos de volta. Ouça, estamos continuando com isso é parte dois fora ou fora. Alocação sobre os assuntos vai dizer barra modelo de gestão de funcionários construir para fora. Então, na lição anterior, teríamos passado por fazer alguns ajustes para que pudéssemos obter nossa lista funcionários no sistema mostrando primeiro nome sobrenome E mail no din. Esta lição será estender essa capacidade. Noto realmente ativar a página de detalhes onde veremos o perfil completo dos funcionários, bem como suas alocações para o período em questão. Então vou mergulhar na quadra porque não vamos passar muito tempo. Já temos uma boa compreensão do que precisamos realizar. Tudo para fazer algumas modificações e experiência. Eu vou junto. Então, estamos começando com a licença A localização VM Então, em nosso modelo de exibição ou em nossa pasta modelos , temos a alocação de licença de exibição. O arquivo da classe M no cara pode deixar tudo como está, mas eu removerei as listas selecionadas. Tudo bem, então você sabe, às vezes você é a mudança de bombeiro ou a maneira como você quer implementar algo muda. Então, seus modelos de visão são onde você vai e faz essas mudanças rápidas para refletir nosso dedo do pé. Você sabe, complementar o que é que você quer ver na tela com base no seu processo de pensamento atual. Então eu não preciso mais de uma lista de seleção, porque a estratégia que eu tinha quando eu criei essa visão moderna inicialmente mudou. Certo, então esse é o modelo de exibição de alocação de licença. Mas eu também vou criar outro modelo de visão e eu vou chamá-lo de licença. Bem, eu vou chamá-lo de visualização de alocações VM. Então eu vou criar outra classe e eu estou chamando-o exibir alocações VM em. Então esta classe vai ter, ah, ah, entidade pública fora do tipo empregado VM. Também vai ter o empregado que eu vi nele, Onda. Finalmente, eu vou toe ter uma lista fora das alocações de licença e, em seguida, esta lista vai ser fora tipo licença alocação vmc. Lembre-se que nós realmente não queremos usar as classes de dados em nossos pontos de vista que todos nós queremos criar ver mães. É por isso que eles estão lá. São literalmente modelos para a vista. Tudo bem, então nossas classes de dados são modelos para banco de dados e modelos de visão são modelos para a vista. Então, qualquer um de vocês que você está indo para criar nosso modelo de visão que você quer ter certeza de que você está fazendo referência a outros modelos de visualização se você precisar. Você não faz referência diretamente aos funcionários. Eu sei que eu tenho essa exibição, minha exibição alocações VM Eu vou voltar para a minha exibição. Deixe o controlador de alocação Neste momento, eu vou estar usando um fora das ações já geradas em Eu vou estar usando detalhes, certo. Então, primeiro eles foram mudar. Os apartamentos são de em cadeia porque lembre-se que a expectativa é que quando eles clicam nos detalhes para os funcionários mais rápido o empregado i d que sabemos é realmente uma string e não um inteiro. Então eu estou apenas mudando o tipo de dados para detalhes de para cadeia de caracteres em. Então vamos começar a recuperar dados. Então a primeira coisa que eu vou fazer é salvar nossos funcionários, é igual a on. Então eu posso usar meu gerenciador de usuários e ver pontos encontrar por i d em sua multa por i d uma pia, ignorando o i D. Qual é o empregado que eu d vindo através do parâmetro que muito é que em? Porque é um pensamento. Preciso dos resultados dos pontos. Tudo bem, então lá para desperdiçar 100 funções de corrida você poderia, você sabe, deixar como uma pia sem o resultado médico. Mas isso exigiria que eu mudasse todos os resultados da ação em uma flexibilização. Então faremos isso mais tarde. Vamos explorar aquele barco para não, eu só vou dizer que os resultados. Então eu sei que estou voltando logo. Os funcionários estavam recebendo de volta funcionários e não identidade usuário mais uma vez porque nós alteramos todas as referências padrão de usuário Identity para funcionários na lição anterior. Então, dos nossos empregados. Então temos os empregados nisso. Vou ensinar o nosso tubarão. Vamos lembrar que estamos realmente limpando. Então, sempre que obtemos os dados, precisamos esfregá-los para o modelo de visão, certo? Então eu posso realmente fazer tudo isso em uma linha onde eu posso apenas ver eu vou apenas colocar no espaço e dizer sobre o placar, minha parte superior não esfregar em. Em seguida, o formulário de função para cima pede um destino. Então, o destino para eles seria funcionários do M direito em. Em seguida, o objeto que precisa ser esfregado funcionários do dedo do pé. VM é o resultado real dessa consulta para que eu possa fazer tudo isso em uma linha. Então não, quando eu recuperar funcionários, quando ele vai para o coro para os funcionários, pegar funcionários, então fazer o mapeamento. E, em seguida, meu objeto final é fora do tipo empregado VM já esfregado com todos os dados que eu preciso. Então eu fiz tudo isso em uma noite e você não é que nós poderíamos ter quebrado você falou em duas linhas como nós temos feito para saber Bem, isso é em uma linha, realidade é que há muitas maneiras de escrever Accord e muitas maneiras para ser eficiente em ainda tem no tribunal. Então saiba que tenho empregados. A próxima coisa que eu quero fazer é criar Bem, é recuperar todas as alocações de licença para este funcionário neste período. Então vou salvar nosso período mais uma vez na Via Pier. Vai ser igual ao dedo do pé. Sabemos que é o momento em que não, nem um ano. Tudo bem, então eu fui para salvar nossas localizações são iguais a no dia em que eu fui para executar uma consulta sobre o placar . Acho que é alocação de licença. Ripple, aí está, ancorado. Eu só vou encontrar tudo para que eu possa encontrar todas as licenças que eu possa encontrar. Eu provavelmente posso voltar para o repositório e criar uma função para encontrar todas as alocações por funcionários. Por uma questão de fato, eu vou fazer isso assim. Então, em vez de ligar, encontrar tudo e então tentar executar uma pedreira nele a este nível, o que eu vou fazer é voltar ao relatório, irmã. E como eu disse, isso é para que sua corte evolua com o tempo porque às vezes você apenas pensa no que é algo que eu possa precisar fazer de novo, e eles precisam de nós. Implementar isso. Então eu estou indo apenas para implementar uma função que vai retornar uma coleção de olhos, fora do tipo, deixar um local e então eu vou chamar este, obter as alocações get, obter alocações de licença por funcionários, tudo bem em, então, por funcionários estavam recebendo as idéias de empregado de parâmetro. Então, uma vez que eu colocar isso dentro do empreiteiro em vez das taxas inter, Eu preciso voltar para o meu repositório em então eu vou implementar as interferes, então dar-lhe alguns segundos. Você vai conseguir aquela era que vamos. Então nós mais sobre esse erro em nós apenas fazer um ponto de controle andan implementar interfere em. Então eu só procurei por essa função que eu quero que é recebe alocação de licença por funcionários. Então, neste arquivo, dentro do repositório, eu faço o levantamento pesado. Então eu escrevo a escola complexa bem aqui. Então eu posso ver o retorno, e eu estou apenas interagindo tudo em uma linha. Então eu não quero ir em frente e fazer uma consulta baseada no ponto de banco de dados algo causa já tem encontrar off. E eu já fiz algo assim. Quando estamos verificando as alocações, eu vou dizer Encontrar todos alguns recebendo todas as alocações de licença em ir para ver um ponto em Eu só vou quebrar as linhas. Eu posso realmente Brick Lane Ou se estamos no ponto em cima dele, então você pode ver tão ancorado foram e eu vou dizer, cura para iniciar o Lambda q é igual em maior do que sinal que ponto empregado i d é igual. Então, o que está entrando pelo perímetro do Ben. Eu vou apenas fazer um ponto para listar para que nós não temos quaisquer problemas com o tipo de coleção em . Então usamos o nosso semi cólon. Então não, isso vai trazer de volta todas as alocações para este empregado. O que? Eu especifiquei que queríamos saber o período. Então nós vamos realmente imitar algo como o que fizemos quando estávamos verificando as alocações. Eu só vou copiar os piratas onde eu defini o período em que eu vou colocar isso lá. E então eu também estou em copiar a parte onde eu comparar o período em si. Então, quero dizer, mais uma vez, você está certo. O tribunal já o tem lá. Você apenas copia em paz. Sabe, se você quiser praticar e reescrever, tudo bem. Mas só estou mostrando eficiência. Então saiba que fiz tudo isso. Deixe-me explicar mais uma vez. O que estamos fazendo é que estamos recebendo as alocações dos funcionários. Assim, para qualquer período em que você ver no registro de funcionários, ele deve olhar na alocação estável em descobrir todas as alocações foram o empregado I d. Muito está em. Estamos nessa partícula que apareceu. Então, se for 2021, nenhuma alocação foi definida, então você realmente não deveria trazer de volta nada sobre Def. É 2020, então eu não quero mostrar 2020 alocações em 2021, certo? Então eu não tenho isso. Fazemos a lista para. Então, de volta ao controle? Não, minha chamada de função parece mais com pontos de relatório de alocação de licença, eu só ou controlava o espaço. Então eu posso apenas dizer obter alocações de licença por funcionários em. Então eu vou apenas passar. I d on A expectativa é que isso irá retornar pelo menos fora das alocações. Agora que tenho a lista das alocações no cais, Adande, os empregados. Andi, eu realmente não precisava do período aqui porque o período teria me ajudado a filtrar para recuperá-los. Então lá estou eu re fatoração tribunal já. O que eu vou fazer é criar um novo modelo em algum lugar para salvar. Nosso modelo é igual para ver um filho de sorte, VM em seguida, ver alocações V m vai toe tem como seu primeiro parâmetro. Alcide Sr a nova palavra-chave tão nova classe digitado em. Em seguida, a primeira propriedade vai ser funcionários e funcionários apenas vai ser igual dedo sobre objetos funcionários que já telefonou para o registro e esfregou. Tudo bem, então é um ajuste perfeito. E, em seguida, a próxima coisa é que nós queremos a lista fora alocações de licença, e isso realmente deve ser uma lista fora do tipo. Ah, isso deve ser uma lista fora de licença. Deixo a alocação VM Desculpe. Então eu não fiz isso aqui, então eu tenho que deixar alocações do banco de dados de Did't Muppets entender muito rapidamente moppet aqui. Então sublinhe minha bolsa. Só estou fazendo isso em uma linha, como fiz antes. Então o destino para este mapa é uma lista fora do tipo que eu olho para o seu filho ou é alocação de licença , Veum Right. Tão volátil que mapeia diretamente a nossa classe de dados. Tudo bem, em seguida, abriremos terá que fechar o maior do que dizer novamente ou vai integrado e assinar. Então este suporte angular muito é com este tio Bracket neste. Muita coisa está com isso. E então definimos o objeto abrindo a brisa, chamando nosso objeto de nossas abelhas de dados. Então vou fechar a cinta. Certo, essas duas linhas parecem idênticas, exceto que uma está limpando um incenso do dedo do pé do objeto. Uma instância sendo retornada onde esta está esperando uma lista vinda desta função. Chame seu mapeamento de volta a uma lista fora do tipo de exibição fora do modelo de exibição. Desculpe. Então, a lista expectante em nosso modelo pode ser atribuída uma localização. Desde alocações não é apenas material deixar alegação VM em Foi definido como tal em nossa visão, alocações ver modelo. Então saiba que construímos ou modelamos. Quando retornamos a exibição, esperamos retornar a exibição com os dados que estão voltando ao ajuste deste modelo. Então, eu vou gerar esta vista quando clicar com o botão direito do mouse em vista clique, adicionar vista. Estou gerando um modelo de detalhes sobre. Em seguida, a classe modelo vai ser alocação de exibição. Bem, na verdade, eis o que vou fazer. Eu vou gerar, uh, uh, menos são modelos de detalhes baseados na VM empregado. Tudo bem, vou explicar o porquê. Então a coisa é quando você gera uma visão baseada em um modelo de visão eu tenho certeza que você percebe, mas eu sei que ele tenta um peacoat. Os tipos de dados simples, tempos de dados simples significando em string, aqueles que são incorporados, não as classes que estavam criando. Então, porque sobre a nossa visão, modelo de visualização de alocações é realmente construído para acomodar duas classes, que é que são funcionários VM, bem como alocação de licença. Veum. Se fôssemos gerar detalhes Página com base nessas duas classes, então ele não sairia tão limpo assim o mais. A maioria das informações está indo da VM do empregado de qualquer maneira, então eu vou gerar o temporário baseado no empregado Veum, que já tem, ah, muitos tipos de dados simples nele para que possamos exibi-los facilmente, e, em seguida, podemos manipular essa página mais facilmente para exibir as informações adicionais. Então é por isso que às vezes eu não estou usando o modelo de visão exato que está sendo passado para a visão como a classe modelo para a geração para o andaime. Então é assim que você pode aproveitar o trabalho anterior para facilitar o trabalho futuro. Se você tem uma apreciação para toda a vista mais isso realmente funciona, você pode escolher o melhor modelo de visualização para obter o melhor fora da ordem gerada tribunal em qualquer ponto e, em seguida, fazer modificações como você vê a necessidade. Certo, mais uma vez, estou usando a VM de funcionários da classe modelo. Então eu vou apenas gostar do anúncio, tudo bem, e então nosso modelo é gerado. Então, quero dizer nomeado. Não, não tenho prestado muita atenção ao Burbage nas páginas. Estou tentando te ensinar o fluxo e a codificação de back-end, mas desta vez quero prestar atenção. Então, primeiro, primeiro, preciso mudar o modelo porque o modelo que está sendo pessoa não é realmente empregado. O M é realmente acreditar bem, você sai é que ver Leave alocations V. M. Uma vez que eu fizer isso, então você vai começar a ver alguns erros aparecendo banda. Isso porque o modelo está estático. Ele não tem um campo chamado nome de usuário o modelo. É da chamada de campo de samba usando ele porque uma visão de classe alocações. William não tem alguns chamados usando-o. No entanto, o modelo faz. Desculpe, ele vem com uma classe chamada funcionários em Employee tem um campo chamado use any. Então, mais uma vez, eu gerei um baseado na VM do funcionário. Mas então eu digo, Bem, empregado via realmente não tem, hum, usá-lo. E posso sempre voltar no cheque, mas não acredito que tenha e-mail. Oh, ele tem que usá-lo. Havia. Tudo bem, então você só para sair para renderizar modelos de empregados ancorados que usá-lo. Assim, para qualquer subclasse que está sendo trazido de volta dentro dos dados, você pode usá-lo apenas referindo a propriedade em conformidade. Então, nosso modelo tem dois clássicos como funcionários. Ele tem uma lista fora alocações de licença. Então o que vamos fazer é passar e incluir funcionários modelo dot. Só estou copiando isso em “Estou distante”. Injete após cada referência ao modelo da palavra. Tudo bem? E, sim, pode parecer tedioso, mas no final do dia, essa modificação é muito mais fácil do que se tivéssemos tentado gerar a classe com o modelo de visualização original. Certo? Então eu vou continuar, então você vai ver que, eventualmente, tudo vai cair na polícia. Certo, alguns deles ainda têm linhas vermelhas. Eventualmente eles vão embora. E se não o fizerem, não o fizeram todos. Então esse é o nosso detalhe, velocidade. Então este é praticamente um perfil de qualquer funcionário. Podemos embelezá-lo, você sabe, podemos torná-lo em uma página inteira de perfil. Faremos isso mais tarde. Mas agora eu quero me concentrar no show em deixar nossas localizações. Então eu vou remover esta página de ação aliviar de volta para a lista. Deixo apoiado uma lista, mas estou removendo as edições porque eu não quero que ninguém esteja editando os funcionários desta página Barcos abaixo aqui eu estou com em uma regra horizontal sobre. Então eu vou dizer que cada ferramenta Onda se deixar nossos locais e, em seguida, dentro alocações de licença , eu sei que vai gerar. Há os dados do Kontinen sobre detalhes de cada alocação de licença no sistema. Então eu vou entrar no reboque. Turjão desligado. Um, fora da razão fria onde eu uso meu sinal de instinto aberto. E aqueles cinta em, em seguida, dentro fora que eu fui ver para cada um no top duplo. A guia me dá que gerado para cada bloco em. Então a coleção está vindo de modelos então eu posso apenas ver modelo com um M maiúsculo e então dizer ancorado e então nós dizemos, deixar nossas localizações. Um modelo de dardos deixar alocações. Então essa é a nossa coleção. Direita em. Então temos cada item dentro da alocação de licença. Então item nos dá acesso a todos os detalhes dentro de uma alocação de licença em se nós preso volta a alocação IV Itzler de ou modelo, que é depois que eu tenho você alocações. O M está fora do tipo. Cada um é off tipo licença alocação o M E se eu distrito que vemos que ele contém o número de dias fora, o período, os funcionários nos detalhes tipo folha. Então o que eu quero mostrar não é apenas os batedores tipo folha que eu quero dizer, Bem, o número fora estes são os funcionários obtiveram tão bem quanto talvez o nome fora do tipo folha. Então, de volta aos detalhes, eu estou indo para o pé. Basta gerar algum problema McCord aqui e eu chamo isso de div em seguida, dentro deste fato Dave, eu vou fazer referência bootstrap para ver que tipo de ferramentas eles têm. Todo o tipo de elementos visuais que eu provavelmente poderia usar para melhorar a representação desses dados. Tudo bem, então, olhando através da documentação, eu fui nos cartões, seccionando componentes. Andi, vejo aqui que eles têm listas de grupos. Certo, então acho isso legal. Então vamos imaginar cada um deles sendo o tipo de folha Onda, uma seção que mostra o número aan den o botão em outra seção. Então é assim que se parece. Você terá dar carros, cartões e, em seguida, basicamente, cada entrada ou seria um elemento aliado. Então o que eu vou fazer é pegar o 1º 2 nas duas últimas linhas. Então eu vou pegar as primeiras 2 linhas primeiro em voltar para o meu cordão ligado. Então eu fui colocar aqueles lá fora fora fora fora dos quatro cada. Então coloque esse Dave na classe fora dos quatro cada. E então eu volto para a rede estes dois. Então isso é apenas mostrando como você pode, você sabe, manipula os são os elementos HTML existentes para o seu pleno e desejo. Então, obviamente, se eu inserir muito problema entre o sinal de at no cabo, é meio que anula o efeito. Então o que eu vou fazer é remover estes e colocar o sinal de at diretamente sobre os quatro cada um. Sei que se lembra disso. OK, é a corte C afiada, certo? Então essa é uma boa maneira de reconhecer quando perde seu contexto quando não é mais destacado . Então isso é definir a premissa para o grupo de lista em. Então, para cada alocação de licença que está no sistema, eu vou ser Gellar gerando em l. Eu puxo sobre este l eu reboco vai dedo do pé ter a lista de classe traço grupo traço item, mas seu conteúdo será em que Apenas quebrar em, Então eu vou colocar em Tudo bem, Então eu vou tomar bootstrap novamente para ver o elemento Styler útil que eu posso colocar aqui no dia que eu pousei em uma página com orçamentos, então eu vou tirar o exemplo do cabeçalho com o Mas então o título é vai ter o tipo de licença no orçamento vai ter o número. Mais uma vez, sou só eu a tentar ser criativo. Um reforço torna muito fácil para mim adicionar esses elementos de reserva. Você pode ter outras idéias, mas eu só quero experimentar o conceito de que você tem o seu html, mas você sempre pode inserir o texto que quiser, vendo no sinal. Em seguida, neste caso, você deseja item representa a licença Um local em que eu vou descer para sair. Digite, então. Este é um objeto que representa o tipo de licença em ambos esse objeto. Eu realmente quero o nome fora desse tipo de licença. Então eu quero imprimir licença por doença, certo? Eu não queria apenas dizer que eu tinha um. Queria publicar a palavra “doente”. Deixe o Andan dentro do distintivo, o que pode ser qualquer coisa. Segundos um traço, Sikander monte de poeira, Primária movimento sucesso holandês, etc. Mas dentro do conteúdo daquele movimento, eu vou remover os textos de amostra e substituí-lo por um item encaixado, então aqui mesmo. Queria imprimir o número. Está tudo bem. O número fora destes é o nome fora do campo que mostra o número fora destes que correspondem com o tipo de folha. Essa alocação é assim mais uma vez, tudo isso esse aliado coberto com todos esses dados vai ser impresso dentro de fora antes cada um. Então, para cada alocação que este empregado tem, haverá, hum, alguma representação fora dele agora fora que eu também vou imprimir e eu só uso uma barra. Quero um botão na porta. Bem, eu vou usar uma etiqueta no tornozelo , então eu quero um tio puxado. Então queremos que este Un Qatar pareça uma garrafa. Então eu vou dizer Classe é igual a Bt e Bt e traçar. Eu vou dizer aviso, porque isso vai ser uma edição. Alguns diriam contorno, traço, aviso. E então, dentro deste tio fala. Vou colocar isso na nova linha dentro deste tio Tug. Eu quero o ícone com uma classe. Alguém usou o meu fundo. Incrível Effie em seguida, se um lápis traço. Mas vai estar no botão de edição. Além do ícone que eu queria vê-la ou é a qualquer momento, basta dizer que é complicado, muito mais do que isso. Tudo bem? Então, não, com todas essas modificações, quando eu vou colocar a tag de lista apoiada por baixo de tudo, então de volta a isso para voltar para a nossa inexperiência pode refinar isso mais tarde por querer, mas eu vou saber para o modo de depuração ativado, então vamos ver exatamente quanto nosso trabalho valeu a pena. Tudo bem, então eu executei o aplicativo. Estou aqui na lista de funcionários, e eles estavam indo verificar. Vamos clicar para mais detalhes. Onda de fala. Isso leva a um erro. Então, a seta dizendo que a referência do objeto não disse dedo algum objeto e está referindo-se ou alugado. Tipos de licença são de modo que significa ou não vai deixar laços, mas deixar alocações. Então o que eu vou fazer é desmascarar mais do que podemos ver exatamente o que está acontecendo para causar isso. Então eu vou para o controle ligado. Então eu vou clicar na linha onde retorna a vista. Tudo bem, vamos. Então eu fui para recarregar a página para que ela faça toda a operação novamente, e então vamos avaliar quais dados vêm sobre o quando ele atinge o nosso ponto de interrupção. Não, podemos pairar sobre o modelo e podemos. Ou podemos apenas usar a seção normal aqui no dia expandir modelo. Então vemos que os funcionários voltaram. Temos os detalhes do empregado, para que saibas, o dia se juntou. Sabemos tudo sobre os empregados. Mas depois descemos para deixar alocações. Vemos que temos que deixar alocações na lista e eu expando um. Então vamos ver que ele contém os dados dos funcionários mais uma vez. Tudo bem, tudo bem. Mas, em seguida, o objeto de tipo de licença em si está vazio. Então o tipo de folha I d tem o tipo de folha I d. Mas nós não temos o objeto tipo de licença em si. Então isso em si é um pequeno problema. Não, porque então estamos referenciando detalhes dentro deste objeto que não estão disponíveis. Baseado em quê? Estamos voltando aos pontos de vista. Vou parar com isso agora. Qual é o modo de depuração? Vamos voltar ao arquivo do repositório para alocação de licenças. Eu vou fazer um pequeno ajuste no tribunal e vou explicar por que esse ajuste é muito, muito importante. Então estamos usando a opção final para obter todos os registros, e na função final, temos uma linha fora do tribunal que diz que BB deixa alocações, que é a nossa tabela para listar. Agora o que eu vou fazer é adicionar outra função, outra função Lunda para isso em que vai incluir na entidade, então eu vou apenas digitá-lo e eu vou explicar exatamente o que está acontecendo. Então lembre-se disso ou deixe alocação quando ele foi carregado com todos os dados acreditam tipo um , seção off. Estava vazio. E foi assim que obtive essa exceção de referência, porque ver que você está tentando referenciar dados, isso não está lá. Então precisamos dizer, quando estamos recuperando os registros para alocação de licenças. Precisamos recuperar os dados correspondentes para o tipo de licença para esse registro de alocação de licença específico . Então, a relação está certa? Se você estivesse fazendo banco de dados regular, você teria que fazer algo como uma junção interna para a tabela de tipo de licença em. Então você seria capaz de ver os detalhes do tipo de folha porque a idéia está agindo como uma chave estrangeira , então eles querem fazer aqui é dizer, db dot leave. Alocações ponto incluem brisa aberta e próxima e incluem como um cérebro capita I. Isso me deixa aposentado rapidamente incluir chaves abertas e fechadas. Então ele vai me dizer que eu preciso incluir uma biblioteca. Cidras incluem aquela biblioteca. Não há problema, dentro do aparelho. Eu vou colocar em um Lambda Expressions como uma sugestão e eu vou apenas dizer ponto seta em, Diga desculpe Q encaixado em. Então ele vai dizer, o que exatamente você pretende incluir? Então, podemos incluir qualquer entidade que está relacionada a Lembrar quando criamos nossa classe de dados e outros voltar para a classe posterior? Rapidamente, criamos ah entidade chave estrangeira chamado empregado I D. Mas também espelho representação para toda a classe, objeto off funcionários com a mesma coisa para um tipo de licença. Então, em algumas situações, você pode precisar incluir em algumas situações que pode vir mais aliso automático , por exemplo, As entidades de funcionários já lá teria que incluir esse barco. Percebemos que a entidade de tipo de licença estava vazia. Então eu estou indo toe na classe repositório, dizer que eu quero incluir todos os dados correspondentes para o tipo de licença em. Isto é como uma união interna implícita. Então, quando isso acontecer, aquela pedreira vai trazer todos os detalhes possíveis para qualquer coisa que incluirmos em cada registro vai obter todos os detalhes que precisamos e lembre-se que precisamos desses detalhes porque, em nossa opinião, em nossa exibição de detalhes, sim, estamos trazendo de volta, como, como, o nome do ponto do tipo de folha que eu estava trazendo sobre o número de dias de folga ID associado com essa alocação. Bem, realmente em seu nome de ponto tipo de licença. Esse era o problema. Então saiba que eu fiz isso. Incluir, Eu fui para executar no modo de depuração novamente no ponto três ainda está no controlador. E quando ele chega ao ponto de ruptura, vemos o que acontece. Certo, então clicamos em detalhes, que vai disparar. As exceções são disparadas no ponto de ruptura, e então nós vamos avaliar nossos objetos modelo e eu aprofundar o modelo em. Então eu olho para alocações de licenças. Eu estou recebendo o para deixar alocações para isso. Funcionários perfurando o dedo do pé, pelo menos um off alocações de licença que eu estou vendo. O tipo de folha não está mais vendo Não. Então, quando eu perfurar no reboque, o objeto tipo folha. Agora estou vendo os detalhes desse objeto tipo de folha, incluindo o próprio nome que precisamos imprimir. Então, eu vou dar o pé. Basta remover este ponto de quebra na imprensa. Continue, então veremos isso. Ok? Nós fizemos alguns projetos cegos Então isso é o que foi gerado por padrão, e estamos trazendo sobre todos os detalhes que estão disponíveis para esses funcionários. Então esse funcionário, o nome de usuário do e-mail, eles não tinham o número completo, então isso está em branco. Eles não tinham o imposto. de Data denascimento e aviso prévio. Tudo isso é meio que baseado em não ser impresso, você sabe, limpo possível em Você pode apenas lembrar que nós podemos apenas voltar para a nossa licença, hum, funcionários, nossos funcionários, VM direita funcionários VM e configurar ou exibir anotações de dados acima de cada um para que a impressão seja melhor. Então, no final do dia, onde alguns estão encontrando a ver com como são alocações de licença, olhar sexual, assim parece. Então temos as alocações de licença começam a ser bem impressas. Então podemos ver que eles têm negócio de alocações de licença para licença médica, e isso é 10 dias e, portanto, férias férias. Isso é 15 dias, mas então as edições o que está indo em uma linha diferente, então nós provavelmente podemos apenas voltar para a exibição e refinar um pouco, e provavelmente está fazendo isso porque eu trouxe a linha então o que eu vou fazer é apenas remover essa linha de freio e imprimir tudo em uma linha em que teoricamente vai resolver essa linha de freio. Então eu vou fazer isso no modo de depuração apenas reiniciar. Vamos ver o que isso sente, e isso não mudou. E acho que sei porquê. Acho que não mudou porque estamos usando uma etiqueta de cabeçalho ah para a seção doentia e vou inspecionar e confirmar. Então a tag de cabeçalho vem com sua própria festa, então ele só vai ocupar uma linha. Então essa é realmente a esposa. Então o que eu poderia fazer é incluir o tornozelo dentro do rebocador. Por isso, estou à espera. Vou sair do clima de barco rapidamente. Então eu vou apenas expandir esta tag de cabeçalho inteiro para incluir essa tag âncora em. Então vemos onde não estou pegando o lápis, e isso é porque eu estraguei a aula. Isso é f A não alimentar. Tudo bem, , então, desta vez, já que eu estou realmente apenas usando você, eu entendo para fazer os irmãos ou link em vista no Bro er Onda bro sobre a página e sei que parece um pouco mais fácil para os olhos fora do curso mais uma vez, você sabe, nós podemos misturar e combinar. Podemos colocar em nosso próprio estilo, mas para não, isso é o que isso parece. Assim, o próximo objetivo por trás de terminar este modelo será colocado em uma opção de edição onde este usuário administrador será capaz de mudar manualmente esse valor de alocação de licença por doença. Então, meu último ato para este vídeo é apenas para tirar isso que eu vi fora da paz, e eu apenas vejo apenas removido as palavras funcionários vm do discurso detalhes. Então eu voltar para a minha visão removido que, hum em. Então eu vou dizer detalhes para Andi. Posso dizer traço e lembrar que tudo está no modelo. Então, se eu quisesse imprimir o nome do empregado, posso dizer pontos de modelo. Desculpe, eu tenho que usar os dardos do modelo de sinal em funcionários da DSI, e eu vou fazer isso como sobrenome vírgula, artroscopia. Tudo isso em vez de redigitá-lo do zero na mudança Sobrenome, dedo do pé primeiro nome. Então, quando as cargas de exibição vai dizer detalhes sobre isso seria bom, nós temos usuários muito genéricos em nosso sistema, então quaisquer nomes de usuário que você teria usado, você vê lá foram afetados. Então, estou apenas atualizando o navegador. Isso é o que vai usar os detalhes para o sobrenome, vírgula primeiro nome. Então, tanto detalhe quanto fora de qualquer coisa como você quer em sua página, Você sempre pode, você sabe, usar um elementos puros. Seja dinâmico e gere à medida que você avança. Então, como eu disse na próxima lição, vamos fazer o trabalho na tela de qualquer coisa para obter os detalhes do usuário. 34. Módulo de Allocation - edite a locação por o funcionário: Pessoal, neste vídeo, vamos configurar a tela de edição que nos permite alterar a alocação de um funcionário em particular. Tipo de saída de partículas de onda. Então, eu vou direto para a ação. Na lição anterior, teríamos configurado nosso discurso de detalhes em nossa página de detalhes apresenta uma seção listando as alocações de licenças para funcionários articulares. Vemos o tipo de folha pelo nome. O número fora destes e, em seguida, temos no botão de edição que nos permite irmãos para as edições são Pelo menos esse é o objetivo. Perceba que temos a etiqueta do tornozelo, mas a etiqueta do tornozelo não leva a lugar nenhum. Então o que vamos fazer é em uma rota de traço SP nesta rota vai ser nele. Onda. Nós também vamos adicionar uma rota S P traço. Isso é apenas que seria dados de traço. Desculpe, isso é assim idee meu, mas algo que eu tenho meus fios cruzados. Então isso é verdade. Dash I d em então. A idéia de que estamos passando é no sinal itim ponto sobre o valor seria idéia. Então item que eu D em Lembre-se, item é quando representar um objeto na coleção Off. Deixe um local. Então somos qualquer coisa que partícula. Deixe nosso registro de localização. É por isso que estamos referenciando o ID para essa alocação. Então, um, ao não especificar um controlador de traço SP, ele vai assumir que você está usando o e ele dentro do mesmo controlador que esta partícula de você, que é detalhes, está em os nossos detalhes. Você está dentro do controle de alocação de licença. Então isso significa que quando clicamos e ele vai inferir que queremos dizer a ação de edição insider deixar controlador de alocação Não, já temos ações para ele. É quem tiver ação ciente da ação pós-ação. Portanto, devemos ter uma apreciação fortificar que se processa a visão com os dados em um processa a ação correspondente depois de ter sido realizada. Então, vamos entrar na ação. Eu não preciso. Eu não deveria ter que explicar muito aqui porque já fizemos isso algumas vezes antes. Então, para nossa edição, estamos tendo uma idéia inteira e essa idéia, lembre-se, é ou deixar alocação I d. Então precisamos encontrar as alegações de licença. Eu vou salvar eu aliviar um local é igual a alocação sublinhado ou deixar alocação re para ancorado eu vamos encontrar por i d esse registro de alocação de licença particular passando a referência idéia em então lembre-se que fim de semana este esfregão direita fora do Morcego . Então eu só vou dizer, às vezes depende de tudo limpo que você quer chamá-lo de ser, então eu pessoalmente não sou divertido apenas mapear em uma linha com a chamada. Gosto de terminar, mas sou só eu, certo? Então, qualquer que você preferir, como você pode fazê-lo funcionar, então você pode fazê-lo dessa maneira. Ondas como você pode, pronto limpo o suficiente para que sua equipe não possa entender. Então isso é no placar, ma por pontos, esfregão em. Então estamos limpando. Deixo a nossa localização no tipo de dados VM. Lá vamos nós. No objeto que estavam mapeando para essa direção é alocação de licença que está sendo armazenado em que terrível em. Em seguida, passamos o ar ou modelamos para a vista. Não, nós geramos os pontos de vista. Então, vista do Iraque clique, adicione vista. Nós vamos estar escolhendo o modelo fora dele em. Em seguida, a classe modelo que este formulário de edição deve ser gerado fora vai ser deixar a VM de alocação ativada, em seguida. Quero dizer, às vezes você realmente não precisa da classe de contexto de dados mais uma vez se estiver usando o modelo de exibição . Mas eu vou deixar isso em paz e eu vou apenas ir em frente e clicar, adicionar, adicionar então não, eu tenho a minha cabeça. É assim que tomar tudo isso eu espada que está dizendo licença alocação vm Onda tem a minha edição onde eu tenho as entradas sendo escondidas, o número fora de dias visíveis, Eu vou fazer a escritura criada também escondido. Então a coisa é, se eu criasse um e seu modelo de visão para isso, eu poderia ter deixado de fora alguns elementos. Então, como eles criaram, eu realmente não precisaria ser criado no formulário de edição em. Eu eliminaria a necessidade de eu ter que fazer esse tipo fora. Edições. Mas eu já segui esse caminho. Então eu só vou atender a esses pequenos ajustes e dizer que o tipo vai ser igual dedo do pé escondido. Tudo bem, então cada equipe que eles criaram e tivemos que fazer isso mais cedo com tipos de dados, tenho certeza que você entende por que isso está sendo feito, ponto final. Nós realmente não precisamos de períodos de retorno. Eles vêem que todas essas coisas estão voltando. Empregado, eu deixaria isso. Você realmente não precisa desses elementos de dentro para ele se formar. Então o que eu vou fazer é remover este formulário de edição, e então nós vamos fazê-lo novamente. Então eu só vou passar para deixar alocação, excluir esta edição em Em vez disso, eu vou criar em um modelo de exibição especificamente para editar alocações de licença. Eu tenho a classe de dados, mas deixe o arquivo VM de alocação. Eu criei um tem você? Então eu vou apenas ir em frente e Bem, eu vou apenas copiar a criação que ele já tem alguns dos vistos querem. Estou com a paz. Estou tirando a lista dos tipos de licença. Tudo bem, Andi. Em vez disso, eu vou colocar um objeto sólido fora tipo folha. Junto com o quê? Eu nem preciso do “i d. Então eu estou colocando esse objeto sólido porque talvez eu queira imprimir Oh, o tipo. É o número, um, um, o número de dias de folga, alguém para referenciar o número fora destes. Está bem, deixa-me mudar o nome. Então, isto vai ser editado. Deixar o modelo de visão de alocação, certo O que mais? O que? Definitivamente preciso desse formulário. Real. Eventualmente eu só preciso dos funcionários, do tipo de licença e , bem, eu preciso manter o I d para que ele possa ser escondido e transição, você sabe, para que editar tela é realmente apenas vai ter a sensação oculta para o i. D para rastrear qual registro está sendo editado. Provavelmente vai ter alguns detalhes para os empregados. Talvez eu queira imprimir algo para os empregados. Estou incluindo esse objeto. Tem um número de dias que está sujeito a alterações em. Então temos os detalhes do tipo de licença, que, quero dizer, quero exibir detalhes mais uma vez. Então eu sei que eu tenho esse modelo de visão. Fiz aquela mudança que salvei. Agora posso voltar para a minha controladora e posso fazer isso de novo. Então, em vez de mapear para ver licença, eu vejo, ele está na VM. Fui até o meu upto para editar licença de alocação VM ativada. O que isso vai fazer é pegar os sentimentos pertinentes do banco de dados Vamos lembrar que este é advogado um objeto inteiro com todos os detalhes sobre vai limpar apenas os pertinentes necessários com base no que definimos no modelo de visão alguém gerar a exibição novamente . Selecione o modelo de edição na classe modelo vai ser E é deixar alegação VM e eu posso clicar. Acrescente que é uma nota. Não, acabamos com a nossa forma Onda. Tudo o que temos são sentimentos para a ideia que está escondida. Temos a entrada de texto para o número de dias de folga. Então, como eu disse em uma escuta anterior, se nós e eu vamos encontrá-lo rapidamente se tivermos tipos de classe, os tipos complexos não podem ser brigados, então eles geralmente ignoram. Substeer com os tipos simples que estão em string, etcetera, etcetera. Ele já sabe que eu d muito é o valor chave na tabela de dados original. Então é por isso que quando ele gerou em, escolhemos os dados na classe de contexto de dados. Ele sabia que, Ok, isso é a idéia vindo do impulso nada. Por isso, vou escondê-lo. Então, quer dizer, é que está inferindo um monte de coisas fora. Com base na forma como escrevemos o nosso código, podemos limitar a quantidade de edição se apenas configurarmos o padrão certo a partir daquele. Então, o padrão aqui é que nós criamos uma visão de modelo de visão em. Então usamos nosso modelo de vista para, você sabe, informar o que estava naquela praia. Tudo bem, então eu vou colocar tag aparecer então o título deste discurso vai dizer algo como qualquer coisa. E então eu posso dizer no modelo, não deixar o nome do ponto do tipo. Certo. Então, quando recuperamos o registro para essa alocação que estamos modificando, devemos saber o tipo de folha e lembrar que já incluímos a entidade tipo folha em qualquer coisa que seja alocações de licença. Então temos acesso a todos os detalhes. Então eu estou dizendo qualquer coisa que essa licença tipo nossa localização para On que eu possa colocar o nome do empregado em Sion Model pontos, funcionários pontos em. Então vou ver o primeiro nome. Copie esta de novo. Então, é claro, baseado em como você quer saber se eu já tenho o sobrenome padrão fora vírgula, primeiro nome Então deixe-me ver. Sobrenome, vírgula, primeiro nome. Tudo bem. Em Se quando chegarmos a este ponto temos outra exceção porque talvez empregado está aparecendo em branco. Então podemos sempre voltar para o nosso repositório em outro. Incluir para funcionários. Bem, vamos testá-lo primeiro. Compreender? Use o link do navegador no modo de exibição no navegador. Certo, então vamos testar nosso botão de edição Alguém para clicar em editar. Mas oh ah, ainda está girando de volta aos detalhes. Devo ter cometido um erro no meu Ah, isso deve ser ação SB. E isso é raízes P. Então foi mal meu. Isso deve ser sp Ação me que mudou Salvar em, em seguida, recarregar nossa página. Tudo bem, então fazendo essas edições Não, eu vejo que a emissão do link ou corretamente eu clique nele no DNO Estamos recebendo algum erro. Um barco? Ah OK, então eu estou recebendo um erro sobre isso. É deixar a VM de alocação ativada. Isso não é no outono. Oper suportado esfregando direita Onda Nós teríamos passado por algumas configurações superiores de outono estavam em nossa esfregona. Temos de ter a certeza de que estamos a aumentar o que quer que seja que estamos a referir-nos. Então eu preciso criar quantidade entre alocação de licenças que as partículas entendam duplicar esta terra para deixar nossa alocação ligada. Então eu vou dizer que eu quero um mapeamento entre a alocação IV na VM de alocação de licença de edição . Então, se você pegar essa seta, tudo que você tem que fazer, apenas atualizar sua configuração de esfregão, então uma vez que você fez isso, você deve ser capaz de pressionar para a frente. Tudo bem, eu sei que nós consertamos esse mapeamento é você sabe, nós estamos vendo que outro problema um barco, essa referência objeto não resolver, por exemplo, que Sir Peter fora de uma edição anterior com licença tipos foram onde colocar em que inclui nossa função de inclusão. Então eu vou voltar atrás, você sabe, você sabe, depois de um tempo esses erros, você os vê e então você pensa, Oh, sim, sim, isso é o que eu preciso fazer. E é por isso que eu estou passando por este exercício ou esses exercícios como estes para que possamos ver os erros comuns em aprender a corrigi-los. Hum, você sabe, rápido. Então eu incluí o tipo de licença. Posso acrescentar. Outro incluem O R, Eu posso dizer, Em seguida, incluir em, então eu vou colocar em outro Lambda Expressions. Então incluem tipo de licença, em seguida, incluir que pontos sobre. Não, desculpe. Que, em seguida, incluem é quando você está Daisy acorrentando. Então, se havia algo dentro fora licença que eu queria incluir também, então eu usaria que incluem alguém toe também incluem assim incluir, deixar tipo, em seguida, incluir funcionários em. Então eu vou tentar carregar a página mais uma vez. Então, vou refrescar-me. Tudo bem, então essa modificação não serviu. E isso é porque eu sinto muito. Refiro-me à modificação da função errada. Então, nessa poluição de partículas estavam usando encontrar por, eu não descobriria. Então eu preciso basicamente dizer que quando eu estou encontrando por eu encontrar esse objeto em particular Então entende Brick Lane em. Então eu corro as linhas de inclusão. Bem, talvez eu faria isso antes da descoberta. Então deixe-me ver. Isso é incluir que incluem direito. E então eu acho que tudo bem. Então vamos ter que refleti-lo. É chamado um pouco porque eu disse que eu quero as alocações de licença e eu quero incluir essas entidades e então nós estamos percebendo que são função encontrar não é dizer que ele não pode ser usado , então isso não é problema. Isso não é problema. Em vez de usar find, vou usar outro chamado primeiro ou padrão. Então eu estou indo apenas para remover encontrar e eu vou dizer primeiro não ou padrão em seguida primeiro ou padrão leva uma expressão de madeira tão longe do Lambda vendo Q colocando na minha seta, que é sinal de igual no colchete, ter sido saquê você ponto Então isso me permite dizer que eu quero o primeiro elemento ou não, Se você não pode encontrá-lo, me dê Não, Mas eu quero o primeiro elemento que muito é esta condição ea condição que eu quero O primeiro elemento em é que o i D no registro muito é o i d entrando. Tudo bem, então, por um lado, poderíamos usar o “find “, mas então vemos que isso faz limitações porque eu queria incluir dados ausentes ou outros elementos. Os bits estão fora de dados de outras tabelas? Onda Fine, pare de trabalhar. Então eu só usei uma alternativa. Então link é muito poderoso, muito flexível sobre ele tem um monte de opções que você pode usar para realizar uma tarefa particular, alguém para atualizar e ver se isso resolve o meu problema. Certo, um lugar nenhum no negócio. Então eu estou vendo isso. Está me dizendo que estou editando licença médica. Então, esse é o tipo de licença vindo do registro na alocação de quatro usuário de teste ou teste de usuário . Certo? Sobrenome, vírgula, primeiro nome. Então é assim que esta tela de edição se parece. Então eu posso fazer um ajuste para o número desses. Então, se eu sinto que eles devem ter mais ou menos D, eu notei que os elementos que são o rótulo é número fora destes fora de curso. Temos que mudar isso. Dê a ele um nome de exibição apropriado no modelo de exibição. Então eu já te mostrei como fazer isso. Eu não vou enfatizar que cada vídeo como você vai junto você faz isso para ter certeza que sua interferência está limpa. Estou me concentrando na funcionalidade. Mas então minha fonte final marcou geralmente terá todos esses pequenos ajustes à medida que avançarmos . Então, não, eu vou disparar a bordo, encadear as ações de edição de Post que quando eu clicar, salvá-lo realmente confirma as alterações no banco de dados alguém para voltar a sair do gerenciamento , voltar para o nosso controlador e, em seguida, vamos começar a modificar a postagem sobre isso deve ser rápido. Então eu vou dizer, em vez de pegar uma idéia e pegar uma coleção de formulários, eu estou aceitando a edição. Deixe a VM de alocação ativada. Estou chamando de modelo. Tudo bem, então quando nós posamos, eu estou recebendo alguns dados fora com este algum objeto chamado modelo deste tipo com alguma quantidade de dados ligados. Então o que eu vou fazer é primeiro, eles salvam a nossa localização é igual a um mapeamento fora da nossa parte superior calma, não esfregando. Eu fui, hum, até a edição. Desculpe. Vou esfregar para sair. Alocação da classe de dados, então deixe a alocação no objeto que estou mapeando para sair. tipo de dados de alocação é modelo. Tudo bem, então esta é a alocação de licenças de edição. Estou apenas mapeando de volta para a classe de dados original. Então eu estou indo para Bem, na verdade, eu estou pulando alguns passos aqui, então para ser completamente deve realmente dizer se em aberto que e, em seguida, ver o estado do modelo que é válido. Então, se é o nosso deixe-me dizer se não é válido, então se não, modelo de estado é válido, que significa que não é variado. Então queremos voltar a vista sobre estamos passando de volta modelo Onda. Bem, ele vai cuidar do que Eros estiver lá. Então fizemos tudo isso já no controlador de tipo folha. que possamos. Esse arquivo está errado. Nós podemos realmente ir em uma referência, hum, fora da lógica que vai colocar em Então no controlador de tempo folha em nosso editor fez algo muito semelhante. Nós dissemos que se não é válido em vista de retorno, caso contrário começar a fazer todas as nossas operações maravilhosas. Então, se você só se você esqueceu, segure para fazê-lo ou o que fazer. Você sempre pode voltar e referenciar o que fizemos com o controlador de tipos de folha. Mas eu vou avançar. Então estamos voltando ou vendo o que teria a nossa era já. Caso contrário, a imprensa junto para onde levamos a versão do esfregão do modelo de volta para a classe de dados que eu vou chamar de relatório de alocação de licenças. Então ele está esperando um tipo de dados off alocação de licença que temos em nosso modelo de alocação que acabamos de criar e você se lembra que isso está chamando um ouro para que eu possa salvar o nosso é . Sucesso é igual a isso em. Então podemos verificar e ver se não é assim se brisa aberta se não, é sucesso. Então isso significa que não foi um sucesso para ele. Em seguida, podemos adicionar o ponto ST modelo para que possamos adicionar um assado em um estado modelo no erro do modelo. E então eu fui para abrir isso e não há nenhuma chave, mas então a mensagem vai ser um erro ao salvar. Tudo bem. Então, mais uma vez retornamos esta vista. Se isso e isso é tudo, se não for sucesso, certo, se nada disso for executado e quisermos voltar para algum lugar, então eu não quero redirecionar o índice desta vez, eu vou redirecionar para o discurso muito detalhes sobre ir para passar em que eu d. Então ah, pouco desafio aqui saber é que eu não sei a idéia fora dos funcionários porque eu não tinha ido para ele na edição licença alocação. VM alguém para apenas fazer uma edição rápida Já tem o empregado vm Alguns apenas vão adicionar o funcionário. Tudo bem, então ao adicioná-lo ao modelo de visão, não, eu posso acessar são baratos. Esta idéia nossa durante a minha cabeça, operações estão voltando para a página de edição em nosso eles têm um escondido antes de deixar idéias de alocação. Então eu vou apenas criar outro oculto. E desta vez vai ser para os funcionários que eu d. que quando enviarmos o formulário, nós ainda estamos mantendo o valor original I d no valor I d vindo de nossa página. Então, de volta ou controle ou não, que é manipulação ou lógica de negócios, eu vou ver que eu quero redirecionar a opção chamada detalhes. Tudo bem, então nós estamos redirecionando detalhes rasgados, ação ou detalhes ação mais uma vez requer no funcionário i d. Então eu vou ter que dizer vírgula em. Então eu quero dizer algo como novo, e em vez de um novo objeto em ir chamar este objeto enquanto a propriedade do objeto vai ser eu d sobre ele vai tomar modelo dots empregado I d. Então deixe-me apenas rever isso rapidamente. Então lembre-se que estamos redirecionando o dedo do pé em ação. Vimos isso já onde é concluída a operação e ele vai redirecionar por padrão vai redirecionar índice, que foi bom porque Index não requer parâmetro ah. Então deixe-me rolar para cima para indexar rapidamente. índice não exige apartamento depois de terminar de editar para um funcionário, não quero que volte a indexar a lista inteira. Off funcionários são a coisa toda. Deixe os tipos para, em seguida, passar pelo mesmo processo. Só queria voltar ao meu disco, caso queira editar outro. Se não fizer isso, então você pode voltar para a lista depois. Depois que você editou, eu queria redirecionar para os detalhes do meu registro com minhas alocações de folhas. Então, em vez disso, indo para indexar sem mente lá por padrão, eu posso determinar onde eu queria redirecionar para qual ação. Eu queria redirecionar a ação que eu queria redirecionar, também. E vou voltar para o meu idiota. Ação que eu queria redirecionar para os detalhes, não indexar desta vez, mas detalhes sobre então detalhes requer um perímetro fora da cadeia chamado I D. Então eu tenho que então fazer Ah cone para isso. E eu só digo vírgula nova em então o nome fora do permitido esperava suas idéias, então eu tenho que chamá-lo eu d em. Então eu dou um valor. E o valor que ele deveria estar recebendo é o empregado i d. que eu estou armazenando dentro do modelo que está vindo como um valor do formulário de edição . Tudo bem, então saiba que todos esses ajustes foram feitos em Eu posso fazer mudanças de mudança de controle e s enganar ao longo de fora como todos os arquivos. Isso não significa sério para controlar o turno e, eu sei, vai testar isso. Então eu vou mudar isso de 10 dedos. Digamos que seis seis devem ser uma compensação de valor para ver a diferença. Clique em Salvar. Certo, então estamos tendo outra era. Andi, posso te dizer isso. Bem, se você está recebendo esse erro é porque ele não está, ele está tentando recarregar a exibição sem os dados. Digamos que há algo errado com o nosso cordão. Andi, eu posso te dizer que ele provavelmente está recarregando a vista porque ele ou está atingindo o modelo ficar não sendo valorizado ou isso não sendo bem sucedido ou ele está tentando a operação e encontrar algum erro no DSO. Ele está retornando a exibição, e eu suspeito que é provavelmente o fato de que ele está pegando o erro no retorno na exibição. Então o que eu vou fazer é que nós fomos para modificá-lo esta atualização um pouco sobre o que eu vou fazer é realmente construir a entidade um pouco melhor. Então o que está acontecendo é que ele está pegando uma exceção quando ele está tentando confirmar a mudança, e isso é porque alguns fora dos dados não estão alinhados com o que ele espera. Então eu vou modificar isso no sentido de que eu estou indo para encontrar o alguém original para dizer, Obter registro vai ser igual a na pontuação, Deixar alocação pessoas ponto e eu vou encontrar o registro que está prestes a ser editado. Encontre-o pelo seu I D, que é modelado que eu d direito, e depois ter telefonado para ele, eu posso ir em frente atribuir os valores diretamente para que eles são voltas no mapa em não necessariamente funciona tão limpo como gostaríamos Então, você sabe, caso a caso. Você vê onde funciona perfeitamente. Vemos onde pode não funcionar também. Então esta é uma daquelas situações em que pode não funcionar bem. E então eu vou ter um grande criativo em um pouco sujo na maneira que eu estou indo para baixo para editar. Então, não, eu sei que eu estou a perder e editar fora. Apenas realmente um campo vindo da alocação de licença de edição é realmente um sentimento que eu estou mudando com base no formulário e que é o número de dias fora. Então o que eu vou fazer é ter recuperado o registro original para ser editado, e eu estou chamando de registro. Vou então remover esta parte onde faço a limpeza. Então eu vou ver um campo de dutos recorde que eu sei que estou atualizando. Ou se é mais do que um sente de modo que, neste caso, a sensação que estou atualizando é número de dias fora. Eu vou dizer número de dias não é igual a modelar esse número fora de dias, então qualquer valor foi passado do formulário que eu não estou atribuindo. É para esse registro de banco de dados, mas lembre-se que nada realmente acontece nesta fase até que nós cancelemos a nossa função it. Então, eu vou chamar a função de atualização em Estou passando no objeto fora do registro em vez dos objetos de alocação originais que acabamos de remover. Então pouco se sabe que não conseguimos colocar em modelo. Então você contou suas exceções, Andi. Então eu vou tentar isso novamente, alguém para salvar a mudança de controle e está ligado. Em seguida, use o link do navegador, reinicie nosso aplicativo e tente a operação novamente. Então, de volta à tela, eu vou mudar esta loja seis e, em seguida, clique em Salvar Onda. Estamos de volta. Temos recarregado são página de detalhes em fazer notar que estamos refletindo o novo valor. Então isso teve um monte de exercícios que nós fizemos. Nós criamos um novo modelo de visão modelo Nós tentamos e campo em certas operações, mas nós encontramos uma solução e isso é o que a programação é realmente tudo um barco. Há muitas maneiras de realizar o que você precisa realizar. Você só precisa ser ou medo com as diferentes técnicas que irão levá-lo lá em ter certeza de que você está tomando as melhores decisões como você ir junto. Então, com esta operação, não use praticamente terminado com o nosso modelo de alocação de licença, onde nós muito para um automatizado sentado fora das alocações por tipo. Você pode adicionar mais lógica de negócios para mim com meu advogado para sair porque, obviamente, seus funcionários de refeição não devem ter maternidade. Deixe estes de modo que exigiria duas modificações. Você tem que adicionar um gênero ao perfil de usuário e, em seguida, você adicionar o negócio de lógica para ver se o sexo é um certo tipo, em seguida, fazer na licença de maternidade. Mas já fizemos isso. Nós também ficou quente amanhã onde classe usuário identidade, para que pudéssemos obter mais detalhes sobre nossos usuários. Adicionamos os detalhes onde vemos seu perfil, bem como alocações de alívio de água que existem em então, finalmente, para esta lição, teríamos colocado na funcionalidade de edição para ser capaz de alterar a alocação para Isso, os empregados de partículas. Então, no próximo vídeo, vamos apenas fazer alguns retoques finais. Em seguida, vamos estar verificando em nosso aplicativo atualizado para o nosso controle fonte 35. Analisar e adicionar mudanças no GitHub: Ei, pessoal, neste vídeo, nós só vamos estar olhando para algumas mudanças que fizemos e algumas mudanças que eu fiz talvez fora da tela. Então vamos estar checando ou CO para nos levantar. Então, apenas para revisar, nós apenas colocamos em nosso modelo de alocação de licença onde permitimos que os usuários de administração pisem. Você sabe, atributos. Deixe essas férias. São dias secretos. Qualquer que seja o tipo de licença é nesses dias. Obter funcionários atribuídos no pé. Em seguida, uma vez que eles são atribuídos do que o usuário administrador, pode qualquer um de você ou modificar, se necessário. Então, você sabe, quando vamos gerenciar, vamos deixar alocações ligadas. Então isso traz uma tela mostrando todos os tipos diferentes e, em seguida, a função, permitindo-nos realmente começar as alocações para a gestão. Fora das alocações que temos para funcionários onde veremos todos os funcionários no sistema. Neste momento, só temos dois que nos permitirão ver os detalhes deste empregado. Então, quando eu clicar em detalhes que vai carregar como um pouco de fala para sobre, eu colocar no nome do usuário. Então você sabe exatamente qual registro você está olhando para usar no endereço de e-mail. Número completo. Alguns destes estão em branco, mas o quê? Um dos ajustes e feito fora da câmera foi na notação diurna para o modelo que está sendo usado para carregar este discurso para que nossos rótulos fiquem um pouco melhor porque teria havido caixa de camelo, você sabe, não teria havido espaço e assim por diante. Então eu entro encontrá-los adicionando essas anotações de dados para o modelo de exibição. Andi, isso está nos dados, parece um pouco mais aguçado. Eu também teria modificado no ido para a caixa que cada tipo de licença é gerado ou alocação de tipo de licença. Onda também mudou a aparência dos botões ao lado do texto. Eu também mudei o botão da lista de batalha. Então esta batalha este botão nos traz de volta ao discurso do índice. Em seguida, se clicarmos em editar, vamos para a nossa página de edição onde vemos o número desligado. Isso também modificou o rótulo para este formulário em. Mudamos o valor que clicamos, salvamos, voltamos, def. Voltamos aos detalhes. Nós apenas recarregamos a página de detalhes para que possamos, você sabe, navegar nossa própria mais facilmente e acima de tudo que temos são top agora. Então, tendo feito todas essas mudanças, vou verificar neste tribunal. Se você precisar fazer referência a isso, você sempre pode fazer referência a essa versão fora do tribunal. Mas nós apenas fazê-lo da maneira simples onde vamos para o estúdio visual Onda lembrar tudo com um herege significa que ele foi modificado desde a última versão. E, em seguida, você tem um monte de hereges porque fora as atualizações devem que fazer sobre a atualização de identidade a partir da mudança de usuário identidade para funcionários tipo de classe. Mas isso realmente não tem nenhuma influência sobre o objetivo final, que é apenas clique direito ou solução, ir para cometer e, em seguida, bem ou comentário mensagem vai ser um pouco longo Se vamos tentar Annacone para todas as mudanças que fizemos alguém a dizer implementado, deixar um módulo de localização Onda alterado. Eu não uso os empregados. Certo, então foi isso que fizemos na promotoria. Eu só estou indo toe, obter o correto aqui e, em seguida, dizer commit all and sink e assim dizer o commit local on, em seguida, sincronizado com o nosso repositório remoto get hope e é isso para este modelo. Quando voltarmos, estaremos configurando o modelo de aplicação leave the leave, onde estamos Low funcionários toe aplicar para licença com base em suas alocações. Andi Khomeni abelhas, Eles deixaram de fora essa alocação em. Então vamos estar sentados no painel de administração para realmente aprovar nossa recusa essas solicitações de licença . Então fique ligado, mais divertido por vir. 36. Visão Visão Geral de solicitação: Pessoal, bem-vindos de volta. Vamos começar hoje um novo modelo e isso será para a licença. Os aplicativos para este modelo serão configurando a funcionalidade que irá muitos nossos funcionários para serem capazes de se candidatar a férias ou qualquer tipo de licença que é, Andi, estaremos definindo a funcionalidade que o usuário administrador tem que aprovar. Então, quando a pessoa quer dizer a solicitação do aplicativo, ele entra em, ah, status off pendente em então ele é ou aprovado ou rejeitado pelo usuário administrador Onda. Quando qualquer ação ocorre, é claro, nós registramos e mudamos a bandeira e também ajustamos o número de dias que a pessoa sabe tem disponível. Então, toda essa funcionalidade vai estar indo para este modelo na tela aqui. Eu realmente tenho que deixar a aula de história, hum, classe de dados associada ao histórico de licença. Então, eu vou trazer à tona as interferências rapidamente, e esta é a nossa interferência agora. E sob gerenciamento, o usuário administrador será capaz de visualizar os aplicativos de licença. No entanto, alguém que não é um usuário administrador não deve ser capaz de ver gerenciar, mas ele será capaz de solicitar licença. Concedido, você tem que estar pronto, membro agitado fora do site do brincalhão Então vamos estar configurando autorizações sobre a função de aplicação licença em será configurar a funcionalidade para aprovação. Andi Rejeição Então, haverá pequenas mudanças nas mudanças de banco de dados ao longo do caminho. Mas neste modelo, vamos implementar alguns controles agradáveis como o nosso controle de calendário, que a pessoa possa selecionar a data de início e a data de término. Estamos colocando a inteligência para ter certeza que você sabe que eles podem marcar uma data de início. Isso é mais longe no dia no futuro do que o bit final, você sabe, será personalizar a solução e colocar em alguns controles agradáveis sobre. Acho que vamos nos divertir muito neste modelo, então fique por perto. Só vai ficar mais e mais divertido 37. Módulo de solicitação de licença - Mudanças de banco de banco banco de banco e ViewModels: Ei, pessoal, bem-vindos de volta ao primeiro vídeo, eu só vou fazer uma pequena modificação na minha tabela de dados em É realmente só para mudar o nome. Hum, então eu tenho isso aqui é deixar a história. Mas, você sabe, quando eu estava olhando para ele novamente, enquanto eu deixo o histórico que soa em pessoal, talvez seja melhor deixar aplicativos ou deixar solicitações. Alguém para chamar isso de pedidos de licença. Tudo bem. Em quaisquer facções, um nome de classe, então eu preciso ter certeza de refratado o fator de garganta tribunal re. Todas as referências a esta classe degolam o meu casaco. Então regiões para fazer isso facilita para mim apenas renomeá-lo em todos os outros lugares. Ele pode ser referenciado, incluindo nos repositórios e em outros lugares em eu posso apenas fazer isso. Renomear no efeito Net é que o repositório teria sido modificado. Se eu entrar no contexto do aplicativo BB, ele teria necessário modificá-lo. Andi, estou vendo alguns conjuntos de banco de dados aqui. Isso realmente não deveria estar lá em algum lugar. Dedo, remova isso. Desculpe. Se você ver isso no seu código, você pode se sentir livre para removê-los também, eu vou ter que investigar por que eles estavam lá, mas não deve ser feito nenhum mal para removê-los. Se você ver isso no seu código, você pode se sentir livre para removê-los também, eu vou ter que investigar por que eles estavam lá, Tudo bem, então o ser definido pedidos de licença é não. E depois fora do curso. Se mudarmos o nome da turma, eu tenho que mudar o nome real. A mesa faz Sanderson mudar. Isso requer Onda. A última coisa é que você sempre quer ter certeza de que seu nome fora do seu arquivo muito é o nome da sua classe. Então eu só renomeei que também a partir do histórico para deixar se pedido parecer fora do arquivo na realmente entrar na classe deve ser pedido não ele não pede alguém para fazer outro renomear Terrível que Então isso é apenas eu tentando dedo do pé. Certifica-te de que aqui estão a dizer que há um futuro de camionagem que eu posso. Qualquer um é qualquer um. Não foi mal feito. Então lembre-se que o nome da classe deve ser um pouco singular. Mas então o nome da tabela, quando está sendo referenciado, pode ser plural. Certo? Então deixe o pedido ligado. Temos os pedidos de licença de mesa. Então isso é mudança. Número um para o banco de dados. Andi . No entanto, essa é praticamente a única mudança que eu quero fazer agora, já que abaixo do modelo talvez as necessidades mudem. Talvez algo mais apareça. Não devemos estar familiarizados com o que nunca mudar. Precisamos fazê-lo para a classe de dados para que nós estamos adicionando uma tabela. Criamos uma nova classe de dados, certificamo-nos de que ela é representada nas referências do conjunto de banco de dados, ou apenas fazemos quaisquer modificações iniciadas duas classes e, em seguida, executar ou migrações. No entanto, a próxima coisa que eu quero fazer neste vídeo em particular é apenas configurar um modelo de visualização. Então eu estou indo para ir para a vista para a pasta Modelos em uma classe em que eu vou chamá-lo sair, solicitar VM e, em seguida, deixar solicitação V. M sendo a classe modelo vista baseada. Vou tirar todas as propriedades da turma original e colocar nesta área. Tudo bem, então eu gosto de criar, tipo, uma base. E então, é claro, a besta não precisa das anotações de dados reais que eu preciso para a classe de dados, então você pode simplesmente removê-los e, em seguida, alteramos as referências para os modelos de visualização correspondentes ou sua funcionários VM tipo folha VM VM no empregado vm novamente. Pelo menos temos a certeza de que temos representação direta. Então é por isso que eu sempre tenho essa vista de besta Waddle porque é um mapeamento direto entre a classe de dados Onda view modelo em. Então, à medida que construímos as outras interfaces, então podemos começar a ter as variações depois disso. Não, a próxima coisa que quero fazer é ter certeza de que tenho a limpeza. Andi, se você notar, eu não tenho um mapeamento para isso. Bem, eu tinha pedidos de licença, alguns pedidos de licença mudando então eu tenho o que eu tenho. Deixe a história Veum já. Então você vê, é por isso que nomear se tão importante causa eu já tenho isso como deixar histórico VM. Mas eu apenas o tempo limite para mudou para a VM de solicitação para que eu possa apenas remover folha histórico vm esta entidade que uma nota em. Se você comparar os dois arquivos, você verá diferenças. Mas à medida que avançarmos, vou colocar de volta certas coisas que provavelmente vão estar faltando na Nova Maravilha decorada. Isso é bom. Só não quero complicar as coisas simples ainda. Então a próxima coisa que eu quero fazer é ter certeza de que o mapeamento tem o carro para mapear para solicitações de licença, tabela em licença, solicitação VM e, em seguida, podemos executar uma construção segurando na mudança de controle e pressionando B e, em seguida, apenas para ter certeza de que não temos erros e eu tenho alguns erros. Então é sempre bom fazer uma compilação e então você percebe que você tem a era. Então o ar Amiri é que eu não alterei a referência de pedidos de licença. Então esse é um dos não tamanho, refletindo um 40 depois de mim. Claro, você muda o cabo em todos os espaços. Pode sempre controlar a mudança e estar ligado. Em seguida, ele vai dizer-lhe que ele campo estúdio visual perdeu para dizer-lhe que você sabe onde você sente para que eles podem mantê-lo honesto. Mas então eu posso apenas controlar F neste arquivo, encontrar pedidos de licença e substituí-lo por pedidos de chumbo neste Substituir todos sabem psy que é o projeto atual. Eu quero ter certeza de que ele está vendo para um documento que você tem que ter cuidado ao fazê-lo através do produto para que os documentos do Corão substituam fora Onda. Então nós temos que mudar toda a referência do cerco porque eles chamam de, deixar suas árvores. Mas não, são pedidos de licença, certo, alguém para fazer a mesma coisa. Eu só vou encontrar histórias de licença neste documento sobre Apenas fazer o nosso lugar. Mudou todos eles fora das aparências foram corrigidos. Eu sempre posso voltar para a minha lista de era em, em seguida, usar erros mais fáceis. Mas depois vou construir só para ter a certeza, está bem? E então, desta vez, a construção foi bem sucedida. Então não, eu sei que não tenho flechas no meu quarto. Fatoração, fatoração funcionou. Oh, bem, então, não, eu só vou fazer uma migração para atualizar meu banco de dados. Então eu menciono o conselho do gerente de pacotes, que mais uma vez, se você não vê-lo no painel inferior, você sempre pode ir para ferramentas o que há de novo, obter gerenciador de pacotes e selecionar essa opção cônsul. Mas aqui eu vou dizer, adicione poeira, meu Grayson, e então a migração que estou adicionando mudou. Deixem as histórias, equipa. Quero dizer, você também pode dizer mudar, deixar histórias, alguém para ver isso dessa maneira. Ela e ela são histórias de Lee para deixar pedidos. Certo, então é mais explícito exatamente o que trocar, então este percenter deixou adicionar a migração . Oh, este é um norte importante. Às vezes, quando eles estão fazendo algumas alterações em tabelas que podem estar alterando o nome ou alterando certos tipos de dados associados a ele durante a migração, pode haver, ah, perda de dados. Então você tem que ter muito cuidado com isso ao fazer essas migrações. É por isso que semeando os bancos de dados geralmente recomendado porque então você tem mais controle. Sobre a estática são os dados básicos que vai em este é durante o desenvolvimento. Portanto, é sempre mais fácil perder dados durante os desenvolvimentos do que na produção. Certo? Então você tem que ser. Quero dizer, se você pegar o jeito dos desenvolvimentos, então você será mais capaz de avaliar. Ele está em produção, e há controles em vigor para fazer migrações na produção. Mas só estou trazendo você para a prisão para esta condição de que algumas mudanças resultem na perda mais tarde. Neste momento, não temos muito a perder de qualquer maneira, então entendo que devemos continuar com esta migração. Então eu só digo banco de dados de opiáceos pressione entrar. Então está. Está feito. Então nós vamos apenas verificar indo para o nosso explorador de objetos drill-down em direção ao banco de dados local em Tora bancos de dados olhando para dentro, deixar o gerenciamento, olhando para as tabelas em Lá vamos nós. Portanto, deixar históricos não é chamado de pedidos de licença. Tudo bem, modo que a migração foi completamente bem sucedida em nós vemos que ele manteve todas as colunas como dissemos que deveria. Então, não, nós realizamos trocas de RD Toby e nossa criação de modelo de visão. Então, em seguida, vamos começar a construir no controlador e as diferentes ações sobre. Vamos nos divertir um pouco com isso. Então, em seguida, será configurar a tela para um funcionário para ser capaz de se candidatar para de algum formulário fora de licença. 38. Módulo de solicitação de leads para funcionários - configuração Controlledrs: Ei, pessoal, bem-vindos de volta a esta lição. Nós vamos estar configurando as ações do controlador e toda a dependência é que pelo menos nós pensamos que precisamos agora para apoiar nosso modelo de solicitações de licença. Então, no estúdio visual, eu vou apenas saltar direto para o reajuste para ir direto para os controladores. Clique em, adicione em um novo controlador. E então, como de costume, escolhemos o controle da NBC. Sempre leia as ações certas. Então, selecione isso. Clique em Adicionar. Estamos chamando este pedido de licença no troller ligado. Então nós clicamos. Adicione uma vez que isso é gerado, então nós queremos começar a adicionar nossa dependência. Então, começamos com nossa leitura privada apenas referenciada no repositório para solicitações de licença. Então isso estaria ligado. Só vou checar a DSI se realmente não mudei o nome. Então devo deixar o pedido. Eu não sou. Eu deixo o histórico, então eu só vou entrar no contrato em que eu fui para mim essa atualização então no arquivo de contratos sobre onde encontrá-lo primeiro, em seguida, fui para renomeá-lo em. A coisa é, quando eu renomear o arquivo em si é o seu estúdio será a sugestão para mim, Ferramenta apenas renomear tudo. Então isso é deixar solicitar repositório ana pressione enter. Então eles vão sugerir que eu execute um renomeamento. Eu só vou dizer sim para que você seja o arquivo do tribunal automaticamente ligado. Então farei o mesmo para o relatório agita. Eu fiz isso para o contrato que interfere, então eu vou fazer o mesmo para o repositório onde eu acabei de renomear este um rapidamente para que ele reflita minha nova disposição, que é o pedido de licença ligado. Então eu vou dizer sim para os problemas para renomear em todo o aplicativo. Certo, então esse é outro fator. Então, como eu disse, você faz uma mudança. Você tem que ser cuidadoso em consistência porque ele quer algo chamado deixar histórico e algo chamado pedido de licença em outro lugar. E então você fica confuso. Então, no controlador de solicitação de licença, o meio desacelera qualquer coisa que não é absolutamente necessário. Então preciso fazer os amigos dela pisarem no pé. Deixo o repositório de pedidos ligado. Estou chamando este relatório de pedido, tudo bem, tudo bem, e depois fora do curso depois incluir quaisquer referências e obter a minha ortografia correta. Então isso é privado. Refazendo o ativado e, em seguida, inclua a referência ou o espaço de nome para o repositório de solicitação I leave . Eu só uso meu bote salva-vidas aqui. Inclua essa referência, então lá vamos nós. Toda a outra dependência é que podemos querer seria definitivamente o esfregão em. Talvez um para o gerente de usuários. Então, em vez disso, escrevendo o motor já tê-los bem feito dentro do deixar um controlador de localização ligado. Então, você vê, quando você começa a construir um grande projeto e você tem incêndios por todo o lugar e incêndios estão abertos, você sabe, eu gosto de manter o meu total divulgado para que eu possa ir lá, encontrar o arquivo sobre, Você sabe, retirar com rapidamente em vez de escolher o nosso próprio até que eu tropeçar nele como se eu estivesse fazendo a neve. Então, em controladores e eu tenho esses dedos sendo feita referência a segundo esta cópia aqueles pedaços como dependência está em então fora de curso. Faça a inclusão necessária fora do para as pastas ou o nome da espécie. E então eu não saberia que cria Michael instrutor. Então veja, veja, thar Então tudo isso nós fizemos várias vezes. Nada disso deveria ser estranho para você, então eu vou me apressar e fazer isso para que eu não esteja gastando muito tempo construindo essa parte, e há construtores completos. Então, se você foi capaz de fazê-lo sozinho, então isso é uma boa defesa, muitas vezes olhando alface. E isso é bom. Se não estiver filmando o vídeo, tente replicar o ferro frio tão pressionando em frente. Hum, nós podemos apenas fazer a vista de índice do não. Então o índice você Este vai ser meio complicado. Portanto, nossa exibição de índice será principalmente para mostrar o administrador ou o que você sabe que as solicitações de licença são. Se ele porque então lá indexar usar que podemos ter a vista de índice, que é a vista que o usuário verá quando eles querem ver todas as suas solicitações de licença que eles enviaram em. Em seguida, há também a exibição de índice para o administrador, ou onde eles estarão vendo todas as listas pendentes. Então o conceito off index realmente é a página de destino. No entanto, você nem sempre precisa chamá-lo de índice por padrão. Tudo vai pousar no índice pago, claro, mas então já sabemos que podemos controlar o chão podemos controlar quem vê o que criando ações personalizadas que ligamos a certos links que certas pessoas podem ver. Então eu vou definir uma grande conversa autorizada sobre todo este controlador. Então isso significa que ninguém deve ser capaz de obter nada dentro deste controlador de aplicativo de licença sem ser um membro registrado fora deste aplicativo. Tudo bem, mas então há certas ações que eu vou autorizar para o cargo de administrador somente em então, há certos que bem, qualquer um será capaz de entrar em nosso nós provavelmente pode na autorização para apenas a função de funcionário. Além disso, alguém para usar essa oportunidade para configurar esse discurso de índice. Como administrar remos, indexar , ver corações, vou primeiro sentar-me sobre autorizar em cima desta. Então eu vou especificar o papel. Rose não são iguais, senhor. Equal abre string em, então. Esta é a turnê administrada. Assim, apenas o administrador deve ser capaz de chegar a esta opção de índice dentro fora do controlador de solicitação folha , no entanto, já estavam autorizando tudo. Assim, apenas uma pessoa geral ou geralmente registrada seria capaz de acessar algo que não é especificamente para o administrador. Tudo bem, então você pode misturar e combinar. Você poderia ter feito a autorização sobre cada ação, que teria sido trabalho ocupado. Podemos apenas criar como todo o controle. Então você tem que ser amado sendo autenticado em primeiro lugar, mas depois específicas para regras particulares, podemos apenas colocar este bem acima dele. Vire. Então, para essa exibição, eu realmente tenho uma visão em que quando o administrador vai ver toda a solicitação de licença, eles vão ver talvez uma contagem total de solicitações de licença para o período. Eles vão ver o número total de pedidos pendentes. Então eles vão ver o número total fora. Você sabe, solicitações rejeitadas em podem ser solicitações aprovadas. Então eles vão estar vendo três figuras diferentes quando eles aterrissarem nesta página em. Isso é, além da lista real off solicitações que precisam ser ação. Então, para obter uma visão personalizada como essa, com todas essas estatísticas e assim por diante, eu vou criar um modelo de visão que é voltado especificamente para visualizar esse tipo de dados. Então esse é outro caso para o porquê de termos vocês modelos porque eu quero ir para as modelos. Eu vou trazer a minha solicitação de licença arquivo VL em, então lembre-se, eu estou apenas usando um arquivo e neste arquivo tem muitas classes. Esse é o meu padrão. Outras pessoas criaram um arquivo diferente, mãe, tudo bem. Mas eu estou apenas mantendo-o consistente em eu vou dizer classe pública em, Vamos dizer vista de administrador ou quero dizer deixar vista de solicitação, ver VM Tudo bem em. Eu estou fazendo isso explícito porque então eu posso ter em licença de administrador, solicitar editar através de mais detalhes vm diferente do regular via então eu quero dizer, Eu estou apenas fazendo o nome da classe explícito para que eu não cometer um erro quando, ao cruzar o linhas, hum, eu vou apenas usar esta oportunidade mais uma vez para a configuração do mapa ings. Lembre-se, se tivermos um modelo de visão e a mãe precisa de esfregona para uma classe de dados, temos que ter certeza de que estamos representando. Mas acho que não precisamos desse mapeamento, certo? Não. Então eu vou construí-la e vamos ver se precisamos desse mapeamento. Tudo bem, então isso vai mostrar estatísticas. Então esta seria a primeira propriedade para mim é um inteiro mostrando pedido total. Então este será o totalmente fora dos pedidos no sistema. E eu apenas duplicar isso porque eu quero que os valores inteiros tenham total de solicitações. Eu tenho solicitações aprovadas que tenho solicitações pendentes em, então eu rejeitei solicitações. Tudo bem, então estes são quatro valores que eu quero ser impresso para ST alguns apenas sentado ou propriedades para limpar para cada um. Mas então, além de ver essas propriedades, eu também quero a lista fora. Acredite em pedidos no sistema. Então, como fizemos no passado, eu apenas criar uma lista fora do tipo de licença, solicitar VM sobre isso acreditaria que solicitações. Tudo bem. E então podemos ver Get sit acidentalmente duplicados daquela linha lá. Certo. Então temos uma lista. Chamamos de pedidos de licença. Esqueci-me de conhecer este público. Então, nosso público menos pedidos de liderança há um ano. Então, foi acordado. Ou apenas sabe aqueles que supervisionam o seu público, qualquer buraco? Não. Eu tenho o meu modelo de visão. Não posso começar a fazer ginástica e coisas criativas dentro da minha ação antes de carregar o modelo e enviá-lo para a vista. Então eu estou indo primeiro fazer Ah, pedreira onde eu estou recebendo pedidos, ou deixe-me ser explícito sobre isso. Eles deixam pedidos, e isso vai ser igual. Dedo sublinhado. Eu vi em um pedido de licença quadrado três puxar, não encontrar. Tudo. Então norma retira todos os pedidos de licença no sistema. Agora que eu tenho todas as solicitações de licença no sistema, eu posso consultar para encontrar quantos foram pendentes em casa e foram esta casa. Qualquer um tem sido isso porque já fez uma chamada para o banco de dados. E não, eu tenho todos os objetos que posso fazer a matemática nos objetos. Eles tinham duas opções. Ele poderia ir ao relatório e definir a forma mostrada causa para cada um, assim você pode obter coned aprovado fora Coned rejeitado em. Mas, em seguida, cada vez que você escreve on-line, isso diz que o relatório de solicitação ponto encontrar tudo o que vai fazer um banco de dados chamado que teria sido quatro causa banco de dados para obter quatro números. Às vezes você quer reduzir no banco de dados, porque em vez de fazer isso, eu estou recebendo todos os pedidos de licença, e então eu vou usar esse objeto tendo feito um dia, Toby, começar a fazer a minha boca para que eu possa dizer algo como em. Bem, antes de seguir em frente, estou com os Marretas. Alguém que diga que Vier deixa pedidos, modelos. Eu seria igual toe mah per on, em seguida, esfregar er é limpar o dedo do pé um tipo fora da lista. Pedidos de licença. Certo, então estamos mapeando 12. As coisas vão embora. Solicite o M e o que estamos mapeando para isso são as solicitações de folha que acabamos de recuperar do banco de dados. Tudo bem, e então eu adiciono as referências que faltam. Sim, então em casa ou linhas vermelhas. Então saiba, o que quer que eu esteja fazendo, eu vou estar fazendo com a modelo. Então aqui está o que eu posso fazer. Eu posso dizer que algo no Vire Model vai ser igual dedo adicionar visão média. Então nós acabamos de criar a visão de administrador, senhor, é bom ir para uma nova instância fora desta classe. E então eu abri minhas chaves que alos Muto linha por linha, declarar cada propriedade. A primeira propriedade que eu quero seria digamos que o total de pedidos vai ser igual a, e então é suposto ser igual a todos fora do registro que eu apenas retiro. Então, o total de pedidos seria tudo fora do registro. Eu acabei de recuperar, hum, então eu vou ver pedidos de licença. Mas lembre-se que eu tenho os modelos. Não quero mais interagir com esse objeto. Este era só para obter os dados. Agora está limpo para o meu modelo de visão, então vou fazer todo o resto com o modelo de visão. Então deixe pedidos modelo ponto e, em seguida, eu posso apenas dizer contagem porque o número total de solicitações seria o número total de registros que eu acabei de recuperar. Tudo bem, então. O próximo que eu puder ver seria aprovado. Solicitações que posso ver aprovar solicitações é igual a licença. Deixar pedidos. As missões de socorro da mãe, modelos de pontos. No dia, eu vou colocar uma condição em que eu fui para ver onde você com minha flecha. Então o início do meu amado X pessoa na minha condição seria aprovado é igual a verdadeiro, isso, através aprovado, é igual a verdadeiro. Isso significa que está aprovado. Então ele está vendo algo que eu não posso implicitamente converter tipo fora inumerável significado isso ainda vai obter uma coleção? Porque, não, é se houvesse 10 aqui e cinco aprovados neste está devolvendo a lista. Os cinco aprovaram, não o número cinco. Precisava do fogo numérico. Então, depois de filtrar tudo o que eu quero nesta lista, eu posso ver que Conde Andi neste momento. Desculpe. Tem que ser Brie, aparentemente. Veja, então nesta situação é fazer uma contagem contra a coleta direta. Bem nesta situação está fazendo conta contra, uh, uh, um conjunto ligeiramente modificado. Então isso eram garras e qualquer outra expressão lambda que você possa adicionar. Então filtrar escreveu ou modificar a lista. Antes de fazer conta, ele vai mudar qual deles você diz que vai ter que usar a função de telefone em vez dos cones como uma propriedade. Tudo bem, então você pode estar atento a isso. Então, se você fizer um continentes escuros uma linha vermelha, é mais do que provável visto que você precisa da função. Por uma questão de fato, você poderia realmente dizer cones e usar a expressão de madeira serrada. Tudo bem, então isso realmente iria olhar na coleção e você está vendo que eu quero. Conte todos os registros que atendem a isso, hum, condição. Então você vê que há tantas maneiras de você fazer isso, que é muito, muito flexível. Segundo, eu fiz a cláusula where e depois telefonei para a conta depois do fato. Ou eu poderia apenas usar os cones configurar meu Lunda em que aqueles filtros condição Andi não e em valor me dizendo quantos registros atenderam essa condição. Muito bem, alguém para avançar com esta variação fora do cone. Então eu vou fazer isso em, em seguida, pedidos pendentes seria muito semelhante alguém para copiar isso novamente. Mas, desta vez, a condição estaria pendente. Seria que aprovado não é assim lembrar que quando criamos a classe de dados para solicitação de licença ou eu posso apenas olhar na VM aprovado está em nenhum nível. Então, quando colocamos o ponto de interrogação contra o touro, significa que é notável, o que significa que ele pode ser verdade. Não poderia ser quedas, e também não poderia ter valor. Então, tecnicamente, quando você se candidatar a férias ou qualquer outra coisa, ele não teria um valor na aprovação do slot porque ele não foi aprovado não sendo aprovado. meios foram rejeitados, mas não foram aprovados, o que significa que não é verdade. Então está em outro estado. Está esperando. Então eu vou usar esse meio crescido para o sim ou não, que é o nulo para dizer isso. Ok, ninguém colocou nenhuma opção nisso, então ainda está pendente, tudo bem, e então o final seria rejeitado. Pedidos de alguém para ver solicitações rejeitadas são iguais. Então é literalmente apenas pedidos aprovados ao contrário. Então seria onde eles são falsos. Então, mais uma vez, se for aprovado, isso significa que é aprovado é igual a verdadeiro. Se é gasto, isso significa que ninguém colocou a aprovação afirmando que através de nossas quedas, então, se for rejeitado, isso significa que alguém colocou em um estado distante. Em seguida, a coisa final para este modelo de visão seria pedidos de licença. Então, na verdade, isso apareceu porque eu apenas pressionei o controle e o espaço. Então ele só preencheu a linha porque ele sabia que a única outra coisa que poderia ir lá que o estudante visual torna tão fácil ser eficiente. Então deixe solicitações, está aguardando na lista fora do tipo de licença solicitação VM ativada. Isso é para os pedidos de licença vindos do banco de dados, o que acabamos de fazer. Estou aumentando para aqui. Então, para pedidos de licença, eu só preciso passar na coleção DR real que tínhamos limpado mais cedo. Esse é o nosso modelo. Então a visão moderna tornou mais fácil para nós apenas injetar nossas próprias propriedades personalizadas, hum, que queremos Onda, quaisquer dados reais que quisermos, então nós vamos apenas devolvê-lo para a vista. Não, em exercícios anteriores, quando estamos prestes a gerar a visão que são muito exigentes ao escolher qual, hum, modelo de visualização usar o modelo, eles devem embaralhar o modelo para a exibição. Então, nesta situação, vou usar pedidos de licença. Em seguida, vamos modificá-lo com exceção do administrador deixar Solicitar VM ativada. Vamos passar por ele passo a passo selo, entender o que está acontecendo. Então eu estou clicando com o botão direito do mouse em exibição sobre eles, adicionando a exibição em então eu estou escolhendo o modelo de lista porque eu queria gerar o formulário de tabela. No entanto, eu não quero o trabalho ocupado tentando fazer a mesa. Então a mesa para mim é a parte mais difícil. Então, eu só vou fazer uma lista na lista vai ser fora do tipo licença solicitação VM satisfazendo licença solicitação VM on. Então eu tinha e não temos ou modelos. Então eu vou querer deixar a criação porque eu quero dar ao administrador sua capacidade de enviar uma solicitação de licença em nome. Muitas vezes funcionários, eu acho que seria uma característica legal. Então eu vou deixar o botão criar, mas eu vou modificar isso. T não tem um modelo fora do tipo I inumerável deixar Solicitar VM. Eu não quero uma coleção. Quero apenas uma instância fora da VM de solicitação de licença de criação. Então eu estou indo apenas para alterar esse antigo admin deixar Solicitar vista VM Desculpe, Onda, que é ou modelo. Então, se este é o nosso modelo, isso significa que temos acesso a tudo dentro dele, que significa não, o que significa não, nós temos acesso às solicitações de licença de coleta, que significa que nosso para cada loop precisa ser loop que deixam solicitações isso já está gerando chamado que sabe sobre solicitações de licença para que não precisamos fazer muitas modificações lá afinal. Certo. Outra coisa que eu vou querer incluir notar que está dizendo, solicitando funcionários que eu D. Eu não quero o i d fora dos funcionários. O que eu gostaria, no entanto, são empregados. Bem, Bem, parece que preciso modificar meu modelo porque não estou representando os empregados. Eu não estou fazendo representar onde eu tenho o tipo de folha. Então eu preciso fazer a representação do objeto dos funcionários. Então isso significa que eu preciso voltar para o meu modelo de visão, que é o pedido de licença para ser AM Onda. Eu faço. Oh, está pedindo empregador. Desculpe. Então a propriedade, a propriedade estava, hum, enganando-me. Por isso, está a pedir “Ok “, por isso já está lá. Como é o meu corpo. Então, está solicitando funcionários Dot Andi, eu quero o primeiro nome. A Andi. Na verdade, eu posso colocar o nome completo em tudo isso. Por isso está a pedir que te empregue. Então, nesta coluna, é exibir o pedido. Solicito aos funcionários o primeiro nome Onda. Sobrenome. Tudo bem. Mas eu me lembro em um exercício anterior, teríamos que ir para a classe de dados e fazer as inclusões. Então, você sabe, como eu disse, sua corte evolui e então você vê algo. E então, à medida que você ganha mais experiência, você vê que algo vai acontecer antes mesmo de acontecer. Porque eu apenas prevejo isso me dando a era nula que teríamos encontrado antes. Então eu só vou voltar para a minha classe repositório e encontrar a função que está recebendo todas as solicitações de licença. Então eu só vou dizer para incluir alguma distância da linha de freio ligada. Então eu vou ver ponto incluir, que é, em seguida, vai pedir-me dedo do pé em uma biblioteca para um darknet em núcleo de palavra diferente em . Então eu quero incluir funcionários que duct ou solicitando empregado como um objeto também quer incluir? Eles aprovaram. Krul foi aprovado por direito aprovado por foi outro objeto empregado que eu tinha em. Eu também quero incluir o tipo de licença. Tudo bem, então quando ele recupera esses dados, ele está certificando-se de incluir todos os detalhes associados a qualquer outro com qualquer chave estrangeira necessária que esteja lá. Então eu só vou pegar esses três arquivos incluem. Eu também vou colocar a função de encontrar. Vou mudar esta função de find para first ou default. Então fizemos tudo isso em uma atividade anterior, então não deveria ser estrangeiro. Se for, tudo bem. Você pode rever essa atividade anterior onde foi em profundidade para explicar o que é que estamos fazendo aqui. Mas mais uma vez, estamos apenas certificando-se de que quando recuperarmos nossos registros estavam tratando todos os detalhes do atendente fora do registro chave estrangeira, menor de todas as tabelas estão solicitando empregado que fez desta vez do empregado aprovado por também está vindo da tabela de funcionários. Então sabemos quem está solicitando que possamos obter seus detalhes. Quem está aprovando só por precaução. Não é apenas o usuário administrador, porque podemos ter outros usuários em uma função de administrador que não podem provar que querem saber quem aprovou as férias são projetadas em. Temos o tipo de licença. Tudo bem. Então, de volta ao nosso índice. Hum, e eso apenas passando e limpando. Então nós temos a data de início, o fim que temos o nome do tipo de folha, então eles vão saber qual o nome do tipo de licença, e mais uma vez que provavelmente teria nos dado que nenhuma exceção. Se não atendermos a esses ajustes, a data em que foi solicitado, a data em que foi ação no DSO. Eu não quero talvez esses detalhes listados na mesa. Então eu vou tomar toda a data em que foi Ação e ação significa que ou foi rejeitado ou aprovado em. Vou remover o aprovado por. Eu não preciso ver quem aprovou isso no Eu vou ficar um pouco extravagante com a minha exibição para a seção aprovada. Então eu só vou mudar todos os rótulos. Então você percebe que porque ele mudou a vista o modelo de exibição do nosso modelo que está usando a partir do tipo de dados de solicitações de licença para este admin leave request, que tem as solicitações de licença nele. Obviamente, essas propriedades terão alguma dificuldade sendo muito porque geralmente são mapas diretamente para o modelo. Então, se você conseguir essas linhas vermelhas, tudo bem. Você pode realmente simplesmente limpar o fosso ao escrever seu texto. Muito bem, para o primeiro batedor, quero que isto veja o nome dos empregados. Esse é o nome da pessoa que faz o pedido. Eu vou ver começar então, na verdade, pode apenas tirar um pouco do cabo em apenas colocar no texto estático. Então comece e vá embora. Digite o dia em que é solicitado. E eu deixo os relatórios que porque às vezes ele pode informar buraco no pedido de férias tem estado lá esperando para ser optado. Artigo o cabeçalho da opção de data no artigo o acumulado pelo hitter. Então temos 123456 colunas em Go em um perto disso. Consulte o status da aprovação. Off aprovado. Então isso vai dizer status de aprovação. Tudo bem, então temos 123456 Bom. E, em seguida, para torná-la uma tabela de dados, eu apenas coloquei em nossos dados i d tbl. Então eu vou fazer mais um ajuste nesta tela. Andi, essa é a ferramenta baseada no valor fora do status aprovado. Quer seja , aprovado, pendente ou rejeitado. aprovado, Quero imprimir, como um cartãozinho ou uma pílula que diga: “ Ok, Ok, é isso. O estado e a codificação de cores sugeririam o que é, certo? Então bootstrap tem o que chamamos de emblemas, e eu acho que usamos brotos em nossos modelos anteriores. Então eu vou apenas mostrar a vocês como o orçamento parece em como podemos usar O.R. O.R Se as declarações e o dedo do pé do Ari sabem qual distintivo imprimir foi. Então eu vou remover esta linha, e então eu vou ver aquele sinal. Se começar em sua declaração em, então eu vou ver se eu tentar pontos e, em seguida, dizer aprovado é igual a verdadeiro. Agora, a coisa com barras de ouro, você sempre não poderia ter que ver a verdade. Poderíamos apenas dizer se o item que aprovou, mas neste Mirani em nosso problema porque, um e em seguida, seu estúdio visual sentado que isso é ilegal porque ele não tem o estado. Então você tem que ser muito explícito quando está lidando com um touro notável. Eles têm que ver se eu virei uma puritana é definitivamente verdade. Então eu quero. E então este é o tribunal para um movimento. Então eu estou vendo movimento de classe girado sobre Budge Dash sucesso, que nos dá, ah movimento verde com a palavra aprovada que eu vou dizer mais se desculpe como se e então a nova condição é que eu virei que aprovado é igual em quedas de reboque. Ou talvez eu pudesse ter dito, se não, mas estou sendo muito explícito. Então eu vou ver em vez de fora aprovado, Eu fui para ver rejeitado. E então este vai ser perigoso porque eu queria ser um lote vermelho. Então eu vou dizer algo como outra coisa. Então, senão está gastando. Então, se não é verdade, não é farsa, então não deve ser sobre se não é do que seus gastos. Então eu vou definir isso como um aviso para dizer, Ei, você sabe, você sabe, dar alguma atenção a isso, então eu vou dizer aprovação pendente, tudo bem. Então, como está, eu não tenho nenhum e ele deixa pedidos no sistema. Quero dizer, nós ainda não configuramos a criação é nada ainda, então eu vou apenas inserir um dentro do meu manual de banco de dados é que eu vou apenas para a mesa. Certo. Clique em Exibir dados sobre isso. Vou inserir um usando os dados que tenho aqui. Você não tem que fazer isso. Eu só quero fazer isso para que eu possa dar uma representação visual de outra palavra que acabamos de fazer. Em seguida, no próximo vídeo, começaremos a construir barcos, coisas mais criativas. Tudo bem, então eu só coloquei uma regra. Só estou te mostrando. Como eu disse, você realmente não tem que fazer este passo. Mas eu acabei de colocar em um papel com um fora do ID de usuário que eu coloquei em algum começo fictício e, de fato, um dos tipos de folha. Andi, eu só sinto que também data ação não é possível. Então nós provavelmente queremos mudar isso porque, bem, bem, até que seja aprovado ou rejeitado, então não há nenhuma ação de data, certo? Então eu vou estar fazendo esse ajuste para o banco de dados também. Mas agora eu só quero parar um pouco de visual. O que acabamos de colocar nisso é apenas a primeira parte. Então, nós só gastamos todo esse tempo sentado no modelo de visão para definir o índice, a impressão para o discurso do índice. Nós não colocamos os brotos na parte onde estamos mostrando os números. Ainda não colocamos essa parte, então isso vai ser na segunda parte desta atividade. No entanto, como eu disse, eu quero o visual, então eu vou para as vistas. Encontra o meu Leo Haute. Certifique-se de que o meu link que diz deixar aplicações aponta para o lugar cartões. Entenda a cópia de um dos caminhos existentes em. Então isso vai ser para deixar pedidos. Tudo bem, então apenas faça o lucro do meu irmão e então foi avaliado o nosso trabalho. Tudo bem, então agora vamos gerenciar e clicar em Deixar aplicativos ativados. Lá vamos nós. Essa é a nossa lista de administradores para aplicativos de licença. No entanto, nome do funcionário começou Indeed, o tipo de folha sendo solicitado a data em que foi solicitado no status de aprovação, que está pendente. Então vamos apenas testar isso também, se eu voltar para a minha tabela de dados e eu vou apenas encontrar o dinheiro watchin tão certo não, é aprovado é não. Então, se eu mudar esta loja, eu posso apenas ver uma, que realmente é verdade no banco de dados. Vou voltar na atualização do dia. Então recarrega o mais tarde do banco de dados. E não, parecia verdade. Está me dando aprovação da mesma maneira. Se eu disse zero em vez disso, que é o mesmo EUA cai sobre. Ele fez que atualizar o banco de dados não vai ver arte rejeitada. Então isso é um bom, hum, sutilezas no reboque. Como buraco podemos contextualmente imprimir ou um pouco bizarros elementos no próximo X na próxima parte. Fora deste exercício, vamos empurrar um pouco para baixo esta vista, então este ganancioso está indo para cima aqui, para baixo na página. Mas no topo, nós vamos ter quatro cartas ou quatro seções que irão imprimir os números para cada um fora dos números de solicitação de licença que teríamos calculado e colocado em R V M. Então colar nosso próprio sobre isso é para ser continuado. 39. Módulo de solicitação para Empregados - Configurar Admin: Ei, pessoal. Então estamos de volta, e estamos prontos para mergulhar nesta lição. Estamos continuando nossa atividade ou configurando a exibição de administrador para que eles vejam todas as solicitações de licença atualmente no sistema. Então a próxima coisa que vou fazer é criar uma representação visual. O Zoff. Só algumas estatísticas para mostrar-lhes. Você sabe, eu lido em tantos pedidos de licença estão pendentes. Quantos estão no sistema em tudo ligado? Vamos apenas configurar isso à medida que avançarmos. Então, de volta ao Visual Studio, vamos usar cartões bootstraps. Então esta é a minha representação visual fora de escolha. Então, se você for no bootstrap, não se acalmar, documentação é obter bootstrap dot com, ir para componentes e procurar cartões. Então você vai ver que eles têm este cartão olhando, hum, representação tanto, que você vai pegar isso. Mas o que eu realmente quero é o número impresso em uma seção sobre o tipo ou um puxão legal impresso em outra seção para ele. Certo. Então eu estou apenas em minimizado. Olha, eu vou pegar emprestado este pontuado, certo? Então esse é o núcleo que gera descarte fora do curso, eu vou modificá-lo um pouco. Mas então aqui está a coisa. Quero quatro cartões impressos lado a lado indo da esquerda para a direita. Então eu vou usar betonilha bootstrap, colocar sistema antigo e é muito fácil. Então eu não vou para a documentação. Eu só estou andando por ele como eu faço isso. Então eu criei dar. Eu dou a ele o papel de classe. Tudo bem, então na verdade permitem que você tipo de criar tabelas usando apenas mergulhos. Então isso representa literalmente um papel da esquerda para a direita. Continuar. - Não. E, dentro desta regra, quero que ceda. Então eu vou dar a este div uma classe fora chamar Dash MD Dash três. Então eu teria feito menção já que a chamada MB no número que está realmente vendo. Quero uma coluna para tela de tamanho médio fora de tamanho três em três aqui apresenta três off. Ah, potencial 12. Então, da esquerda para a direita em qualquer tela de bootstrap estão em um bootstrap. Continue ter 12 espécies que você pode preencher. Então esta é a largura do espaço. Em outras palavras, depois de 12 este vivo mais ocupam três. Andi, eu quero quatro, então 34 ondas. Então, se eu tiver 43 espaçados dá representando colunas, então eu posso caber quatro dá nosso para bits de conteúdo lado a lado atravessando a tela. Certo. Então, um pouco de matemática. Nada muito complicado. Mas dentro de qualquer um fora dessas colunas. Quero as minhas cartas. Vou pegar este cabo de cartão que acabei de copiar em pedaços dentro da coluna. Agora posso começar a modificar este cartão. Então, primeiro, eles não querem essa imagem. Alguém para levar tudo o que emite seção, então no corpo eu vou apenas trazer de volta a documentação. Então este seria o título. Este será o texto em. Então eles nos dão livro de amostra. Então sua noção de que você pode colocar quase qualquer coisa dentro dele atacar o cartão. Então eu vou em vez disso fazer isso e cada um puxão que vai dedo do pé tem o número em então este vai ser o rótulo vendo o que esse número representa. Então, no estúdio visual, eu estou mudando isso de H cinco para cada um em, em vez disso, ofertas nas palavras título do carro. Então note que ainda vai estar dentro de uma gerontocracia no sinal modelo ponto na primeira contagem. Eu quero mostrar seria pedidos totais o número total de pedidos em, em seguida, para o texto e, em seguida, confundir um tempo para salvar. Lá vamos nós. Então, dentro do texto, eu vou mudar isso algum conteúdo, algo algo, algo em que eu vou dizer no modelo. Bem, não, isso é impreciso, na verdade. Deve estar fazendo a exibição para ou exibir o nome para então eu posso dizer nesta peça. Desculpe. Sinto muito em html exibindo o executor. Eu esta cópia, isso é que eu não quero dizer esse erro novamente. Então eu estou usando aquele ajudante de conversa HTML que iria imprimir o nome tag. Dado no modelo de vista, alguns teriam que voltar para o modelo de revisão e até o que. Mas este nome de avião para em seguida, dentro deste, eu vou apenas configurar um lambda Expressions. Então modelo, hein? Coloque o iro e então eu digo ponto modelo no elemento que eu quero. A disciplina em quatro é o total de pedidos. Tudo bem, então isso significa não. No modelo de exibição, temos que ter certeza de que temos o nome de exibição para o total de solicitações. E então eu posso apenas remover este botão como quase todos os fatores foram para mim. Este é um H cinco em vez disso, fora do imposto R P. Eu vou dizer h cinco em vez de p. Eu queria aquele pouco maior do que apenas ah p puxão. O que? Vamos ver como é. Então isso vai nos dar um cartão. Então vamos ver o que o velho adia que realmente é. Então, eu só vou pisar, atualizar a página, tudo bem? E é isso que vai usar. Então estamos vendo o número um sendo impresso e, em seguida, estamos vendo o total de solicitações. Então eu estou indo para mim em direção a restaurantes antes de olharmos para trás. Então o primeiro ajuste é que eu vou copiar esta coluna. Então esta div inteira da coluna mmd três. Eu vou copiá-lo, e eu vou colá-lo mais quatro vezes dentro do se esse é o papel. Ou mais três vezes. Então agora eu tenho quatro cartões, um para o total de pedidos. 14 pedidos aprovados. Então eu só vou mudar os moldes. Tudo bem. 14 atendendo. Ou talvez eu devesse ver pendente primeiro à direita. Então você vê que isso provou que você vê o pendente. Desculpe. Então você vê o aprovado em, então você vê, eles rejeitados. Então, quero dizer, você pode deixar sair inteiro. Você acha que seria melhor para você. Então, Rejeitado. Tudo bem, então temos quatro cartões antigos, as várias, as várias, hum, estatísticas para nossos pedidos de licença no sistema até agora. Andi, Então você também notaria que há muito pouco espaço entre os cartões na tabela de dados . Sargentos colocaram para ser nossas conversas para colocar alguma luz do dia entre eles. Ah. Agora, eu posso, hum, montar uma seção aqui onde eu estou ganhando uma impressão digital. um Cadaumé tão colocado, cada um dos quais é uma regra horizontal. Isso é apenas uma linha. Fui ver cada um deles. Hum, sair, solicitar registro. Tudo bem, então isso é um log off todos os pedidos de licença. Atualmente, você sabe passado prisões e não vai futuro, mas então eu estou apenas seccionando a pizza. Parece um pouco mais palatável. Eu também vou colocar alguns, hum, algumas hum, coisas para tornar o texto maior. Mais bonito. Então, como o número. Eu não quero que ele ainda seja deixado. Não quero que a mensagem seja para disparar para a esquerda. Então, para a classe dif, que é, hum, hum, corpo do cartão da classe Cardiff. Vou colocar outra aula de bootstrap como seu centro de traço de texto. Então eu acho que mesmo fazê-lo que entregar do que tudo dentro da div que é baseado em texto será apenas linha central. Se não, então teremos que colocá-lo nos elementos individuais. Mas vamos tentar por nada em centavos. Além disso, para cada um vai colocar em número visual, colocar em cores que tipo de visualizar Qual é o status? Então, como, por exemplo, pendente, eu vou fazer isso em botões laranja. Vou ver no número laranja. Desculpe. Então, avisos de traço. Então dar estão em paus. Aprovado solicita que um. Vou ver uma mensagem. Assim, este é aprovado. Então isto é um sucesso. Isso é verde. Texto ligado. Em seguida, para projetado, você pode ver traço de texto para perigo corrigido. Tudo bem, eu sei que poderíamos ter estilo. Esta história é provavelmente usado alertas em vez, fora usando um recurso de cartão, você poderia ter usado o recurso de alerta de Bootstrap Andi colocar o seu conteúdo em seu. Há tantas maneiras de fazer isso? Só estou a mostrar-te uma opção e a dizer-te que tens outras opções. Use sua criatividade para produzir o que você quer. Então, o próximo objetivo? - Não. Antes de atualizar resposta, seu trabalho é certificar-se de que temos nomes de exibição adequados para cada propriedade. Em nossos modelos de visão, eu vou voltar para este modelo de visão apenas segurando o controle e clicando em. Então eu vou configurar essas anotações. Então isso diria que este nome Onda jogo é igual a on. Então isto é torta. Número de pedidos fora, tudo bem. E, em seguida, a exibição vai exigir alguma inclusão da biblioteca de dados. Então o que eu vou fazer, passar e fazer isso fora da câmera? E você pode fazer uma pausa aqui e continuar por si mesmo. Já terminaram as minhas anotações? E então eu vou apenas voltar para o navegador e recarregar a página e ver como ela se parece com Art. E lá vamos nós. Então agora temos para como, uma seção de tabela agradável mostrando o número de pedidos pendentes, aprovados e rejeitados em mais uma vez. Estes são os nomes de exibição que eu teria configurado no modelo de exibição. Então você sabe que eles estão imprimindo ou é bom e limpo. Tudo na Central e tudo parece um pouco mais uniforme. As cores são uma espécie de guia, ou Sesto, você sabe, o estado em tudo em eu quero dizer, isso não é o melhor. Não é perfeito. Tem espaço para melhorias. Mas é claro, você tem sua própria enxurrada de seu próprio estilo. Tenho certeza que você está chegando com outro design que provavelmente faz este. Mas o conceito que você teria ganho com esta lição permitiria que você fosse mais criativo do que eu estou sendo agora. Claro, isso pode ser limpo um pouco mais, porque então você pode conhecer este link olhar um pouco mais atraente em você pode tomar toda a palavra em que. Então eu vou fazer essas coisas. Mas eu vou fazê-las fora da câmera. Eu quero que você pegue a prática fora fazendo isso sozinho, sabendo o que eu apenas e como sempre, se você tiver dificuldade sentir-se livre, você sabe, linha de drama, entre em contato comigo e eu estarei pronto para ajudá-lo 40. Módulo de pedidos de leave - criar um pedido da minha esquerda 1: Ei, pessoal, bem-vindos de volta ao vídeo. Vamos configurar o formulário de solicitação de licença para nossos funcionários. Então, em outras palavras, quando um funcionário chega ao sistema e eles clicam em solicitar licença, eles devem estar vendo no formulário de inscrição, onde eles serão capazes de especificar o tipo fora do que eles gostariam no período durante que eles queriam especificando a data de término e a data de início. Agora, se você fizer ajustes rápidos que eu teria feito fora da câmera, eu só estou mostrando a você para que você possa replicá-los. Então, em cada intervalo, você pode pausar o vídeo e replicá-los. Mas eu não quero passar muito tempo no vídeo fazendo isso porque eles são coisas básicas . Mas, para começar, configurei o link de solicitação de licença para apontar para o controle off leave. Solicitação na ação, chamada Cria, estará configurando dentro do controlador de solicitação de licença a ação para criar, que foi o que renderizará o formulário para o aplicativo para os funcionários. Então essa é uma mudança que eu fiz para que você possa pausar o vídeo, ir em frente e replicar isso, mas seguir em frente. Eu também encontro o nosso modelo de vista de solicitação de licença. Então, para o modelo de exibição de solicitação de licença que estava lá antes de eu definir algumas anotações de dados são configuradas. Alguns nomes de exibição em algumas validações são sobre as datas. Mas eu também criei um modelo de exibição especificamente para ou criar formulário este criar licença. modelo de exibição de solicitação terá validações para as validações de data inicial para a data final. Uma lista fora do item de lista de seleção chamado tipos de folha. Andi valor individual para um tipo de folhas idéias. Então as validações para as datas incluiriam bem, um, nós temos a exibição. Então é começar, hum, nós duas palavras distintas sobre, então nós temos como necessário. E, em seguida, estamos especificando que queremos o tipo de dados desatualizado. Então isso significa que no formulário torna, hum, a entrada de hoje que eu vou ser data por padrão, certo? Só porque estamos especificando que é o tipo de dados que queremos. Então isso é, portanto, tanto isso começa e, de fato, em seguida, o público. Desculpe, a lista. O inumerável item de lista selecionado chamado tipos de folha manterá todos os tipos de licença provenientes do nosso banco de dados, e vamos usá-lo para preencher ou lista suspensa. Então o contexto é que qualquer tipo de licença está no sistema é armazenado no banco de dados, e se ele é armazenado no banco de dados, então precisamos de uma maneira de exibi-los dinamicamente para o usuário, porque nós não queremos exibir para um lá cinco ou exibir um quando há mais de um direito? Então, se eles têm cinco anos, devemos exibir fogo se eles ficarem com os desanimadores. Então, quando a pessoa ordena o formulário para criar um pedido de licença, eu deixo pedidos. A lista suspensa deve sempre representar o que está no banco de dados. Andi, A lista suspensa também é chamada de lista de seleção literalmente. A conversa para uma lista suspensa é selecionar em DSO para cada item que aparece nessa lista, chamamos de selecionar este item, modo que é onde temos que lá em, então O ID é realmente o que você seleciona. Então você seleciona você ler o texto e você clica no texto que você pode ler, mas na parte de trás. E o que realmente está fazendo é mapeá-lo de volta para o I D correspondente na tabela que está vindo de diante. Isso é o que realmente está sendo armazenado quando criamos uma solicitação de licença. Tudo bem. Eu não incluí todos os outros campos que estão no modelo de exibição como, um, o pedido de uma ação de data porque vamos estar sentados aqueles na parte de trás não será exigir que o usuário defina. Esses são Então eu criei este modelo de vista apenas especificamente para o formulário de solicitação de licença sob aviso prévio. Ele só tem os campos que são relevantes para o funcionário que estará fazendo aplicação. Então, mais uma vez, você pode fazer uma pausa aqui. Copie isso. Conseguiu chegar até a velocidade com? Eu vou continuar e por não, isso deve ser muito fácil de entender e replicar. Então, de volta ao nosso controle, vamos começar a sentar ou criar ação. Não, é fácil o suficiente apenas clicar com o botão direito do mouse na exibição e gerar a exibição com um modelo de criação para o criativo que você modelar e ele irá gerar visão. No entanto, nós especificamos que precisamos de uma lista suspensa seletivamente estrela que terá itens roubados do banco de dados, que significa que precisamos criar essa visão com alguma quantidade de dados fora e são termo técnico para saber por fazer isso seria carregá-lo com nosso dedo do pé modelo, obter um modelo carregado com dados e que criar a visão com nosso modelo em mente. Então os dados que eu realmente preciso seriam os tipos de folhas alguém para salvar tipos de licença ira é igual dedo do pé na pontuação Relatório tipo de licença tão fora do curso, se eu estou recebendo tipos de licença e qualquer tipo de licença pessoas Então, se você ainda não fez isso, então você pode pausar aqui em fazer isso também. Mas precisamos fazer representação para o nosso repositório tipo de licença. Alguns incluindo a dependência que eu sou, embora a dependência é que teria incluído já alguns incluindo sair repositório tipo . Vou colocá-lo no controlador e então estou inicializando para que você possa pausar aqui . Certifique-se de que o seu casaco se pareça com este. Tudo bem. Em você pode desafiar-se em pausa um vídeo e tentar fazê-lo para si mesmo sem olhar para o meu tribunal. E então você apenas compara depois. Esta medida sob a pista. Essa é uma boa maneira de o ET melhorar. Mas pressionando em frente. Salvamos a ira. Deixar tipos deixar o tipo de rifle ponto sobre. Eu quero todos os tipos fora de folha atualmente no banco de dados. Tudo bem, em, então podemos ver var, e eu vou chamar esta licença tipo I termos deixar itens tipo, então deixe tipo cinco vezes. Não vai representar a lista de seleção versão correspondente fora dos valores provenientes do banco de dados. Então, vou explicar isso devagar. Nós já sabemos que isso está vindo do banco de dados e se estamos sobre a variável, vemos que estamos recebendo uma coleção fora do tipo de licença de tempo. No entanto, nosso modelo requer em inúmeros, que é apenas mais uma coleção. Então você vê que um monte de coleções ou tipos de coleção em C olho afiado, coleção mais nova bicicleta wearable, Eu pelo menos um século, tais são. Mas o ponto é que ele requer algum tipo de coleção fora, selecione item de lista. Mas sabemos como programadores que a seleção deste item deve representar o tipo de folha. Então nós precisamos fazer alguma forma de conversão de ah lista fora de licença tipo toe nossa lista off select item lista assim e agradável maneira rápida de fazer isso usando link ou, no final, para diferentes extensões de trabalho que funcionam em coleções, A propósito, podemos dizer iguais. Então eu recebo minha coleção, que é deixar tipos que eu quero dizer que Selecione Abrir minhas chaves, iniciar um Lambda Expressions. Estou usando Q como minha variável Lundell. E então eu posso ver que eu quero selecionar cada item fora desta coleção no reboque. Um novo tipo de dados de item de lista de seleção. Tudo bem, vamos. Você pode precisar incluir uma biblioteca ali mesmo. Segunda pausa. Certifique-se de incluir uma biblioteca antes de pressionar em frente. Mas o que eu estou dizendo aqui é que eu quero interrogar essa lista que eu classifico você do banco de dados para cada item lá dentro. Eu quero selecionar os dados em um novo selecionar este item ou representar os dados e você selecionar este item em. Então eu vou ir em frente e atribuir os valores para as propriedades fora do item de lista de seleção . Então, um item de lista selecionado em Eu apenas quebrar na linha para que possamos ver exatamente o que está acontecendo. O espaço de controle está ligado então? Ali. Vejo que tem um texto que estou a seguir. Esses são os dois. Mais importante, uma vez que o texto é o que o uso vai ver na lista suspensa sobre o valor é o que o sistema estará rastreando em certificar-se de armazenar são tão texto que é que você está indo para ver na lista suspensa seria bonito ponto em Lembre-se Lambda Variably desculpa O Que agora nos dá acesso aos diferentes dados que está vindo dos objetos são representados valores no banco de dados. Então o texto que eu quero exibido é o nome porque eu quero quando eu sair do trabalho apenas algo o nome fora do tipo folha para uma seleção. No entanto, o valor que estamos rastreando vai ser bonito ponto i d que é o I desvalorizar fora desse nome correspondente. Sem aviso prévio. Eu estou recebendo uma linha vermelha e isso é porque Valionis urso string i d é um inteiro para que eu possa salvar encaixado para string, que é uma função que pode converter rapidamente. Sabe, Sabe, é rápido, só muda o dedo do pé indigente. Ele trabalha nove em dez vezes. Às vezes você tem que ficar mais chique, mas isso funciona 9 em 10 vezes. Então não, eu tenho uma lista fora e se eu apenas sobre a minha nova variável, eu vejo que é um inumerável fora do tipo. Selecione estes itens neste parece exatamente como o que eu declarei dentro do meu modelo de visão. Então, não, eu preciso criar o modelo de exibição são cria um objeto fora dos segundos do modelo de exibição. Um modelo de fogo é igual a uma nova instância off criar licença solicita o m. Então eu vou declarar isso ou inicializado este objeto para ter os valores para tipos de licença sendo igual toe os itens de tipo folha que eu acabei de criar. Então eu uso meus ponto-e-vírgula e oh, meu modelo é criado. É fora do tipo licença solicitação VM em Ele tem os dados que ele precisa de pelo menos uma carga do formulário e assim que eu possa passá-lo para o formulário depois. Então não, que eu fiz tudo fora que eu posso ir em frente e criar meu formulário. Então vista Iraque eu tenho você em, em seguida, eu estou adicionando eu criar, Então ele é elege o modelo criar. Estou usando o pedido de licença cria o m ligado. Vou remover o objeto de classe de dados. Então a classe de dados de classe de contexto de dados que eu teria usado para algumas vezes e eu teria removido para outras vezes. A coisa é, ele funciona melhor quando os valores são Os dados como sendo passado são usados para gerar. O modelo tem alguma relação de mapeamento com a tabela de dados. Então esta solicitação de licença de criação não tem realmente esse mapeamento. Eu não chamei para o banco de dados e, em seguida, encontrar algo para marcar diretamente para ele no DSO Eu iria me poupar algum ar sobre não tem nenhuma chave se eu apenas removê-lo. Então, se você não conseguir removê-lo e você clicar em adicionar, você começa um não tem nenhum ar chave ou algo fora que começar você pode apenas voltar em você pode apenas removê-lo e então você pode ir em frente e pressionar anúncio, que então nos dá o nosso formulário. Então nós temos um formulário, um sob mim, nós podemos ir em frente e remover os olhos e você sabe, para comer este formulário um pouco, mas eu vou me concentrar no que está sendo um renderizado. Então temos ah, caixa de texto para a nossa data de início ou alguma entrada para a nossa data de início ou alguma entrada para realmente ele em . Houve alguma entrada para o tipo de licença I D. - Não. Lembre-se que o contextualmente baseado no campo que está sendo solicitado para o tipo off. O controle de entrada será diferente neste tipo. Pode ser determinado pelo tipo de dados que especificamos. Então, em outras palavras, quando este formulário é criado em, temos uma entrada para iniciado. O tipo de entrada quando é renderizado, vai estar desativado data do tipo. Tudo bem, então veremos o comportamento fora disso em alguns minutos. Mas eu só vou fazer algumas mudanças aqui onde eu vou trapacear. Pegue este grupo de formulário que tem, hum, longe do tipo de folha I d. Eu vou pegá-lo, e eu vou colocá-lo no topo. Isso é então esta é a primeira seção fora do formulário que eu quero renderizado. os Querooscontroles do calendário. Desculpe. Quero que as datas fiquem lado a lado. Tudo bem. Alguém para criar um Teoh vivo, dar a esse Dave o papel de classe, e então eu quero dar para outros caras. Andi cada ao vivo vai ter a classe chamada MD chamado traço. Andy e eu queríamos ter seis anos. Quero cada coluna para Philip metade do espaço fora do rolo, certo? Lembre-se disso. Temos até 12, dizendo seis. Quer dizer que quero seis fora do 12. E então eu quero ocupar seis depois das 12. Então eu só não queria duplicar. E então eu vou tomar começou e colocar no primeiro 1 em, então de fato ele e colocar no 2º 1 Então a expectativa é que quando este formulário se torna, Eu quero ter esta entrada em. Então eu vou ter lado a lado duas caixas de texto esperando entrada tudo antes do nosso botão criar . Tudo bem, então. Isso se chama MD 4. Então você percebe que isso está tomando quatro espaços fora, 12 em, e depois fora das quatro espécies do 12. Quero que este ocupe metade e este ocupe metade. Então, eu só vou expandir isso para talvez, uh, uh, isso foi... Isso foi quatro. Eu vou colocar isso para ele. Então, a forma ocupa mais espaço. Tudo bem, então, antes mesmo de olharmos para o trabalho que estamos fazendo ou fizemos até agora, eu quero fazer um ajuste aqui. Então esta entrada é apenas na entrada para o tipo de folha I D. Que não é realmente o que queremos. O que queremos é uma lista de seleção são lista suspensa Agora existem várias maneiras de obter uma lista suspensa . Hum, não de caminho escolhido fora de pouca resistência no DSO. Vamos fazer algumas modificações aqui para obter nossa lista de seleção. Olha, um, para aparecer em vez disso, fora desta entrada para que você possa pausar aqui, dar uma olhada no que é renderizado em. Então você pode voltar e então vamos mudar o que é renderizado por isso, que eu acho que é apenas uma caixa de texto com alguma entrada para um número. Vou mudar isso para parecer uma lista suspensa. Então o primeiro passo é retirado tudo isso em Fortitude Court. Então temos os rótulos. - Claro. Arte e, claro, correndo para fora qualquer exibição que Ning foi colocado. Então, para o tipo de folha I d. Eu disse que eu quero imprimir o tipo de licença rótulo. Tudo bem, tudo bem. Mas então, em vez disso , fora dessa entrada, o que eu vou usar é um ajudante html. Então eu tenho esse sinal HTML e eu digo pontos lista de pedra cair quatro e, em seguida, abrir brisa sobre, lista suspensa para e a maioria dos outros. Sabe de uma coisa, Force. Eles têm livros didáticos para a sua caixa de rádio. Pois você tem todos esses, hum. Ajudantes que lhe dão controle um formulário controle quatro, certo. Todos eles tomam expressão de alumna dentro de anos. Como tenho feito desde o primeiro dia,uso minha deixa. Como tenho feito desde o primeiro dia, Foi o meu London verbal sobre e eu digo q ponto em então eu especificar qual elemento do modelo mais deve marcar de volta para esta lista suspensa. Então, o mapeamento elementar é para o IV tipo i d. Agora que eu estou mapeando o elemento, eu preciso dizer-lhe onde ele deve trazer a lista fora de valores de então o que quer que ele deve ser exibido para o usuário. Tudo fora, você sabe, as coisas que nós apenas carregamos dinamicamente e comemos um apontado na direção certa, algum lugar para dizer. Nova lista de seleção. Então vimos que temos selecionar item da lista, mas também temos um controle chamado lista de seleção ou um irmão tipo de dados, nosso tipo de classe chamado Select lis. E, em seguida, esta lista selectiva está a tirar uma lista fora. Selecionar itens de lista são uma lista fora de tentativas. Então a lista fora I termos que eu estou passando para o listo seleto preencher. A lista está vindo do meu modelo de direito e modelo, e eu digo pontos. Em seguida, é a lista fora tipos de licença que eu literalmente apenas carregado para cima na minha ação antes passar para a vista. Então deixe os tipos lá dentro. Quanto mais modelo deve ter a lista fora. Selecionar itens de lista em na lista de seleção itens tem duas propriedades texto sobre valores. Então precisamos dizer ou selecionar isso. Qual dessas duas propriedades deve ser o texto e qual deve ser o valor. E eu acho que é um corte claro neste ponto que leva isso para texto e valores para valor, certo? Então faz com que ele tipo fora uniforme e você, Andi limpa quando usamos os itens da lista selecionados, então eu vou dizer valor vírgula para valor. Então, o rastreamento de valor deve levar em conversa sobre a propriedade de dados de valor de qualquer pessoa fora desses objetos nas listas que eu estou usando, fazendo referência toe na propriedade text deve estar vindo da propriedade takes de qualquer um off esses valores que eu estou aludindo dedo do pé. - Não. Depois de fazer tudo isso, vou dizer vírgula novamente. Então, mas certifique-se de que estou fechando meu aparelho. Acho que estou faltando a cinta aqui. Então, isso é. Oh, eu penso em uma cinta extra aqui. Muito bem, senhor, senhor, quanto a isso. Então, temos novo selecionar este item em, então estamos passando. Teremos chave aberta que temos a vírgula coleção a propriedade value na propriedade text em. Depois de fecharmos essa chave, temos vírgula que vou configurar uma mensagem padrão. Então, minha mensagem padrão é selecionar tipo de licença. Então, quando os primeiros unders, essa é a primeira coisa que vai estar na lista drop-down dizendo-lhes para selecionar a partir daqui, então eu quero ver um novo em abrir ah, seção aqui onde eu vou defender alguns Atributos HTML. Então o atributo que eu quero para este trabalho não listar seria que ele tem a classe lembrar classes e atributos que este é um rebocador html. Este é um atributos HTML nesse rebocador. Então eu estou dizendo que eu quero na classe San, que é quando representar este mesmo atributos e eu digo que é igual a Andi. Eu queria ter a mesma classe que todos os outros controles de formulário tem, que é formado controle Dash, que é nossa classe bootstrap. Para ter certeza de que ele se parece com um formulário bootstrap, um, elementos em seguida para o meu botão, entenda para mim neste bt e dash block. Tudo bem, então BT e Dash Block, talvez para a ação. Eu não preciso de uma lista apoiada, então eu vou sentar. Vou deixar isso, portanto. - Não. À medida que trabalhamos para fora o nosso um pouco mais, aplicativo um pouco mais,porque isso de volta à lista tentaria reverter para a função de índice dentro de todo o nosso aplicativo, que é realmente reservado para administradores de qualquer maneira. Então, quando estávamos nos ajoelhando, vamos mostrar aos funcionários sua própria página de índice, o que significa que ele vai e vê tudo o que ela está deixando nossas inscrições e então pode fazer um pedido se ele quiser. Quando trabalharmos nessa visão , podemos mudar essa pista. Então, até então, vamos deixá-lo como ele está ligado, entender, para salvar todas as alterações ou mudança de controle e s ligado, Então eu vou apenas carregar o meu link do navegador em. Então vamos ver como isso se parece. Tudo bem, então agora que carregamos, a primeira coisa que vou fazer é pedir licença. E então ele está nos dizendo que precisamos fazer login porque nós dissemos que tudo em todo este controlador precisa para o autorizado para que eles não me deixem passar algum dedo distante. Use minha senha padrão para este usuário, que é estar fora do W ou da organização um. Tudo bem. E estão me dizendo que não posso ser a senha. Eu só faço isso pode cortar no tempo, qualquer buraco. É assim que o formulário se parece, certo? Então temos o nosso tipo de licença ligado. Temos aquela lista suspensa, que é exatamente o que queríamos. Mas deixe-me inspecionar os elementos. Posso mostrar o que quis dizer com conversa de texto versus valor. Então temos uma lista de seleção, certo? Então, sobre acorde que dissemos cada html que lista suspensa quatro. Ele gerou um rebocador seleto. Ele tem a validação embutida em todas essas coisas que estão sendo geradas quando eu caí nesta lista. Observe que você tem a opção. Assim, para cada valor proveniente do banco de dados gerado a opção em, em seguida, as opções têm algum texto que é visível em algum valor. Cada texto como uma opção válida tem um valor no texto. Então isso é tudo vendo quando especificamos que queríamos isso para texto sobre este valor quatro. Isso é o que ele estava fazendo, realmente e verdadeiramente, certo? Então, se você tem experiência com selecionar isso do que decisão, eu não faria antes em que você teria aprendido sempre segurar para gerar a lista suspensa dinamicamente com base em dados de outros lugares em seu aplicativo, que é um útil em muito tempo. Hum, salvar Neto tem. Tudo bem, então a próxima coisa que eu quero apontar para o fato de que nós temos as datas lado a lado , certo, então nós estabelecemos a regra sobre nós dissemos a eles que queriam qualquer caixa de texto é Hum, controle de entradas para as datas serem, você sabe, para ocupar metade de qualquer espécie que o recipiente é. Então os contêineres legais eles vêm oito fora possíveis 12 espaços em, então dentro fora que oito espaços estavam ocupando seis e seis. Certo? Então é por isso que eu posso misturar e muito aqueles chamados MD para ficar agradável, limpo, verde olhando. Leal são muito velhos, você quiser. - Não. Uma coisa que eu quero salientar é o fato de que isso já tem o valor de batida meio implícito em. Então, quando eu clico nele, é só me perguntar. Está me levando a marcar a data. Eu tenho um controle de calendário, que é bom porque a última coisa que você quer é alguém vindo e realmente apenas digitando Freehand em, colocando em tolice para o pouco. O lado não, no entanto, dedo do pé um baixo ER do irmão para determinar o seu controle em Eu só vou saltar sobre o dedo do Internet Explorer é que o controle de data vai olhar diferente para cada irmão. Então esta é a versão do Internet Explorer fora desse controle de data, enquanto o Chrome está dando ao calendário olhar controle agora, você não quer esse tipo de inconsistência. Você quer ter certeza de que todos os seus clientes em todos os lugares estão vendo uma coisa. Então este seria um bom ponto, não para incluir, como um seletor de data padrão que você sabe que ele renderizará o controle de costura em todos os navegadores. Então esta é a minha escolha, então este é o Jake. Preocupa-te i dot com barra data Picker em. Este é o meu padrão ir para um. Quando eu engano na caixa de texto, ele só traz esse controle, e é assim que vai parecer consistentemente, certo? Então eu vou fazer esse controle de calendário aparecer sempre que alguém clica na caixa de texto. Agora vamos ter que fazer alguns ajustes, e mais uma vez, e mais uma vez, sem palavras explicam por que, Andi, espero que entenda por que temos tantos fortes Buchan às vezes quando queremos nosso país certas coisas. Mas com a data eu vou ter que não deixar que ele torne a batida um tipo za para as importações . Certo, clique na caixa de texto. Você não tem que me seguir com esse doente. E veja o que estou fazendo. Certo. Clique nos livros didáticos que vão inspecionar na caixa de texto datas de início, observe que o próprio elemento é É renderizado com o tipo desativado. Coma, certo. Então eu disse que quando especificamos o tipo de dados no modelo ele influencia o tipo de dados que é o tipo de entrada que é usado na renderização. Então, se eu quiser usar este coletor de dias. O tipo de entrada tem que ser textos. Então, se eu olhar para a fonte de visão, eu vou ver aqui. Esse tipo de importação é igual a texto, não a data. Tudo bem, então vamos fazer alguns ajustes e, em seguida, obter nossa profundidade ocorre dentro. O primeiro ajuste é garantir que eu tenha os arquivos de script necessários para isso. Collender. O fora dos arquivos seria os arquivos CSS alguém para fazer apenas para copiar este CSS para nós é um monte de outras coisas. Eles não são absolutamente necessários. Eles estão mesmo sentados para a demo. Então esta é a nossa parte de saber o que você precisa e o que você não precisa. Então o que precisamos seria o arquivo CSS base aqui que vai realmente dar ao nosso calendário que olhar e sentir que vimos alguém para copiar esse arquivo de censo, voltar para o nosso projeto em ir para sobreposição ou arquivo em. Em seguida, adicione esse arquivo CSS aqui. Certo, então temos um novo arquivo CSS, uma nova orgia de link Cdn. Corey, porquê a seguir? Queremos ter certeza de que temos nossos arquivos de script no para arquivos de script que são feitas referência para ouvir o nosso pouco Precisamos notar que esta é uma versão fora Jake preocupação. Já temos o Jake preocupado. Mas a coisa é, às vezes esses controles exigem funções de uma versão específica do J. Query em que temos na versão mais recente. Claro, vou levar esta vou levar esta versão do Jake Worry. Estou pegando o arquivo de script que está associado com Jake ou seus olhos. Vou levar os dois. E então, na minha alta precoce, eu vou pisar, colocá-los debaixo do outro Jake pior depois do Jake ou está carregado em tudo o que depende das coisas daquela versão do Jake. preocupação está carregada. Então eu vou carregar meu nerd onde, de fato, meu arquivo de script aqui também tem dependência é para essa pessoa. Claro que vou dar o pé. Coloque-o ainda mais abaixo disso. Certo, então não, esses arquivos de script são referenciados. Hum, lá para o JIC ou você eu em seguida, a próxima coisa que eles dizem que nós precisamos seria toe inicializar a função que causou os controles deepika. Eu só vou tirar este bloco do script aqui. Copie, então. Dentro da nossa criação. Vou resolver uma nova seção quatro roteiros. Então remova os scripts da seção Renderizar e essa seção apareceria embaixo de todas as inclusões de script por padrão, certo? Então eu poderia sempre ir em frente e dizer roteiro, abrir um roteiro e começar a fazer algo lá. Mas quando as páginas renderizadas, este script vai ficar renderizado de dentro para fora. Renderizar o corpo Andi. Vai disparar antes que os scripts necessários sejam incluídos. Então eu vou me certificar de que eu renderizar a seção de referência do Exército para a seção que está aqui antes de eu colocar os scripts, eu apenas digo na seção de ciência em, então o nome da seção é scripts abrir e fechar chaves em, em seguida, dentro destas chaves. Agora eu posso colocar meu cabo JavaScript personalizado, que, quando as páginas renderizadas, sim, ele renderiza um corpo, e ele renderiza tudo aqui. Mas, em seguida, quando ele chega à seção, você pode deixar o louro até que ele tenha terminado de renderizar tudo o resto em. Em seguida, ele renderiza o script lá, modo que essa seção, hum, frio funciona. Então não, vou fazer alguns ajustes. Um eu vou mudar o tipo de dados de data hora, longe de datas. Estou removendo a validação do DEET. Então, não, ele só vai ver Data de início como uma caixa de texto normal porque eu não estou impondo isso. Deve ser no momento. Sim, esse tipo de dados é a hora. Mas sem a notação de dados, o formulário será renderizado por padrão. Apenas uma caixa de texto da entrada será o tipo de entrada será igual ao texto. A próxima coisa que eu quero fazer é ter certeza de que ele aponta para os elementos certos ou eu sei que está procurando um elemento com o selecionador de data ID. E isso é baseado na demo. No entanto, temos dois elementos aqui começou e, de fato, é que precisam dos serviços fora dos catadores profundos . Então, em vez disso, vou dar aos dois o alto-falante profundo da classe. Então eu estou apenas adicionando a seção de classe fora. Ou inserir o seletor de data da classe em vez disso, fazer referência aos elementos da hashtag significa um i d no elemento com o I D desligado. O que vier depois de Ashdown, quero elementos sem aula. O que vier depois da paragem completa. Então, é um especificar idéias. Tag hash para especificar a classe. Use a parada completa. Certo? Algo selecionador de datas de parada completa. Procure por qualquer coisa que tenha o seletor de data de classe nele, que acabamos de adicionar o dedo Estes dois controles em, em seguida, inicializar o seletor de data são o controle de calendário. Então eu vou apenas controlar shift s Faça essas alterações salvar essas alterações. Volte às minhas candidaturas. Eu posso fechar o Jake onde você está, então eu fui atualizar e vamos ver o que acontece tão sobre a atualização Nall Nós podemos ver que a data, a data de aplicação, este tipo de desaparecido. Não, parece que na época ainda nos deu os elementos de controle que vimos mais cedo, então ele iria àquela mais cedo, lista aqui embaixo e nós pegamos o calendário. Mas se clicarmos no corpo, vamos ver orgia onde? Então isso eles ainda estão tipo fora de conflito e isso é porque o tipo de dados, que é tempo morto, ainda está substituindo o tipo. E não está renderizando o texto. Ainda está renderizando alguns tipos de datas. Então nossas tocas ou está tentando sua melhor instalação do dedo do pé. É esse tipo. Tudo bem, então se eu mudar isso manualmente para texto. Eles notaram que não haveria nada. Mas, em seguida, quando eu clicar J Pedreiras calendário é o único calendário que está sendo processado lá. Tudo bem, então podemos investigar isso. Nós provavelmente podemos fazer algo como podemos mudar no modelo de visão o tipo de dados de dia para apenas string. Mas fora do curso, você tem que ter certeza de que, quando estamos fazendo nossas operações e nossas coisas esfregões, estamos convertendo qualquer valor para data hora. Então isso é tão às vezes perder muito pode ocorrer. Então, para não, eu quero deixar como a hora. Andi Sim, temos dois controles de calendário concorrentes, mas vou deixar isso em paz para não. Pelo menos entendemos o que está acontecendo e, mais tarde, podemos colocar em um tribunal mais dinâmico para lidar com a situação. Mas para não, temos nosso controle padrão de calendário. Se eu olhar para ele no Internet Explorer, então ainda temos aquela coisa de conflito porque o Internet Explorer está chamando o Controle ainda está tentando encontrar Jake ou assim mais tarde. Podemos mudar isso, mas pelo menos para não, sabemos o que está causando o problema, e podemos resolvê-lo. Outra coisa que eu quero fazer é ter certeza de que meu formato de data é por quê, por quê? Por quê? Por que traço? Mm. Dash DD significa que deve ser ano, mês depois, então. Dia. Eu não quero que seja, um, um, você sabe, para causar qualquer confusão como ela é. Então eu estou indo para dentro da chamada de função seletor de data abrir até chaves. Então eu acho que eles têm uma propriedade no selecionador de data para data. Ele disse, como fez para muito cólon. Na data, quatro meses terão os valores. Por que você traço? Mm. Traço d d? Não, apenas uma pequena consulta bi pode encontrá-lo na documentação. Se você voltar para o Jake onde você está selecionador de datas e clicar em quatro meses, eles irão mostrar-lhe os diferentes formatos. Então os dois sábios me darão as datas de quatro dígitos. O ano de quatro dígitos. Desculpe. Tudo bem. E depois os meses e depois o dia. Então eu só queria olhar uniformes. Então é isso para os elementos visuais. Em seguida, eu quero acionar o post action. O que acontece depois que o funcionário clica criar nossa solicitação alguém para adolescentes texto aqui de cria para solicitar licença. Não, Nossa licença missão vai exigir alguma inteligência e fora do curso uma vez que eles clicam que o fluxo natural é para ir para a ação pós ou criar. Então, no próximo vídeo, vamos terminar a ação de postagem para a criação em. Vamos colocar alguma inteligência que ainda não consideramos. Algumas regras de negócios, quero dizer, você pode ter uma idéia diferente das regras de negócios do que eu tenho no diff, você sabe, para implementá-las. Então estamos bem porque então você entende o conceito. No entanto, quando voltarmos para a próxima lição, vamos terminar isso, e ele estará enviando cada solicitação de licença para o banco de dados. 41. Módulo de pedidos de leave - criar um pedido da minha licença 2: Ei, pessoal, falando de onde paramos no vídeo anterior e só quero começar a definir nosso post criar ação para pedidos de licença e eu vou mergulhar na direita. Então nós já estamos no controle em Eu sou telefonado para a ação. Então, a primeira modificação a fazer são os dados que sabemos que estão voltando para o boi na ação, que é fora do tipo de dados cria licença, solicitação VM. Vou chamar-lhe Alma Modelo. Vamos fazer algumas coisas aqui só para garantir que nosso pedido de licença seja válido. A primeira operação é verificar se o estado do modelo é válido. Então eu vou apenas remover esse comentário e então eu vou dizer, se não modelo estado desculpe, modelo estado que é valorizado. Então, se não for válido, então sabemos que queremos retornar a vista. , Aqui está um pequeno truque que talvez você tenha visto,talvez ele não tenha visto, mas quando devolvemos a vista, precisamos devolvê-la com alguns dados. Acho que tivemos um cenário como esse antes em que retornamos a exibição, mas não carregamos com os dados necessários, e então nos deu alguma exceção. Neste caso, ele irá retornar a vista mesmo se passamos sobre Modelo não está rastreando a lista suspensa e itens, então isso significa que se eu devolvê-lo com modelo vai devolvê-lo. Desculpe vai devolvê-lo com algum MT. Data, certo? Então ele vai voltar com um vazio caiu sobre isso, o que é absolutamente necessário. Então eu tenho que ter certeza de que eu carregar fora modelo mais uma vez. Por isso, vou copiar isto. Marcou Onda. Vou carregar o dedo do pé. É assim que chegarmos ao poste. Eu só vou executar essa consulta porque nós temos vários lugares onde ele vai devolvê-lo . Então eu não quero Oh, colocar essa preocupação dentro da declaração se e, em seguida, ter que colocá-lo novamente no gato entender uma vez em. Então eu vou atribuir pontos modelo. Tipo de deixar. Então já tem modelo. Alguns apenas colocando repovoando tipos de folha variável com os itens de tipo de folha que acabamos de receber. Então, se ele tem que retornar em qualquer ponto dentro da tentativa, na verdade, eu vou colocar isso dentro da pista porque esse é o ponto da pista em você operação Tran em. Se você tem uma exceção, ou seja, se há uma seta de banco de dados, então ele pega. Está certo, então tentamos, então obtemos todos os valores que sabemos que precisamos para a lista. Então dizemos, se o valor se o estado do modelo não é válido e apenas retornou o modelo e ele já tem os dados que ele precisa que está claramente faltando quando ele vem, o mau começo. Então essa é a primeira coisa. Então, estamos verificando. Se o estado moderno é válido, então retornamos a visão. Se não for depois disso, então eu quero começar a obter alguns dados. Então, no começo eu quero os funcionários sobre o empregado que está atualmente fazendo lobby. Então eu quero empregado que está fazendo solicitação de licença em um pessoal estava fazendo a solicitação de licença tem que ser o usuário que está logado, então eu não preciso rastrear isso no formulário. Eu não preciso que você me diga quem você é, porque o sistema já teria uma idéia de quem você é baseado em seu log na única maneira nossa própria que é, se eu tiver seu pastor do que suas credenciais e eu tentar e amo deixar pedidos como você . A essa altura é provavelmente a sua negligência ou a minha tentativa de fraudar uma situação, não para obter detalhes sobre a pessoa assinada. Eu não preciso que eles identifiquem quem deles em uma fazenda que eles já teriam amado. E eles, tendo amado o ser, estariam submetendo o pedido de folha. que significa que eu só preciso recuperar a pessoa que é amado ser nos pontos que esta solicitação está indo em alguém para recuperar os funcionários usando o gerenciador de usuários, que já incluído como uma dependência em. Eu vou dizer algo como funcionários VAR é igual a no gerenciador de usuários pontuação, que é meu identificador de dependência encaixado em. Então eles têm um telefone. Cálices recebe usuário uma pia, alguém para obter o usuário flexibilização. Isso é esperar algum amador de fogo fora do sistema que a segurança reivindica princípios nossos princípios tão dentro que eu vou passar nosso objeto ou uma classe chamada usuário. Bem, é realmente agir objetos, então se eu passar o mouse sobre a palavra usuário, então você vê que é exatamente o tipo de dados que é necessário, que é que limpa princípio. Então eu estou colocando o usuário em. Então eu vou apenas dizer que os resultados para recuperar os dados reais como esta é uma função assíncrona . Então não, meus funcionários terão sobre funcionários objeto. Portanto, estou recebendo de volta o usuário que está conectado no momento. Então essa é uma boa maneira de recuperar o usuário atual. Você deseja que o usuário que entrou durante a sessão, ele tem uma palavra-chave que é literalmente a palavra usuário. Você pode vê-lo um pouco são um pouco mais complicados porque algumas pessoas realmente dar-lhe um sistema totalmente qualificado, que a segurança que afirma que limpa princípio, que o usuário. Às vezes você vê isso? O que? Isso é bom. Você pode apenas dizer a palavra usuário. Não, conheço o empregado que está fazendo o pedido. A próxima coisa que eu preciso saber se eu preciso ou não dizer a ele se este pedido o valor dele é que ele realmente prejudicou sua alocação real, certo? Então eu preciso encontrar as alocações para este usuário para que eu possa dizer algo como Bar nossas localizações são iguais. Então vemos no placar deixar um local no DSO. Na verdade, não tenho essa dependência. Então eu vou ter que voltar. Certifique-se de que eu tenho uma dependência para a minha alocação de licença Relate alguém para fazer isso rapidamente. Direi que vou embora. Ah, repositório de localização neste vai ser licença. Eu olho, eu sou apenas encadeado relatório Shorten sobre. Então vou colocar as dependências. Então eu estou usando alavancar o tribunal que já está lá para atender esse processo. Foster. Então, é claro, se eu estiver indo muito rápido, nós apenas, você sabe, pausar o vídeo em você apenas está digitando no catch up. Tudo bem? Então não, eu tenho essa dependência para os locais de licença. Então vamos tentar de novo. Então deixe alocação. Sublinhado. Deixe Alec Repo ligado. Então eu posso dizer recebe alocações de licença por funcionários, que está esperando alguma cadeia para as idéias funcionários que eu posso dizer obter por funcionários. Ela já foi criada essa função anteriormente. Então eu vou passar os pontos de empregados de valor. Certo, então estou passando o número dos empregados. Certo, Mas há um perigo aqui. E se esta operação se sente, se tentar recuperar os empregados, , não foi assim para poupar a bagunça,se houver. Erros são tão em um Eu acho que é por isso que você tem o gato tentar. Então eles pegam uma vez que ele recebe qualquer uma dessas setas você pode pegar a exceção ainda no objeto que você pode simplesmente passar para a exibição se você quiser fazer um erro do sistema ou algo é impresso na tela, o que não é necessariamente o melhor caso. Mas a questão é, esse é o ponto de uma tentativa pegar. Fizemos isso algumas vezes e só estou trazendo presento porque ainda temos a pista. Então tentamos operar, e então pegamos a era. E se há um erro do que nós fazemos algo então eu estou indo para o pé eu iria ouvir pontos de estado modelo estranho no Model Arrow on. Então vai ser nhoque. Mas então algo deu errado. Só estou avisando que algo deu errado com a operação. Não lhes contando os detalhes necessariamente. Mas para os 1.000.000.000 propósitos, podemos sempre observar este objeto. Qualquer casa que recuperamos ou funcionários, recuperamos as alocações que este empregado tem. E então percebemos que não, que são todas as alocações e não é necessariamente específico para a alocação fora do tipo de folha que está sendo solicitada. Então isso me diz que eu fiz outra função no meu repositório para ser ainda mais específico. Então eu estou indo, voltar para o meu repositório para começar com Contra. Então eu, Levi repositório localização em. Então eu vou duplicar isso. Então eu vou ver obtém uma localização por funcionários tipo Andi Então sobre as alocações pelos funcionários e os tipos de passou na cadeia Employee I d, bem como uma idéia tipo de licença inteiro em seguida, no repositório, eu estou indo para implementar essa função, então eu apenas esperar até eu obter a linha vermelha aqui. Então eu apenas sobre ou tomar a lâmpada, usar o responsável realmente no implemento interfere. Em seguida, esta função vai olhar muito semelhante dedo do pé ou obter alocações por funcionários. Lembre-se que estamos verificando por um período e eles estavam verificando as alocações, Entenda a cópia. Isso marcou porque vai ser um pouco muito semelhante fora do curso, mas desta vez eu estou vendo encontrar todos onde os funcionários que eu d é igual à idéia que está chegando no período é igual ao período em. Então eu vou dizer Onda, os pontos Q saem eu deixaria idéias tipo. Igual a acreditar no tipo I entrando. Não, nesta ocasião, só queremos um. Então, mesmo que um registro atenda a esta condição, o que acontece é que estamos sempre configurando para obter uma lista de nossa coleção. Então seria uma coleção com um. Não quero uma coleção com uma. Só quero um objeto. Então, para obter um objeto eu posso alterar isso foram tão primeiro ou padrão. Então, primeiro, nosso padrão sempre trará de volta apenas um objeto, pois ele encontra algo que muito é a condição que traz sobre o primeiro. Então, mesmo se você trouxesse se encontrarmos uma coleção de coisas que tanto a cólica, a condição, você só retornará o 1º 1 Se você não encontrar nenhuma, então ele retorna. Não, isso é o que o padrão significa, certo? Então nós estamos usando as mesmas expressões Lambda foram dis mudando a função de foram o primeiro nosso padrão em, então eu não preciso na lista. Então, não. Quando eu faço isso e eu estou recebendo uma linha vermelha aqui eso minha linha vermelha é porque desculpe, eu estou voltando. Uma vez. Eu só passei pelo período de metade dizendo que estamos esperando um objeto ainda eu declarei esta função para estar esperando para a coleta. Então eu só preciso orbitar os tipos de dados aqui, então deixe alocação em vez de fora de uma coleção em então que não faz muito o contrato. Então eu vou voltar para o meu arquivo de contrato ou meu arquivo interferes e ter certeza de que eu estou representando ele é corretamente. - Não. Depois de fazer tudo isso eu não deveria ter problemas. Então eu tenho alocação de licença, obter alocação de licença por funcionários e tipo, que é obter um. E acabamos de implementá-lo em nosso repositório. Tudo bem. Então, de volta ao nosso controlador, eu vou mudar isso verbalmente em de alocações para alocação. Então ele está retornando um registro com a alocação articular que este empregado tem para esse tipo de licença. Então Oh, eu preciso mudar essa função. Certo? Então eu não mudei as funções no in. O controlador não precisava de nós chamados essa função particular. Eu estava ligando, mas chamando um obter alocações por funcionários e digite sobre eles passando um empregado i d e também modelo que deixam tipo I d. mas chamando um obter alocações por funcionários e digite sobre eles passando um empregado i d e também modelo que deixam tipo I d. Então eu sei que os funcionários que fazem o pedido eo modelo está trazendo sobre o tempo folha que está sendo solicitado em. Não, estou verificando a alocação. - Não. Outro cheque que preciso atender. Não, é o número fora destes atribuídos ou atualmente no sistema para esse funcionário? É maior ou igual ao número que está sendo solicitado. Então não, temos que fazer um mês. Eu tenho que dizer que você pediu Você sabe, entre esse medo do que aquele cais, isso é X número de dias. Você tem esse número fora destes na sua alocação? Na verdade, acho que pulei à frente de uma validação muito importante que precisa acontecer antes de começarmos a verificar os locais. E isso é uma validação muito simples contra as ações porque temos um começo. E então, de fato, o quê? Precisamos ter certeza de que a pessoa não está colocando uma data de início. Isso é mais longe que eu tinha no futuro do que a data final. Então, antes mesmo de eu avançar com tudo isso. Isso me ocorreu há um tempo que perdi a validação. - Não. O objetivo deste exercício é que qualquer lógica que você colocar aqui, as validações que podem fazer e quebrar o sistema são pequenas coisas que causarão grandes dores de cabeça. Quando você tem uma grande corporação e validações ruins que permitem que os usuários coloquem dois lixo no sistema em então como o desenvolvedor ou a pessoa eu t responsável pelo sistema, você será o único limpando a bagunça. Então, é fácil. Basta pensar no que pode rolar no ponto off, entrar em, entrar em, depois validar contra aqueles Onda. Tente eliminar ou cenários, certo? Então eu já estou verificando se o válido Se o estado é válido e eu estou voltando, eu estou. Eu acho que eu posso usar isso. Bem, eu vou verificar. Use outro. Se declaração, eu vou dizer se no dia eu vou usar Ah, o tempo Compere Então data hora Esse objeto tem algo chamado isso. Tempo compere Direita. Então o tempo deles se compara. É preciso dois valores. Quem leva duas datas para que eu possa dizer modelo que, Andi eu vejo algo como começou então leva as primeiras datas que você quer comparar com as segundas datas. Estou comparando o primeiro dia com a data de início. Então estou comparando. Os pontos do modelo do dedo do pé acabam, não é? - Sim. Então ele retorna algo que é menor que zero. Se for mais cedo do que se a data em que um fornecido é anterior aos dois desde que ele retorna zero. Se for a mesma data em qualquer retorno algo maior que zero. Se é, você sabe, maior do que isso obviamente nós queremos comparar e apenas verificar se é menor que zero porque ninguém deve começar e terminá-lo início é o dia em que você foi escrito em Dwell. Não deve ser menor do que deveria ser maior que zero, na verdade, porque pode ser a mesma data. Se você só levou um dia, então você seleciona o primeiro o início sob nd para ser o mesmo dia em que sabemos que é um d certo. No entanto, se é que a data de início é a 16ª na Indy, é a primeira. Então sabemos que temos um problema. Então eu vou apenas comparar e dizer que se essa comparação usar um resultado que é menor que zero , então eu quero retornar. Então eu entendo que o dedo do pé volte para a vista, certo? Assim, podemos ter quantas validações considerarmos necessárias. Então a próxima validação será contra a alocação configurada. Então não, eu tenho a alocação para esse tipo de licença ligada. Então eu vou ver é o número fora do é solicitado maior ou igual ao número fora estes na alocação. Ou melhor, não é? Sim, é maior do que é maior do que o número destes na alocação. Então teríamos atingido outro ponto de validação ou retorno. Então, para este, deixe-me apenas adicionar o erro de estado do modelo para que possamos imprimir para a tela especificamente, que é o início. Não pode ser mais longe no futuro do que a data final. Então estamos avisando o usuário que o lixo que eles se arrependeram no DSO estavam rejeitando e avisando que essa é a sua flecha. Estes consertaram isso. Então, a apreensão torna muito fácil fazer isso, um, cálculo para o número de dias de folga entre a data de início e o nd, então a comparação realmente só retorna um negativo se for anterior a zero. Se é o mesmo dia em, em seguida, maior do que um se é se o início é cumprimentado feito. Tudo bem, Onda. Como eu disse isso, eu percebi que eu tenho uma era lógica bem aqui. Portanto, precisamos comparar a data no horário para a data de início e, de fato, ela sobre. Temos de dar ao Irwin. É maior que um. Desculpe por isso. Então eu disse menos que zero, ou seja, se isso começou, é mais cedo do que o índio, então nós temos menos de zero em. Isso seria OK, mas o problema é que queremos quando queremos detectar o problema quando o início é maior do que o Indy-lo quando isso acontece nesta função retorna o valor de um. Tudo bem, então é realmente aquele que precisamos verificar. Em seguida, retorne o erro para o para a lesão. Então, cerca de duas horas de cálculo para o número de dias que eu vou dizer algo como int é solicitado é igual a em, então uma maneira simples de calcular isso seria dizer, ponto do modelo começa fez ou outro modelo que terminou sua uma vez que é um valor maior. É um modelo que Andy dot dit menos então tem dívidas maiores ou o que sabemos. Então, se pegarmos esse fogo e sabemos que, de fato, é claramente maior do que iniciá-lo, então vemos o meu modelo de nariz data de início que funciona. Em seguida, depois de fazer isso, em seguida, nós apenas fora da brisa si dot dias. Então, vai servir. Seu cálculo não é apenas arrependido. Isso é o total de dias, então o total de dias voltará para John. Podemos apenas olhar para o interesse, uma vez que ele retorna o valor do tempo atual girado no todo e fracionalmente. Então nós realmente queremos esperar. Devolve um duplo, mas eu queria estar em Seul. Ele vai retornar alguma fração, você sabe, talvez 2,4 dias que talvez em um salto aqui, mas nós realmente estamos colocando em um inteiro em. Então nós estamos recebendo a linha vermelha sob esta linha fora da quadra porque eles não parecem que isso está retornando um duplo, mas estamos dizendo em um inteiro alguém para implicitamente lançá-lo em entrevista apenas abrindo nossa cinta, escrever a palavra em encerrar uma pausa. Então é assim que pode ser fácil lançar valores entre os EUA. Você tem o dobro de um lado que você quer, John faz Eddie apenas usar esta técnica para custar. Então agora estamos recebendo, mas o número está desligado. Então eu vou verificar novamente para ver se o número fora do é solicitado excede o correspondente nossa localização. Então eu fui ver se é solicitado é maior do que um local. Esse é o número fora. Estes, certo? Então estamos checando. Os dias solicitados excede o número fora destes no registro de alocação que acabamos de recuperar do banco de dados para que os funcionários no tipo de folha que está sendo solicitado em. Então, se esse for o caso, então, se essa condição for atendida, retornaremos a visão. Entenda isso, Andi, eu tive um erro de estado modelo para te ver. Não soletrei B. É errado nesta área. Quando você apesar de que alguém para vê-lo não tem o suficiente. Estes você não tem suficiente é para este pedido. Então estamos avisando que você não tem dias suficientes para atender este pedido, por favor. Arrastando. Certo. Então, essas são as validações que realmente aconteceram. Quando você clica, enviar e você recebe uma mensagem de erro com base em alguns dados que você pode ter colocado em que violou as regras de negócios são qualquer aplicação regras foi construído seu próprio literalmente lá apenas mais uma vez, um monte fora se declarações, hum, apenas verificando para coisas diferentes que o desenvolvedor não queria facilidade toe ele é entretido. Então, depois de fazermos todas essas verificações, não. Se ele chegar mais longe do que isso, se declarações, então podemos assumir com segurança que este é um pedido de licença válido. Então podemos começar o processo fora, criando um registro no banco de dados em fazer a dedução necessária. Então um que eu quero deduzir o número de dias fora do registro real de alocação em seguida, uma vez que o número fora, este foi o médico. Em seguida, inserimos na busca do fígado para que possamos fazê-lo em ordem inversa inserimos pedidos de licença em. Então fazemos a dedução. De qualquer forma, ambos os passos têm de acontecer, por isso quero dizer que vá embora. Pedido é igual a aan den Eu vou começar com um novo pedido de licença. Portanto, deixe a VM de solicitação ativada. Em seguida, este objeto vai tomar valores para o on Vamos começar. Comece devagar, Digamos que o empregado que está solicitando é um empregado solicitante I d. Sabemos disso porque temos o objeto empregados e podemos obter o i. D. Então, a pessoa que faz o pedido a pessoa assinou estava fazendo o pedido. Eu sei que o empregado solicitante eu daria o próximo valor. Queremos começar a data. Então a data de início vai ser o modelo de igualdade que começa as datas do fim. Vai ser igual modelo do dedo do pé que e seja isso. Então, a próxima coisa mais importante seria o status de aprovação, que sabemos que ninguém o aprovou. Foi apenas submetido, então eu vou dizer que aprovado é igual saber. Vamos lá, então. Dissemos que pediu. Então, o pedido de dívida que é ponto de tempo morto? Não, porque você acabou de pedir. Só sabe. Sei que quando pediu que o Sistema saiba quando foi solicitado. Eu não acho que nada mais é absolutamente necessário para ser inserido no banco de dados porque eu seria definido uma vez que ele é criado, a detecção seria em branco. Mas então eu sei que vai haver uma flecha porque a ação da data é, hum, não é Snoble. Então temos que fornecer algum valor de data aqui. Então temos duas opções. Neste ponto, podemos fornecer um valor de data reboque. Evite isso, sem exceção. Ou podemos voltar para a nossa classe de dados de banco de dados. Eu apenas encontrá-lo ou classe de dados para pedidos de licença em. Em seguida, mudamos de dados desconhecedores. Então, se conseguirmos esse valentão incognoscível, eu teria que mudar a ação da data. Também dois notáveis. Certo? Então nós temos essas duas opções que eu quero escolher o mais fácil e o deleite Bem, o propósito de passar por este exercício, eu só vou dar data solicitada ou dedução. Ao mesmo tempo DEET. Nenhum valor não é assim. Estamos fornecendo algum valor para a ação de data, mas, claro, isso é propenso a mudar quando o status de aprovação muda. Certo? Então criamos nossos objetos que Toby carregou. Então eu vou chamar este modelo de pedido de licença em vez disso. Uma vez que é o modelo de vista e não o pedido realmente que eu quero dizer Vier licença Pedido é igual. Toe o mapeamento, então sublinhe os pontos do mapeador. Muff em. Então eu estou mapeando para o tipo de dados off solicitações de licença, que é o nosso tipo de classe no objeto a ser limpo é modelo de solicitação de licença. Não, você provavelmente está se perguntando. Ok, então por que eu tive que ir e referenciar o outro modelo de vista antes que eu pudesse colocar em modelo de solicitação de licença em DSO on. Então, sim, temos criativo você modelo criar licença Solicitação modelo vista modelo guiando o que estava no formulário. Mas, em seguida, estamos construindo licença solicitação VM Então eu sempre goleiro vista modelo que é diretamente mapeado para a classe de dados e outras versões de escala própria que realmente usam sob modelo. Então eu estou usando esse modelo de exibição porque ele tem todos os campos que irão diretamente até a classe de dados em. Então, depois de fazer tudo isso, vamos em frente e salvar Nosso é tão cess é igual a sublinhar. Deixe o pedido três. Puxe ancorado. Criar em. Estamos criando o novo registro, que é pedido de licença. Então o pedido está indo da terra acima em diante. Então sabemos que isso está retornando um ouro, então eu vou apenas dizer, Se não, Se não, é sucesso significando Se a inserção falhou, então eu vou retornar a vista mais uma vez com ah em uma estrada. Isso é algo que deu errado em submeter o seu para o tribunal. Então, você sabe, esses erros são bons lugares para ver contato com seus administradores, coisas assim. Mas de qualquer forma, eu sou o furador. Se não for sucesso do que fazer isso em, então eu vou voltar para o Índice Ação Off, que eu não quero necessariamente fazer, porque eu disse anteriormente que indexado dentro do contexto deste controle está realmente indo para ir para o arquivo administrativo, hum , índice, que eu realmente não precisaria que o usuário voltasse. Certo. Então precisamos configurar nossa visão que mostre suas solicitações e o estado fora das solicitações . E isso vai estar no próximo vídeo. Mas então, para não, vou redirecioná-lospara o índice dos controladores domésticos. Mas então, para não, vou redirecioná-los Eu posso discordar de ação direta vírgula. Então eu posso especificar o controlador para estar em casa, certo? Então, é o índice de ação direta real no controlador home, que sabemos que é a página inicial, que está bastante em branco agora. Então você sabe, estamos construindo sobre o aplicativo. Podemos fazer tudo de uma vez, mas pouco a pouco. Pedaços estão entrando. Então nos permite salvar todas as quatro alterações e, em seguida, assumir formulário de inscrição para uma execução de teste. Então, eu estou indo dedo do pé, recarregar este formulário de inscrição e transmitir solicitação. Então a reforma é recarregada e nossa seleção que eu quero férias deixar osciladores Onda. Quero férias, Lee desde o primeiro de Janeiro. Refiro-me àquela selecção. Então você vê aqui que está em conflito mesmo que estamos recebendo nosso controle de calendário, ainda precisamos corrigir isso. Então vamos fazer isso em outro vídeo. Mas agora, eu só quero me concentrar em superar essa seleção de violência. Então, o primeiro de 2 de janeiro, o quinto de janeiro. Tudo bem, então, as divindades 2020. Então você pode ver que se não queremos dizer o aplicativo corretamente, que essas coisas podem ser muito frustrantes em fazer ou quebrar a experiência para nossos usuários. Certo? Então vamos deixar isso para os nossos retoques finais onde passamos por debaixo da tela essas pequenas nuances. Então eu só clique em pedir licença, e então ele está me dizendo que eu preciso colocar um dedo em algo valioso. Tudo bem. Então eu acho que não podemos esperar porque eu estou aqui tentando colocá-lo e eu estou recebendo um monte de erros. Então vamos consertar isso juntos e colocar isso para descansar. Não, vou ter que fazer alguns ajustes. Então, nossos modelos de visão sobre a forma como essas coisas são configuradas. Então, o primeiro ajuste que estou fazendo é eu estou indo para o modelo de exibição para a criação, e eu estou mudando o tipo de dados de dia para uma string. Então, porque é esse tempo, ele ainda está contextualmente tentando nos dar um dia de entrada tipo, que está nos dando o controle de calendário para o navegador antes de nos dar o equerry G uma vez no assento lá em cima. Claramente, não está funcionando, então vou mudar isso para corda. Não, se eu mudar que o fluxo, isso significa que eu tenho que mudar como nós interpretamos o valor que está vindo do modelo, porque agora é string, mas nós temos um monte de operações desatualizadas fazendo isso eu estou indo dedo do pé no topo da página. Salvar nossa data de início é igual ao modelo que iniciar bits, e então eu vou custar isso até data hora. E nós fizemos um tipo de custo mais cedo onde nós fizemos o custo inteiro. Então isso nem sempre funciona tão bem, não em todas as situações. Então eles têm uma classe convertida, eu posso ver convertido encaixado em. Então eu posso ver no dia ter tempo. Então converta para data e hora, em seguida, estou passando o valor que está no campo datas de início em nosso modelo. Então eu estou apenas duplicando essa linha e fazendo a mesma coisa para a data final. Então data final, convertendo-o E neste ponto modelo e eu sei que eu tenho variável começou uma Índia que eu vou começar a usar para substituir as referências para as variáveis do modelo. Certo? Então, em qualquer lugar que eu tinha começado antes, eu só vou substituir tudo isso com apenas começar a ser variável em. Então vou repetir isso com a data final. Então pegue e é o ponto modelo de substituição de Ripley e ele em todos os lugares. Tudo bem? Não, vamos vê-lo. Todas essas mudanças em recarregar nosso formulário e ver se alguma coisa muda para melhor. Tudo bem? Então, não, não estamos vendo as predefinições fez valores. Mas quando clicamos, temos nosso selecionador de datas. Então eu disse que vamos testar entre 1 de janeiro e 5 de janeiro. Bem, seis. Então outras pequenas considerações seria que se alguém está solicitando férias nesse fim de semana está incluído ou fim de semana, estes estão incluídos. Eles querem excluir os dias de fim de semana dos cálculos, certo? Então essas são pequenas regras de negócios que você precisa colocar na medida em que você constrói este sistema ou para o Nolan, apenas calculou que todo mundo trabalha setenta por semana. Então, qualquer número fora destes que eles pediram que é o número fora destes nossos cálculos contra. E então nós dizemos, pedir licença. Estamos brigando vendo que algo deu errado, que significa que ele pegou uma exceção. Há algo que não está atirando, então quando estamos encontrando esses tipos fora de Eros, é melhor. Vamos de barco ancorado em pontos de quebra definidos para que possamos rastrear a atividade. Então eu vou entrar no modo de depuração em. Vou definir um ponto de interrupção no início desta função, então vamos passar por cada linha para ver exatamente onde nossa quadra está quebrando. Tudo bem, então eu tenho o formulário, eu sinto essa autoridade. Então, quando eu clicar em pedir licença, ele deve atingir o nosso ponto de interrupção no post em, para que possamos monitorar e ver isso. Ok, começar a descer sobre este valor para que eu possa passar e passar. Então comece a ser não, tem um horário de folga que quatro meses, que eu acredito ser o ou é meses o certo. Então, essa é a data hora que foi criado para a data de início no final, é demônios aqui meses o ou Desculpe. Então esse é o sexto. Então, se encontrarmos todos os relatórios do tipo de licença, eu estou realmente apenas como pular em frente, porque eu acho que nós somos uma boa idéia do que acontece entre essas linhas em algum lugar para pular adiante para isso. Se declaração em, em seguida, sua instrução está verificando. É válido? Por isso, é válido. Portanto, sabemos que não é isso que está a voltar à nossa opinião. Então vamos fazer o encontro. Compare onde estamos comparando as datas de início com a data final em. Então vamos dar um passo à frente em que a comparação atende Oh, nossos requisitos. Então a próxima coisa é que tentamos pegar nossos funcionários. Então, se eu olhar nos objetos do usuário, então eu posso ver que há alguns detalhes sobre eles sendo armazenados. Eu sei o nome Onda algumas outras poucas coisas, mas então quando eu faço o usuário recebe uma chamada de pia, você vai obter todos os detalhes necessários no objeto. empregado Tudo sobre esteempregadonão está no sistema ou pronto para o Austin manipular. Próximo. Estou recebendo a alocação deles. Então eu passo por isso de novo. A Andi. Bem, apenas um passo, faça alguns passos, deixe passar por esse processo. Então este sou eu usando f 11 apenas para ter certeza de que eu não estou pulando à frente de qualquer coisa que é artes importantes depois de alguns passos. E eu tenho um pouco de querosene que durante o dia sem volume tarde porque fora todos os passos, então se você tem um Terry poderia ignorá-lo. Se está fazendo isso comigo, se não estiver, tudo bem. Mas vamos passar por isso juntos. Portanto, a alocação está de volta e temos tudo sobre a alocação de que precisamos. Não, vou dar um passo à frente outra vez. Então eu estou indo para CF 11 em então ele vendo é o número off dias solicitado maior do que o número fora este alocado em. Sabemos que se estou solicitando dois dias na alocação é de 15 dias, então essa validação está OK. Então, nós atravessamos, construímos nossos objetos. Então deixe-me ver se é aqui que os Eros aparecem. Então, quando eu construir essa licença, solicitar objeto modelo, então eu estou vendo. Aprovado, aprovado e aprovado por eu d Todos sabemos que temos a nossa opção de data ser solicitada e mordeu todos eles estão construindo todos os grandes momentos como esperamos Então tudo isso deve ficar bem, hum então eu vou continuar, assim f n f l nunca Desculpe em, em seguida, ir para o envio onde ele adiciona a entidade. Então eu estou adicionando as solicitações de licença tipo de entidade fora que acabamos de construir passar por isso , então ele está salvando as alterações. E então, ao salvar as mudanças, ele pegou a exceção, certo? Então, como eu sempre digo, esse é o ponto da captura da pista. Então ele vai tentar a operação e, em seguida, ele está pegando uma exceção alguém para passar por esta linha em. Então eu não posso examinar Então, adicionando esta linha à captura, eu posso ver o que a exceção está em. Então eu posso fazer drill-down e ver que ele diz que a inserção falhou instrução Inserir em conflito com a restrição de chave estrangeira para o tipo de licença I d. Tudo bem, então isso não faz exatamente o que está errado? Eu não fiz na construção da força modelo da missão. Eu não coloquei o tipo de folha I d. Então eu vou parar, e então eu vou corrigir meu erro em eu vou dizer que o tipo de licença. Eu vejo. Está bem. Tudo bem. Então eu sei. Entendo. Por que não colocou? Porque eu tenho o objeto de tipo de folha, mas não tenho o campo de tipo de licença nos meus modelos de exibição. Então eu não criei meu modelo de exibição corretamente. Certo? Então, eu só vou colocar em que idéias tipo folha. Algumas cópias distantes já estão em média aqui. Coloque-o no reboque, o objeto malvado, e eles sabem que eu o tenho na classe “eu quero dizer”. Desculpe. Não, é assim que eu fui para fazer representação para idéias tipo folha. Pontos iguais do modelo do dedo do pé. Deixe o tipo I D ligado, então eu estou muito confiante de que esta licença será apresentado desta vez alguém para remover este ponto de freio desde o início. Eu só vou colocá-lo para baixo pelo sucesso. Sim, é bem sucedido ou não. Então, se chegar a este ponto que eu sei que foi enviado para o banco de dados, ou pelo menos se sentir, então ele iria para a captura direita? Então deixe-me voltar para depuração. Mais do que tentar de novo, então vamos tentar de novo. Estou selecionando a data da primeira saída de janeiro de 2020 até o quinto do gerador em 20 licença de solicitação. Então ele está me dizendo que eu valorizo aqui é inválido. Preciso de um valor adequado. Eu não selecionei na lista suspensa. Deixe-me tentar de novo. Então ele atinge o ponto de freio. Então não bombardeou a votação nesta terra como fez antes. E quando eu passar o mouse sobre isso, este é o seu sucesso é verdade, o que me diz que ele foi enviado para o banco de dados sem quaisquer problemas. Alguém para remover meus pontos de interrupção clique em continuar, então ele vai redirecionar para a página inicial. Como eu te disse. Então dissemos a ele para fazer isso. Nenhum dedo do pé validar que ele está lá. Digamos que eu enviei a folha e então eu vou até HR e então eu digo a pessoa que eu conheço que aprova o contrato. Ei, eu enviei. Precisam validar se eu o enviei. Então eles fazem login como administrador em. Então eles vão se administrar, depois funcionários. Oh, isso é impreciso. Gerenciar, deixar aplicativos em vez disso, e então eles verão que eles têm que solicitações. Um está gastando um foi rejeitado. Em seguida, eles podem ver que o usuário de teste fez um pedido de licença de férias se eles querem vê-los em ordem fora do solicitado Bem, podemos sempre apenas colocar em nossa tabela de dados nesta seção. Pegue algo rápido, Andi. Pegue algo rápido, Então eu sei que uma tabela de dados estava aqui. Notei que ele foi revertido para uma tabela HTML regular na matriz. Só fiz inspecionar elementos em foi para o console e em nenhum lugar Olhando para um erro nesta seta está aqui porque fora do nosso stint com RG nos consulta. Então nós vamos ter que gastar algum tempo corrigindo essas referências porque se eu não estou enganado, nenhuma tabela de dados está carregando neste momento porque fora esse erro, tudo bem, então isso é outra coisa que deve têm sido uma equipe de dados. Então temos trabalho a fazer. Mas pelo menos podemos nos sentir confiantes de que os funcionários não podem pedir licença. Vai aparecer na lista de alguém para aprovação ou não. 42. Módulo de solicitação de leave no Admin Rey Revisão: Ei, pessoal, bem-vindo de volta nesta lição será construir toda a funcionalidade que permitirá que nossos usuários administradores aprovem ou rejeitem solicitações de licença. Sabe, nossa lição anterior nós teríamos construído uma oportunidade que permite que um funcionário realmente envie um pedido de licença. E isso teria sido através da seleção de um tipo no início. E, de fato, é desde aquele vídeo que eu fiz alguns pequenos ajustes porque nós teríamos deixado aquela lição com, ah, você sabe, guerra de toga entre nosso Jake ou você y controle de calendário em tabelas de dados de porta saber o ajuste Quero dizer, era muito menor. Tudo o que fiz foi remover a referência ao Jake onde disparou para o calendário. Então, originalmente, eu teria copiado tanto o arquivo Js consulta J na bochecha ou você I Js arquivos desde então removeu a segunda referência. O Jake onde os arquivos já que eu já tenho uma referência no meu projeto estão no experimento, e ele funciona. Então, estão certas versões desativadas. O Jake. Preocupe-se que o geek onde você selecionador de calendário y não funciona com Andi. Refiro-me a essa suposição. Inicialmente tendo experimentado algo assim no passado, Não, Eu realmente apenas removi a segunda referência. Consulta Ajay. Andi, eu tenho uma referência a uma consulta e, em seguida, todas as outras bibliotecas que têm uma dependência, incluindo, ou Jake. Onde você, por quê? Ao fazer isso alos tanto sobre tabelas de dados para carregar corretamente. Então é assim que nossa tabela de dados deve ser. Ah, quando houve um conflito, foi apenas lá jogando mesa que nós tentamos mudar. Não, é como deve parecer. Ser uma tabela de dados também para o nosso formulário ou calendário está chegando. E contra isso, o resultado do irmão de completar. Mas nossos calendários de então todos os controles de uma forja, uma consulta ou javascript besta estão disparando como eu preciso deles. Então essa é uma maneira. Se você tiver conflitos com J, arquivos de consulta ou controles JavaScript e você está recebendo console do Arizona e você não está recebendo o controle como deveria olhar, Então talvez você possa tentar mover suas próprias referências. Lembre-se que a ordem importa, Andi, claro que pode haver conflito. Então, tenha cuidado ao fazer essas coisas se moverem. Nosso objetivo para esta escuta é muito para um usuário administrador. Uma vez que eles estão nesta interface para ser capaz de selecionar uma solicitação de licença em, em seguida, ser capaz de bem, ir para os detalhes e aprová-lo ou rejeitado. Então isso significa que nós vamos ter que refinar as opções que eles estão vendo aqui, significa que eu não quero que eles sejam capazes de editar nelas para ser capaz de excluí-la. Mas eu quero que eles vão para uma vista que eu possa usar os detalhes você. Isso foi assim todos os detalhes, você sabe, outros detalhes fora do pedido que eu, um oficial aqui em então, no final da revisão, ser capaz de clicar em uma prova que então, você sabe, colocá-lo em um estado aprovado ou rejeitar, o que, em seguida, colocá-lo em um estado rejeitado. Tenha em mente também que uma vez que eu deixar o pedido é aprovado, em seguida, a alocação que esse funcionário tem no sistema terá que ser ajustado para refletir essa dedução. Então vamos entrar no fundo. A primeira coisa que eu vou fazer é modificar as interferes, e que é o arquivo de índice ou deixar a pasta de solicitação ligada. O que eu vou fazer é remover parte da ação. Então, como eu disse. A única ação que eu realmente preciso é de detalhes ou enquanto eu estou realmente indo dedo do pé, fazê-lo dizer comentários. Então, em vez de ver a palavra detalhes, o link em si vai dizer Review. Vou adicionar o meu Bt nas primárias Bt e Dash. Vou ver a antiga linha primária Andon Justin para adicionar um ícone de cinco ou dois. Então deixe-me fazer isso rápido. Estou na frente também. Maiken, não sei por que continuo vendo cinco ícones, mas é isso que estou fazendo. Então eu adicionei esse fundo incrível. Um ícone referenciado um arquivo neste é o que ele renderiza na tela. Então agora temos, ah, botão que diz a revisão. Mas fora do curso vai estar apontando para a ação de detalhes dentro do controlador. Por isso, agora temos de implementar o que esta acção faz. Então, de volta ao nosso controlador, eu vou para a minha ação detalhes que está esperando algum perímetro inteiro fora I d. que nós sabemos que vai ser o I d fora dos pedidos de licença. Então eu preciso recuperar o pedido de licença do banco de dados alguém para dizer que o pedido Vier é igual ou deixe-me ver. Solicitações de licença viral é igual a na pontuação. Deixe um relatório de bloqueio que os pontos encontram por ID e então eu estou jejuando em que eu d para amador. Tendo recuperado isso, carregamos nosso modelo de visão. Então temos deixar modelo de vista Pedido em mim. Basta verificar duas vezes e certifique-se que tem o suficiente para mim em Você percebe? Ainda tenho isso. Aquelas anotações de dados para batida. Tudo bem, então eu deixo aqueles naquele modelo de visão, então eu vou perder sangue fora do modelo e modelo C var é igual a on. Então eu fui para o mesmo superior que o mapa e, em seguida, mapeamento na direção fora da solicitação de licença VM no objeto a ser mapeado é licença solicitação. E depois de estar fora que acabamos de passar em nosso modelo eu sei que temos o modelo passado e eu apenas clique com o botão direito do mouse Adicionar vista. E então nós apenas brigamos o discurso de detalhes com o modelo de detalhes modelo final, que é deixar solicitação vm ativado. Em seguida, clique em Tudo à direita. Então, eu só estou fazendo os pequenos ajustes habituais que eu vou colocar em algum lugar. Os detalhes aparecem para revisar. Andi, estou a ver. No san model dot funcionários estão solicitando funcionários que primeiro nome sobrenome. Então eu vou dizer que estou revisando o pedido de licença para este empregado em um pedido de licença C apóstrofo s . Tudo bem, então essas são as coisas que você pode colocar em sua tela para torná-lo um pouco mais, você sabe, pessoal. Não vou modificar a toot do Leo. Como você pode ver, já está mapeando. Então, isso é dizer que este nome de peça para em então ele está nos dando o I d. Então, como a idéia que eu quero imprimir o nome em. Não eles funcionários i d. Então eu substituí essa data de início terminou o tempo de licença a ser solicitado para isso. Vou movê-lo para baixo da sentença de revisão. Alguém para colocar 4 anos em 10 centavos. Fui ver o nome de exibição para o solicitado em seguida traço para que ele está em cima. Quando? Este dia em que esta licença foi solicitada para começar. Então ele está revisando para essa pessoa, e então o D pediu direito sobre Anethe em. Então eu posso removê-lo dos detalhes gerais, então eu não quero esses detalhes. Não quero a ação do encontro. O usuário administrador já sabe que está em um estado aprovado. Então eu vou me mover na parte que vê ou desculpe, ele já sabe que não é. Não é um estado não aprovado em que vamos mudar. Oh, eles aprovaram por. Portanto, esses detalhes não são necessários quando este usuário administrador está tentando decidir se ele ou não deve aprovar. Deixe para a direita. Então queremos mostrar praias relevantes que podemos organizar o pho que queremos. Em seguida, podemos avançar com a funcionalidade. Então, queremos que algumas ações estejam disponíveis para este usuário. Queremos que eles sejam capazes de aprovar, rejeitar ou voltar à lista. Então eu vou fazer assim agora, alguém para dizer uma prova, e eu vou copiar este botão tirando o cano. Então eu vou ver rejeitar Andi. Eu quero deixar uma lista apoiada para que tenhamos três botões. Então vou passar algum tempo e dar aulas a eles, então vou fazer isso fora da tela. O que eu vou fazer aprovar Bt e sucesso vindo para fazer rejeitar Bt e perigo em volta para isso vai ser BT e secundário. Então eu vou fazer uma pausa e fazer isso. Você pode tentar por conta própria. Tudo bem? Assim que o sucesso, perigo e linha velha traço secundário. Acho que trapaceei um pouco. Eu não disse Oh, Linus, disse Sikander. Mas isso é bom. Qualquer que você escolher. É para seu próprio benefício e para sua própria criatividade pessoal. Arte. Então eu também vou adicionar o fundo. Ícone incrível. Alguns eu vou quebrar a linha para que eu possa ver cada tio atacado por si só. Mas eu estou adicionando os ícones para comer. Então, para este, eu vou dar-lhe o espaço F oito traço. Acho que eles têm teca. Hum, eu não conheço todos eles. Às vezes eu faço um palpite educado baseado no tipo de ícone que eu espero estar lá, e às vezes eu estou errado. Então eu ainda tenho que acabar voltando para a documentação de qualquer maneira. Mas vou fazer isso primeiro e depois refinar a Andi. A minha inteligência está a dar-me comida a este. Eu vou ver. Eu quero algo que é como um raio X, então eu acho que eles têm um que é seu removido de modo que se você remover em, em seguida, para a lista apoiada A , eu quero uma seta voltando. Então eu vou dizer para a esquerda. Então deixe-me fazer isso rapidamente. Este é F E R O. que sobrou. Então, na verdade, basta verificar a documentação e eu vi que não é tick, mas é cheque. Então é por isso que eu me uso como um pequeno cheque um carrapato. Tudo bem, então mais uma vez, você sempre pode ir ao site e referenciar a frente também estava usando a versão 4.7 pontos tudo que eu não memorizo todos fora deles, mas sob demanda, eu vou e encontrar o que eu preciso e 15 em conformidade. Então agora estes são os nossos detalhes. Você tem outras coisas que eu quero mudar de aviso, ou pelo menos uma rejeição comprovada. Ambos apontam para a ação de edição. Eu não quero necessariamente isso, mas você tem várias opções quando se trata de lidar com esta situação. Então, o que algumas pessoas fazem seria criar um formulário e fazer todos esses tipos de botões de envio. Preciso enviar botão irá para a ação post Andi. Vamos tentar fazer a submissão no pós-leilão, certo? Isso é uma opção. Você sempre pode criar suas próprias ações na solicitação de licença no troller no controle em . Então você aponta para a ação relevante. Então, por exemplo, eu posso fazer uma ação que apenas visita aprovações. Então, quando este link estiver correto, ele chamará a ação de aprovação. E então todos nós podemos supor que essa ação de prova vai ser aprovar a transação . Certo. Você também pode criar outra situação em que você teria ganhado para aprovação em 14 rejeições. Você pode ter várias opções. Você pode ter quantas ações quiser. Você pode criá-los sob demanda. Você pode criar uma ação que tenha um parâmetro. Talvez seja um rebanho para ver, você sabe, verdadeiro ou falso. Verdadeiro significado. Verdade, é aprovado, digamos, eles aprovam passos em dfars? Ele não é aprovado, então você executa as etapas de rejeição. Então, no final do dia, você sabe que há indivíduos que vão sair em sua implementação, e é com você. Mas para esta situação ou o propósito disso. Ouça, eu vou criar uma ação para aprovação em uma ação para ejeção. Então isso significa que o botão aprovado ele vai ligar para lá. É a ação. Aprovar solicitação em. Em seguida, a opção de rejeição vai chamar a ordem de ação. Botão de ejeção. Desculpe. Vai chamar a solicitação de rejeição de ação em. Então todos nós sabemos que a batalha é apenas volta para o índice de qualquer maneira. Então, com isso feito, ambos aceitarão o i D fora da busca alavanca. Então sabemos que nessa prova, estamos aprovando a busca da alavanca com isso na rejeição estavam rejeitando a licença. Solicitei que eu d. Então eu só vou para o meu controle rapidamente em então. Eu estou indo toe criar o meu resultado de ação sobre este vai ser chamado de aprovação pedido em sua tomada em int com um I D abrir e fechar chaves em. Então eu posso fazer Skopje toda essa Onda fazê-lo no reboque. Rejeitar pedidos comestíveis lado a lado. Agora vamos trabalhar ou o que acontece quando batermos? Aprovar o que precisamos fazer primeiro Estes recuperados uma solicitação de licença que está prestes a ser reprovado aprovado. Desculpe. Então, eu só vou dar o dedo do pé. Use esta linha mais uma vez, e eu vou apenas construí-los de forma simultânea, porque em qualquer situação, eu preciso retirar o pedido de licença que é capaz de ser aprovado. Certo? Então, estou recuperando o pedido de licença. Eu não preciso esfregar nesta situação porque não há nenhuma operação que como um elemento visual , então não há necessidade de um modelo de visão. Então recuperei a classe de dados. Então eu modifico. Então eu atualizo. Então, o tempo que estou modificando. Quando alguém aprova o pedido de licença, os elementos que precisam ser alterados seriam de Anderson para dizer pedido de licença não ligado. Então a aprovação começa no dia. Estou esquecendo em que campo estaria. Estou apenas a saber, reparando que chamo o relatório completamente errado. Tudo bem, então se vocês alcançarem esse fogo, tenho certeza que estão muito desapontados comigo, mas eu chamo o relatório errado. Não sei por que estou tão fascinado com a ideia. Off licenças alocadas, mas estou lidando com pedidos de licença. Então eu tenho que deixar Allah rastejante. Oh, e é chamado na alocação de licenças, é por isso que eu não estou achando que os campos são difusos que eu estou esperando aqui. Então deixe-me corrigir meus erros. Estou usando o repouso do pedido de licença. Espero que tenham apanhado isso na Euro. O carrinho se você fez, então você pode apenas me ligar e me dizer que você fez isso. E então podemos formar alguma forma de recompensa para o seu pensamento rápido e aqui habilidades de depuração . Mas deixe-me apenas conhecer essas correções. Então, estou recebendo o relatório de pedidos de licença. Então, se eu depurar, um, a solução mais cedo do que teríamos obtido esse erro porque então o mapeamento teria falhado. Certo? Então o país das imagens eu sinto muito por isso. Então deixe o relatório do pedido. A solicitação supostamente solicita relatório. Então, em um pedido de licença Agora, estou vendo o que eu deveria ver. Eu vou mudar o status aprovado tão verdadeiro, que eu posso aliviar o pedido novamente em então. Desta vez eu estou mudando o aprovado por I d. para ser o usuário que está preso agora. Gostaria que algo semelhante fosse recuperado. Quem é o amor ser assim? O ponto é que você pode ter vários usuários de administração e se ele vai estar usando uma organização. Eles vão ter várias pessoas de RH que podem aprovar e rejeitar licença ou se houver, ah, sistema mais complexo onde é um supervisor que pode ser qualquer pessoa em qualquer momento. Em disparar aquele cenário mais complicado. O fato é que queremos saber quem está fazendo a aprovação com base na pessoa com amor ser e fazendo a ação, assim como quando estávamos fazendo o pedido, certo? Então eu só vou recuperar a pessoa usando um dos bits anteriores de código que escrevemos . Tenho-o aqui na criação, hum, leilões. Vou para o Richard onde esta coisa fora do tribunal e depois voltamos no dia. Fui recuperar isso. Então, eu vou chamar este usuário Savar. Deixe-me apenas para que tudo o que digitarmos para a aprovação basicamente se aposente para os rejeitados. Então eu só vou fazer com aprovado e então nós apenas copiamos e modificamos de acordo. Então o usuário que eu seria ou o aprovado pela idee é o usuário. Isso está ligado. Então vamos conseguir eu para aquele campo. Então temos pedidos de licença a ação data em que não é a hora. Sem significado. Este é o momento em que houve ação. Aan den. Não tenho certeza se há mais alguma coisa sobre a solicitação de licença que eu precise modificar quando ela for aprovada ou rejeitada. Então sabemos que é aprovado. Nós definimos, que é aprovado pelo i. D. A data em que foi ação. As solicitações precisam ser alteradas e deixam o tipo. Eu acho que é isso. Então saiba que eu tenho essas modificações no nosso objeto, hum, ou temos o nosso recorde. Precisamos salvar direito. Então eu vou dizer, se ou melhor, desculpe, eu fui ver um vírus. Sucesso é igual sublinhado. Deixe o pedido de reforma, não cometendo esse erro novamente ponto sobre. Em seguida, vemos atualização chamando essa função de atualização em. Então vou passar os nossos pedidos de licença, modelo mamã. E então eu digo, se é sucesso ou se não, é sucesso, em seguida, redirecionar suas muitas maneiras de lidar elegantemente com esses erros. Mas eu só estou usando, você sabe, um passe rápido e fácil para nós nos atualizarmos e ter uma apreciação do que está acontecendo fora do curso, precisamos embrulhar tudo isso em uma tentativa. Apanha alguém para te ver tentar e depois aperta duas vezes. E então temos que tentar, pegar, bloquear. Certifica-te de que estou a contabilizar a excepção. Vou pegar toda a operação que estamos tentando e colocar dentro do bloqueio de tentativa . Então eu vou fazer a captura onde eu acabei de voltar. Redirecione o índice, e então eu removi o lance. Então o lance realmente mata tudo o que você sabe, tudo fora da operação fora de sua aplicação, que você não necessariamente quer o tempo todo. Então eu estou redirecionando o discurso do índice, se não o sucesso. Bem, vou redirecionar de qualquer maneira. Tudo bem, então se for bem sucedido, eles querem redirecionar. Se não for bem sucedido, vou redirecionar. Então eu estou pegando aquele cheque para se ele for bem sucedido, e então eu só estou dizendo, faça tudo fora disso. Tente tudo isso. Redirecionar, mesmo que haja uma exceção. Ainda redirecionamos. O ponto é que, se eles clicarem em aprovar e aprovar, estado não muda porque algo campo ao longo do caminho. Então, quando voltarem para o discurso do índice, ele ainda estará em um estado aprovado, nesse ponto eles provavelmente chamarão de “I t” . Mas isso requer mais algumas operações complexas. Toe ser capaz de talvez dinamicamente nos indicar se a operação foi ou não bem sucedida, que ainda não estamos prontos para isso. Então eu só estou construindo. Faça isso em. Estou tentando manter o mais simples possível, certo? Então tudo o que fizemos para aprovar, vou copiar isso. E então eu vou fazer isso em rejeitar CNC. Mais cedo, eu estava dizendo que poderíamos ter ações que fazem qualquer um dos cenários. E é isso que estamos fazendo. Quem poderia ter tido uma ação que levou uma inundação? E os leitores têm uma função que estes eram a Operação Bacia. E se vaporizá-lo para que você saiba que está realmente aberto, é realmente uma questão fora da implementação. Então você quer fazer isso. Então, nesta situação é tudo o mesmo, hum, dados, exceto que Proust estava em quedas de reboque. Tudo bem, então, não, já fizemos tudo isso. Eu quero ensinar isso para uma execução de teste, então eu vou abrir meu aplicativo usando o link do navegador em. Então vamos ver o que o nosso trabalho produziu. Tudo bem, Então já temos um pedido de licença no aplicativo em um estado pendente e foi para apenas rapidamente criar outro Onda. Em seguida, podemos testá-lo com qualquer cenário com uma aprovação ou rejeição. Isto é algo que deu errado. Eu acho que é porque eu estou no usuário administrador. Deixe-me tentar de novo. Tudo bem? Então, não, fiz outra solicitação de licença usando um usuário normal. Esse usuário administrador tem qualquer alocação. Então ele pegou a flecha. Algo deu errado. Então estamos testando de novo. Então deixe os aplicativos. Sei que temos que deixar pedidos, certo? Feito pelo mesmo utilizável. Isso é um evento de urina. Então vamos ver o que acontece em alguém para clicar em revisão, que deve carregar os detalhes. E estou vendo todos os detalhes. Então estou vendo que estamos vendo esse pedido de licença. O solicitado foi data de extensão no tempo, O usuário de teste dos funcionários solicitantes em. Então você vê que alguns dos meus rótulos ainda precisam de algum refinamento. Então, podemos apenas modificar o modelo de exibição para que esses rótulos sejam impressos melhor arte e o tipo de licença é férias. Fomos aprovados rejeitar em uma batalha é botões. Então vamos começar com uma lista de garrafas. Ok, isso funciona. Vamos voltar a isso. Vamos tentar aprovado em, em seguida, este ler Eric O índice são então eu não quero que ele para redirecionar esta página de índice. Queria redirecionar os pedidos de licença, discurso de índice, discurso de índice, artes ou pedido de licença na vitória. Então vamos modificar isso. Eu acho que eu tinha especificado o controlador. Lá vamos nós. Então eu especifico que devemos ir para casa, que eu não quero que alguém remova isso. Basta ver Ler Eriks para Index. Certo, então esse é um daqueles “Não diz copiar e colar tribunal quase cegamente. Mas, felizmente, é o nosso próprio código. Nós o escrevemos para que possamos modificá-lo como você quiser. Tudo bem, então eu fiz essas modificações. Então vemos que eles aprovaram funcionalidades funcionando e vemos esse contexto só eles podem ver qual deles é aprovado. Então não, eles sabem que eles têm essa aprovação pendente sobre essa pessoa é o mesmo uso. Solicitando alguns dias Onda, não queremos dar muitas vezes. Então eu fui rejeitar este. Tudo bem, então clicamos em rejeitar e então isso deve saber redirecionamento que estão listando e vemos rejeitados e rejeitados assim para solicitações rejeitadas em nosso sistema. E temos um zero aprovado pendente. Portanto, três no total zero pendente de um dedo aprovado rejeitá-lo. Isso é bom. Agora, uma coisa que não fizemos para a aprovação foi modificar a alocação de funcionários porque lembre-se que eles não alocaram escritório Norm para férias. Eles nunca fizeram seus pedidos. Teríamos aprovado. Mas não colocamos a funcionalidade para realmente atender as deduções do do local A para o período. Então eu tenho que voltar para o meu controlador e, em seguida, vamos para nossos pedidos de aprovação em. Então temos mais trabalho que precisa ser feito. Então agora eu posso usar meus relatórios de alocação de licença. Então, depois de termos recuperado o pedido de licença, eu preciso recuperar as alocações de funcionários. Eu vou dizer alocação é igual a deixar eu localização e teria cuidado desta vez ancorado. Encontre em, então. Aqui eu tenho encontrar por idéia e encontrar tudo Mas então eu preciso encontrar a alocação pelos funcionários. Eu d número. Então o que eu vou fazer é modificar o repositório para alocações de licença em Duh. Eu realmente tenho que obter alocação por funcionários. Eu tenho isso. Desculpe por isso. Esqueci o nome da função. Então vamos apenas ouvir o dedo desfazer tudo isso e ele não é encontrado, mas ele recebe alocações por funcionários em. Então eu vou re passando o empregado i D, que sabemos da licença. Solicitar objetos provenientes do nosso banco de dados. Então é deixar pedidos que os funcionários ou solicitando empregado I d. Então lá para padrões. Quando, quando fazer isso. Às vezes as pessoas gostam de fazer referência diretamente do objeto. Às vezes as pessoas mentem para ser variável clara, então eles simplesmente diziam, Empregado, I d. É o que quer que esteja indo do objeto, e então eles usam essa variável para realmente fazer essas tarefas menores, Certo? Então, quero dizer, é um padrão diferente. Você faz aquele com o qual se sente confortável. Eu acho que parece mais limpo quando você faz a variável e, em seguida, você faz suas tarefas com a variável em vez de referenciar a propriedade e os objetos ao longo do tempo. Mas isso é bom. Então saiba que temos a localização ah ou bem, na verdade, precisamos de alocação para os funcionários. Isto é alocações para o empregador. Na verdade, precisamos da alocação de partículas para o tipo de folha. Então aqui atrás obter alocações por funcionários e tipo de licença. Então nós pensamos fora tudo já assim por funcionários e do tipo. Então este requer dois parâmetros, que seria o empregado que eu daria. Isto não é muito explícito. Então precisamos voltar e refratá-lo, então é muito explícito. E sabemos que estamos lidando com o empregado I D. Tudo bem, então nós apenas encontramos essas mudanças. Se eu fizer isso na interface, tenho que fazê-lo no repositório. Refiro-me a estas modificações enquanto ensino, porque quero mostrar-te que escreves a coisa. Funciona bem. Mas em um cenário diferente, aliados que tudo o que você poderia ter sido, você sabe, um pouco mais explícito ou um pouco mais limpo em sua corte, e então eles vão acabar fazendo essas mudanças à medida que você avança. Então você sabe que você precisa ser flexível, e é bom quando você entende o que você está fazendo, o que foi feito sobre por que você precisa mudá-lo. Essas coisas vão torná-lo imparável. Então não, fizemos esses ajustes em então eu posso prosseguir também sendo mais explícitas idéias de funcionários. Alguém mais quer vir e olhar para o meu núcleo. Eles não teriam que adivinhar de qual idéia estou falando porque já é meio cuspir para eles. Então eu estou passando o empregado que eu d, mas também preciso dos tipos de folhas. Eu quero dizer tipo de licença é igual a on. Em seguida, recupere esse tipo de Leave I d do objeto de solicitação de licença, mas eles saem. Solicitar que a idéia tipo de licença em DSO empregado I d vírgula tipo de licença e eu realmente deveria dizer Deixar tipo I D. Aqui. Tudo bem. Deixe o tipo I D. Então saiba que temos a alocação que este empregado tem para o pedido que está sendo feito. Posso prosseguir para ver que sua alocação deve saber Seja o número de dias fora na solicitação menos o Desculpe, o número fora estes em sua alocação a menos que o número fora estes em sua solicitação para que eu possa ver um local em que é número off dias não é igual do mesmo valor, que é número off dias menos deixar solicitações pontos em, então. Acho que tenho um campo que diz que o número de dias de folga é solicitado. Eu não sei. Portanto, a solicitação de licença em si não está rastreando o número de dias solicitados. Só sabe a data de início no final. Isso significa que eu vou ter que fazer um mês dedão descobrir essa parte, certo? Então eu posso determinar isso dinamicamente. E usarei o código que escrevi anteriormente ao criar a solicitação de licença. Então antes teríamos feito algo onde tiramos esse número. Estes pediram e fizemos os cálculos. Posso repetir isso. Agora esta cópia. Volte para a minha ação. Então Vier D é requisitado. Então, você vê, nós temos algumas pequenas operações. É depois de ir, então temos os dias solicitados. Então isso será licença. Peço isso e um pouco menos. O pedido não iniciar a dívida. Tudo bem, então mais uma vez, você poderia ter colocado isso em suas próprias variáveis e então feito a operação usando as variáveis. Sabe, cabe a você nessa altura. Eu sei que eu tenho o número de dias solicitados do que o Normal alocado vai ser esse número. Meu nariz lá é solicitado em então, depois de fazer esse ajuste para este campo, são este valor ano em? Então há uma maneira mais fácil de termos feito isso. Eu poderia ter dito menos igual a on. Então estes pediram. Então isso é um bom embora nós que c Sharp Alozie para escrever essa declaração onde ele está basicamente dizendo que o que ele diz menos igual, Ele apenas implica que qualquer valor está neste lado menos este valor em, então qualquer que seja o bem-vindo é armazenados nesse valor. Então essa é uma maneira alternativa de escrever essa declaração. Então o que vou fazer é escrever dos dois lados. Então, se você é um iniciante veria afiada, então você pode não estar familiarizado com esta técnica, então tudo bem. Então, essa é outra maneira que você poderia alguma vez neste tópico e ver Visual Studio chegou mesmo, você sabe, meio que sugerindo que ele seria sempre assim, tudo bem, então depois de fazer esse cálculo e remover ou reduzindo o número de dias fora que não estão disponíveis pelo número off é solicitado em, em seguida, sentando todas as bandeiras em, em seguida, atualizando o pedido de licença, Eu só vou dizer alguém atualizado para realmente decolar este ano porque eu sou não usá-la. Então, às vezes, você não quer declarar disponível. Você não está usando nesta situação. Não preciso dessa variável. Então eu estou fazendo a atualização do relatório de solicitação de licença, e então eu vou deixar um local não otimista porque eu acabei de fazer alterações no registro de alocação. Também em, em seguida, a entidade ou o objeto e passando é alocação. E então, uma vez que tudo isso é feito, então redirecionamos o índice da loja fora do curso. Se for rejeitado, então com sua cidadela cai e nada muda para suas alocações e remover esta variável não utilizada também em, então podemos tentar novamente para que possamos tentar com um funcionário que fará uma solicitação de licença. E então vemos a mudança na alocação depois que ele é aprovado estão aqui eu estou com o usuário criando a busca alavanca para férias. Lembre-se que as férias por padrão, pelo menos do meu lado, foi definido para 15 dias, se usado um valor diferente do que você só precisa estar cansado fora do vale que você usou. Mas vou pedir de 26 de janeiro a 30 de fevereiro. Tudo bem, daí? Domingo de 2016. Então deixe-me torná-lo um pouco mais realista. Então, do 27 ao 30, são cerca de três dias. Eu peço a licença, tudo bem, e isso foi bem sucedido. Então, basta fazer login como nosso usuário administrador rapidamente, e eu só vejo as senhas. Eu não tenho que re tipo todas as vezes. Não, vamos voltar para a alocação de licença. Basta verificar ou que não mostra as alocações de licença. Desculpa ter perdido o rumo. Isso deveria estar indo para os empregados. Então posso ver os detalhes para que este empregado tenha 15 dias de férias. Vamos ter isso em mente. Esse é o número desses que eles alocaram. Então eu vou e vou deixar inscrições para gerenciar o Noah. Você tem uma nova crítica, Andi. Então, uma coisa que eu provavelmente gostaria de fazer é ordenar os pedidos de licença na ordem fora da batida solicitada para que os mais recentemente solicitados flutuem para o topo. Certo? Então eu vou pedir isso mais tarde, ou eu vou desafiá-lo a fazer isso, ordenando reordenação no controle. Oh, isso diminuiu nos dados, mas eu vou saber apenas ir para a revisão e então eu vou aprovar. Então saiba que está aprovado. Andi, eu sei que é aprovado para justiça usuário, que ste em B t. Não é ser, eu acho que é acumuladores que eu usei, mas eu vou olhar para o perfil do usuário de teste. Olho para os detalhes e não, estou vendo que a licença de férias não é reduzida. Assim, a próxima vez que fizerem um pedido de licença, eles têm até 12 dias a partir dos quais para mim esse pedido. Então, se eu tentar esta solicitação novamente, lembre-se que colocamos em alguma validação que as solicitações nunca devem exceder a alocação. Alguém para tentar solicitar a mesma licença de férias com o mesmo usuário. Mas desta vez eu vou aplicar por um mês no valor de férias e selecionando para ser que claramente exceda 12. Esses pedidos saem. Então pegamos nossa flecha. Você não tem dias suficientes para esta solicitação. Tudo bem, isso é bom aspecto. Até agora, eu quero fazer mais uma mudança em que é o dedo do pé. Remova esse botão de revisão. Na verdade, vou remover a habilidade de “Deixe-me voltar para deixar as inscrições”. Vou remover a capacidade do usuário administrador para alterar o estado fora da solicitação de licença . Então você sabe o que é isso mesmo que seja aprovado? São ejetados. Quando eles clicam em revisão, eles ainda têm acesso aos três botões. Bem, o mais importante, eles ainda têm acesso ao aprovar sob botões de rejeição, que eu não quero que de volta em meus detalhes vista na seção ou em que Dave que está carregando esses botões. Eu posso apenas colocar em se declarações que eu vou dizer agir, assinar se e, em seguida, chamar o modelo em, em seguida, disse que aprovado é equivalente a saber. Assim, a única vez que eles devem ser capazes de aprovar ou rejeitar é quando a bandeira aprovada está em um estado nenhum, que significa que ele precisa ser dito o verdadeiro ou falso. Então eu vou aceitar o HTML associado a esses botões que estão sendo exibidos. Caso contrário, foi apenas exibir de volta para alugar assim ou não vai. Caso contrário. Se estiver em um estado sem, então você exibirá isso, mas ele sempre mostrará que a batalha nasceu, modo que é uma boa maneira rápida de sair. Controlar o quê? O usuário administrador, o que qualquer um é capaz de fazer com base em certas condições e regras de negócios. Então, com essa modificação feita, se eu voltar para este discurso, que um pedido de licença já aprovado e eu atualizar, então tudo o que eles verão é o botão da lista de batalha para que eles não vejam a aprovação e rejeição porque já está em outro estado. Mas e isso é quase um motivo de preocupação. Então, outra sugestão visual que podemos colocar é colocar como uma pequena seção no topo que mostra está pendente. Já está aprovado? Porque eles estão vindo para cá? Eles podem ter esquecido o estado em que ele estava quando eles clicaram no botão de revisão. Então você quer dar-lhes outra dica visual? Tudo bem, então com isso em mente, eu tinha feito alguns ajustes nas interferências, e eu vou te explicar exatamente o que eu fiz. Eu fiz isso fora da câmera, mas eu quero desafiá-lo para talvez os pontos que o vídeo replicou, mas eu vou explicar exatamente o que está acontecendo de qualquer maneira. Então eu coloquei em uma declaração no topo fora dos detalhes que você disse, se o modelo não é igual a Oprah voz equivalente a saber, Desculpe, semelhante ao que eu não fiz aqui com os botões. Então estou vendo se é igual interno, que significa que está em um estado pendente. Em seguida, exibir no Dave com aulas de bootstrap. Alerta no aviso de traço de alerta Então você sempre pode ir para o reforço da documentação e olhar para a documentação sobre alertas. Tudo bem, em apenas trazê-lo para cima rapidamente, nós fomos para o pé. Obtenha componentes e alertas de ponto com bootstrap aqui. Este é o exemplo que eu selecionei. Então eles são alertas simples onde, você sabe que você pode apenas imprimir como dá colorido ou recipientes coloridos com texto, e eles têm as cores diferentes, o mesmo sucesso secundário primário, todas as cores, paletes que você tem disponível para botões e tudo mais. Então você tem também para o alerta. Tudo bem, então foi tudo o que eu fiz. Eu só disse, se está em um estado sem, então me dê um alerta que pareça um aviso. Então isso é um alerta laranja. Me dê um cabeçalho. Isso é uma aprovação de gastos, e isso é uma necessidade de puxar, em seguida, uma pita que está imprimindo a etiqueta antiga, em seguida, o nome da pessoa em, em seguida, uma pequena linha. É o HR Tug ligado, então a exibição do D pediu. Então esse cara, a mesma informação que eu tinha no cabeçalho. Inicialmente, estou apenas colocando de dentro. Dê com alguma arte de colorir, então eu estou fazendo contexto. Também tem a instrução para o nulo, em seguida, ter uma instrução para True on. É muito bonito vê-lo. Eles têm, exceto que desta vez é sucesso direito no verbo ege pode ser um pouco diferente, então não, então não, ele é aprovado por em vez fora aprovação pendente. Então o chefe dos EUA é aprovado por em então se nenhuma instituição é verdade, então nós temos uma. Esse é o perigo dele. Isso nos diz que rejeitou em praticamente uma informação parecem para os funcionários. E então se olharmos para o que isso nos mostra, se eu for para o aprovado e outros abri-los em guias separadas, se eu olhar para um aprovado que eu vou ver um alerta verde no topo, se eu olhar para um rejeitado, então eu vejo que alerta vermelho no canto superior direito e rejeitado por seu espaço em branco. Deve ter o primeiro nome e sobrenome desligados. Quem quer que esteja a rejeitá-lo. Mas nosso usuário administrador não tem nome, sobrenome no banco de dados, então é por isso que está em branco. Mas funciona como esperávamos, dedo e depois voltamos para a lista. Sabemos que se houver algo pendente, 43. Visualizações de solicitação de Empregado - Empregado Leave -: Ei, pessoal, bem-vindos de volta para esta lição. Eu disse que estaríamos montando a tela que nossos funcionários vêem quando querem olhar para suas alocações e seus pedidos de licença até o momento no DSO Eu já construí toda essa interface inteira e toda a funcionalidade. Bem, eu deixei um pouco para você, mas eu estou mostrando a você o que nós vamos estar olhando para o Tribunal 4 em. Eu estava trazendo sistematicamente todo o código que foi escrito para suportar o que está sendo exibido agora. Agora eu fiz isso assim por duas razões. Primeiro, eu quero desafiá-lo a realmente escrever o código você mesmo com o mínimo de orientação de mim possível, porque é aí que você vai realmente brilhar. Eu também acho que isso é relativamente simples e deve provar o suficiente de um desafio para se você é um iniciante. Mas deve ser divertido para você tentar e por conta própria. De qualquer forma, eu vou estar andando pelo tribunal que foi escrito no dia. Você pode pausar o vídeo em diferentes períodos e copiar fora da quadra como você sente a necessidade de fazer agora. A primeira modificação em. Bem, eu quero dizer as modificações que Leo Ph. Mas o primeiro 1 para o propósito deste ouvir, é que eu adicionei o link de navegação à nossa nova ação, que é a minha licença. Então eu acabei de adicionar um novo item nunca no controlador de consumo como Acri solicitar licença. Mas desta vez a ação é a minha licença no texto é a minha licença. O outro ajuste em meio é que eu mudo o verbo ege para as aplicações de licença caiu para dizer solicitações de licença em vez disso, que se encaixa mais com o que realmente temos. Então lá temos a nossa ligação de navegação com a nossa Miley Fitch. Andi, eu já teria sido amada. Então o fato é que você só é capaz de obter este registro de medo de fogo sendo porque lembre-se que teria autorizado todo o controlador. E depois que você estiver logado, você pode clicar em minha licença. Em seguida, determinamos contextualmente quem você é e mostramos apenas suas informações. Não fora do curso. Para que informações como esta fossem exibidas, tivemos que criar um modelo de visualização que seria capaz de armazenar os dados e, em seguida, renderizá-los na tela. Vou levá-los ao modelo de visão que criei, então criei uma nova classe dentro dos pedidos de licença. VM neste é chamada Colaboradores Leave. Exibição de Solicitação. É um múltiplo, mas é para isso que serve. É uma vista de solicitação de licença, modelo de visualização para funcionários logo em seguida dentro desse modelo de visão. Eu tenho uma lista fora de licenças alocadas e eu tenho uma lista fora de pedidos de licença. Tudo bem, então você pode ver. Isso é desligado. A seguir, nossa nova ação chamada Minhas Folhas. Então, dentro do controlador de solicitação Deixar, criei uma nova ação chamada Minha licença. Tudo o que realmente estamos fazendo é determinar quem está logado, e já fizemos isso antes. Então eu recebo os funcionários ou o usuário que é amado atualmente estar em. Então eu vejo Bem, eu apenas armazenar o empregado I D, que eu então usei para recuperar as alocações de relatório de alocação de licença, obter alocações por funcionários com os funcionários que eu d em. Então eu faço o mesmo para os pedidos de licença. O relatório de Solicitação de Saída recebe solicitações profundas dos funcionários, o que não estava lá antes. - Não. Então, a fim de obter os pedidos de licença para o empregado em questão são os funcionários cujo salto solicitado Definitivamente quer voltar especificamente. O que eu fiz foi ir para a minha interface para um repositório de solicitação de licença e criar uma nova função . I coleção Lee solicitar obter pedidos de licença por funcionários aceitando um perímetro corda fora empregado empregado I D. On. Então eu implementei na classe repositório real em. Tudo o que realmente está fazendo é apenas pedreira pronta e a mesma pedreira que o achado. Além disso, é quase vê-lo encontrar todas as pedreiras. Então eu poderia ter escrito isso para encontrar tudo onde? Então deixe-me apenas reescrever que encontrar tudo o que é basicamente retornando todos esses dados de qualquer maneira , em então eu digo Docked foram então, em seguida, o ponto onde não está apenas filtrando sobre o empregado solicitante eu seria igual à idéia de que ele está recebendo através do parâmetro. E assim o que ele faz é retornar todos os pedidos de licença que este funcionário em particular em mais especificamente a pessoa foi permitido atualmente bin todas as solicitações que eles já cumpriram. vestido lateral fez aquele ajuste no meu cordão. Pode tirar isso. - Não. Depois de sempre tratado em alocações e todos os pedidos fora. Eu então vou em frente e faço o mapeamento. Então estou mapeando o que estou criando. Já acreditei no modelo de alocação de funcionários. Desculpe por eu estou mapeando o dedo uma lista fora. Deixe a VM de alocação passando no objeto proveniente ou consulta de dados ativada. Eu estou fazendo uma coisa semelhante para os pedidos de licença em. Em seguida, carrego o modelo para que eu crie uma variável para o modelo ou um objeto fora do tipo funcionários deixar solicitação vista B m em que, Estou passando a licença Alocações em em, passando as solicitações de licença em. Então eu estou retornando a exibição com o modelo Não, para criar a exibição. O que eu fiz foi eu clique direito ver como de costume Clique em Adicionar em. Então eu carreguei um modelo de lista, mas no passado você já viu isso onde temos um modelo personalizado em. Sabemos que se as propriedades nesse modelo não são as propriedades simples que nada vai obter será realmente renderizado na tela para esse modelo. Então, neste caso, temos de classe tipos. Nada realmente seria renderizado. Então, o tipo de tio da corte enganou o sistema. Eu uso a classe modelo, fora do tipo licença solicitação VM. Então, isso é deixar a VM de solicitação ativada. Então eu adicionei essa visão em seguida a visão que foi adicionada. Eu posso distrair. Podemos ir para ver que teria nos dado uma tabela de dados ou uma lista de tabela. Com tudo fora da alavanca Quest VM sente como sabemos que o modelo de lista faz. Então, eu altero o modelo a partir do tipo inumerável off licença solicitação VM toe meu novo modelo de exibição , que é funcionários deixar solicitação exibir VM e, em seguida, para a tabela. Eu mudei todos os rótulos porque eu tenho certeza que nos lembramos que quando você faz isso assim, os rótulos vão parar de ser gerados ou o código gerado vai começar a dar cidras era hardcore que os títulos em vez disso em. Então eu me lembro que nos quatro cada um era para cada item no modelo eu sou Gina que dedo do pé para cada item em pedidos de folha de ponto modelo. Então estes são os cabeçalhos. E, claro, eu me certifiquei de colocar no meu i d para dados tbl para que esta tabela se pareça com a tabela de dados que viemos a conhecer e amar. Então estes são os cabeçalhos para a minha mesa e, em seguida, estas são as colunas. Então, para as colunas, mantive com a correspondente na cabeça. Também deixar o tempo muito nós deixar tipo. Esse nome começou Muchas para começar lá para acabar com o estado de aprovação solicitado. Eu reuso a declaração de sobre Previ ous admin view. Então eu só disse se ele é aprovado e mostrar sucesso se não é um folheto rejeitado Andi em Caso contrário mostrar dependendo de movimento. Depois de tudo isso, eu tenho uma ação dentro desses rebatedores de ação. Na verdade, coloquei algo lá. Isso é câncer. Os pedidos de câncer porque essa é a única ação que eu quero que um empregado seja capaz realizar em seu próprio pedido de licença. Certo? Você fez o pedido. Você pode cancelar. Hum, sim. Quero dizer, mesmo que já tenha sido aprovado, ainda não foi tomado, então você pode cancelar agora. Eu estou desafiando você a colocar nessa funcionalidade como você tem que fazer alguns dados ser trocas . Você vai ter que allo eles para clicar neste botão, escreve-los para uma ação chamada Cancer Request, que está tomando o I d para o item de solicitação em. Então você vai ter que escrever alguma lógica para ver que o flug que fica com o nosso não é cancelar. Então isso significa que você vai ter que fazer um banco de dados alterado para incluir alguma forma de bandeira que diz que é um pedido cancelado não são assim. Então você tem que mudar essa bandeira para Sim, ela está cancelada. Então você vai ter que fazer algum Musto re adicionar aqueles dias alocados, também. A alocação original. Direita em. Então, fora do curso, você só os adiciona se a vista se a licença foi aprovada. Por isso, estou a dar-te um cenário onde vais ter de fazer o teu próprio negócio. As regras estão em espera. O cancelamento pode acontecer no sistema. Então, se alguém fez um pedido que não foi aprovado, ainda está pendente, então obviamente, eles não deveriam voltar para a Edie da alocação se foi aprovado, Isso significa que a alocação foi deduzida, e então, se eles puderem, então eles precisam recuperar seus dias. Lógica difícil é que se ele é rejeitado e você provavelmente não veria os cancelamentos agora , a única lógica que eu tenho para determinar as circunstâncias em que eles vão ver a opção para o pedido de câncer é que eu estou vendo se o que o iniciou ou se a data inicial para esta solicitação de licença for menor do que a hora do dia que não significa que você ainda não iniciou a licença . Tudo bem, então o início fez Ondas. Estou explicando que estou vendo que eu tenho um erro lógico aqui. Então, a data de início, se é maior do que o tempo não significa que se senta no futuro, que significa que você ainda não começou. Ele ainda assim vê, é por isso que de acordo juntos é bom. Então eu tenho que mudar isso. Se a data de início for maior que não, então posso cancelar. Isso significa que o dia em que ainda não chegou. E então, como eu disse, se ele for rejeitado, então eu não preciso permitir que eles para o Kansas, entender para usar esta oportunidade e nessa linha, ou que bit off lógica e ver Andi ou melhor, Eu vou dizer são assim É ou que a data de início ainda não veio ou pontos de item aprovado é equivalente a quedas na outra circunstância e ver outra área lógica, Eu devo dizer, se é igual a verdadeiro, certo? Então, se ele for aprovado, então eu posso cancelar em se ele não começou que eu posso cancelar. Se a data de início já chegou, então temos dedo do pé. Queremos que o empregado cancele. Se ele for rejeitado, então não permitiremos que eles cancelem. Não faz sentido nesse ponto. Para que alguma lógica que estou usando para mostrar a solicitação de cancelamento não sejam assim. Mais uma vez, eu vou para Olá, vocês dois, ou eu estou desafiando vocês a criar a ação para o cancelamento. Não, isso é para a tabela de dados. Na tabela de dados acima. Eu tenho outra seção onde eu estou mostrando a alocação de licença. Então eu tenho o título, as alocações IV, e então eu estou usando uma classe bootstrap chamada Jumbotron para este Div. É por isso que dar a ele aquele cinza de volta crescido olhando, hum , efeito sobre, então lá dentro, eu estou usando cartões semelhantes que pensei que teria usado. Na verdade, só estou reutilizando o tribunal do painel de administração. A única coisa que removi foi a habilidade de editar a alocação. Finalmente, modifiquei a ação de criação. São o post criar ação em nosso controlador, onde depois que um funcionário criou o pedido de licença, lembre-se que estávamos navegando ou literário Derek diretamente para a página inicial fora de todo o aplicativo, que Eu não queria. Então, em vez disso, deixei que fosse redirecionado para minha licença. Então, depois que eles o enviaram com sucesso, em seguida, ele volta para o patrono, eles sua alocação atual, bem como seu núcleo, e desencadeou pedidos Lee que não estão pendentes. Tudo bem, servir o discurso mais uma vez aqui é que minha seção de localização com o grau Jumbotron mas gemeu com nossas alocações de licença listadas, depois os registros de licença mostrando todas as folhas. Tomados saber. Quando olhei para esta tela, vi que temos outra era lógica acontecendo aqui, então a data de início já passou. Tudo bem, então isso está sendo feito no dia 12 do general, que significa que nosso pedido de licença para eles começarem no primeiro que já desmoronou então. Isso está em uma costa estadual aprovada, mas a opção de solicitação de câncer ainda está lá. Então fomos depois de encontrar seu dedo do pé declaração. Certifique-se de que não estamos substituindo quando o nosso dólar porque eu vi se ele é aprovado, em seguida, mostrou pedido de câncer ou se ele é passado um começo. É neste fora. Essas condições está avaliando como verdadeiro e, portanto, foram recebendo os botões. Só precisamos consertar seu depoimento para garantir que não consigamos que alguém o conserte, e estou mais uma vez desafiando você a consertá-lo. Não é assim tão difícil. Você pode apenas usar algumas permutações e começou sapos, mas eu vou ter consertado. Então, com isso, terminamos com este modelo praticamente na próxima lição será apenas uma revisão. Onda Faça o check-in para obter hub entre não e o frango para se levantar. Estou desafiando você a implementar o recurso Cancer Quest, bem como a seção de comentários. Pedidos de licença de quatro horas. Um pouco mais de contexto em torno dos comentários é que em funcionários, ao submeter Oliver Pergunta, ser capaz de escrever em um comentário para dizer, Você sabe, Eu preciso deste tempo para fazer X y Z em outra seção para a rejeição onde o administrador ou quem está fazendo a rejeição, hum deve ser capaz de ver, É por isso que eu estou rejeitando o pedido. Mais uma vez, essas duas atividades exigem algumas alterações no banco de dados. Algumas atualizações de modelos de exibição em algumas atualizações de exibição em Estou ansioso para vê-lo fazê-lo por conta própria. Sinta-se à vontade para me contatar. Se você precisar de mais orientação, eu vou fazer isso fora da câmera, e então nós podemos apenas rever essas mudanças na próxima lição. 44. Analisar e adicionar mudanças no GitHub: Ei, pessoal, bem-vindos ao vídeo final deste modelo aqui. Vamos rever toda a palavra que colocamos e a galinha nas nossas mudanças para nos levantarmos agora. Um lembrete rápido do que fizemos. Começamos configurando nosso uso administrativo para licença. Mas baseado no que está na tela, eu explico exatamente o que fizemos. Nós configuramos o formulário de solicitação de licença para nossos funcionários. Andi, fiz algumas modificações desde a última vez que filmamos. Originalmente, eu tinha os formulários Dave para ser dito toe chamar MB. Traçá-lo. Expandi-o para 12. Portanto, não há preenchimentos da esquerda para a direita de todo o recipiente. Também bateu e bloquear para ambos os pedidos. Deixe um na parte de trás para o botão listar ativado. Eu nos fiz como mudança para o objeto de dados onde eu incluí um campo para iniciado então eu teria modificado a classe de dados e incluído uma coluna string chamada Request Comments. É assim que eu chamo isso. Você pode chamá-lo do que quiser se você optar por incluí-lo no seu também. Então eu incluí esse campo na classe de dados e fora do curso. Se eu colocá-lo na classe de dados, então eu também colocá-lo no modelo de exibição. Eu também teria dado a ele o nome de exibição Employee começou em Die. Dê-lhe um muçulmano off 300 no campo que eu incluí era um para cancelado. Então eu desafiei você a colocar na funcionalidade de cancelamento Eu coloquei em um campo que é um valentão, e quatro cancelado que fora do curso, quando o usuário é ou os funcionários fazendo seu pedido de licença seria definido como quedas por padrão. E na ação de solicitação de chanceler, que eu criei no controlador de solicitação de licença, eu teria dito apenas me dê a idéia fora do pedido de licença no set que flag como true em Então execute a atualização em, em seguida, volte para o meu sair. Então essa é basicamente a função de chance no pedido. Eu não fiz nenhuma alteração na ação de criação sobre como eu construí esse objeto, porque realmente, se o objeto for criado, ele será por padrão cai. No entanto, se você se sentir mais confortável, você pode declarar explicitamente que cancelar esses iguais ou false. Eu não incluí, entanto, no entanto,os comentários no edifício fora deste objeto. Então, se eu ir para o formulário que é criar que está na minha exibição de criação em vez da pasta de solicitação de licença em vez de vistas, então eu vejo que eu tenho o campo que é uma área de texto em Este é um SP para comentários de solicitação . Então, parece praticamente como qualquer outro ah, forma rubi que tivemos. Exceto que eu não estou usando entrada, mas eu estou vendo área de texto definindo a sensação que ele é para em dar a ele esse controle de formulário. Assim que clicarmos em enviar, então este bit off dados, o que quer que seja inserido aqui também será enviado para criação. Então isso significa que eu preciso saber incluir esses dados dentro do objeto que estou construindo para criar um novo pedido de licença para que possamos fazer isso juntos. Onde eu vejo comentários de solicitação no objeto é igual toe modelo pontos solicitar comentários, e lá vamos nós. Então, quando enviamos uma nova solicitação de licença, em seguida, essa solicitação de licença será gerado com conteúdo para os comentários. Se estiver lá, não o tornei obrigatório. Talvez eles queiram fazer uma vinda. Talvez não saibam. Portanto, não é um campo obrigatório agora para a nossa deixai-vos. Fiz alguns ajustes. Adicionei uma coluna e coloquei o pedido de capela-título. Então eu adicionei outra coluna para a seção de quatro loop ou o para cada seção de loop onde bem um eu adicionei, e uma nova condição para as declarações que nos dão os diferentes brotos para o status. Então eu adicionei um para cancelado se cancelado. Então cancelado neste campo está o nosso ouro. Não é um ouro experiente, então eu posso apenas ver se cancelado ou se não cancelado. Eu não tenho que instalá-lo ou levar em consideração. Ah, possível sem valor. Então, eu estou dizendo que se o item tem um estado cancelado significando cancelar estes em um estado de valor verdadeiro, então eu quero imprimir o movimento secundário com a classe secundária. Desculpe, então vejo a palavra cancelada. Então eu só coloquei mais na frente da declaração se que tínhamos originalmente. Então agora este é o nosso novo bloco If em então para o botão cancelado, vamos ver. Cada um deles me contatou e me disse que a forma como eu tinha as regras de negócios foram incorridos. Então eu tive que fazer uma mudança. Então, tudo o que eu estou verificando agora é se o pedido de licença não foi cancelado na data de início ainda não chegou, que significa que se eles aprovaram, então não podemos arriscar novamente para que os botões de cancelamento não apareçam se for ou se o mesmo, se não for, mesmo que ele não tenha sido aprovado ou rejeitado em se ele está gastando enquanto isso começou foi passado, então ele não deve ser elegível para cancelamento. Então, de volta sobre a minha página de licença, a vontade adicional a sugestão visual adicional é o estado cancelado. Portanto, note que esta data ainda não chegou. Mas eu cancelei. E para que esse botão não apareça novamente. Mas se eu fizer um novo pedido de licença agora, então esse pedido de câncer virá. Não, eu não vou passar muito tempo escrevendo muito tribunal. Você pode pausar o vídeo em diferentes pontos e copiar o código-fonte que você quer dizer você ajudaria. Mas eu quero a China e você mesmo escrevê-lo. Não, o que vamos fazer é checar nossas últimas mudanças para nos levantarmos. Então, eu só vou entrar na minha solução. Especialistas no topo, fora da árvore de arquivos. Então eu vou clicar com o botão direito, em seguida, Ir cometer. Em seguida, depois de clicar, comete eu tipo de Sra So alta espirituou a digitação e apenas colocá-lo em já em. Então eu acho que esta carruagem e ver cometer tudo e afundar. Lembre-se que cada pai que você teria criado ou modificado seria incluído. E se você tinha um arquivo antes e provavelmente renomeado ou excluí-lo e você veria com um golpe através de um leão, que significa que ele será removido da próxima iteração fora, sua fonte marcou. Então entenda, para cometer tudo e afundar. E isso foi feito com sucesso. Então eu estou no meu perfil do gueto e eu estou olhando para o meu repositório, e eu estou vendo que apenas alguns minutos atrás para mim, o frango com sucesso em Eu só quero parabenizá-lo por ter chegado tão longe. Fizemos um pouco de trabalho. Você aprendeu. C afiado. Você aprendeu desenvolvimento da Web. Você aprendeu a usar bootstrap Four Elements hotel incluem Jake Worry Um, você I elementos dentro de seu casaco você fez um pouco. E você deveria dar um tapinha nas costas. Como sempre, você pode se sentir livre para me alcançar. Algo não está rangendo com você em, você precisa de mais assistência para completar essas tarefas. De qualquer forma, se houvesse lacunas no código-fonte como você sabe o que eu exibi na tela versus o que realmente fizemos juntos, então o código-fonte será fornecido a você. Eu sempre forneço os faturamentos de guitarra onde você pode ver essa versão exata fora do código-fonte para a lição em, então você será capaz de replicar o que você precisa. Como sempre, estou sempre aqui para ajudar. 45. Pré-visualização de tema AdminLTE: Olá, pessoal, bem-vindos a este novo modelo onde vamos reformular toda a nossa candidatura. Agora na tela, eu tenho Ah, o Leo com quem temos trabalhado até saber. Esse é o Leo que nos foi dado por padrão pela nossa estrutura de projeto. Neste perfeito, funciona bem. Nós temos que colocar em links de navegação, nós temos que cargas onde temos que essas margens para os lados em tudo parece bom. Mas então eu quero dizer, às vezes eu quero um pouco mais possuir assim neste modelo será mudar sobre este cargas para o LTTE administrador. Leo também estará olhando para como podemos suportar vários layouts, você sabe, para que uma página possa usar um layout. Em outra página é uma carga maternal ou tudo. Esses usam um layouts totalmente diferentes. Então nós vamos estar transformando deste Sloat para algo mais parecido com isso que é o administrador LTTE Leo Andi Eu quero dizer, agora ele parece muito jogar. Isso é bom. Mas então, como você pode ver, a porca mantém a esquerda. Temos alguns ícones, então cada botão temos ah DACA bar ble em. Temos um bom porteiro, então vamos trocá-lo para que você possa adicionar seus próprios sinalizadores. Você vai junto, mas eu vou mostrar-lhe o básico por trás de mudar ou fazer grandes mudanças no visual e sentir fora do seu site. 46. Crie uma nova página de layout: Ei, pessoal, bem-vindos de volta a esta lição. Vamos rever a nossa página de layout e observar as coisas mais importantes que precisamos prestar atenção ao criar um novo pH Leo. Nenhum exame exato do Littlepage existente deve ser território familiar. Podemos encontrá-lo dentro fora ou visualiza pasta ir para compartilhado. E, em seguida, temos o nosso layout literalmente chamado sublinhado Liotta dot CS html em seguida, este Leo pH e entender para dissecá-lo. Em primeiro lugar, ele é formado em cima da estrutura HTML básica ou esqueleto, como eu chamo, onde temos ou tags HTML ou cabeça puxão on ou tempo corpo. Tudo bem, então basicamente tudo cai no mesmo HTML onde estamos declaração médica em html, cabeça de tag, corpo em DWI. Feche cada etiqueta à medida que avançamos. No entanto, você pode ver que há muita coisa acontecendo entre cada rebocador e acima mesmo do tipo de documento. Temos algum cordão de “C afiado”. Então, no topo da página, temos toda a nossa dependência é, então precisamos que a biblioteca é ser rede cabo fora identidade. Também precisamos incluir nosso espaço de nome de dados para que possamos incluir nosso login nos modelos de gerenciador de usuários para nosso layout. E se você se lembra, nós os usamos para algumas operações ainda não. Então temos a nossa dependência é ou C afiada dependência biblioteca está no topo. Em seguida, começamos o nosso HTML regular. Podemos inserir dados dinamicamente. Então vemos aqui onde dissemos ver dados é igual ao título em ou ver título de dados em. Em seguida, nós upended com qualquer nome do aplicativo está em. Então, se você quiser saber mais sobre este título de dados vista, se olharmos para um off ou views e eu vou apenas deixar alocação e olhar para talvez listar funcionários. Quando abrimos isso, você vê que estamos configurando você título de dados é igual a alguma quantidade, algum texto pouco fora que leva que foram gerados automaticamente em então. Este texto, combinado com o nosso texto estático, é o que aparece no batedor do nosso navegador. Então isso significa que se eu quiser uma lista funcionários para olhar mais amigável ou legível, eu poderia apenas nos colocar espaço lá em quaisquer modificações que eu atender esta string, é upended dedo do pé todo o título que é renderizado para a tela Então é isso que pode fazer o seu títulos dinâmicos. Nós também continuamos com a inclusão fora de todos os quatro stand. Ela estava em algum lugar lá antes de alguns que adicionamos depois. Então, por padrão, você tinha um botão bootstrap em sua versão. Pois neste momento, teríamos incluído nossas tabelas de dados ou fundos. Além disso, um, cessa em também r j consulta você I CSS e, em seguida, no final de tudo isso, temos um link para o nosso próprio arquivo CSS. Devemos precisar dele em algum momento? conteúdo do corpo é bastante direto. Temos um cabeçalho lá dentro. O cabeçalho é realmente a barra de navegação. Então cabeçalho do que navegação e, em seguida, ou barra de navegação é uma navegação bootstrap. Adicionamos alguns links no. Em seguida, exibimos contextualmente algumas coisas com base na pessoa que está conectado. Se eles estão em funções administrativas estão em uma função administrativa, então eles verão certas coisas que o usuário regular não veria em. Então, depois do nosso cabeçalho, vamos para o nosso recipiente que é o nosso corpo, certo? E, em seguida, dentro do corpo temos ah, alguma seção chamada significa em seguida, temos esta função chamada render corpo, que é realmente renderizar o conteúdo ou a visão para a tela. Depois disso, temos ou rodapé em. Tínhamos mudado as votações que leva a ser dinâmicas para o ano em diante. Então temos nossos arquivos de script, inclusive agora. A razão pela qual eu lhe dei essa turnê é que isso forma a base sobre a qual Leo pH precisa ser criado. Eu, na verdade, para backtoe apontar, e às vezes esta seção é esquecida porque é tão discreta. O que esta seção de renderização nos permite incluir scripts dentro de nossas visualizações. No dia, ele será renderizado depois de todos os outros roteiros sobre a arte Peach. Então uma vez, como eu estava vendo, precisamos saber isso quando eles estavam criando outro pH Leo. Porque eles são certos elementos aqui que metade do dedo do pé se repetem, por exemplo, renderizar corpo se há mais no corpo do que navegação, renderizar corpo se há mais no corpo do que navegação,você também vai sentir, porque isso é o que realmente torna o que está no ver dentro do contêiner geral . Então, para criar uma nova página Leo e tê-lo reconhecido pelo aplicativo, o que precisamos fazer é bem, um ir para compartilhado no compartilhado é o melhor lugar para colocar sua eles podem realmente colocá-lo em qualquer lugar que ele quer. Mas então só faz sentido colocá-lo onde a estrutura do projeto sugere. Você coloca isso para que nós vamos para compartilhado. Podemos clicar, adicionar, então eu vou apenas criar um novo item. Então, para o nosso arquivamento foi selecionar Razor Leo ensinou no dia em que fui mudar este lado. É Eles estarão usando um tema LTTE administrador quando começamos. Então eu só vou chamar este anúncio significa LTTE. Então não há nenhum erro sobre o direito em. Em seguida, clicamos em assim são arquivo resultante é muito simples. Como você pode ver, é literalmente aquele esqueleto html. Eles só estão tentando nos dar um pouco de dinamismo para o título em Eles nos dão uma seção para renderizar o corpo. Então é muito, muito simples. Não, depois de você ter feito isso e eu não vou passar por todas as mudanças que precisam acontecer ainda. Mas depois que você criou este Não, você queria ser o alguém padrão para tornar esta página simples O padrão que eu tinha fora da nossa página de camada grande que já existe para fazer isso. O que você pode fazer é ir para ver início. Então, se você ainda estiver na pasta Exibições, então você tem um arquivo chamado Exibir. Comece com isso em vista Iniciar ele vai dizer layout é igual a Leo. Então, no placar, Leo, esse é o nome do arquivo que ele está identificando como o layout. Por isso, vou apenas duplicar isto no comentário. Aveia uma linha, e então eu vou mudar isso para dizer, Sublinhar publicitários Em seguida, podemos salvar todas as mudanças em. Então vamos ver como isso vai parecer. Por isso, reparem quando a nossa candidatura ou os Lords eram literalmente apenas uma página em branco, porque isso é tudo o que temos. Só temos o esqueleto numa secção que é o corpo dele. Então, se eu tentar manualmente toe navegar para qualquer off para telas existentes e vamos dizer que eu tento ir toe deixar tipos em, desmontar o log em aviso de que o registro ainda está carregando com o originalmente escrito em que é porque para isso para aplicação, também teríamos que alterar os layouts que estão sendo usados. Se eu for para eras sozinho, toda a identidade vai para páginas, então você vê um arquivo semelhante. Essa é a visão dele. Iniciar no arquivo Exibir Iniciar está apontando diretamente para o pêssego antigo dentro de exibições compartilhadas e layout. Então eu só vou toe provocativamente duplicar isso e comentou Coat on. Então eu vou mudar isso para ver adicionar LTTE significa que CSE html em. Em seguida, economize e vamos tentar recarregar esta página e ver o que acontece. Certo, então estamos tendo uma era, e esta área está vendo que está faltando uma seção que vê scripts. Lembra-se disso? Eu vi que eles são certas seções que têm que estar lá para algumas páginas toe trabalho em fez em nossa página de login, que é o que eu estou tentando renderizar alguns distante para detalhar e encontrar ou fazer login vista ou log-in vista. Aqueles chamam uma seção chamada scripts, onde ele chama alguma visão parcial para que sexual precisa estar presente para o trabalho Leo dedo do pé para o discurso. Lembre-se que temos um simplesmente velho aqui para ou originalmente escreveu. Nós temos essa seção que eu mencionei antes onde nós renderizamos scripts. Tudo bem, então em nossa próxima lição vamos começar a transformar esta página em branco no administrador LTTE Leo. É com tudo fora da seção necessária para que todas as quatro visualizações possam usá-lo. 47. Configurar o configuração OS Dependências: Ei, pessoal, neste Ouça, nós vamos estar configurando nosso aplicativo com o administrador. Lt e layout. Tenho visto este administrador. Administrador, LTTE. Se você não sabe o que é, então você pode chegar ao seu site indo toe admin l t e que eu Oh, não, é. Ah, modelo de painel administrativo Bootstrap. E, bem, um muito, muito, muito convenientemente. Portanto, ele é baseado em bootstrap, e eu acredito que eles tiveram versões demais cada versão fora bootstraps. Então agora estamos usando bootstrap quatro. Então a versão que vamos usar é a mais recente que suporta bootstrap quatro . Eles também têm apoio para a diversão. Incrível. Cinco ícones. Então isso significa que vamos estar passando por potencialmente mudando velhos alguns de vanguarda , ícones incríveis que eu teria usado anteriormente em que podemos reter para, mas então estaremos implementando cinco também. Então, a partir de seu site, você pode ir para sua página Donald. Você pode ir a uma pré-visualização ao vivo e você também pode visitar lá. Obter repositório TOB onde você pode apenas você pode simplesmente baixar toda a fonte necessária para este modelo. Então eu vou primeiro para o modelo, a demo, a demo, e mostrar a vocês o que é tudo um barco. Como você pode ver aquela barra de navegação à esquerda, eles têm uma no topo. Eles têm pequenos ícones de notificação em, Bem, o potencial para exibição de dados e o layout é realmente, realmente, realmente incrível. Lá vêm eles, cheio de bibliotecas caem desses gráficos coloridos, e eles colocaram um torcido em estilos bootstrap onde você sabe certas coisas, olhar um pouco mais encontrar órbitas, você sabe, modificado quando comparado com o bootstrap original Leo. São as nossas aulas, certo? Então você tem a versão do painel um modelo onde você sabe que é bonito. É um lado diferente do diferente. Você pode os pardais e obter idéias a partir dele. E então você tem a versão dois, que é tudo o que estamos olhando. Só sei, Então você pode realmente gastar algum tempo e clique em uma linha e ver todos os gráficos, as diferentes formas, as diferentes tabelas que eles compraram. Em seguida, em última análise, você quer chegar à seção de documentação onde você pode realmente ir um barco learning ho para instalá-lo em seu aplicativo. Agora, as instruções de instalação são meramente voltadas para o PM, que é mais bolsos Manager Bore, que é um gerenciador de pacotes para JavaScript, ou compositor, que é, Ah, gerenciador de pacotes para Ph. B. Mas então estamos usando dot net core, então não Record tem seu próprio gerenciador de bolso na forma de novo get e ele vai até certo ponto um carregado para usar bower. Mas, pessoalmente, acho isso mais irritante. Tentando obter esse tipo fora bibliotecas em um núcleo dominante em, especialmente porque é praticamente simples, é apenas algum núcleo que eles nos deram. Mais uma vez, é código aberto. Então, neste vídeo, entender para orientá-lo sobre o fornecimento do cabo na implementação de seu dentro fora ou aplicativo No, pelo tempo livre. Esta lição admin LTTE dois pontos para é a versão anunciada aqui. Mas essa não é a versão que vamos usar, então vamos nos levantar. Eu vou dizer não sei versão mais recente, que vai nos trazer para seu repositório para, em média LTTE três pontos ou ponto um. Então saiba que estamos neste repositório na rolada em obter o arquivo zip com todos fora sua fonte marcado. E isso nos dá uma pasta agradável e saudável com um monte fora de ler Mies e mais alguns modelos que podemos olhar para. Então o templo tão cedo não pode necessariamente não ter sido indicativo da versão mais recente . Então eu só vou Teoh extrair esta pasta do dedo do pé no meu computador. Então eu coloquei na minha pasta de downloads, então eu vou apenas abrir uma dessas páginas. Então eu tenho três páginas de índice que eu posso olhar em que também começou alguém para abrir cada um e que nós podemos avaliá-los fora. Então eu abri índice, e isso é o que o índice discursos exibindo. Então você vê que os widgets entende que é um pouco diferente do que teríamos visto no site. Mais uma vez, o site provavelmente estava mostrando 2.4, que é baseado no bootstrap três. Sobre isso está mostrando 3.4 ponto um, que é baseado no bootstrap quatro. Então você vê algumas, você sabe, melhorias na forma como as coisas são definidas. Mas temos este exemplo de painel. Temos painel onde este é o painel três. Então, temos painel para exemplo, e então temos painel de três exemplos em, então temos um exemplo muito, muito simples, que é chamado Starter Now, o início de um modelo é muito mais simples do que os outros painéis do Truth ser dito, baseado no aplicativo que podemos ter comigo ou pode não precisar de todos esses, um, gráficos e displays, certo? Então, para a nossa aplicação, que é um sistema de gestão de licenças, eu não preciso de uma cobrança. Quero dizer, qualquer esfregão fora de um país é esse tipo de terras? Eu realmente não preciso de tudo isso. Então, o modelo iniciado é um bom lugar para mim. Toe realmente ser capaz de examinar o tribunal em fazer essas transições sobre o meu projeto outra coisa para notar que nos títulos fora de incêndios que teríamos obtido, eles teriam nos dado todos fora dos arquivos CSS e JavaScript necessários para obter este vapor para cima e em funcionamento. E nós também teríamos ah, riqueza off plugins para todos fora dos gráficos, as tabelas de dados em tudo o que seria incluído dentro fora do que está sendo exibido em seus modelos. No entanto, nós só precisamos de alguns fora essas coisas para ficar aberto correndo em um desses é o iniciante, alguém para a direita, clique no starter em Abrir com. Eu não tenho parte mais mais se você não tem, que é uma ótima ferramenta para apenas ver. Você sabe que marca arquivos abertos e simples. Se você tem código de estúdio visual, isso também é uma boa ferramenta em qualquer coisa menos que não faz parte. Mas sugiro que conheça pelo menos Pat Plus ou Visual Studio Court. Então eu vou apenas clicar com o botão direito do mouse em Abrir com tudo por mais, e isso vai me dar toda a página HTML com que toda a equipe, um esqueleto que eu sempre falo sobre. Eles apontarão o que está sendo incluído, o que rápido e onde eles podem ser encontrados em. Então podemos obter esses arquivos dentro dos ventiladores que estavam no arquivo e colocá-los nosso projeto no estúdio visual, enquanto iniciamos o vapor. Então, a primeira coisa que eu quero fazer é copiar tudo isso, então eu vou voltar para a minha página de layout. Depois vou controlar uma Onda e controlar o visto. Estamos movendo tudo o que está lá e estou colando esse bloco inteiro do html. Não, fazer isso, eu teria removido algumas coisas como a seção do corpo de renderização. Nós vamos colocar isso de volta, mas você percebe que eles estão dando comentários para meio que nos guiar a seção que você está olhando para fora da quadra. Meu próximo grande objetivo seria garantir que eu tenha as folhas de estilo necessárias incluídas no projeto e que minhas referências estão corretas. Então eu vejo aqui onde eles têm uma folha de estilo dentro fora da pasta CSS barra principal chamada admin lt ee dot significa ponto CSS. Então eu preciso ter certeza de que eu tenho essa folha de estilo dentro do meu projeto e eu estou referenciando isso corretamente no visual. Estudante torna relativamente fácil obter arquivos sobre alguém para voltar para a pasta de arquivos , ir para dissed, ir para essa pasta chamada CSS. Identifique esse arquivo, então eu posso copiar e voltar para o Visual Studio. Então sabemos que em nosso projeto de estúdio visual para tentar manter esses arquivos estáticos, esses arquivos CSS em vez disso estão dentro do CSS raiz W W e então eu posso apenas dividi-lo nessa pasta. Não, eu posso fazer isso. Mesma operação para ou fundo. Incrível. Então está em plugins fundos impressionante. CSS livre tudo significa que CSS Então eu estou indo toe voltar e tentar encontrar isso. Então, foi plugins na frente. Incrível. Isso é gratuito em, em seguida, CSS em. Então foi tudo o que significa que CSS eu vou fazer a mesma coisa onde eu copiar em seguida voltar para o estúdio visual em seguida. Clique com o botão direito do mouse em CSS Onda fragmentado. Não, neste momento estão realmente esquecidos, Holder, certo? O caminho para os tolos CSS entender? Para olhar para trás no meu Leo pH original só para alguma inspiração. Então eu vejo aqui onde o RH deve estar até dia barra CSS cortou as partes do arquivo. Entenda a cópia que fogo caminho para o mais completo, uma vez que todo o mais rápido e que parece CSS completo. E então eu posso apenas substituir a parte relevante tão bem, esses ccs já CSS arias. Na verdade, posso dizer até que cortem CSS. Em seguida, apenas para ter certeza que você no lugar certo, você pode realmente apenas remover este seu controle no espaço e, em seguida, ele irá listar todos os arquivos . Se você está vendo todos os fatos, isso significa que você escreveu o pop. Em parte. Então eu sou o primeiro, incluindo o administrador. Não, isso é incorreto em primeiro lugar, incluindo tudo o que significa não CSS ligado. Então eu vou apenas modificar este dedo incluir o arquivo admin lt CSS. Agora, o arquivo LTTE admin praticamente encapsula todas as nossas classes bootstrap para que ainda possamos acessar ou as classes de booster que conhecemos no amor em. Nós realmente não temos que ir e referenciar bootstrap contra. Estou abrindo o arquivo CSS ltte dot para que você possa ver que ele está realmente usando muito fora das classes bootstrap na versão bootstrap neste ponto 4.3 um. Então, a maioria dessas aulas, se nem sempre funcionam, mas eles teriam colocado seu próprio dedo do pé torcido. Eles seriam enviados para a tela. Meu próximo grande objetivo seria fazer os mesmos passos com nosso trabalho, arquivos de script. Então eu vejo aqui onde eles precisam do inquérito G. Mas já temos o Jaker. Já temos o Bootstrap, mas precisamos do administrador LTTE que o arquivo JS, então se eu investigar o GS Bem, não o Jair. Desculpe, a lib está ligada. Então vamos para baixo em Bootstrap dissed em Js em. Também temos o mesmo para Jake Worry, então posso modificar as referências para Jake Worry e Bootstrap. Na verdade, posso voltar ao meu voto sobre a reutilização dessas referências. Então esse é o J. Corey e esse é o bootstrap. Eu vou copiar aqueles e, em seguida, eu só vou substituir essas referências porque ele está referindo o mesmo conjunto de arquivos em, em seguida, para o administrador LTTE em ido toe tem que ir para a pasta Js dentro de fora de seu dist. Encontre a cópia do arquivo G s em que está e coloque-a no projeto. Então eu vou colocar isso dentro da seção GS em pedaços. Então eu posso usar minha caixa até lá. Então, então isso ainda é essa barra gs slash admin LTTE que significa que gso Não, eu tenho meus arquivos Js e meus arquivos CSS sendo incluídos. Tudo bem, então nós fizemos um pouco fora do trabalho são simples como pode parecer no DNO. Quero visualizar como será este discurso. Mas antes de fazer isso, deixe-me definir o título para ser tão dinâmico como ele costumava ser. Em algum lugar de volta ao Leo. E você acha que você é muito chato com o Leo ou Paige existente porque, quero dizer, você fez muito trabalho para ele. Então, em vez de redigitar, então você será usado reutilizando um monte de coisas. Então eu recomendo que você não exclua, pelo menos ainda não. Alguns apenas copiando o título existente em Eu estou colando no novo Leo Peach em. Há outras coisas que serão transferidas, mas agora eu só quero que vejamos como a página se parece. Então entenda a pré-visualização do dedo que muito rapidamente. E quando fazemos isso, estamos recebendo este arável muito desagradável é um bife ou tempo e ler o que ele cantar. Então ele está dizendo que temos uma exceção de operação inválida onde o corpo de renderização não foi chamado para a página em e, em seguida, eles apenas listar todo o dedo do caminho sobre o novo collant. Então a aquisição chave é que ele está reclamando sobre a seção do corpo de renderização, então não há função do corpo de renderização sendo chamada. Lembre-se em nossa aveia originalmente, tivemos aquela seção muito, muito crucial onde dissemos corpo Render. Então, precisamos ter certeza de que o administrador LTTE sabe que ele deve entregar corpo Não com base nas seções que são dadas para a página, sabemos que o corpo deve ser processado em algum lugar com conteúdo não pecou barra suficiente não no barra lateral. O menu da barra lateral do MIT comprou mais na era do conteúdo. Então eu vejo aqui de conteúdo ou superior e, em seguida, eu tenho uma seção que é o seu conteúdo médio. Então isso significa dentro da minha seção principal de conteúdo. Devia estar a renderizar o corpo. Então isso são todos dados de amostra, como você deve saber, de olhar para nossa porta Leo ou página de amostra inicial, isso é tudo. Apenas a data da amostra. Eu realmente não preciso disso. Então, na verdade, vou tirar toda essa seção Haute. Na verdade, ele começa a partir da página inicial. Então tudo o que está dentro do fluido Deve Container eu vou remover ou bem, na verdade, eu só vou ver do conteúdo. Rapper tão conteúdo Dash rapper Tudo o que está dentro do conteúdo. Dash rapper, eu vou remover. Só estou tirando todo esse barco, certo? Tudo o que foi usado o sinal de mais até bem, o sinal menor dedo do pé, você sabe, condensar as seções. Tudo bem, então eu vou tirar toda essa aveia. Vou colocar minha função para renderizar o corpo. Não o quê? Faço isso e guardo e atualizo. É com isto que acabamos, onde a irmã tem alguns caminhos a percorrer. Mas isto é um progresso. Você pode ver aqui que o novo layout está sendo exibido em nosso conteúdo, não é? - Não. Precisamos ter certeza de que nossa barra de navegação desagradar nossos links de navegação não são os links de cárter ? Não, De volta aos nossos layouts, há poucas referências que eu quero ter certeza que eu incluir de Não, que eu não esqueça mais tarde. Então eu vou voltar para o meu Leo Ph e que eu estou vendo isso. Ok, eu tenho algumas bibliotecas centrais acima de alguém para garantir que eu faça referência a essas bibliotecas dentro deste layout e elas vão acima do tipo doc. Andi, eu vou fazer referência com algumas dessas folhas de estilo, então eu tenho uma folha de estilo para a minha tabela por tabela de dados. Tenho um para me divertir. Incrível em. Tenho um para o meu nerd. Onde você sábia? Vou levar os três, mesmo não precisando dos fundos. Incrível. Um para isso porque estamos mudando a versão fora da frente. Incrível. Algum arqueiro Justin para apagar esse. Só fiz isso porque era mais fácil pegar três linhas e apagar uma. Hum, então nós temos todas as nossas referências CSS em. Então eu vou ter certeza de que eu fazer referência à minha tabela de dados, bem como meus G s e G. Consulta arquivou alguém para copiá-los também e certifique-se de que eu inclua esses scripts na parte inferior da página. E então, além desses scripts, preciso ter certeza de renderizar as seções de scripts. Eu também sou entidade que faz isso em um assento, mas tudo bem. Então eu só estou me certificando de que eu tenha contabilizado para todas as referências de um cargas existentes porque suas páginas que dependem destes. Então, se eu estava mudando pouco que queremos ter certeza de que estes estão incluídos agora, outra coisa é que eu quero dizer, é como um erro de julgamento com o nosso pacote bootstrap onde é bootstrap ponto empacotado até homens esquivas em não o bootstrap ponto Js arquivo. Então, na verdade, precisava incluir esse arquivo, e nós o encontramos dentro do Js Desculpe de Brogan. Plugue ins. Bootstrap Js no arquivo é ponto bootstrap Bonded up significa que GSC poderia copiar isso. Prove-o dentro da pasta GS ao lado l admin lg que moinho ponto Js em Em seguida, corrigir a referência em conformidade para se certificar de que ele está incluído. Outra coisa que omiti foi um arquivo divertido para os nossos fundos. Incrível. Notei que temos quadrados onde você deve ter deixado os ícones. E isso é porque você não trouxe a pasta de fundos da Web do fundo. Incrível. Isso é de graça. Então eu só vou pegar essa pasta e copiá-la, e nós temos que colocá-la em nosso projeto em uma parte muito relativa ao CSS. Então notado que ele está ao lado da pasta CSS. Então as armas têm arquivos? Claro, mas, em seguida, em relação à pasta CSS lá nos mesmos níveis tem que ter certeza de que eu copiar esta pasta e colocá-lo em nosso projeto relativo para ver avaliar. Então o único lugar que eu poderia colocá-lo em relação ao CSS e tê-los lado a lado é se eu colocar fundos da Web como nossa pasta dentro da pasta raiz W W ou nossa seção, então pessoas diferentes podem um pouco diferente. Só estou tentando manter isso simples. Então, depois de fazer esses ajustes e recarregar ou paz e começamos a ver mais ícones para você veja aquele pequeno ícone de bate-papo, o ícone Bell e onde eles estavam quadrados. Não há nenhum ícone. Então não, nós temos ou ícones funcionando. Podemos continuar com ou modificações. Não, eu disse que deveríamos estar modificando as propriedades de navegação, e eu vou passo a passo. Então esta é a barra de notas em que é a barra de notas superior. Então esta seção inteira, se eu clicar na palestra que é suficiente, podemos rolar até vermos a próxima em destaque. E sabemos que tudo isso é a barra de nob, e então nosso número tem seções para links de topo de barras. Então, se quisermos links no topo em seco, não, eles estão nos dando 14 casas em um para contato. Se os quisermos lá, podemos mudar o motivo. Queremos mais do que podemos duplicar. E em mais. Não quero ligações de navegação suficientes no topo. Alguns só querem controlar Casey para comentar. O fosso. Estou comentando os fossos, mas você pode acreditar neles se quiser enquanto cometem todos eles. Porque talvez possamos encontrar uso para eles mais tarde, certo? E é mais fácil manter o modelo do que tentar lembrar como ele era. Não preciso da barra de pesquisa, pelo menos ainda. Então eu estou comentando que também, em seguida, sobre os direitos. Estão a ver que temos uma mensagem “Não.” Então eu posso realmente ir em pré-visualização como essa mensagem suspensa parece, tudo bem. E então, veja, agora tem um monte de imagens quebradas. Mas não trouxemos as imagens porque você não precisa delas. Mas agora, não preciso de mensagens. Notificação em. Vemos que temos o pequeno sino com o cerco de notificação. Eu não preciso de nenhum fora dessas notificações, então eu só vou t aqueles velhos, mas seria muito legal se talvez para cada pedido de licença ou cada novo item que vem em que requer ação. Nós apenas mostramos um número lá para isso em que seria muito legal. No entanto, estou removendo porque eu realmente não preciso deles, certo? Não, Esta seção inteira do aberto para Fechar UL constituiria a direita dentro fora da barra nunca e então eu posso realmente apenas condensá-lo ou recolher tudo fora disso e eu estou indo para manual o tipo ou os cabos de comentário que Isso é um sinal de anúncio ligado e ligado. Asterisk Andi abrirá e fechará quase automaticamente para mim. Alguém pegou isso no dedo. Então eu vou ter certeza de que eu estou fechando o U mais entender toe lugar que comentário no final dos EUA Você sabe, tudo isso é comentado mais uma vez, você pode excluí-lo, mas estamos deixando para o caso de você querer mais tarde do que você pode tê-lo. Muito bem, então o nosso bar do amor no topo está praticamente vazio. É literalmente apenas lá como barra suficiente, e não é comprador luz traço. Está de branco. Quero dizer, é. Está lá. Por isso, pode acrescentou, pode subtraído. Não é nem aqui nem ali. O que não comprador faz neste momento Nossos filhos segundo pensamentos. Só me lembro que há uma parte desse valete que eu realmente preciso. E essa é a parte para fazer um desmontável. Então esta seção que você sabe, eu posso clicar nele e ele se expande ou ele contrai realmente quer manter isso em que é telefonado na seção dos EUA para barras de push. Então, se eu olhar muito perto para o jantar, ver no topo do latido suficiente nós realmente temos ah em seção ordenada que eu teria comentado anteriormente se ele tem os empréstimos suficientes para a casa, o contato, mas no topo tem uma seção para o menu push ou os compradores. Então o que eu vou fazer é apenas no comando desta seção porque eu realmente quero essa seção tão contra Ok, você em, então o que eu posso fazer é apenas elogiar haute, os dois links que eu realmente não preciso. Então eu só quero rotinar a parte com as pílulas que muito Mito me o comprador lado ir em Ah , escreveu Não quatro ou eu na barra lateral Nós veríamos que ele tem algo dedo do pé talvez o discurso do índice , porque a amostra Andi I Quer dizer, tudo bem. É compreensível que você venha com isso, mas podemos sempre mudar tudo isso. Então, outra coisa. Vou colocar uma hashtag para que não vá a lugar nenhum. Ele mantém sua classe em. Então ele está esperando por uma imagem. Então eu não vou colocar nenhuma imagem. Eu não tenho nenhuma imagem, mas em seguida, em um momento posterior, talvez você possa modificar o aplicativo que ele aceita um avatar para um usuário em. Então, quando os usuários adoram ser que os pneus ABBA exibido. Então eu vou apenas comentar velho esta seção para uma foto em, em seguida, para este spun sexual como seu administrador LTTE três. Vou deixar que diga o nome do nosso aplicativo, que é outro dizer, deixar os gerenciamentos para esta seção fora da barra lateral. Eu queria exibir as seções de registro. Lembre-se que temos um registro, um, um, parceiros está registrando e registrando. Tínhamos isso no anterior Leo. Era onde tínhamos os seis John na barra de navegação, e era uma parte que estava sendo impressa. Então o tribunal para os links de login e registro estão realmente dentro desta parcial. Então eu quero que essa parcial seja renderizada nesta seção. Então eu fui para levar casaco o conteúdo desta barra lateral em Eu vou substituí-lo com o show par para nossas centenas de registros, os botões em. Então eu vou apenas adicionar um pouco de efeito visual e colocar uma regra horizontal para que haja uma pequena linha para mostrar onde esta seção começa lá onde a próxima seção começa. Muito bem, então isto é o que o nosso trabalho rendeu àqueles longe que mudámos com secções de gestão boba . Nós temos as ferramentas, e nós vamos colocar em algum lugar estrelas sobre isso porque notar que eles são visivelmente diferentes de segurar. Os outros links olhar, mas para saber que eles podem permanecer em Não, precisamos modificar espera. Essas coisas parecem tão notadas que você tem uma seção que pode cair. Você tem um ing simples, então eu vou estar criando alguns links que estão parecendo o simples ing on. Então criaremos uma seção suspensa para nossa barra de amor, então de volta ao nosso cordão. Então eu vou começar essa transformação apenas dissecando isso, não um pouco de código de barras. Então nós temos a UL em fez. É que tem todas as classes que são necessárias para fazê-lo ir para o lado. E então temos o primeiro item de lista sobre isso, como um item de lista tem um classicistas, tem menu de exibição em árvore abre, e então ele tem um link em, em seguida, outro na lista de ordem dentro dele. Depois disso, temos na lista item que tem as palavras simples ing. Portanto, este item de lista pode ser o nosso modelo para itens de link não expansíveis neste pode ser o nosso modelo para itens de link expansíveis. Vou levar este. Isso é uma coisa simples. Vou cortá-la, Andi. Em seguida, colocamos acima do que diz tem vista de árvore Não para a nossa Simple Inc. Nós vamos fazer algumas modificações, notar que temos uma etiqueta de tornozelo e está apontando para lugar nenhum. Então eu vou voltar para o nosso Leo original. Então eu vou copiar as partes relevantes para toe Ter um link alguém para levar a área SP controlador seção SB Ação fora do puxão âncora Porque eu quero que este primeiro ing simples para ser casa alguém para substituir um verdadeiro se com aqueles aqueles aqueles atributos em, deixamos a classe ligada. Então eu fui para mudar o ícone de FAA Dashti envelhecido Se um traço casa e notado estúdio visual está fazendo essas sugestões porque o arquivo CSS Forefront impressionante não faz parte do projeto em, então eu estou com a chance no texto de inging toe casa Então neste aqui para ficar em casa e eu realmente não preciso desse espaço. Tudo bem, , está bom. É uma boa idéia para tipo de reter o templo que eles dão a você, porque se eu fosse remover essas tags p, o layout seria um pouco diferente do que eu estou vendo no anterior. Então você tem que ser muito cuidadoso e deliberado ao fazer modificações. Se você quiser manter a aparência original e sentir então eu tenho a cidade natal e eu vou duplicar esta ferramenta vezes porque eu também quero a aderência que diz que é tuck que diz Aplicar para licença em também um que vê a minha licença Então, voltando para os links originais Nós tivemos um. É isso. Candidate-se a locação. Estou selecionando ou pegando todos esses atributos desse link em seguida, colocando-os dentro da minha segunda Simple Inc que está substituindo-os. E, em seguida, o texto vai ser pedido de licença. Então, esta cópia disso. Então eu estou fazendo um monte fora copiando e substituindo o existente sendo vendido a mesma coisa para minha licença em DENR. Substitua esses atributos de acordo. Eu realmente não preciso trazer a classe porque você percebe que as classes agora traço link. E sim, há texto branco. Mas diz agora traço link já em ou Tio Ataques são realmente excluir. Er lugar isso de novo. Então, apenas substituindo os atributos reais do evento para que Uncle Tags funcione tudo o que esperamos que eles funcionem não para a próxima seção que apresenta uma queda. Não me lembro disso ou suspender ou original Liotta teria bean ativo ou visível apenas se alguém se conectasse ainda mais, então se estiver enviando como administrador, então podemos reutilizar essas estimativas. Eu só vou pegar esses depoimentos, voltar atrás, então eu vou colar. Então tudo está ficando recuado e fora do trabalho. Mas isso não é problema, porque no final, fora deste bloco de aliados, vou colocar duas corridas apenas as roupas fora dos depoimentos. Então tudo fora, nosso código será realinhado corretamente. Então, se a pessoa estiver conectada e se ela for administrada, ela verá essa seção suspensa. E então essa queda sexual precisa ter os mesmos links que estavam no desejo. Não, o nível mais alto fora da zona de queda tinha a palavra homem, é compreensível tomar a palavra gerir, e eu vou substituir o primeiro elo por essa palavra. O conteúdo fora do topo mais, hum, item ou item de navegação em toda a gota conhecido deve ver gerenciar notar que à direita dele ele terá um ícone nazista tio esquerda, então é como uma espécie de drop down. Ele vai alternar quando é, você sabe, você sabe, esperança são conhecidos, hum, hum, e então os medidores de tackle. Então eu vou passar e mudar esses ícones mais tarde. Mas para não, queremos apenas nos concentrar nos itens da barra de navegação e nos links, certificando-se de que eles vão para o lugar certo. Então o conteúdo da nossa barra suficiente estaria sob revisão de poeira suficiente e você vê que nós temos que Ling está aqui o que precisamos quatro. Alguns apenas copiaram o dedo do pé e pegaram um deles mais duas vezes. E então podemos recomeçar a cirurgia onde começamos a mudar todo o texto sobre as referências são a viagem. Então eu vou fazer isso rapidamente. Fizemos alguns já Alguém para pausar o vídeo são Você pode pausar um vídeo aqui e tentar para si mesmo quando quiser pausar. Eu já teria feito isso, e então podemos comparar depois. Tudo bem, então no final desse exercício, você deveria ter algo parecido com o que eu tenho na tela. Também tomei a liberdade de mudar todo o ícone. Então eu tenho algo como uma lista para os tipos de folhas. Ter Effie Dash Angelis para alocações na verdade fez isso cegamente. Mas tudo isso foi ótimo. Effie Dash e, em seguida, um pouco bizarro cedeu a sugerir dedo do pé o que eu tenho disponível para mim em. Tomei decisões cegas. Sabe, se você não quer tomar decisões sobre terras, você sempre pode ir para fundos. Incrível. Mas vamos lá. Como estamos usando a versão cinco, você pode ir para ícones em. Então você pode ver tudo o que está disponível. Então, praticamente. Se você vê listado na inteligência e você quer saber o que ele vai se parecer, então as chances estão em mais do que provável, você pode ir para frente impressionante o site em Basta digitá-lo em. Em seguida, ele vai tipo de filtro escrito e mostrar-lhe como o seu ícone pode ser parecido. Outra coisa a notar que mais do que provável será a versão gratuita fora do que você vê na listagem para o 1º 3 links de navegação. Eu também fiz alterações porque o autor deles teria tido o ícone home. Então eu mudei aqueles antigos também Andi, eu vou fazer mais um ajuste, e isso é para a página de login, porque se você observar e me deixar voltar para a minha página se você observar que o log no Ling não bastante olhar para como ho ou barras de porca, links olhar. Então, quer que tudo pareça uniforme, tanto quanto possível. Alguém para modificar o layout da nossa página de registro parcial. Vamos ver como isso funciona. Então este é o log em Pidge parcial Andi. Como você pode ver, a UL, está faltando algumas das aulas que os U els para nossa barra lateral precisa. Então, se olharmos para um dos existentes, vemos que ele tem classes. O amor, as contas do valete Dash agora têm barra lateral e colunas flexíveis. Eu vou fazer todas essas aulas e garantir que eles estão presentes dentro do tronco imparcial. Então, não, o bar não vai se parecer mais com o que já temos. Em seguida, os itens da lista dentro de fora que você vai precisar para se parecer mais com os itens da lista dentro do existente. Então esses itens da lista em que eles têm a etiqueta do tornozelo, então eles têm o ícone, que fora do curso é opcional. Mas está lá e eles têm um puxador P. Então, todas essas coisas realmente funcionam juntas para dar o tipo de efeitos que precisamos de alguma disciplina para realizar. Uma pequena modificação sobre isso são realmente seu tio Targa, apenas linha de freio. Traga a mensagem. Então este texto é o que está dizendo Olá pessoa que está logado. Então eu quero que isso seja exibido. Então eu queria ser exibido dentro de uma pita. Então eu vou incluir um ícone exatamente o mesmo no ícone. Aqui pode ser talvez, como uma silhueta de uma pessoa. Então eu vou dizer ícone, aula de rebocador e, em seguida, incluir meus f e ou F s desta vez porque eles estão mudando aveia. A frente incrível. Então é F e s. E então se e traçar, eu vou ver o usuário sair correndo. Então, esse ícone vai ser exibido ao lado das pessoas usando o uma vez que eles estão logados. próximo é este botão, e as modificações que vou fazer serão bem semelhantes. Então eu vou pegar todo esse conteúdo, substituir a palavra lei cabra em, então na etiqueta P, bem, vai dizer cabras baixas. Então essa é a lei. O bode no dia massacrou o Pete. Eu fui mordido lá para que eu faça isso de novo e fazê-lo corretamente desta vez. Então esse é o barco de registro em vez disso, fora do Peter para o ícone. Vou fazer alguma coisa. Como se uma embaixada, eles têm algo sobre assinar também. Lá vamos nós. Eu assinei enquanto esse sinal entramos nós assinamos velhos. Terrível. Então f e d assinar alguém para modificar os outros dois fora da tela, e eu estou desafiando você a conhecer mods. Escolheu zero em ícones. Use sua própria criatividade, mas eu vou fazer isso e então podemos comparar o tribunal depois. Então eu tenho dois ícones que eu incluí um chamado Effie Dash registrado para qualquer um que quer já surfar com a gente. Seja qual for. Só o link. E então temos evadir-nos usuário para o registro. Então você quer dizer, eu estou repetindo algumas lagoas ao redor do lugar, mas no final, mais uma vez, você pode escolher seus próprios ícones e fazer o que é certo para você. O que? Eu vou salvar todas essas mudanças e voltar para a minha idade Reversão. Viu a fruta do meu trabalho? Tudo bem. E então eu estou vendo um ninho são para registrar na silhueta para login. E só para ter certeza de que eu escrevi o tribunal corretamente, eu vou apenas clicar nisso e vê-lo expandir e se contrair corretamente. Então, assim como fez nelas sobre o texto desapareceu completamente e só mostrar o ícone . Se você não escreveu o Todd ou os itens da lista para os links de navegação corretamente, então quando você tentar o contrato, então pode não ser tão limpo dizendo que eu quero rever isso. De qualquer forma, vou providenciar o tribunal para que possa sempre verificar ou substituir. Agora, a última coisa que eu vou fazer é substituir o conteúdo do nosso agora nosso quatro rodapé em . Eu queria ser um pouco mais oficial, mas é sempre bom dar crédito às pessoas que criam os temas e as coisas de código aberto que você você. Então eu tenho ah mensagem rodapé aqui neste filtro. Miss sua é para a direita estilizado por e eu criar um link toe admin. Tenente Andi. Retenho a mensagem original do rodapé do nosso layout anterior. Então eu vou apenas fazer login como administrador para que possamos ver o resto fora comprador suficiente e verificar fora da palavra que fizemos em quando eu ir para a página de login. Você vê isso? Esta página poderia usar algum trabalho. Ele precisa de alguma modificação para caber no tema Melhor. Mas eu vou deixar isso sozinho para não e fazer login como administrador. E quando eu faço isso, eles estão vendo alguns quadrados aparecendo. - Onde? Onde os ícones devem ser Alguns Justin para verificar o que está acontecendo com o código Onda. Ok, então eu vejo aqui onde eu tenho se eles estão em vez disso fora se ele está de modo que ele pode ter estado lá antes. A temperatura pode ter vindo com F e r para essa seção, mas eu quero mudá-lo o f a s porque isso é o que eu realmente quero em. Então salve. E então vamos rever isso de novo. Tudo bem, é mais assim. Então, não, estamos vendo que um ainda está faltando. O que? Podemos consertar isso mais tarde. Então, pelo menos fizemos algum progresso. Estamos recebendo ícones, e podemos ver que temos este menu suspenso para certo Bem, para o administrador em quando não somos amados neste admin, não veremos que também, quando estamos registrados e vemos que ele está dizendo Olá no usuário em Nós temos o nosso link de cabra baixo. Quanto você vai remover a palavra “Olá “? E eu só vou imprimir. É o endereço de e-mail associado a quem está logado. Então essas são as modificações que vou fazer. Vou consertar esse ícone. Vou remover a palavra “Olá”. Vou ver o que está acontecendo com a página de login, e vou compartilhar tudo com você. Mas se você ficou com o nosso até o fim e, você sabe, ter o painel de administração parecido com isso, então bom trabalho. 48. Fixes e adições essenciais: Ei, pessoal, bem-vindos de volta nesta aula de vídeo que passará por algumas correções essenciais que nos encontraríamos no nosso layout. Então eu deixei o vídeo anterior dizendo que eu iria remover a palavra-chave hello da seção onde estamos exibindo o nome de usuário. Eu consertei a referência do ícone. Eu tinha lesionado lista inicialmente e que não foi incluído no meu conjunto de fundos. Então mudei para User Plus e fiz uma correção ainda mais crítica para o Lay. Além disso, se você se lembra quando tivemos nossa página de login e eu apenas navegar para aquela praia semanalmente, ele estava, você sabe, ligado ao comprador lado ou muito perto para decidir por essa margem não foi definido o suficiente. E assim todas as outras páginas eram uma espécie de renderização dessa forma. Então nós quero dizer, essas correções fora da câmera, e eu vou apenas mostrá-las para você. Bem, por muito tempo, imparcial, imparcial, tudo foi governado a palavra-chave “Olá “da seção que renderiza o nome de usuário. Espero que estejamos todos confortáveis com ícones de Não, então é assim. Eu consertei aquele quadrado e o ícone que estava garantindo paridade. Então eu mudei para usar o traço dela e isso é sempre bom. Se você tentar um e pegar o quadrado em vez disso, tente outro. E então a seção mais importante que afetou sobre Leo foi nossa seção de conteúdo. Então eu tinha removido um pouco de corte demais do nosso conteúdo. E assim não estava renderizando corretamente. Então eu precisava de um dar chamado cabeçalho Ash conteúdo que tinha o seu fluido recipiente de fluido dentro de fora que se e, em seguida, adicionar outro que disse conteúdo com um traço recipiente iria dar também e em que nós renderizou o corpo. Então, se eu voltar para o modelo original, você pode observar que este era o código original. Tivemos conteúdo, referendo em um monte de informações de amostra e, em seguida, ele tinha conteúdo com um monte de informações de amostra. Então eu tinha removido inadvertidamente muito de dentro desses mergulhos. Então, o que? Que ele foi reintroduzido eles e, em seguida, desta vez apenas removido da regra em diante e, em seguida, substituir isso com o corpo de renderização e assim sobre o conteúdo não é renderização corretamente. Então você pode positividade bem ali e copiar o código do carrinho. Se você, Nieto, mas eu vou avançar e eu vou fazer algumas outras modificações em alguns elementos existentes em nossa vista. Então eu fui até a nossa página tipos de folhas em. Estamos olhando para a tabela de dados aqui, então alguns dos ícones estão faltando aviso Alguns deles parecem diferentes, mas então a caneta de modo que estava lá está faltando. Então precisamos ter certeza de que não, que mudamos a versão do fundo. Ícones incríveis que você não está passando e certificando-se de que nossos ícones estão aparecendo para cada página. Então eles estão desaparecidos na alocação de funcionários. Observe o texto em nossas páginas de solicitação de licença, não exatamente como deixamos. Pelo menos está tudo bem com o discurso dos empregados. Outra coisa ligeiramente irritante é que esse link parece estar sempre ativo. Então, vou modificar essa coisa para que nem sempre fique ativa. Então, começando com a modificação fora do link, se olharmos para o tribunal para o link, vemos que ele tem uma classe chamada ativo. Então eu entendo para remover isso Então todos os links olhar para parece que se nós quisermos mudar atividade, então nós vamos ter que ler algum outro tribunal. Mas não vou deixar isso entrar agora. Só estou fazendo parecer um pouco mais uniforme. Em seguida, em nossos tipos de folhas em XP, Jim foi para modificar os ícones usados Então primeiro, em seguida, foi para dizer F A s. Então nós temos a classe e então eu estou mudando isso de Effie Dash, dedo lápis, talvez. Bem, lápis é o que eles têm para mim. Posso deixar o círculo de entrada e deixar o lixo ligado. Então podemos rever isso. Essas mudanças agora que estamos vendo são ícone Pensa mais uma vez. Agora eu vou fazer uma viagem ao nosso discurso de detalhes porque nós criamos um tempo atrás. Mas o que fizemos foi dizer explicitamente qual página do layout usar. Então, quando criamos nosso novo Leo teria definido como padrão, no entanto, isso pode ser substituído em um Pedes específico. Eu só estou indo para aquele discurso detalhado sobre você iria ver aqui onde ele está especificando o layout a ser usado. Então isso substituiria a configuração padrão que colocamos em vista começa. Na verdade, vou remover isto. Mas se você tem o administrador Ele mais tem um tema. Trabalhando com o que tem vários Leo, Peaches, alguém? Algumas páginas para usar uma e não a outra. Então é assim que você pode especificamente substituir essa pequena referência para o nosso eu localizar Leave índice de alocação PGE Eu vou mudar o ícone Toe FD Dash User Dash edita em que vai renderizar algo parecido com isso com esse lápis com que silhueta e, em seguida, eu vou dar ou deixar Solicitar idade alguma atenção. Então, em primeiro lugar, eu vou remover este, hum, este texto que é índice e eu também vou remover este botão já que nós realmente não implementamos nada para este botão e então eu vou modificar o display off estes cartões sobre os dados lá em para trás em nosso código, Eu posso simplesmente remover estes parar duas linhas o H um tipo para o índice no botão para cria eu apenas remover aqueles em. Então vamos rever nossos cartões. Nada de voltar atrás ou administrador. Lt Age ou páginas de exemplo que teríamos obtido em nosso arquivo. Eu estou olhando para a página de widgets e eu estou vendo aqui sua idéia sobre o que widgets pode ser semelhante . Então eu gosto da linha superior fora widgets. Eu acho que eles se encaixam perfeitamente com o que eu quero realizado. Agora, a fim de encontrar o tribunal associado com o widget exibido, podemos apenas clicar com o botão direito do mouse nele ou para inspecionar Elemento. E isso trará à tona todo o tribunal associado a esse widget. Então inspecionar elemento é um bom lago e usar a avaliação. O que está acontecendo? Então você vê que eles têm a regra. Então eles têm a chamada MP três, a divisão, as mesmas divisões que temos para mais de quatro cartas que implementamos. Mas então o eu em parte é que você tem em quatro caixas e, em seguida, dentro da caixa de informações. Eles têm algum conteúdo, então eu vou cair no dedo do pé. Esta def. Isso é chamado de caixa de informações. Posso clicar com o botão direito. Então eu posso copiar no dykan, copiar todos os outros elementos de cópia local, e então voltar para o meu cabo ligado, depois dentro de fora. Chame MD três. Vou colar tudo o que acabei de copiar. Então, para cada MP chamada três que temos, temos essa caixa de informações. Eu sou apenas duplicado mental em cada um antes de começar a conhecer qualquer modificação. Então é isso. E então é fácil de modificar e incorporar porque eu já tenho todos os arquivos de script necessários para a caixa de informações o trabalho. Agora vamos começar nossa modificação. Observe que o que copiamos tem texto estático. Nós só precisamos apoiar o texto estático com nosso texto dinâmico da mesma maneira. Então temos a área de conteúdo na era do conteúdo tem algum texto em alguns números, então lembramos que tínhamos contratado Title, que tinha o texto. Portanto, isto é o total de pedidos. Então eu t isso substituir as mensagens de palavras e então nós tivemos o valor cones em Die substituir essa seção e então eu posso acabar com o meu cartão original e então eu vou fazer isso. Combina com o seu próprio para cada um. Ele está indo para a frente, então eu vou fazer outro para você, alguém para pegar esse valor que estamos gerando dinamicamente. Vou substituir mensagens sobre isso. Eu fui pegar o número e depois substituir esse número, e então eu posso acabar com aquele cartão, alguém para fazer os outros dois. Andi, eu vou continuar tendo feito eles, você pode pausar e fazê-los você mesmo são ótimos. Então eu espero que você não teve problemas no casaco dura parece semelhante a este? Não. A próxima coisa que queremos fazer é mudar a cor. Então temos informações B. G. Lembre-se que estávamos usando cores diferentes para os diferentes status. Assim, pedidos pendentes teria sido aviso BG traço. Hum, então nós temos B G traço para sucesso aprovado em aviso de que temos BG ganancioso em sucesso . Se queremos uma cor gananciosa, podemos fazer isso também. E então tivemos B g traço perigo Onda sair. Eu deixo. O relatório de tortura diz que a próxima coisa que você provavelmente quer fazer é mudar o ícone tipo off que está sendo usado. Então, por exemplo, solicitação de gastos. Eu provavelmente vou usar algo que é como uma exclamação para dizer, Ei, você sabe, atenção necessária sobre isso. Eu uso o círculo de garotas para os pedidos aprovados. Tudo bem, então eu estou indo muito rápido caminhão. Eu não vou aborrecê-lo com a minha seleção fora ícones, mas eu só quero mostrar-lhe como deve ser no final daquele exercício onde você tem seus ícones sendo exibidos. Se você tentar e ícone e não funcionar, as chances são que a primeira parte fora das aulas, se eles estão em você quer mudar isso? Se ele for assim, você pode tentar essa modificação. Então você vê em algum lugar fogo baseado no modelo que copiamos e alguns são Se ele é assim que eu trabalho para que eu não trabalho. Não vou aborrecer-te com o porquê de alguém trabalhar no porquê de não o fazermos. Mas você pode destruir e tentar todos os ícones e ver qual deles é um bom ajuste. Não, eu tenho mais uma modificação que eu quero fazer para esta lição em particular sobre que está torno da tabela de dados. Então, sim, eles parecem bonitos. Mas então há realmente um bootstrap quatro look and feel que pode ser aplicado à tabela de dados no admin. LTTE tem a tomada rápida para mim que aconteceu. Então, voltamos ao nosso arquivo com nossos arquivos LTTE de administração e entramos em plugging mais curto do que você vê. Uma pasta chamada Tabelas de Dados Dash Bs quatro e que vem com um arquivo CSS em um J s longe, então nós só precisamos copiar aqueles sobre o nosso projeto como fizemos com outros arquivos no passado. No caso de você botão, Eu vou fazer o CSS ganhou para você clicando no que termina com homens ponto CSS cópia e seguida, passar para o projeto e dentro da pasta CSS. Vou clicar com o botão direito e clicar em Colar. Em seguida, eu repetiria essas etapas para o arquivo JavaScript. Em seguida, vou voltar para o administrador LTTE Leo Página na seção onde eu tinha originalmente referenciado a tabela de dados, vê este arquivo por CD e link. Eu vou saber substituir esse texto com uma referência ao arquivo CSS local na pasta da minha irmã para tabelas de dados que amarrado significa que CSS em forma semelhante no final deste pêssego golpe, Eu vou substituir a referência para o arquivo de script com uma referência ao arquivo GS local. Então isso ainda está lá, slash gs slash on, então que é as tabelas que tinha batido, então eu posso ver se isso em seguida testar minhas mudanças. Tudo bem, então minha página recarregou e a mesa inteira sumiu. Então isso significa que estou perdendo alguns verões de referência de arquivo, entendeu? Para inspecionar elemento Onda, verifique o que está acontecendo no meu console nele está me dizendo que ele não pode encontrar alguma chamada de função , e está apontando para preocupação geek. Então eu acredito que eu estou faltando alguns outros arquivos de consulta J. Quero voltar aos meus plugins. Andi, vou verificar os meus dados. Pasta Tabelas. Ah, então eu estou realmente faltando este arquivo de script Java essencial, que é apenas necessário para tabelas de dados completamente. Então, vou copiar isto. Andi, traga para o meu projeto. Ele se senta na pasta, e então eu vou apenas duplicar a linha que inclui as tabelas de dados. Mas, em seguida, acima da linha original, eu vou encontrar referência a esta nova tabela de dados J Query arquivo tabelas de dados. Então eu vou guardar isso e tentar de novo nós temos decolagem fora. Então, não, estamos vendo ou tabela de dados olhando um pouco mais refinado, e ele meio que se encaixa no, você sabe, todo o projeto um pouco mais, então vemos que temos a mesma funcionalidade de você. Temos a nossa pesquisa tem ou filtrar o que pesquisas de filtro temos ou paging Andi. Tudo parece mais uniforme. Então, espero que tenha se divertido fazendo esses exercícios, você sabe, restyling nossas páginas. Só estou me certificando de que está tudo bem. Mas eu sei que há algumas lacunas. Primeiro, não há página inicial. Fomos até aqui sem fazer uma página inicial. Estou desafiando você a criar um bom lar criativo. Seja ele compartilhar comigo. Tenho a certeza de que encontro valor na forma como o fizeste. Eu mesmo vou inventar um. Em também há outras páginas que talvez os ícones desapareceram. Ou talvez a página não fosse, Você sabe, não foi tomado muito cuidado na montagem real fora da página quando estávamos trabalhando neles inicialmente. Então eu estou desafiando vocês a apenas percorrer o projeto, limpar essas mudanças desses estilos e torná-lo tão bonito quanto você precisa que ele seja. 49. Páginas de registro personalizado: Ei pessoal, bem-vindo de volta nesta lição será olhando para configurar uma página de login personalizado e página registro para a nossa aplicação. Como você sabe, temos trabalhado com o tema LTTE administrador e por isso estaremos inspirando o vapor e suas predefinições de design do dedo do pé, nossos próprios formulários de login e registro. Agora, na minha tela, você verá os modelos de tela de login LTTE admin onde eles solicitaram a senha do endereço de e-mail . Eles têm um botão de atribuição caixa lembrar ME, e eles também têm botões para quaisquer outros sinais no motor que pode estar em uso. Além disso, eles têm links para Esqueci minha senha e registrar e nova associação. Você também verá que eles têm uma página de registro que é muito semelhante na natureza. Mas os campos serão diferentes e relativos às informações que serão pedindo ou usuários para se registrar em última análise de qualquer pessoa fora das páginas de amostra. Quer seja índice 12 ou três, você poderá acessar a seção que diz extras. Então, na troca de valete à esquerda, você vê extras e então você vê links de login e registro em ambos desligados. Esses links levam às páginas de ombro anteriores para que elas não forneçam essas páginas de exemplo . Você tem algum outro iniciante e ar para quatro ou quatro páginas e outras páginas que você pode se inspirar. Mas mais uma vez para este vídeo será apenas inspirado no login no registro. Não, eu já configurei o login no Die pode clicar, registrar-se e navegar para o meu registro. E se você tomar nota, você vê que eu já personalizei qualquer forma do meu contexto, certo? Então eu não vou conhecer este aqui uma longa lição. Eu já este recurso é suporte do dedo do pé. As atividades estão incluídas nesta lição, mas vamos passar um curto período de tempo. Parte da personalização é, e algumas das modificações que tiveram que ser feitas, você sabe, é uma instalação. Este facelift não, na tela é o código que eu usei para o meu campo de registro. Mas antes de entrar na minha corte, quero mostrar a vocês a corte original e depois meio que andando pelo Havaí, sabe, transferi as mudanças que fiz no DSO. Se vai fazer o mesmo processo que eu. Então você pode ser obtê-lo em conformidade. Agora, as páginas originais podem ser encontradas dentro da pasta at admin lt dentro de páginas e exemplos e, em seguida, você vê o registro e você também verá o login. Então eu abri os dois no Nope I Plus e vamos começar com o registro agora o inchaço é bem simples. Eles têm um estatuto adicional que eu não me incomodei, incluindo porque eu realmente não vi a necessidade dele. Mas você pode incluí-lo e ver o que há de diferente nele. Mas eu não incluí este. Tudo o resto foi incluído. O assento estrela para Framework icônico é realmente um link Cdn que é digitalizado fora, já implícito pelo nosso uso fora dos arquivos CSS LTTE admin. Mas seguindo em frente. A seção em que estou focada era o Dave com a caixa de registro da turma. Então tudo dentro do Dave, eu copiei o barco, então eu selecionei tudo isso e copiei. Mas então eu removi a seção para o Social Loggins porque eu realmente não tenho nenhuma necessidade para isso neste contexto. Mas fora de que eu tirei tudo fora do cordão ID associado com a página de login ou definir fora que você notou que o corpo tem uma classe chamada transição hold traço em outro log de classe naquele discurso. Então eu criei minha própria vida ao invés de usar a conversa corporal. Eu crio essas ideias. A Andi. Eu reuso essas classes, e é isso que fica seu centro alinhado, você sabe, exibido na página o mais próximo possível da demonstração. Então, de volta ao estúdio visual e no meu tribunal, você vê que eu tenho que dividir o topo com as aulas, segurar que é transição e fazer o login no discurso. E então eu tenho os dados para a caixa de login. Eu tenho o título arrastando, em seguida, dentro do cartão para o título que eu enviei para o gerenciamento de licença do núcleo. I re incluído meu vivo com o resumo de validação, então eu realmente tirei alguns fora do tribunal fora do log original na página re incluído neste formulário. Então eu tenho o tribunal para o resumo de validação. Eu comecei a mudar antigo as entradas para os elementos de modo que a entrada original do modelo teria tido tipo de entrada é igual a e-mail na classe e o espaço reservado enquanto minha modificação para que foi que eu disse entrada. E então eu peguei o S antes de inserir esse e-mail da caixa de texto original para o e-mail em Eu usei que para substituir o tipo é igual a parte porque lembre-se que uma vez usar nossos ajudantes SB, ele tipo off implica o tipo em implica a validação que precisa ocorrer. Mas eu mantive tudo o resto. Eu fiz isso para a caixa de texto E mais e-mail, e eu fiz isso novamente para os últimos quatro livros didáticos. Eu também fui em frente e incluiu a seção para a validação em. Eu realmente deveria ter colocado isso fora deste dar porque então ele realmente apareceria na mesma linha. Então eu preciso colocar isso entre os Dave's. Então eu fiz essa mudança enquanto estamos aqui. E assim a seção que a extensão para a mensagem de validação aparecerá fora do grupo de entrada dá a partir do modelo em movimento. Eu não modifiquei o lembrar de mim no die manteve o sinal em Andi. Eu não mudei nada com aqueles para os quatro, mas senha onda registra links. Mudei os links ou os caminhos para o tornozelo. Toxie é ser discurso traço sobre sobre senha. No original, eles teriam tido uma deriva, eu acho hashtag bem, eles tiveram uma viagem alguma coisa. Então eles estão apontando para as outras páginas de modelo no tema LTTE admin para Esqueceu senha e para Registrar Sarah colocar aqueles com nossos práticos. Mas é claro, mais uma vez, se você quiser inspirar como, por exemplo, para a página do Pastor Esquecido, então você pode fazer isso. Isso é tudo para as modificações feitas no grande campo. E então eu posso passar para a página de registro em você ver que é bem semelhante. Então eu só volto para o impulso agora para que possamos ver o que está acontecendo. Então você vê, é o particípio de lótus. O corpo tem classes, mantenha a transição traço e registre a página do traço na matriz mais uma vez usou o substituto de licença para aquela tag body ali. Eu tenho um fundo para o cabeçalho em, e depois o formulário. Então você percebe que o formulário leva ah, nome completo em. Em seguida, leva senha de e-mail e desativado na confirmação da senha. Então, minhas modificações provenientes da minha página de registro original teriam o primeiro nome e sobrenome. Então, apenas o nome completo Dave Group Live Input Group em duplicado e fez um em s antes primeiro nome em um neste antes sobrenome também se certificou de incluir esses vãos de validação da mesma maneira depois de cada grupo de entrada em cara mudou aveia, o S antes de cada entrada, então tem entrada. Desculpe. Ter senha de e-mail de primeiro nome, sobrenome e, em seguida, ter a senha e senha confirmada em, em seguida, para a submissão I para revestir quaisquer outros links e basta usar o botão dentro. A regra deste botão é Bt e Block. Então, ele se estende para a direita através da tela e, em seguida, para o eu já tenho uma conta. Quero dizer certeza de apenas mudá-lo para sp página ponto barra login. Não fiz mais modificações no DSO. Eu só vou trazer de volta para a tela o que eu fiz, então nós podemos trepar hoje à noite. Então, este é o formulário de inscrição sobre este é mais formulário de arrastar, como geralmente pode sempre pausar o vídeo nos diferentes pontos onde você deseja copiar fora do tribunal de qualquer maneira ter incluído as referências judiciais com este menos. Mais uma modificação que eu fiz foi no meu controle doméstico, onde eu a defini para autorizar. Então o que eu não quero é que ninguém seja capaz de bater o dedo do pé do irmão. Qualquer parte fora deste aplicativo sem ser autorizado é autenticada. Então, sentando-se autorizado no controle doméstico, a primeira coisa que vai para Lourdes quando transe sozinho. A página inicial é a lei em tom. Então vamos testar essa experiência. Então, se eu for para o aplicativo completamente em Incomodado, então ele vai carregar o log no poço. Então deixe-me tentar e Bro diretamente do meu site, e então isso tentaria atrair o controle da casa. Mas reparem que foi direto para o campo de autenticação. Ele não vai a lugar nenhum até que você seja autenticador, porque eu coloquei autorizado praticamente em todo o controle. Então, neste momento, ou tem que autorizar-se ou autenticadores tão desculpe ou registrar para que você possa ter em um cones praticamente resume todas as modificações que eu teria feito para o registro e login páginas. Andi, eu espero que você, você sabe, siga o exemplo, e eu não quero me copiar. Use sua própria criatividade e tente obter o dedo do pé. Olhe do jeito que você gostaria. Olhe, Andi, estou sempre aberta a feedback. Estou sempre aberta a ver o que você está fazendo. Você pode compartilhar suas capturas de tela comigo e todos nós podemos, você sabe, examinar todo o nosso trabalho juntos. 50. Analisar e adicionar mudanças no GitHub: Ei, pessoal, bem-vindos. Mas esta é a nossa lição de revisão final para este modelo, onde teríamos implementado um novo layout usando o tema LTTE admin. Só uma crítica rápida. Teríamos mudado sobre o layout do nosso bootstrap padrão para Leo. Isso teria vindo com o nosso projeto. Implementamos este novo layout onde temos uma barra lateral. Temos ícones intuitivos. Temos mais algumas animações. Eu teria personalizado a página de login na página de registro em então para a nossa página inicial . Bem, eu teria desafiado você a inventar algo criativo, mas para mim, o quê? Que foi autorizado para que quando o aplicativo é carregado, ele requer que uma pessoa para fazer login antes de ser capaz de prosseguir com qualquer outra coisa Após login, o usuário é levado para a página inicial. E mais uma vez, estou interessado em ver o que você teria inventado para sua página inicial. Eu mantive o meu mais simples e informativo para que você possa ver exatamente o que é esse aplicativo. Seja como for, quero que seja criativo e tire o melhor das ferramentas disponibilizadas para você. Então eu vou voltar para nossas páginas de exemplo LTTE admin e mostrar a vocês que temos uma seção chamada documentação onde eles realmente mostram como implementar a maioria se não todos os plugins e componentes que são, você Sabe, incluído em todo este framework Andi edifício Além disso, o fato é que admin ele usa todo o bootstrap para componentes. Então, qualquer coisa que você pode usar a partir de bootstrap que temos vindo a usar sobre para saber que ele também está disponível dentro admin. Só com, você sabe, uma pequena reviravolta já que eles teriam dado seu próprio talento para comer estilo. No entanto, você pode ler toda a documentação, olhar para os outros plugins em componentes ou os outros componentes JavaScript e ver que, você sabe, pode haver coisas lá que você gostaria de usar que eu não fiz usar nas minhas aulas. Mas você pode ir em frente e implementar. E como sempre, se você tiver problemas ou dificuldade sentir, Frito, deixe-me saber e eu vou ter certeza de ajudá-lo. Como eu disse, esta seria uma breve revisão como nós estamos apenas indo para você sabe, fazer um balanço sobre o que fizemos em, em seguida, ir em frente e verificar em para levantar-se. Então eu apenas clique com o botão direito do mouse em minha solução no clique Commit Então eu forneço minha mensagem de check-in. Então eu só disse que eu implementei o tema e adicionou necessário rápido em então eu vou apenas ir em frente que a corrente em, em seguida, cometer tudo na pia depois de completar este exercício. Nosso tribunal não está atualizado no link para este repositório ou para este set off alterações serão incluídas nesta lição, bem como qualquer outro recurso. Quer dizer, precisa? Se chegou até aqui, quero felicitá-lo. Bom trabalho até agora mais uma vez, seja criativo. Tente algo do lado da caixa. Andi, se tiver algum problema, me avise e eu ajudarei 51. Funções de repositório síncrono: Ei, pessoal, bem-vindos de volta neste vídeo nós estaremos olhando para converter sobre funções em funções síncronas e começaremos com o repositório. Não, eu abri o ponto de registro CS que vê ocasionalmente aquele arquivo CS, que é o tribunal por trás da nossa identidade. Idade é um fogo ConEd para fazer logon. Eu só estou usando este arquivo toe retratam o que uma função assíncrona parece assim teria visto funções assíncronas em uso. As estradas são de aplicação, Andi. Às vezes eu os uso, às vezes um contornado ao redor deles. Mas hoje queremos ver como os implementamos e por que eles estão lá. Então, quando a função assíncrona é realmente implementada como parte ah fora do paradigma de programação paralela que é voltada para fazer ou trimestre em um pouco mais eficientemente e usar recurso do sistema é um pouco mais eficiente. Tudo bem, então o que acontece é que no núcleo são ponto net core e em trabalho diferente, ou que ele era algumas funções assíncronas e eles costumam usar a palavra um dissipador no final das funções síncronas está aqui Tasing. Você tem o sinal de senha em um acho que você tem um monte fora deles. Mas eu acho que você também vai notar que as definições de função também são um pensamento. Então você vai ver algo como público enfrentando tarefa em, em seguida, o nome fora da função, certo? Então, quando é evitar a função, é o que parece. É apenas público enfrentando tarefa andan on get Então, se você tem um vazio com certeza que você quer fazer internee função síncrona, você faz algo assim. Você substituiria esse vazio pela tarefa de palavra-chave. Tudo bem, toda vez que você está fazendo uma função chamada toe une função síncrona, ele tem toe tem a palavra-chave longe. Então, em qualquer lugar que você veja uma pia, você vai ver a palavra-chave “trigo”. Dito isso, são três novas duas horas. Eu vou estar olhando para facilitar tarefa em esperar Andi Você também vai notar que quando é um vôlei retornando Foshan que você tem tarefa andan tio suporte sobre o tipo de dados sendo devolvido e seguida, fechar o tio Bracket Então essas são coisas que eu quero olhar para fora como nós começar a re fator são cordão para ser um síncrono eu só vou toe minimizar as áreas aqui sobre eles seria para começar com a minha fera repositório olho. Então aqui sabemos que definimos todas as funções que todos os outros repositórios herdam. Então eu quero que cada repositório herde na função assíncrona. Tudo bem, então certo. Não, eles são synchro nous seu padrão a maneira que nós os fizemos inicialmente, o que eu vou fazer é ver tarefa abrir colchetes angulares em torno do tipo de retorno, que neste caso, é I coleta fora do tempo t ser classe comum e, em seguida, eu fechar o colchete angular em, entender para ir em frente e fazer isso para o próximo, que é bom por I d. T ser a classe genérica que queríamos encontrar em. Então estamos com os colchetes angulares. Então, estas são todas as funções de retorno do vale que acabamos de ver. O padrão é que vemos colchetes de ângulo de tarefa são propriedade do valor ou excluir o tempo que está sendo retornado e, em seguida, fechar colchetes angulares. Só vou fazer isso por todos os outros. Tudo bem, então não, todas as funções dentro do meu arquivo baseado no repositório são um “synchro “nós. Então eu só vou dizer que em então eu quero começar uma transformação com o tipo de folha. Então eu vou para o I sair, digite nossa positividade. É um choque concreto na foto do cartaz. Desculpe, Sair do repositório do tipo. Não. Deixo Tyra Buster na aula de concreto quando chegar lá, verei a linha vermelha. Sei que a linha vermelha está lá porque está dizendo que bem, Eu não implementei as interferências. Isso é realmente porque eu acabei de mudar todas as funções para ser um síncrono, mas eu ainda tenho apenas as mesmas implementações Cronus aqui. Então vamos passar por estes juntos vai mudar cada uma dessas funções para ser uma enfermeira síncrona para que comece com cria. Então, temos um touro público criar. Então, como acabamos de discutir, a primeira coisa que precisamos aqui é uma pia pública, e então vamos ver a tarefa. E então eu subi o tipo de retorno, que é touro dentro de suportes angulares. Não, nós vamos ter uma linha verde aqui porque está dizendo, bem, bem, eu vejo que você está implementando algo uma pia, mas você não está fazendo nada. Uma pia? Não. Mais uma vez, as funções de corrida que nos são dadas geralmente têm a palavra-chave que ele pensa no final. Então, como anúncio é dado aqueles comprar em trabalho diferente. Mas eu deveria ser capaz de fazer uma coisa. Então, se eu chegar ao fim aqui ou se eu apenas remover o ponto, a palavra soma-se ao médico e então eu controlo o espaço. Então eu vou ver adicionar uma pia, certo? Então não, nós adicionamos, entanto, no entanto,em uma pia agora outra linha verde está aparecendo porque lembre-se, sempre que estamos fazendo uma chamada de função de atenuação, precisamos precedê-la com a palavra-chave aguarde. Sei que está feito. Você notou que todas as linhas se foram, todos os avisos se foram, e não está satisfeito que esta é uma boa implementação fora em uma função de pia e uma chamada de função cantar . Agora podemos fazer a mesma coisa para excluir. Então, mais uma vez, precisamos da palavra-chave uma pia depois do público. Em seguida, dizemos ângulo de tarefa, suporte o tipo de retorno em, em seguida, os leads. Bem, então precisa de algo assíncrono. Então eu vou olhar se há alguma remoção, não é. E quando faço isso, não vejo, tirei uma pia. Certo, então há algumas funções que eles nos dão que têm em uma pia gêmea são alternativas lá ? Alguns que simplesmente não, você sabe, maneira escolher Andrew. Então eu vou deixar deletar, como é para não em movimento para os próximos. Na verdade, vou fazer isso para todas as funções aqui dentro. Eu estou realmente apenas em copiar a tarefa A pia nos primeiros suportes angulares e, em seguida, entender o ritmo do dedo do pé que em cada um que eu ir para a direita? Então não há mais de encontrar Tudo é o nosso público enfrentando suporte angular tarefa. Devolvendo nossa coleção de tempo e prejudica nosso tipo de licença, em seguida, sob parênteses no final desse direito em, então o que iria atender nesta temporada poderia ser uma versão A pia fora da lista para? Não. Quando eu chegar ao fim das palavras para policiado sobre controle de imprensa e espaço, eu veria inteligência aparecer se houvesse mais opções sobre. Como você pode ver, não há nada aparecendo da pessoa. O Randall. Há algo aparecendo que realmente é porque não há uma pia sendo fornecida agora. Isto é porque não tenho a biblioteca de que preciso. Preciso ter certeza de que estou usando, acredito que o Microsoft dot entidade framework core. Tudo bem, então a coisa é, esse link nos dá algumas funções incríveis. O que? Estamos realmente limitados a oferta Aleen Cust, mas a estrutura de entidade da Microsoft ou biblioteca realmente abre. Então, se você não vê as funções de corrida do irmão dele, porque você não tem essa biblioteca, se você está vendo, então significa que você tem a biblioteca, e isso não é problema. Então, se eu voltar para a lista e então eu pressionar o espaço de controle, então você vai ver que eu estou recebendo o turista é pia. Tudo bem. Então, quero dizer, se você está se você ainda não está vendo isso, então talvez haja um problema maior em, você sabe, você pode me contatar, mas você deveria estar vendo para listar ele afundar direito em. Então, mais uma vez, uma vez que estamos fazendo um evento, ligue para Tony Sink. Precisamos preceder com a palavra-chave. Uh, espere. Tudo bem. Isso resolve isso. Então podemos continuar com isso. de Acabamosdecolocar isso de volta na prancheta. Eu vou ser apenas colá-lo para cada função em definido. Há uma pia? Há um finalmente pia em DYP recebeu essa chamada com um peso se movendo. Andi, tenho estes telemóveis e não modifiquei isto. A definição para a declaração dessa função na classe de repositório do tipo folha de olho . Ah, deixe como está. Mas eu passo no dedo do pé um que é realmente implementado. Então ele existe, fazendo isso no reboque. Synchronous Existe alguma idéia? Lá vamos nós, propósito, tudo bem. Então, por favor, observa que se você sentir para colocar na hora mesmo se você colocar na morte que para o cabeçalho para o telefone mostrado para ser uma pia e tudo se você não colocar o nosso na placa de função e você vai estar vendo um estreito que não é Realmente dizendo o seu cabelo. Você está perdendo a palavra-chave flexibilização. Oh, espere. Desculpe. Certo. Então lembre-se de colocar isso o aguarda porque o erro realmente não diz que está faltando. Tudo bem, então a seguir temos salvar fazendo que um assíncrono há um cofre muda uma pia. Lá vamos nós em mergulho, evitá-lo com a palavra-chave. Aguarde para atualizar torná-lo uma pia. Existe uma atualização de uma pia. Vamos verificar. Ok. Não há uma atualização, A cantar. Tudo bem. Mas então você percebe que salvar está me dando um erro de repente. E isso é porque salvar está retornando no tipo de tarefa boule quando este é esperado para retornar um touro. Então, sim, vocês podem ver Task Bull aqui sobre este é um touro tarefa virando. Mas você ainda vai ver a flecha mais uma vez. Se você está fazendo uma chamada toe na função assíncrona, se ela é definida por você ou é uma que é dada a você pelo framework, você precisa da palavra-chave. Eu espero. Então, uma vez que eu coloquei de um jeito, é do que todo mundo está feliz. Tudo bem, então você pode não ser capaz de você sabe, fazer a parte do núcleo F é síncrona. Mas pelo menos se tivermos isso implementado como assíncrono, então seríamos capazes de chamar ou fazer uso dessa funcionalidade assíncrona. Agora, dado que há alguns casos em que podemos torná-lo assíncrono em alguns casos em que não podemos , você sabe, você cinza lá fora, você pode colocá-lo em alguns lugares e não tê-lo em alguns lugares. Isso é perfeitamente bom. Quero dizer, o fato é que você pode ter a opção. Algumas coisas podem não ser. Tudo bem, então se você voltar para criar sim, nós tínhamos o anúncio virado, mas então nós estamos chamando outra função de cantar aqui. Então esta é uma chamada de função de atenuação. Este foi dado a nós pelo sistema. Mas então esta é a nossa função definida, que é uma coisa. Então eu preciso dizer um peso em seguida para excluir enquanto removido não tem um incrível Nós temos uma cultura da fortuna em uma função pia. Então olhe para o que acontece se eu não fiz esta função inteira é síncrona Então eu vou estar ficando no erro aqui em então ele estará vendo não pode implicitamente converter o tipo em. Então eu diria Oh sim, porque você acha que eu preciso de um trigo e eles olham para o que acontece quando eu digo Oh, espere. Recebo um erro ainda maior porque o fato é que se eu vou chamar a função síncrona do que a função, fazer a chamada também precisa ser definida como uma tentativa síncrona. Então essas são pequenas coisas. Pequenas pegadinhas. Mais uma vez, os erros podem não ser tão claros às vezes sugestão não é a melhor ou a solução real que você pode querer na situação. Então, é bom ter uma compreensão sobre o que cada situação causa para não. Quando olhamos para trás, vemos que temos implementado eu deixar repositório tipo com sucesso. Andi sabe que um repositório para o tipo de folha é bom para que possamos passar para o outro. Então, se eu sair para o repositório de pedidos que eu vou ver a mesma linha vermelha teria que fazer o mesmo tipo fora cirurgia na mesma coisa para deixar um local. Então o que eu vou fazer ou o que eu sugiro que você faça, é um vídeo positivo. Tente estes por si mesmo. Eu vou fazê-las e quando você continuar, podemos comparar nossas anotações. Tudo bem, alguns de volta e eu vou pegar com o repositório de pedidos de licença. Então, em primeiro lugar, eu sou modificado. Deixe solicitante positivamente girando o poço. Deixo a postura solicitante, girando a única definição ou declaração desculpe no reboque, uma função de tarefa. E então eu comecei a mudar tudo o resto em uma tarefa muito como por que eu não deixei repulsa lá alguns que estavam em exceção em Bem, realmente. Os pedidos dos empregados, tive que refratar o tribunal porque o que aconteceu é que eu estava voltando. Encontrar todos os pontos onde? Tudo o resto que você notar que onde não tem nada na lista para nesta situação não tem em uma pia. Então f core realmente dá-lhe essas funções de ligação as funções de ligação sendo o desgaste e os turistas e os primeiros nossos padrões e esses tipos de funções que eles lhe dão quando você está interagindo diretamente com o detalhe, seja assim como primeiro nosso padrão nesta situação, ele está interagindo diretamente com o banco de dados. O para listar um think está interagindo diretamente com o banco de dados. No entanto, nesta situação eu tive que definir uma chamada variável. É pedido de licença aguardar os resultados da chamada de função find all que eu mudei para uma flexibilização em. Então eu retornei o pedido de licença que eram realmente para que essas funções dispostas não estão interagindo diretamente com o banco de dados mais, mas não há interagir com apenas outra variável, certo? Para que algumas situações você veja o link com a pia A. Às vezes você não vai ver. Tudo bem, então é por isso que era importante que nós incluíssemos a Biblioteca Entity Framework porque a biblioteca funciona contra o banco de dados não é necessariamente os conjuntos de dados vindo ou os resultados de dados provenientes do banco de dados. Então, depois do fato ao tribunal um pouco para que eu pudesse usar esse peso na final no dia, retornar os resultados de acordo quando nós apenas, você sabe, reformar que tudo o resto, no entanto, era praticamente em linha com o que fizemos no repositório tipo folha. Tenho certeza que não teve dificuldades lá. E se você fez, então você sabe que você pode se sentir livre para pausar o vídeo em rever essas funções enquanto eu estou rolando através e focando em cada uma. Muito bem, então a seguir temos a alocação ou cartaz I leave, que tinha três funções personalizadas adicionais, que eu também transformei em tarefas. Tudo bem, então, na implementação, eu vou ter que fazer fatoração semelhante. Então, neste caso, estamos voltando. Encontrar todos os pontos foram você sabe, todo o resto. Em vez disso, eu criei uma variável de distância para os resultados fora do encontrar tudo em. Então eu retornei resultados pensei que eram para que você sabe que você pode, de fato, acordo. Você pode ter dificuldade na cara do pé se você acha que ele contou a eles. Parabéns para. Se não, então aqui está a nossa maneira que a nossa própria filha e dificuldade podem ter enfrentado. Quanto aos outros genéricos criar excluir órbita. Andi é existe e encontrar por eu encontrar fora todos aqueles olhar o mesmo. Estamos praticamente temos o para listar uma coisa onde o primeiro, o nosso padrão uma pia em, em seguida, para os outros personalizados onde tivemos que encontrar tudo em nós extraídos sobre eles adicionou a mesma coisa onde eu apenas bem, o resultados do encontrar tudo dentro de uma variável em, em seguida, retornou a operação contra os resultados fora do encontrar tudo a mesma coisa para o recebe alocação licença por funcionários e tipo rand, Tudo é praticamente parece parecer. O legal é que nossa posição Torrey deve se comportar de forma mais eficiente ao consultar o banco de dados ao realizar nossas pedreiras e tal. Mas, em seguida, quando eu construir, você vai ver que temos um monte de erros fora tão bem, esta área parece que é apenas ah perder muito. Acho que posso ter mudado algo em uma pia. Deixe-me verificar isso. Então deixe-me votar. Eu acredito que lá vai eu fiz isso um pensamento na vitória alguns mas eu não fiz isso na definição. Então deixe-me fazer isso rápido. E então eu fui para construir no DSO Eu vou mostrar a vocês os erros que eu estou esperando ver . Então eu sei que vou ter erros. Este não é um exercício feito porque acabamos de ver que toda vez que você chama e função assíncrona , você precisa da palavra-chave. Eu espero agora em nossos controladores, nós estávamos chamando essas funções de repositório em sua forma síncrona em Não, que nós as mudamos para serem assíncronas. Precisamos voltar para nossos controladores e modificar a forma como interagimos com essas funções são os resultados dessas funções. Então, no próximo vídeo, vamos passar e vamos limpar nossos controles para ter certeza de que, ou você sabe, nós não temos épocas 52. Controladores e ações: Ei, pessoal, Bem-vindo de volta neste vídeo será olhando para converter nossas ações do controlador sobre a função causa no código de reboque que suporta são repositório assíncrono. Nós também estaremos revisando outras instâncias em que usamos as funções síncronas em estar fazendo você saber, estão tirando o máximo proveito do que eles têm para oferecer. Então eu estou começando com o controle de tipos de folhas. Creio que este é o mais fácil de começar. Foi bastante simples sobre nós vamos apenas nos converter. Nós vemos todas essas linhas vermelhas todos esses erros em nós vamos apenas ser refratário nosso tribunal uma maneira que sabemos que é necessário para suportar sobre nenhum cabo repositório assíncrono alguém para começar com Index Noto, facilitar este dedo do pé Orwell Avaliar esta seta Primeiro temos que entender o que está acontecendo aqui. Então encontrar tudo é, ah, função que sabemos que acabamos de converter para ser um relatório Andi síncrono é, bem, o repositório tipo folha em. Depois, vemos aqui que está bem a dar-nos um adiantamento sobre as duas listas. Então está basicamente dizendo que eu não posso apenas listar em uma tarefa síncrona para que você vai descobrir que o encadeamento método vai se tornar um pouco mais dificuldade não vai ser um perfeito como costumava ser , porque aqui eu não posso simplesmente encadear nas duas listas. Mesmo se eu colocar na distância que sabemos quando temos ah, função. Isso é uma coisa que precisamos dizer do nosso jeito. Mas então estamos em Contra um erro aqui porque precisamos mudar a função real em dois e um pia um. Então, para fazer isso, precisamos de um dissipador na tarefa, e então o tipo de retorno é resultados de ação. Então nós envolvemos isso no suporte angular em mesmo que não é suficiente dedo do pé fixar a seta porque eles ainda estão terminando com a seta. Então isso basicamente vai nos dizer que não pode mijar? Bem, ele baseado palestiniano não pode listar algo que é uma tarefa. Tudo bem, então o que eu saí para fazer foi remover a lista para do achado tudo em. Então eu vou ter que adicioná-lo ao mapeamento. Então não, o a removido deste para listar a partir da linha final para a linha de tipos de folhas porque agora ele está dizendo que bem, esta é uma coleção de olhos sobre eles. Mapeando besta na lista. Então eu só vou dizer, OK, OK, deixe os horários. Mas isso eu posso fazer assim. Ou eu poderia ter introduzido outra variável onde eu disse deixar tipos para listar e, em seguida, essa variável. Qualquer um funciona. O fato é considerado fora do se livrou da linha vermelha, e podemos avançar. Tudo bem, então os detalhes têm que ter o mesmo tratamento. Então, eu estou indo apenas para copiar tarefa de atenuação em seu colchete no lugar para os resultados de opção aqui em. Então parecia que ele não pode apenas executar os nós em uma tarefa. Certo? Assim, o não operado a explicação não pode ser aplicado toe operar e off touro tarefa para que alguém a fazer é apenas introduzir uma variável. Certo? Então você acha que um pouco oferta fatoração hostil ir no dedo do pé, facilitá-lo esta mudança. Alguns querem dizer que esta nova variável existe é igual dedo esperar, e então eu vou chamar relatório. Isso existe. Eu disse que o filme mostrando chamada que estou colocando aqui como uma chamada de sorte facilitando. Então eu vou apenas passar na variável dentro do original. Se declaração lá vamos nós. Todo mundo não é um campista feliz. Se você olhar para esta função, ligue aqui via tipo de licença que as pessoas encontram por idéia, nenhum amigo por idéias. Filho assíncrono foi ver um peso em então que deve cuidar disso, então você pode não ver uma flecha, mas quando você vê a oportunidade, você sabe que é qualquer coisa chamá-lo. Apenas certifique-se de colocar o fora direito. Agora. Criar não está fazendo nada assíncrono. Não está fazendo nada de especial em algum lugar para deixar isso, então às vezes você vai convertê-los. Às vezes você não vai. O fato é que se você convertê-lo e não é necessário do que bizarro, ajustes de estúdio sugeriram que você não converte que todos, já que você não está usando os métodos síncronos de qualquer maneira, são assim para o post para criador colocando um perseguindo tarefa, ação corrupta, colchetes tio resultante. Então eu estou apenas rolando, lentamente procurando outras funções de apagamento. Eu ce sucesso aqui é criar, que está em uma pia, então eu vou dizer isso fora e eles notaram que esta linha vermelha vai embora porque o resultado fora esperando a tarefa para completar é o tipo concreto. Então, sem a forma como ele estará recebendo a partir deste formulário, Shonka estará recebendo o touro tarefa. Estou aguardando os resultados da tarefa. E então o resultado da tarefa é o verdadeiro direito booleano? E é por isso que é processado ainda um melhor assim ou processo sobre um erro. Então, avançando, vamos para as edições que colocamos em nossa tarefa, então temos que fazer o mesmo tipo de sua existência aqui e estão aguarda os resultados do relatório. Então eu estou apenas digitando isso porque eu realmente não quero perder o que está na prancheta algum copiando e colando. Então eu posso apenas remover esses, hum, outros elementos. Então não, aguardamos o resultado disso existe e fazemos a declaração if, eu também espero o achado por i d. e então seguimos em frente, mudando o poste no reboque na tarefa de facilitar a órbita. Nós o amamos porque isso é assíncrono. E então nós passamos para a exclusão, digamos, veja, depois que você se acostumar com digamos, veja, o padrão e não é realmente tão difícil apenas converter seu tribunal para usar todas as funções de revestimento ou o padrão de revestimento que O núcleo da luva tornou tão fácil para nós implementar, certo? Então, em qualquer lugar que você tenha uma chamada no joelho. Você apenas certifique-se de que uma função é assíncrona em seu estão aguardando a chamada. Tudo bem, então é isso para deixar o controlador tipo. Olhe para isso. Nós terminamos. Então, se fizermos uma compilação Randhawa e ver o ar está voltando do controlador tipos em , podemos dizer que o arquivo, mas ainda temos pedidos de licença e alocação de licença. Então nós vamos fazer pedidos de licença juntos mais uma vez, então eu vou deixar vocês para fazer a alocação intravenosa, e então nós vamos apenas comparar notas. Tudo bem, então para o índice, eu só vou converter essa tarefa no dedo do pé. Então. Só estou olhando. Então encontre tudo o que precisamos para aguardar os resultados. Encontre tudo em. Não vejo mais nada de cima não é implementado ou esfregão. É isso que você acha? - Existe? Estou a cantar. Bem, não há. Então, isso é bom. Podemos ir ao longo da minha licença. Vou encontrar isto de forma síncrona. Então eu coloquei na tarefa minha licença. Em seguida, obtemos pontos doloridos onde estamos usando gerenciador de usuários. Tínhamos que arranjar um lavatório para o usuário. Eu disse que não resultado. Então lembre-se que eu disse que quando você esperar, então você está recebendo o resultado da chamada como um tipo concreto. Foi o que aconteceu aqui. Então que os resultados realmente nos dão sobre o tipo concreto? Não, eu não acho que os resultados é realmente ou chamar a função de atenuação como esta é realmente fazer uso completo fora da funcionalidade assíncrona que está sendo oferecido dedos dos pés. Então o que eu vou fazer é remover os resultados do ponto em ir dedo do pé, esperar esta chamada. Tudo bem, então não, nós temos o gerente de usuário ponto ainda usamos uma pia e nós não temos os resultados médicos. Então o que aconteceu é que, neste momento, eu não queria sobrecarregá-lo com a ação em facilitar só para que pudéssemos usar o gerenciador de usuários, usar uma pia, então eu deixei isso sozinho. Eu só usei esses resultados. Então você vê que você pode usar esses resultados, ou você pode apenas tornar o bloco inteiro assíncrono para facilitar a chamada de atenuação real. Certo? Sem seguir em frente. Vemos que temos o relatório de licença apenas pairando. Vejo que esta é uma tarefa. Este também é uma tarefa. Eu sei disso também porque, bem, eu fiz as mudanças. O meu programa. Certo. Então eu entendo Aguarda essas duas chamadas minha perm superior em então não há mais causa do que Uday Singh para que possamos avançar em detalhes me a função ou a opção. Desculpe. Os resultados da ação. Nós fazemos isso. Você acha que estamos em peso. Em seguida, passamos para pedidos aprovados vai torná-lo uma pia sobre. Então não podemos esperar. Então note que se eu colocá-lo fora nesta linha, é monitor de usuário. Gerenciador de usuários, obter usuário um dissipador em então é que os resultados. Então, com o resultado de que como ele não vai funcionar então é um ou outro. Então, se sua função não é uma pia, então você pode usar os resultados do ponto. Se fizer uma pia, use a palavra “G”. Ah, espere e remova os resultados dos pontos. Tudo bem. Então podemos esperar por todas estas causas e notar quantas Terras desapareceram quando eu disse que esperaria isto. Eles estavam realmente recebendo sobre o tipo de concreto, que era necessário para começar quando eu coloquei fora uma lágrima. Esses outros erros abaixo devem desaparecer então. Sabe, são as linhas verdes aqui. Então essas linhas verdes estão dizendo que eu vejo que aqui chamando função assíncrona, mas também usando o material sinker. Então, se eu superei isso, então você vê que o Responsável estava dizendo que isso é o que ele pode simplesmente inserir esperar. Tudo bem, então a mesma coisa que eu tenho dito é algo bizarro estúdios sugerindo apenas colocar um peso na frente de sua função, porque tudo bem, então vamos em frente. Eu gostaria de saber a situação aqui em que eu tentei protegê-la da complicação, mas hey, onde Brad? Aqui no DSO eu faço resultados de rejeição. Assíncrono no cara. Faça uma vantagem fora do gerenciador de usuários recebe usuário um dissipador e vê-lo longe em. Então isso deve cuidar de algumas coisas. Eu também vou esperar o achado por eu chamar sobre isso. Eu fui esperar a chamada para atualizar e eu movo ao longo para criar um síncrono Andi inserir meus são ervas daninhas onde é necessário e você vê quantas coisas são resolvidas lá. Então talvez eu não fale tanto? Não, porque acho que vocês estão entendendo. De qualquer forma, eu só vou seguir em frente Eu só vou estar fazendo essas mudanças. Você sempre pode pausar um vídeo em qualquer ponto em que, você sabe, eu posso ter me movido muito rápido e rebobinar onde ele não entendeu. Em def, tudo isso se sente e se sinta livre para me alcançar. Então podemos ter algum diálogo nosso sobre o que estava sendo feito. Tudo bem, então eu só estou me movendo. E eu acho que eu estou quase terminando com este controlador onde um tenso um pedido fez qualquer pensamento inserido um trigo inserido um trigo novamente. Então, para mim, o objetivo é não ter linhas. Se eles são verdes azuis são vermelhos, mas especialmente ler a palavra de Deus significa que não vai correr. Mas se eles são verdes ou azuis, basta remover todas as linhas para que a qualquer momento excluir não foram aplicáveis. Deixe o controlador de solicitação. Então, seguimos em frente para deixar um controlador de localização no DSO. Você pode pausar o vídeo aqui, tentar este sozinho. Eu vou fazer isso, e então nós apenas arquivos de computador. Tudo bem, então eu estou de volta, fiz as mudanças alguém para passar por cada função no DSO. Bem, eu fiz as mudanças, e claramente eu não as completei porque aqui temos os tipos de folhas com espera para o achado, tudo na era para listar que vimos quando vamos deixar tipos, controles, entender. Me dê esse ajuste e veja isso para listar deste lado. Se você for com uma solução mais elegante, fique à vontade para compartilhá-la. Hum, mas então nós podemos seguir junto com este. Então esse é o índice. Tornou-se internamente uma função síncrona fora do curso. Coloque no meu lugar. Está se movendo para definir licença colocar em que esperamos são nós para remover os resultados de ponto do gerenciador de usuários na instrução if, eu também inseri o superado Então, mais uma vez, uma vez que você tem uma função chamada na função assíncrona, Você pode apenas colocar as ervas daninhas bem. Funciona em quase qualquer lugar e o que dizer quase em qualquer lugar. Tudo bem, então. Eu inseri o fora. Aguarde aqui a criação para os funcionários da lista. Esperei que o gerente de usuários obtivesse regras. Obter usuários na zona rural uma pia, remover os médicos. Olha, isso estava lá em detalhes. Ok, então eu perdi um. Então eu fiz isso aqui para o mapeamento para os funcionários. Mas eu perdi este. Então é bom comparar notas. Tenho certeza que você me apontou se você fez um bom trabalho. Então, para as alocações foram caminho. Está recebendo as alocações de licença pelos funcionários. Andi, isso é feito no mapeamento. Então as filosofias diferem em termos de como lidamos com essas causas de função e foram colocadas. Então realmente, na verdade, talvez para fins educacionais, na verdade, você poderia ter feito a chamada de função aqui. Minha preferência é colocá-los em um terrível. Então eu iria definir uma variável onde eu iria armazenar o que eles usam que cobre volta a partir desta função. Ligue. Então eu passaria aquele verbal no reboque. Este, hum, single completo para eles. Certo? Então essa é a minha preferência, realmente e verdadeiramente. Mas vamos deixá-la. Eu não sou fator alfabetizado para citar muito porque, bem, isso é novo. Um novo tópico, Andhra. Fatorizá-lo para esse fim não é absolutamente necessário. para trazer este tópico através, então vamos apenas seguir adiante. Então, para a edição , esperamos aqui pelo post para as edições. Aguardamos o registro. Nós também ah, sucesso do trigo em Isso é tudo para converter ou controladores. Então, se eu fizer outra compilação, então eu vejo que isso foi realmente muito bem sucedido. Então uma compilação foi bem sucedida em eu estou realmente indo para executar o programa e entrar em alguns desses controladores. Apenas certifique-se de que não quebrou nada. Tudo bem, então eu estou executando meu aplicativo e eu amo ser bem-sucedido. Deixe-me só, você sabe, tomar a dela. Certifica-te de que estou a ver o que espero ver. Então aqui eu vejo que eu estou trazendo sobre tarefa de crença do que isso teria sido chamando nosso achado tudo bem, se eu ir para deixar alocações e eu posso clicar em alocar funcionários, todas essas funções fora deles é durante qualquer exceção . Então eu acho que eles foram deixar pedidos aqui em então lembre-se que todos estes obter ou qualquer coisa que está recuperando dados. Todos eles teriam feijão bem convertido em função assíncrona. Então eu acho que é seguro dizer que não quebramos nada quando eu apenas clique em nosso próprio, eu ainda tenho todas as funções que eu tinha antes em. Eles estão todos funcionando muito bem, então o aplicativo geralmente apenas faria melhor uso fora do sistema. Recurso é quando consultar o banco de dados e recuperar dados em bem com os usuários interagindo com ele em, você verá os pobres fora funções assíncronas ao longo do tempo. Como você sabe, carga do sistema aumenta ele vai fazer quer-nos novamente. Melhor uso fora do recurso está disponível. 53. Analisar e adicionar mudanças no GitHub: Ei pessoal, nós estamos na seção onde nós só vamos rever o que fizemos e depois verificar as nossas mudanças para ficarmos juntos. Então, mais uma vez, apenas uma revisão rápida. O que fizemos nesta seção foi implementar nossas funções assíncronas em nosso repositório. Então, cada um fora de nossas interfaces obteve as declarações de tarefas para as funções. As classes de país que teriam herdado da base ou do repositório que está herdando da besta também teriam obtido essas declarações assíncronas ou modificações. Também nos certificamos de incluir entidade, núcleo de estrutura para que pudéssemos tirar o máximo proveito das funções assíncronas que estrutura de entidade nos proporcionou. Em seguida, estendemos esse trabalho bit off para nossos controladores e ações porque uma vez que você tem sido função assíncrona, a maneira como interagimos com as mudanças. Então o inicialmente que interagimos com ele e inicialmente o tribunal teve que ser refratado um pouco toe facilitar essas mudanças. Então em todos os lugares que tínhamos uma função chamada para, uh não uma função síncrona, tivemos que colocar a palavra-chave um trigo duro e também queremos dizer que tudo para ações é síncrono, então isso simplesmente significa que daqui para frente podemos escrever tudo sincronicamente ligado. Aproveite ao máximo o mecanismo de programação piloto que o Núcleo Dot Net nos dá qualquer buraco neste vídeo. Vamos verificar as nossas mudanças. Então, como de costume, basta ir para a nossa solução, clique com o botão direito, clique em comutações. Então ele nos dirá que temos que colocar uma mensagem. Então eu estou indo dedo do pé, começar a digitar e eu vou ver o repositório alterado. Deixe-me começar tão rápido. Tudo bem, então minha mensagem lê Change Depositor Controllers em reais ins para suportar programação assíncrona . Tudo bem, então essa é a minha mensagem de confirmação. Então vamos deixar este carro ir para cometer tudo e afundar, que nos oferecerá cometer as mudanças localmente e depois sincronizar com o digital. Assim que isso estiver terminado, podemos sair da rota ir para obter hub em. Vamos ver as mudanças mais recentes cometer sobre a mais recente calma. Aconteceu há alguns segundos. Vamos ver a mensagem de mudança lá. Então, como de costume, eu vou compartilhar o dedo especificamente esta chance com você em para que você possa rever essas mudanças em seu próprio país 54. Revisão dos padrões de programação: Ei pessoal, bem-vindos de volta. Nesta seção, vamos explorar diferentes padrões de codificação e explorar por que precisamos deles. Então, neste vídeo em particular, eu só quero dar um passo para trás, olhar para o que sai da caixa com ou aplicação central MVC.net. E então podemos ver por que teríamos implementado nosso padrão. Porque enquanto eu brevemente aludi à funcionalidade out-of-the-box, nós realmente apenas fomos para implementar o repositório que Patreon faria, sem realmente explorar por que precisamos da arena de vasos de repositório. E então, por extensão, vamos olhar para as fraquezas do repositório sobre cern e todo o fim de semana bem, ambos implementando a unidade de padrão de trabalho e quais serão as vantagens e desvantagens. Então vamos começar com isso. Eu tenho o projeto de gerenciamento de liderança e o que eu vou fazer é gerar um controlador e suas respectivas visões usando o mecanismo de andaimes out-of-the-box. Então, mais uma vez, nós brevemente ser fez os começos onde fomos para adicionar para o controle de seguir e para adicionar, adicionar novo controlador. E, em seguida, podemos selecionar controlador MVC com vistas usando anúncio Entity Framework. E então selecionamos nossos modelos. Então eu só vou usar, vamos dizer sair. Vamos encontrar um tipo fácil de folha. Então deixe firme, desculpe, não o tipo de repositório. Tudo bem. Então eu vou usar o tipo de folha para gerar, para brigar. Agora, em partes anteriores, eu teria, eu teria por erro usar o modelo de exibição, digamos uma alocação de exibição dos EUA ou elif tipo VM, certo? Eu usaria VM vitalícia e levaria a classe contextos de dados. E isso foi um erro da minha parte, porque uma vez que você inclua a classe de contextos de dados, o que ele fará é automaticamente assumido que esta é uma tabela de banco de dados. E se ele ainda não estiver incluído na pasta de dados, ele irá incluí-lo no contexto do banco de dados do aplicativo. Tudo bem? Então, se você Bach e você ver qualquer folha amarrar VM e qualquer uma das VMs até ouvir no conjunto BB, você pode removê-los com segurança. Será que eles não deveriam estar lá. Mas quando você está andaime usando uma classe que já está lá. Então, neste caso, vai ser usando controladores de tipo de folha, exibições de controlador com Entity Framework. E, em seguida, selecionamos o tipo de folha e deixamos o aplicativo no contexto de banco de dados lá. E eu só vou permitir que ele nomeie o controlador diz deixar tipos um controlador e problema antigo porque RAW tipos controlador, então adicione isso e esta atividade, você não necessariamente tem que fazer o que eu estou fazendo. Só estou fazendo isso para fins de demonstração só porque queremos nossa discussão. Tudo bem, então uma vez que andaimes é feito e foi feito com classe de dados, então você vai ver que ele inicializa contextos. Então, o contexto do banco de dados do aplicativo, esse é seu gateway ART para os dados. Tem o contexto. Então este é o padrão MVC pronto para a caixa no trabalho, certo? M de pé para o controlador CFO de visualização modelo V4. Certo. E nós já passamos pelo que o MVC, o que cada componente, aqueles. Então isso em si é realmente um padrão. Este padrão foi desenvolvido porque o que aconteceria é que você teria muita lógica, como o que acontece no controlador sendo misturado com o HTML, que está quase na vista. E então a conexão de dados e comunicações de dados acontecendo bem ali. Então eles tentaram abstrair essas três funcionalidades distintas no M para o material de dados do modelo, V para a visão, o material visual, e ver para o controle da coisa lógica. Agora, quando obtemos isso fora do controlador de caixa e ele injeta o contexto de banco de dados aplicativo. Você vai notar que ele realmente gera todo esse código para você. Então você tem a capacidade de ler ou ler todos os tipos de contexto. Então isso é apenas contextos de link simples, tipos de folhas para listas. Já passamos por isso, certo? No entanto, o primeiro nossos padrões quando você está indo para criar Gua ligar para a classe de dados. E podemos modificar esta lista para dizer que não queremos trazer uma criação de um dia. Ele iria para trazer tudo isso ou alguém coloca em adição, eles não são já uma parte do modelo, então podemos ignorá-los usando esta lista. Tudo bem, então isso é tudo fora da caixa e é fácil para um iniciante pegar e começar a usar e isso não é problema, ele funciona para Microsoft nos deu um bom modelo a partir do qual começa. A razão pela qual começamos a implementar um padrão em cima do que sai da caixa tem a ver com habilidade de minton e possivelmente legibilidade. Significado, neste caso, deste bind, home maintainable É isso quando temos que modificar esta classe de dados. E então temos que adicionar campos para deixar a cidade porque então o negócio volta. Então Censo hey, você sabe, tipo de licença precisa ter estes EUA adicionais, nós adicioná-los. Claro, nós modificá-los e terá que lembrar de voltar para o controlador, estender esta lista de campos desossados para a lista estendida para as edições. E então esse é um ciclo que tem que ir e voltar todas as vezes. E acho que isso não é sustentável, certo? Então implementamos o que chamamos de MVVM em cima disso, em cima de todo esse mecanismo. Então MVVM é abreviação para modelo, vista. Ver modelo. Tudo bem? Então MVVM basicamente é onde trouxemos o modelo de visão. Então nós abstraímos o tipo de folha realmente se parece e colocá-lo na forma de modelo de visão. De modo que, em seguida, se livrou deste bind, a dependência sobre este bind listas. E então poderíamos saber, dizer como o modelo de visão deve ser. Então ele vai ligar automaticamente para a folha de amarrar VM, certo? Campos adicionais precisam ir e nós apenas vamos deixar o tipo VM e adicioná-los e eles são adicionados universidade porque estamos olhando para o modelo, nós não estamos mais olhando para este vínculo, pelo menos. Tudo bem, então podemos limitar o que queremos através de todos os nossos modelos de visão. Então esse é o primeiro padrão que nós provavelmente poderíamos prestar atenção e dizer, ok, então você pode ver onde o Model-View-ViewModel foi realmente implementado. Então nós adicionamos um modelo de visão para o tipo de mídia entre o modelo real, que é o tipo de folha vindo do vidro do tipo de dados, e a visão em si, que é a exibição dos dados. O ViewModel adicionou ou subtraiu os campos que consideramos necessários para as operações. Então, passando do MVVM, vamos falar um pouco sobre algumas das citações de acesso a dados geradas automaticamente. Então nós temos contextos, ponto-ponto, IV tipos, ponto ac, este que primeiro começou padrões. E nós os temos por todo o lado, certo? Eu tinha que encontrar etcetera, etc. Não. A coisa é que se eu precisasse levantar fantasia maneira de conseguir Butler deixar tipos. E eu acho que nós meio que tivemos que fazer algo para obter os pedidos de licença para um determinado ano ou alocação de licença de alguém para um ano específico. Então isso significa que cada vez que eu estou recuperando esta lista depois lembre-se de colocar no meu WhereClause e, em seguida, colocar no lambda onde e o que quer. Digamos, digamos que o padrão é, eu disse que deixaria alocação o que estamos usando tipos de folha aqui. Então isso só me anima, inundado. Então eu teria que lembrar de fazer isso cada vez que eu sou tendência para pool buck deixar tipos tardes no índice e qualquer outra tela personalizada após romboid quando eu estou fazendo uma lista drop-down onde os tipos de folha depois lembrar de escrever a consulta exatamente como esta toda vez. E então isso leva a uma quantidade de repetição. E embora possa ser viável para um pequeno aplicativo em um ambiente corporativo, ele não é sustentável porque as regras de negócios podem mudar quase a qualquer segundo. E você sabe, você precisa ser capaz de modificá-lo aplicativo rapidamente com base nesses novos requisitos. É por isso que introduzimos essa obstrução que chamamos de repositório. Tudo bem, então deixe-me pular para o repositório. Assim, do repositório tipo Leaf. E isso está implementando a partir do repositório do tipo elif e por extensão do repositório do B. Então tivemos o repositório base porque sabemos que há, lá. Estas são as funções básicas que sempre estaremos fazendo. Nós sempre estaremos fazendo uma quantidade de multidão financiando isso. E então podemos sempre fechá-los Mies, exatamente como encontramos qualquer um deles, dando-lhe seu próprio repositório. Então, para o tipo de folha, eu podia ver que quando eu estava encontrando tudo para os tipos de folhas, eu queria conhecer, feito. Então, essas consultas personalizadas escreveram um 1s, um protease e usado em outro lugar se ele precisa ser atualizado, eu só tenho um pré-instalado. Então essa é uma das vantagens do padrão de repositório. E tudo onde fazer padrão Repositório pode ficar bastante irritante é no caso em que temos que interagir com muitos repositórios e em ser Request Control é um exemplo perfeito disso. Então temos que ter referência a três repositórios diferentes porque precisávamos interagir com três tabelas diferentes. Neste controlador. Quero dizer, funciona. Chegamos até aqui fazendo isso. Mas então, você sabe, para mim estava realmente ficando um pouco 1B e porque era como, oh, yeah, eu sei que eu preciso deste repositório. Oh, sim, não, preciso dessa, et cetera, et cetera. Então é por isso que estamos olhando para implementar a unidade de padrão de trabalho, que é onde teremos um IV ou repositório genérico Bs. E uma implementação de repositório que será suficiente para todas as tabelas que precisam acessar. Ou com todas as tabelas que precisamos acessar em vez disso. Tudo bem. Então isso foi apenas uma rápida análise de por que nós colocá-lo no repositório Potter, e eu espero que você vai apreciar por que a manteiga repositório e não foi necessário até este ponto. Mas então, claro, muitas vezes durante as atividades de alocação de licenças, você vai perceber que, ok, isso foi um pouco irritante. C neste caso, este sou eu por local onde fazer isso duas vezes em pedidos. Tivemos que fazer isso, você sabe. Então pode tornar-se um pouco irritante quando você tem que estar trazendo 56 repositórios diferentes, mesmo wafer, você só precisa de uma consulta não contra uma das tabelas. Então, no próximo vídeo, o que vamos fazer é sentar ou modificar nosso repositório base para ser um pouco mais genérico. E então estaremos implementando nossa unidade fora do padrão de trabalho e olhando para como isso pode nos ajudar a ter código mais centralizado, código mais personalizável, e até mesmo estender algumas das funcionalidades como com o nos encontrar, porque há momentos em que tivemos que encontrar tudo e, em seguida, escrever um lambda expressões de campo em cima dele. Então vamos implementar todas essas coisas onde podemos criar funções filtráveis e ter um repositório mais poderoso. Então fique por perto. 55. Implemente um Repositório genérico: Muito bem, pessoal, bem vindos. Então vamos direto ao assunto. Portanto, a primeira tarefa é modificar nosso repositório base. E tudo o que já fizemos um bom trabalho antílope City para ser bastante genérico. E então temos as implementações concretas por classe. Depois de ser genérico, inicialmente, eu queria modificar as funções aqui, ou seja, o while, o find, todo o find by ID. E a facilidade existe, certo? Agora o que eu estou pensando é que certo, não, eles só estão permitindo que ele para descobrir se ele tem uma identificação, mas e se houvesse uma condição diferente que você quisesse encontrar, então o que você teria que fazer é encontrar tudo e então fazer um Se conseguires o que estou a tentar conseguir aquele emprego, sei que és suficientemente proficiente em LinkDin. Toda a dessalinização funciona. Mas e se eu quisesse descobrir se há algum pedido de licença sem particular d dois estão começando em uma determinada data ou Mini inteiro, que as solicitações de licença são XYZ, certo? Então eu teria que escrever consultas personalizadas em cada um dos repositórios para cada um, certo? Então temos os nossos contratos e temos o nosso repositório obeso. - Claro. Mas então se eu quisesse consultas personalizadas para pedidos de licença do que eu teria que ter um monte deles aqui. E o que realmente está fazendo em qualquer um deles é olhar para o fogo e depois filtrar tudo o que é baseado em encontrar todos os resultados. E se estendermos o achado tudo isso? Poderíamos apenas incluir nossa expressão como um parâmetro. E, em seguida, se a expressão estiver presente, então ela irá agir como nosso filtro automaticamente. Certo, então é isso que eu quero fazer, aleatório. Então, em vez de dizer para encontrar tudo em branco ou você sabe o que eu vou fazer, eu vou realmente começar do zero. Então, sem modificar o repositório base, eu só vou fazer um novo. Então vamos começar de novo e fazê-lo do zero para evitar qualquer confusão. Então eu vou criar uma nova interface. E deixe-me fazer isso por baixo. Então, no mesmo arquivo, vamos ter um arquivo, que eu vou apenas criar uma interface diferente. Interface pública. E eu vou chamá-lo de genérico, e vamos chamá-lo de s1, I repositório genérico. E vai seguir o mesmo tipo de incrementação. Tem a abstração que é T. E estamos especificando onde é suposto ser abracadabra. Tudo bem? E então eu vou ter praticamente as mesmas funções. Tudo bem? Mas então, como eu disse, vamos ter modificações para mantê-los implementados. Eu tenho a tarefa ou seja, coleção. Quero dizer, bem, é “parses “não é para “alist “de qualquer maneira, então provavelmente poderia apenas ver a lista do começo, certo? E então o encontrar tudo vai ter três parâmetros e eu estou apenas quebrando a linha para que eu possa mostrar cada parâmetro individualmente. Então temos a capacidade de escrever uma expressão. E eu estou dizendo a essa expressão que vai ser um telefone que Sean envolve, que é FUN. C, desculpe, que envolve um genérico que é o mesmo T genérico, alguma forma de booleano. E eu estou chamando isso de expressão. Então isso é uma sintaxe. Então este é basicamente o tipo de dados para uma expressão lambda. Tudo bem, então quando você está em uma expressão lambda que se parece com j2, e então você tem seu lambda r e q dot id é equivalente a algo. Escreva essa expressão lambda que você escreveria. Literalmente, este é o tipo de dados que facilita o, então esse valor seria armazenado nessas expressões. Tudo bem? Então Q representa o chá e seu booleano aqui é representado por essa expressão no final dele. Tudo bem, então é isso que estamos facilitando, permitindo que alguém diga “encontre tudo” e então coloque a expressão lambda se você tiver, se você quiser adicionar um campo que tipo de encontrar tudo desde o início, então faça com isso. Mas então não é o tempo todo que alguém quer um filtro, então precisamos torná-lo nulo por padrão. Então, se nenhum é fornecido, então nós apenas assumimos que, bem, nós apenas trazemos de volta todos os registros. Se isso não for nulo, então precisamos configurar a função de tal forma que ele fará a filtragem e, em seguida, retornar. Também quer adicionar a capacidade de, para arte ou por alguém para dizer FUN NCI. E eu vou especificar que o querível para o que quer que seja que genérico, certo? E então eu vou dizer que eu pedir ou pedir que eu consultável. Lá vamos nós. Pedido de consulta para o mesmo genérico, certo? Então é isso que essa função será. E eu vou chamar esta ordem BY e também igualmente distante nulo, certo? Porque quando quisermos encomendá-lo, suponha que você queira filtrar e, em seguida, queríamos encomendar o filtro. E vendo algo errado aqui, um suporte angular extra. Lá vamos nós. Tudo bem, então este segundo parâmetro nos permite ver Q dot, Q dot ordem enviando, ou poderia apenas ser ordenado por, realmente não importa. Mas este SecondParameter nos permite especificar que queremos ordenar por uma determinada coluna de qualquer forma. Tudo bem, então é isso. Nos parâmetros para. E então, quando queríamos incluir, Lembre-se que, às vezes, para extrair dados e às vezes precisávamos incluir. Então eu acho que o que nós fizemos, nós apenas passamos e fizemos como um atacado incluir para eles no repositório. Deixe-me ver se consigo encontrar algum exemplo dessa mentira aqui. Nós não incluímos, então fizemos o encontrar tudo o que dissemos toda vez que você encontrar tudo, por favor inclua o tipo de folha e inclua o funcionário. Mas isso não é necessariamente verdade. Não é sempre que encontraríamos tudo o que queremos incluir. Então, aqui mesmo, o Inclusive não é opcional, especialmente aqui em baixo não é opcional, certo? Então podemos realmente implementar algo para torná-lo opcional. Então o que eu vou fazer é criar uma lista ou um parâmetro que será uma lista de string tipo. E nós chamamos este inclui e nós criamos para nulo, certo? Então isso significa que se eu quiser encontrar tudo e eu estou incluído em Sinto muito, eu estou interessado em incluir os dados relacionados. Então eu posso listar o que eu queria incluir porque eu posso querer uma mesa e não a outra. Certo. E em outra situação, talvez eu não queira incluir nada. Tudo bem. Então eu só quero encontrar todos os registros para esta tabela em particular sem quaisquer inclusões, sem qualquer filtro, et cetera, et cetera. Então, isso nos permite tipo de reduzir o número de consultas personalizadas que temos que estar escrevendo para obter bac certos dados que eu acho que aqui como nós temos alocação de verificação. Bem, esse é um costume. Isso é bom. Mas à medida que vamos ao longo de um onde refatorado, tudo isso é leve. Este recebe alocação por empregado bem aqui. Derivamos uma consulta personalizada para obter as alocações e, em seguida, colocar no filtro. Então, o que estamos fazendo permitirá que você simplesmente chame findall e adicione seu filtro de acordo. Então vamos seguir em frente. O próximo que eu gostaria de modificar é o find by ID. Não, eu não quero especificar um achado por id porque pode haver outros, vamos ver, outros fatores que eu quero usar para encontrar um registro específico. Então, em vez de apenas encontrar pela IBM quando dar-lhe o mesmo tipo de expressão ou a capacidade de facilitar uma expressão. Então é eu vou apenas copiar isso e usá-lo como um parâmetro em vez disso. E então eu também vou dar a você a capacidade de incluir outros cartões vermelhos ou outras tabelas relacionadas, certo? Então você tem a expressão e, em seguida, você pode incluir, se você assim o desejar, se você precisar em tudo. Tudo bem? E então para o Xist, digamos que é a mesma coisa. Talvez queira descobrir se existe alguma coisa. Não só com base no IID, mas com base em outra coisa, são baseados em alguma expressão. Então esta expressão é muito poderosa porque mais uma vez, ela nos permite colocar em quase qualquer expressão aqui, e ele apenas executará essa expressão e os resultados desejados. Tudo bem, então isso é praticamente tudo para a configuração do repositório genérico. Agora vamos dar uma olhada na configuração da classe concreta que será herdar de nosso novo repositório genérico de alta qualidade. E de acordo com a convenção de nomes, vou chamar este repositório genérico. E de acordo com onde estamos implementando e fomos implementados em repositórios mediante aviso, adicionamos um BCE, mas que tínhamos várias interfaces herdadas para contratos. E então, por extensão, tivemos várias classes herdadas de repositório, certo? É por isso que, no final do dia, tivemos que injetar tantos repos em todos os controladores naquele momento. Então desta vez eu vou apenas criar uma nova classe e eu vou chamá-la de repositório genérico. Então, uma vez que temos esse repositório genérico, eu preciso dizer a ele que você é relativo a um genérico chamado t. E você vai herdar I repositório genérico, que também é relativo a um t genérico e onde t é uma classe. Agora feito como sabemos, precisamos implementar nosso repositório Art, desculpe, nossa interface. Então vá em frente e faça isso. Terei todas as nossas funções como esperado. Mas agora a nossa injecção vai parecer diferente. A primeira linha vai ser uma linha familiar. Será o nosso contexto de banco de dados de aplicativos. E então a segunda linha é nova. Vai ser para um conjunto de banco de dados do tipo T. Agora teríamos visto o conjunto de banco de dados, essa sintaxe que usamos para isso, incluindo as bibliotecas ausentes, teria visto essa sintaxe antes de um conjunto de DVD porque no aplicativo DB contexto e cada vez que adicionamos uma tabela, tivemos que usar conjunto de banco de dados. E, em seguida, especificar o tipo de dados, pão, empregado, solicitação, etc Nesta situação, no entanto, conjunto DB vai ser inicializado para o que quer que t é. T é muito genérico. Então é apenas um conjunto de banco de dados para qualquer classe genérica que vai entrar. E então, claro, sabemos que toda vez que fazemos uma nova classe, nós apenas injetamos através de nossa inversão de arte de injeção de dependência do contêiner de controle, certo? Então nós temos o contexto sendo inicializado, mas nós inicializamos para ser igual ao contexto, ponto de contexto de t. Então nós não somos dependência. E inicializando este. Onde inicializá-lo depois, depois de inicializar contextos RDB, em seguida, dizemos a tabela, direita, que você é do contexto e seu deslocamento, Eu vou dizer cria um conjunto de banco de dados de entidade T. Então, sempre que você vê que estes dois estão no serviço de inteligência aqui o t é realmente um genérico. Então eles chamam de t ou classe de qualidade ou uma entidade ou t, seja lá o que for. Isso só significa, alguma classe genérica eu estou preparado para facilitar qualquer classe que é passado para mim. Isso é o que eu realmente quero dizer. Então ele cria BID disse que pode ser usado para consultar e ver instâncias do que quer que seja. Tudo bem. Repare no que quer que seja. Então é muito que eu continuo. O genérico da porta é provavelmente usado demais por ninguém, é muito aberto, certo, onde não ser tão específico como estávamos em nosso repositório, certo? Então o repositório genérico está nos permitindo facilitar um conjunto de recursos para quase qualquer tabela, seja o que for, eu sou capaz de interagir com ele como eu preciso de dois. Tudo bem, então vamos começar com as mais simples, as funções mais simples para implementar. Vejamos as nossas criações. Então, para os Cria, o que queremos fazer com o criador? Criado é bastante simples. Nós só precisamos ver como ele e bem, eu preciso realmente atender isso é síncrono porque é claro que nós queremos tirar o máximo proveito da programação assíncrona. Então já é uma ordem síncrona são as tarefas deste lado. Deixe-me ter certeza de que há uma pia neste vermelho. Então assíncrono para Criar. Tudo bem. E então o que vamos fazer aqui é ver DB. Bem, a razão pela qual eu fiz uma pausa, eu só notei que nós ainda estamos retornando um bool, então nós vamos mudar isso um pouco. Então, nesta fase, não vamos devolver um booleano. Só estamos fazendo uma tarefa, certo? Então podemos voltar e remover o bool dessas operações. E também não precisamos de salvá-lo. Acabei de fazer uma cópia e paz. Vamos implementar o CVE em outro lugar. Então eu vou apenas comentar isso para que você possa ir em frente e fazer essas alterações na interface do repositório epigenético. O único que deveria retornar um booleano existe pelo que eu acho que seriam razões óbvias, mas os outros estão realizando tarefas. E não precisamos do C, pelo menos não aqui. Isso vai para uma seção diferente. Tudo bem, então vamos voltar. E assim, porque acabamos de fazer essas atualizações, precisamos dar o bool desses fluxos através de uma demonstração de atualização, tudo, tirar todo o salvamento até o clima de atualizações. E então nossa interface deve parar de reclamar. Tudo bem, então de volta para criar. Tudo o que realmente vai acontecer aqui é que somos peso. E então podemos dizer sublinhado DB Sono dB é nossa conexão porque db não é inicializado para o que está certo. Db representa essa tabela. Mas também usa habilidades muito genéricas para adicionar, remover e atualizar, certo? Então db.json assíncrono. E o que estamos adicionando é, tudo bem, e é isso. Nós acabamos de adicionar T. Então seguindo esse exemplo, desculpe, não T, minha entidade ruim, desculpe, mais concentração lá. Entidade T, então estamos adicionando entidade, certo? Tudo bem, então com a exclusão, o que queremos fazer é esperar no ponto do banco de dados pontuação, remover e remover Ising. Ok, não há remoção de aliasing. Então isso significa que isso não pode ser uma tarefa. Tudo bem, então apenas remova e nós estamos movendo a entidade. Tudo bem, então deixe-me ir em frente e modificar isso. Isto não é uma tarefa, isto é nulo ou assim, um pouco de refatoração, mas sabemos que isso ia acontecer. Então, há um golpe lento sobre o engenheiro para dedilhar para evitar. Eu acho que as atualizações também não têm um assíncrono. Então vamos mudar isso para evitar daqui. E, em seguida, encontrar atualizações James ponto para anular. E, em seguida, a atualização é bastante simples, é a atualização do ponto de banco de dados, certo? Eu sei que a assíncrona está lá, então nós pegamos a entidade, tudo bem. Então, quando fazemos embora uma linha, quando fazemos exclusões, uma linha cria uma linha. Tudo bem? Agora vamos olhar para um, como eu disse, nós estamos lidando com os mais fáceis primeiro, certo? Então, o próximo que eu gostaria de fazer, o existe. Então vamos olhar para o existe aqui. Quando precisamos descobrir se alguma coisa existe, significa que temos que colocar todos os registros na tabela. Então eu vou inicializar uma variável i querível do tipo T. E eu vou chamar uma consulta. E isso é igual a sublinhado DB. Embora, uma coisa a notar, DB está indo para arte, Desculpe, I consultável é basicamente como um tipo de dados que ainda está vinculado ao objeto de banco de dados. Então, quando é quando você entrou apenas a consulta vai ser forma consultável, que é por isso que nós geralmente temos que analisá-lo para listas são para i inúmeras para outras operações, mas em wearable é como ainda tethered é como uma coleção dos objetos de banco de dados reais quando você analisá-lo. Ele não é mais um objeto de banco de dados armazenado na memória, portanto, ele não está mais anexado ao banco de dados. Então, dentro deste repositório manteiga e queremos manter tudo o que eu possa usar. É por isso que continuamos usando AI consultable em todo o lugar porque ele queria ficar tão ligado às necessidades óbvias quanto possível, direto para wearable para liberá-lo na memória de um aplicativo. Então eu questionável de tipo T consulta, certo? E então poderei saber que o retorno C. E eu vou esperar aqui, que significa que isso precisa ser afundado, certo? Devolva a nossa consulta. Então consulta não incorpora a versão wearable ICC de todos os registros no banco de dados. E fui ver um médico. Qualquer cena “A”. E adivinha o que posso fazer. Posso simplesmente passar a expressão. Então lembre-se que a expressão, o valor dessa expressão teria seria algo como q, r, qualquer token lambda. E digamos que a identificação é equivalente a dez. Tudo bem, essa é a aparência desta expressão. Então, se eu fizesse essa sintaxe aqui, funcionaria. Então, em vez de codificar essa sintaxe, certo, especialmente porque está sendo genérica. Então essa é uma parte importante. Observe que há uma linha vermelha sob q porque q ou realmente não, certo? E a expressão lambda aqui realmente não faz nenhum sentido porque tudo é genérico. Consulte o Bb, ele não sabe se ele tem um campo ID ou um campo de nome ou não há nenhum arco aqui. Então eu não posso codificar o, o cheque para ver se o ID existe aqui, porque ele não sabe se ele não ID q não sabe o que ele é. Pode ter, e é por isso que estamos abstraindo sua própria expressão para que nós, como programadores nesta situação, quando queremos saber se é o ID, nós apenas escrevemos com base no id e, em seguida, com base na tabela que estamos consultando, que será determinado pelo que passamos como T, então a expressão pode ser executada. É por isso que estamos a ser vendidos. Então, mais uma vez, genérico usando a expressão da palavra e não codificar nada, total. Certo, então esses são os primeiros dias antes que essa expressão funcione. Então vamos olhar para o próximo fácil, que seria encontrar pelo petróleo apenas para multar. Então esse é esse, certo? Apenas bem. Então deixe-me torná-lo assíncrono. Tenho certeza que teremos operações assíncronas que podemos realizar e ver como tudo isso funciona. Então, a primeira coisa que fazemos é obter o conjunto de banco de dados da mesma maneira que fizemos no, na saída I consulta consultável é igual a db. Então, depois de obter a nossa consulta sendo igual a db, o que eu vou fazer é passar e incluir alguém para dizer If inclui. Então lembre-se que nosso parâmetro inclui nos teria cadeia de caracteres ou uma lista de representações de cadeia de caracteres dos meios de tabela no caso de que não estava claro. Então isso significa que quando estamos tentando encontrar algo, se quiséssemos incluí-lo depois, digamos, nova lista, nova string, lista, certo? E, em seguida, inicializá-lo para ter aspas, nome da tabela vírgula aspas tabela e faz um vales nupciais. Então eu estou vendo se a variável include não é igual a nulo, então indica claramente que queríamos incluir coisas com o que é retornado, certo. Então nós saímos para cada um e um será para cada um. Digamos que eu vou chamá-lo de mesa, só para deixar claro que estamos incluindo tabelas, certo? Assim, para cada tabela que está listada em que inclui. Vamos dizer “consulta”. Lembre-se, consulta é igual a consulta. E temos acesso à inclusão. E então eu posso dizer uma mesa, certo? Porque esta será uma representação fora do nome da tabela. Então eu estou vendo isso incluir o que quer que venha em inclui isso. Vá em frente e inclua. E então, no final de tudo isso, eu posso agora retornar e o resultado da consulta primeiro nosso padrão. E adivinha que expressão. Certo, então, francamente, na descoberta, a pessoa X não deve ser anulada. Porque o que mais você vai encontrar se isso é anulável? Tudo bem, então eu estou realmente indo para remover o PNL de lá e deixe-me voltar para o repositório e remover o PNL daqui. Então, o que é anulado é o que você quer incluir. Mas você deve me dar um especialista em biografia, que eu vou encontrar um registro ou como não faz sentido, certo? Então, nós retornamos a sua consulta. Primeiro, nossa assíncrona padrão. É por isso que estamos chegando lá. Linha vermelha assíncrona, expressão ponto-e-vírgula. Então é assim que implementamos o novo achado para ser genérico. E então saiba para o maior, que é o bom cão. E este é o maior porque temos os três parâmetros. Quero dizer apenas a vaga das lentes britânicas, todas elas na tela ao mesmo tempo. Tudo bem, meio que em curvatura. Temos que atender se há uma expressão. Se precisarmos pedir por e se houver algum incluso. A parte preliminar vai parecer muito parecida o que fizemos com as existências e a multa. E essa é a primeira linha. Começamos sempre como quase todos FOX. Podemos levar tudo para a parte inclui, novamente, esta cópia que e trazê-lo para baixo para a bala final. Vou reordenar a citação, arte otimista. Então temos nosso objeto de consulta, Shore. A próxima coisa que quero fazer antes de ir para o inclui. E a próxima coisa que quero fazer é descobrir se havia uma expressão. Então eu vou ver se a expressão não é igual a nulo. Certo? Então, há um filtro, certo? Se houver um filtro, a consulta não deve ser igual a ponto de consulta onde expressão. Certo? Porque então se quisermos encontrar algo que somos criados por, desculpe, Líbia e encontrar algo simples onde o número de B em nossos DS é maior do que um, etc. Então você diria que ponto q é maior que 21, isso é mais fácil. John, certo? E, claro, tudo isso seria em uma expressão lambda. E isso seria erupção Oppian No.2. Nós estamos bem. Então, em vez de exigir que você obtenha todos os registros e depois se inscreva ciente, eu estou dando a você a habilidade de chamar esta função, este golfe encontrar tudo. E então você pode me dizer os especialistas que você quer, certo? E, em seguida, se isso e eu ficar armazenado em especialistas em se isso tem conteúdo que nós apenas aplicar a cláusula where em seu nome. Certo. E então nós temos as inclusões e nós apenas passou por 1A inclui aqueles. Então não vou repetir essa explicação. Então temos outro parâmetro que é arte ou por alguém para fazer a arte ou, infelizmente, não. Eu não acho que neste momento você realmente importa. Se você fizer o primeiro 1, primeiro r em lotes de todos, menos que eu acho que talvez em termos de eficiência, aplicar a expressão primeiro. Poucos são obrigados a fazer as inclusões e os ideais de ordenação em vez de ordenar todos e depois filtrar. Então, nesse sentido, pode fazer sentido, mas no grande esquema das coisas, não é nem aqui nem aqui. Então fazemos se a ordem por não é igual a nulo, então fazemos uma coisa semelhante. Dizemos que a consulta é agora igual a si mesmo. Ordenar por e, em seguida, a expressão R. Bem, o valor OrderBy que foi passado, certo, já são vistos para um exemplo do que isso poderia ser, certo? Oh, na verdade, não. Então isso não exigiria muito. Ordenar por ordem, por, desculpe, ordenar por seria a função que usa o parâmetro. Então, se você olhar para trás para a definição e isso é uma função, certo? Então ordenar por é uma função e ele vai tomar como seu parâmetro que eu consultable t, que neste caso consulta. Então consulta não é igual a qualquer que toda a função retorna depois de ter ordenado que eu querable. Tudo bem? E, em seguida, no final de todos estes fim de semana retornar como nós consultar pontos e tudo vai em alist de qualquer maneira, então lista dois. Certo, então barulho quando soltarmos e enviarmos de volta. E deixe-me ver qual é o erro. O método não é assíncrono, então vamos facilitar. Lá vamos nós. Tudo bem, então isso é tudo para configurar nosso repositório genérico, certo? Então fizemos duas coisas. É só uma breve recapitulação. Primeiro, implementamos este repositório genérico e genérico. Eu só uso o mesmo arquivo se você quantidade em um arquivo diferente, tudo bem. Eu só uso os mesmos arquivos que eu terei o código antigo comparado com o novo código com bastante facilidade, certo? Você disse que tudo o que fizemos um pouco de refatoração vai com chamado Booleans, que vai para a função segura e chins fora de tarefas para funções vazias irregulares, certo? E então implementamos nosso repositório genérico para ser o mais genérico possível. Porque mais uma vez, quem o quer? Esta base de código ainda facilita todas as outras classes, todas as outras classes de dados. Então todos para não existir, Senado Ruanda pode existir, deve ser capaz de usar isso. Em vez de cada vez que introduzimos uma nova tabela, temos que introduzir um novo repositório. E aquele jogo de apoio do E14. Isso tirará todo esse salto entre e terá um código sólido B, excluindo quaisquer circunstâncias atenuantes que exijam código mais personalizado, é claro. Então, quando voltarmos, vamos olhar para implementar nossa unidade fora do arquivo de trabalho e, em seguida, vamos ver o trabalho real começando. 56. Implemente a unidade do trabalho: Os nossos rapazes. Então, onde Bach e saber o que vamos estar fazendo é configurar nossas unidades i de trabalho e a unidade de arquivos de trabalho. Certo, então vamos aos nossos contratos e criar uma nova interface. E este vai ser chamado de unidade de quatro. Tudo bem? E uma vez que isso é criado, claro que você tem que se lembrar, torná-lo público. E então começaremos a implementar certas coisas. Então, a primeira coisa, bem, na verdade eu queria herdar de eu descartável, descartável. Então, em nossos controladores, há um método implícito de coleta de lixo chamado descartar, certo? Enquanto nós queremos fazer é uma espécie de cria uma sobrecarga onde quando ele está descartando ele inclui esta unidade de quatro objetos. Porque as unidades de trabalho, como temos visto, foram giradas todas as tabelas em todos os arquivos. Em vez de ter 20, os depositantes terão uma unidade de trabalho que tem acesso a todos eles. Então, ele meio que vem com o preço de usar memória volátil assim por diante para lidar com a eliminação corretamente e coleta de lixo corretamente. E então você estará implementando AI descartável junto com nossas unidades onde 1ou M0 Dot executou Nolan, nós recebemos tweets. Você vai ver como vai funcionar. Tudo bem, então quando queremos fazer nossa unidade de trabalho, o que temos que fazer é fazer uma referência ao nosso repositório genérico e às diferentes tabelas que devem ser incluídas. Tudo bem, então deixe-me fazer, deixe-me, eu, e isso faz sentido. Então eu projetei repositório, eu não me lembro que eu repositório genérico que acabamos de implementar, certo? Eu repositório genérico requer classe concreta, por isso é no eu sou o trabalho em si sem dúvida começamos a especificar as classes concretas, certo? Então, o primeiro copo que podemos usar, tipo, deixar tipo, não vm, tipo ludus neve. Tudo bem. Deixa-me livrar-me dos Moguls. Então deixe o tipo e então eu posso chamar este tipo de folha simples. E então eu vou apenas duplicar este mundo e outros. Então, o que mais temos pedidos web e saímos, deixar solicitado. O tipo de dados deixará solicitações. Tão semelhante a sempre se senta os conjuntos de banco de dados onde temos o tipo de classe, mas então temos a versão pluralizada que está fazendo interior, só queria que convenção de nomenclatura. E então temos a alocação. Certo, então eu estou deixando a unidade i de trabalho, ou pelo menos eu estou criando referências entre a alocação de licença, a alocação ingênua de classe concreta e o repositório genérico. Então não, através dos depósitos genéricos ou podemos fazer todas essas coisas maravilhosas com qualquer um desses óculos. Uma base de código. Tudo bem. E não precisávamos de nada para o empregado. Desculpe, sei que só tenho três mesas. Esses são os três, mas eu tenho certeza que você já pode ver que em um sistema empresarial quando você tem 20 tabelas, seria mais fácil apenas gerenciá-los todos aqui com uma base de código do que estar implementando 20 contratos e 20 correspondências repositórios para essas tabelas. Certo, então uma vez feito, temos mais uma coisa, que é um meio e que é salvo, certo? Então precisamos colocar as unidades de força, para que isso resolva isso. Porque, mais uma vez, ele pode estar manipulando operações de várias tabelas. Então ele só vai lidar com a mesma operação uma vez. Então sabemos que quando implementamos uma interface, temos que ter nossa classe concreta. Todas as fontes vão para o repositório, vá em frente e adicione uma nova classe. E, em seguida, a sua chamada unidade de trabalho, e adicioná-lo. E então você sai do trabalho, herda da, bem, você adivinhou, Unidade 04. E então vamos em frente e implementamos isso. Então deixe-me explicar o que vai acontecer. Então você vê, porque nós implementamos eu descartável que nossa função chamada dispor assim como os outros que declaramos nossas células. Tudo bem, então a primeira coisa que eu quero fazer é implementar, implementar e injetar, inicializar uma instância do nosso contexto de banco de dados. Tudo bem, então vamos em frente e fazer isso. Contexto de obrigação DB. E em nossa construção, trabalho duro, contexto de obrigação DB, contextos. A segunda coisa que está um pouco a fazer é implementar versões privadas de cada um deles. Então, para cada Wanda pública que teríamos feito na, na interface, precisamos ter objetos particulares que os representam aqui em nossa classe concreta. Então eu vou fazer isso rápido. Justin, para lubrificar este orwell, deixe-me duplicar esta vez e trazer isto para cá. Isto tende a ser eficiente com a minha cópia e colagem e chamar este tipo de licença. O que eu vou duplicar. E então você está em todos os pedidos e você está sozinho. Tudo bem? Então isso foi devido, mas então nós temos nossos contextos dv aplicativo privado e nossos objetos privados que vamos estar usando para retornar as obstruções e encapsulamento. O público é o público que enfrenta um. O que realmente estaria devolvendo nosso privado e o que está no privado, r. Então vamos começar com a forma como implementamos para nossos tipos de folhas. Então você pode ver que os comunistas automaticamente com um get and set. Mas o que realmente estamos fazendo é. Chegando, não precisamos sentar nada. Tudo bem, então o que obtemos de nossos tipos de licença será o objeto, objeto privado para deixar tipos, certo? Mas então precisamos fazer uma verificação de conhecimento. Vamos ver se é nulo. Em seguida, retornamos uma nova instância do repositório genérico com o contexto. Tudo bem? Então essa linha de código seria algo como se fosse equivalente a nulo, em seguida, retornar. Isso é se você estiver usando tipos de licença de operador ternário ou retornar uma nova instância do tipo folha. Desculpe, eu sabia incenso no repositório genérico seguinte tipo de folha e com o contexto. Tudo bem, então é por isso que nós estamos para obter o contexto nesta unidade de onde porque o repositório genérico, lembre-se, esta bala de currículo lá tem a construção de que requer o contexto. Então vamos apenas passar o mesmo objeto de contexto direito através. E será relativo ao que quer que a classe foi especificada, que neste caso é o tipo de licença. Tudo bem? Alguns, recebendo alguns erros aqui, na verdade, usando os novos recursos eu vou ver Sharpie que não tem que fazer isso fica em si. Prefere usar a minha flecha ali, certo? Então, essas doses de RO deixam tipos se for equivalente a nulo. Mas então eu vou encurtar isso um pouco mais. Vou ver os tipos de licença R0. E então eu posso ver neste ponto, ponto interrogação, ponto de interrogação igual, certo? Então esta é a verificação nula é como uma verificação nula que diz se isso é nulo, então retorne isso. Então ele vai devolver isso. E se não for, devolverá isso. E eu estou tendo essa era, eu acho que nós pensamos, oh, isso não deveria ser somente leitura. Você não deve ser lido à direita. E, claro, preciso do ponto e vírgula. Então, novamente, fazer tudo isso em uma linha como esta, certo? Se é mais ou menos legível para você, eu não tenho certeza, mas basicamente. Sempre que temos uma função rápida que precisamos escrever nas versões mais modernas do diagnóstico C-sharp use esta seta como uma seta lambda, e então motins o que quer que seja que queremos devolvido quando isto é chamado, esta construção é chamado. Tudo bem? E ok, então aqui, aqui está dando um erro porque ele disse que nós não estamos implementando. Certamente não precisamos dos conjuntos, então deixe-me voltar e removê-los. E essas probabilidades de habitats que colocamos porque não estamos colocando nada na unidade de trabalho onde queremos chegar, certo. Então, certo, isso, isso vai embora. Então, quando a unidade de trabalho é causal, ele estará vendo alguns tipos de unidades de licença ascendente. E então podemos acessar os contextos e tudo, tudo o que está implícito através da nossa programação. Então, seguindo esta sintaxe estará fazendo a mesma coisa para o pedido. Então deixe-me apenas ir em frente e apenas copiar e colar e, em seguida, fazer os ajustes em conformidade. Então aqui, ele não acreditaria em tipos o que você vai acreditar pedidos e as classes concretas, os pedidos. E aqui seria alocações de licença e classes concretas alocação de licença. Tudo bem? Então você só tem quatro anos vai nos dar acesso a qualquer mesa. Digamos que se você tivesse outra mesa que eu precisasse apresentar amanhã, então você criaria o privado, criaria o público. Claro que se certifica de que está na interface. Então provavelmente coloque-o na interface primeiro. E então isso vai reclamar que você implementou para criar as partes privadas e quaisquer pontos vermelhos, linhas semelhantes. E você provavelmente está olhando para esta retina e dizendo, ok, então por que não fizemos este padrão antes de fazermos o repositório Patreon? Bem, eles são todos blocos de construção e pelo menos você conseguiu exposição ao repositório Patreon já em nenhum lugar podemos adicionar outro padrão que poderíamos colocar na mistura. Certo, então vamos discutir essa função de descarte em toda a função de descarte, como eu disse, vai realmente fazer nossa alça ou coleta de lixo para a unidade de quatro objetos, certo? Então, normalmente você veria isso implementado é que você tem a função que nós vamos criar, Deus dispor. E então chamamos isso de coleta de lixo controla coletor de lixo. Isso é um serviço de reivindicações automáticas de diário sobre memória usada. Portanto, é muito importante se você quiser ter um aplicativo eficiente em execução. E ele verá ponto GC suprimir finalizar. E o, tudo bem. E, em seguida, dispor vai ser, bem, deixe-me apenas gerar uma chamada método dispor bem abaixo aqui. E então ele está basicamente pedindo por um booleano. Então estamos dizendo que é verdade o tempo todo. Tudo bem? E então aqui vemos se estes são bem, se V, Então deixe-me mudar este apartamentos em Gamow barulhento, eles chamam de v, Eu gosto de chamá-lo. Tudo bem, então se nos livrarmos, então o que queremos fazer é descartado do contexto em si também. Assim por diante, para liberar qualquer memória que são conexão de banco de dados pode estar usando. Tudo bem, então é isso para se livrar. E depois para salvar. E aqui é onde o salvamento é bem simples. Nós realmente só vamos ver como nós nos contextos de pontuação. Vamos ver se mudanças como visto, certo? E, claro, você tem a cena “Eu”. Assim, as alterações de salvamento acontecem na unidade de trabalho em oposição ao repositório desta vez porque ele sempre vai ser vê-lo aparecendo uma vez. Assim, em alterações de CFD derivadas do laço de chumbo ou quatro vezes em nosso repositório, nós apenas fazê-lo uma vez na unidade de trabalho. Tudo bem? E então todos eles estão implementando nossa herança a funcionalidade que acabamos de definir em nosso repositório genérico. E isso tornará a consulta muito mais fácil em toda a linha. Agora, a próxima coisa que eu quero fazer antes de fechar toda essa atividade é registrar as unidades fora para o nosso ponto de inicialização cs. Portanto, sabemos que toda vez que você adiciona uma nova interface com o comum molhá-lo ou secá-lo, toda vez que você adiciona um novo repositório. Bem, desta vez com a unidade de trabalho eu posso fazer c e serviços. E eu vou adicionar este como transitório. Eu seria transitório. E eu tenho a mesma unidade fora do trabalho. E você precisa de um trabalho duro. Tudo bem? E assim, quando fazemos isso, podemos ter uma implementação de todas as operações relacionadas ao banco de dados para todas as nossas tabelas. Uma vez em um lugar, facilmente acessível, fácil de ver e mudar. Tudo bem, então vamos, na próxima lição realmente passa e vamos começar modificando nossos tipos. Controlador. Faz que um só tem um repositório. Então, seria fácil apenas modificar este repositório e, em seguida, construímos à medida que avançamos. Tudo bem, então fique atento. 57. Controlador de Refactor: Certo, pessoal, então estamos de volta onde os anúncios estão. Controlador de abas e vamos começar a nossa cirurgia. Então a primeira coisa que eu vou fazer é e eu não vou excluir nenhum dos Coda, faz comentários em qualquer lugar que haveria conflitantes, citar outros comentários. Mas eu quero deixar a origem alcalóides QI e pelo menos tê-lo para fins de comparação ou assim. Eu vou em frente e incluir minha unidade de trabalho e eu vou chamá-lo de unidades sublinhadas fora do trabalho. Tudo bem? E, claro, se estamos fazendo isso, temos que injetá-lo da mesma maneira que teríamos feito com a ondulação real. Então vá em frente e faça nossa injeção. Realmente não importa onde você digita ele entende ser estruturado. Tudo bem? Então em nenhum lugar que eu tenha acessado ou unidade fora do objeto de trabalho. O que fazemos quando queremos encontrar alguém para comentar sobre esta linha e passar para os próximos nove. Bem, deixe-me duplicar. Assim, a nova maneira de encontrar tudo será sempre Unidade 04 pontos. Que mesa eu quero encontrar todos de Ramallah, esses objetos de frente pública, esses são tudo o que temos acesso aqui. Então unidade fora, não somos tipos de deixar, pensei encontrar tudo. Certo, aí mesmo, estou encontrando todos eles. Então, se eu, eu sou, quero dizer, todos nós somos humanos que poderia ter dito erroneamente alocações de licença ou você disse que você precisa de software, locais , encontrar tudo, então obviamente você teria um erro aqui embaixo porque então isso é retornando para evoluir tipos de localização, certo? Então, é claro, você sabe, os cheques e balanços meio que impediriam a capacidade de cometer certos tipos de erros? Não, a razão pela qual chamamos de tipos de folhas aqui é que eu chamei de deixar tipos nas unidades de trabalho. Então, se eu chamá-lo de entidades tipo de sangue tipo de folha T ou o que seja, quais são suas virtudes eu chamo isso. Ele viria aqui em cima. Algumas pessoas, quando implementam isso, você realmente sentaria MC Light para deixar tipo de repo e deixar pedidos de repo. Eu não vejo o ponto em ver um repo novamente, eu já sei que estamos lidando com os tipos reais da Unidade 04 ponto encontrar. Muito bem, vamos olhar para este já existe. Então deixe-me duplicar o original. E então eu vou dizer unidade fora do trabalho. Deixar tipos. Isso é existe nenhum ícone de aviso passa no ID porque ele espera que a expressão alguns foram após a chegada, a expressão real. Então eu vou dizer Q. E então quando eu faço a expressão aqui, é realmente sabe que relativo deixar guia, estas são as colunas que eu olhar novamente para cima. Então, se eu quisesse descobrir se existe um por este nome, R1, por padrão, número de b são por ID. Eu sei ter melhor controle sobre que tipo de filtro eu aplico aqui sem ter que escrever três ou quatro funções diferentes para facilitar através de nossos quatro cenários de filtros diferentes, certo? Então eu posso dizer é existe onde o ID é equivalente ao ID aqui. Tudo bem? E então não ouças onde fazemos a descoberta por ID. Fazer as crianças e comentar alguém para dizer aqui que eu quero unidade fora tipos word.lower, não encontrar, executado por, renomeado a partir de encontrar por ID. Mas agora eu tenho a capacidade de escrever na minha expressão Q dot id equivalente a ID. Agora o que eu quero fazer é voltar para o repo original para o tipo Leaf. Bem, acho que não incluímos nada para o tipo Leaf, mas eu só queria checar duas vezes. Então deixe o repositório tipo. Quando descobrimos, não incluímos nada. Eu não acho que nada está relacionado a ele para obter incluí-lo de qualquer maneira, tudo bem. Mas se tivermos que incluir e quando passarmos para todos aqueles que envolvem inclui e você verá exatamente como isso funciona. Então essa seria a nova maneira de encontrar. E mais uma vez, poderíamos facilmente encontrar por qualquer expressão que precisamos para a criação. Fazemos tudo isso. Então até mesmo colocar este talão criado onde colocamos manualmente a data criada lá e até mesmo ser modificado, coisas assim. Você provavelmente não come tudo. Você pode abstrair essa funcionalidade e faremos isso em poucos. Mas agora eu só quero me concentrar no, então deixe-me comentar isso. Duplicar KU e depois unidade de trabalho. Deixar tipos de ponto criar. E então, bem, qual é o erro aqui? Vazio. Ok, então nós realmente nos livramos dessas coisas agora, certo? Bem, na verdade o é bem sucedido, então topo aqui. Tudo bem. Então, o que acontece é que quando criamos um, é apenas fazer o criativo ou os brancos não salvando. Então, no repositório mais antigo que parecia depois de cada vez que criamos, deixe-me apenas voltar para o repositório mais antigo e olhar para ele novamente. Então, quando criamos e neste mar de retornaria. E deixe-me apenas não, não engane essas alterações não salvas e retorna o um ou 0. Então vamos replicar isso em nossa unidade de trabalho apenas para que estejamos na mesma página. Mas então o problema aqui com a unidade de trabalho é que esses contextos salvando alterações recebendo em qualquer tabela. Então não é muito fácil destruir em Xj o para esta operação em particular, foi bem sucedido ou não? Então eu estou realmente indo apenas para acabar com essa ferramenta para verificar porque na maioria das vezes quando há um erro, a captura iria, iria, iria saltar de qualquer maneira. Então eu estou realmente indo para tomar todos estes 0s verificação de sucesso completamente. E o que fazemos é apenas a nossa unidade fora do trabalho ponto C. E eu sei disso para C. Certo? Então é assim que se faz isso. Então, sim, são duas linhas. Se você não estava fazendo as declarações if e assim por diante, você provavelmente apenas faria isso em uma linha de qualquer maneira, liderar isso. Mas sim, são duas linhas. O que eu acho que os benefícios a longo prazo ou nós, você sabe, apenas o fato de que estamos produzindo uma nano é duas linhas. Então vamos seguir em frente. Então aqui nós fazemos o mesmo é existe e isso se parece exatamente com os detalhes. Então eu vou apenas copiar e colar. Realmente para o d, para a edição, copiar e colar. E então para, bem, nós modificamos ou excluímos de qualquer maneira. Então vamos olhar para a outra edição nula. Então, para o editor de Post, temos o mesmo é sucesso, verificar, medidores, comentar tudo isso velho. Eu mudei inicialmente, mas vou apenas comentar. E então o que vamos fazer é, bem, a atualização não era um síncrono, então unidade de word.lower tipos Atualizar e nós estamos atualizando tipo folha, certo? E depois salvamos. Oh, e salvar está certo. Então lá vamos nós. Então fizemos uma coisa parecida. Então aqui a exclusão, nós o encontramos, e então nós fomos em frente e deletamos. Tudo bem, então o que eu vou fazer aqui é pensar, o que me fez fazê-lo em. Na verdade, fizemos dois do mesmo jeito. Na verdade, não estou me lembrando de qual. Lembre-se. Deixe-me voltar para a vista para que eu possa acertar. Acho que fizemos isso a partir do índice. Então é mais do que provável que tenhamos feito isso. Então, mesmo assim, exclui, vamos modificar a maneira como isso funciona. Vou remover isto. As cláusulas Onclick podem ser uma grande preocupação de segurança. E o que vamos usar é como uma submissão de formulário para o post. Então eu vou apenas modificá-los ambas as placas para a frente queremos usar o post porque eu quero ter a proteção do anti 4A Tolkien. Quando estamos fazendo uma operação de exclusão, a maneira como escrevemos inicialmente, enquanto era fácil e parece limpo. Isto é, na verdade, um risco de segurança. Vai rever isso daqui a pouco. Então eu sou um deles vai apenas modificar um de ambos para que eles se pareçam do mesmo jeito. Mas, mais uma vez, queremos avançar com isto. Então o que fazemos aqui é o achado. Então deixe-me duplicar comentários, a origem. E então eu vou ver em uma unidade quadrada de pontos de trabalho deixar tipos, ponto encontrar e a expressão será, e então no caso de ele querer preto, eu morri. Quando você tem vários parâmetros, você pode dizer especialistas em dois pontos ou como você deseja especificar qual parâmetro você está impedindo um valor quatro, novamente para ver o nome Parramatta dois pontos e, em seguida, você colocar no valor, certo? Então j2, desculpe, expressão é q. e esta expressão lambda onde dizemos q dot o, desculpe o nome da função está errado sobre. Então encontrar estava se perguntando por que isso não estava funcionando. Lá vamos nós. O ID de dados geográficos é equivalente em ID. Então ele vai retornar um parâmetro, ou desculpe, o objeto aqui. E então vemos que você quer falar para o tipo de folha de ponto excluir e aliviado que é nulo. Então não devemos A1 e é claro que não verificamos o sucesso ou algo assim. Remova tudo isso. Claro que iria envolvê-lo em uma captura de tentativa. Então são pedaços quebrados, é uma tendência rápida que atrai recebe, que foi o que fizemos aqui. Então isso é permitido um pouco o para usar de qualquer maneira. Então eu vou copiar esse código e colá-lo aqui embaixo. Tudo bem. Então, como eu disse, vamos refatorar nossas exclusões. Mas isso é realmente para alterar ou o código controlador de tipo folha. Então podemos ir em frente e testá-lo. Você pode testá-lo. Eu não vou testá-lo. Então, estou aqui apenas para refatorar e mudar um padrão onde você pode ir em frente e testá-lo. Eu criaria, apagaria e atualizaria, e você verá que tudo funcionará como se nada tivesse mudado, certo? Mas então quando você olha para a base de código, você vê que nós teríamos usado unidade de trabalho em vez do repositório? - Não. Para esta para uma modificação, não parece grande coisa. Se alguma coisa, parece mais um incômodo. Porque às vezes substituímos uma linha potencial por duas linhas. Tudo bem? Então o que vamos fazer é o e aqui, certo? Então lembre-se, eu sempre preciso salvar as alterações. Então ele precisa ser em uma palavra difícil, salvar sempre que você faz a atualização, certo? Então ele fez o CVE, salvar para o Delete, atualizar isso. Tudo bem, então o que eu vou fazer agora é passar para a final. Não estão bem não se espalhar no próximo, que é os pedidos de emissividade e alocação Aleve. Tudo bem, a alocação de licença é um pouco mais fácil de lidar. Então eu vou estar fazendo os pedidos de licença para fazer porque nós tivemos três repos diferentes interagindo com. Então, vamos refatorar este juntos no próximo vídeo. Mas então eu vou desafiá-lo a tentar fazer isso sozinho. Então eu vou fazer com este fora da câmera e então nós podemos ir em frente e comparar que você fez corretamente ou mesmo que eu fiz isso corretamente. Mas vamos fazer isso juntos. Então você pode ver exatamente como a unidade de padrão de trabalho nos permite convencer ou genérico, desculpe, nosso padrão de repositório original um pouco mais. 58. Controlador de pedidos de Refactor: Tudo bem, então estamos de volta e estamos modificando e deixando solicitações de controle ou controlador. Desculpe. Então eu já fui em frente e injetei, certo? Ainda não apaguei as referências originais aos repos. Então, depois que eu terminar as modificações que podemos voltar e limpá-lo e ele vai ver o quão mais fácil é olhar o código. E eu sou o caminhão. Então vamos começar com a modificação do nosso índice. Então ele cai em parecer Potter e eu vou apenas duplicar uma linha, em seguida, entrar e, em seguida, vemos unidade de palavras. Portanto, note que adicionamos aos pedidos de licença muito específicos, repo, repo. Então, desta vez eu posso dizer a vocês e está fora do trabalho, especificar as tabelas. Então este é o ponto de solicitação encontrar tudo Não, nenhum filtro ou qualquer coisa. Então, isso é bom. Tudo vai encaixar em conformidade. E então aqui, aqui está uma boa nota. Aqui está uma boa razão para toda a expressão e a capacidade de fazer o filtro imediatamente porque tivemos que olhar para alocações de funcionários e, em seguida, olhar para a alocação de licenças. E nós tivemos que fazer uma função personalizada para que os pedidos de funcionários para fazer isso e em uma função personalizada. Então vamos ver como podemos reescrever. Não siga o Shun e seja mais genérico. Então teremos o empregado, recuperamos a identificação do empregado. Então deixe-me duplicar este 1 primeiro. Coloque um pouco de espaçamento para que possamos ver exatamente o que está sendo modificado, certo? Então alocações de funcionários agora será igual a unidades fora do trabalho alocações de licença, sem traje, e dizer que não há nenhum código personalizado ou nenhum custo na função, muito bem. Tudo bem, e então nós começamos a colocar na expressão Q lambda Q dot funcionários IDs iguais a id empregado . Tudo bem, então estamos dizendo que alocações de licença de unidade de trabalho me dão todos os outros adquiridos onde essa condição é verdadeira. E podemos fazer o mesmo por este. Então deixe-me ir Momento. O original, Nosso ver desta vez é pedir licença. Então é a Unidade O Esqueceu a tabela de pedidos de licença. Encontre-os todos. Onde a expressão q ponto está lá uma ID de funcionário ou bem, ok, Então isso é solicitações por funcionários. Então deixe-me ver exatamente o que estava sendo usado aqui. Então é disciplina de artefato ir e ver para que eu possa usar ir para a implementação. E estava checando onde. Então essa era a expressão original do lambda, certo? Então eu posso literalmente apenas esta expressão lambda original. Esta é uma função personalizada, lembra? Mas não, eu não preciso de uma função personalizada. Eu posso fazer essa expressão lambda e colocá-lo direito no encontrar tudo. E estamos prontos para ir e deixe-me comentar isso. E fará o mesmo trabalho. Tudo bem, Polar fora sendo genérico um código base e permitindo-nos ler consultas poderosas usando expressões muito simples. E então há estourar porque nada mudou realmente. Tudo bem, vamos fazer o mesmo por este. Então vamos fazer os comentários de Pickett e, em seguida, unidade de trabalho. Isto é o que deixar pedidos. Então, esta cópia disto, e está tudo bem. E a expressão é q dot ID é igual a ID. Isso parece bom. E aqui está uma coisa maior no lugar nenhum. Acho que foi aqui que tivemos todos os repositórios que estão sendo incluídos foram adquiridos neste. Então, vamos trabalhar. Então, em primeiro lugar, encontramos os pedidos de licença. Bem, nós fizemos isso aqui, então eu vou apenas copiar e colar esse código. Certo, tipo, então pegamos o funcionário solicitante, o ID do tipo folha, então temos que obter o Deus, essa alocação de licença, obter alocações de licença por funcionário e função de fantasia tipo 1B, certo? Então, se eu for para a implementação, eu posso ver a coisa X-Y que ele fez. Ele tinha que obter o período em que este ano. E então ele disse, I locais, solo terá todas as alocações. E então nós dissemos alocações me obter o primeiro são padrão para o funcionário, para a esfera e para esse tipo de folha ID, certo? Então eu só vou copiar toda essa expressão sobre claramente, nós temos um pouco mais de trabalho a fazer, ir atrás de colocar o PIR em. O que podemos fazer isso de dentro do controlador. Não precisamos necessariamente fazer isso no método, certo? Então quero dizer que é uma refatoração existe como um sal onde aqui não é absolutamente necessário neste momento. Deixe-me fechar. Certo, então o Controlador de Solicitações, aqui vamos nós. Então eu vou reescrevê-lo. E quando dizer var localização é igual a. E eu vou escrever como um todo mano 08 unidades fora do ponto do trabalho, sair, locais, ponto encontrar. E isto era suposto ter um, por isso é bom não encontrar. Tudo bem. E então temos nossa expressão, que é Lindsay se parece com isso. Mas eu fui modificar a sub-rede porque precisamos de um ponto final. Então deixe-me apenas obter o par para salvar var data periódica, hora, ponto No.2 ano. Tudo bem, então eu entendo o período não. E depois seguimos em frente. Então, estou recebendo um pequeno erro aqui. Locais o, e isso é porque eu não trouxe o taco e o tipo de folha foi soletrado incorretamente. Então B para isso girando fora de um tipo IV. E claramente q para a expressão lambda. E lá vamos nós. Certo, então agora é assim que a raiz quadrada gosta. Então, quero dizer, pode não ser tão legal quanto ter aquela função LM costeira. Mas para mim, é muito mais sustentável e não estou dizendo isso para ser prescritivo. Eu não estou vendo isso. A maneira que você deve saber implementado se você se sentir confortável com o genérico, com o padrão laranja agora Repositório, em seguida, por todos os meios usar isso. Só estou mostrando uma dimensão diferente de como podemos ter código escrito e mais manejável. Tudo bem, então vamos em frente e obter nossa alocação usando a unidade de trabalho. E então para as atualizações AC que atualizamos aqui, certo? Então ele fez atualização, em seguida, ver se neste um que atualizar e ver se aquele. Então eu posso, eu só vou comentar essas duas linhas. E eu vou ver a unidade sublinhada fora do ponto do trabalho, deixar pedidos, ponto embora. E vai acreditar nos pedidos. Certo, então essa é a primeira inclinação precisa. E no segundo será alocação de licença. Vai ser a Janet a apostar a alocação. E então o que temos que fazer depois de tudo isso? Só precisamos ver. Então isso é literalmente apenas para realizar Eu pareço operação em uma vez. Então, enquanto estamos transformando duas linhas de código em três, o ponto é que nós não estamos fazendo algo, em seguida, salvando e, em seguida, fazendo algo do que salvar onde deixar o contexto ou que isso precisa ser feito. Então, e finalmente vemos que ele fica comprometido e satisfeito. Tudo bem, então comentamos algumas linhas. E, bem, algumas linhas parecem mais longas do que outras porque esta, esta linha inteira parece um pouco mais cromossomo do que esta DPOC para mim. E este é o primeiro e eu vou mais uma vez, vai ser mais sustentável daqui para a frente, certo? Tudo bem, então aqui temos gerenciador de usuários recebendo isso e então nós não ouvimos, nós fazemos uma boa unidade de trabalho, ponto deixar pedidos encontrar. E na nossa expressão lambda, ela não equivaleria a isso. E depois fazemos a atualização. Então eu ainda estou tentando comentar e reescrever e para que possamos acompanhar as mudanças que estamos fazendo. Então isso são pedidos de licença. Pensamentos sobre o e deixar pedidos, certo? E então, é claro, temos que lembrar de seguir isso conosco. E isto é uma pia. Então, para o So criar, chegamos a todos eles. Então comentários, var, desculpe, deixe-me duplicar e vê-lo em tudo para. Então, essa é uma das partes irritantes da refatoração é difícil prestar atenção e Chen ser centro muito meticuloso rumled fora dessas coisas. Mas hey, então nós alteramos esse OneNote para a criação. E aqui, aqui nós fizemos a mesma pesquisa para o empregado e o material de alocação. Então eu vou voltar atrás em emprestado aquele pedaço de código. Então foram essas duas linhas. E só substituir este por essas duas linhas? Havia o mesmo, não era? Folha tipo D, OK, era a mesma pesquisa, apenas dados diferentes sendo passados. Então este deve ser o tipo modelo.predict. Oh, ele era ID de empregado e, em seguida, modelo Dot Leaf ID tipo. Certo, verifique duas vezes para ter certeza que estou fazendo a conexão certa entre a ferramenta. Então ele foi modelado no tipo elif ID para esse parâmetro. E esta teria sido a identificação de ponto de empregado . E apesar de você fazer todas essas coisas. Então, quando chegarmos aqui para o criativo, apenas penteando a alma. E lembre-se Unidade 04, pontos, pedidos criar. E estamos passando aquele objeto de solicitação de licença. E então isso é uma cena. E, em seguida, pese a unidade de ponto de trabalho. E eu vou pegar todo esse cheque. Então, mais uma vez, eu estou pegando todo aquele jato porque mais de 90 algo deu errado, nós pegaríamos a exceção e de repente nós estaremos fazendo a mesma coisa de qualquer maneira. Então, apenas tentando ser enquanto estamos fatorando, eu vou ser mais eficiente para a nossa operação e eu vejo que eu tenho uma flecha aqui, então deixe-me apenas corrigir isso. Empregado pontos IID com eu guardei. Não ouço ser encontrado por identificação. Você fez um ID da NBA em algum lugar perto? Oh, nós não mudamos este. Isto devia ter sido mudado. Então, vou mudar esta antes de seguir em frente. Então essa é a Unidade Nula 04. Pontos deixam tipos, não localizam. Tudo bem, então para este, deixe-me reescrevê-lo. Você terá todos os quatro tipos. E estamos encontrando pela expressão q-dot, esses equivalentes. Então está tudo bem. Então, não quero que me entenda mal. Eu não estou dizendo que é difícil para foss que você mais e isso é puro pedidos, desculpe, não é difícil para Fossae você deve usar o genérico porque se você tivesse funções personalizadas que você queria digitar no meu Yolanda para montar as funções para algumas coisas. Você sempre pode implementar o seu próprio contrato, sua própria interface, e então ter a unidade de guerra ou outros derbies therópodes herdar desse graduado. Então, sempre que a interface herda de uma interface. Então quem herda essa interface, que no caso do repositório genérico , ele vai, será meio complicado. Então eu tive uma série de pensamentos e eu sinto muito. Mas você poderia manobrar sua seta e se você realmente queria adicionar um funções personalizadas, o que para mim? Escrevê-lo desta forma é muito melhor porque, em seguida, você não precisa ter muitas funções de personalização estão no lugar. Outro padrão que você poderia realmente implementar algo como comando e padrão de consulta, onde em cima da unidade de trabalho, você teria uma camada de comandos onde você interage com o comando. E o comando teria realmente as funções do traje, que então causam uma unidade de quatro funções de acordo. Então, há muitas obstruções e camadas que você pode colocar no final do dia, é um pouco fora do que você precisa. Não é uma questão de fazer isso com estilo. É uma questão do que pode ser mantido para você, sustentável e no futuro, você pode modificá-lo um complemento mais facilmente. Então eu acho que terminamos com o controlador de solicitações de licença. Não fizemos nada com o editor, então não precisamos modificá-los. Oh, aqui está mais uma linha. E quando terminarmos isso, podemos ir em frente e limpar todo o código que não é mais útil. Então este é pedido de licença pensamento, Oh, isso não está vendo então não há ervas daninhas foram então é claro que você tem que esperar unidade fora onde não. Tudo bem. Então, agora terminamos com a limpeza do repouso. A citação mais antiga do IPO. Se não estivermos, então tenho certeza que mais erros aparecerão quando começarmos com isso. Mas agora que estamos usando a unidade de trabalho, não precisamos mais injetar tudo isso. Então, na verdade, só vou remover as referências. Estou removendo porque queria ver o novo código. Então qualquer coisa que foi comentado ou em movimento. E você tem todas as versões do código. Por isso, se precisares de voltar para a Terra, podes sempre fazer isso. Mas agora que os removemos, vamos em frente e qualquer coisa que seja comentada, vou levar tudo. Eu não gosto de ver muitos comentários em nosso código, certo? Então o assessor moveu-os. E essas atividades de limpeza estão quase terminadas. E a maior parte é realmente parecida para como eu disse, muitos deles como as consultas são 19. Mas temos o prazer de uma terra com mais linhas de código mais tarde. As operações que são necessárias, salvando. Mas a vantagem final ou a vitória final para mim foi o fato de que com uma injeção, quero fazer referência a um ponto de referência, eu posso acessar todas as tabelas. Então, inicialmente, quando eu tinha os três repos injetados, você sabe, quero dizer, você poderia imaginar que eu estava interagindo com esta mesa, aquela mesa e aquela mesa. Tudo bem? E se uma quarta tabela entrou na mistura, então eu teria que passar por todo o processo de novos contratos, Novo Repositório, injetando-o, lembrando muito perturbador para assustado, e então usando esse relatório, especificamente gorro com uma unidade de trabalho, se uma nova mesa vem em toda a tarde é, embora um, a interface aqui para unidade de trabalho. E, em seguida, para atualizar a classe concreta para a unidade de trabalho, certifique-se de que eu inicializá-lo e então nós terminamos. E uma vez feito isso, em qualquer lugar que você injetar sua unidade de trabalho, você sabe, tem acesso a todas as classes ou tabelas que foram definidas para interação através de seus contratos. Então, para mim é a meta vantagem com essas unidades genéricas fora dos padrões de trabalho. Como eu disse, eles são sempre prós e contras porque alguns bons não, argumentam que eles acham desprezível. Eles não gostam do fato de que depois escreve a expressão lambda diretamente dentro do controlador, que é um válido, que é um ponto de vista válido, certo? Porque então ele meio que se torna uma Missy e muito fácil esquecer de fazer algo mais tarde. Portanto, isso é um pontos válidos. Claro, há prós e contras, mas então, você sabe, não há dois padrões distintamente diferentes são, bem, um constrói sobre o outro, mas você não sabe duas maneiras de implementar esse tipo de padrão. Você pode usar maconha combina com você em sua situação é contextos Maribel do que o que é novo eo que é o ônibus. Então nós fizemos deixar solicitações controlador, eu vou deixar você para ir em frente e fazer o exercício de fatoração controlador de alocação. Eu vou fazer isso e ele vai voltar. Nós apenas comparamos e passamos. E então você apenas avançar com uma extremidade para outra aplicação de modificação e armazenamento. 59. Controlador de Refactor de Refactor: Nosso cara, então estamos de volta e eu queria começar com o controle de pedidos. Este é o que acabamos de fazer, mas há certas coisas que omiti. E eu espero que você pelo menos testado e você teria visto alguns erros. Então você estaria recebendo Arecibo, o subsônico nulo ou forense. E essas exceções de referência nulas seriam relativas às tabelas que teriam sido incluídas com base no repositório anterior. Então lembre-se que está no repositório original como para pedidos de licença que teria ido automaticamente em frente e disse que queremos incluir esses três? Não, no genérico nós fazemos disposições para incluir o que eles têm de ser explicitamente afirmados. A razão para essa diferença é que você não necessariamente quer obter todos esses detalhes toda vez que ele quiser fazer uma pesquisa, certo? E de modo que este quadrado seria realmente muito mais lento porque então toda vez que você está encontrando todos os pedidos de licença, é automaticamente interno juntando todos os detalhes para essas outras tabelas, que pode não ser absolutamente necessário para isso vista particular. Você só queria listá-los. Você não precisa de nenhum detalhe, mas então você está entendendo sobre Deus, os detalhes não os usam, certo? Então, no repositório genérico ou unidades de manteiga de trabalho e nós realmente fizemos provisões que você pode ver para este pedido em particular, eu quero incluir essas tabelas. Tudo bem? E assim, para as solicitações de licença, vamos começar com o índice. Então eu estou apenas mostrando a imagem completa onde já mudou ou deixar pedidos para ser a unidade de trabalho. As solicitações encontrar tudo bem, não fizemos foi incluir ou parâmetro para inclusões. Então lembre-se que eu disse que você pode sempre, qualquer que seja o nome do parâmetro na versão mais recente ou C-Sharp, você pode realmente ver esse nome Parramatta dois pontos e então dizer, o que você quer escrever originalmente, você teria que fazer algo como expressar que o primeiro é nulo. Expresse que em um segundo em é todos esses parâmetros T3 toma expressão. Tem ordem por Annie toma que inclui LR. Então, originalmente você teria que dizer nulo para os especialistas em anular a ordem por este valor para o Include. Mas não, se eu quiser apenas fornecer um valor para os Includes, eu posso apenas dizer inclui dois pontos e, em seguida, apenas ter qualquer valor que deve ser para esse parâmetro. Assim eu não tenho que passar por cada parâmetro só para dizer não, eu não quero esse. Então é assim que você iria de barco, incluindo suas mesas neste novo padrão. Tudo bem. Então queríamos incluir o empregado solicitante e tipo de licença porque no índice de solicitações de licença, acredito que pelo menos estamos mostrando o nome do funcionário e estamos mostrando o tipo de folha que eles solicitaram, então precisamos desses dois detalhes. E se você, se você não tem certeza quando fazer o incluir Darwin não faz muito backtracking porque já criamos aplicativos. Então, novamente, este caminhão de Bach e ir para a página de índice de pedidos de licença. E em qualquer lugar que você nos veja fazendo algo que eu não estou aqui, onde você tem esse ponto algo ponto algo mais que você sabe que isso é o que foi incluído é isso que precisava ser incluído, certo. Então solicitando empregado precisava ser incluído. Então ele vai ter o primeiro nome e Tipo necessário para ser incluído para que pudéssemos obter esse nome. Tudo bem. Vou ver o resto dos pedidos de licença. Nós já fizemos isso, então não é muito mais que eu preciso te mostrar. Então, para o índice, temos o empregado solicitante e tipo de licença, que você possa ir em frente e atualizar esses valores na chamada de função. Temos nos quilômetros, temos que incluir o tipo de folha. Então, na minha licença, não preciso incluir os detalhes do empregado. Porque a teoria por trás das páginas My Leaf que eu o empregado revelando minha própria página. Então estamos recebendo todos os detalhes de quem quer que seja amado. E, em seguida, quando obtemos as alocações, você só precisa descobrir locais em tão longe que empregado e doess incluem o tipo de folha. Isso é tudo. E então minha licença funcionará para os detalhes que temos que obter quem foi provado, quem pediu, e tipo de licença. Então você vê, é isso que eu estou vendo. Podemos decidir dinamicamente quando precisamos de apenas um detalhe. Quando precisamos de alguns detalhes, são quando precisamos de todos os detalhes, não temos o quarto, fanfarrão todos os detalhes o tempo todo sem motivo porque aqui você está vendo que o aprovado pelos dados do funcionário solicitante teria sido obsoleto para esta página específica. Então você não quer introduzir algo que vai significar a carga de linguagem PhD quando ele não precisa. Tudo bem, seguindo em frente, eu só estou passando e vendo se havia outro que eu tinha que colocar em um inclui e não havia nenhum outro. Então isso seria para os pedidos de licença. Tudo bem. Embora o desafio teria sido para você terminar tudo crer, alocação. E eu passei e já está pronto para ir a todas as injeções e substituí-las pela injeção de unidade de trabalho. E vamos apenas passar. Por isso, deixa-me ir à escola uma linha de cada vez. Então, para o índice, eu sei exatamente como encontrar tudo, encontrar todos os tipos de folhas. Certo, e então carregamos a página de índice para a alocação na tela. Para uma licença set. Eu troquei todo o achado ali e alguns deles eu apaguei e assim por diante. E depois lembro-me que devia haver comentários. Assim como este para verificar a alocação. alocação de verificação teria originalmente retornado um booleano. E esse booleano teria executado essa expressão usando esses valores. Tudo bem, então ID MID e quando ele tem período. Assim, eles sempre podem voltar e olhar para a alocação de ticks original. Mas enquanto o fizemos, nós apenas definimos o período aqui. E então dissemos que as alocações da Unidade 04 existem. E que eu estou vendo aqueles existem onde o ID do funcionário corresponde que, deixar que muito é que em par em muito? É isso. Então, esse é o nosso booleano, certo? E então aqui em baixo, vamos em frente e fazer nosso Criador e nossos funcionários na lista. Bem, esse é um já está contando com o gerenciador de usuários, então as nuances não tocaram gerenciador de usuários. Não construímos um repo para o Osama. John, eu não estou fazendo software para gerente de usuários porque ele já está implícito dentro de nossos monitores de usuários. Não quero que isso seja exagero. Passando aos detalhes, vamos em frente e obtemos os detalhes de todas as alocações. E então essa linha se divide em duas linhas, certo? Então fizemos a chamada Fang Xiang, quando fez o mapeamento e depois a chamada de função. E eles vão dividi-lo na chamada de função e, em seguida, o mapeamento , certo, para que seja mais fácil de consumir. Então, neste particular, temos cartões vermelhos onde estamos fazendo uma pesquisa sobre alocação de licenças em estável. E então temos a expressão. Então isso agora temos dois parâmetros expressão para obter o ID do funcionário igual. Então isso está sob período, foi um período. E, claro, encontre isso lá. E então nós temos o Include, onde nós apenas incluímos uma coisa. Então, mais uma vez, na origem, nosso repositório teria sido incluindo duas ou três outras tabelas quando residenciais, você só precisa incluir uma para a exibição de detalhes. Então, onde ser um pouco mais eficiente aqui, certo? E, em seguida, seguir em frente para a edição, quando entramos em alocação de licenças onde, em seguida, a mesma coisa, nós temos nossa expressão e nós temos nossas inclusões. Tudo bem, então depois de seguir em frente da edição, vamos para o post onde obtemos o registro de robôs subaquáticos que precisávamos fazer a atualização e depois ver. Tudo bem, e isso seria tudo para o nosso controlador de alocação de licença. E por extensão, isso é realmente para as unidades genéricas de trabalho ou o repositório genérico Patreon e unidades de trabalho onde quer que você queira congelá-lo. Então isso é realmente tudo o que precisamos discutir para esta seção do módulo. E mais tarde o que vamos fazer é passar por como podemos personalizar e-mails sentados, como quando um e um pedido de e-mail vai, oh, provavelmente queria enviar e-mail para o usuário administrativo. Basta filmar um e-mail ou uma licença de vitória é aprovada ou, você sabe, é interrompido com aprovação, rejeitado ou qualquer outra coisa, então ele queria enviar um e-mail para o empregado para avisá-los. Certo. Então podemos olhar para os e-mails de notificação. E também vamos limpar essa exclusão. Como mencionei anteriormente, que queremos mudar o código aqui onde temos isso. Deixe-me ver se eu posso encontrar em tipos de licença onde fazemos isso onclick. Queremos garantir mais esse otimista. Então, quando voltarmos, veremos essas modificações. 60. UPDATE: a o tipo forte inclui para a unidade do trabalho: Ei pessoal, bem-vindos de volta. Nesta lição, vamos dar uma olhada em modificar nossas unidades de trabalho para ser um pouco mais fortemente digitado quando se trata da lista de Inclui. Então agora ele está apenas contando com uma lista de string tipo e nós, os desenvolvedores têm que digitar as strings manualmente. Agora isso pode ser atenuado contra aqueles que têm nomes de classe, porque poderíamos dizer nome fora e poderíamos ver empregado. Então, isso na verdade apenas renderizar uma representação de cadeia de caracteres do empregado nome. Então isso funciona, mas então ainda não é infalível porque nem todas as propriedades de navegação têm um nome de classe correspondente. Por exemplo, no nosso eu acho que eu localizações controlador ou deixar Requests Controller outro, não há navegação. Não há classe que corresponda a um empregado, certo? Então não é necessariamente infalível. Mas se você está se perguntando, por que você iria querer modificá-lo? Outra questão pode ser que se mudarmos nome da nossa classe ou algo que esteja no futuro ou mesmo não seja propriedade. Se eu modificar a propriedade na folha alocação estável de ser empregado para torcer empregado, então não haveria nenhuma indicação no código de que algo mudou. Então seria, ele iria compilar, ele iria compilar, e então ele seria implantado, e então você iria encontrar um erro mais tarde. E os usuários reclamando que esse recurso funcionou ontem, não está funcionando hoje. E você só sabe que você muda uma propriedade que não quebrou o código. Bem, aconteceu por causa dessa digitação solta, certo, ou restrições soltas na propriedade. Então, o que vamos fazer é modificar nosso repositório genérico e vamos mudar o tipo de dados para o Include de uma lista de string 2, o que chamamos de um I included, I consultable HIS, isso é um bocado, mas vamos olhem juntos. Então vamos saltar para o nosso repositório de olhos na nossa pasta de rastreios da clínica. E quando estamos aqui temos o nosso encontrar tudo e encontrar. Então retinol mais uma vez, estamos usando apenas lista de cordas para nossas inclusões. Então eu vou modificar isso um pouco. E o que eu vou apresentar vai parecer semelhante ao nosso olho ordenável, leitura consultável ou eu pedi consulta. Mas este vai ser do tipo I consultável com o tipo T. e eu incluo duplo querível, que é tomar uma expressão lambda e da mesma forma. Tudo bem, então é isso que eu estou substituindo essa lista de largura de corda. Então você pode simplesmente ir em frente e pausar e replicar isso e incluir quaisquer referências ausentes em conformidade. E isso é bom ter um grande efeito de ondulação em todo o código. Então, se pularmos para o repositório genérico, que é onde tudo precisa ser implementado, podemos simplesmente ir em frente e modificar os parâmetros acordo para incluir o que precisa ser incluído. E então vamos ter que modificar como fazemos a parte de inclusão. Então, quando estamos fazendo a lista de string, dissemos que se temos conteúdo nessa lista, em seguida, para cada propriedade ou incluída, vá em frente e faça o include. Agora isso realmente vai nos dar uma função chamada include. Tudo bem, então desta vez, eu não preciso de um loop. Eu posso pegar este loop de aveia, e esta propriedade deve ser chamado inclui. Então deixe-me ir em frente e consertar isso. Isso inclui isso inclui tudo certo. Só para manter a nomeação consistente para incluir. Então, não tudo tem que fazer é dizer consultas iguais a inclusões, que é uma função. E então eu vou colocar em perguntas. Então, em outras palavras, estamos vendo que temos a consulta. A consulta, sim. Mas, em seguida, para a consulta, eu quero efetivar todas as inclusões que foram estipuladas aqui. Então vamos ver como o código vai olhar em um minuto, mas eu vou apenas replicar esse código na encontrar todas as versões deste método e corrigir esse parâmetro, certo? E todo mundo está feliz. E então eu sou cisalhamento. Então, quando implementamos, eu não criei um novo arquivo. Então isso é meio que liderar todos os custos separação de preocupações, é claro, porque eu estou colocando muito rápido e na verdade é justo, levei um tempo para encontrá-lo. Então o que eu vou fazer é apenas criar um novo arquivo enquanto estamos aqui. Então precisamos ir a contratos. E eu só vou adicionar a turma. Nós já sabemos como fazer isso, chamando-o de repositório genérico, mas é realmente apenas vai jogar host ou eu interface de repositório genérico, certo? Aí mesmo, eu sei onde encontrar meu repositório genérico o tempo todo. Vá em frente e inclua todas as referências que faltam. E isso parece melhor. Agora sabemos onde está o nosso repositório genérico ocular. Temos o nosso repositório genérico. Certo, e temos nossas unidades de trabalho que minoria? E podemos construir sobre isso. Não, vamos olhar para o que precisamos fazer em nossos controladores. Porque não, tudo está em RRE, tudo o que está em desordem, desculpe, tudo o que tinha um Incluir é saber desordem. Então vamos olhar para o que esta nova sintaxe. Vai parecer. Então, na descoberta tudo, tudo o que fiz foi encontrar tudo. E então eu disse que queria incluir essas propriedades de navegação, certo? Solicitando empregado e tipo de licença. Então nulo, eu posso usar uma expressão Lambda. Então eu posso dizer q dot e depois dizer incluir. Q-dot, incluir. E eu estou recebendo uma linha vermelha aqui porque eu preciso inserir esta instrução usando para Entity Framework Core. Então, uma vez que você vá em frente e faça isso, você pode continuar. Então você está vendo q lambda expressão, Q ponto incluir. E, em seguida, dentro deste método você quer outra expressão lambda. Só vou usar X como Tolkien desta vez. E então ele me dá todas as propriedades da tabela. Então originalmente eu gostaria que X-dot solicitasse empregado. E então eu posso encadear estes incluem declarações junto. Então olhe para esta parte com muito cuidado porque se alimentar, se você não prestar atenção, é fácil estragar tudo. Tudo bem, então inclui, então começamos a expressão lambda e com este Tolkien dizemos q ponto incluir. Então temos a expressão Lambda dentro do incluir, e então podemos encadear outras inclusões. Então eu posso ver, em seguida, incluir se eu quiser, que significa que se houvesse algo nesta propriedade que eu queria que eu poderia ver incluir o empregado solicitante, em seguida, incluir algo dentro dessa tabela. Certo. Eu também poderia dizer solicitando ponto empregado e incluir qualquer outra coisa um barco, embora propriedade de navegação. Então essa é outra maneira de ter múltiplas inclusões na instrução um. Mas eu também posso apenas dizer incluir novamente, que me dá a oportunidade de usar outra expressão lambda e especificar a outra propriedade de navegação que é tipo folha. Tudo bem? Espero que isso não te tenha confundido de forma alguma. Só saiba o que está vivendo, recapitule rapidamente. Então saiba que quando eu estou fazendo o Include, eu tenho uma expressão Lambda. Então eu digo q ponto incluir. Em seguida, outra expressão lambda dentro de que incluem método onde eu estou vendo esta é a propriedade de navegação que eu gostaria de incluir. Então isso tudo pressupõe de querer uma declaração rude, ou pelo menos isso resume querendo declaração de comida. Mas, em seguida, como muitos inclui como eu tenho, Eu posso continuar a cadeia e dizer ponto incluir e, em seguida, outra expressão lambda em que um. E então eu posso continuar a incluir ou não incluir pontos incluem, você usaria, em seguida, incluir se você quisesse luz do neto. Então, se você estava na mesa dos pais e o próximo incluído na criança e você quer uma criança fora dessa criança, então você diria incluir a criança, em seguida, incluir o neto, por assim dizer. E você poderia descer a corrente, liderar isso. Então agora podemos nos livrar dessa lista porque tudo agora é fortemente digitado. Então, se alguma coisa mudar dentro da classe de domínio, então o código definitivamente quebrará. E é melhor quando o tribunal quebra durante o tempo de depuração e compilação do que quando ele quebra quando está em produção, certo? Então podemos continuar nossa repetição que os pés aqui para baixo para cada outro incluem declaração e nós vamos apenas fazê-los juntos. Então este é apenas o tipo de licença, eu estou apenas copiando e colando o de cima. Mas é claro que não preciso de um empregado. E aqui está um caso em questão. Esta é a tabela de alocações de licença. Tudo bem. Ele não tem uma propriedade de navegação do funcionário solicitante. Então, uma ordem usando a lista de string, não haverá nenhuma maneira de descobrir que estamos tentando incluir algo que não está na classe atual estão ocorrendo tabela. E então nós realmente obter um erro de Entity Framework Core vendo que não pode encontrar essa propriedade de navegação. Então esta é uma boa maneira de ver as setas durante a nossa digitação em vez de quando alguém está usando o aplicativo. Então podemos ir em frente e remover isso, obter uma linha livre de erros, e então repetir esse processo. Não ouço. Então, desta vez, estou incluindo o empregado que pediu sim. O tipo de folha, sim. E depois o nosso terceiro. Então eu só digo ponto incluir mais uma vez. E então nesta expressão lambda onde incluindo o aprovado por, aprovado por mim, certifique-se, tudo bem. E você vê mais uma vez que você está recebendo erros quando ele não consegue descobrir o que você está tentando fazer, certo? Causa aprovada não é algo que pode ser incluído, no entanto, aprovado pelo NB. Tudo bem. Então podemos limpar nosso código, livrar de alguns dos cheiros, e fazer um limpador parecer mais resistente, frio, certo? Então isso foi o controlador de solicitações de licença. Vamos fazer. Só vou passar por este e mostrar-te. Então o que eu fiz foi apenas copiar e colar linhas do outro controlador para o controle de alocação de licença. E então nós vamos apenas corrigir esses erros juntos porque agora nós podemos estar totalmente cientes de todas as setas. Então, primeiro ou incluir a instrução usando ausente. Segundo, livrar-se das declarações de inclusão que não precisamos acreditar neste, era apenas tipo de licença. Então eu estou apenas removendo qualquer coisa que não é necessário. E, em seguida, na edição que vendo incluir o funcionário solicitante. O que eu sei, eu não preciso do aprovado por quatro neste. Mas solicitando empregado, acredito que foi só empregado. Então, caso em questão, mais uma vez, ele vai estar sempre olhando para o que você está tentando se referir? Essa referência está mesmo aí? Tudo bem, acredito que temos mais um aqui que é apenas um aparelho faltando, 0, tem uma graxa extra. Tudo bem, então isso é dois controladores não no último, bem, este não tinha nenhuma dependência em qualquer inclusão. Então deixe-me ir em frente e construir o projeto apenas para ter certeza de que não há outros erros de depuração em qualquer lugar no código. E foi construído com sucesso. E posso assegurar-vos que até este ponto, tudo o que fizeram continuará a funcionar. E mais uma vez, a importância deste refator é que ele reduzirá a probabilidade de você introduzir quaisquer erros como T humano nesta aplicação. 61. Revisão de recursos de segurança construído: Ei pessoal, Nesta lição queremos rever alguns dos recursos de segurança embutidos que é V.net Core proporcionou a ele. Agora construir um site seguro é de extrema importância. Há algumas maneiras que essa pessoa não pode tacos. E enquanto alguns deles são mais baseados na rede, como talvez ataques de negação de serviço. Alguns deles estão realmente no controle do desenvolvedor. Eles são, na verdade, a responsabilidade de garantir que essas proteções estejam no lugar caiam diretamente em nossos laboratórios. Como os desenvolvedores de aplicativos sabem, a Microsoft, é claro, sabe a importância da segurança. E você veria que eles já meio que assaram em certas coisas como se revisássemos nossas coisas de gerenciamento de usuários, Lucy, que as senhas são hash para, a mesma senha nunca será da mesma maneira duas vezes. E muitas considerações foram para esse tipo de coisas. É fácil para nós colocar como autorizado para restringir o acesso a certas partes do nosso aplicativo com base na função ou apenas precisar de alguém para estar logado, algumas coisas já estão integradas. Então eu queria me afastar disso porque nós já meio que exploramos essa segurança e controle de acesso, mas depois adicionamos um nível de aplicativo. Quais são os mecanismos que eles já nos deram? Então, um ataque muito popular é a referência cruzada de falsificação, CSRF para abreviar. Agora, esse tipo de ataque permite que um invasor induza um usuário vítima a executar ações que não pretendia. Resumindo, alguém pode escrever como uma forma de JavaScript para automatizar uma opção. E você vai ser nosso usuário regular, você acha que está fazendo alguma coisa. Mas, como seu script está sendo executado em segundo plano, eles podem estar manipulando os dados no site que você está visitando. Então, como dono de um site, certo? Então foi você como um usuário, seu ouvido, você não sabe o que, então, como o desenvolvedor do site, o proprietário do site, você quer ter certeza de que o invasor não será capaz de manipular qualquer sessão de usuário para carregar quaisquer ataques maliciosos. Então, uma maneira especial de fazer que R1 Lupo que as pessoas costumam querer explorar seria qualquer coisa que está aceitando dados como postagem. Tudo bem? Bem, quando você faz uma edição e, em seguida, você clica em Enviar como já passamos antes, você sabe que ele faz até post e, em seguida, ele vem aqui. Mas então observe que todos esses controladores, uma vez que geramos esses códigos de controlador e essas opções, certo, todos eles tinham essa bandeira acima do método post, validar token anti falsificação. Então, o que acontece é que cada farm que dotnet core gera o automaticamente colocar em, na forma tag alguns anti falsificação Tolkien para ver que garante que quaisquer pedidos chegando a este ponto final. Tem o, tem um Tolkien válido. Tudo bem, então o Tolkien é cozido na forma virtude de você gerar essa forma de edição. Uma vez que você faz aquela fazenda Tang, ele está automaticamente lá. Você não está vendo. Você nem tem que colocar a parte de cima lá. Você não tem que fazer mais nada. Não precisávamos fazer mais nada. Mas ele quer que o usuário aperte Enviar. Token vai ser enviado junto com a solicitação. E, em seguida, esta anotação está vendo, certifique-se de que este token é válido. Portanto, se algum pedido vem de algum lugar onde o Tolkien não era um sistema gerado e válido, então ele rejeitará esse pedido. Se não houver Tolkien, você rejeitará esse pedido. É como um nível automático de proteção que nos é dado. Sabe, quando estávamos montando nosso, eu acredito em tipos de folhas. E eu teria aludido a configurar a exclusão. Lembre-se que temos o nível de dever como o get e a exclusão como o post. Mas, em seguida, modificamos a interface do usuário para tipo de ignorar a necessidade de ir para o post e apenas lidar com o git saber que dissolvível em nossa capacidade. Então eu disse que eles são maneiras mais seguras de lidar com isso. E eu estou apenas abordando isso neste momento, certo? Essa é uma vulnerabilidade de segurança porque alguém poderia automatizar nossas solicitações com qualquer ID, essa opção de exclusão e excluir os dados, mas então temos um mais seguro. Então é por isso que eles nos deram dois passos para começar porque eu queria ter certeza que o deletar um que você confirmou que estava vindo de uma fonte válida. Portanto, abordaremos essa vulnerabilidade de segurança nesta seção. Outro tipo de proteção embutida que eu quero apontar também é que nos é proporcionado pelo Entity Framework Core. Então, por causa de como Entity Framework Core constrói suas instruções, injeção sql torna-se muito difícil para um invasor executar. Portanto, a injeção de SQL é um tipo de ataque onde eles preencheriam um formulário e na caixa de texto eles colocariam em alguma forma de condições de tal forma que, se você não estiver formando sua consulta SQL, estamos usando as práticas recomendadas, também conhecido como instruções preparadas, ou apenas usando um Modelo Relacional de Objeto ORM, nosso mapeador, desculpe, apenas o Entity Framework estão em outras linguagens. Sabe, cada língua tem a sua própria. Então Entity Framework é nativo do dotnet. Se você não estiver usando um desses estão mais uma vez usando instruções preparadas, então você corre o risco de expor a ferramenta, um atacante apenas comprá-los, colocando em um comando SQL dentro do seu formulário. Então, usando nosso Entity Framework, o Access, banco de dados, camada de acesso, que é como um nível instantâneo de proteção, um nível muito, muito capaz de proteção contra invasores regulares quando eles tentaram usar SQL injecção. E há momentos em que as pessoas talvez queiram escrever suas próprias instruções SQL. Nós realmente não escrevemos o nosso próprio. Nós dependemos completamente do EF Core, nossa sintaxe de link. Bem, então há momentos em que as pessoas podem usar EF Core ou outras bibliotecas que dapper e acabam escrevendo suas próprias instruções SQL. E não há nada de errado com isso, mas todos eles te dão o mecanismo para preparar as declarações antes de enviá-las para o banco de dados. E declarações preparadas significam que você cria parâmetros semelhantes e, em seguida, você conecta os valores em parâmetros em vez de apenas concatenar a inflamação fornecida pelo usuário. Então, a string SQL. Então, esse é um nível de incidente, nível de proteção novamente contra injeção SQL. - Não. Estamos seguindo em frente e a próxima coisa que vamos fazer é modificar todo o nosso processo de exclusão, certo? Então, como eu disse, é uma lacuna de segurança em nosso aplicativo. Você veria muitos exemplos fazendo isso do jeito que eu fiz. Quero dizer, o bastante simples para começar. Mas, neste momento, já não estamos a começar. Temos um aplicativo completo e queremos publicá-lo na Internet, então precisamos ter certeza de que é hermético. Então vamos passar e corrigir algumas dessas lacunas à medida que elas surgirem. 62. Método de supressão segura: Ei pessoal, bem-vindos de volta. Então, o que vamos fazer nesta lição é proteger nosso botão de exclusão. E vai ser tão simples, eles provavelmente vão dizer então por que não fizemos assim desde a primeira vez? E sim, eu aceito esse livro de feedback onde aqui não, e isso é apenas lidar com ele. Então o que precisamos fazer é, e há algumas maneiras. Então, uma maneira que você provavelmente veria as pessoas fazerem isso é a confirmação. E eles provavelmente não usam apenas o JavaScript aqui. Às vezes eles não usam apenas isso. O que eles às vezes fazem é colocar como bibliotecas de terceiros como alerta doce e coisas para lidar com essa caixa de diálogo que aparece. Podemos fazer isso. Sem problema, mas vou manter simples, simples o suficiente para ser eficaz. Porque o que realmente queremos é em vez de uma tag âncora que simplesmente vai passar ao longo desta rota com o ID do item e basta chamar o método delete aqui, eu queria enviar solicitação padrão com um válido e t4a Tolkien para o método de exclusão aqui. Então ele sabe exatamente o que precisa remover. E isso é realmente um simples As, e eu vou apenas criar outra linha logo acima. Podemos embrulhar um botão dentro de um formulário. Tudo bem, então este formulário que eu entrei, LET é B ação traço. Sua ação é excluir. E então eu vou dizer que você é a regra da IDS. Ainda é isso, mas então seu método é post. Então, o que vai acontecer é quando este formulário for enviado, chamamos isso de pós-ação, certo? Então, em vez de ter essa tag âncora e eu vou apenas reutilizar isso, mas em vez de usar uma tag âncora, eu vou usar um botão e o tipo de botão, vamos ser tipo enviar, nosso tipo é igual a enviar. Então nós sabemos que isso realmente representa um botão de envio onde ele ainda está mantendo nossas classes Bootstrap e ícones em tudo. Mas é um botão de envio que avisará, confirmará se você realmente quer fazê-lo, e então vá em frente e chame as ações. Então eu vou remover este ID de rota. Não quero dizer isso dentro do botão em si. Certo, então vamos levar esse para os nossos alunos. Então este é o tipo de licença. Vamos testar isto. Certo, então vamos testar isso. E você vê aqui que está causando nosso projeto e dizer, bem, isso é secundário, eu sei, mas eu quero mostrar exatamente o que está acontecendo no código. Então eu vou para inspecionar Elemento e mostrar-lhe isso quando olharmos para o que está aqui para esse botão. Então este é um formulário R. Tudo bem? E então este é o nosso botão. Claro. Mas olha para isto. Temos uma entrada automática. Então note que tudo o que fizemos foi criar o fórum sobre o barqueiro. Eles são comprados gerou esta entrada com o nome. Acho que são dois sublinhados. Solicitar token de verificação, tipo é igual a oculto e o valor é igual a esse blob fora do fluxo que Silenciar. Certo, então esse é o nosso símbolo anti-falsificação. Então esta anotação acima, e eu apenas coloquei um ponto de interrupção aqui para ter certeza de que estamos batendo bem, esta anotação acima do método está dizendo, Eu só vou permitir nossa busca uma vez que ele tem um token anti falsificação que eu reconheço. Tudo bem. Assim ninguém pode sequestrar nossos lados. Estou apenas enviando nosso pedido porque eles podem facilmente descobrir o caminho e apenas enviar nosso pedido barra, excluir barra um e o primeiro registro, que é o que queremos evitar, certo? Então, quando eu clicar em Excluir, ainda recebemos a confirmação. Se eu disser cancelar, nada acontece. Se eu fizer isso de novo, clique em OK, então ele atinge nossos pontos de interrupção. Ainda estávamos superando o garoto ideal. Não há identificação. Ok. E sinto muito, sei exatamente por que não há identificação. Então vamos corrigir isso. Deixe-me parar a execução e então podemos ir e actualizar no botão. Eu não peguei isso, então DSPS. Então o que acontece é que ele tem seu próprio leilão agrícola e está competindo com a ação que teria sido gerada com isso. Então vamos remover isso e tentar novamente. Então eu vou apenas excluir, clique. Certo, estamos atingindo o ponto de pássaro e vemos que a identificação está chegando. Eu só vou continuar. E lá vamos nós. Então essa é uma maneira muito mais segura de excluir. Portanto, não mudou muito visivelmente mais uma vez, você poderia enfeitar um pouco usando uma dessas bibliotecas de terceiros para solicitar ao usuário. Você tem certeza? Tem certeza que funciona bem. Mas então a mecânica por trás de como essa solicitação realmente vai para o servidor não é muito mais à prova de balas do que era antes desta, esta lição. Então tudo o que você pode fazer é verificar as outras listagens e apenas certificar-se de que elas estão fazendo a mesma coisa. E eu também recomendaria que você ou comentário velho são apenas excluir este o método delete porque nós não vamos usá-lo. Nós só queremos confiar no método post com o e T4a Tolkien. E então isso vai cuidar de tudo. E eu também modifico isso para não, nem para um tick nenhum parâmetro fora do ID. Então para chamá-lo de modelo que estava sendo referenciado nos parâmetros e apenas levantar esse try-catch e eu apenas colocar um retorno ao tema do índice no final desta operação. Então isso tem menos a ver com segurança e mais a ver com apenas eu modificá-la. Acho que o meu código parece um pouco mais limpo. Outra coisa que eu fiz para limpar meu display de botões foi dois naquela TV que nós reservamos para os botões, criar um div com uma regra. Tudo bem, e neste papel, e apenas corra como um desvio direto. Lá, lá vamos nós. Então, neste papel, eu tenho um botão div PRB e eu estou apenas dando-lhe um traço col qualquer que seja o tamanho. Então podem ser dois. Provavelmente poderia ser um baseado no tamanho de nossos botões para que tudo esteja em linha. Então o div, div com uma classe chamada traço T2 para o, que é a edição. Então temos os detalhes e, em seguida, a mesma coisa para o formulário. E nós estamos apenas para que você possa ver claramente. E assim nossos botões serão exibidos em uma linha para que você possa ir em frente e que apenas orientar sua interface assim. Agora é isso para três ou nenhuma revisão dessas operações de exclusão para que você possa ir em frente e implementar essas medidas em suas outras páginas. 63. Envie e-mails usando MailKit e SMTP: Ei pessoal, bem-vindos de volta. Nesta lição vamos dar uma olhada em outra preocupação de segurança e que é com o registro. Então a realidade é que sim, você pode estar configurando um sistema como este para uso interno dentro de sua empresa e bem, ok, apenas funcionários da empresa seria esperado para acessá-lo. No entanto, independentemente disso, você ainda provavelmente quer colocar em que frango equilibrado, certifique-se de que a pessoa que está se registrando confirma quem eles são, no mínimo. Portanto, adicionar esse recurso de confirmação de e-mail a qualquer aplicativo é muito importante. E, claro, mesmo que eu esteja apresentando o recurso de e-mail dentro do contexto de segurança, também podemos usar esse recurso de e-mail em outras partes, como quando o remetente deixa solicitações, podemos disparar um e-mail automático para eles, coisas como Isso. Mas, por enquanto, vamos nos concentrar apenas no reajuste ou em um processo de distribuição para garantir que um e-mail seja enviado para o solicitante do registro e ele confirme e, em seguida, ele pode acessar o sistema. Então vamos apenas rever o que a nossa ação on post parece ou o que um manipulador outro. E fizemos algumas alterações porque modificamos o usuário. E então nós fomos em frente e criamos eles ao mesmo tempo. E então nós apenas fomos em frente e adicionamos a regra e enviamos todos de uma vez. Então não há nada aqui para confirmar quem você é depois de se registrar. Então eu queria tipo de mudança deste fluxo ainda precisa fazer todo esse objeto Criando ainda era necessário prosseguir se os registros ou bem-sucedidos. Mas nós já tinha eu e-mail remetente que foi tipo de embutido. E eu email remetente no código original estava fazendo algum trabalho aqui depois de registrar que um usuário não foi criado. Então vamos reintroduzir um pouco desse código e, em seguida, vamos em frente e configurar que eu email remetente classe 2 o que precisamos que ele faça. Então, para reintroduzir o que aconteceu aqui, teríamos um código a ser gerado, certo? Então nós tivemos essas duas linhas de código. O código Var é igual ao nosso Gerente de Usuários de TI. Pontos geram token de confirmação de e-mail, assíncrono, e estamos passando desse usuário. Então alguns Tolkien vai ser gerado em relação a este usuário. E depois vamos codificar esse Tolkien. E estamos armazenando esse Tolkien como uma string dentro desta variável chamada código. Agora esse código vai dar um toque na página. Praticamente a energia solar vai ter uma confirmação Pete. Então, quando brigamos com ele, tivemos uma página chamada Confirmar e-mail. Aqui está. Certo. Então, quando eles recebem o e-mail para confirmar quem eles são, eles precisam clicar nesse link e ele precisa carregar esta página no get, ele vai obter esse código. Lá vamos nós. Então, e mais uma vez, isso era tudo o que estava lá antes e eu o removi. Você provavelmente comentou. Então, se você comentou é OT pode descomentar isso neste momento. Mas o que vamos ter é uma URL de retorno de chamada igual a página de ponto de URL. A página que vamos dizer a eles para ir é uma barra cone Confirmar e-mail. Certo. Então, esse foi o que acabamos de olhar. E estamos passando os valores nova identidade de área, ID de usuário é o ID dado a este usuário e o código é o código que acabou de ser gerado. E, em seguida, o URL de retorno é qualquer URL de retorno que estamos passando a partir daqui. Pode ou não estar lá, é divertido. Mas a questão é que esta é a URL. Vamos entrar em “get created”. Então a próxima coisa que precisamos fazer é confirmar ou permitir que eles o e-mail ou seu endereço de e-mail através do envio de um e-mail para eles, certo. Assim, a próxima linha estaria acordada e alerta para e através do que a programação assíncrona introduz. Então aguarda, pontuação email remetente ponto enviar e-mail é pia. Nosso envio de um e-mail para qualquer endereço de e-mail foi usado apenas com o assunto, confirme o seu e-mail. Então, se você passar o mouse, verá o e-mail, o assunto e a mensagem. Então mensagem HTML, o que significa que podemos colocar em nossas tags. Então, por favor, confirme sua conta por, e então nós temos a tag âncora com o href, e, em seguida, emiti-los codificado o URL de retorno de chamada que acabamos de construir. Tudo bem, e clicando aqui, assim você pode mudar essa mensagem como quiser. Mas isso é, no mínimo, o que sabemos. O código original também irrompe se, se declarações, e ele realmente tinha essas duas linhas em uma declaração if para ver se estamos apenas iniciando, em seguida, enviá-los para a página onde eles podem apenas clicar em, ir em frente e confirmar mais, enviá-los para o início de sessão. Então, em nenhum lugar realmente implementado no e-mail. Nós não precisamos do ajuste o fail-safe que nos foi dado arginina é então este é o que seu registro no post precisa ser parecido. Então eu vou deixar isso na tela um pouco para que você possa tirá-lo se você já não tem o acorde original. Tudo bem, mas não, nós precisamos realmente configurar o remetente de e-mail porque se ele acertar isso, então nada vai acontecer, nenhum e-mail será enviado ou qualquer coisa. Então, precisamos configurar ou e-mail sittings soul em nosso AP settings.js no arquivo, vamos ter este novo fogão para configuração. Então eu estou chamando de Configurações de E-mail. E nós vamos dizer sim, usar SSL, o servidor de e-mail. Então eu já coloquei algumas amostras baseadas no Gmail. Mas então a realidade é que em sua própria empresa você pode ter diferentes configurações SMTP. Só estou dando uma idéia do que acontece. Estamos certos em relação à sua situação. Você coloca os valores, você coloca o nome do remetente. Então, qualquer dois-pontos de e-mail do sistema. E então você poderia colocar talvez o nome da empresa no final para que as pessoas saibam que não é falsificação. O e-mail do remetente seria de qual e-mail estou enviando esse e-mail? Então, isso poderia ser facilmente administrador na gestão de licença não são resposta, algo assim. Deixe o gerenciamento e a senha que será necessária para acessar a conta associada a isso, certo? Mais uma vez, todos esses dois têm que ser configurados nesse servidor de e-mail para que o utilitário realmente se conecte e seja capaz de executar o envio do e-mail. Agora, fora disso, vou apresentar uma nova pasta. E eu estou simplesmente ligando para os serviços de TI, certo? Porque estou colocando o serviço Cinder por e-mail, sinto muito, só estou adicionando uma nova pasta e citando serviços de TI. E, em vez de serviços, vou ter um novo arquivo de classe que vou chamar de configurações de e-mail. Agora, esta classe é mais como uma classe modelo e vai ter campos idênticos correspondentes ao arquivo JSON de configurações app.js. Então eu vou apenas ir para realmente servir o propósito de é visto a partir das configurações do aplicativo em um objeto deste tipo, e então podemos usá-los em conformidade. Agora o arquivo mais importante seria uma interface que eu vou criar. E eu vou chamá-lo de remetentes de e-mail. Então isso é um, bem, eu só vou colocar tudo em uma classe para nós. Então eu estou chamando de remetente de e-mail. E este é realmente uma interface. Mas depois vamos ter uma aula pública. Então, se você quiser separá-los, tudo bem, mas eu vou mantê-los juntos apenas para fins educacionais. Então eu enviar e-mail remetente e essa classe está herdando de nossa interface. Então nossas interfaces vão ter uma função simples que vai realmente espelhou a função que vimos aqui. Então remetente de e-mail que diz backtracked, mesmo remetente aqui está referenciando I email remetente que é falha B. Tudo bem, isso vem com o sistema, mas vamos apenas substituí-lo com nossa própria funcionalidade. Mas ele tem essa função, Enviar e-mail, uma pia. Então eu estou apenas substituindo que enviar e-mail é pia. Tudo bem, e então vamos em frente e implementar essa interface aqui. Então temos esse método disponível por meio disso. Então eu vou primeiro nesta classe declarar um objeto do tipo Email Settings. E então eu vou ter um construtor que vai inicializar isso a partir do arquivo de opções, certo? Então, eu só vou ver as opções de IA, Configurações de e-mail e, em seguida, e esse é o meu pequeno objeto. Vou em frente e incluir essa extensão. E então eu estou inicializando. Então, é quase como se eu estivesse injetando neste objeto de configurações de e-mail local a partir das opções Arquivo. E Options aqui me representa. Veja, percebendo esta seção das configurações do aplicativo JSON na correspondência parece que discutimos a tarde da alma. E este deve ser o volume dos pontos, desculpe. Tudo bem, agora que temos nosso objeto local chamado perturbar alguém para começar a configurar o que acontece dentro dos e-mails de envio. Então eu vou fazer uma pausa neste ponto e eu vou incluir uma biblioteca. Provavelmente deveria ter começado com isso. O que precisamos para ir com dois novos Git e uma biblioteca chamada kit de refeições. Portanto, existem algumas bibliotecas que você pode usar e serviços de terceiros. Mas Mailchimp simplesmente desliza para dentro E, assim, o que eu me sinto confortável usando, então kit de correio. E quando o encontrarmos, podemos ir em frente e instalá-lo. Então, encontre-o e saiba que temos tudo pronto. Podemos voltar à nossa configuração. Então a primeira coisa que eu queria fazer é definir um objeto do tipo mensagem mime. E então isso vai exigir que eu inclua bibliotecas saber que estou usando meu kit. Tudo bem, então podemos apenas ir em frente e adicionar que falta ou diferença e que meu filho é cortesia do nosso kit de refeições são e enquanto continuamos, vamos ver minha mensagem. Então, estamos apenas construindo a mensagem. Agora meu eu sou apenas significa vários tipos de dados. Você não sabe que tipo de mensagens. Então estamos usando um tipo de mensagem genérica para construir esse e-mail, certo? Não sabemos se inclui fotos ou algo assim. Então é por isso que estamos usando esse objeto de mensagem. Então eu vou dizer mensagem mime do DOT. Então meu ponto de mensagem do DOT. E neste método, vamos adicionar nosso endereço de caixa de correio vindo das configurações de e-mail nome do remetente e configurações de e-mail, e-mail do remetente. Então, estamos adicionando o endereço da caixa de correio com base nesses dois valores. E então, da mesma maneira, precisamos ver para onde esse e-mail está indo. Então eu vou dizer minha mensagem ponto a ponto, adicionar endereço de caixa de correio análise ponto, e-mail. E e-mail é o que teria sido fornecido em nosso método SendMessage. A próxima coisa que quero fazer é ter certeza de que mencionei o assunto. Então minha mensagem ponto assunto é igual ao assunto que foi passado. E então eu vou iniciar uma sessão de construtor ou um construtor objetos. Então eu vou dizer construtores var igual a novo fisiculturista. E estou vendo HTML. O corpo HTML é igual à mensagem HTML que veio através do nosso método. E tão agradável e fácil e direto até agora que então eu vou ver meu corpo ponto mensagem é igual ao corpo da mensagem Builder Tool. Então é só que esses são conversão rápida. Saiba que depois que preparamos nossa mensagem, nós realmente precisamos executar estão enviando. Tudo bem, então eu vou tentar e eu vou começar uma nova sessão do tipo cliente SMTP. E eu vou colocar o uso aqui porque eu queria morrer, certo? Está acabado, por isso só tem isso aí. Mas ao incluir a biblioteca para o cliente SMTP, estamos usando Mailchimp não sistema em uma refeição, certo? Kit de refeições. Então preste atenção nessa parte. Então Mailchimp dotnet, o SMTP, que é a nossa biblioteca. E depois vamos validar o certificado de chamada. Então, temos essa linha, client.write servidor certificado de validação de chamada de buck é igual. E nós colocamos esses valores de objeto e em nosso Lambda é verdadeiro. Só estamos dizendo que sim, é um certificado válido. Tudo bem. Então vamos nos conectar ao nosso servidor SMTP. Então nós vamos dizer, eu vou esperar, cliente.connect é afundar. E então estamos passando em nossas configurações e eu estou recebendo isso, ok, e deixe-me apenas lidar com o que esta linha está vendo. Então client.connect, assíncrono, configurações de lote de e-mail, serviço de refeições. Se você apenas olhar para o que ele requer, ele requer os buracos, a porta. Estamos usando SSL, certo? Então servidor de e-mail, porta de e-mail e sim, ou usando SSL, estamos recebendo este o e dizemos ponto configurar como ele cai, certo? Mas esta linha vermelha está aqui porque dissemos que não vimos uma cena. Tudo bem, então seguir em frente. Depois de termos feito isso, então se a autenticação é necessária para SMTP, que provavelmente qualquer SMTP seguro provavelmente será, vamos dizer cliente não autenticar um coletor e eles estavam passando o e-mail e a senha. Então foi o que eu disse. Estes têm de ser configurados sub-reconhecidos e o servidor SMTP, Vou associar não configurar nossas quedas de trigo. E então vamos ver o cliente enviar uma sincronização. Eu sou praticamente tudo isso que estamos vendo configurar, um peso cai no final. Então vamos dizer para enviar uma sincronização minha mensagem. Então esta é uma mensagem que nós construímos, enviamos, configuramos nosso caminho, ela cai. Tudo bem. E então vamos em frente e desconectamos forma assíncrona e configuramos uma maneira que ela cai mais uma vez, modo que é praticamente isso. E, em seguida, se atingirmos uma exceção, o que queremos fazer é provavelmente apenas lançar uma nova exceção de operação inválida, pos única mensagem. Tudo bem, para que todos saibam o que pode ter acontecido. É claro que em uma sessão real provavelmente não faria isso, mas para fins de teste podemos deixar isso. Certo, então nossa próxima ordem de trabalho é registrar nosso remetente de e-mail. Então, já sabemos que quando criamos nossos próprios serviços, temos que entrar em nossa startup. E, em seguida, em nossa seção de serviços de configuração, eu vou adicionar um pouco eu vou apenas para esculpir uma seção em algum lugar aqui. Vou colocá-lo logo acima do mapeamento. E eu vou apenas colocar um pequeno comentário, diz ver exatamente o que está acontecendo. Então, services.com figura e estamos adicionando configurações de e-mail. E este é o nosso módulo 4, 4 até settings.js EM multa. Portanto, configure as configurações de e-mail. E eu vou dizer configuração obtém seção Configurações de e-mail, certo? Então é isso que eu vou chamar de opções de IA. Ele só vai saber que esta é uma seção sobre ele deve serializar para este e usar em qualquer outro lugar. Em seguida, também vamos adicionar singleton para o remetente de e-mail e o remetente de e-mail. Então, uma instância disso vai pervious lançar todo o aplicativo em praticamente saber, seria bom para isso para uma rodada, mas como eu disse, estes eram realmente apenas valores de demonstração. Você obterá suas configurações SMTP e poderá usá-las. Você pode experimentar diferentes provedores como enviar a grade ou jato masculino. Todos eles têm servidores SMTP que eles permitirão que ele use por custos relativamente gratuitos ou muito baixos. E, mais uma vez, se você estiver em sua empresa, então você deve ser capaz de acessar o servidor SMTP e colocar essas credenciais conforme necessário. Tenha muito cuidado com essas credenciais. E você pode ir em frente e testá-lo até que seja para registro. Mas, mais uma vez, este remetente de e-mail pode ser usado em qualquer lugar. Então, outro uso prático, menos orientado pela segurança dele, eles colocarão uso prático dele seria talvez no controlador de solicitações de licença. Porque quando alguém envia um pedido de licença, será bom se depois de ter sido criado e colocado no sistema com sucesso, você enviar um e-mail como vermelho aqui. Enviar e-mail, ferramenta, supervisor são quem sabemos recebe esses e-mails direito. Após o cancelamento. Você pode enviar um e-mail para o usuário, que você possa enviar usuário para supervisor e usuário solicitante, certo? Quando ele é cancelado, você envia um e-mail assim que ele for bem-sucedido e envia o usuário da ferramenta de e-mail que solicita isso novamente. Então esses schon, o ponto é que da mesma forma que injetamos todos os outros serviços, como nossas unidades de trabalho, podemos facilmente vir aqui. E agora esses são aqueles duplicar uma dessas linhas e dizer que eu enviar e-mail remetente, e-mail remetente, inicializá-lo. E uma vez que temos isso, podemos usar este remetente de e-mail em qualquer lugar para que eu possa ver após a criação de nossos pedidos ou você colocar os comentários? Lá vamos nós. Eu poderia dizer remetente de e-mail. Enviar e-mail é sincronizado. E então o e-mail pode ser os e-mails dos supervisores. Então, vou colocar um e-mail. Acho que estamos usando admin adiciona host.com local como nosso usuário administrador. Isso é bom. O assunto pode ser pedido de licença. Tudo bem. E, em seguida, novo pedido , mais uma vez, ser um filho sua, sua situação, você tomar essas decisões, certo? E então você junta sua mensagem HTML para que você possa contextualizar para outros edifícios. Então há tantas coisas que você poderia fazer, certo? Eu não quero necessariamente colocar muitas idéias em sua cabeça, mas eu só quero dar-lhe o conceito e eu confio que você pode pegar esse conceito e aplicá-lo em seu próprio contexto. Tudo bem, então você pode fazer esse e-mail aqui. Mais uma vez, você poderia fazê-lo após o cancelamento. Você tem tantos aplicativos, mas não, você sabe como configurar seu aplicativo e configurá-lo para enviar e-mails onde e sempre que precisar deles. 64. Visão geral de seção Publish: Ei, pessoal. Então, tivemos a jornada que construímos desde o zero criamos a corte. Primeiro do banco de dados exploramos todas as porcas e parafusos. Coloque-o juntos e temos um bom trabalho fora fraco e fazer login no QI e criar um usuário aplicar para licença em tudo parece bem. Não, isso está tudo em cima da máquina no passo final. Realmente? Para qualquer aplicação que tenha sido desenvolvido é colocá-lo em produção e colocá-lo de uma forma que este é ele é acessível para outras pessoas. Então, como eu disse, aberto para saber que estivemos bem no estúdio Cordon Results e, em seguida, executá-lo em pessoas mais. É só na nossa máquina, as bases de dados sobre a máquina ligada. A menos que deixemos nossa máquina ligada para sempre, ninguém mais poderá ter acesso a ela. Não, por esta manhã, vamos dar uma olhada em casa. Você pode publicar este aplicativo em espaços públicos para outras pessoas. Agora, vamos apenas ficar desta vez para ver algumas opções em andamento, apenas dando a vocês uma visão geral sobre as diferentes técnicas de publicação que vamos passar . Então o primeiro 1 que vamos olhar é publicar em um servidor local quando eu digo servidor local não necessariamente significa que ele está no local porque não, você sabe, você sabe, os movimentos de todos dos servidores de código não são necessariamente no mesmo espaço de escritório. Então, quando eu digo servidor local, eu quero dizer realmente apenas um servidor em algum lugar no que nós precisaríamos nesse servidor é, ah, software especial chamado Internet Information Services, ou II S. Então este é o software de servidor Web emblemático no DSO. Se ele vai ser hospedagem ou de máquina vai estar hospedando um aplicativo web como nosso, temos que ter certeza que é equipado com II s Andi. Está pronto, receba isso. Então, vamos olhar para a publicação usando o IIS ou para um servidor que tem o iis ativado. Então isso seria mais para uma intranet sentado direito. Então, você sabe, as pessoas seriam capazes de assar que está sempre usando o nome da máquina em, então são nossa própria configuração personalizada para o nosso Earl em. Em seguida, eles seriam capazes de acessar o aplicativo em conformidade para que um para esse cenário também precisa levar em consideração que não tem que estar pronto para ser servidor. Então, quer as abelhas de dados estejam no mesmo servidor ou em um servidor remoto, isso vai desempenhar um papel enorme na nossa capacidade de publicar Andi. Use o para cima depois. O outro cenário que vamos analisar sua publicação no Microsoft Azure. Então, se você está publicando uma máquina virtual na Microsoft como seu que, é praticamente o mesmo conjunto de etapas que o que acabamos de passar com os I s e um servidor causa que o serviço que eu servi considerado software, é certo. Mas então, como você está, também nos fornece instâncias gerenciadas chamadas como seus aplicativos Web. Então nós vamos olhar para, você sabe, assinando para uma esférica, e ela pode obter um de graça por alguns meses. Problemas de direitos, fora de serviços gratuitos e alguns créditos sobre isso devem ser suficientes para começar. Eu já tenho Annacone, então eu posso não ser capaz de levá-lo através do processo do Senado. O que? É um processo relativamente fácil sobre, na verdade, na verdade, como podemos implementar o aplicativo Web como seu e também girar uma instância gerenciada fora do servidor de banco de dados ou servirá isso, uma vez que ele é gerenciado. Então, na verdade, é uma escritura para ser serviço oferecido pela Microsoft como seu para furar nossos próprios caras. No próximo vídeo, vamos começar a configurar um servidor, em seguida, publicar nosso aplicativo para definir servidor e, em seguida, apenas colhendo as enfermarias fora disso. 65. Configurar serviços na internet (IIS) em um servidor: Ei, pessoal, bem-vindos de volta. Eu tenho aqui na tela uma máquina. Eu tenho uma máquina virtual e vamos ver que ele vai desempenhar o papel fora do nosso servidor de produção que nós vamos estar publicando sobre o aplicativo Net core para não, apenas divulgação tão completa. Esta máquina virtual está na verdade no azure. Está nas minhas roupas, mas mais uma vez é a mesma dinâmica. Realmente não importa onde o servidor está é apenas uma questão de obtê-lo ou equipado com o que você precisa para hospedar um aplicativo dot net core. Então, a primeira coisa que eu vou obter é IIS instalado. Então temos que ter este aplicativo ou este aplicativo servidor Web chamado II s ou serviços de informação da Internet . Portanto, se você estiver em um servidor ou mesmo se estiver em um computador comum, você pode fazer isso em um computador Windows 10. Ele pode ir e dizer “Você quer o dedo do pé”. Eu não removo recursos Bem, ele realmente desativou os recursos do Windows à nossa direita e, em seguida, você deseja habilitar os serviços de informações da Internet. Então, se você estiver usando uma máquina Windows 10 A. Não tenha um servidor para pelo menos executar esse experimento. Se estiver tudo bem, você pode ir em frente e olhar em suas janelas. 10. Apenas acerte. Comece a digitar os recursos do Windows em. Então ele deve lhe dar a opção de chegar a isso. É uma caixa de diálogo que permite habilitar os serviços de informações da Internet. Mas eu vou para lá. Você percebe que há caixas pretas. Então, na verdade, vou passar por toda a instalação, certo? - Não. Mas eu quero que você seja o servidor. Mas é o mesmo set off opções independentemente. Tudo bem, então se você está no servidor e você tem o gerenciador de servidores pronto para você, então você pode ir para regras de anúncios e recursos. Isso trará um assistente, que ele pode simplesmente ir em frente e clicar em próximo. E eu só estou pensando a seguir através destes porque estes realmente não têm qualquer influência sobre o que é terrível fazer, certo? Então eu não sei sobre sua configuração, mas lá eu não preciso delas para May. Então, neste ponto, você começa a tela, adicionar surgiu e regras de servidor de recurso, e então você verá servidor Web. Eu perguntei isso que não ver o que pode ir em frente e tomar isso e clique em adicionar recursos e, em seguida, ir para o próximo em. Em seguida, seremos levados ao mesmo tipo de escuta que você teria visto se você estivesse usando o Windows 10. Então, a partir daqui, seus recursos de combustível que você definitivamente quer habilitar. E se você já tem dot net instalado não são esse framework. Instalar algo, talvez tomar autoridade sobre você pode não ser capaz de rebocar. Leve-os. Mas praticamente tudo o que você vê aqui ficou na minha tela. Por favor, certifique-se de que você também tê-los escolhido no seu se você quiser adicionar, hum você sabe ponto net de onde 3.5 recursos que você pode em. Eu só estou mencionando isso porque eu quero dizer, se esta é a primeira vez que você está configurando o servidor que você precisa toe pode ser configurado para diferentes cenários porque nem todos os aplicativos podem ser um núcleo dominante aplicações. Então, você quer se certificar de que seus olhos estejam ainda mais usados para lidar com os aplicativos mais recentes e legados? Se você já fez, eu perguntei então eu acho que você não tem que enlamear as águas fazendo qualquer fora neste segundo. Vá em frente e clique em Avançar, você clica em Avançar novamente em, então nós temos a broca não. Então, isso seria mais comum entre a caixa permitida do Windows 10 ou qualquer outra máquina do Windows . Della caixa para insultar I s nas instalações do servidor. Eles querem ter certeza de que você tem um servidor Web marcado. Vamos lá. Http. Características todos estes precisam ser assinalados. Você pode adicionar mais registro se quiser, mas pelo menos apenas certifique-se de que o que eu marquei é também leva do seu lado. Então eu vou passar devagar sem entrar em detalhes sobre o que cada um é. Quatro. E depois descemos a este. Esse é o desenvolvimento de aplicativos dele. Você quer fazer o desenvolvimento de aplicativos? Andi, estou literalmente, sempre enlouqueci aqui e acertar tudo. Mas você quer definitivamente ter certeza de que você está adicionando todos esses recursos porque mais uma vez , você quer que sua configuração de olhos seja tão inclusiva duas versões diferentes quanto possível. Tudo bem, então eu estou pegando tudo isso, exceto o protocolo Web Socket estático. Se dp server, eu não preciso disso para não vai ter certeza de que eu tenho meu console de gerenciamento também marcado. Então eu só vou passar por apenas mais uma vez em então você pode apenas encontrar, verificar novamente e ter certeza E eu quero dizer, quanto mais você tick é mais recursos que você tem. Realmente? Então você sabe, você pode escolher, escolher e recusar mais uma vez se você tiver Asare, o servidor que você não usaria já tem olhos instalados. Você provavelmente não precisa passar por tudo isso então. Isto está a ver Deseja especificar? Bem, você não tem que se preocupar com isso. Reinicializações são apenas reiniciadas automaticamente, se necessário. Obviamente, se esta é a sua pesquisa pessoal sobre essa alavancagem se não, por favor financie o administrador do sistema soldado para garantir que você está fazendo esta história em um momento em que ninguém está realmente acessando o servidor. E então você pode ir em frente e clicar em instalar para que a instalação do burro possa demorar um pouco. Ou talvez você já tenha acabado. Seja o que for, o meu ainda está em andamento. Então entenda, para continuar com as outras coisas que precisamos fazer para começar, isso inclui obter o pacote de hospedagem. Então nós onde esta é uma página familiar para nós porque nós tínhamos que não saber o SDK. Inicialmente, quando começamos nosso projeto. Estávamos em onde está na 3.1. Então, se você tem bean fazendo as atualizações sobre para saber, então você provavelmente estaria na versão 3.13 ou talvez um certamente maior, Hum, incremento a partir deste. No momento em que estás a fazer esta parte, não importa . Nós estamos indo apenas para obter os últimos pacotes de hospedagem neste discurso foram ajuste para prestar atenção ao SP que ler o tempo do Alcorão em. Estamos olhando para as janelas e recebendo o pacote de hospedagem para que possamos simplesmente ir em frente e clicar em Baixar esse pacote de hospedagem, tudo bem, e ele não está carregado, mas está me dizendo que o ice precisa ser habilitado. Portanto, se você ainda estiver recebendo esta mensagem depois de concluir a instalação, então você sabe que você pode querer voltar atrás e certificar-se de que ela foi realmente concluída para que a minha não seja concluída. Estou recebendo esse erro. Isso é bom. Vou esperar e retomar uma vez. Ajudar tudo bem. Então nenhuma Isis terminou e pode ter demorado um pouco. Isso está tudo bem. Podemos fechar. Meu servidor não foi reiniciado, então isso também é bom e, em seguida, podemos validar que ele está funcionando indo em seu navegador e apenas escrevendo no host local. E então você deve ver esta página de lançamento. Não há necessidade de ativar a agitação do console de gerenciamento. Basta ir para começar e talvez digitando I s. Ou se você estiver no servidor, você pode simplesmente usar o gerenciador de servidores e ir para as ferramentas e ir para o gerenciador de Serviços de Informações da Internet . Tudo bem, então se você está em um PC normal, então você quer começar por escrever s e ele deve aparecer nos resultados da pesquisa. A propósito, estamos aqui. Então temos os servidores de nome de máquina. O nome é SQL. Portanto, ele tem o servidor SQL instalado nele, e é onde o banco de dados será hospedado para cima. Mas quando chegarmos a esse ponto, mostrarei o que acontece quando o banco de dados não está no mesmo servidor que o aplicativo . Não, e eu vou criar um novo site. Então você vê, no servidor você tem o que você chama de sites, e então nós também temos o site padrão, que é o que foi lançado quando você digitou em linha reta inteira local. Então eu vou criar um novo conjunto. Então, clicamos com o botão direito da ciência para adicionar um site e então eu estou dando um nome Científico e eu estou chamando isso de gerenciamento de licença. Ele também criaria um novo pool de aplicativos, que voltaremos e modificaremos depois disso. Hum, mas então você pode ir em frente, dizer deixar a gerência. Vamos escolher um caminho físico. Então, o caminho padrão para qualquer site, um I s é geralmente na unidade c, então eu boate www raízes em Dwell. Tudo em rotas www seria agora padrões sites. Eu só vou colocar em w w rota uma nova pasta, e eu só vou chamá-lo de gerenciamento de licença. Certo. Então vamos em frente e criar essa nova pasta, clique em OK, então qualquer coisa que entrar nessa pasta ainda estará transmitindo em nosso novo site. Vou deixar a gerência. Eu vou deixar a ligação como http em seguida a lei. O nome do cavalo que significa buraco vai. Que endereço usarei para chegar a este site? Vou tornar as coisas simples. Então a coisa é mais uma vez em um ambiente de produção, você pode ter um administrador de sistema que irá fornecer alguma orientação sobre quais padrões obtidos com esses endereços e configurar esses endereços s e assim por diante, mas certo. Não, só estou colocando isso aqui. Este é o meu servidor, às vezes, mostrando os passos de qualquer maneira. Então eu estou chamando este gerenciamento de licença que ponto com internet porque realmente e verdadeiramente, nós construímos este aplicativo para que nossos colegas de trabalho possam usar cada um que eu possa usá-lo para aprovar. Deixe em nossas Corporates pode usá-lo, aplicar 40. Então é algo que toda a empresa, todo o escritório vai precisar de acesso no DSO que estamos fazendo gerenciamento de licença, não internet ponto com em Nós podemos apenas dizer começar chateado imediatamente clique em OK, então nós temos o nosso site. Então, se eu for para ele, então ele vai tentar ir para internet dot com. Então, o ponto. Então o que precisamos fazer saber é modificar o fogo hosts porque mais uma vez, isso é algo que está no servidor. Não queremos que isso acabe. A Internet está tentando passar pela Internet, mas é isso que está tentando fazer. Então eu vou para o meu computador, e eu fui para o mano. Ainda a pasta no meu sistema Windows Unidade C. 32 pilotos no E.T.C. E.T.C. E.T.C. acho que abreviação de etcetera. E eles estavam procurando por um arquivo chamado hosts. Então este arquivo hosts nos permite gerenciar o mapeamento do servidor, então eu estou vendo vários wrappings. Se você está fazendo isso localmente, é a mesma coisa para que possamos abrir este bloco de notas divertido plus plus, e é melhor abri-lo no administrador mais porque você sabe, este arquivo é muito delicado, mas o que estamos vai fazer é configurar um mapeamento cavalo local. Então você vê a palavra casal baixo. Então, se você não está tão familiarizado com servidores, host local é o nome que resulta que este I p, que é 1 a 7.0 ponto 0.1. Certo, então sempre que você vê isso, eu p, é sinônimo de hosts locais e host local ou isso eu realmente quero dizer a máquina que você está usando. Tudo bem, então lembre-se disso quando você estava executando nosso aplicativo em B, mas mais cavalo local de serviço chamar em algum número de porto. É a mesma coisa que você vê na máquina. Sua chamada em algum número da porta. Certo? Portanto, nossa porta padrão é a Porta 80. Poderíamos ter mudado isso para o nosso novo site. O que? Deixei-a na porta 80. Esse é o padrão. Porta de transmissão Http eso. O que eu vou fazer é criar outro mapeamento de cavalo local para dizer que o cavalo local ou este endereço anfitrião local I p também pode associar-se com o nosso novo site, que é deixar. Gerenciar significava que internet dot com. Tudo bem, então se eu estiver na máquina e eu Ambrose, que isso, então ele vai resolver para o host local e procurar o site apropriado. Certo? Então eu entendo que, mais uma vez, você tem que estar no modo de administração. Então eu vou apenas copiar isso e, em seguida, tentar gabar-se novamente e em nenhum lugar vendo um estreito, mas tem muito mais erro reconfortante desta vez. Então não, ele está me dizendo que está me dando uma era I s, que significa que ele está realmente tentando acessar o site que acabamos de configurar. Então eu vou para a pasta do site que se lembra, é telefonado para Sea Islet pop www route e, em seguida, deixar a gestão ligada. Então eu vou apenas vir aqui e eu vou criar um novo jejum para que você possa ser restringido com algumas das coisas que você pode fazer aqui. Mais uma vez, se você é administrador, você será capaz de fazer tudo o que eu estou fazendo aqui onde perfeitamente caso contrário, você pode querer criar o arquivo e talvez meus documentos e, em seguida, copiado sobre. Mas eu só vou colocar no arquivo html index dot aqui em que ainda é um documento de texto. Eles precisam ter certeza de que a extensão vê dot html. Então, eu só vou pisar em um arquivo. Vocês dois, finalmente, , ampliam sua consideração em decolar o txt porque eu definitivamente queria ser um arquivo html na maioria dos servidores. A maioria, se não todos os servidores, procura índice. É a primeira peça que procuram. Então entenda, para modificar isso na experiência e eu só vou dizer olá, eu estou tudo bem apenas para provar que ele está realmente funcionando. Então, quando eu atualizar isso vai procurar o arquivo de índice e, em seguida, ele vai me mostrar Olá, I s Então nós apenas configurar ou para um servidor de deslizamento, no caso de você sabe, esta é a sua primeira vez. Espero que estejas a gostar deste exercício. Agora. Mais uma coisa que eu vou fazer ou teremos mais duas coisas para coisas mais importantes para fazer. Vamos mudar nosso pool de aplicativos. Então eu vou voltar para o gerente. Eu quero ir para os pools de aplicativos e, em seguida, vamos ver o pool de aplicativos de gerenciamento de licença que acabamos de configurar. Clique nele Ir para configurações avançadas. Quais configurações básicas? Desculpe. Configurações básicas ativadas. Então eu vou mudar isso de .net CLR para saber Gerenciar frio. Tudo bem, e então eu cliquei. Está bem, então. Se você quiser, você pode redefinir. Acho que teria parado e começado de imediato. Mas você vai mostrar sua casa nos aplicativos estão em execução em tudo o que Você precisa saber. Se você clicar para fora e voltar para dentro, então você deve ver um. Isso significa que temos um site ou um aplicativo web rodando nesse pool. Assim, os pools são como contêineres que alertam para separar seus sites e é o mar Você pode separar dotnet para aplicativos de não atendidos. 4.5 aplicativos de você sabe, o padrão para cima, que vem com o site padrão em. Em seguida, introduzimos um novo site. Então, vamos conseguir este. Mas este não precisa ser nenhum tribunal gerenciador porque ele vai estar hospedando nosso aplicativo dot net core . Então essa é a primeira das duas coisas que deixamos. A próxima coisa que temos a fazer é terminar nossa instalação fora para tempo de execução. Então entenda, para voltar para a minha pasta, obter o meu tempo de execução, em seguida, vemos uma mensagem diferente onde diz por favor reinicie após a instalação ser concluída. Tudo bem, tudo bem. Então podemos apenas concordar com os termos e ir em frente e instalar. Tudo bem, então esta instalação não pensaria muito mais tempo ou era um isolamento muito mais curto do que o I's. Mas uma vez feito isso, podemos apenas ir em frente e atualizar nosso lado apenas para ter certeza de que ainda estamos batendo no arquivo . Não temos erros. Então, no próximo vídeo, vamos olhar para a publicação real do nosso rápido do Visual Studio e movê-los para o servidor 66. Aplicativo para publicação no IIS e SQL Server: Vocês são bem-vindos de volta. Então nós apenas configurar sobre I como servidor em nosso aplicativo servidor em nossa máquina real, onde nosso aplicativo será hospedado em DNO. Vamos publicar os arquivos do Visual Studio para o servidor. Então este vídeo vai me fazer girar para frente e para trás entre o estúdio visual na máquina real, pois há algumas configurações que precisam acontecer. Precisamos implantar o banco de dados que é necessário para suportar nosso aplicativo no. Temos algumas coisas que precisamos fazer. Então eu vou fazer o meu melhor para ser claro sobre o que eu estou fazendo e por que eu estou fazendo isso para que você tenha uma apreciação total como o que é preciso para obter um aplicativo em execução. Você sabe o que? Tenho esperança aqui no estúdio visual. Eu tenho que fazer. Isto é clicando com o botão direito do mouse no projeto que vou publicar. E então nós trouxemos este menu. Então, na publicação, queremos criar um novo perfil. Em seguida, vemos que temos algumas opções do serviço em como seu onde o como sua máquina virtual e, como eu disse, uma máquina virtual em nós. O seu é praticamente a mesma coisa que uma máquina virtual no local. Uma máquina virtual é uma máquina virtual. Então é o mesmo princípio, certo? Então, você também pode configurar. Perguntei diretamente ou FDP. Eu gosto de fazer a versão pasta neste cheio de versão ou a porta completa. , Método, por assim dizer é bom para os olhos na versão da máquina virtual, certo? Porque no final do dia, isso tem a ver com mover os arquivos físicos publicados da sua máquina para o local do servidor . Certo. Então eu gosto de fazer a versão mais completa em publicar localmente porque, você sabe, você pode ter problemas de permissões quando você está tentando ir para 1/3 máquina de partido. Seu usuário versus o usuário que você está executando no pode não ter a permissão. Ele pode não estar executando o administrador do Visual Studio e coisas assim, e você tem áreas genéricas que podem te frustrar. Então eu estou apenas aconselhando que você publicou Você pode apenas deixar este padrão para o deles ligado. Então podemos ir para o avançado, e então, com o avanço, podemos apenas dar uma olhada em algumas das configurações avançadas e ter um apreço pelo que estas estão vendo. Então você tem configuração liberado Stargate Framework. Você não precisa alterar mais essa implantação. Eles não têm que mudar o alvo ou a tempo. Não temos que mudar isso muito bem. Você não precisa mudar nada aqui a menos que tenha outras idéias. Claro que vamos para baixo para as opções publicadas fogo, ele diz Remover incêndios adicionais que destino. Agora, se você está publicando o endereço local, então você sabe que você pode quase seguramente pegar isso. Se você está publicando o local 1/3 do partido, eu aconselho que você tenha muito cuidado ao tomar isso porque isso significa que ele irá apagar todos os arquivos no local antes de colocar os novos arquivos em. Então, se você está cheio de caminho é, mas e eu tenho tido problemas com isso no passado. Mas se você está cheio de passado é ruim, então isso pode levar, você sabe, efeitos prejudiciais em outros aplicativos que podem estar no mesmo local, certo? Então você quer apenas certificar-se de que seu caminho de pasta está seguro em Do você pode levar isso para algum lugar para o ticket. Eu já dei a isenção de responsabilidade nos bancos de dados. Não, queremos modificar nossas cadeias de conexão. Eu vou tomar usar esta cadeia de conexão em tempo de execução e, em seguida, eu vou fazer algumas modificações aqui. Então, primeiro do servidor não é mais banco de dados local porque, OK, DB é praticamente local. Rebocar sua máquina ou qualquer máquina de desenvolvimento que você está usando. Como você pode ver, nós poderíamos apenas virar para ele através do estúdio visual em ah, produção sentado. Seu banco de dados pode estar no mesmo servidor que o aplicativo Web ou pode estar em outro servidor, um, em outro lugar na rede. Então você quer colocar os nomes dos servidores? Uma maneira agradável e rápida de saber o nome do servidor seria toe pode estar pedindo db um ou seu S a T B. A. Ser administrador de banco de dados é um administrador de sistema ser. Ou, hum, se você tem o acesso, você pode apenas ir para o servidor. Então, na minha situação, meu servidor será ou meu servidor de banco de dados estará no mesmo servidor que meu servidor Web Ou tudo bem, então você tem o servidor Web e o servidor de banco de dados. Às vezes, um é máquina. Um é máquina Be. Às vezes, ambos são máquinas. No meu cenário, ambos são a máquina A. Então eu só fui para o estúdio de gerenciamento, trouxe o Monitor SQL e a Área de Estudantes, desligou a conexão em seguida, olhando aqui, eu vejo nome do servidor, e este é o nome que eu preciso colocar. Então esse é o nome da máquina com uma barra invertida ligada. Em seguida, o nome fora da instância. Então isso pode muito porque você pode não estar usando SQL experiência pode estar usando talvez desenvolvedor ou empresa, E assim host local provavelmente seria bom o suficiente para você ou que o host local I p endereço que nós olhamos. Quando estamos sentados, , em outra situação, você pode ter um incenso chamado. A questão é, se você sabe, se você já sabe onde jogar você pode encontrar assim. Se você não fizer isso, então você pode querer procurar ajuda de seus administradores. Certo, alguém para copiar o nome do servidor porque esse é o servidor em que vou implantar a fera de dados. Tudo bem, então lembre-se, este foi o primeiro cenário do tribunal que o tribunal informará os dados para o banco de dados. Então é aí que minha base de dados seria configurada. Então eu vou apenas copiar este nome do servidor, em seguida, voltar para o Visual Studio e, em seguida, dentro das partes entre o sinal de igual após o servidor de palavras e o semi dois-pontos, Eu vou colocar SQL invertida barra SQL Express. Então esse é o meu servidor. Tudo bem, Então servidor é igual a SQL Express em seguida, o banco de dados em algum lugar para alterar um banco de dados palavra inicial como i n i t I um catálogo l espaço ver 80 uma elegia. Então eu estou gastando tudo para ter certeza que temos o ar de soletrar certo. Então não temos que mudar mais nada. - Não. Na coisa importante a notar é que algumas pessoas, meu acordo dedicado e usuários relacionados banco de dados muito específicos, certo, Então, esse é um ponto de segurança. Assim, no Neste cenário, o usuário do Windows estará executando o aplicativo e, como resultado, ele também precisa ter gravações executando no banco de dados. Em outra configuração, o que as pessoas fazem é criar usuários de banco de dados especificamente para o aplicativo em Então você, o desenvolvedor teria que incluí-los nas cadeias de conexão para ver que quando você está executando esse aplicativo no tempo, eu, também, também, conectei um banco de dados que está no seu servidor. Então você teria toe adicionar espaço de usuário I d é igual em então qualquer que seja o nome de usuário e nós apenas escrever usando o nome como um espaço reservado em, em seguida, semi dois-pontos, e então senha é igual a qualquer que seja a senha. Um incidente. Colon, certo? Então, isso é o que teria que ser perto cadeia de conexão para facilitar um usuário SQL que foi criado para seu aplicativo benefícios adicionais off. Isso seria que, bem, bem, é um usuário SQL, modo que essa pessoa não tem acesso de domínio a qualquer coisa na rede não são usuários. Síria não tem acesso a domínio nada na rede Onda. Além disso, teria acesso apenas ao banco de dados que alguém obteve essas credenciais. Eles não poderiam causar muito mais danos do que provavelmente contra um único aplicativo. Então, você sabe, isso é apenas sob o tidbit de segurança. Mas no meu cenário, eu vou estar apenas usando meu usuário do sistema para executar meu aplicativo, bem como fazer operações de banco de dados . Então, mais uma vez, você deseja modificar essa conexão padrão e dizer, use essa conexão em tempo de execução. Então, mesmo que onde o banco de dados local para o desenvolvimento local. Quando publicamos, isso é o que nossa cadeia de conexão deve ser semelhante. Eu também vou expandir a seção Entity Framework Migration em Dennis aplicar esta migração publicada em Eu vou apenas ir em frente e copiar todo este controle dentro do controle de cadeia condição, veja tick aplicar migração publicada sobre a paz. Tudo bem, então o que aconteceria é que o quando você publicar irá procurar todo o banco de dados na cadeia de conexão e, em seguida, tentar atualizá-lo são atualizações de rollouts. Ele também irá gerar os scripts para você, então nós vamos realmente ter um pouco de trabalho manual onde vamos gerar usar os scripts de migração que foram gerados. É assim que você sabe a história de tudo o que fizemos durante toda a duração deste projeto. Então publicaremos isso em. Então veremos o que acontece. Então o suficiente sobre tudo fora disso depois que nós configuramos todas as configurações, nós podemos clicar, salvar em, em seguida, criar o perfil ou uma vez de perfil criado. Sempre que estivermos prontos para publicar, basta ir em frente e clicar. Publicar. Certo, e assim que isso for feito, eles nos darão uma conexão direta com o plástico nisso. Mantenha o controle e clique nisso e ele vai lançar o explorador. Siga com todos os quatro arquivos publicados. Não, , isto ainda está no seu atendedor. Então queremos fazer é transportado dedo do pé ou destino. A maneira mais rápida e fácil de ter certeza de que temos todos nós para mim seria apenas selecionando. Certo, clique no arquivo. Não, eu tenho inverno na minha máquina local, mas o destino pode não ter com pedras em que é um genérico. Aquela extensão zip. Vá em frente em arquivar todos os arquivos quando o processo estiver feito, eu posso ir em frente e pegar esse arquivo. Copiar. Vá para o meu servidor, então. Paz. Não, já estou na raiz cheia de quatro. Meus sites têm direito de chamar o arquivo de índice. Eu já estou lá. Talvez você não tenha permissões para colar diretamente aqui. Certo. Então deixe-me ver se eu sei. Andi, se eu fizer, então eu encontro. Mas se você não fizer, então eu aconselharia um provavelmente ir para documentos leves e, em seguida, colar o arquivo lá em. Em seguida, você move o arquivo de documentos para a raiz para isso, porque mais uma vez, permissões e assim por diante. Se você não é o administrador do sistema, eu não tenho controle sobre essas coisas. Só estou te dando o trabalhador de propriedade para que você não tenha que ir ao administrador do sistema toda vez que você acertar um bloqueio. Tudo bem, então uma vez que você moveu com sucesso o arquivo zip para a sua rota cair ou deixar a pasta de gerenciamento da pasta do site em como você pode. Não clique com o botão direito em apenas extrair tudo aqui em. Eu só vou em frente e extraio. Isso não deve demorar muito, Onda. Bem, foi para uma subpasta, Senador. Suavise-os. Não os quero no suporte. Quero-os na pasta principal. Quero a rota do assunto fora deste esporte. Lá vamos nós. Nos fez querer publicar o controle A ex voltando. Controle V usando atalhos de teclado caiu muito, então não, nós temos nossos arquivos aqui e ele pode dar um tempo e dar uma olhada. Você vê todas as ofertas, todos os arquivos de referência que teriam adicionado ao longo do caminho temos um arquivo de conflito na Web neste arquivo de conflito na Web nos permite configurar alto, então eu só vou para uma edição de configuração da web com mais parte Além disso. Então isso é algo que eu gosto de fazer porque às vezes você comete erros em que eles não contam a história completa. Os registos dirão exactamente o que aconteceu, certo? Então, quando fizermos isso, vamos mudar isso para verdadeiro e salvar tudo bem? Há algumas coisas que precisamos fazer. Preciso ter certeza que tenho o banco de dados. Então deixe-me voltar para a pasta em, então podemos olhar dentro desta pasta E f perguntar seus scripts e se eu abrir isso no bloco de notas mais além apenas rapidamente você vê que ele tem em SQL ele tem os scripts SQL para gerar fora de nossas tabelas. Certo? E se você olhar de perto, você vê que você tem as idéias de migração. Então, cada arquivo de migração que foi gerado no Visual Studio manifesta-se em termos off na instrução SQL para dizer que estas são alterações que devem acontecer até o último. Então eu estou olhando por aqui no dia que eu teria criado inadvertidamente estão incluídos o vert . Os modelos de exibição em meus conjuntos de dados conjuntos de banco de dados, certo? Então, não, eu tenho algumas tabelas VM, então eu não sei se você detectou. Tenho capacidade de feedback. Provavelmente detectou, já consertou. Eu não fiz. Então este seria um bom experimento X. - Não. Para eu voltar, corrigi-los no tribunal, atualizar o banco de dados, obter o arquivo de migração mais recente e republicar. Mas vamos ver onde tudo isso vai levar para que eu possa realmente pegar todo esse arquivo. Tudo bem, então eu posso ir para o meu servidor de banco de dados, certo? Então, mais uma vez, Toby fez um servidor? O que? Está na mesma máquina que estão em outra máquina. Você só quer fazer login. Então eu vou criar um novo banco de dados em ir chamá-lo deixar no gerenciamento de pontuação porque esse é o banco de dados que nosso aplicativo é a cadeia de conexão está procurando, certo? Deixe o gerenciamento de sublinhado ou a chave. Portanto, este trabalho mais uma vez, seu banco de dados pode fazê-lo. Você pode não ter acesso assim, então você sabe, você provavelmente teria que instruir ele ou ela o quê? Quanto ao que eles precisam fazer. Então eu só estou dando as instruções claras. Então, depois de fazer isso, você deseja iniciar uma nova consulta com o gerenciamento de licença como o contexto fora da consulta Você baseou as tiras F, certo? E então você pode ir em frente e clicar em Executar. Agora, uma vez que isso é feito e é feito com sucesso, se você apenas ficar, eu olho dentro das mesas, você vê toda a tabela. Então aqui estão algumas das tabelas VM que inadvertidamente incluí nesta coisa toda, mas você olha para ela e tem a mesma estrutura que você teria visto no banco de dados local . Hum, prepare-se. Certo. Então, a seguir, precisamos começar a trabalhar. Tudo bem, então no meu irmão, eu vou em frente e Trend Bro no endereço. Deixar a gestão que ponto com internet e vemos aqui que estamos recebendo este par http de 500 certo? Então, várias coisas podem estar erradas nessa época. Agora, a primeira coisa que eu gostaria de fazer é olhar para os registros. Não, como vê lá, não há muito. Então deixe-me apenas eu estou jogando tudo doendo. Então, de volta na configuração da Web onde habilitamos o log, ele nos mostrou que o arquivo antigo teria sido toe long slash STD haute. Quando olhamos nessa pasta, não vemos nenhum incêndio aqui. Não, a primeira coisa que virá para mim é que há um problema de permissões, porque se há um problema de permissões, onde ou se há uma situação em que ele deve estar escrevendo um arquivo de lote e ele não escreveu , então as chances são de que os usuários que executam não tenham permissão para modificar esta pasta. Tudo bem, alma. Vou falar sobre o IIS. Eu vou olhar em meus pools de aplicativos em. Então eu vou observar que a identidade e eu acho que eu mencionei é antes é identidade do pool de aplicativos. Não, o administrador do sistema pode precisar modificar as permissões desse usuário. Eu estou no comando aqui no meu próprio sistema, administrando esta situação, então eu estou indo para ir em frente em Goto configurações avançadas em. Então eu posso selecionar a identidade. Então, clicando na identidade e, em seguida, as elipses ao lado dela, eu posso ir para a construção de nossos cones. E então quando eu caí. Estou vendo isso. Tenho outras contas, certo? Algumas contas provavelmente mais poderosas. Não, esta é uma situação muito sensível quando se trata de segurança. Portanto, certifique-se de que o administrador de segurança fez isso. No entanto, esta é a minha máquina. Eu posso fazer o que eu quiser. Tudo bem. Então eu vou dizer a ele para funcionar como sistema local. Então eu faço isso e clique em OK, então. Assim, o sistema local não é um usuário mais poderoso do que o usuário de identidade padrão. Tudo bem, e então eu posso apenas reciclar só para ter certeza, então, se eu voltar a atualizar, então ok, eu ainda estou recebendo aquele erro 500. Mas adivinha? Pelo menos estou vendo a pasta de registros. Tudo bem. Tão inédito. Mais um para ir. Então é por isso que você vê, é um erro completamente diferente. Mas eu ainda estou recebendo o mesmo. Http. 500 era, e esta é literalmente toda a ajuda que a Microsoft está dando a você. E eles estão te dizendo, basta verificar os Louds porque ele deve contar a história. No entanto, a primeira vez não havia fechadura para verificar, certo? Então eu só estou trazendo através de alguns cenários para ajudar a p mais fácil e quando você tem que resolver problemas. Então eu vou apenas olhar para este arquivo de log e ver o que está acontecendo nele é ver que havia uma seta tentando se conectar ao banco de dados no servidor, certo? Então vemos que ele está tentando se conectar ao servidor de cortiça está tentando se conectar ao banco de dados certo para isso. Ele está me dizendo que ele não pode abrir banco de dados solicitado por login direito no campo de registro . Então isso está me dizendo que quando eu vejo no grupo de trabalho barra SQL, que é o usuário está tentando usar o login. Então você tem um pouco de treinamento de administrador de sistema? Não, vamos dar uma olhada em algum treinamento de administrador de banco de dados. Então, voltando para o animal de dados, O que teria que acontecer é que qualquer usuário está executando o aplicativo, o significa que o usuário que acabamos de definir governar o pool de aplicativos. Quaisquer que sejam as identidades lá, essa identidade também precisa ter acesso ao banco de dados. Então eu mencionei anteriormente que às vezes você configura um usuário de banco de dados para que você não tenha se preocupar com um barco que identidades executando você apenas usar o usuário do banco de dados na cadeia de conexão nesse usuário do banco de dados deve ter acesso para fazer tudo, e você está pronto para ir. No entanto, no meu cenário, eu não estou usando um usuário de banco de dados usando sistemas locais tem que certificar-se de que o sistema local tem acesso ao banco de dados. Então estes passos iria oh neato acontecer independentemente das técnicas. Então, quero dizer, criar um usuário é fácil o suficiente. Eu posso apenas ir para segurança assim no servidor, mas a segurança clique em novo login. Se você estiver criando um banco de dados usando pode apenas dizer, você sabe, administrador ou deixar o uso de gerenciamento de licença do dinheiro ou o que quer que seja, dê a autenticação de usuário sq para dar a senha. Você provavelmente não quer impor a experiência Shin todos os direitos porque você não quer que a postura expire sobre esse usuário em. Você pode impor uma política para garantir que você obtenha uma senha forte. Certo. Mas as partes comuns depois de você fazer tudo isso a parte comum que você sabe que qualquer usuário ele tem tem é que você tem que ir. Então o exercício do banco de dados não vai para segurança. Você está certo. Clique em cima. Desculpe você aprofundou indo para usuários, então você clique com o botão direito do mouse em Novo usuário e, em seguida, você pode ver um usuário com sq um login ou Windows User . Tudo bem, então. Então essa é uma maneira de fazer isso. Outra maneira de fazê-lo seria apenas encontrar os usuários, neste caso, anti-autoridade backslaps sistema. Esse é o usuário que eu selecionei quando eu disse sistema local. Tudo bem, então eu vou clicar com o botão direito do mouse no meu usuário para que você possa ter facilmente apenas cliques direito que eu quero dizer usá-lo que você acabou de criar, direito , clique direito, ir para propriedades e então nós vamos para ir para o ... mapeamento do usuário. Então vamos selecionar o banco de dados A C aqui. O sistema anti não tem acesso a nenhum dos bancos de dados, certo? A Andi? É muito provável que seja qual for o usuário que você estiver usando por padrão, ele não tenha acesso a nenhum desses bancos de dados também. Alguém enfiar o banco de dados de gerenciamento de licenças e você vê que ele diz que o usuário, é o que quer que ele está em. Então eu vou me sentar como proprietário do banco de dados porque como o proprietário, você será capaz de ler, escrever em tudo. Mas, obviamente, é muito pobre, totalmente provavelmente pode ficar um pouco mais granular, mas geralmente Billy proprietário é poderoso o suficiente para não ter que se preocupar com mais nada sobre. Em seguida, você clica. OK? E depois que ele for dono, ele deve ser capaz de se conectar. Então vamos de novo no inverno. Atualize, então. Aqui vamos nós. Estamos lançando nosso aplicativo, e parece bom. Fora do curso. Você pode usar um pouco de conserto, mas , ei, então eu posso ir em frente e tentar entrar. Então lembre-se que vemos que o usuário admin desde o início. Então isso significa que uma vez que o aplicativo é iniciado, temos um banco de dados vazio. É que não tem nada ou escapada de desenvolvimento. Assim, indiretamente pode Goto s usuários de amendoim. Devemos ver sobre o usuário admin padrão lá. Tudo bem, parece bom. Então eu posso ir em frente e dizer admin no host local de calma e nossa senha padrão como estava em baixo. Estamos em nossas aplicações. Então, daqui, eu posso ir para deixar tipos ligados. Eu vou apenas ir em frente e criar um novo tipo de folha, então não, é o primeiro no sistema. Temos um pouco de dizer, hey, hr ou você sabe, hr ou você sabe, quem quer que por favor vá em frente e comece a acionar o sistema. Tudo bem, então eles podem entrar e começar a criar. Então eles vão dizer que a licença por doença recebe 10 dias por um ano depois. Então nós criamos. Lá vamos nós. Se editarmos isso, vou fazer com um corvo rápido só para ter certeza de que ele está funcionando . Duh. Se eu não estiver satisfeito, eu sempre posso apagar em “Estamos de trás dos pés Nada”. Certo? Então aqui nós apenas implantamos nosso aplicativo na Internet diretamente. Não, no Visual Studio, eu disse que queria fazer algumas alterações no banco de dados. Só vou me certificar de que não tenho os conjuntos ilegais de banco de dados. Certo, então eles não estão lá. Certo? Então o que aconteceu foi que, um eu teria tido conjuntos de banco de dados deixar o tipo V m logo então. Isso gerou a tabela. Deixe os tipos VM acreditar ou folha que gm é o que quer que seja. Não quero isso. Não quero isso. Certo. Então é isso. Eu vou executar um novo “meu concordo”. Tudo bem. Alguns ditados removeram tabelas VM, certo? E isso está feito. E eu só trouxe minha vista de banco de dados só para mostrar que, você sabe, o czar VM. Há quem tem os funcionários VM no tipo folha via Mas eu vou fazer um banco de dados de atualização . Então, no final deste banco de dados de atualização, eu teria atualizado meus bancos de dados locais. E se olharmos para os meus Grayson, hum , scripts, você vê que estamos deixando cair algumas das mesas e provavelmente alguns sentimentos. Mas é isso que os opiáceos devem fazer. Posso validar. Eu posso apenas atualizar, voltar e olhar e ver suas tabelas sem vm. Tudo bem, então parece bom. Agora vou publicar de novo. Então, querdizer, dizer, o que quer que tenha mudado, você dá para o RH. Eles disseram, você sabe, você precisa ajustar isso. É só que nós apenas ir em frente no clique direito ou projeto novamente, Ir para publicar em. Já temos o nosso perfil. Então, mais uma vez, esta pasta publicou técnica. Quero dizer, com o tempo pode ficar entediante, e eles têm mais automatizado com off fazer isso. Mas mais uma vez, esta é a versão mais segura para mim. Até mesmo a minha experiência passada onde eu inadvertidamente removi alguns arquivos importantes. Então eu só sempre publiquei localmente em, e então mover através da rede. Muito bem, os rapazes foram publicados, e eu vou apenas arquivá-los de novo Onda uma cópia através da rede. E aqui está a parte complicada. Então, você sabe, , o que eu fiz no passado é o que quer que já esteja lá eu provavelmente teria apenas um backup . Então é uma pasta nova, talvez nas datas, certo? E então colocar todos esses arquivos antigos dentro daquela sandália datada, que nesta data, essa foi a última partida que eu tinha. Então eu sempre posso reverter seu você sabe, eles são maneiras mais eficientes de fazer isso mais uma vez. Mas então em que é em um mundo perfeito, você pode nem sempre ser alguns apenas fechando alguns fatos que ele está vendo não podem se mover porque eles estão abertos. Então, você sabe, vez, em um mundo perfeito, há maneiras mais eficientes, mas em um perfeito onde você só precisa saber como fazer a estrada certa. Então eu estou ensinando a você da maneira perfeita para que quando você conseguir a perfeição, você será um perito amargo. Então acabei de arquivar a última versão. Ah, não, eu só estou parando sobre a nova versão. Então eu vou extrair tudo, mas eu só vou mudar o passado aqui para que eu não enviá-lo para a sub-pasta em. Então vá em frente e extraia andare. Os arquivos são extraídos. Nós temos o nosso novo em scripts de palavras diferentes, então eu posso apenas clicar com o botão direito do mouse editar sem nenhuma parte. Então, se você olhar para se você olhar perto scripts Saleh, se você está familiarizado com SQL já, então você sabe que você seria capaz de ver que ele diz, se não existe. A Andi. Então está dizendo que se não há história ou se isso já não existe, então faça isso. Então o que acontece é que ele só fará as migrações são as mudanças que ainda não estão no sistema, certo? Então, como acabamos de adicionar uma migração sobre a remoção das tabelas de VM. Lá vamos nós. Então, quando eu pegar todo esse script e executado contra o banco de dados existente um, a única maneira que nós vamos perder o que é se nós fizermos algumas mudanças, as colunas e coisas assim, como talvez um mudou o tempo do tempo Desculpe D criado a partir de ser hora de comer. Então sabe que haverá detalhes sobre nós e possivelmente corrupção, certo? Então, qualquer que seja a corrupção que Yudof tenha experiência durante a fase de desenvolvimento, fazendo esse tipo de mudanças, espere isso do seu pior no banco de dados. Portanto, eles querem ter cuidado durante todo o ano com todas essas migrações e as alterações que você faz . Então, na minha situação, o que eu fiz foi deixar cair algumas mesas. Então, se essas tabelas tivessem informações pertinentes, a migração diria que as abandonou. Isso levaria à perda de dados ou onde eu fui para copiar tudo isso. Andi, vá em meu socorro. Bem, estúdio de gestão vai para Bay City dentro da janela de consulta. Certifique-se de que meus dados sejam selecionados. Clique em Executar em então ele basicamente disse uma regra afetada. Ok, quando eu atualizar, então você vai ver que ele fez as mudanças. Tudo bem, então eles não estão mais em uma tabela VM para que você possa implementar alterações no banco de dados também. Tudo bem, Onda. Bem, eu acho que eu só tinha os usuários porque eles apagaram o tipo de folha. Mas, você vê, eu ainda tenho meus dados de usuário direito sobre as coisas, então é sempre uma boa idéia dedo do pé. Você sabe, certifique-se de que o script é executado para certificar-se de que o banco de dados está atualizado com o com sua nova publicação. Ele também depois de implantar novos arquivos, queria pelo menos reciclar seu pool de aplicativos, para que ele, você sabe, atualiza-se. Andi começa a puxar os primeiros arquivos, então eu vou voltar para o Bond. atualização e a aplicação ainda está aberta em execução. Então, mais uma vez, isso é para que você tenha implantado um aplicativo em sua rede local em uma sessão de Internet . Mas isso também pode se aplicar a uma configuração pública porque esse servidor poderia ter sido como um servidor VPs que você está usando para transmitir as Internets. Mas isso também pode se aplicar a uma configuração pública porque esse servidor poderia ter sido como Os princípios, eu quero dizer praticamente o mesmo com a conectividade de banco de dados configurando olhos, certificando-se de que você tem o pacote de hospedagem instalado para garantir que as permissões estão configuradas , Hum, certa forma que seu aplicativo pode executar contra a máquina, bem como os bancos de dados de forma limpa e eficiente. 67. Crie a conta do Microsoft Azure: Ei, caras neste vídeo vai criar ou Microsoft como cones Europa. Como eu disse antes, podemos começar de graça para chegar a esses sites. Nós vamos para como você não é Microsoft ponto com em. Então eu acho que eles te escreveram de acordo com sua razão ou sua língua. Mas isso é o que o site parece. deve olhar como e você pode ler através para ver exatamente o que, como há tudo um barco, é um projeto de lei sendo futurista, permitindo mais colaboração em operar de forma mais perfeita em um espaço de roupas que eles estão em todo o mundo em. Você normalmente escolheria o motivo mais próximo de você. Então eu estou no carro seria a razão. Então, a minha região mais próxima é a leste de nós, o nosso leste, mas isso não é para este vídeo. Este vídeo que estamos criando seus cones não estava configurando nada sobre regiões ainda. Eso para começar. Nós podemos apenas Bem, se você já tem uma conta real, então você pode apenas ir em frente e ficar com essa conta real. Bem, você pode apenas clicar em começar livre aqui. Eles dizem que você pode criar uma aberração hoje e você pode começar com 12 meses de folga nos serviços gratuitos, então isso é um bom negócio para mim. E se você rolar para baixo, você verá 12 meses de desconto em serviços gratuitos populares e gratuitos mais US $200 de crédito, que expirará em 30 dias. Então eles dão $200 sake e criar as máquinas virtuais que podem criar recurso está no código e experimentar até que o dinheiro está em cima, isso é realmente apenas por um mês. Mas, em seguida, há certos serviços que você apenas obter quatro grátis para o resto fora do ano não são e, em seguida, você terá alguns outros serviços que são sempre gratuitos para ele. Então o que vamos fazer é apenas ir em frente e clicar, começar de graça. Em seguida, eles vão pedir-nos para iniciar sessão com as nossas contas em tempo real. Se você tem uma conta real mais uma vez, você pode ir em frente e usá-lo. Se você não tem cones suficientes, então você pode ir em frente e criar um em. Esta é uma opção muito recente para entrar com o get Hub. Então eu tenho uma chamada ao vivo que eu usei, mas eu vou apenas orientá-lo através da criação de um primeiro. Não, o milho vivo não tem necessariamente que ser ao vivo ou em tudo. Olha, tacômetro é que eu tenho que ser, ah, conta tradicional comida quente. Pode ser um G. Millikan, então eu posso realmente usar talvez o mesmo endereço de e-mail que eu usei ou quadro do gueto pelos militarizados que eu uso quando eu estou me inscrevendo para as coisas. Posso usar isso com estes. Sim, huji, comida quente, seja lá o que for. Eu sou como o próximo, e aqui já está. Ele está me dizendo que eu já tenho uma conta da Microsoft. Então isso é apenas dirigindo meu ponto, entanto, que uma vez que você tem uma conta no endereço de e-mail, não precisa ser, ah, refeição quente ou tradicional viver um barco calmo lá. Está criando uma conta Microsoft para você com essas cartas de email para que você possa ir em frente. Andi, inscreva-se. É um processo bem simples agora. Sua conduta isso já existia. Isso é por conta que eu estava usando para se inscrever para o livre um cone, então eu realmente só fui em frente e amo estar em, e porque eu realmente não configurar muito mais, eu acho que o seu processo de registro é realmente vai parecer muito semelhante ao , independentemente. Então, uma vez que você superar o obstáculo de colocar em seu endereço de e-mail em prosseguir, então você provavelmente vai acabar em uma tela como esta onde você vai ser solicitado para suas informações demográficas apenas para manter registros, Hum, meu país e região é Jamaica em. Vou colocar o meu número de telefone do que vou tratar em seguida. Então eles disseram: Você quer um verificador? Adicionado insistiu por telefone. Ou você quer por arte de cartas? Alguém para escolher me leva por telefone e acabei de receber a mensagem. Não demorou muito, por isso vou dar o pé. Coloque o acorde e verifique. Aqui está uma parte que pode dissuadi-lo se não estiver preparado para isso. Eles vão querer verificar sua identidade por cartão para que você não será cobrado a menos que você atualize, significa que eles têm maneiras diferentes. Chamar planos de assinatura tão certo? Não, você está assinando o plano de assinatura gratuito. Uma vez que o plano de assinatura gratuito é feito , você não será capaz de fazer muito na plataforma até que você se centre em um novo plano de assinatura . Qual Cones tem essa atualização? Então, como eu disse, mais cedo. Há P como você vai e depois há pagamento como você vai fazer teste de barra, que é o que eu estou em, que é como metade do preço fora do P normal como você vai. Então eu realmente forneci as informações do meu cartão quando eu me inscrevi em por. Tendo feito isso, você pode clicar em seguida e tomar acordo se você não tem um cartão ou você não está confortável com o fornecimento de seus detalhes do carro do que você quer dizer que você pode parar aqui. Isso é bom. Mais tarde, quando estivermos realmente implantando o dedo como o júri ainda pode ver como ele será e ver como ele é benéfico para você. Hum, mas se você quiser, então você pode ir em frente e fornecer suas informações sobre. Em seguida, manter o acordo e aceitar os termos do acordo em. Então você estaria na plataforma. Então eu vou apenas entrar em minha conta real, meu ícone real citação unaspas, aquele que eu uso em mostrar a você como sua aparência. Bem, na verdade, eu só pisei no Portal Dot como seu ponto com, esperando que ele pedisse para ele entrar. Mas eu fiz isso. Andi acabou de redirecionar, discutindo a mesma conta que eu estava montando para Williams no Gmail Dot com Toe neste painel. Então este é o como o seu painel. No nível muito básico. Eles têm um painel para o lado aqui listando ordem. Alguns serviços que você pode obter. Mas porque não concluímos uma configuração ou porque eu não concluí a configuração, pelo menos quando eu for para assinaturas, vou ver que não tenho assinatura, certo? Então, como eu estava vendo a assinatura é segurar a re como um cliente com os europeus, Você vai empresa são o que quer. Então, se eu decidir mais tarde que eu quero fornecer minhas informações, eu posso apenas voltar e clicar. Acrescente, então isso me trará completar o procedimento de aprovação onde eu realmente tinha a assinatura. Então este é um teste gratuito em que estavam sentados. Apenas saiba que você tem o pagamento como você vai. Você tem suporte para desenvolvedores. Sim, como você tem alguns deles. Tudo bem. Então eu provavelmente iria com o pagamento como você vai, mas isso é isso tudo está nos passos fora, inscrevendo-se para como você está em. Isto é, se você quiser prosseguir com isso. Mas então para este desvio, realmente e verdadeiramente, eu só queria que você chegasse até o painel para que você pudesse ver que isso é como um zero se parece. Este é o seu portal de gestão de multidões. Você pode configurar suas máquinas virtuais, mas para este curso estará analisando serviços. 68. Publicação no Azure App e serviços SQL: Ei, pessoal, bem-vindos de volta. Vamos continuar aprendendo sobre o Microsoft Azure no aplicativo Web de hospedagem nele . Então você já teria configurado sua conta. Você provavelmente está vendo. Você provavelmente não está vendo o que eu estou vendo agora, mas esta é minha conta. Então este é o meu “cones “pagos. É a informação do meu cartão de crédito. Estou na assinatura de pagamento como você vai cortar teste de desenvolvimento. Tudo bem, então basicamente aquele. Andi, encontrei-o rapidamente. Este aqui, Al Ozio. Ele poupa. Você poderia ter cortado sua desculpa. Então este ... é muito mais barato do que o salário normal enquanto você avança. A premissa por trás disso é que, você sabe, você só quer testar as coisas que está desenvolvendo. Você não quer pagar todo o dinheiro por esses serviços. Então eles meio que cortam certos preços para você. Andi, é um pouco mais flexível para um indivíduo sobreviver com os pais. Eles podem sempre ir em frente e clicar. Ative, e então você passa por alguns, você sabe, casaco de papelada do tio. Então eles te ativam como ambiente de teste, certo? Não, de volta aqui temos todos os serviços. Você pode obter máquinas virtuais, serviços, bancos de dados SQL e a ferramenta que estavam muito, muito interessados seria os serviços up e os bancos de dados SQL. Máquinas virtuais. Você pode ter máquinas virtuais. , Mas então, você sabe, você sabe, se você está implantando o dedo do pé como seu, dependendo do modelo que você tem ou deseja, você pode querer implantá-lo uma máquina virtual que esperma eles já tipo de incluído em seu VP e toda a rede da sua empresa. E isso é provavelmente para fins de seguro ou sua implantação de máquina virtual que será de frente para o público. Então você tem sua própria hospedagem. Ele montou uma máquina virtual que ele trouxe aqui. Não significa e colocar isso ao público. Eu mijo na máquina virtual. Andi, isso está transmitindo para a Internet, e você está no comando disso, ou você não quer o incômodo de ter que configurar os olhos e configurar uma máquina virtual. Você só quer construir, colocá-lo em um zero e ser capaz de acessá-lo através da Internet. Então talvez o serviço seja o melhor para você. Serviço de banco de dados Onda SQL Então é isso que vamos estar explorando Andi, então eu vou apenas minimizar esse ângulo de volta ao Visual Studio em. Então eu tenho meu perfil publicado, então este perfil publicado é o perfil do meu pai. Isto é o que eu usei quando eu estava fazendo isso localmente. Mas agora queremos ter um perfil que nos empurre para os serviços superiores na nuvem. Então eu vou apenas ir em frente e clicar em Novo em. Eles estavam indo para selecionar criar novo serviço para cima serviços selecionados e criar notícias já selecionados em. Eu vou apenas ir para avançado porque eu tenho certeza que há coisas aqui que eu preciso configurar, então eu não preciso configurar o lançamento que temos opções publicadas em você pode remover adição fora do destino que é bancos de dados de arquivos no contexto de dados que está sendo descoberto. Mas não temos que mudar nada aqui, então você pode simplesmente ir em frente e clicar, criar um perfil no. Em seguida, ele vai levá-lo a um ponto em que ele está pedindo que você entrar em seu como sua unidade assim que criar um ou entrar. Então eu realmente tenho um sinal em algum distante um sinal seleto em então esta é uma assinatura direta . Então vá em frente e coloque o seu como seus cones. Uma vez feito isso, algumas novas opções se abrem para você. Então pode demorar um pouco porque, você sabe, está se conectando. Vai para a nuvem. Quero dizer, você sabe, mas, você sabe, eu não tenho que escolher o nosso. Podemos apenas esperar para dizer ao medo no errado você emitir uma mensagem de erro. Mas uma vez que você está vendo algo assim, você sabe que está no lugar certo, então eles estão pedindo para você dar um nome a ele. Pode mudar isso se quiser. Qual assinatura você gostaria de publicar em, Hum, qual é o grupo de recursos? Então, com base na minha localização, eu escolheria ter um grupo de recursos. O que? Então você sempre pode criar um novo? Eu acho que eles dariam um de qualquer maneira para que possamos criar um novo em dar itto grupo de recursos em algum lugar para chamá-lo gerenciamento de licença em grupos de recursos são como contêineres no CLO para dizer, como todos esses recursos estão em esse grupo de recursos trabalha juntos, certo? Isso é basicamente o que um grupo de recursos é. Então, como um nome de grupo. Então eu estou chamando isso de deixar a gerência do plano de hospedagem? Não, eles têm um plano de hospedagem grátis. Então, se você olhar para o tamanho, você vê que estes são os tamanhos diferentes, mas eles têm de graça. Então, para fins educacionais, vamos selecionar gratuitamente se você estiver. Na verdade, queremos ir a público com algo. Você provavelmente quer selecionar um desses, hum e, em seguida, com base no seu tráfego, você pode escalar o nosso não fora do curso em uma empresa sentado, você sabe, você faria depois do é com o seu gerente de I t, Apenas qual deles. Mas eu vou ir com livre o local, sempre tentando escolher um local que está perto de você. Baseado na minha localização a leste de nós, nossos anos de leste para o seu melhor para mim, certo? Porque sendo o Caribe, que é o que geralmente é recomendado sobre este é um local muito estável no caminho no plano de hospedagem, Eu não tenho que mudar nada lá. Então esses nomes aqui, como o plano de hospedagem no nome fora do up você muda aqueles de acordo com seu estilo, sua convenção. Você não precisa usar o padrão, mas você não precisa alterar o padrão à direita, em seguida, clique em OK e, em seguida, serviços adicionais. Então eu preciso de serviços adicionais na forma de Banco de Dados SQL porque os serviços de cima em um lado literalmente tudo o que ele está fazendo é hospedar o aplicativo Web. Não há banco de dados que vai estar no serviço up. Preciso de um dia. Será um serviço. O cavalo, minha base de dados. Então este custa, embora eu não acho que há uma versão gratuita para o banco de dados, mas então nome do banco de dados. Você pode dar o nome que eu acredito. Bem, esta é realmente a arte. Deixe na gestão de placar. Então vamos te dar o mesmo nome. Deixe na gestão de placar. Precisamos de um servidor. Assim, o serviço de banco de dados é como você cria um servidor virtual e, em seguida, você pode ter servido bancos de dados na porta do servidor dis. A realidade é que você não tem que entrar e administrar da mesma maneira que você faz quando você instalá-lo em sua máquina, certo? Alguns saíram para criar um novo servidor porque eu não tenho nenhum sob minha assinatura atual , alguém para criar um novo servidor e então eles estão perguntando qual é o nome do servidor? Certo, então o nome do meu servidor, vou chamá-lo SQL Server. Trave o meu nome. Certo. Então este é um servidor. A localização. Vou colocá-la no leste de nós mais uma vez. Onda após colocar em uso de senha humana Nome de usuário Onda não pode ser genérico como, admitir nossos administradores. Só estou a usar o meu primeiro nome. Então eu estou apenas usando a senha padrão, que é p em San ssw. Já ganhou a mesma postura que temos usado durante toda a aplicação. Mas, você sabe, você quer usar sua senha adequada. Portanto, oferece este passo é se não houver nenhum servidor existente, mais seguro fazer com uma empresa que já tem um como sua conta. Você provavelmente não precisa passar por essa etapa como um indivíduo. Você provavelmente sabe. Então este é o servidor, certo? Então eu vou apenas provisionar o servidor em uma vez que o servidor é provisionado, sabendo quando ter certeza de que meu nome de banco de dados é deixar no gerenciamento de pontuação. De acordo com o nome do banco de dados que temos usado todo esse tempo, ele irá preencher os detalhes que eles estão usando na senha na conexão String name é conexão padrão. Então é como ele dizendo que eu sei que eu deveria substituir a conexão existente chamada antes conexão, que agora está olhando para um BB local, como neste momento, vai começar a olhar para o novo servidor com o credenciais necessárias. Certo, então clique em OK, aan den. Então, para o fundo, à direita. Mostra-lhe que está a preparar a secretária. UAL o como seu banco de dados SQL. Deixe os gerenciamentos no servidor que estavam apenas provisionando usando esse plano de hospedagem com esse serviço. Tudo bem, vamos. Não precisamos de mais nada. Você pode. Quero dizer, o aplicativo de análise dentro, o que lhe dará entusiasmo de log em tempo real. O que está acontecendo? Você pode acrescentar que eu acho que você pode custar algum dinheiro. Por isso, estou a tentar reduzir os custos o máximo possível. Mas então você pode ir em frente e clicar em criar. Então, uma vez que você clicar, criado começará a provisionar. Todo o recurso é necessário para que eles possam dar um pouco de tempo. Tudo bem. E assim que os exercícios não o fizerem, teremos um site. Onde mais? Oh, isto é a deformação que deixamos para o upf. Você vê, esse era o nome. Eu não mudei do padrão, então espero que você não tenha caído na minha bunda. Exemplo em que você muda anos. De qualquer forma, quando clicamos no link em um líder na página de destino, então ele está nos avisando que o observador está aberto correndo em. Então o próximo passo é implantar sobre o tribunal. Certo, então precisamos ir em frente e clicar em publicar. Então, clicando em publicar, ele irá empacotar fora da dependência é e empurrá-los seus filhos para cima serviço para nós. Então, após a publicação, estamos recebendo nossos 500 erros. Então isso me diz que há certas coisas erradas, não há certas coisas para notar seria que nós não temos acesso a nenhum sistema de incêndio para ir e olhar para os registros como fizemos da última vez quando estamos dentro, eu é se eu passar por cima do dedo como você está na procura de serviços que eu vou ver o meu serviço aqui e ele está em execução. Eu posso aguentar. Então, quando o selecionamos, estamos observando nosso serviço e todos os diagnósticos que estão sendo executados nele. Podemos dar uma olhada na configuração que foi mostra que a cadeia fiqh continente. Então eu suspeito que o show entender Avançado it em. Suspeito que a flecha está algures por aqui. Então, isso é o que a nossa conexão padrão No parece, certo, Onda, Podemos obter detalhes como toda a semana e conectar servidor da loja. Então está procurando o catálogo inicial. Deixe o gerenciamento Trans login com o usuário Andi com essa senha. Mas eu estou suspeitando que este banco de dados simplesmente não existe no servidor que leva a mais 500 terra. Então eu vou tentar chegar a esse banco de dados. Justo, veja se minha suspeita é que o carrinho é louco. Então o que eu vou fazer é tentar entrar no servidor e eu vou usar um servidor da escola Dash. É verdade que o quê? Esse endereço inteiro como o nome do servidor. Certo. Seja a fonte ligada. Então eu vou usar este usuário. Eu tive essa postura. Em breve você só abre o meu estúdio de gestão. Então, no ponto de publicação, você provavelmente está indo para o pé. Você sabe, se você está fazendo isso sozinho, você vai ter que se acostumar a conhecer todas essas partes móveis e apreciar como elas trabalham juntas. Então eu vou copiar isso. E esse é meu nome de servidor, Andi. Eu posso dizer a você fora do mas que como o seu teria restringido os endereços I p que Chan diverti-lo para o banco de dados. Então eu acho que quando eu tentei conectar é ou foi para me negar ou me deixar saber que eu posso ter permissão. Então, clique em Conectar. Lá vamos nós. Seu cliente i p endereço não tem acesso ao servidor. Entrar em criar novas regras de firewall para que eu possa entrar aqui, criar uma regra de firewall para este vestido de ideia pública que eu tenho. Mas a realidade é que com base no I S P que eu p abordar minha mudança. Então o que eu vou fazer em vez disso é voltar para trás como você em ir para cima do meu servidor de banco de dados . Então eu poderia voltar para todos os serviços sobre isso. Eu fui trazer meus bancos de dados SQL em se você não está vendo as coisas do jeito que eu estou vendo, você sempre pode usar os comprimidos. Então a esquerda e você verá todos os serviços listados lá. C c SQL bancos de dados até serviços da mesma maneira. Tudo bem, então eu vou em frente, clique no servidor. Então, bem, isso é na verdade as abelhas de dados. Certo, então o banco de dados existe. Andi, vou a partir da visão geral Goto Ah, servidor. Então este é o próprio banco de dados. Mas eu quero ir para o servidor porque eu quero liberar algumas regras de firewall, então eu vou estar muito solto sobre eles. Nós só estamos indo para o pé. Alô? Tudo o que estou certo. Então eu posso ir para baixo para firewalls e redes virtuais em. Então o que eu vou fazer é configurar a regra. Então você vê, ele está negando acesso à rede pública. Não, em. Em seguida, você pode ver um serviço baixo para acessar o servidor. Sim ou não. Mas então eu vou dizer tudo para o nome da regra, e então eu vou apenas colocar em uma leitura completa. De modo que 0.0 assim 0.0 ponto 0.0 significando de qualquer i p endereço. Ainda o maior do menor, é um 255.55 que 255 Então este é sempre chegar a cada endereço I P que é concebível, pelo menos agora cai entre zeros e cinco. Então podemos ir em frente e salvar isso. E uma vez que essa regra está dentro, eu deveria ser capaz de tentar e se conectar novamente em realmente obter acesso. Lá vamos nós. Então vemos aqui que podemos detalhar o banco de dados e estou vendo o gerenciamento de licença acreditar que o gerenciamento não tem tabelas, então o banco de dados é criado, mas estabilizado. Tudo bem, então vamos dar um pequeno passo para trás. Fizemos um bom progresso. Vemos que provisionamos, ou como serviço europeu que temos, ou como seu banco de dados. Mas temos um pouco fácil com a data das abelhas e o conteúdo fora do banco de dados. Então eu vou dar um passo atrás, e nós vamos mudar algumas configurações aqui em nosso bairro ou projetos locais para que na próxima vez que publicarmos, não teremos certas desvantagens novamente. Certo, então a primeira coisa que vou fazer é modificar minha perturbação. É que GS no arquivo e eu estou realmente indo para criar outra cadeia de conexão. Então esta é a conexão padrão. Vou chamar este como sua conexão. Tudo bem, então para aqui, nós vamos estar usando a cadeia de conexão na cadeia de conexão será usando estará em nossa porta. Volte também para o banco de dados. Então deixe a gerência ligada. Vamos ver as cordas de conexão lá. Então, tomar strings de conexão traz o driver .net ideal. Tudo bem, então podemos ficar com essa mensagem, entendeu? Para copiar. É uma prancheta ligada. Então voltarei ao meu aborrecimento. É que Jason na minha cadeia de conexão zero vai ser essa corda. Tudo bem, então eu só estou substituindo na senha não foi seus funcionários em texto. Então você tem que colocar isso. Tudo bem, On the Yeah. Só me certificando de que está tudo bem. Tudo bem. Bom. Tudo bem. Então essa é a nossa conexão String toe azure. Quando modificar o início dos nazistas para torná-lo um pouco mais seletivo. Então agora, ele está dizendo que quando o aplicativo é iniciado, ele deve usar a cadeia de conexão D para conexão, e tudo bem. É por isso que somos locais. Mas então eu vou para os dois um pouco sobre isso. Eu vou ver um filho ia cortar isso e eu quero ver se e nós temos uma variável aqui chamada Meio Ambiente. E para usar o ambiente, você tem que incluir ambientes seguros do sistema ponto obter variável de ambiente em, em seguida, dentro de fora que nós apenas temos as aspas e trabalho no ISS ser core net no ambiente de pontuação. Então eu também vou explicar o que tudo isso significa. Então eu entro na variável e nós estamos vendo se ele tem o valor em nós estamos procurando o valor pro leite filho. Tudo bem, então se estamos no ambiente de produção que queremos usar outra coisa, queremos usar outra coisa, e eu vou colocar de volta o tribunal que acabamos de pegar na seção L. Então, se não estamos em produção e estamos usando mais antes configurações loca, Mas, em seguida, se estamos em produção que eu não quero usar conexão de clique padrão, Eu quero usar minha conexão A zero. Então você vê, hum, como sua conexão para a nossa produção. Tudo bem, então, depois disso, vou colocar mais uma linha para dizer serviços. Desculpe, os serviços ponto Construir provedor de serviços em. Então eu quero dizer que obter serviço em, em seguida, obter serviço. Embaixada no contexto do banco de dados do aplicativo. Tudo bem, coloque antigos espaços tradicionais, em seguida, abra e feche aspas, pontos. E eu acho que eu tenho no ar OFI acho que. E então vemos a base do teatro aponta minhas notas. Então esta linha fora da quadra deve executar a migração em qualquer contexto que seja, você sabe, você sabe, bancos de dados capazes de ser usados. Agora, vamos nos concentrar nessa variável de ambiente. Tudo bem, então quando falamos sobre variáveis de ambiente e você vê, eu tenho sobre o Explorer preenchido aqui para que você possa usar os especialistas em código de conexão, hum, para certos objetos, mas então eles todos fora levando de volta para o porto de sua Entenda para fechar isso em. Então eu vou... clicar o com obotão direito do mouse no projeto. Vá para as propriedades em então. A primeira idade tem variáveis de ambiente em seu ambiente de núcleo líquido UCSB. Então foi esse o nome que escrevemos, certo? SB net core no ambiente de pontuação sobre o valor que estamos procurando para sua produção. No entanto, o valor aqui é desenvolvimentos entender? Pasta do dedo ali. Então eu estou mudando para produção, tudo bem. E a partir daqui você pode ter outras variáveis de ambiente como você me precisa. Mas então eu vou fazer um teste aqui, então eu vou correr localmente, certo? Andi Art. Então, o que este teste vai provar é que nossa migração acabou de acontecer contra o como seu banco de dados SQL. Então nós apenas olhamos como seu banco de dados SQL você viu que ele estava vazio. Tudo bem, sobre o que fizemos foi estruturar o meio ambiente. Variável para produção também irá introduzir um novo conexões através do qual eles usam como sua conexão na inicialização. Nós dissemos que Bem, uma vez que você está iniciando, então execute as migrações em nosso contexto de banco de dados do aplicativo, que obviamente seria contra qualquer string de conexão selecionada. Então, uma vez que minha variável de ambiente não está definida para produção, a premissa é que uma vez que eu clique em Iniciar, o aplicativo será inicializado localmente, mas ele vai se conectar às roupas SQL Server sobre o fato de que arte Então nós passamos um obstáculo com ele realmente aparecendo no dia. Eu estou indo. Então aqui está o nosso up emocionante localmente. Então, isso é bom. Até agora, vou voltar para o meu estúdio de gestão e refrescar-me lá. Você vê? Todos fora das mesas que não estavam lá antes. Então este é o nosso como seu servidor SQL. Eu sei que todas as mesas não estão lá. Então, essa configuração é basicamente garantir que uma vez que fazemos uma publicação no aplicativo está prestes a ser executado, ele irá certificar-se de fazer a migração para as abelhas de dados de destino como. Bem, não estava fazendo isso inicialmente, certo? Então saiba que eu tenho aquele pouco dela fora do caminho. E não, eu sei que meu banco de dados existe. Sim, somos capazes de se conectar com o uso do aplicativo. Sim. Eu vou apenas fazer outra publicação apenas para ter certeza de que tudo está bem. Agora, uma vez que publicamos novamente, vamos ver nossa tela de login chegando e com base na experiência anterior, é sempre uma boa coisa para ver sobre login tela então eu posso apenas tentar e fazer login Andi, garantir que ele está falando para o banco de dados tribunais e tudo em seguida eu entrar. Em seguida, vemos que o nosso usuário administrador funciona. Tudo bem, então eu sou apenas testes na Internet só para ter certeza de que estamos falando com o banco de dados certo, apenas, você sabe, base de macacões. Eu fui para ir para deixar tipos ligados. Vou criar um novo disco neste vai ficar doente. Deixe Onda 10 dias. Vá em frente para criar Tudo bem, ele é criado. Então eu vou voltar para o meu estúdio de administração. Vou selecionar estrela do tipo de licença. Então este é o servidor SQL na roupa. Só fui selecionar top 1000 Onda Uh, lá vamos nós. Licença por doença está lá Criado Tudo bem, então nós apenas implantamos nosso SP donna aplicação core toe como seu Este não é como o seu treinamento . Isto é só para te fazer passar. Hum ele pode ter tido o seu, você sabe para sen voltas, mas é apenas uma questão de configurações e uma compreensão segurar as pequenas coisas trabalhar juntos para dar-lhe o resultado final fora hospedado aplicativo falando toe. Ah banco de dados hospedado. Tudo é fácil, Nazir. Analisamos como podemos nos conectar ao como sua instância fora do banco de dados, independentemente de usar nosso estúdio de gerenciamento em. Também vemos que podemos fazê-lo a partir do nosso estúdio visual usando ou Flowed Explorer. Se eu for ver, você deve ver Code Explorer. Lá vamos nós e você pode ver o seu recurso é que estão no código apenas da mesma maneira. Nós também olhamos para Toto Auto, encontrar a propagação fora do banco de dados não estão vendo a migração do banco de dados usando esta linha em nosso início sobre CS, que apenas, você sabe, Nós também olhamos para Toto Auto, encontrar a propagação fora do banco de dados não estão vendo a migração do banco de dados usando esta linha em nosso início sobre CS, que apenas, você sabe, apenas avançar engenheiros a data deste com base em todas as migrações, que é onde lá em Nós também olhamos para a diversão. Podemos ter várias cadeias de conexão e usando uma variável de ambiente, podemos, você sabe no tempo de execução determinar qual queremos usar. Então, se é que eu quero começar a usar o desenvolvimento um novamente, eu posso apenas voltar para o clique direito da propriedade, ir para propriedades em seguida, a partir daí, eu posso alterar a variável de ambiente de produção de volta para desenvolvimento ou o que quer que seja que eu queria ser naquele momento no tempo 69. Configurar um Pipeline automatizado no GitHub e Azure DevOps: Ei pessoal, Bem-vindo de volta a este ponto foram desenvolvedores endurecidos de batalha, e nós mergulhamos nossos dedos no pool de uma pequena administração de servidores e administração de banco de dados de TI . Mas tenho certeza que fizemos o suficiente para resolver ou instalar em nossa máquina local, bem como nosso banco de dados. Ou temos implantado para o código e temos ou zero o serviço em execução ao lado do serviço SQL em execução. Não, eu posso ter aludido em várias ocasiões, especialmente quando estávamos falando sobre a implantação de IIs, que há na verdade uma maneira muito mais perfeita de fazer isso. Então você sabe, publicar e, em seguida, levá-lo e copiar em Toto o servidor e assim por diante. A realidade é que talvez não tenhamos esse tipo de acesso a todas essas máquinas. Se você é um desenvolvedor sênior, você provavelmente não quer nos desenvolver para ter que passar por isso cada vez. Mas você quer uma maneira mais perfeita de se certificar de que é a qualidade chamada que está sendo publicada a cada vez. Então nós estávamos usando chegar em casa como nosso provedor de controle de fonte em Get Hope faz o que eles chamam de ações que você sabe, colocar em algumas ações de construção e automação, alguma quantidade dele em dot net core ab sport. Na minha opinião e experiência, gueto é mais voltado para o Senhor e por coisas divertidas não necessariamente documentar coisas, mas a Microsoft tem como seu desenvolvimento, que nos dá acesso a uma série de ferramentas que são incríveis. Hum, para automatizar a construção na publicação de aplicativos Dot Net para que você possa chegar aqui indo para o pé . Zero dot Microsoft dot com On ir para produtos, serviços e como seu desenvolvimento aumenta e você pode ver que você pode começar livre, começar para você com get top para que você possa enviar com sua conta gueto. Mas se neste momento você já se inscreveu com o Microsoft Azure, então você pode ir em frente e usar o registro de conta vida neste site ou bem, tecnicamente você já teria em nossos telefones em. Mais uma vez, você pode começar livre como um indivíduo. É ótimo. É como conseguir um emprego, mas com um pouco mais para ele porque eles têm o motor TFS. Se você já usou o servidor de fundação Team. Se não, tudo bem. É apenas uma ferramenta poderosa que eles tinham há anos. Eles relataram isso para a Web em. Eles te dão todas aquelas ferramentas de planejamento de trabalho. Veja, eu vejo que o Seo está aqui, CIA e veja, isso é integração contínua ou desenvolvimento contínuo em implantações lamentáveis, certo. Todas essas ferramentas estão embutidas. Você pode ter tantos descansos livres quanto quiser. O que eles serão privados se levantam dá-lhe tantos públicos gratuitos. Acho que não, os privados são de graça. Além disso, ele pode implantar planos de teste. Se você fizer artefatos de teste de unidade nos quais pode ser implantado, eles podem automatizar todo o que chamamos de pipeline de liberação. Então é isso que vamos fazer. Vamos explorar fazer um pipeline de lançamento no topo, fora do aplicativo ou do site que já construímos. Tudo bem? Não, mudei para o servidor da Web. E apenas como um lembrete rápido, temos nosso site implantado em nosso com nosso aplicativo implantado toe sobre I i s site chamado deixar o gerenciamento ligado. Passamos pelo endereço, deixar o gerenciamento que internet ponto com no justo nos atualizar no como configuração, temos o pool de aplicativos dedicado ao aplicativo Web em. Temos também a gestão de licença do site. Então não, o que precisamos fazer é criar um pipeline de lançamento. Tais que não são Este é um servidor. Isso pode ser um servidor em sua máquina local. São mais uma vez poderia ser as roupas, mas é um servidor dedicado em que está hospedando nossa aplicação. Não, nós vamos fazer é criar um lançamento por um plano a partir de um zero desenvolve que está na nuvem tal que quando nós, você sabe, construir algo. Talvez você tenha os dois consertos e nós verificamos. Ele faz uma compilação automática. Certifique-se de que não quebramos nada. Em seguida, ele fará automaticamente as implantações. Então eu vou fazer isso manualmente em, então vamos olhar para como podemos automatizá-lo são baseados em, como uma programação de construção noturna ou uma agenda de lançamento noturna para que, você sabe, você faça os dois corrigir hoje você verificará em. Então amanhã de manhã ele está no sistema sem você ter que fazer muito mais, mais uma vez , para começar, você pode entrar com o seu como sua conta viva contrário ou você pode simplesmente continuar com a conta do gueto deles. Então, já que estamos usando “Levante-se “, eu vou continuar com o gueto de volta. Vou usar o meu como seus cones, mas o meu já está configurado e está em uso. Vou fazer isso do básico para que estejamos nessa luta em particular juntos. Só estou usando minha conta no gueto. Vou em frente e assino. Então ele vai me dizer que eu já tenho uma conta. Eu só continuo para baixo. Vai confirmar que quero ligar as minhas credenciais na edição do Dennis. Saiba que minhas credenciais foram adicionadas ao mercado. As credenciais de get off foram adicionadas à minha conta da Microsoft da próxima vez que assinei e posso optar por utilizar a Microsoft co-patrocinada existente ou apenas assinar como estou a enviar para ter esperança. Então eu não digo que tenho isso e se mover bem, e eu só tinha que fornecer mais alguns detalhes e clique em próximo, e lá estou eu. Estou dentro do meu como seu desenvolvimento. Então eu tinha um estudante já que um verão eu me fez para sua organização para um projeto que ele fez realmente bom projeto também. Mas é por isso que estou vendo isso lá. Então você pode não ver. O que você quer fazer é ir e clicar em Nova organização em então organização é como criar um T. direita. Então você só quer fazer isso? Podemos optar por entrar. Ah escreveu fora recebendo artigos promocionais deles. Você escolhe o que você está usando-os. Alguns discordavam dos meus animais. Use o nome e eu vou colocar meus projetos para ser hospedado em. Bem, nós centrais é o único bem, esse é o melhor para mim. Então eu deixo o centro de nós, mas eles estão me avisando que ele já está tomado, então provavelmente apenas adicione algo a ele e continue. Tudo bem. E então estamos aqui na nossa organização. Então o nome da organização é Trevor Williams 1? Não. A partir daqui, vou ter que criar um nome de projeto. Então o nome do projeto é gerenciamento de licença, e eu vou nomeá-lo. A mesma coisa é chamada. Saia, deixe a Dash Management. Eu posso escolher o que eu queria ser público ou privado, então eu quero deixar esta unidade, Privado andan, Eu vou em frente e cria projeto em. Então temos um novo projeto para que você possa apenas tirar um tempo e olhar. Você vê, você tem mais algumas coisas do que obter UB mostra pelo menos pelo valor nominal. Se você pairar as placas, você vê o trabalho. Eu tento que você pode fazer sprints, pendências tudo aqui relatórios mostram seus arquivos seus comentários. No final do dia, as palavras são praticamente as mesmas, porque isso também está usando eu tenho motor para sair dele com base em get como seu desenvolve seu motor primário também é obter Então você vai ver um monte palavras fora em frases em comum entre os dois. O que quero fazer é ligar este projecto de partículas ao meu projecto “get top”. Certo, então este é um projeto vazio. Eu não quero Oh, tenho que ir, Andi, começar a sentir de novo. Está vazio aqui, certo? Então eu não quero oh ter projetos separados. Eu quero que este projeto seja vinculado ao projeto get up em A grande coisa sobre a Microsoft possuir ambos é que eles fizeram que muito possível segundo configurações do projeto Goto em, em seguida, selecione conexões do gueto no menu lcz boards, o segredo de conexões em. Então eles estão dizendo conector, obter ocultismo superior, alguém para ir em frente e conectar meu Collins porque eu já estou conectado como levantar, ele está indo para o pé. Deixe-me saber que eu só preciso autorizar isso em 10 centavos. Vou até o “So Ok “, acho que vou deixar isso para outra hora. Então eu vou em frente e autorizo como suas placas. Então ele vai fazer a sua magia. Em seguida, pegue todas as coisas em todos os meus repositórios. Então alguns fora de nossas mentes fora deles. Fui convidado para o dedo do pé. Mas a questão é que tenho acesso a todos os meus repositórios. Então eu vou para ir com o gerenciamento de licença e, em seguida, clique em salvar. Então eu vou ter que ir em frente e aprovar, instalar e autorizar novamente. Então, todas essas verificações são apenas certifique-se de que você sabe exatamente os riscos e o que você está fazendo , que você possa ter tempo para ler se quiser. Mas eu só estou avançando. Tudo bem, então saiba que estabelecemos essa conexão. O que isso nos permite fazer é resolver, gerenciar nossas tarefas e problemas de desenvolve como seu desenvolve em relação para superar positivo. Então, é uma conexão poderosa sobre o que nosso objetivo é mais uma vez é configurar ah, construir oleoduto e liberar plano de fogo para que quando nós check-in para obter esperança, ele não vai, como seu burro também automaticamente levá-lo. Construí-lo, Andi, você sabe, examinado antes de deixá-lo seguir em frente. Então, a partir daqui, o que eu vou fazer é passar para pipelines que é um foguete, entender para clicar nele, então é Prompting ainda são criar ou primeiro pipelines entender para criar pipeline em. Então isso me permite selecionar que tipo de pipeline eu gostaria? Então, se o tribunal era residentes do que eu faria em um zero repouso obter. Mas se você olhar para dentro como mais uma vez, não há nada lá. Mas os arquivos estão em “Get Hope”. Então, mais uma vez, crie pipeline em. Vou selecionar guitarra, então eu escolho. Levante-se, em seguida, está indo toe me pedir para selecionar o repositório. Então eu vou apenas selecionar meu repositório de gerenciamento de licença, um interessante fornecido A que tem as permissões em Então eu me emprestei para aprovar mais uma vez . Sei que está me avisando que estou usando um repositório público, mas isso não é um projeto público. Sei que está me avisando que estou usando um repositório público, Então saia desse público. Mas isto é privado. Então eu acho que lá me levou a dizer, hey, apenas certifique-se de que ambos têm o mesmo nível de visibilidade fora de curso em uma organização. Fora de seu código provavelmente não era provavelmente seu cordão não seria e não deveria ser público. Tudo bem, o quê? Eu só vou mudar este de privado para público só para que eu possa começar a receber uma promessa. Eu apenas cliquei em configurações do projeto que trouxe os detalhes do projeto e eu mudei tudo de privado para público em Eu vou economizar em para que eu possa continuar para que eu possa apenas tirar isso fora. Eu só fiz a mudança. Eu posso tirar o aviso no DSO Eu estou indo para ir em frente e selecionar SB net dot net core e isso vai criar o que chamamos y Mellor arquivo GMO. Então, se você olhar para o arquivo, é você notar que você tem tipo, um BCE e então você tem, tipo, tipo, dash hum em alguns. É basicamente um bom arquivo de configuração limpo. É muito popular. Eles os usam em médico. É difícil para mim não descrever o layout, mas é um layout realmente limpo. Se você apenas prestar atenção, você pode ver que ele está fazendo certas coisas em certas etapas. Por isso, quero acrescentar mais um passo a isto. Estamos no final de todas essas tarefas, e você pode adicionar mais tarefas. Você pode adicionar mais etapas se quiser, porque se você tiver, como teste de unidade para fazer antes, você pode aprovar a compilação do que deseja adicionar em uma etapa para garantir que isso aconteça e assim por diante . Mas eu quero adicionar uma tarefa onde eu digo para publicar em artefatos. Eu só disse Dash tarefa dois-pontos publicar Construir artefatos no primeiro sinal. Tudo bem, então isso está basicamente dizendo que depois que você fez uma compilação bem-sucedida, eu quero que você publique isso, construa nosso conjunto o pacote com aquele novo construtor e todos os arquivos publicados, modo que Poupa-me o trabalho. Voltando ao Visual Studio, clicando com botão direito do mouse e clicando, publicando e colocando em algum lugar. E isso e aquilo e o centro. Certo? Então, eu só vou dar o dedo do pé. Vá em frente, Andi, salve e corra. Isto disse um slick salvar e correr em. Então só vai me dar uma mensagem de confirmação. E eu posso apenas dizer, veja, fornecedor em, mais uma vez, vai precisar de um fútil criar o pipeline. E então, uma vez que isso está em andamento, você vê que você pode ir em frente e sair do trabalho. Então você vê o prompt de comando da escola para que possamos sentar e assistir o tempo e você vê todo o tribunal chegando. Mas enquanto isso, na verdade, eu vou mudar o vapor porque eu não gosto que alguém branco mude isso para o campo escuro. Tudo bem, isso é simples. Então você só vai para o pequeno ele estar aqui com a engrenagem em você selecionar tema, e então você pode mudar o tema escuro. Tudo bem. Então nós podemos dar alguns, você vê, para que você dê todos os passos que está passando. Ele vai executar o novo comando get, sair tudo. Os binários são os pacotes que foram incluídos em seu projeto ao longo do caminho para uma compilação Executar os testes de unidade e, em seguida, publicar os artefatos, então vamos apenas dar-lhe alguns para terminar em. Teremos um bom indicador assim que tivermos uma compilação bem sucedida. Então, se algo quebrou no tribunal do que este passo não teria acontecido, tudo bem, assim como nós ainda não teríamos completado. Então, a próxima coisa Então este é o construído, você sabe, o que eu quero fazer é montar um lugar de lançamento spire. Eu vou para as liberações. E depois fui ver se quero um novo oleoduto. Em seguida, a partir daqui, eles vão me dar alguns templates para que eles vão ver que tipo de modelo você quer. Você deseja que as implantações de serviço para cima? Então isso significa que você verifica o acorde, eles fazem a compilação e,em eles fazem a compilação e, seguida, eles apenas implantados como você está automaticamente. Ou você deseja que o site I s e implantações de banco de dados SQL nesta situação? Esse é o que estamos interessados. Porque lembre-se, nós queremos toe deve atender a publicação do nosso repositório toe nossa VM real com nosso banco de dados na matriz, eu é alguém para clicar neste e, em seguida, clicar, aplicar, e então nós temos algumas configurações que temos que fazer. Então eles estão apenas mostrando que, você sabe, este é o artefato. Lembre-se que colocamos um dedão dos pés e publicamos artefatos, certo? E então este é o nosso Estes são os estágios. Tudo bem, então eu vou clicar no artefato em primeiro lugar, então eu posso escolher adicionar um artefato baseado em uma construção, ou eu posso escolher o anúncio baseado no repositório, ou escolher aquele gueto Beeson. Então, basta escolher no repositório, obter meios ou qualquer coisa que esteja registrado. Chame isso de artefato. Mas eu realmente não quero que eu quero que o dedo do pé de construção aconteça com quaisquer configurações especiais . Talvez que nós colocamos em, então, isso vai ser o artefato. Só quando for bem sucedido deve ser liberado. Tudo bem, então eu vou fazer um anúncio para que usando este menu suspenso, você deve ver esse nome fora do oleoduto de Bill. Baseado no que acabamos de criar. Acabamos de criar um oleoduto com a construção, e esse é o nome lá. Em seguida, podemos ir em frente no grampo para que você possa ver aqui os artefatos publicados por cada pessoa estarão disponíveis para implantação em pipelines de lançamento. A última compilação bem-sucedida foi publicada, publicou os seguintes artefatos. Tudo bem, então eu posso ir em frente. Então, pelo menos, temos um artefato. Você também pode Stadio dizer, Veja, você pode agendar um gatilho de liberação para dizer que eu estou indo para ir em frente e habilitá-lo que cada vez nestes momentos, quer toe liberar uma nova compilação ou liberar um novo artefato para potencial. Liberte-a. Então eu não vou para nenhum oblíquo? Não, estamos fazendo manualmente. Não, mas só estou mostrando como você pode automatizar a seguir. O palco seria, hum, você sabe, você pode tirar 80. Você pode ter produção mastigável, etc. Então é isso que o palco realmente significa. Eles podem adicionar muitas etapas para dizer isso. Certo, quando o artefato é liberado, então ele é passado. Podemos sair deste ambiente. Este ambiente, etc. Neste momento, só estou a fazer uma. Então nós estamos apenas movendo a partir da ferramenta de compilação, a implantação no servidor, e então nós temos que prestar alguma atenção a isso. Então, eu vou chamar essa implantação de uma VM. Certo, então é um nome artístico. Vou guiá-los por cada um desses campos e explicar por que podemos ou não precisar deles. Não, este oleoduto permite que você construa o site do I I s do zero. Então nós apenas passamos. Todas essas etapas entraram, construímos o site, criaremos nosso pool de aplicativos. Nós montamos nosso banco de dados e tudo mais. Isto são estes passos em vez muito nos toe automatizar tudo fora que agora a maior parte do que é feito Alguém realmente não precisa a maioria desses passos. Certo? Então o tempo de configuração que eu vi vantagem para você que eles estavam indo para ver criar nosso opiáceo, então eu já tenho ele criado. Então eu vou apenas clicar em Iniciar porque eu não quero fazer nenhuma alteração. Criar estão abertos. Significa que se ele não existir, crie-o, obviamente, ou eu vou colocar novas configurações lá, então altere-as. Mas eu só queria começar. Não quero mudar nada. Isso é ali. O nome do site era gerenciamento de licenças. Tudo bem. Esse é o nome que damos por perturbação. Eu estou em seguida, podemos especificar onde queremos. Nossos bancos de dados são mochila. Então, eles têm uma coisa chamada “A direita do parque “, que é, como uma implantação rápida. Especifique a maneira pela qual você deseja implantar o banco de dados. Podemos usar esse pop nosso script SQL. Então eu vou apenas ir em frente e deixá-lo como aquele parque ligado. Coloque no nome do banco de dados, que é deixar o gerenciamento sublinhado. Tudo bem. Tão desesperado. Na frente desses, se você está nomeando era uma escola, diz meu e um sem um sublinhado um com apenas ter cuidado que você está colocando os nomes certos que lugares certos. Então, para cada seção, vamos ver se precisamos do dedo do pé, você sabe, colocando mais detalhes. Então, se eu apenas gosto da implantação burro para ver mais detalhes, mais atenção é necessária vai falar sobre um grupo de implantação. Então eu não tenho nenhum grupo de implantação. Eu acho que eu vou ter que criar um para que eu possa ir para o ano em seguida que vai trazer para cima que a seção grupo de implantação mostra é que nós não temos nenhum grupo, Então o grupo de implantação é basicamente e aqui é. Ele define um grupo lógico fora das máquinas de destino para implantações. Tudo bem, então você pode implantar em várias máquinas com uma versão. É só uma questão de ativar o grupo de implantação para que não tenhamos uma máquina. É entender um grupo de implantação. Vou chamar isso de fraude no campo de golfe vagamente. Então, eu não estou aqui para ensiná-los sobre o pipeline de lançamento e os detalhes lá em eu estou apenas mostrando a vocês como resolver um pipeline básico e então suas regras de negócios irão governar qual ambiente o recebe primeiro, certo? Então, a próxima coisa que eu sei é que eles vão ver bem, a fim de facilitar a comunicação entre este aplicativo fluído e a máquina em que a implantação estará acontecendo, que seria o nosso servidor. Precisamos rodar este script. Então é um script Powershell. Caso nunca tenha ouvido falar da Porsche, isso é o que já é. Talvez já tenha ouvido falar de site alcançável antes. Isto é o que parece. Você realmente não tem que entender isso. Eu estou esperando para realmente tentar explicar isso para você, mas eu vou apenas usar um token de acesso pessoal no script para autenticação. E depois fui copiar este guião. E então ele está vendo correr de um administrador. Comando Portia superou. Então, mais uma vez, esta cópia descreveu. Em seguida, saltamos para o nosso servidor e, em seguida, no servidor. Vou ter que abrir minhas janelas de energia. Cada servidor, nosso computador Windows 7 ascendente deve ter Portia nele. A chave é que você apenas clique com o botão direito em Você viu Executar como administrador. Uma vez que você está dentro, você está indo para o pé com base no script e pressione Enter on. Em seguida, ele vai implantar um zero agentes emitindo o diretório c e, em seguida, ver Izzy. Agente Andi, dê algum tempo. Depois de um tempo, você vai ter este prompt ligado. Eu acho que eu pressionei enter algumas vezes demais, mas então é apenas, um sim, então ele vai lhe dar essas poucas linhas, e então ele está registrando um agente se conectando ao servidor e, em seguida, vendo inter fala do grupo de implantação para o agente. Eu só vou ver por que sim, hum, oh, bem, você canta para eles, então eu realmente não preciso, mas entender, para mas entender, ver um banco de dados de armas, tudo bem. Vírgula separá-los. Estou olhando para o diretor onde o agente está sendo criado ou todos os fatos de apoio estão sendo enviados. Em seguida, ele diz, Digite o cone do usuário para o percenter de serviço para sistemas anti autoridade. Lembre-se disso. Esse é um usuário muito poderoso. Eu só vou usar esse usuário para que qualquer coisa que precisa acontecer pode acontecer em permissões são concedidas no Não, nosso agente é sit. Oh, então quando eu voltar para o pé zero, eu posso ir para a banheira de alvos. Eu saberia, ver aquela máquina listada e esses são os rebocadores que eles estavam perguntando sobre. Então eles eram realmente opcionais, mas ei, tudo bem, assim que eu ver a máquina, eu posso sentir certeza de que esse passo está feito. Então eu vou voltar para o meu lançamento por plano, e então eu posso apenas atualizar esse grupo de implantação, e você vê, eu estou trabalhando com várias guias porque eu não gosto de parar e voltar e assim por diante. Então, quando eu caí, eu vejo prod, isso é bom. Então, não, eu tenho meu grupo de implantação e essa era vai embora. Vou olhar de dentro para fora este aqui é peculiar porque não há realmente nada para mudar o seu tudo que foi tirado. Antico qualquer olho. Então, qualquer viés significa se verificar isso se você quiser em estilo nas máquinas. Se foi uma primeira missão, ele não estava na máquina. Acho que você verificou. Não precisamos porque o gelo já está lá. Tudo já está configurado. Em seguida, descemos para a implantação SQL em. Então, mais uma vez selecionamos Praga porque essa é a nossa máquina alvo. Então, aqui está uma situação agora em que, se o banco de dados estiver em uma máquina diferente, eles teriam que configurar outra máquina de destino ou grupo de implantação. Então isso provavelmente seria como direitos orgulhosos da Web versus produtos BB. Mas ambos estão na mesma máquina. Então eu estou usando o mesmo grupo de implantação em. Tudo vai parecer da mesma maneira Se eu perfurar na implantação de banco de dados, teremos Teoh para fornecer alguns, hum, detalhes sobre o servidor. Então lembre-se que o nosso servidor ou meu servidor é que o host local, mas sua caixa SQL Express barra barra muito SQL backslash sq express. Certo, então o mesmo tipo fora do servo e lá você coloca dentro da cadeia de conexão. Você tem que se certificar de que está direcionando os mesmos dados. Abelhas, autenticação. Podemos deixar como autenticação do Windows com base em espera. Nós implantamos isso antes no DSO em. Então o que estou mostrando é uma diretriz. Eu realmente não sei sua situação, mas pelo menos eu estou dando uma idéia sobre o que é possível. Então, uma vez que nós fizemos isso e nós limpamos todas as linhas vermelhas, pelo menos nesta seção, então nós podemos clicar, salvar em morrer, Assim como Ok, Não tem que mudar isso. Tudo bem, então o que eu vou fazer é acionar uma liberação manual, certo? Não. Certo. Então eu posso apenas fazer isso e eu posso apenas clicar, criar lançamento. Então eu estou indo para o dedo, tomar uma nota mental de todos os arquivos que estão atualmente na licença Management Fuller nos carimbos de hora para ver se talvez algum deles. Eu mudei após o lançamento, mas eu vou ir em frente para trás e ele acabou de sair da máquina virtual, criar lançamento em, então nós podemos ver isso para o lado. Eles só estão confirmando, um, é uma implantação Veum. Podemos escolher o artefato e nem podemos colocar uma descrição de lançamento. Sabe, só para dizer que isso realmente fala esse pântano, etc. Vamos em frente e clicar, criar, e então você vê que o trabalho começou para que eu possa clicar em liberar. Então vai me trazer uma tela do dedo do pé. Isso vai me mostrar um pouco de progresso sobre eles foram tão gentis. Estão tentando mostrar que fizeram algumas melhorias, mas não preciso ver isso. Então eles vão me mostrar que eu acionei essa construção manualmente. Este é o artefato em que eu posso tratar implantar em. Então, uma vez que eu faço isso, eu acho que implantar. Então eu estou dizendo que eu quero que você implante a VM para que eu possa clicar na implantação em, em seguida, clique no jogável, nem no semi-círculo em. Então ele vai me levar a uma tela que está me mostrando o progresso da implantação em. Então isso é feito certo? Então levou 38 segundos ainda colocado naquele lançamento. Agora deixe-me voltar para a minha máquina virtual em Olhe para trás na dobra sobre os arquivos em enquanto tudo parece estar lá em é muito bom. Não, vou fazer um informante tangível. E então eu estou indo para o dedo, talvez fazer uma alteração na tela de login para ver um login aqui. Algo assim. Hum, em. Em seguida, vamos ver como verificá-lo na versão de compilação e, em seguida, procurar o opiáceo. Tudo bem, então uma mudança muito pequena. E eu só estou fazendo isso para, você sabe, mostrar saquê. Você provavelmente não tem que fazer tudo isso, mas eu estou indo, vá em frente e submeta este teste de mudança para lançamento. É tudo o que estou a fazer como nota. Então eu vou cometer toda onda afundar no DSO quando eu passar por cima do gueto como o seu desenvolvimento, eu estou vendo que ele está no processo fora de fazer uma construção. Certo, então eu acabei de verificar algo, e já está fazendo uma conta porque detectou que algo que você aconteceu não se levantou. Portanto, não é um edifício para se certificar de que as mudanças feitas estavam bem. Eu posso ver as duas alterações apenas para ter certeza de que ele está construindo direito para que não vai testar para o lançamento. Então ficou com o troco, Andi. Ele só está fazendo seu trabalho automaticamente, certo? Assim, podemos sempre clicar no trabalho para ver o progresso. Damos isso em algum momento. Assim que a construção estiver concluída, vemos que temos um novo artefato. Então, quando eu for com os lançamentos, eu posso acionar um lançamento manual. Se eu quiser Andi, estou vendo aqui. Isso é algo que falhou. Pergunto-me se este foi o meu lançamento anterior. Aquele campo. Ok, então, entrando, eu vejo que a parte de implantação SQL do que sente assim Nós provavelmente teria que fazer um pouco mais trabalho do que apenas implantar o sq como este. Ou talvez precisemos usar não uma mochila, mas no script SQL. De qualquer forma, vamos nos concentrar na web part para saber que podemos descobrir o quadrado separado. Então eu quero voltar para os lançamentos. Tudo bem, então esta é a coisa com a configuração do oleoduto. Você pode fluir técnico no início, mas depois que você obtê-lo automatizado, não é algo que você tem que fazer todos os dias. Tudo bem, então eu vou criar um novo lançamento. Não, mais uma vez, se eu editar o oleoduto, se eu terminar o oleoduto de lançamento em Guy ir e acender. Então posso agendar um gatilho de liberação para a implantação. Certo. Então isso significa que eu posso fazer uma liberação noturna ou um sem liberação antecipada, seja lá o que for. Mas agora eu estou fazendo isso manualmente porque eu não estou em uma sessão de produção. Eu não preciso sentar um horário. Tudo bem, então eu estou fazendo eu estou criando o lançamento e então eu vou em frente e aperte, Criar em, então ele vai começar o lançamento. Então eu acho que vai se sentir mais uma vez na parte do banco de dados. Mas vamos pelo menos validado que a perna Web foi feito com sucesso. Então, indo e eu vejo que aconteceu, o julgamento I Spire é a primeira parte fora dos olhos muda. Está fazendo a implantação real. Não, tudo bem. E eu estou pegando ela aqui, vendo que a sensação de implantar porque ele não pode modificar o arquivo automóvel. Dll Está bloqueado por algum processo. Então algo interrompeu este lançamento no servidor em. Eu provavelmente vou ter que ir em ter certeza de que há todo o lançamento, todo o recurso é o nosso livre para o lançamento toe acontecer. Tudo bem, tudo bem. Então eu fui para o servidor e eu apenas reiniciei a web up ou sites. Eu só cliquei nele e em um reinício também ajustado uma reciclagem em uma piscina em. Então vou tentar de novo, está bem? Então, às vezes libera sentir porque fora dessas coisas. Então, sim, todos vocês para conhecer a sua. Mas então você pode sempre você sabe, esse fracasso é quase, eu garanto, em alguns pontos, alguém para apenas ir em frente e criar outro lançamento. Então, eu tenho que lançar lançamentos até agora. Eu vou apenas ir em frente, criar outro em então você vê, ele está em andamento. Nós clicamos. Ainda está, cuidado. Vá em frente, então vamos ver se o recurso foi liberado. Tudo bem, e lá vamos nós. Temos uma liberação bem sucedida de vínculo. Bem, desta vez só teve sucesso. Não há nenhum erro. Então, se eu voltar para os lançamentos, então oh, ele ainda está passando por outra fase. Então lá ele campo nas implantações SQL que eu, como a subida foi boa no campo de implantação SQL, você sabe que aquele poderia ter campo, mas vamos voltar para o nosso servidor para ver se podemos detectar quaisquer diferenças importantes. Tudo bem, e lá vamos nós. Então tudo o que foi aderir, lembra? Disse que mudaria o login em log aqui. Então eu fiz essa mudança. Verifiquei isso em bundas do gueto. Seus desenvolvimentos fizeram automaticamente uma compilação validando um necessário para ser validado. Mais uma vez, essas etapas são muito básicas fora da caixa, mas você pode adicionar mais validações, ensinar compilação, ensinar compilação, especialmente se você é um desenvolvedor sênior e quiser mais controle de qualidade sobre o que acontece para dentro do ambiente. Mas no nível básico ele não construiu sobre ele mantinha o artefato sobre. Então preparamos esse lançamento. Então, mais uma vez, se você quisesse automatizar isso porque era um processo muito manual tendo que ir para lançamento, então criar lançamento e depois começar, podemos fazer o pipeline. Então isso vai para lançamentos e eles dizem, editar em. Em seguida, podemos fazer um cronograma onde dizemos todos os dias talvez às 3 da manhã. Você faz eso você vê apenas lançamentos constantes se a fonte ou pipeline mudou. Então isso significa um. Alguém verifica em cabo e ele passou através da construção sobre ele é bem sucedido e assim por diante. Artefato, uma vez que seja diferente do que obtém, então liberte automaticamente a porta. Meu objetivo hoje era mostrar como você pode começar e usar para automatizar entre checar no tribunal e liberá-lo em seu ambiente. 70. Revisão de publicação: Vocês, rapazes. Este é apenas um vídeo de visão geral para esta seção. Então, nesta seção, nós olhamos para todo o dedo publicar nosso ausente nós olhamos para Bem, dois, talvez três cenários. Baseado em como você percebe o primeiro cenário em que estamos publicando, eu sou Andi que eu pedi que estaria em sua máquina local. Ele pode estar em uma máquina no servidor ou pode ser uma máquina virtual na roupa. Um ponto é que é ah, máquina do Windows executando as informações, aplicativo de serviços de informações da Internet ou olhos para curto no buraco. Podemos ir sobre a configuração do ambiente para o aplicativo dot net core para ser hospedado lá. Andi, mais acessível. Analisamos problemas de permissões que podem surgir tanto para a execução do arquivo quanto para a execução do aplicativo bem como para a conectividade do banco de dados. Onda, nós olhamos para tudo para apenas configurar um servidor pequenas coisas para olhar para fora para Andi, você sabe, você sabe, dicas de solução de problemas. Nós também olhamos para como podemos ir barcos implantando o dedo do pé como você está, então nós vimos o perigo em apenas implantar porque ele criou o banco de dados. A cadeia de conexão estava boa. Tudo estava bem, mas nenhuma tabela foi criada, então tínhamos duas opções que poderíamos ter tentando obter um SQL um script que representa as migrações e, em seguida, a tendência. Fazê-los manualmente no servidor de nuvem ou, hum, nós recorremos, atraindo algum código personalizado para pesquisar todas as variáveis de ambiente para escolher qual cadeia de conexão usar no momento, bem como incluindo essa linha que encaminharia todas as migrações automaticamente. Tudo bem, então o resultado final desta seção é que você vai saber que tem no estagiário, hum, por uma fonte. Será que versão do seu aplicativo em você também tem uma versão hospedada em nuvem do aplicativo . Eu inverno ambos os cenários porque um deve ser prático para o seu contexto. Direto, def. Há outro contexto que você tem. Então você sabe, você pode se sentir livre para chegar a mim e me dizer que no dia eu vou tentar o meu melhor para ajudá-lo isso