public Address CreateAddress(Address address)
 {
     return addrRepo.CreateAddress(address);
 }
        private void AddNewUser()
        {
            var user = new User
            {
                FirstName = txtFName.Text,
                LastName = txtLName.Text,
                Email = txtEmail.Text,
                Addresses = new List<Address>()
            };

            // create user
            user = svcAdddress.CreateUser(user);

            // add tags
            user.Tags = SetTags(txtUserTags.Text, user.Id);

            // add addresses


            // since i'm lacking proper validation for this sample, 
            // only create where there is a street/city/state/zip (thus making them required)
            if (txtStreet1.Text != String.Empty && txtCity.Text != String.Empty & ddlState.SelectedValue != "null")
            {
                // add the address
                var addr = new Address
                {
                    Street1 = txtStreet1.Text,
                    Street2 = txtStreet2.Text,
                    City = txtCity.Text,
                    State = ddlState.SelectedValue,
                    Zip = txtZip.Text,
                    Type = ddlType.SelectedValue,
                    UserId = user.Id
                };

                user.Addresses.Add(addr);

                // add the address
                addr = svcAdddress.CreateAddress(addr);

                // set any address tags
                addr.Tags = SetTags(txtTags.Text, addr.Id);
                
            }

            if (txtStreet1_2.Text != String.Empty && txtCity_2.Text != String.Empty & ddlState_2.SelectedValue != "null")
            {
                // add the address
                var addr = new Address
                {
                    Street1 = txtStreet1_2.Text,
                    Street2 = txtStreet2_2.Text,
                    City = txtCity_2.Text,
                    State = ddlState_2.SelectedValue,
                    Zip = txtZip_2.Text,
                    Type = ddlType_2.SelectedValue,
                    UserId = user.Id
                };

                user.Addresses.Add(addr);



                addr.Tags = SetTags(txtTags_2.Text, addr.Id);
            }


            // any addresses here?
            //foreach(var control in FindControl("0"))
            //ucHolder.Controls)
            //{
            // since i'm lacking proper validation for this sample, 
            // only create where there is a street/city/state/zip (thus making them required)
            //     Control myControl1 = FindControl("TextBox2"); 
            // }


            //var textBox = ((TextBox)((UserControl)ucHolder.FindControl("ASP.usercontrols_ucaddress_ascx")).FindControl("txtStreet1"));
            //var streetVal = textBox.Text;

            svcAdddress.UpdateUser(user);

        }
        private void EditUser()
        {
            var user = (User)Session["editUser"];

            user.FirstName = txtFName.Text;
            user.LastName = txtLName.Text;
            user.Email = txtEmail.Text;

            // just overwrite the tags...
            if (txtUserTags.Text != String.Empty)
            {
                var tags = txtUserTags.Text.Split(' ');
                IList<Tag> newTags = tags.Select(tag => new Tag { Name = tag }).ToList();
                user.Tags = newTags;
            }

            user.Tags = SetTags(txtUserTags.Text, user.Id);

            // delete addresses from the user and readd if the delete cck == true
            //var udpatedUser = svcAdddress.UpdateUser(user);
            
            // add any addresses
            // since i'm lacking proper validation for this sample, 
            // only create where there is a street/city/state/zip (thus making them required)
            if (txtStreet1.Text != String.Empty && txtCity.Text != String.Empty & ddlState.SelectedValue != "null")
            {
                if(!chkDeleteAddr1.Checked)
                {
                    // add the address
                    var addr = new Address
                    {
                        Street1 = txtStreet1.Text,
                        Street2 = txtStreet2.Text,
                        City = txtCity.Text,
                        State = ddlState.SelectedValue,
                        Zip = txtZip.Text,
                        Type = ddlType.SelectedValue,
                        UserId = user.Id
                    };

                    user.Addresses.Add(addr);

                    addr.Tags = SetTags(txtTags.Text, addr.Id);
                }
            }

            if (txtStreet1_2.Text != String.Empty && txtCity_2.Text != String.Empty & ddlState_2.SelectedValue != "null")
            {
                if (!chkDeleteAddr2.Checked)
                {
                    // add the address
                    var addr = new Address
                                   {
                                       Street1 = txtStreet1_2.Text,
                                       Street2 = txtStreet2_2.Text,
                                       City = txtCity_2.Text,
                                       State = ddlState_2.SelectedValue,
                                       Zip = txtZip_2.Text,
                                       Type = ddlType_2.SelectedValue,
                                       UserId = user.Id
                                   };

                    user.Addresses.Add(addr);

                    addr.Tags = SetTags(txtTags_2.Text, addr.Id);
                }
            }

            var test = svcAdddress.UpdateUser(user);


            var allUsers = svcAdddress.GetAllUsers();
            Session["gridUsers"] = allUsers;
            //Default de = new Default();
            //de.FillGrid();
        }
 // to data objects
 public static AddressData ToData(Address addr)
 {
     return new AddressData
     {
         Tags = Tag.ToData(addr.Tags),
         City = addr.City,
         Favorite = addr.Favorite,
         Id = addr.Id,
         Street1 = addr.Street1,
         Street2 = addr.Street2,
         State = addr.State,
         Type = addr.Type,
         UserId = addr.UserId,
         Zip = addr.Zip
     };
 }
 public User CreateAddress(User user, Address address)
 {
     var createdAddr = addressRepo.CreateAddress(address);
     user.Addresses.Add(createdAddr);
     return user;
 }
 public Address UpdateAddress(Address obj)
 {
     return Address.SetEntity(addrDataRepo.Update(Address.ToData(obj)));
 }
        public void RemoveAsFavorite(Address obj)
        {
            obj.Favorite = false;

            addrDataRepo.RemoveAsFavorite(Address.ToData(obj));
        }
 public void MarkAsFavorite(Address obj)
 {
     obj.Favorite = true;
     addrDataRepo.MarkAsFavorite(Address.ToData(obj));
 }
 public Address CreateAddress(Address obj)
 {
     return Address.SetEntity(addrDataRepo.Add(Address.ToData(obj)));
 }
        public void service_can_update_address_collection()
        {
            svc = new AddressBookService(svcRepo, addrRepo);
            var user = svc.CreateUser(testUser);

            var tagSimulate = "flyers cup";

            var addr = new Address
            {
                Street1 = "100 Test Street",
                Street2 = "10th Fl",
                City = "Phila",
                State = "PA",
                Zip = "19147",
                Type = "Governmental"
            };

            if (tagSimulate != String.Empty)
            {
                var tags = tagSimulate.Split(' ');
                IList<Tag> newTags = tags.Select(tag => new Tag { Name = tag }).ToList();
                addr.Tags = newTags;
            }

            user.Addresses.Add(addr);

            var created = svc.UpdateUser(user);

            Assert.IsTrue(created.Addresses.Count > 0);

            var oldVal = created.Addresses[0].City;

            Assert.AreEqual("Phila", oldVal);

            created.Addresses[0].City = "Philly";
            var updated = svc.UpdateUser(created);

            Assert.AreEqual("Philly", updated.Addresses[0].City);
            Assert.AreNotEqual(oldVal, updated.Addresses[0].City);
        }