Ejemplo n.º 1
0
        public async Task <IActionResult> Create([Bind("ID,Nome,NumCedulaProf,Fotografia")] Veterinarios veterinario, IFormFile fotoVet)
        {
            //processar a fotografia
            string caminhoCompleto = "";
            bool   haImagem        = false;

            // processar a fotografia -> se nao ha usamos noVet.jog que é a default para todos
            if (fotoVet == null)
            {
                veterinario.Fotografia = "noVet.jpg";
            }
            else
            {
                //sera o ficheiro uma imagemc
                if (fotoVet.ContentType == "image/jpeg" || fotoVet.ContentType == "imahe/png")
                {
                    //o ficheiro é uma imagem valida
                    //prepara a imagem para ser guardada no disco e o seu nome associado ao vet
                    Guid g;
                    g = Guid.NewGuid();
                    string extensao = Path.GetExtension(fotoVet.FileName).ToLower();
                    string nome     = g.ToString() + extensao;
                    //onde guardar o ficheiro
                    caminhoCompleto = Path.Combine(_caminho.WebRootPath, "Imagens\\Vets", nome);
                    //associar o nome do ficheiro ao vet
                    veterinario.Fotografia = nome;
                    //assinalar que existe imagem e é preciso guarda-la no disco
                    haImagem = true;
                }
                else
                {
                    //ha imagem mas nao é do tipo certo
                    veterinario.Fotografia = "noVet.jpg";
                }
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Add(veterinario);
                    await _context.SaveChangesAsync();

                    // se há imagem, vou guardar no disco
                    if (haImagem)
                    {
                        using var stream = new FileStream(caminhoCompleto, FileMode.Create);
                        await fotoVet.CopyToAsync(stream);
                    }

                    return(RedirectToAction(nameof(Index)));
                }
                catch (Exception)
                {
                    //se chegar aqui, é pq alguma coisa correu mal
                    //o que fazer?
                }
            }
            return(View(veterinario));
        }
Ejemplo n.º 2
0
        public void Salvar(Veterinarios veterinarios)
        {
            try
            {
                AbrirConexao();

                comando = new MySqlCommand("INSERT INTO tb_veterinario(nomeVeterinario,sobrenomeVeterinario,crmv,especializacao,enderecoVeterinario,bairroVeterinario,cepVeterinario,numeroResidenciaVeterinario,complementoVeterinario,emailVeterinario,telefoneFixoVet,telefoneCelularVet) VALUES (@nome,@sobrenome,@crmv,@especializacao,@endereco,@bairro,@cep,@numero,@complemento,@email,@telfixo,@telcel)", conection);

                comando.Parameters.AddWithValue("@nome", veterinarios.nomeVeterinario);
                comando.Parameters.AddWithValue("@sobrenome", veterinarios.sobrenomeVeterinario);
                comando.Parameters.AddWithValue("@crmv", veterinarios.crmv);
                comando.Parameters.AddWithValue("@especializacao", veterinarios.especializacao);
                comando.Parameters.AddWithValue("@endereco", veterinarios.enderecoVeterinario);
                comando.Parameters.AddWithValue("@bairro", veterinarios.bairroVeterinario);
                comando.Parameters.AddWithValue("@cep", veterinarios.cepVeterinario);
                comando.Parameters.AddWithValue("@numero", veterinarios.numeroResidenciaVeterinario);
                comando.Parameters.AddWithValue("@complemento", veterinarios.complementoVeterinario);
                comando.Parameters.AddWithValue("@email", veterinarios.emailVeterinario);
                comando.Parameters.AddWithValue("@telfixo", veterinarios.telefoneFixoVet);
                comando.Parameters.AddWithValue("@telcel", veterinarios.telefoneCelularVet);

                comando.ExecuteNonQuery();
            }
            catch (Exception erro)
            {
                throw erro;
            }
            finally
            {
                FecharConexao();
            }
        }
