UNI - Sales Portal iPad iOS Swift Account Creation prototype - realworldswift

Register
Submit a solution
The challenge is finished.

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!

Setup

In order to obtain the code source to modify for this challenge, you will need to be added to the UNI-Mobile github repository. Make a request for access in the forums.

This contest will not require you to do any direct work with the Salesforce Mobile SDK, but it is a required element of the overall application. As such you will need to be able to login to Salesforce the first time you run the application in order to access the other components of the application. The credentials are as follows:

 

Again, you will not be required to utilize the Salesforce Mobile SDK for any of the customization you are doing in this challenge. But the application leverages it, so logging in is essential.

 

Contest Requirements

For this contest you will be creating a form for creating Accounts within the application. The Design is built as a Full Screen modal window, with a cancel and a submit button on a footer bar. Please match the design included with the following requirements met:

  • Form elements must be configurable/reusable for the following types

    • Text Input

    • Phone Number Input

      • Should automatically format the phone number as it’s input.

    • Picklist Input

      • Does not use the standard Picker View Control

      • Display a popover from a dropdown button in a similar style to the existing FilterViewController from the Seller Home Page

    • Date Select

      • Standard Date Picker view should display, starting with the previously input date if applicable.

    • Numeric Input

    • Currency Input (Default USD, allow configuration for other currencies)

  • Form elements must be able to be designated as required

    • Required fields should display a red * indicating their required status.

    • When not filled in upon submission, form validation should cause these fields to have a red border.

  • Form elements should be able to desginated as having help text

    • Example : CED 1 and CED 2 from the design mockup.

    • When a field has this designation display a red help circle with a white question mark to the right of this field.

      • If field would stretch beyond the bounds of its containing view, shrink the input field to display this circle.

      • On tap of this circle display a UIPopoverView with the indicated Help text.

      • Provide a mechanism for formatting portions of this text.

      • Example in “4-create-account-tooltip.png” in “Create Account Screens & Source.zip” (please see forum posts for attachment)

  • “X” or Cancel will make the form slide back out of view (nothing saved)

  • Submit button will either:

    • Display an error message to the left of the submit button if form required element validations aren’t met.

      • E.G. “Please complete required fields.”

    • Display a UIActivityIndicator for 2 seconds, and then clear all fields from the form, display “Account succesfully created.” next to the Submit button for 3 seconds before automatically closing the Modal Window.

The Form itself should be 2 sections with the following fields:

 

GENERAL INFORMATION

  • Account Name

    • Required = Yes

    • Type = Text Input

  • Account Alias

    • Required = No

    • Type = Text Input

  • Phone

    • Required = No

    • Type = Phone Number Input

  • Street Address

    • Required = No

    • Type = Text Input

  • City

    • Required = No

    • Type = Text Input

  • State

    • Required = No

    • Type = Picklist

      • All 50 State Abbreviations

  • Country

    • Required = No

    • Type = Picklist

      • For prototype provide list of UN Recognized countries

      • Truncate the selected option to fit the suggested picklist dimensions in the form.

  • Postal Code

    • Required = No

    • Type = Numeric Input

  • Sales Stage

    • Required = No

    • Type = Picklist

      • Approach

      • Discovery

      • Install Prep

      • Present / Close

  • Est. Cash Value

    • Required = No

    • Type = Currency Input

  • # of Wearers

    • Required = No

    • Type = Numeric Input

 

COMPETITIVE INFORMATION

  • Program Type

    • Required = Yes

    • Type = Picklist

      • Acme Type 1

      • Acme Type 2

      • Acme Type 3

      • Acme Type 20

  • Other

    • Required = No

    • Type = Picklist

      • Acme Type 1

      • Acme Type 2

      • Acme Type 3

      • Acme Type 20

  • Other Incumbent Name

    • Required = No

    • Type = Text Input

  • CED 1

    • Required = No

    • Help Text = “What is the contract expiration date for Incumbent Rental 1?”

    • Type = Date Select

  • Incumbent Rental 2

    • Required = No

    • Type = Picklist

      • Acme Type 1

      • Acme Type 2

      • Acme Type 3

      • Acme Type 20

  • CED 2

    • Required = No

    • Help Text = “What is the contract expiration date for Incumbent Rental 1?”

    • Type = Date Select

  • Incumbent DP

    • Required = No

    • Type = Text Input

General Guidelines

This is an iOS Swift Challenge, as such the design implementation should be done with the latest version of XCode and the latest standards for iOS Development.

Interface items should be built in Interface Builder. Elements within the interface should be positioned and sized using standard UIConstraints. Wherever possible, elements should be customized within interface builder, with little­to­no interface customization done programmatically. If there is no other possible way to achieve the aesthetic as presented in our design PDF, or if there would be significant performance detriment by not customizing via code, programmatic customization is acceptable.

The views within ViewControllers should be created with their own XIB files. Elements within the design (such as the sidebar) should be built with re­use in mind.
With multi­language support being an eventual goal of this project, please populate static labels from the Settings.bundle > en.lproj > Root.strings file. When you create a static label, make sure to add it to this file.

Please make sure any colors used match the brand value in "G k brand hex values.png"

For this challenge if you would like to pull in third party form generation frameworks, that is allowable in order to satisfy any requirements asking for ease of configuration or reusability. If you do incorporate 3rd party frameworks for the construction of these forms, please ensure that these frameworks are Open Source software, and are available with an MIT or similar distribution License. Code submissions that use 3rd party frameworks will be judged based on the ease of use and extensibility of those frameworks.  

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.1 and tested in the simulator.

Framework: Code should be developed with the Cocoa Touch framework using Swift and must compile against iOS SDK 8.0 with a deployment target of iOS 7.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/homepage-assembly-challenge

- Write and submit your code as a zip file

 


Final Submission Guidelines

Submission Guidelines

 

- Cocoa Touch framework Xcode 6.1 project with well commented code

- Code must compile against iOS SDK 8.0 with a deployment target of iOS 7.0

- Upload all source projects as a zip

- Provide deployment guide documentation 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.

 

ELIGIBLE EVENTS:

2015 topcoder Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30046882