コード例 #1
0
        protected void uxSave_Click(object sender, EventArgs e)
        {
            var guid = Guid.Empty.ToString();

            if (!string.IsNullOrEmpty(Request.QueryString["guid"]))
            {
                guid = Request.QueryString["guid"].ToString();
            }

            ResetPasswordTicket ResetTicket = new ResetPasswordTicket(guid);
            string password = string.Empty;

            // TODO: Add validation that passwords match

            if (uxPassword.Text == uxPasswordConfirm.Text && !string.IsNullOrEmpty(uxPasswordConfirm.Text))
            {
                ResetTicket.CompleteTicket(Request.UserHostAddress);
                password = uxPassword.Text;
                ResetYourPasswordItem context = (ResetYourPasswordItem)Sitecore.Context.Item;
                var membershipManager         = new MembershipManager();
                var reset = membershipManager.ResetPassword(Guid.Parse(ResetTicket.UserID), password);



                uxMessage.Text = context.PasswordUpdatedText;

                var member = membershipManager.GetMember(Guid.Parse(ResetTicket.UserID));
                var user   = membershipManager.GetUser(Guid.Parse(ResetTicket.UserID), false);
                ExactTargetService.InvokeEM23PasswordResetConfirmation(new InvokeEM23PasswordResetConfirmationRequest {
                    PreferredLanguage = member.PreferredLanguage, EmailAddress = user.Email, ReportChangedPasswordLink = "#", ToEmail = user.Email, UserPassword = "******", RequestUrl = Request.Url
                });
            }
        }
コード例 #2
0
        void btnSubmit_Click(object sender, EventArgs e)
        {
            pnlResults.Update();

            MembershipManager mm = new MembershipManager();

            if (!string.IsNullOrEmpty(txtEmail.Text))
            {
                var member = mm.GetMember(txtEmail.Text);
                if (member != null)
                {
                    bool hasChildren = member.Children.Any();
                    pnlChildren.Visible = hasChildren;

                    if (hasChildren)
                    {
                        ddlChildren.DataSource     = member.Children;
                        ddlChildren.DataTextField  = "Nickname";
                        ddlChildren.DataValueField = "ChildId";
                        ddlChildren.DataBind();
                    }

                    if (member.Interests.Any())
                    {
                        rptInterests.DataSource = member.Interests;
                        rptInterests.DataBind();
                    }
                }
            }
        }
コード例 #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //var un = string.Empty;

            if (!string.IsNullOrEmpty(Request.QueryString["un"]))
            {
                un = Request.QueryString["un"];
            }
            else
            {
                un = "*****@*****.**";
            }



            ////litRoles.Text = MembershipManager.isOpenToConnect(un).ToString();
            var membershipManager = new MembershipManager();
            //var sb = new StringBuilder();
            //var output = @"Method: {0}:{1}</br>";
            var member = membershipManager.GetMember(un);

            //var memberId = member.MemberId;

            //sb.Append(string.Format(output, "membershipManager.GetMemberByScreenName(un).Email", membershipManager.GetMemberByScreenName(un).Email));
            //sb.Append(string.Format(output, "membershipManager.GetMember(memberId).Email", membershipManager.GetMember(memberId).Email));
            //sb.Append(string.Format(output, "membershipManager.GetMember('[email protected]').Email", membershipManager.GetMember("[email protected]").Email));
            ////sb.Append(string.Format(output, "membershipManager.GetMember('[email protected]').Email", membershipManager.GetMembers().FirstOrDefault(x => x.Email == "[email protected]").Email));
            //sb.Append(string.Format(output, "membershipManager.GetMembers().FirstOrDefault(x => x.MemberId == memberId).Email", membershipManager.GetMembers().FirstOrDefault(x => x.MemberId == memberId).Email));
            //sb.Append(string.Format(output, "membershipManager.GetUser(memberId).Email", membershipManager.GetUser(memberId).Email));

            //litRoles.Text = sb.ToString();
            litEmail.Text = member.Email;
        }
        private void UpdateMember(Guid memberId)
        {
            Member member = null;

            try
            {
                member = _membershipManager.GetMember(memberId);
            }
            catch { }

            if (member == null)
            {
                return;
            }

            UpdateMember(member);
        }
