Exemple #1
0
        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);
        }
Exemple #2
0
        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)));
 }