public void InviteUser(BasicUser invitedBy, string comments, FriendProvider friendProvider, IBasicUser contact, bool includeInvitationCode)
        {
            List <IBasicUser> lst = new List <IBasicUser>(1);

            lst.Add(contact);
            InviteUsers(invitedBy, comments, friendProvider, lst, includeInvitationCode);
        }
Example #2
0
        public Friend Create(string email, string firstName, string lastName, FriendProvider friendProvider)
        {
            // Validate if the user exists.
            IDictionary <string, object> propertyValues = new Dictionary <string, object>();

            propertyValues.Add("EmailAddress", email);
            BasicUser bu = basicUserRepository.FindOne(propertyValues);

            Friend f = new Friend();

            if (bu != null)
            {
                f.User = bu;
            }
            else
            {
                // If not, create as an invitation
                InvitedUser invited = new InvitedUser();
                invited.EmailAddress = email;
                invited.FirstName    = firstName;
                invited.LastName     = lastName;

                f.User = invited;
            }

            // Set Provider
            f.FriendProvider = friendProvider;
            return(f);
        }
Example #3
0
        public ActionResult Index(ContactView contactData)
        {
            if (ModelState.IsValid)
            {
                this.viewData   = contactData;
                contactProvider = ProviderFactory.GetProvider(contactData.Provider);

                bool       all    = contactData.SelectedAll;
                List <int> indexs = new List <int>();

                if (!string.IsNullOrEmpty(contactData.SelectedIndexes))
                {
                    string[] selected = contactData.SelectedIndexes.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                    foreach (string index in selected)
                    {
                        indexs.Add(Convert.ToInt32(index));
                    }
                }

                if (!all && indexs.Count == 0)
                {
                    ModelState.AddModelError("Comments", "Please select at least one contact to invite.");
                }
                else
                {
                    IList <IContact> selectedContacts = new List <IContact>();
                    if (Session["Contacts_" + contactData.Provider] != null)
                    {
                        selectedContacts = GetContacts((IList <IContact>)Session["Contacts_" + contactData.Provider], new ContactProvider.Selection(all, indexs));
                    }
                    else
                    {
                        selectedContacts = contactProvider.GetContacts(new ContactProvider.Selection(all, indexs));
                    }

                    FriendProvider fp = friendProviderRepository.GetByName(contactProvider.Name);

                    try
                    {
                        inviteContactsService.InviteUsers(this.ProxyLoggedUser, contactData.Comments, fp, TransformContacts(selectedContacts), Convert.ToBoolean(ConfigurationManager.AppSettings["IsInBeta"]));
                        Session.Remove("Contacts_" + contactData.Provider);
                        Session["NewFriendsAdded"] = true;
                        return(RedirectToAction("Index", "Friend"));
                    }
                    catch (LimitOfFriendsExceededException ex)
                    {
                        ModelState.AddModelError("Comments", ex.Message);
                    }
                }
            }

            LoadViewData(contactData.Provider);

            return(View("Index", viewData));
        }