コード例 #5
0
        public void Should_Return_Null_When_No_Member_Is_Present()
        {
            // Act
            var member = _membershipManager.GetMember(1);

            // Assert
            Assert.Null(member);
        }
コード例 #6
0
        protected void btnGo_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(txtEmail.Text))
            {
                var membershipManager = new MembershipManager();
                var member            = membershipManager.GetMember(un);

                var success = membershipManager.UpdateEmail(member, txtEmail.Text);

                Response.Write(success.ToString());
            }
        }
コード例 #7
0
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            var email = txtEmailAddress.Text;

            try
            {
                //always show success message, even if we don't send the email
                //add ASP.Net validation

                MembershipManager membershipManager = new MembershipManager();
                Member            member;

                member = membershipManager.GetMember(email);

                if (member != null)
                {
                    var passwordReset = Sitecore.Context.Database.GetItem(Constants.TemplateIDs.ForgotPasswordPage);
                    var link          = string.Format(Request.Url.Host + "{0}?guid={1}", passwordReset.GetUrl(), new ResetPasswordTicket(member.MemberId).ResetTicketID);


                    BaseReply reply = ExactTargetService.InvokeEM22ForgotPassword(new InvokeEM22ForgotPasswordRequest {
                        PreferredLanguage = member.PreferredLanguage, PasswordResetLink = link, ToEmail = email, RequestUrl = Request.Url
                    });


                    if (reply.Successful)
                    {
                    }
                    else
                    {
                        litErrorMessage.Text = context.ProblemText;
                        throw new Exception("Issue sending email to: " + email);
                    }
                }
                else
                {
                    throw new Exception("User does not exist: " + email);
                }
            }
            catch (Exception ex)
            {
                Sitecore.Diagnostics.Log.Error("Forgot password error", ex, this);
                //uxView.ActiveViewIndex = 0;
                //litErrorMessage.Visible = true;
                //litErrorMessage.Text = DictionaryConstants.EmailException;
            }

            if (string.IsNullOrEmpty(litErrorMessage.Text))
            {
                uxView.ActiveViewIndex = 1;
                litSuccessStory.Text   = Model.SuccessMessage.Rendered.Replace("$email$", Server.HtmlEncode(email));
            }
        }
コード例 #8
0
        private static int PercentProfileComplete(Guid MemberId)
        {
            int profileCompleteness = 0;
            MembershipManager mmgr  = new MembershipManager();

            mmgr.GetMember(MemberId);
            Member m = mmgr.GetMember(MemberId);

            /*
             *
             * Show 0%, if the user has only given us their email.
             * Show 25%, if the user has entered at least one child.
             * Show 50%, if the user has a community name.
             * Show 75%, if the user has entered at least one parent interest.
             * Show 100%, if the user has completed their full profile.
             *
             */

            //just so something is here until we get the rules nailed down
            //I'm making these rules cumulative, as a score, so we don't
            //end up with someone who has nothing but a parental interest come back at 75%
            if (m.Children.Count > 0)
            {
                profileCompleteness += 25;
            }
            if (!string.IsNullOrEmpty(m.ScreenName))
            {
                profileCompleteness += 25;
            }
            if (m.Interests.Count > 0)
            {
                profileCompleteness += 25;
            }
            //not sure what next to add in. What means "complete"?
            //- maybe if their score is 75, then check to see if they have also updated IEP/504 status questions?
            return(profileCompleteness);
        }
