marcosdosea_DoeVida/Codigo/DoeVidaWeb/Views/Doador/Edit.cshtml
@model DoeVidaWeb.ViewModels.DoadorViewModel
@{
 ViewData["Title"] = "Edit";
}

<span class="title">Cadastro de doador</span>

<div class="row">
    <div class="col-md-4 max-width">
        <form asp-action="Edit">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>

            <span class="title-section">Dados pessoais</span>

            <div class="form-group">
                <label asp-for="Nome" class="control-label"></label>
                <input asp-for="Nome" class="form-control" placeholder="Digite o nome do doador" />
                <span asp-validation-for="Nome" class="text-danger"></span>
            </div>

            <div class="form-horizontal">
                <div class="form-group class-60">
                    <label asp-for="Email" class="control-label">Email</label>
                    <input asp-for="Email" placeholder="Digite o email do doador" class="form-control" />
                    <span asp-validation-for="Email" class="text-danger"></span>
                </div>

            </div>

            <div class="form-horizontal">

                <div class="form-group max-width">
                    <label asp-for="Cpf" class="control-label">CPF</label>
                    <input asp-for="Cpf" placeholder="Digite o cpf do doador" class="form-control"
                           onkeyup="cpfCheck(this)" maxlength="14" onkeydown="javascript: fMasc( this, mCPF )" />
                    <span asp-validation-for="Cpf" class="text-danger"></span>
                </div>

                <div class="form-group max-width p-30">
                    <label asp-for="DataNascimento" class="control-label">Data de nascimento</label>
                    <input asp-for="DataNascimento" class="form-control" />
                    <span asp-validation-for="DataNascimento" class="text-danger"></span>
                </div>

                <div class="form-group max-width">
                    <label asp-for="Telefone" class="control-label">Telefone</label>
                    <input asp-for="Telefone" placeholder="Digite o telefone do doador" class="form-control"
                           id="telefone" maxlength="15" />
                    <span asp-validation-for="Telefone" class="text-danger"></span>
                </div>
            </div>

            <span class="title-section">Endereço</span>

            <div class="form-horizontal">

                <div class="form-group w-30">
                    <label asp-for="Cep" class="control-label">CEP</label>
                    <input asp-for="Cep" placeholder="Digite o cep do doador" class="form-control" size="8" maxlength="8"
               onkeyup="pesquisacep(this.value);" />
                    <span asp-validation-for="Cep" class="text-danger"></span>
                </div>

                <div class="form-group class-60">
                    <label asp-for="Logradouro" class="control-label"></label>
                    <input asp-for="Logradouro" id="rua" placeholder="Digite o nome da sua rua" class="form-control" />
                    <span asp-validation-for="Logradouro" class="text-danger"></span>
                </div>

            </div>

            <input asp-for="Tipo" type="hidden" value="DOADOR" />
            <input asp-for="Status" type="hidden" value="ATIVO" />
            <input asp-for="IdPessoa" style="display: none;" />

            <div class="form-horizontal">

                <div class="form-group max-width">
                    <label asp-for="Uf" class="control-label">Estado</label>
                    <input asp-for="Uf" placeholder="nome do estado" id="uf" class="form-control" />
                    <span asp-validation-for="Uf" class="text-danger"></span>
                </div>

                <div class="form-group max-width p-30">
                    <label asp-for="Cidade" class="control-label"></label>
                    <input asp-for="Cidade" placeholder="nome da cidade" id="cidade" class="form-control" />
                    <span asp-validation-for="Cidade" class="text-danger"></span>
                </div>
                <div class="form-group max-width">
                    <label asp-for="Bairro" class="control-label"></label>
                    <input asp-for="Bairro" id="bairro" placeholder="nome do bairro" class="form-control" />
                    <span asp-validation-for="Bairro" class="text-danger"></span>
                </div>
            </div>

            
            <div class="form-horizontal">

                <div class="form-group class-60">
                    <label asp-for="Complemento" class="control-label">Complemento</label>
                    <input asp-for="Complemento" placeholder="complemento" id="complemento" class="form-control" />
                    <span asp-validation-for="Complemento" class="text-danger"></span>
                </div>


                <div class="form-group class-30">
                    <label asp-for="NumeroEndereco" class="control-label">Número</label>
                    <input asp-for="NumeroEndereco" placeholder="número" id="numero" class="form-control" />
                    <span asp-validation-for="NumeroEndereco" class="text-danger"></span>
                </div> 

            </div>
            <div class="form-group form-horizontal" style="margin: 30px 0;">
                <a id="btn-back" asp-action="Index">Voltar</a>
                <input type="submit" value="Editar" class="btn btn-primary" />
            </div>
        </form>
    </div>