Example #4
0
        public void LoadViewData(string providerCode)
        {
            contactProvider = ProviderFactory.GetProvider(providerCode);
            int totalCount = 0;

            // Find all friends
            IDictionary <string, object> propertyValues = new Dictionary <string, object>();

            propertyValues.Add("BasicUser", this.ProxyLoggedUser);
            IList <Friend> currentFriends = friendRepository.FindAll(propertyValues);

            IList <IContact> finalContacts = null;

            if (Session["Contacts_" + providerCode] == null)
            {
                IList <IContact> contacts = contactProvider.GetContacts(0, 0, out totalCount);

                // Make sure the user is not a friend already
                finalContacts = (from c in contacts
                                 where !(from f in currentFriends select f.User.EmailAddress).Contains(c.Email.ToLower())
                                 select c).ToList <IContact>();

                Session["Contacts_" + providerCode] = finalContacts;
            }
            else
            {
                finalContacts = (IList <IContact>)Session["Contacts_" + providerCode];
                totalCount    = finalContacts.Count;
            }
            propertyValues = new Dictionary <string, object>();
            propertyValues.Add("BasicUser", this.ProxyLoggedUser);

            viewData.Contacts   = finalContacts;
            viewData.Provider   = providerCode;
            viewData.TotalCount = totalCount;

            FriendProvider friendProvider = friendProviderRepository.GetByName(contactProvider.Name);

            viewData.ProviderImg  = friendProvider.ImageUri;
            viewData.ProviderName = friendProvider.Name;
        }
        public void InviteUsers(BasicUser invitedBy, string comments, FriendProvider friendProvider, IList <IBasicUser> contacts, bool includeInvitationCode)
        {
            // Make sure we get the complete user.
            BasicUser user = basicUserRepository.Get(invitedBy.Id);

            // If we are including the invitation code is because we are in Beta, no more than 10 invites per user.
#if !DEBUG
            if (includeInvitationCode)
            {
                if (user.Friends.Count + contacts.Count >= MAX_TO_INVITE)
                {
                    if (MAX_TO_INVITE - user.Friends.Count > 0)
                    {
                        throw new LimitOfFriendsExceededException(string.Format("You can add up to {0} more friends in the Beta period.", MAX_TO_INVITE - user.Friends.Count));
                    }
                    else
                    {
                        throw new LimitOfFriendsExceededException(string.Format("You have reached the {0} contacts limit in the Beta period.", MAX_TO_INVITE));
                    }
                }
            }
#endif

            basicUserRepository.DbContext.BeginTransaction();
            foreach (IBasicUser contact in contacts)
            {
                if (contact.EmailAddress.Trim() == string.Empty || user.EmailAddress.Trim().ToLower() == contact.EmailAddress.Trim().ToLower())
                {
                    continue;
                }

                // Call the Friend Creator service
                Friend f = friendCreatorService.Create(contact.EmailAddress.Trim().ToLower(), contact.FirstName, contact.LastName, friendProvider);

                // Make sure it does not have it as a friend to send the email.
                if (!user.HasFriend(f))
                {
                    // Save the Friend into the user collection
                    f.BasicUser = user;
                    user.AddFriend(f);
                }

                // TODO: Review how to get the Url from the controller
                string     confirmUrl = string.Format("/Friend/InvitedMe/default.aspx");
                InviteData inviteData = new InviteData {
                    Friend = f, AcceptUrl = confirmUrl, InvitationCode = Guid.NewGuid().ToString()
                };

                if (f.User is InvitedUser)
                {
                    if (includeInvitationCode)
                    {
                        // Create an invitation code
                        InvitationCode ic = new InvitationCode();
                        ic.EmailAddress = f.User.EmailAddress;
                        ic.Code         = inviteData.InvitationCode;
                        ic.InvitedBy    = f.BasicUser;
                        invitationCodeRepository.SaveOrUpdate(ic);

                        messageSenderService.SendWithTemplate("invitation_with_code", user, inviteData, f.User.EmailAddress);
                    }
                    else
                    {
                        messageSenderService.SendWithTemplate("invitation", user, f, f.User.EmailAddress);
                    }
                }
                else
                {
                    messageSenderService.SendWithTemplate("acceptinvite", user, inviteData, f.User.EmailAddress);
                }
            }

            basicUserRepository.SaveOrUpdate(user);
            basicUserRepository.DbContext.CommitTransaction();
        }
Example #6
0
 public FriendsViewModel(FriendCategory category)
 {
     FriendsGrouped = FriendProvider.GetFriends(TokenProvider.GetToken(), category.Type, Global.ZipCode, Global.Distance);
 }
 public FriendsViewModel(FriendCategory category)
 {
     FriendsGrouped = FriendProvider.GetFriends(TokenProvider.GetToken(), category.Type, 98052, 5);
 }