示例#1
0
        public Patient CreatePatient(User doctor)
        {
            var patient = new Patient();

            PatientRepository.Add(patient);

            //verify that patient number is unique
            //if it is not, then assign unique number
            var maxNumber = PatientRepository.GetMaxPatientNumber();

            patient.PatientNumber = maxNumber + 1;
            patient.Caption       = string.Format("Subj {0}{1:D3}", "A", patient.PatientNumber);
            patient.Doctor        = doctor;
            doctor.Patients.Add(patient);

            patient.Visits = new List <Visit>();
            patient.Visits.Add(CreateBaselineVisit(patient));
            patient.Visits.Add(Create1stDayVisit(patient));
            patient.Visits.Add(Create10thDayVisit(patient));
            foreach (var visit in patient.Visits)
            {
                VisitRepository.Add(visit);
                foreach (var form in visit.Forms)
                {
                    FormRepository.Add(form);
                }
            }

            return(patient);
        }
示例#2
0
        public ActionResult SubmitForm(String formId, FormCollection formData)
        {
            // Remove CSRF token
            //
            formData.Remove("__RequestVerificationToken");

            // Get form entity
            //
            Form form = FormRepository.GetForm(formId);

            Log.Debug("Form data for form '" + form.Id + "' : ");
            foreach (var param in formData.Keys)
            {
                Log.Debug("  " + param + " = " + formData.Get(param.ToString()));
            }

            var    formHandler = FormHandlerRegistry.Get(form.FormAction.FormHandler);
            string resultLink;

            if (formHandler != null)
            {
                resultLink = formHandler.ProcessForm(form, formData);
            }
            else
            {
                resultLink = WebRequestContext.Localization.Path + "/error-404";
            }

            return(Redirect(resultLink));
        }
示例#3
0
        public IEnumerable <dynamic> GetAll(string schemaName, string tableName)
        {
            try
            {
                var repository = new FormRepository(schemaName, tableName, this.MetaUser.Tenant, this.MetaUser.LoginId, this.MetaUser.UserId);
                return(repository.GetAll());
            }
            catch (UnauthorizedException)
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Forbidden));
            }
            catch (DataAccessException ex)
            {
                throw new HttpResponseException(new HttpResponseMessage
                {
                    Content    = new StringContent(ex.Message),
                    StatusCode = HttpStatusCode.InternalServerError
                });
            }
#if !DEBUG
            catch
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError));
            }
#endif
        }
 /// <summary>
 /// Get all defined forms that have submitted form data
 /// </summary>
 /// <returns></returns>
 public IList <DBForm> GetAllForms()
 {
     using (SqlConnection sqlConnection = new SqlConnection(connectionString))
     {
         try
         {
             sqlConnection.Open();
             var            getAllFormsSQL = new SqlCommand(SELECT_ALL_FORMS, sqlConnection);
             SqlDataReader  reader         = getAllFormsSQL.ExecuteReader();
             IList <DBForm> allForms       = new List <DBForm>();
             while (reader.Read())
             {
                 string formId = reader.GetString(0);
                 int    count  = reader.GetInt32(1);
                 Form   form   = FormRepository.GetForm(formId);
                 if (form != null)
                 {
                     DBForm dbForm = new DBForm(form);
                     dbForm.Count = count;
                     allForms.Add(dbForm);
                 }
             }
             return(allForms);
         }
         catch (Exception e)
         {
             throw new DxaException("Could not get all forms.", e);
         }
     }
 }
示例#5
0
        public async Task <long> CountWhereAsync(string schemaName, string tableName, [FromBody] List <Filter> filters)
        {
            try
            {
                var repository = new FormRepository(schemaName, tableName, this.AppUser.Tenant, this.AppUser.LoginId, this.AppUser.UserId);
                return(await repository.CountWhereAsync(filters).ConfigureAwait(false));
            }
            catch (UnauthorizedException)
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Forbidden));
            }
            catch (DataAccessException ex)
            {
                throw new HttpResponseException
                      (
                          new HttpResponseMessage
                {
                    Content    = new StringContent(ex.Message),
                    StatusCode = HttpStatusCode.InternalServerError
                });
            }
#if !DEBUG
            catch
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError));
            }
