Skip to main content

Criando ações complecas no botão de um formulário

Opção 1, usando o c# direto no cshtml

 

Nesse exemplo vamos supor que temos 2 formulários

  1. Solicitção de Orçamento
  2. Orçamento

Dentro do Solicitação de Orçamento você tem um botão chamado "Criar Orçamento" e ao clicar nesse Criar orçamento você quer criar um novo Formulário de Orçamento.

No Formulário Solciitação de Orçamento, crie um javascript como esse exemplo: 

function criarOrcamento() {
    formContext.loadAjax("CriarOrcamento", {
        onSuccess: function (e) {
            pageMsg.showMsgSuccess("Orçamento criado", "Sucesso");
        },
        onError: function (err) {
            pageMsg.showMsgError("Erro ao criar o orçamento", "Falha");
        }
    });
}


No onclick do botão "Criar Orçamento" chame a função javascript 

criarOrcamento()

Agora crie um Componente Cshtml, chamando CriarOrcamento

Dentro do componente coloque uma programação em C#.

C#

@{

    //muda o status da SOlicitçaão de ORçamento pra "Orçamento Criado"
    FormContext.SetValue("status", "9041cc899-7045-cb56-b9ac-033f61442599");//coloca o status "orçamento criado", supondo que o staus "orçamento criado" é esse id 9041cc899-7045-cb56-b9ac-033f61442599


  
    //Cria o novo orçamento
    var idFormularioOrcamento = Guid.Parse("de35e6f0-3b95-422c-a681-f4a559bcfd86");
    var values = new DataDictionary();
    values.Add("id_solicitacao_orcamento", FormContext.FormId.ToString()); 
    values.Add("outro_campo", "......");
  
    //salva o orçamento
    await FormContext.SaveEntityAsync(idFormularioOrcamento, values);
}


@{

    //Cria o novo orçamento
    var idFormularioOrcamento = Guid.Parse("de35e6f0-3b95-422c-a681-f4a559bcfd86");
    var values = new DataDictionary();
    values.Add("descricao_do_orcamento", "Orçamento xxx yyyy");
    await PageContext.SaveEntityAsync(idFormularioOrcamento, values);
}

Opção 2, usando regra de negócio

Nesse exemplo vamos supor que temos 2 formulários

  1. Solicitção de Orçamento
  2. Orçamento

Dentro do Solicitação de Orçamento você tem um botão chamado "Criar Orçamento" e ao clicar nesse Criar orçamento você quer salvar o formulário de Solicitação de Orçamento mudando o status dele para "Orçamento Criado" e ao mesmo tempo, já criar um novo Formulário de Orçamento.

Importante, coloque uma regra no formulário de Solicitação de Orçamento pra deixar invisível o botão de "Criar Orçamento" sempre que já tiver um orçamento criado, ou seja, que o status seja igual ao "Orçamento Criado";

No Formulário Solciitação de Orçamento, crie um javascript como esse exemplo: 

function criarOrcamento() {
    pageMsg.showMsgSuccess("Criando orçamento...");
    formContext.field.setValue("status", "041cc896-6048-4b56-a9ac-033f6144253c");//coloca o status "orçamento em criação", supondo que o staus "orçamento em criação" é esse id 041cc896-6048-4b56-a9ac-033f6144253c
    setTimeout(function () { 
        formContext.form.save();

    }, 500); //espera 500ms pra seguir o salvamento
}





No onclick do botão "Criar Orçamento" chame a função javascript 

criarOrcamento()

Agora nas regras de negocio, crie uma regra para criar um registro novo de orçamento ao SALVAR.  

Coloque um If pra enviar o orçamento apenas se o status seja "orçamento em criação"

Dentro do if coloque uma programação em C#.

C#

@{

    //muda o status da SOlicitçaão de ORçamento pra "Orçamento Criado"
    FormContext.SetValue("status", "9041cc899-7045-cb56-b9ac-033f61442599");//coloca o status "orçamento criado", supondo que o staus "orçamento criado" é esse id 9041cc899-7045-cb56-b9ac-033f61442599


  
    //Cria o novo orçamento
    var idFormularioOrcamento = Guid.Parse("de35e6f0-3b95-422c-a681-f4a559bcfd86");
    var values = new DataDictionary();
    values.Add("id_solicitacao_orcamento", FormContext.FormId.ToString()); 
    values.Add("outro_campo", "......");
  
    //salva o orçamento
    await FormContext.SaveEntityAsync(idFormularioOrcamento, values);
}