Challenge Overview
Project Overview
Our partner is developing a state-of-the-art tablet based sales and order processing tool. Their sales team will be managing client visits, tasks, calendars, notifications, and order processing all through this tool. The platform is the Apple iPad. Want to learn Swift? Great - why not get paid for it, we need your help! There will be a long series of challenges over the coming weeks leading to the final product, so get involved now!
Challenge Summary
The purpose of this challenge is to extend our existing Swift application to polish existing features and expand functionality. Specifically this will involve some changes to the Next Steps screen, the Shared Opportunities screen, and some design elements used throughout the application. See details below:
Login User Retrieval Change
-
UsersToLoginDataSource.swift
-
getUsers
-
Should change to call GET ‘/SubordinateUsers’ REST request.
-
Expect this data output:
-
-
{
"manager" : {
"id" : "123413241234123412",
"name" : "Joe Manager"
},
"subOrdinateUsers": [
{
"id" : "1234567adsdf"
"name" : "Joe Schmoe"
}, ...
]
}
-
Store Manager Name and ID in a globally accessible way
-
Modify Picklists throughout the app that have “Myself” and “Manager” as the options to use Manager Name as the display for “Manager” and associate that ID when selected.
-
-
Store the “subOrdinateUsers” as we currently store the UsersToLogin retrieved now.
-
User should be able to select them as options for Logging In As
-
User should be able to select them as options for Evaluation Forms.
-
-
If user has any Subordinate Users returned, they should be treated as a Manager, and taken to the Manager home screen.
Opportunity Re-Assignment Panel
Modify the Shared Opportunity Panel to have the following columns (these differ from the mockup):
-
Company (Sortable on Account.Name)
-
Amount (Sortable)
-
Close Date (Sortable)
-
Action
-
On Manager, this column should be named “Assign To”
-
Similarly modify the SharedOpportunityCell for manager and seller
-
Collapsed View
-
Company
-
Should display Account.Name text
-
Should be a button that takes user to AccountScreen for AccountId
-
-
Amount
-
Close Date
-
Action (Seller Only)
-
Same as leads. Picklist of configured actions.
-
-
Re-Assign (Manager Only)
-
Autocomplete Field for Users
-
Enable standard autocomplete functionality
-
If user dismisses the Autocomplete options without selecting one, empty the field.
-
When selected, enable the Assign Button
-
-
-
Done/Assign Button
-
-
Expanded View
-
Column 1
-
Opportunity Name
-
Should display Name
-
Should be button that takes user to AccountScreen for AccountId, and auto open Opportunities panel to Id
-
-
Type
-
-
Column 2
-
Stage
-
-
Colum 3
-
Probability
-
-
Configure the new Actions:
-
Pass to Manager
-
Should function as it currently does for leads, but for the opportunity.
-
-
Accept
-
When selected, make a POST Request to “/2.0/Notifications/Leads”
-
Pass ‘accept’ as the action.
-
Populate Opportunity.Id as the ID of the “lead” object.
-
-
-
Re-Assign
-
Called when Manager user presses the “Assign” button
-
Make a POST Request to “/2.0/Notifications/Leads”
-
Pass ‘re-assign’ as the action.
-
Populate Opportunity.Id as the ID of the ‘lead’ object.
-
Set the selected UserId in the Re-Assign field as the ‘OwnerId’ of the ‘lead’ object.
-
-
Next Steps Opportunity Panel
Please make modifications such that the Opportunity Form appears as it does in the mockup without modifying the existing forms elsewhere through the app.
-
Should have these fields displayed:
-
Column 1
-
Account Name – Auto-fill the current Account Name - Not Editable
-
Stage - Default to Discover
-
Probability% - Default to 25%
-
Close Date - Default to current day + 45 days
-
Amount – default to 0
-
-
Column 2
-
Type
-
Primary Competitor - Stop filtering “other” from being an option here.
-
Other Competitor - Required if Primary Competitor is “Other”
-
Close Reason - Required if Stage is Close-Won or Close-Lost
-
Primary Customer Factor - Required if Stage is Close-Won
-
Install Date – Required if Stage is Close-Won
-
Owner
-
Follow same as existing form. Picklist for Seller, Autocomplete for Manager
-
-
-
Two Column
-
Comments: Text field to add the Opportunity Name and Address
-
-
The Opportunity Form should display and be required if the following conditions are met:
-
The Account has no existing Open Opportunities (Opportunities with Close Date in the future) AND one of the following:
-
Account.Sales_Stage__c is “Approach”
-
What Did You Do Panel Selected Option:
-
Presentation
-
Close - WON
-
Close - LOST
-
-
What’s Next Panel Meeting Subject Selected:
-
Presentation Meeting
-
Close Meeting
-
-
-
Account.Sales_Stage__c is “Discovery”
-
What Did You Do Panel Selected Option:
-
Presentation
-
Close - WON
-
Close - LOST
-
-
What’s Next Panel Meeting Subject Selected:
-
Presentation Meeting
-
Close Meeting
-
-
-
Account.Sales_Stage__c is “Present / Close”
-
What Did You Do Panel Selected Option:
-
Close - WON
-
Close - LOST
-
-
What’s Next Panel Meeting Subject Selected:
-
Close Meeting
-
-
-
If user is on the What’s Next Panel, and chooses an option that would cause Opportunity to be required, make the What Did You Do Panel accordion header pulse slowly to red and back until user has expanded that panel.
If user’s Opportunity Form does not validate, and is required, halt submission of the Next Steps Panel.
If Opportunity is required, obtain the object from the Opportunity Form and add it to the JSON uploaded to the NextStepsService as “Opportunity” and the relevant fields.
Environment Setup
GIT: The project will use a code repository at Github, please see additional details and participant responsibilities under Submission Guidelines.
Xcode: All code development should be done in Xcode 6.2 and tested in the simulator.
Framework: Code should be developed with the Cocoa Touch framework using Swift and must compile against iOS SDK 8.2 with a deployment target of iOS 8.0.
Get Started
- Request access to the project in the challenge forums
- Fork this project: git@github.com:cloudspokes/UNI-mobile.git
- Checkout this branch: https://github.com/cloudspokes/UNI-mobile/tree/uni-r2-3
- Write and submit your code as a zip file
Credentials for the application will be provided in the forums.
** Note: You need to set the login location to "Sandbox" in the iPad (or simulator settings). This is under regular IOS settings (in the Compass app section).
Final Submission Guidelines
Submission Guidelines
- Cocoa Touch framework Xcode 6.2 project with well commented code
- Code must compile against iOS SDK 8.2 with a deployment target of iOS 8.0
- Upload all source projects as a zip
- After submission phase has completed, make a pull request targeting the 'uni-r2-3' branch.
- Provide documentation of any special configuration required to run your code.
GIT Guidelines and Requirements
All code for this project will be maintained at Github. Challenge participants will have to request read-only access to the repository during the challenge and are expected to fork and do their coding on the challenge branch. Once contest submission closes, the project owner will update the code in the challenge branch to reflect the current state of development. The winner of the challenge will then be required to update their fork to the current state of the development repository and will be responsible for handling merge conflicts when updating their fork. They will then create a pull request.