#endif
        }
        public static void Import(string filename)
        {
            var forms     = FormRepository.GetInstance();
            var pupils    = PupilRepository.GetInstance();
            var reader    = new StreamReader(filename);
            var fileInfo  = new FileInfo(filename);
            int bytesRead = reader.ReadLine().Length + 2;

            while (!reader.EndOfStream)
            {
                string line = reader.ReadLine();
                bytesRead += line.Length + 2;
                var data = line.Split(';');
                var form = new Form {
                    Name = data[0]
                };
                var pupil = new Pupil {
                    Class = data[0], Lastname = data[1], Firstname = data[2], Sex = data[3], Birthday = DateTime.Parse(data[4])
                };

                if (forms.GetForms().All(f => f.Name != form.Name))
                {
                    forms.AddForm(form);
                }

                pupils.AddPupil(pupil);
                Progress?.Invoke(100 * bytesRead / (int)fileInfo.Length);
            }
        }
示例#7
0
        public List <object> BulkImport(string schemaName, string tableName, [FromBody] JArray collection)
        {
            var userCollection = this.ParseCollection(collection);

            if (userCollection == null || userCollection.Count.Equals(0))
            {
                return(null);
            }

            try
            {
                var repository = new FormRepository(schemaName, tableName, this.MetaUser.Tenant, this.MetaUser.LoginId, this.MetaUser.UserId);
                return(repository.BulkImport(userCollection));
            }
            catch (UnauthorizedException)
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Forbidden));
            }
            catch (DataAccessException ex)
            {
                throw new HttpResponseException(new HttpResponseMessage
                {
                    Content    = new StringContent(ex.Message),
                    StatusCode = HttpStatusCode.InternalServerError
                });
            }
#if !DEBUG
            catch
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError));
            }
#endif
        }
示例#8
0
        public async Task DeleteAsync(string schemaName, string tableName, string primaryKey)
        {
            try
            {
                var repository = new FormRepository(schemaName, tableName, this.AppUser.Tenant, this.AppUser.LoginId, this.AppUser.UserId);
                await repository.DeleteAsync(primaryKey).ConfigureAwait(false);
            }
            catch (UnauthorizedException)
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Forbidden));
            }
            catch (DataAccessException ex)
            {
                throw new HttpResponseException
                      (
                          new HttpResponseMessage
                {
                    Content    = new StringContent(ex.Message),
                    StatusCode = HttpStatusCode.InternalServerError
                });
            }
#if !DEBUG
            catch
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError));
            }
#endif
        }
示例#9
0
        public UpdateFormDefinitionStatus UpdateForm(int id, string name, bool publicContent)
        {
            if (!Validator.CheckName(name))
            {
                return(UpdateFormDefinitionStatus.InvalidName);
            }

            FormDefinition form = Get(id);

            if (form == null)
            {
                return(UpdateFormDefinitionStatus.NoSuchFormDefinition);
            }

            if (!ProjectService.CanUserManage(form.ProjectID))
            {
                return(UpdateFormDefinitionStatus.PermissionDenied);
            }

            form.Name          = name;
            form.PublicContent = publicContent;
            FormRepository.Update(form);
            ActivityService.FormDefinitionUpdated(form.ID);
            return(UpdateFormDefinitionStatus.Updated);
        }
示例#10
0
        public object AddOrEdit(string schemaName, string tableName, [FromBody] JArray form)
        {
            dynamic user         = form[0].ToObject <ExpandoObject>(JsonHelper.GetJsonSerializer());
            var     customFields = form[1].ToObject <List <CustomField> >(JsonHelper.GetJsonSerializer());

            if (user == null)
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.MethodNotAllowed));
            }

            try
            {
                var repository = new FormRepository(schemaName, tableName, this.MetaUser.Tenant, this.MetaUser.LoginId, this.MetaUser.UserId);
                return(repository.AddOrEdit(user, customFields));
            }
            catch (UnauthorizedException)
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Forbidden));
            }
            catch (DataAccessException ex)
            {
                throw new HttpResponseException(new HttpResponseMessage
                {
                    Content    = new StringContent(ex.Message),
                    StatusCode = HttpStatusCode.InternalServerError
                });
            }
#if !DEBUG
            catch
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError));
            }
#endif
        }
示例#11
0
        public void Edit(string schemaName, string tableName, string primaryKey, [FromBody] dynamic user)
        {
            if (user == null)
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.MethodNotAllowed));
            }

            try
            {
                var repository = new FormRepository(schemaName, tableName, this.MetaUser.Tenant, this.MetaUser.LoginId, this.MetaUser.UserId);
                repository.Update(user, primaryKey);
            }
            catch (UnauthorizedException)
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Forbidden));
            }
            catch (DataAccessException ex)
            {
                throw new HttpResponseException(new HttpResponseMessage
                {
                    Content    = new StringContent(ex.Message),
                    StatusCode = HttpStatusCode.InternalServerError
                });
            }