Ejemplo n.º 3
0
        public void Editar(Veterinarios veterinarios)
        {
            try
            {
                AbrirConexao();

                comando = new MySqlCommand("UPDATE tb_veterinario SET nomeVeterinario = @nome, sobrenomeVeterinario = @sobrenome,crmv = @crmv ,especializacao = @especializacao ,enderecoVeterinario = @endereco,bairroVeterinario = @bairro,cepVeterinario = @cep,numeroResidenciaVeterinario = @numero,complementoVeterinario = @complemento,emailVeterinario = @email,telefoneFixoVet = @telfixo,telefoneCelularVet = @telcel WHERE codVeterinario = @codVeterinario", conection);

                comando.Parameters.AddWithValue("@codVeterinario", veterinarios.codVeterinario);
                comando.Parameters.AddWithValue("@nome", veterinarios.nomeVeterinario);
                comando.Parameters.AddWithValue("@sobrenome", veterinarios.sobrenomeVeterinario);
                comando.Parameters.AddWithValue("@crmv", veterinarios.crmv);
                comando.Parameters.AddWithValue("@especializacao", veterinarios.especializacao);
                comando.Parameters.AddWithValue("@endereco", veterinarios.enderecoVeterinario);
                comando.Parameters.AddWithValue("@bairro", veterinarios.bairroVeterinario);
                comando.Parameters.AddWithValue("@cep", veterinarios.cepVeterinario);
                comando.Parameters.AddWithValue("@numero", veterinarios.numeroResidenciaVeterinario);
                comando.Parameters.AddWithValue("@complemento", veterinarios.complementoVeterinario);
                comando.Parameters.AddWithValue("@email", veterinarios.emailVeterinario);
                comando.Parameters.AddWithValue("@telfixo", veterinarios.telefoneFixoVet);
                comando.Parameters.AddWithValue("@telcel", veterinarios.telefoneCelularVet);


                comando.ExecuteNonQuery();
            }
            catch (Exception erro)
            {
                throw erro;
            }
            finally
            {
                FecharConexao();
            }
        }
Ejemplo n.º 4
0
 private void txtPesquisar_TextChanged(object sender, EventArgs e)
 {
     if (rd_nomemed.Checked == true)
     {
         if (txtPesquisar.Text == "")
         {
             VeterinarioBLL veterinariosBLL = new VeterinarioBLL();
             dtVeterinario.DataSource = veterinariosBLL.listarVeterinarios();
         }
         else
         {
             Veterinarios veterinarios = new Veterinarios();
             pesquisar(veterinarios);
         }
     }
     if (rd_crmv.Checked == true)
     {
         if (txtPesquisar.Text == "")
         {
             VeterinarioBLL veterinariosBLL = new VeterinarioBLL();
             dtVeterinario.DataSource = veterinariosBLL.listarVeterinarios();
         }
         else
         {
             Veterinarios veterinarios = new Veterinarios();
             pesquisarCRMV(veterinarios);
         }
     }
 }
        public async Task<IActionResult> Edit(int id, [Bind("ID,Nome,NumCedulaProf,Fotografia")] Veterinarios veterinarios)
        {
            if (id != veterinarios.ID)
            {
                return NotFound();
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(veterinarios);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!VeterinariosExists(veterinarios.ID))
                    {
                        return NotFound();
                    }
                    else
                    {
                        throw;
                    }
                }
                return RedirectToAction(nameof(Index));
            }
            return View(veterinarios);
        }
