Challenge Overview

Challenge Overview

You are provided with a simple ASP.NET MVC Application, and you will implement importing contacts from contact service providers (Gmail, Facebook, and Twitter), sending invitations, and simplify registration for invited users.

Challenge Requirement
You will address the following in this challenge :

  • When user logs in to the website, they will be redirected to a landing page displaying a panel to allow user to import contacts from three services (Google, Facebook, and Twitter) :

  • The logic when clicking “Import” button :

    • Redirect user to the service provider authorization page to obtain access to user profile with a callback url set to this application backend to process the authorization.

    • When user approves the authorization, connect the social network account with user profile :

      • You need to update database to persist access token, refresh token, and account id of the user.

      • You are provided with Facebook Login .NET Submission we built in a recent challenge, you can study how authorization works, and reuse the same approach in this challenge.

    • After handling the authorization callback

      • retrieve user contacts from corresponding social network.

        • If a contact already exists in User table then omit it from list of contacts and insert a record in ExistingFriends table.

          • Since we are persisting the social network account id you will need to use it or the email to search if an imported contact already exists in the system.

        • Store the imported contacts in a new table Invite by creating new entry for each user.

          • You can find the logic of auto-creating new user from Facebook in the provided “Facebook Login .NET” submission.

          • The table should persist all information that is helpful for register form (first name, last name, email, .. etc)

      • display them in a scrollable div in a new page that renders all imported contacts with following information for each imported contact :

        • picture

        • name/email

        • checkbox

      • The page should have three buttons :

        • Select All - allows selecting all users

        • Unselect All - allows unselecting all users

        • Send invite - this will be enabled when at least one user is selected.

      • The page will also have a message box text area at the top of the table with default message to be included when sending email to the user.

      • When clicking ‘send invite’ it will send email to all selected users.

        • For twitter case, twitter api won’t return user emails, so we will send direct messages to the user.

      • When sending invitation is done, display success page to the user. If error occurred, also a proper page should be displayed.

    • When user receives an invitation email :

      • User clicks on the link and will be redirected to register page.

      • The register page will check if invite and id query strings are provided, if yes, then read the user information from Invite table and populate the register form.

      • User will fill remaining fields (i.e. password), and complete registration.

      • Update Invite record status to indicate user registered.

  • It’s up to you to select any available (open source) SDKs interaction with the social networks :

  • Update the User table and corresponding models to store relevant social network account data.

  • The social network (facebook/twitter/google) app should only access user email, contacts and public profile information.

  • The Social network app API keys should be configurable in the application configuration.

  • The new pages to be added should use same base layout page/structure. Try as much as possible to reuse existing styles.

  • Update NuGet if you are adding new binaries to the solution.

  • We are introducing two tables in this challenge :

    • ‘Invite’ table to record the imported contacts.

      • The table should persist all information that is helpful for register form (first name, last name, email, .. etc)

    • ‘ExistingFriends’ table to record association between existing users.

      • This will persist the user ids, and auditing fields.

Documents

A visual studio solution for the web application is provided in the challenge forums.



Final Submission Guidelines

Deliverables

  • The new and updated files that address the above solution.

  • Detailed deployment guide for how to setup and verify your solution.

ELIGIBLE EVENTS:

2015 topcoder Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30049245