#if !DEBUG
            catch
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError));
            }
#endif
        }
示例#12
0
        public long CountWhere(string schemaName, string tableName, [FromBody] JArray filters)
        {
            try
            {
                var f          = Filter.FromJArray(filters);
                var repository = new FormRepository(schemaName, tableName, this.MetaUser.Tenant, this.MetaUser.LoginId, this.MetaUser.UserId);
                return(repository.CountWhere(f));
            }
            catch (UnauthorizedException)
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Forbidden));
            }
            catch (DataAccessException ex)
            {
                throw new HttpResponseException(new HttpResponseMessage
                {
                    Content    = new StringContent(ex.Message),
                    StatusCode = HttpStatusCode.InternalServerError
                });
            }
#if !DEBUG
            catch
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError));
            }
#endif
        }
示例#13
0
        public async Task <IEnumerable <dynamic> > GetWhereAsync(string schemaName, string tableName, long pageNumber, [FromBody] JArray filters)
        {
            try
            {
                var f          = Filter.FromJArray(filters);
                var repository = new FormRepository(schemaName, tableName, this.AppUser.Tenant, this.AppUser.LoginId, this.AppUser.UserId);
                return(await repository.GetWhereAsync(pageNumber, f).ConfigureAwait(false));
            }
            catch (UnauthorizedException)
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Forbidden));
            }
            catch (DataAccessException ex)
            {
                throw new HttpResponseException
                      (
                          new HttpResponseMessage
                {
                    Content    = new StringContent(ex.Message),
                    StatusCode = HttpStatusCode.InternalServerError
                });
            }
#if !DEBUG
            catch
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError));
            }
#endif
        }
示例#14
0
        public async Task <IEnumerable <CustomField> > GetCustomFieldsAsync(string schemaName, string tableName, string resourceId)
        {
            try
            {
                var repository = new FormRepository(schemaName, tableName, this.AppUser.Tenant, this.AppUser.LoginId, this.AppUser.UserId);
                return(await repository.GetCustomFieldsAsync(resourceId).ConfigureAwait(false));
            }
            catch (UnauthorizedException)
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Forbidden));
            }
            catch (DataAccessException ex)
            {
                throw new HttpResponseException
                      (
                          new HttpResponseMessage
                {
                    Content    = new StringContent(ex.Message),
                    StatusCode = HttpStatusCode.InternalServerError
                });
            }
#if !DEBUG
            catch
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError));
            }
#endif
        }
示例#15
0
        public async Task <EntityView> GetEntityViewAsync(string schemaName, string tableName)
        {
            try
            {
                var repository = new FormRepository(schemaName, tableName, this.AppUser.Tenant, this.AppUser.LoginId, this.AppUser.UserId);
                return(await repository.GetMetaAsync().ConfigureAwait(true));
            }
            catch (UnauthorizedException)
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Forbidden));
            }
            catch (DataAccessException ex)
            {
                throw new HttpResponseException
                      (
                          new HttpResponseMessage
                {
                    Content    = new StringContent(ex.Message),
                    StatusCode = HttpStatusCode.InternalServerError
                });
            }
#if !DEBUG
            catch
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError));
            }
#endif
        }
示例#16
0
 public UnitOfWork(XdContext context)
 {
     _context            = context;
     AddressInformations = new AddressInformationRepository(_context);
     AppUsers            = new AppUserRepository(_context);
     AppUserRoles        = new AppUserRoleRepository(_context);
     Contacts            = new ContactRepository(_context);
     Credentials         = new CredentialsRepository(_context);
     DbTypes             = new DbTypeRepository(_context);
     Entities            = new EntityRepository(_context);
     EntityTypes         = new EntityTypeRepository(_context);
     Fields = new FieldRepository(_context);
     FieldRequirementLevels = new FieldRequirementLevelRepository(_context);
     FieldTypes             = new FieldTypeRepository(_context);
     Forms           = new FormRepository(_context);
     FormTypes       = new FormTypeRepository(_context);
     Genders         = new GenderRepository(_context);
     MaritalStatuses = new MaritalStatusRepository(_context);
     MenuItems       = new MenuItemRepository(_context);
     Roles           = new RoleRepository(_context);
     Tabs            = new TabRepository(_context);
     Titles          = new TitleRepository(_context);
     Views           = new ViewRepository(_context);
     ViewTypes       = new ViewTypeRepository(_context);
 }