コード例 #9
0
        private void doLogin()
        {
            //blow out any existing member when someone tries to sign in
            try
            {
                //Reset session backed my groups from Whats Happening Now
                Session["_selectedGroups"] = null;

                //lets make sure to reset all user&member info before we start inflating it
                this.FlushCurrentMemberUser();

                var membershipManager = new MembershipManager();

                var currentMember = new Member();

                if (!string.IsNullOrEmpty(AccessToken))
                {
                    var     client = new Facebook.FacebookClient(AccessToken);
                    dynamic me     = client.Get("me", new { fields = "email" });

                    currentMember = membershipManager.GetMember(me.email);
                }
                else
                {
                    currentMember = membershipManager.AuthenticateUser(uxEmailAddress.Text, uxPassword.Text);
                }

                if (currentMember != null)
                {
                    this.CurrentMember = currentMember;
                    this.CurrentUser   = membershipManager.GetUser(currentMember.MemberId, true);

                    this.ProfileRedirect(Constants.UserPermission.AgreedToTerms, null, true);

                    //Redirect used here for profile??
                    this.ReturnRedirect();

                    var item = Sitecore.Context.Database.GetItem(Constants.Pages.MyAccount);
                    // if you get this far, clear the redirect session URL

                    Response.Redirect(Sitecore.Links.LinkManager.GetItemUrl(item));
                }
            }
            catch (Exception ex)
            {
                uxError.Text = ex.Message;
            }
        }
コード例 #10
0
        private void ProcessEmail()
        {
            // TODO: validate email
            string            email      = txtEmail.Text.Trim();
            MembershipManager mm         = new MembershipManager();
            MembershipUser    subscriber = mm.GetUser(email);

            if (subscriber != null && subscriber.Comment != Constants.UnauthenticatedMember_Flag)
            {
                litErrorMessage.Text = Model.UnauthenticatedMemberError.Rendered;
            }
            else
            {
                // temporarily skip personalized questions
                if (subscriber == null)
                {
                    Member member = new Member
                    {
                        Email           = email,
                        allowNewsletter = true
                    };

                    mm.AddUnauthorizedMember(member);
                    mm.UpdateMember_ExtendedProperties(member);
                }
                else
                {
                    Member member = mm.GetMember(email);
                    member.allowNewsletter = true;
                    mm.UpdateMember(member);
                }

                RedirectToConfirmation();

                /*
                 * Submission submission = new Submission
                 * {
                 *  Email = email
                 * };
                 *
                 * Session[Constants.SessionNewsletterKey] = submission;
                 *
                 * var item = Sitecore.Context.Database.GetItem(Sitecore.Data.ID.Parse(Constants.Pages.NewsletterChildInfo.ToString()));
                 * Response.Redirect(item.GetUrl());*/
            }
        }
