public void Deve_Responder_Um_Formulario() { Deve_Criar_Um_Novo_Formulario(); var customForm = _customForms.First(); var request = new SendCustomFormRequest() { CustomFormId = customForm.Id, Fields = new List <SendCustomFieldRequest>() }; foreach (var formularioField in customForm.Fields) { request.Fields.Add(new SendCustomFieldRequest() { Answer = formularioField.HasOptions() ? (formularioField.Mandatory ? formularioField.Options.First().Id.ToString() : null) : (formularioField.Mandatory ? "Resposta do campo" : ""), CustomFieldId = formularioField.Id, CustomFieldOptionId = formularioField.HasOptions() ? formularioField.Options.First().Id : (Guid?)null }); } _handler.Handle(request); Assert.IsTrue(_handler.Valid); Assert.AreEqual(1, _customFormAnswers.Count); }
public ICommandResult Handle(SendCustomFormRequest command) { if (!command.IsValid()) { return(new CommandResult(false, "Request inválida", command)); } var customFormAnswer = new CustomFormAnswer(command.CustomFormId, _tenant.Id); AddNotifications(customFormAnswer); foreach (var fieldCommand in command.Fields) { var customField = _customFieldRepository.Get(fieldCommand.CustomFieldId); if (customField.Mandatory) { if (!customField.HasOptions()) { if (string.IsNullOrEmpty(fieldCommand.Answer)) { AddNotification("Answer", $"O Campo {customField.Name} é obrigatório"); } } else { if (fieldCommand.CustomFieldOptionId == null) { AddNotification("CustomFieldOptionId", $"O Campo {customField.Name} deve ser selecionado."); } } } var customFieldAnswer = new CustomFieldAnswer(fieldCommand.CustomFieldId, fieldCommand?.Answer, customFormAnswer.Id, fieldCommand?.CustomFieldOptionId, _tenant.Id); AddNotifications(customFieldAnswer.Notifications); customFormAnswer.AddField(customFieldAnswer); } if (Valid) { _customFormAnswerRepository.Save(customFormAnswer); } if (Valid) { return(new CommandResult(true, "Resposta do formulário cadastrada com sucesso", new { Id = customFormAnswer.Id })); } else { return(new CommandResult(false, "Erro ao cadastrar resposta do formulário", Notifications)); } }
public async Task <IActionResult> Save([FromBody] SendCustomFormRequest request) { return(await Response(_handler.Handle(request))); }