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
- Solicitção de Orçamento
- 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
- Solicitção de Orçamento
- 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);
}