コード例 #11
0
ファイル: Program.cs プロジェクト: jadamsnc/YMCAChildWatch
        public static void Main(string[] args)
        {
            Console.Title = "YMCA Child Watch Manager";

            bool end = false;
            YMCADataGenerator gen        = new YMCADataGenerator();
            SqlConnection     connection = new SqlConnection(connection_string);
            MembershipManager membership = new MembershipManager(connection);
            SignInManager     signIn     = new SignInManager(connection);

            while (!end)
            {
                Console.Write("YMCA> ");
                string[] options = Console.ReadLine().Split(' ');

                try
                {
                    switch (options[0].ToUpper())
                    {
                    // Options on members
                    case "MEMBER":
                        switch (options[1])
                        {
                        case "/s":
                            Member newMember = new Member()
                            {
                                MemberId    = options[2],
                                FirstName   = options[3],
                                LastName    = options[4],
                                Barcode     = options[5],
                                Pin         = options[6],
                                PhoneNumber = options[7],
                                IsActive    = options.Length <= 8 ? true : (options[8] == "0" ? false : true)
                            };
                            bool res = membership.SaveMember(newMember);
                            Console.WriteLine(String.Format("Member save {0}", res ? "successful" : "failed"));
                            break;

                        case "/g":
                            Member found = null;
                            switch (options.Length)
                            {
                            case 3:
                                found = membership.GetMember(options[2]);
                                break;

                            case 4:
                                found = membership.GetMember(options[2], options[3]);
                                break;
                            }
                            if (found != null)
                            {
                                Console.WriteLine("Member Information:");
                                Console.WriteLine(found.ToString());
                            }
                            else
                            {
                                Console.WriteLine("Unable to find member information");
                            }
                            break;
                        }
                        break;

                    // Options on children
                    case "CHILD":
                        switch (options[1])
                        {
                        case "/a":         // Attach child to member
                            bool attached = membership.AttachChild(options[2], int.Parse(options[3]));
                            Console.WriteLine("Child Attached: " + (attached ? "Completed" : "Failed"));
                            break;

                        case "/d":         // Detach child from member
                            bool detached = membership.DetachChild(options[2], int.Parse(options[3]));
                            Console.WriteLine("Child Detached: " + (detached ? "Completed" : "Failed"));
                            break;

                        case "/u":         // Update child
                            bool updated = membership.UpdateChild(new Child()
                            {
                                Id        = int.Parse(options[2]),
                                FirstName = options[3],
                                LastName  = options[4],
                                BirthDate = DateTime.Parse(options[5])
                            });
                            Console.WriteLine("Child Updated: " + (updated ? "Completed" : "Failed"));
                            break;

                        case "/i":         // Insert Child
                            int id = membership.InsertChild(new Child()
                            {
                                FirstName = options[2],
                                LastName  = options[3],
                                BirthDate = DateTime.Parse(options[4]),
                            }, options[5]);
                            if (id >= 1)
                            {
                                Console.WriteLine("Child added with id = " + id.ToString());
                            }
                            else
                            {
                                Console.WriteLine("Child Insert: Failed");
                            }
                            break;

                        case "/g":         // Get Child
                            Child c = membership.GetChild(int.Parse(options[2]));

                            if (c == null)
                            {
                                Console.WriteLine("Child not found");
                            }
                            else
                            {
                                Console.WriteLine("Child Information:\n" + c.ToString());
                            }
                            break;
                        }
                        break;

                    case "CREATEMEMBERS":

                        Console.WriteLine("Member Count: ");
                        int x = int.Parse(Console.ReadLine());
                        Console.WriteLine("Child Count: ");
                        int    y          = int.Parse(Console.ReadLine());
                        Random r          = new Random();
                        int    registered = 0;
                        while (x != 0)
                        {
                            try
                            {
                                Child[] child = new Child[0];
                                Member  m     = gen.RandomMember();
                                x--;

                                if (y > 0)
                                {
                                    int count = Math.Min(r.Next(6), y);
                                    child = new Child[count];
                                    for (int i = 0; i < count; i++)
                                    {
                                        child[i] = gen.RandomChild(m.LastName);
                                    }

                                    y = y - count;
                                }

                                Family family = new Family()
                                {
                                    Guardian = m,
                                    Children = child
                                };

                                if (membership.RegisterFamily(family))
                                {
                                    registered++;
                                }
                            }
                            catch
                            {
                            }
                        }
                        Console.WriteLine("Registered " + registered + " members and their children");
                        break;

                    case "CREATESIGNIN":
                        Random   random        = new Random();
                        DateTime start         = new DateTime(2018, 4, 6, 9, 0, 0);
                        DateTime stop          = new DateTime(2018, 4, 6, 21, 0, 0);
                        TimeSpan interval      = stop - start;
                        int      timefromstart = random.Next((int)interval.TotalMinutes);

                        DateTime signinTime = start.AddMinutes(timefromstart);
                        interval = stop - signinTime;

                        DateTime signoutTime = signinTime.AddMinutes(random.Next((int)interval.TotalMinutes));

                        Console.WriteLine(signinTime);
                        Console.WriteLine(signoutTime);

                        Family fam = gen.RandomFamily();
                        Console.WriteLine(fam.Guardian);

                        break;

                    case "CLEAR":
                        Console.Clear();
                        break;

                    case "EXIT":
                        end = true;
                        break;
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error Occurred");
                    Console.WriteLine(ex.Message);
                    Console.WriteLine("\n" + ex.StackTrace);
                }
            }
        }
コード例 #12
0
        private void Page_Load(object sender, EventArgs e)
        {
            if (this.CurrentMember == null && this.CurrentUser == null)
            {
                if (!string.IsNullOrEmpty(CurrentPage.SignInPage.Url))
                {
                    Response.Redirect(CurrentPage.SignInPage.Url);
                }
                else
                {
                    Response.Redirect("/");
                }
            }

            if (!IsPostBack)
            {
                //update member
                MembershipManager membershipManager = new MembershipManager();
                this.CurrentMember = membershipManager.GetMember(this.CurrentMember.MemberId);
                this.CurrentUser   = membershipManager.GetUser(this.CurrentMember.MemberId, true);

                MyProfileItem context = (MyProfileItem)Sitecore.Context.Item;
                HyperLink     myHL    = (HyperLink)this.FindControl("uxAddChild");
                myHL.Text = context.AddChildText;

                SetLabels();
                SetRole();

                uxChildList.DataSource = this.CurrentMember.Children;
                uxChildList.DataBind();

                //disable new children if you already have 6 or more
                if (this.CurrentMember.Children.Count >= 6)
                {
                    uxAddChild.Visible = false;
                }

                SetInterests();

                uxEmailAddress.Text = txtEmail.Text = this.CurrentUser.UserName;


                SetJourney();

                uxPassword.Text = replacePassword("digitalpulp!");

                string phoneNumber = string.Empty;

                if (!string.IsNullOrEmpty(this.CurrentMember.MobilePhoneNumber))
                {
                    phoneNumber = this.CurrentMember.MobilePhoneNumber.Replace("-", string.Empty).Trim();

                    //if (phoneNumber.Length == 10 && !phoneNumber.Contains("-"))
                    //{
                    phoneNumber = phoneNumber.Insert(3, "-");
                    phoneNumber = phoneNumber.Insert(7, "-");
                    //}
                }
                else
                {
                    //10 points to Gryffindor if you know where this phone number comes from
                    txtPhoneNumber.Attributes["placeholder"] = "212-555-2368";
                }

                uxPhoneNumber.Text  = phoneNumber;
                txtPhoneNumber.Text = phoneNumber;

                uxPrivacyLevel.Text = this.CurrentMember.allowConnections ? DictionaryConstants.OpenToConnect : DictionaryConstants.NotOpenToConnect;

                uxScreenname.Text = this.CurrentMember.ScreenName;

                uxZipcode.Text = this.CurrentMember.ZipCode.Trim();

                uxAddChild.Text        = string.Format(uxAddChild.Text, ((ChildCount)this.CurrentMember.Children.Count).ToString());
                uxAddChild.NavigateUrl = MyProfileStepTwoItem.GetCompleteMyProfileStepTwo().GetUrl() + "?" + Constants.QueryStrings.Registration.Mode + "=" + Constants.QueryStrings.Registration.ModeAdd;

                if (Session["PostReloadScript"] != null)
                {
                    string reloadScript = Session["PostReloadScript"].ToString();

                    if (reloadScript != "")
                    {
                        ltlJS.Text = string.Format("<script type=\"text/javascript\">{0}</script>", reloadScript);
                        Session["PostReloadScript"] = null;
                    }
                }

                //top of edit interests
                hypEditCommunityAboutMe.NavigateUrl = String.Format(MyProfileStepFourItem.GetCompleteMyProfileStepFour().GetUrl() + "?{0}={1}", Constants.QueryStrings.Registration.Mode, Constants.QueryStrings.Registration.ModeEdit);

                //jump to edit community
                hypEditCommunity.NavigateUrl = hypCompleteYourProfile.NavigateUrl = String.Format(MyProfileStepFourItem.GetCompleteMyProfileStepFour().GetUrl() + "?{0}={1}#community", Constants.QueryStrings.Registration.Mode, Constants.QueryStrings.Registration.ModeEdit);

                if (!string.IsNullOrEmpty(this.CurrentMember.ScreenName))
                {
                    hypViewAsVisitors.NavigateUrl = MembershipHelper.GetPublicProfileAsVisitorUrl(CurrentMember.ScreenName);
                    hypViewAsMembers.NavigateUrl  = MembershipHelper.GetPublicProfileAsMemberUrl(CurrentMember.ScreenName);
                    hypViewAsFriends.NavigateUrl  = MembershipHelper.GetPublicProfileUrl(CurrentMember.ScreenName);
                }
                else
                {
                    uxNoProfile.Visible  = true;
                    uxPublicView.Visible = false;
                }
            }
        }
コード例 #13
0
        protected void lbSaveEmailPassword_Click(object sender, EventArgs e)
        {
            var action = false;

            try
            {
                if (!string.IsNullOrEmpty(this.txtEmail.Text))
                {
                    if (Regex.IsMatch(this.txtEmail.Text, Constants.Validators.Email))
                    {
                        //matched regex
                        if (this.UpdateEmail())
                        {
                            action = true;

                            var membershipManager = new MembershipManager();

                            this.CurrentMember = membershipManager.GetMember(this.CurrentMember.MemberId);
                            this.CurrentUser   = membershipManager.GetUser(this.CurrentMember.MemberId, true);
                        }
                        else
                        {
                            throw new Exception(DictionaryConstants.SomethingFailedError);
                        }
                    }
                    else
                    {
                        //did not match regex and not empty
                        throw new Exception(DictionaryConstants.PasswordErrorMessage);
                    }
                }
            }
            catch (Exception ex)
            {
                litEmailPasswordError.Text += ex.Message;
            }

            try
            {
                if (!string.IsNullOrEmpty(this.txtOldPassword.Text) && !string.IsNullOrEmpty(this.txtNewPassword.Text) && !string.IsNullOrEmpty(this.txtConfirmNewPassword.Text))
                {
                    if (this.txtNewPassword.Text == this.txtConfirmNewPassword.Text &&
                        Regex.IsMatch(this.txtNewPassword.Text, Constants.Validators.Password) &&
                        Regex.IsMatch(this.txtOldPassword.Text, Constants.Validators.Password))
                    {
                        if (this.UpdatePassword())
                        {
                            action = true;
                        }
                        else
                        {
                            throw new Exception(DictionaryConstants.SomethingFailedError);
                        }
                    }
                    else
                    {
                        //new passwords don't match
                        throw new Exception(DictionaryConstants.PasswordMatchError);
                    }
                }
            }
            catch (Exception ex)
            {
                litEmailPasswordError.Text += ex.Message;
            }


            if (action)
            {
                Response.Redirect(Request.RawUrl, true);
            }
        }
コード例 #14
0
        public static void Main(string[] args)
        {
            Console.Title = "YMCA Child Watch Manager";
            DateTime now   = DateTime.Now;
            DateTime start = new DateTime(now.Year, now.Month, now.Day, 9, 0, 0);
            DateTime stop  = new DateTime(now.Year, now.Month, now.Day, 22, 0, 0);

            bool end = false;
            YMCADataGenerator   gen          = new YMCADataGenerator();
            SqlConnection       connection   = new SqlConnection(connection_string);
            MembershipManager   membership   = new MembershipManager(connection);
            SignInManager       signIn       = new SignInManager(connection);
            ReportManager       reports      = new ReportManager(connection);
            OrganizationManager organization = new OrganizationManager(connection);

            while (!end)
            {
                Console.Write("YMCA> ");
                string[] options = Console.ReadLine().Split(' ');

                try
                {
                    switch (options[0].ToUpper())
                    {
                    case "LOG":
                        switch (options[1])
                        {
                        case "/m":
                            try
                            {
                                throw new Exception("Test Exception");
                            }
                            catch (Exception ex)
                            {
                                log.Write(ex, "YMCAHelpUtility");
                            }

                            break;
                        }
                        break;

                    // Options on members
                    case "MEMBER":
                        switch (options[1])
                        {
                        case "/s":
                            Member newMember = new Member()
                            {
                                MemberId    = options[2],
                                FirstName   = options[3],
                                LastName    = options[4],
                                Barcode     = options[5],
                                Pin         = options[6],
                                PhoneNumber = options[7],
                                IsActive    = options.Length <= 8 ? true : (options[8] == "0" ? false : true)
                            };
                            bool res = membership.SaveMember(newMember);
                            Console.WriteLine(String.Format("Member save {0}", res ? "successful" : "failed"));
                            break;

                        case "/g":
                            Member found = null;
                            switch (options.Length)
                            {
                            case 3:
                                found = membership.GetMember(options[2]);
                                break;

                            case 4:
                                found = membership.GetMember(options[2], options[3]);
                                break;
                            }
                            if (found != null)
                            {
                                Console.WriteLine("Member Information:");
                                Console.WriteLine(found.ToString());
                            }
                            else
                            {
                                Console.WriteLine("Unable to find member information");
                            }
                            break;
                        }
                        break;

                    // Options on children
                    case "CHILD":
                        switch (options[1])
                        {
                        case "/a":         // Attach child to member
                            bool attached = membership.AttachChild(options[2], int.Parse(options[3]));
                            Console.WriteLine("Child Attached: " + (attached ? "Completed" : "Failed"));
                            break;

                        case "/d":         // Detach child from member
                            bool detached = membership.DetachChild(options[2], int.Parse(options[3]));
                            Console.WriteLine("Child Detached: " + (detached ? "Completed" : "Failed"));
                            break;

                        case "/u":         // Update child
                            bool updated = membership.UpdateChild(new Child()
                            {
                                Id        = int.Parse(options[2]),
                                FirstName = options[3],
                                LastName  = options[4],
                                BirthDate = DateTime.Parse(options[5])
                            });
                            Console.WriteLine("Child Updated: " + (updated ? "Completed" : "Failed"));
                            break;

                        case "/i":         // Insert Child
                            int id = membership.InsertChild(new Child()
                            {
                                FirstName = options[2],
                                LastName  = options[3],
                                BirthDate = DateTime.Parse(options[4]),
                            }, options[5]);
                            if (id >= 1)
                            {
                                Console.WriteLine("Child added with id = " + id.ToString());
                            }
                            else
                            {
                                Console.WriteLine("Child Insert: Failed");
                            }
                            break;

                        case "/g":         // Get Child
                            Child c = membership.GetChild(int.Parse(options[2]));

                            if (c == null)
                            {
                                Console.WriteLine("Child not found");
                            }
                            else
                            {
                                Console.WriteLine("Child Information:\n" + c.ToString());
                            }
                            break;
                        }
                        break;

                    case "CREATEMEMBERS":

                        Console.WriteLine("Member Count: ");
                        int x = int.Parse(Console.ReadLine());
                        Console.WriteLine("Child Count: ");
                        int    y          = int.Parse(Console.ReadLine());
                        Random r          = new Random();
                        int    registered = 0;
                        while (x != 0)
                        {
                            try
                            {
                                List <Child> child = new List <Child>();
                                Member       m     = gen.RandomMember();
                                x--;

                                if (y > 0)
                                {
                                    int childs = Math.Min(r.Next(6), y);

                                    for (int i = 0; i < childs; i++)
                                    {
                                        child.Add(gen.RandomChild(m.LastName));
                                    }

                                    y = y - childs;
                                }

                                Family family = new Family()
                                {
                                    Guardian = m,
                                    Children = child
                                };

                                if (membership.RegisterFamily(family))
                                {
                                    registered++;
                                }
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine(ex.Message);
                            }
                        }
                        Console.WriteLine("Registered " + registered + " members and their children");
                        break;

                    case "REPORT":
                        switch (options[1])
                        {
                        case "/m":
                            var member_report = reports.GetMemberReport(true);
                            Console.WriteLine(member_report.Rows.Count);
                            break;

                        case "/i":
                            var interval_report = reports.GetIntervalReport(60, start, stop, 1);
                            if (interval_report.Rows.Count > 0)
                            {
                                Console.WriteLine("REPORT DATA\n=================================================");
                            }
                            foreach (DataRow i in interval_report.Rows)
                            {
                                DateTime time = (DateTime)i["time"];
                                Console.WriteLine((time.ToShortTimeString() + "   " + time.AddMinutes((int)i["interval"]).ToShortTimeString() + "    " + ((int)i["count"]).ToString()));
                            }
                            if (interval_report.Rows.Count > 0)
                            {
                                Console.WriteLine("============================================================\nEND DATA");
                            }
                            break;
                        }

                        break;

                    case "CREATESIGNIN":
                        Console.WriteLine("Enter number of families");
                        int      families = int.Parse(Console.ReadLine());
                        int      written  = 0;
                        Signin[] signins  = new Signin[families];

                        for (int z = 0; z < families; z++)
                        {
                            try
                            {
                                Random random = new Random();

                                Family fam = gen.RandomFamily(reports);

                                Location[] list  = organization.GetLocations();
                                int        count = 0;
                                try
                                {
                                    count = random.Next(1, fam.Children.Count - 1);
                                }
                                catch { count = 1; };

                                List <Assignment> assignments = new List <Assignment>();
                                for (int i = 0; i < count; i++)
                                {
                                    Child      c          = fam.Children[random.Next(fam.Children.Count)];
                                    Assignment assignment = new Assignment()
                                    {
                                        Child    = c.Id,
                                        Location = list[random.Next(list.Length)].Id
                                    };
                                    assignments.Add(assignment);
                                }
                                Signin current = signIn.SignIn(fam.Guardian.MemberId, assignments.ToArray());
                                signins[written] = current;
                                if (current.Band > 0 && !signIn.SignOut(current.Band))
                                {
                                    throw new Exception("Failed sign out or sign in for member " + fam.Guardian.MemberId);
                                }
                                written++;

                                Console.WriteLine(written + ")" + fam.Guardian.MemberId);
                            }
                            catch (Exception ex)
                            {
                                File.AppendAllText("ErrorReport.txt", ex.ToString());
                            }
                        }
                        Console.WriteLine("Families written: " + written);


                        using (SqlConnection connect = new SqlConnection(connection_string))
                        {
                            connect.Open();

                            Random rnd    = new Random();
                            int    failed = 0;
                            for (int i = 0; i < signins.Length; i++)
                            {
                                try
                                {
                                    if (signins[i] != null)
                                    {
                                        DateTime signinTime  = gen.RandomTimeBetween(start, stop);
                                        DateTime signoutTime = gen.RandomTimeBetween(signinTime, stop);


                                        using (SqlCommand command = new SqlCommand("p_signin_modify", connect))
                                        {
                                            command.CommandType = System.Data.CommandType.StoredProcedure;
                                            command.Parameters.AddWithValue("@out", signoutTime);
                                            command.Parameters.AddWithValue("@in", signinTime);
                                            command.Parameters.AddWithValue("@id", signins[i].Id);
                                            command.ExecuteNonQuery();
                                        }
                                    }
                                }
                                catch (Exception ex)
                                {
                                    failed++;
                                    Console.WriteLine("Exception: " + ex.Message);
                                }
                            }
                            Console.WriteLine("Failed Update Count: " + failed);
                            connect.Close();
                        }
                        break;

                    case "CLEAR":
                        Console.Clear();
                        break;

                    case "EXIT":
                        end = true;
                        break;
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error Occurred");
                    Console.WriteLine(ex.Message);
                    Console.WriteLine("\n" + ex.StackTrace);
                }
            }
        }