</div>

<script>

    function pesquisacep(valor) {

        if (valor.length < 8)
            return;

        //Nova variável "cep" somente com dígitos.
        var cep = valor.replace(/\D/g, '');

        //Verifica se campo cep possui valor informado.
        if (cep != "") {

            //Expressão regular para validar o CEP.
            var validacep = /^[0-9]{8}$/;

            //Valida o formato do CEP.
            if (validacep.test(cep)) {

                //Preenche os campos com "..." enquanto consulta webservice.
                document.getElementById('rua').value = "...";
                document.getElementById('bairro').value = "...";
                document.getElementById('cidade').value = "...";
                document.getElementById('uf').value = "...";

                //Cria um elemento javascript.
                var script = document.createElement('script');

                //Sincroniza com o callback.
                script.src = 'https://viacep.com.br/ws/' + cep + '/json/?callback=meu_callback';

                //Insere script no documento e carrega o conteúdo.
                document.body.appendChild(script);

            } //end if.
            else {
                //cep é inválido.
                limpa_formulário_cep();
                alert("Formato de CEP inválido.");
            }
        } //end if.
        else {
            //cep sem valor, limpa formulário.
            limpa_formulário_cep();
        }
    };

    function limpa_formulário_cep() {
        //Limpa valores do formulário de cep.
        document.getElementById('rua').value = ("");
        document.getElementById('bairro').value = ("");
        document.getElementById('cidade').value = ("");
        document.getElementById('uf').value = ("");
    }

    function meu_callback(conteudo) {
        if (!("erro" in conteudo)) {
            //Atualiza os campos com os valores.
            document.getElementById('rua').value = (conteudo.logradouro);
            document.getElementById('bairro').value = (conteudo.bairro);
            document.getElementById('cidade').value = (conteudo.localidade);
            document.getElementById('uf').value = (conteudo.uf);
        } //end if.
        else {
            //CEP não Encontrado.
            limpa_formulário_cep();
            alert("CEP não encontrado.");
        }
    }

    function mascara(o, f) {
        v_obj = o
        v_fun = f
        setTimeout("execmascara()", 1)
    }

    function execmascara() {
        v_obj.value = v_fun(v_obj.value)
    }

    function mtel(v) {
        v = v.replace(/\D/g, ""); //Remove tudo o que não é dígito
        v = v.replace(/^(\d{2})(\d)/g, "($1) $2"); //Coloca parênteses em volta dos dois primeiros dígitos
        v = v.replace(/(\d)(\d{4})$/, "$1-$2"); //Coloca hífen entre o quarto e o quinto dígitos
        return v;
    }

    function id(el) {
        return document.getElementById(el);
    }

    window.onload = function () {
        id('telefone').onkeyup = function () {
            mascara(this, mtel);
        }
    }

    function is_cpf(c) {

        if ((c = c.replace(/[^\d]/g, "")).length != 11)
            return false

        if (c == "00000000000")
            return false;

        var r;
        var s = 0;

        for (i = 1; i <= 9; i++)
            s = s + parseInt(c[i - 1]) * (11 - i);

        r = (s * 10) % 11;

        if ((r == 10) || (r == 11))
            r = 0;

        if (r != parseInt(c[9]))
            return false;

        s = 0;

        for (i = 1; i <= 10; i++)
            s = s + parseInt(c[i - 1]) * (12 - i);

        r = (s * 10) % 11;

        if ((r == 10) || (r == 11))
            r = 0;

        if (r != parseInt(c[10]))
            return false;

        return true;
    }

    function fMasc(objeto, mascara) {
        obj = objeto
        masc = mascara
        setTimeout("fMascEx()", 1)
    }

    function fMascEx() {
        obj.value = masc(obj.value)
    }

    function mCPF(cpf) {
        cpf = cpf.replace(/\D/g, "")
        cpf = cpf.replace(/(\d{3})(\d)/, "$1.$2")
        cpf = cpf.replace(/(\d{3})(\d)/, "$1.$2")
        cpf = cpf.replace(/(\d{3})(\d{1,2})$/, "$1-$2")
        return cpf
    }

</script>

@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
