Exemplo n.º 1
0
        public ActionResult InsertInquiryData(string formPublicIdentifier, string fieldPublicIdentifier)
        {
            List <InsertValidationModel> validation = new List <InsertValidationModel>();
            IInquiryDataCreator          creator    = DataService.CreateInquiry();

            SetPublicIdentifierStatus spi = creator.PublicIdentifier(formPublicIdentifier);

            if (spi == SetPublicIdentifierStatus.NoSuchFormDefinition)
            {
                validation.Add(new InsertValidationModel(null, "NoSuchFormDefinition"));
            }

            AddInquiryAnswerStatus aias = creator.AddAnswer(fieldPublicIdentifier);

            switch (aias)
            {
            case AddInquiryAnswerStatus.NoSuchFormDefinition:
                validation.Add(new InsertValidationModel(fieldPublicIdentifier, "NoSuchFormDefinition"));
                break;

            case AddInquiryAnswerStatus.NoSuchFieldDefinition:
                validation.Add(new InsertValidationModel(fieldPublicIdentifier, "NoSuchFieldDefinition"));
                break;
            }

            CreateFormDataStatus status = creator.Save();

            switch (status)
            {
            case CreateFormDataStatus.InvalidCreator:
                validation.Add(new InsertValidationModel(null, "InvalidCreator"));
                break;
            }

            if (validation.Count > 0)
            {
                return(JsonP(validation));
            }

            //TODO: Should return something! (Inserted data?)
            return(new EmptyResult());
        }
Exemplo n.º 2
0
        public ActionResult InsertFormData(FormInsertModel model)
        {
            List <InsertValidationModel> validation = new List <InsertValidationModel>();
            IFormDataCreator             creator    = DataService.CreateForm();

            SetPublicIdentifierStatus spi = creator.PublicIdentifier(model.FormPublicIdentifier);

            if (spi == SetPublicIdentifierStatus.NoSuchFormDefinition)
            {
                validation.Add(new InsertValidationModel(null, "NoSuchFormDefinition"));
            }

            if (!String.IsNullOrEmpty(model.ParentPublicIdentifier))
            {
                SetParentDataStatus spd = creator.Parent(model.ParentPublicIdentifier);
                switch (spd)
                {
                case SetParentDataStatus.NoSuchFormData:
                    validation.Add(new InsertValidationModel(null, "NoSuchFormData"));
                    break;

                case SetParentDataStatus.NoSuchFormDefinition:
                    validation.Add(new InsertValidationModel(null, "NoSuchFormDefinition"));
                    break;
                }
            }

            creator.Tag(model.FormTag);

            FormDefinition form = FormService.Get(model.FormPublicIdentifier);

            foreach (FieldInsertModel field in model.Fields)
            {
                FieldDefinition def = form.Fields.FirstOrDefault(f => f.PublicIdentifier == field.PublicIdentifier);
                AddFieldStatus  afs;

                if (def != null && def.FieldType == FieldType.FileField)
                {
                    PostedFile file = files[field.Value];
                    if (file != null)
                    {
                        afs = creator.AddField(field.PublicIdentifier, file.Name, file.ContentType, file.Stream.ToArray());
                        files.Remove(field.Value);
                    }
                    else
                    {
                        afs = AddFieldStatus.IncorrectValue;
                    }
                }
                else
                {
                    afs = creator.AddFieldConvert(field.PublicIdentifier, field.Value);
                }

                switch (afs)
                {
                case AddFieldStatus.NoSuchFormDefinition:
                    validation.Add(new InsertValidationModel(field.PublicIdentifier, "NoSuchFormDefinition"));
                    break;

                case AddFieldStatus.NoSuchFieldDefinition:
                    validation.Add(new InsertValidationModel(field.PublicIdentifier, "NoSuchFieldDefinition"));
                    break;

                case AddFieldStatus.IncorrectFieldType:
                    validation.Add(new InsertValidationModel(field.PublicIdentifier, "IncorrectFieldType"));
                    break;

                case AddFieldStatus.IncorrectValue:
                    validation.Add(new InsertValidationModel(field.PublicIdentifier, "IncorrectValue"));
                    break;
                }
            }

            //TODO: Handle reference field!

            if (validation.Count == 0)
            {
                CreateFormDataStatus status = creator.Save();
                switch (status)
                {
                case CreateFormDataStatus.InvalidCreator:
                    validation.Add(new InsertValidationModel(null, "InvalidCreator"));
                    break;
                }
            }

            if (validation.Count > 0)
            {
                //Response.StatusCode = 406;
                return(JsonP(new
                {
                    Errors = validation
                }));
            }

            DataService = DependencyResolver.Current.GetService <IFormDataService>(); //TODO: Never mind! 'Hack' for creating new DataContext
            return(GetFormData(model.FormPublicIdentifier, 1, 0));
        }