Ejemplo n.º 6
0
 private void btn_deletar_Click(object sender, EventArgs e)
 {
     if (MessageBox.Show("Confirmar exclusão ?", "EXClUIR VETERINARIO", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
     {
         Veterinarios veterinarios = new Veterinarios();
         excluir(veterinarios);
     }
 }
Ejemplo n.º 7
0
 private void btn_editar_Click(object sender, EventArgs e)
 {
     if (MessageBox.Show("Confirmar alteração ?", "ALTERAR VETERINARIO", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
     {
         Veterinarios veterinarios = new Veterinarios();
         editar(veterinarios);
     }
 }
Ejemplo n.º 8
0
 private void btn_salvar_medico_Click(object sender, EventArgs e)
 {
     if (MessageBox.Show("Confirma os dados ?", "SALVAR VETERINARIO ", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
     {
         Veterinarios veterinarios = new Veterinarios();
         salvar(veterinarios);
     }
 }
        public ActionResult DeleteConfirmed(int id)
        {
            Veterinarios veterinarios = db.Veterinarios.Find(id);

            db.Veterinarios.Remove(veterinarios);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit([Bind(Include = "VeterinarioID,Nome,Rua,NumPorta,Andar,CodPostal,NIF,DataEntradaClinica,NumCedulaProf,DataInscOrdem,Faculdade")] Veterinarios veterinarios)
 {
     if (ModelState.IsValid)
     {
         db.Entry(veterinarios).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(veterinarios));
 }
Ejemplo n.º 11
0
 public void salvar(Veterinarios veterinario)
 {
     try
     {
         veterinariosDAO.Salvar(veterinario);
     }
     catch (Exception erro)
     {
         throw erro;
     }
 }
Ejemplo n.º 12
0
 public void excluir(Veterinarios veterinarios)
 {
     try
     {
         veterinariosDAO.Excluir(veterinarios);
     }
     catch (Exception erro)
     {
         throw erro;
     }
 }
        // GET: Veterinarios/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Veterinarios veterinarios = db.Veterinarios.Find(id);

            if (veterinarios == null)
            {
                return(HttpNotFound());
            }
            return(View(veterinarios));
        }
Ejemplo n.º 14
0
        private void pesquisarCRMV(Veterinarios veterinarios)
        {
            try
            {
                veterinarios.crmv = txtPesquisar.Text.Trim();

                VeterinarioBLL veterinariosBLL = new VeterinarioBLL();

                dtVeterinario.DataSource = veterinariosBLL.pesquisarCRMV(veterinarios);
            }
            catch (Exception erro)
            {
                throw erro;
            }
        }
Ejemplo n.º 15
0
        public DataTable pesquisarCRMV(Veterinarios veterinarios)
        {
            try
            {
                VeterinariosDAO veterinariosDAO = new VeterinariosDAO();
                DataTable       dt = new DataTable();
                dt = veterinariosDAO.PesquisarCRMV(veterinarios);

                return(dt);
            }
            catch (Exception erro)
            {
                throw erro;
            }
        }
Ejemplo n.º 16
0
        private void editar(Veterinarios veterinarios)
        {
            try
            {
                if (txtNome.Text.Trim() == string.Empty || txt_Sobrenome.Text.Trim() == string.Empty || txtCRMV.Text.Trim() == string.Empty ||
                    txtEspecializacao.Text.Trim() == string.Empty || txtEnd.Text.Trim() == string.Empty || txtBairro.Text.Trim() == string.Empty ||
                    txtCep.Text.Trim() == string.Empty || txtNum.Text.Trim() == string.Empty || txtComplem.Text.Trim() == string.Empty || txtEmail.Text.Trim() == string.Empty ||
                    txtelfixo.Text.Trim() == string.Empty || txtelCelular.Text.Trim() == string.Empty)
                {
                    MessageBox.Show("Informações obrigatórias não preenchidas", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    VeterinarioBLL veterinariosBLL = new VeterinarioBLL();

                    veterinarios.codVeterinario       = Convert.ToInt32(txtCodveterinario.Text);
                    veterinarios.nomeVeterinario      = txtNome.Text;
                    veterinarios.sobrenomeVeterinario = txt_Sobrenome.Text;
                    veterinarios.crmv                        = txtCRMV.Text;
                    veterinarios.especializacao              = txtEspecializacao.Text;
                    veterinarios.enderecoVeterinario         = txtEnd.Text;
                    veterinarios.bairroVeterinario           = txtBairro.Text;
                    veterinarios.cepVeterinario              = txtCep.Text;
                    veterinarios.numeroResidenciaVeterinario = Convert.ToInt32(txtNum.Text);
                    veterinarios.complementoVeterinario      = txtComplem.Text;
                    veterinarios.emailVeterinario            = txtEmail.Text;
                    veterinarios.telefoneFixoVet             = Convert.ToInt64(txtelfixo.Text);
                    veterinarios.telefoneCelularVet          = Convert.ToInt64(txtelCelular.Text);

                    veterinariosBLL.editar(veterinarios);

                    MessageBox.Show("Veterinário ALTERADO com sucesso !", "Resultado", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    limparCampos();
                    btn_editar.Visible        = false;
                    btn_deletar.Visible       = false;
                    btn_salvar_medico.Visible = true;
                    listarVeterinarios();
                }
            }
            catch (MySqlException erro)
            {
                MessageBox.Show("Você não tem permissão para Alterar, CRMV já existe " + erro.Message, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Ejemplo n.º 17
0
        // GET: Veterinarios
        //  [AllowAnonymous]  // desativa a obrigatoriedade de haver autenticação
        public async Task <IActionResult> Index()
        {
            // só o utilizador com Role = Administrativo é que pode aceder ao dados todos
            if (User.IsInRole("Administrativo"))
            {
                // LINQ
                // db.Veterinarios.ToListAsync()  <=>    SELECT * FROM Veterinarios;
                return(View(await db.Veterinarios.ToListAsync()));
            }

            // e agora vamos só mostrar os dados da pessoa que se autenticou

            // e, quem é que se autenticou?
            Veterinarios veterinario = db.Veterinarios
                                       .Where(v => v.Utilizador.UserID == _userManager.GetUserId(User))
                                       .FirstOrDefault();

            return(RedirectToAction("Details", new { id = veterinario.ID }));
        }
Ejemplo n.º 18
0
        //MÉTODO PARA SALVAR
        private void salvar(Veterinarios veterinarios)//esse método deve ser privado
        {
            try
            {
                if (txtNome.Text.Trim() == string.Empty || txt_Sobrenome.Text.Trim() == string.Empty || txtCRMV.Text.Trim() == string.Empty ||
                    txtEspecializacao.Text.Trim() == string.Empty || txtEnd.Text.Trim() == string.Empty || txtBairro.Text.Trim() == string.Empty ||
                    txtCep.Text.Trim() == string.Empty || txtNum.Text.Trim() == string.Empty || txtComplem.Text.Trim() == string.Empty || txtEmail.Text.Trim() == string.Empty ||
                    txtelfixo.Text.Trim() == string.Empty || txtelCelular.Text.Trim() == string.Empty)
                {
                    MessageBox.Show("Informações obrigatórias não preenchidas", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    VeterinarioBLL veterinariosBLL = new VeterinarioBLL();

                    veterinarios.nomeVeterinario      = txtNome.Text;
                    veterinarios.sobrenomeVeterinario = txt_Sobrenome.Text;
                    veterinarios.crmv                        = txtCRMV.Text;
                    veterinarios.especializacao              = txtEspecializacao.Text;
                    veterinarios.enderecoVeterinario         = txtEnd.Text;
                    veterinarios.bairroVeterinario           = txtBairro.Text;
                    veterinarios.cepVeterinario              = txtCep.Text;
                    veterinarios.numeroResidenciaVeterinario = Convert.ToInt32(txtNum.Text);
                    veterinarios.complementoVeterinario      = txtComplem.Text;
                    veterinarios.emailVeterinario            = txtEmail.Text;
                    veterinarios.telefoneFixoVet             = Convert.ToInt64(txtelfixo.Text);
                    veterinarios.telefoneCelularVet          = Convert.ToInt64(txtelCelular.Text);

                    veterinariosBLL.salvar(veterinarios);

                    MessageBox.Show("Veterinário CADASTRADO com sucesso !", "Resultado", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    limparCampos();
                    listarVeterinarios();
                }
            }
            catch (MySqlException erro)
            {
                MessageBox.Show("CRMV já existe \n " + erro.Message, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtCRMV.BackColor = Color.DimGray;
                txtCRMV.Focus();
            }
        }
Ejemplo n.º 19
0
        public void Excluir(Veterinarios veterinarios)
        {
            try
            {
                AbrirConexao();

                comando = new MySqlCommand("DELETE FROM tb_veterinario WHERE codVeterinario = @codVeterinario ", conection);

                comando.Parameters.AddWithValue("@codVeterinario", veterinarios.codVeterinario);

                comando.ExecuteNonQuery();
            }
            catch (Exception erro)
            {
                throw erro;
            }
            finally
            {
                FecharConexao();
            }
        }
Ejemplo n.º 20
0
        //excluir

        private void excluir(Veterinarios veterinarios)        //esse método deve ser privado
        {
            try
            {
                VeterinarioBLL veterinariosBLL = new VeterinarioBLL();

                veterinarios.codVeterinario = Convert.ToInt32(txtCodveterinario.Text);

                veterinariosBLL.excluir(veterinarios);
                //ou excluir com maiuscula
                MessageBox.Show("Veterinário EXCLUÍDO com sucesso !", "Resultado", MessageBoxButtons.OK, MessageBoxIcon.Information);
                limparCampos();
                btn_editar.Visible        = false;
                btn_deletar.Visible       = false;
                btn_salvar_medico.Visible = true;
                listarVeterinarios();
            }
            catch (MySqlException erro)
            {
                MessageBox.Show("Você não tem permissão para Excluir " + erro.Message, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Ejemplo n.º 21
0
        public DataTable PesquisarCRMV(Veterinarios veterinarios)
        {
            try
            {    //PESQUISA DE veterinarios
                AbrirConexao();

                MySqlDataAdapter da            = new MySqlDataAdapter();
                DataTable        dtveterinario = new DataTable();

                comando = new MySqlCommand("SELECT nomeVeterinario AS 'NOME',sobrenomeVeterinario AS 'SOBRENOME',crmv AS 'CRMV',especializacao AS 'ESPECIALIZACAO',enderecoVeterinario AS 'ENDERECO',bairroVeterinario AS 'BAIRRO',cepVeterinario AS 'CEP',numeroResidenciaVeterinario AS 'NUMERO',complementoVeterinario AS 'COMPLEMENTO',emailVeterinario AS 'EMAIL',telefoneFixoVet AS 'FIXO',telefoneCelularVet AS 'CELULAR' FROM tb_veterinario WHERE crmv LIKE @crmv '%' ORDER BY crmv", conection);
                comando.Parameters.AddWithValue("@crmv", veterinarios.crmv);
                da.SelectCommand = comando;
                da.Fill(dtveterinario);
                return(dtveterinario);
            }
            catch (Exception erro)
            {
                throw erro;
            }
            finally
            {
                FecharConexao();
            }
        }
        public async Task<IActionResult> Create([Bind("ID,Nome,NumCedulaProf,Fotografia")] Veterinarios veterinario, IFormFile fotoVet)
        {
            //*****************************************
            // processar a fotografia
            //*****************************************
            // vars.auxiliares
            string caminhoCompleto = "";
            bool haImagem = false;

            // será que há fotografia?
            //    - uma hipótese possível, seria reeenviar os dados para a View e solicitar a adição da imagem
            //    - outra hipótese, será associar ao veterinário uma fotografia 'por defeito'
            if (fotoVet == null) { veterinario.Fotografia = "noVet.jpg"; }
            else
            {
                // há ficheiro
                // será o ficheiro uma imagem?
                if (fotoVet.ContentType=="image/jpeg" ||
                    fotoVet.ContentType=="image/png")
                {
                    // o ficheiro é uma imagem válida
                    // preparar a imagem para ser guardada no disco rígido
                    // e o seu nome associado ao Veterinário
                    Guid g;
                    g = Guid.NewGuid();
                    string extensao = Path.GetExtension(fotoVet.FileName).ToLower();
                    string nome = g.ToString() + extensao;
                    // onde guardar o ficheiro
                    caminhoCompleto = Path.Combine(_caminho.WebRootPath, "Imagens\\Vets", nome);
                    // associar o nome do ficheiro ao Veterinário 
                    veterinario.Fotografia = nome;
                    // assinalar que existe imagem e é preciso guardá-la no disco rígido
                    haImagem = true;

                }
                else
                {
                    // há imagem, mas não é do tipo correto
                    veterinario.Fotografia = "noVet.jpg";
                }
            }

            if (ModelState.IsValid)
            {
                try {
                    _context.Add(veterinario);
                    await _context.SaveChangesAsync();
                    // se há imagem, vou guardá-la no disco rígido
                    if (haImagem)
                    {
                        using var stream = new FileStream(caminhoCompleto, FileMode.Create);
                        await fotoVet.CopyToAsync(stream);
                    }
                    return RedirectToAction(nameof(Index));
                }
                catch (Exception)
                {
                    //se chegar aqui, é porque alguma coisa correu mesmo mal...
                    //o que fazer?
                    //opções a realizar:
                    //  - escrever, no disco do servidor, um log com o erro
                    //  - escrever numa tabela de Erros, na BD, o log do erro
                    //  - enviar o modelo de volta para a View
                    //  - se o erro for corrígivel, corrigir o erro                    
                }
            }
            return View(veterinario);
        }
        public async Task <IActionResult> Create([Bind("ID,Nome,NumCedulaProf,Foto")] Veterinarios veterinario, IFormFile fotoVet)
        {
            //***************************************
            // processar a imagem
            //***************************************

            // vars. auxiliares
            bool   haFicheiro      = false;
            string caminhoCompleto = "";

            // será q há imagem?
            if (fotoVet == null)
            {
                // o utilizador não fez upload de um ficheiro
                veterinario.Foto = "avatar.png";
            }
            else
            {
                // existe fotografia.
                // Mas, será boa?
                if (fotoVet.ContentType == "image/jpeg" ||
                    fotoVet.ContentType == "image/png")
                {
                    // estamos perante uma boa foto
                    // temos de gerar um nome para o ficheiro
                    Guid g;
                    g = Guid.NewGuid();
                    // obter a extensão do ficheiro
                    string extensao     = Path.GetExtension(fotoVet.FileName).ToLower();
                    string nomeFicheiro = g.ToString() + extensao;
                    // onde guardar o ficheiro
                    caminhoCompleto = Path.Combine(_caminho.WebRootPath, "imagens\\vets", nomeFicheiro);
                    // atribuir o nome do ficheiro ao Veterinário
                    veterinario.Foto = nomeFicheiro;
                    // marcar q existe uma fotografia
                    haFicheiro = true;
                }
                else
                {
                    // o ficheiro não é válido
                    veterinario.Foto = "avatar.png";
                }
            }

            try {
                if (ModelState.IsValid)
                {
                    // adiciona o novo veterinário à BD, mas na memória do servidor ASP .NET
                    db.Add(veterinario);
                    // consolida os dados no Servidor BD (commit)
                    await db.SaveChangesAsync();

                    // será q há foto para gravar?
                    if (haFicheiro)
                    {
                        using var stream = new FileStream(caminhoCompleto, FileMode.Create);
                        await fotoVet.CopyToAsync(stream);
                    }
                    // redireciona a ação para a View do Index
                    return(RedirectToAction(nameof(Index)));
                }
            }
            catch (Exception) {
                throw;
            }

            // qd ocorre um erro, reenvio os dados do veterinário para a view da criação
            return(View(veterinario));
        }
        public async Task <IActionResult> Create([Bind("Nome,NumCedulaProf,Fotografia")] Veterinarios veterinario, IFormFile fotoVet)
        {
            //****************************************
            //   processar o ficheiro da Fotografia
            //****************************************

            // vars. auxiliares
            string caminhoCompleto = "";
            bool   haImagem        = false;

            // será que há ficheiro?
            if (fotoVet == null)
            {
                // não há ficheiro!
                // o que vai ser feito?
                //   - devolver o controlo para a View, informando que é necessário escolher uma fotografia
                //       ModelState.AddModelError("", "Não se esqueça de adicionar uma fotografia do Veterinário");
                //       return View(veterinario);
                //   - adicionar uma fotografia 'por defeito'
                veterinario.Fotografia = "noFoto.png";
            }
            else
            {
                // há ficheiro.
                // será que é uma imagem?
                if (fotoVet.ContentType == "image/jpeg" ||
                    fotoVet.ContentType == "image/png")
                {
                    // temos imagem. Ótimo!
                    // temos de gerar um nome para o ficheiro
                    Guid g;
                    g = Guid.NewGuid();
                    // identificar a Extensão do ficheiro
                    string extensao = Path.GetExtension(fotoVet.FileName).ToLower();
                    // nome do ficheiro
                    string nome = g.ToString() + extensao;
                    // preparar o ficheiro para ser guardado, mas não o vamos guardar já...
                    // precisamos de identificar o caminho onde o ficheiro vai ser guardado
                    caminhoCompleto = Path.Combine(_ambiente.WebRootPath, "Imagens\\Vets", nome);
                    // associar o nome da fotografia ao Veterinário
                    veterinario.Fotografia = nome;
                    // assinalar que existe imagem
                    haImagem = true;
                }
                else
                {
                    // há ficheiro, MAS não é uma imagem
                    // o que vai ser feito?
                    //   - devolver o controlo para a View, informando que é necessário escolher uma fotografia
                    //       ModelState.AddModelError("", "Não se esqueça de adicionar uma fotografia do Veterinário");
                    //       return View(veterinario);
                    //   - adicionar uma fotografia 'por defeito'
                    veterinario.Fotografia = "noFoto.png";
                }
            }

            if (ModelState.IsValid)
            {
                // adiciona o Veterinário ao Modelo
                _context.Add(veterinario);
                // consolida, na BD, as alterações
                await _context.SaveChangesAsync();

                // o registo foi guardado
                // o ficheiro vai agora ser guardado no disco rígido
                if (haImagem)
                {
                    using var stream = new FileStream(caminhoCompleto, FileMode.Create);
                    await fotoVet.CopyToAsync(stream);
                }
                // redireciona o utilizador para a View Index
                return(RedirectToAction(nameof(Index)));
            }

            // se o modelo não for válido, devolve o controlo à view do Create
            return(View(veterinario));
        }