/// <summary>
        /// get all the organisations
        /// </summary>
        /// <returns></returns>
        public List <Organisation> GetOrganisations()
        {
            var organisations = new List <Organisation>();

            using (var entity = new SmartWizardDBContext())
            {
                //includes the foreign tables
                organisations = entity.Organisations.Include("Users").Include("Questionnaire").ToList();
            }

            return(organisations);
        }
        /// <summary>
        /// get all the users
        /// </summary>
        /// <returns></returns>
        public List <User> GetUsers()
        {
            var users = new List <User>();

            using (var entity = new SmartWizardDBContext())
            {
                //get all users and includes organsaions
                var getUsers = entity.Users.Include("Organisation").ToList();

                //omit firstname null and order by organisation name
                users = getUsers.Where(d => d.FirstName != null).OrderBy(d => d.Organisation.OrganisationName).ToList();
            }



            return(users);
        }
            public SimpleMembershipInitializer()
            {
                Database.SetInitializer <SmartWizardDBContext>(null);

                try
                {
                    using (var context = new SmartWizardDBContext())
                    {
                        if (!context.Database.Exists())
                        {
                            // Create the SimpleMembership database without Entity Framework migration schema
                            ((IObjectContextAdapter)context).ObjectContext.CreateDatabase();
                        }
                    }

                    //WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
                }
                catch (Exception ex)
                {
                    throw new InvalidOperationException("The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588", ex);
                }
            }
        /// <summary>
        /// save the Organisation details, if somethings wrongs happens should log it
        /// </summary>
        /// <param name="Organisation"></param>
        public void SaveWizard(Organisation Organisation)
        {
            using (var entity = new SmartWizardDBContext())
            {
                //get the organisation
                var org = entity.Organisations.SingleOrDefault(d => d.Id == Organisation.Id);
                try
                {
                    //add the record if not exist, otherwise update it
                    if (org == null)
                    {
                        entity.Entry(Organisation).State = System.Data.Entity.EntityState.Added;
                        entity.Organisations.Add(Organisation);
                    }
                    else
                    {
                        this.UpdateRecord(entity, org, Organisation);
                    }


                    entity.SaveChanges();
                }
                catch (DbEntityValidationException ex)
                {
                    var errs = from ers in ex.EntityValidationErrors
                               from err in ers.ValidationErrors
                               select err.ErrorMessage;
                    //Log it
                    throw;
                }
                catch (Exception ex)
                {
                    //Log it
                    throw;
                }
            }
        }