示例#17
0
            public void UnfinishedCrfsPerDoctorTest()
            {
                //Arrange
                EmulateControllerContext(Controller, true);

                IList <FormDto> formsData = new List <FormDto> {
                    new FormDto()
                    {
                        ClinicName = TestHospitalCaption1, DoctorName = "Smith", FormType = FormType.Demographics
                    },
                    new FormDto()
                    {
                        ClinicName = TestHospitalCaption1, DoctorName = "Smith", FormType = FormType.Demographics
                    },
                    new FormDto()
                    {
                        ClinicName = TestHospitalCaption1, DoctorName = "Bowman", FormType = FormType.Demographics
                    },
                    new FormDto()
                    {
                        ClinicName = TestHospitalCaption1, DoctorName = "Smith", FormType = FormType.Vitals
                    },
                    new FormDto()
                    {
                        ClinicName = AnotherTestHospitalCaption, DoctorName = "Smith", FormType = FormType.Demographics
                    },
                };

                FormRepository.Setup(r => r.GetUnfinishedCrfs()).Returns(formsData);

                //Act
                var result = Controller.UnfinishedCrfsPerDoctor(TestHospitalCaption1);

                //Assert
                Assert.That(result, Is.Not.Null);
                Assert.That(result is PartialViewResult);
                var viewResultBase = result as ViewResultBase;

                Assert.That(viewResultBase.Model, Is.Not.Null);
                Assert.That(viewResultBase.ViewName, Is.EqualTo("_UnfinishedCrfsPerDoctor"));
                Assert.That(viewResultBase.Model is UnfinishedCrfsList, "Unexpected model type");
                var model = viewResultBase.Model as UnfinishedCrfsList;


                FormRepository.Verify(r => r.GetUnfinishedCrfs(), Times.Once());
                Assert.That(model.Count, Is.EqualTo(3));

                Assert.That(model[0].EntityName, Is.EqualTo("Bowman"));
                Assert.That(model[0].FormType, Is.EqualTo("Demographics"));
                Assert.That(model[0].FormsNumber, Is.EqualTo(1));

                Assert.That(model[1].EntityName, Is.EqualTo("Smith"));
                Assert.That(model[1].FormType, Is.EqualTo("Demographics"));
                Assert.That(model[1].FormsNumber, Is.EqualTo(2));

                Assert.That(model[2].EntityName, Is.EqualTo("Smith"));
                Assert.That(model[2].FormType, Is.EqualTo("Vitals"));
                Assert.That(model[2].FormsNumber, Is.EqualTo(1));
            }
示例#18
0
        public override void Startup(IService service)
        {
            PluginVersion = Version;

            var formRepository      = new FormRepository();
            var fieldRepository     = new FieldRepository();
            var fieldItemRepository = new FieldItemRepository();
            var logRepository       = new LogRepository();

            service
            .AddSiteMenu(siteId =>
            {
                var formInfoList = FormManager.GetFormInfoList(siteId, 0);
                var menus        = formInfoList.Where(formInfo => !string.IsNullOrEmpty(formInfo.Title)).Select(formInfo => new Menu
                {
                    Text = FormManager.GetFormTitle(formInfo),
                    Href = $"pages/logs.html?formId={formInfo.Id}"
                }).ToList();

                menus.Add(new Menu
                {
                    Text = "表单管理",
                    Href = "pages/forms.html"
                });
                menus.Add(new Menu
                {
                    Text = "表单模板",
                    Href = "pages/templates.html"
                });

                return(new Menu
                {
                    Text = "表单",
                    IconClass = "ion-android-list",
                    Menus = menus
                });
            })
            .AddContentMenu(contentInfo =>
            {
                var formInfo =
                    FormManager.GetFormInfoByContentId(contentInfo.SiteId, contentInfo.ChannelId, contentInfo.Id);

                var menu = new Menu
                {
                    Text = FormManager.GetFormTitle(formInfo),
                    Href = "pages/logs.html"
                };

                return(menu);
            })
            .AddDatabaseTable(formRepository.TableName, formRepository.TableColumns)
            .AddDatabaseTable(fieldRepository.TableName, fieldRepository.TableColumns)
            .AddDatabaseTable(fieldItemRepository.TableName, fieldItemRepository.TableColumns)
            .AddDatabaseTable(logRepository.TableName, logRepository.TableColumns)
            .AddStlElementParser(StlForm.ElementName, StlForm.Parse)
            ;

            service.ContentDeleteCompleted += Service_ContentDeleteCompleted;
        }
        public void SaveDraft(Guid formId, PageStructure pageStructure)
        {
            var pageRepository = new FormRepository();
            var draft          = pageRepository.FindContentVersions(By.ContentId(formId), ContentEnvironment.Draft).Result.Single();

            new StructureNodeConverter().ApplyNewStructureToCmsPage(draft, pageStructure);
            pageRepository.Save(draft);
        }
        public PreviewNode Page(Guid formId)
        {
            var draft = new FormRepository().FindContentVersions(By.ContentId(formId), ContentEnvironment.Draft).Result.Single();
            var structureNodeConverter = new StructureNodeConverter();
            var structure = structureNodeConverter.GetPageStructure(draft);

            return(new FormDesignerPreviewWriter().Write(structure));
        }
