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); }
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); }
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)); }
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(); }
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); }