示例#21
0
        public IQueryable <FormDefinition> GetList(int projectID)
        {
            if (!ProjectService.CanUserRead(projectID))
            {
                return(new FormDefinition[0].AsQueryable());
            }

            return(FormRepository.Where(f => f.ProjectID == projectID));
        }
示例#22
0
        public FormDefinition Get(string publicIdentifier)
        {
            FormDefinition form = FormRepository.FirstOrDefault(f => f.PublicIdentifier == publicIdentifier);

            //if (form != null && !ProjectService.CanUserRead(form.ProjectID))
            //    return null;

            return(form);
        }
示例#23
0
 public void SetUp()
 {
     _connection = new SQLiteConnection("testlivehts.db");
     Seeder.Seed(_connection);
     _liveSetting    = new LiveSetting(_connection.DatabasePath);
     _formRepository = new FormRepository(_liveSetting,
                                          new QuestionRepository(_liveSetting,
                                                                 new ConceptRepository(_liveSetting, new CategoryRepository(_liveSetting))));
 }
        public List <FormModel> Page()
        {
            var drafts = new FormRepository().FindContentVersions(BooleanExpression.None, ContentEnvironment.Draft).Result
                         .ToList();

            return(drafts.Select(x => new FormModel {
                Name = x.Name, ContentId = x.ContentId
            }).ToList());
        }
示例#25
0
        public FormApiController()
        {
            this.repository                      = new FormRepository();
            this.userRepository                  = new AspNetUsersRepository();
            this.authorizationService            = new AuthorizationService();
            this.formUserAuthorizationRepository = new FormUserAuthorizationRepository();
            var currentUserId = User.Identity.GetUserId();

            user = userRepository.Search().Where(e => e.Id == currentUserId).FirstOrDefault();
        }
示例#26
0
        private CmsForm SetupRedirectPageSettingsForm()
        {
            var form = new CmsForm
            {
                ContentId     = KnownFormIds.RedirectPageSettingsForm,
                Name          = "Redirect Page Settings",
                RepositoryUid = new Guid(CmsPageRepository.ApiId),
            };

            //CmsPageContentBuilder builder = new CmsPageContentBuilder();

            //var twoColumn =
            //    builder.BuildCmsPageContentFromWebFormsControl(new RowLayout { NumColumns = 2 });
            //twoColumn.PlacementContentPlaceHolderId = ConfiguratorFormBuilder.RuntimePlaceHolderId;
            //form.FormContent.Add(twoColumn);


            //var textboxPageContent =
            //    builder.BuildCmsPageContentFromWebFormsControl(new ConfiguratorTextBox
            //    {
            //        PropertyName = nameof(CmsPage.Name),
            //        DisplayName = "Page Name",

            //    });

            //textboxPageContent.PlacementContentPlaceHolderId = "0";

            //var urlSelector =
            //    builder.BuildCmsPageContentFromWebFormsControl(new ConfiguratorUrlSelector()
            //    {
            //        PropertyName = nameof(CmsPage.RedirectUri),
            //        DisplayName = "Redirect To",

            //    });

            //textboxPageContent.PlacementContentPlaceHolderId = "0";

            //twoColumn.AllContent.Add(textboxPageContent);
            //twoColumn.AllContent.Add(urlSelector);


            //var siteIdDropdown =
            //    builder.BuildCmsPageContentFromWebFormsControl(new ConfiguratorHiddenField()
            //    {
            //        PropertyName = nameof(CmsPage.SiteId)
            //    });
            //twoColumn.AllContent.Add(siteIdDropdown);

            var formRepository = new FormRepository();

            formRepository.Save(form);
            formRepository.Publish(By.ContentId(form.ContentId));

            return(form);
        }
        private void SelectClass(object sender, RoutedEventArgs e)
        {
            if (Forms.SelectedItem == null)
            {
                viewModel.UpdatePupils();
                return;
            }

            viewModel.SelectedForm = FormRepository.GetInstance().GetForms().Single(f => f.Id == ((Form)Forms.SelectedItem).Id);
            viewModel.UpdatePupils();
        }
示例#28
0
 public DataAccess()
 {
     PollAppDBContext context = new PollAppDBContext();
     UserRepository = new UserRepository(context);
     CategoryRepository = new CategoryRepository(context);
     TokenRepository = new TokenRepository(context);
     QuestionRepository = new QuestionRepository(context);
     AnswerRepository = new AnswerRepository(context);
     FormRepository = new FormRepository(context);
     VotedFormsRepository = new VotedFormsRepository(context);
 }
示例#29
0
        public FormDefinition Get(int id)
        {
            FormDefinition form = FormRepository.Get(id);

            if (form != null && !ProjectService.CanUserRead(form.ProjectID))
            {
                return(null);
            }

            return(form);
        }
示例#30
0
        /// <summary>
        /// Constructor
        /// </summary>
        public AzureDataAccess()
        {
            AzurePollAppDBContext context = new AzurePollAppDBContext();

            UserRepository       = new UserRepository(context);
            CategoryRepository   = new CategoryRepository(context);
            TokenRepository      = new TokenRepository(context);
            QuestionRepository   = new QuestionRepository(context);
            AnswerRepository     = new AnswerRepository(context);
            FormRepository       = new FormRepository(context);
            VotedFormsRepository = new VotedFormsRepository(context);
        }
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            var formIdRaw   = Request["formId"];
            var formTypeRaw = Request["formType"];

            ContentTypePicker.Visible = string.IsNullOrEmpty(formTypeRaw) && string.IsNullOrEmpty(formIdRaw);
            if (ContentTypePicker.Visible)
            {
                ContentTypeDropDownList.Items.Add(new ListItem(string.Empty, string.Empty));
                var all = new RepositoryMetadataManager().Find();
                foreach (var contentType in all)
                {
                    var text = RepositoryTypeResolver.ResolveTypeByApiId(contentType.ApiId).Name;
                    ContentTypeDropDownList.Items.Add(new ListItem(text, contentType.ApiId.ToString()));
                }

                SelectContentTypeButton.Click += (sender, args) =>
                {
                    //todo: make this work regardless of the querystring already present.
                    var url = HttpContext.Current.Request.RawUrl + "&formType=" + ContentTypeDropDownList.SelectedValue;
                    HttpContext.Current.Response.Redirect(url);
                };
                return;
            }

            CmsForm cmsForm;

            if (string.IsNullOrEmpty(formIdRaw))
            {
                cmsForm = new CmsForm
                {
                    ContentId     = Guid.NewGuid(),
                    RepositoryUid = new Guid(formTypeRaw)
                }
            }
            ;
            else
            {
                var formRepository = new FormRepository();
                cmsForm = formRepository.FindContentVersions(By.ContentId(new Guid(formIdRaw)), ContentEnvironment.Draft).Result.Single();
            }

            //var mgr = new EditingContextManager();
            //var ec = mgr.GetOrCreateEditingContext(cmsForm);

            //CmsPageLayoutEngine.ActivateAndPlaceContent(RuntimePlaceHolder, ec.AllContent,PageRenderMode.PageDesigner);

            //RuntimePlaceHolder.Controls.AddAt(0, new DropTarget(RuntimePlaceHolder, DropTargetDirective.Begin));
            //RuntimePlaceHolder.Controls.Add(new DropTarget(RuntimePlaceHolder, DropTargetDirective.End));

            //this.Page.Init += (x,y) => this.Page.EnableDesignerDependencies();
        }
 public void Setup()
 {
     DataStorage = new Mock<IDataStorage>();
     Repository = new FormRepository(DataStorage.Object);
 }