Tuesday, December 3, 2013

The Rules

1.  Don't make the call until you know what you want.  

2.  Dating is a mix of romance, beauty, and negotiation.  Successful dating is getting the right combination of all three.

3.  If she's not beautiful I can't date her.  I prize beauty.  I prize friendship.  Mix the two and you get love.




Tuesday, November 19, 2013

Magic

Today I was complaining about reading an Android textbook.  Then as I realized it I realized that I was becoming more powerful.  I realized what I was reading was magic and that every page I read taught me how to do something, how to leverage technology in order to connect the world, how to shape the world in a way I see fit, in a way that move mankind forward.

I'm becoming more powerful with every page I read.  It's magic.  It allows me to do things other people can't and to touch the world globally.  I'm excited and empowered.

11/21/2013

I'm so excited by what I'm doing.  I'm almost done.  I'm almost completely done with this iPhone app.  I can see the end in sight and I'm really excited about it.

I've been working on it pretty hard and I can't wait until all is said and done.  I've got to work on the fax piece shortly but by and large it's almost finished.  Now I'm moving into some cooler parts like building the credit card processing back end and the fax piece.  I'm just moving at lightening speed and it feels really good to see the finish line in sight.  I'm starting to just work on bells and whistles but most of the stuff (I cringe to say) I've pretty much done before.  I have some pieces that still look like a little bit of a technical challenge but I think I can pretty safely say I'm pretty confident I can work my way through them at a reasonably rapid pace.  I think I can say I'm starting to just get nice.  

Not that much work left to do.  Then it's onto the website which I'm pretty confident I can just whip out.  I've got a lot of the code base pretty much done there.  Then I've got to order the graphics and just continue working.  Who knows?  Maybe by the end of the year I can have two websites up.  

I don't really care about the number of websites though.  What I do care about is that the site I have is really good and is really a real business.  Matter of fact I really don't want two sites.  I want one that works really well that has real traction that is moving along nicely.  I just want to continue what I'm doing and do it incredibly well.

Bad ass.  Bad ass.  Bad ass.  Bad ass.  Bad ass.  Did I mention really freaking cool?

All right.  I'm excited but I'd also better go to bed.  I'm almost tempted to build one view controller right now but that might be a bit of over kill.  Yup.  It's overkill.  Okay.  The News Hour and then bed.  

Tuesday, November 12, 2013

RTF::Writer Helpful Sites

http://search.cpan.org/perldoc?The_RTF_Cookbook

http://search.cpan.org/~sburke/RTF-Writer-1.11/lib/RTF/Writer.pod

Cool.

Monday, November 11, 2013

Easy Alert View Method

-(void) sendAlert:(NSString *)titleString setAlertMessage:(NSString*)messageString
{
    
    
    UIAlertView* alert = [[UIAlertView alloc]
                          initWithTitle:titleString
                          message:messageString
                          delegate:nil cancelButtonTitle:@"OK"
                          otherButtonTitles:nil];
    
    [alert show];
    
    alert = nil;
    
    
    
    
}

Friday, November 8, 2013

Easy Methods to Retrieve RESTful Data in Objective-C

-(NSMutableArray*) getItemsArray:(NSDictionary *)itemsDictionary
{

   // FOR METHODS NOT NATIVE TO OBJECTIVE-C SEE MY METHODS AS I USE THEM HERE: 
   // IE, convertToString (etc.)
    NSString* numberOfItems = [itemsDictionary objectForKey: @"numberOfDetails"];
int intNumberOfItems = [numberOfItems intValue];
NSNumber* price, *quantity;
    NSString* stringData, *stringItemNumber;
    NSMutableArray *itemsArray;

    NSLog(@"OrdersViewController: getItemsArray: Number of Details: %@", numberOfItems);
    NSLog(@"OrdersViewController: getItemsArray: intNumberOfItems: %i", intNumberOfItems);
    
    indivItem *item;
    NSDictionary* indivItemDictionary;
    
    itemsArray = [[NSMutableArray alloc] init];

    
    for (int i = 0; i < intNumberOfItems; i++) {
        
item = [[indivItem alloc] init];
stringItemNumber = [NSString stringWithFormat:@"%i", i];
        
NSLog(@"Item Index Number: %@", stringItemNumber);
        
        indivItemDictionary = [itemsDictionary objectForKey:stringItemNumber];
        
        stringData = [indivItemDictionary objectForKey:@"price"];
        NSLog(@"String Data Price Data of an Item: %@", stringData);
price = [self convertStringToNumber:stringData];
        NSLog(@"Price Data of an Item: %@", [price stringValue]);
item.price = price;
NSLog(@"Item's Price: %f", [item.price floatValue]);
        
stringData = [indivItemDictionary objectForKey:@"quantity"];
quantity = [self convertStringToNumber:stringData];
        item.quantity = quantity;
NSLog(@"Quantity: %i", [item.quantity integerValue]);
stringData = [indivItemDictionary objectForKey:@"itemName"];
item.itemName = stringData;
NSLog(@"Item's Name: %@", item.itemName);
     
[itemsArray addObject:item];
        
        
}
    
    return itemsArray;

    
}

-(NSDictionary*)getOrderDictionary:(NSString*)customerID
{
    
    
    NSString *urlString = @"http://www.website.com/test/restfulScriptCall.pl?";
    NSString *queryString = @"";
    queryString = [queryString stringByAppendingString:@"parametername="];
    queryString = [queryString stringByAppendingString:parametervalue];
    
    // Step 5:  Make the RESTful call.
    
    urlString = [urlString stringByAppendingString:queryString];
    
    urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
    
    
    NSLog(@"OrdersViewController URL String: %@", urlString);
    
    NSURL *url = [NSURL URLWithString:urlString];
    NSData *dataURL = [NSData dataWithContentsOfURL:url];
    NSDictionary *myDict = [NSJSONSerialization JSONObjectWithData:dataURL options:0 error:nil];

    return myDict;
    
    
    

}

Objective-C Easy Conversion Methods

-(NSNumber*) convertStringToNumber:(NSString*)stringToConvert
{
    
    NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
    [f setNumberStyle:NSNumberFormatterDecimalStyle];
    NSNumber *myNumber = [f numberFromString:stringToConvert];
    
    return myNumber;
    
}


-(NSDate*) convertStringToDate:(NSString*)stringToConvert
{
    
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    
    // this is imporant - we set our input date format to match our input string
    // if format doesn't match you'll get nil from your string, so be careful
    
    [dateFormatter setDateFormat:@"dd-MM-yyyy hh:mm:ss"];
    NSDate *dateFromString = [[NSDate alloc] init];
    
    // voila!
    
    dateFromString = [dateFormatter dateFromString:stringToConvert];
    
    return dateFromString;
    
}


-(NSString*) convertDateToString:(NSDate*)dateToConvert
{
    
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    
    [dateFormatter setDateFormat:@"dd-MM-yyyy"];
    
    NSString *strDate = [dateFormatter stringFromDate:dateToConvert];
    
    return strDate;
    

}


-(NSString*) convertNumberToCurrencyString:(NSNumber*) numberValue
{
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    
    [formatter setNumberStyle:NSNumberFormatterDecimalStyle];
    
    [formatter setMinimumFractionDigits:2];

    return [formatter stringFromNumber:numberValue];
    

}

Core Data Easy to Use Methods

// BEGINNING OF CORE DATA SECTION

-(void)printContext:(NSManagedObject *) managedObj
{
/*
     NSString *courierID, *emailAddress, *loggedIn, *timeLoggedIn;
     
     courierID = [NSString stringWithFormat:@"%@",[[managedObj valueForKey:@"courierID"]stringValue]];
     emailAddress = [managedObj valueForKey:@"emailAddress"];
     loggedIn = [[managedObj valueForKey:@"loggedIn"] stringValue];
     timeLoggedIn = [NSDateFormatter localizedStringFromDate:[managedObj valueForKey:@"timeLoggedIn"]
     dateStyle:NSDateFormatterShortStyle
     timeStyle:NSDateFormatterFullStyle];
     
     NSLog(@"GFMVC: Core Data Courier ID: %@", courierID);
     NSLog(@"GFMVC: Core Data Email Address: %@", emailAddress);
     NSLog(@"GFMVC: Core Data Logged In: %@", loggedIn);
     NSLog(@"GFMVC: Core Data Time Logged In: %@", timeLoggedIn);
     
     */
    return;
}


- (NSFetchedResultsController *)fetchedResultsController:(NSString *) entityName
{
    if (fetchedResultsController != nil) {
        return fetchedResultsController;
    }
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription
  entityForName:entityName inManagedObjectContext:managedObjectContext];
    [fetchRequest setEntity:entity];
    /*
     NSSortDescriptor *sort = [[NSSortDescriptor alloc]
     initWithKey:@"emailAddress" ascending:YES];
     [fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
     
     [fetchRequest setFetchBatchSize:20];
     
     */
    
    NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:managedObjectContext sectionNameKeyPath:nil
  cacheName:@"Root"];
    
    
    fetchedResultsController = theFetchedResultsController;
    // self.fetchedResultsController.delegate = self;
    return fetchedResultsController;
}

-(void)saveContext:(NSManagedObjectContext *) managedObjContext
{
    
    if (managedObjContext == nil) {
        managedObjContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
        NSLog(@"After managedObjectContext: %@",   managedObjContext);
    }
    
    
    NSError *error = nil;
    
    if (![managedObjContext save:&error])
    {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
        
    }
    
}

-(void)setDataPoint:(NSManagedObject *) managedObj setManagedObjectContext: (NSManagedObjectContext* ) context setValue: (NSString*) valueString setKey:(NSString *) keyValue
{
    
    [managedObj setValue:valueString forKey:keyValue];
    
    [self saveContext:context];
    
    NSLog(@"D2D: OrdersViewController: Set Data Point %@: %@", keyValue, valueString);
    
    return;
}


-(NSString *)getDataPoint:(NSManagedObject *) managedObj setKey:(NSString *) keyString
{
    
    NSString *keyValue;
    
    if(managedObj != NULL)
    {
        keyValue = [managedObj valueForKey:keyString];
    }
    else
    {
        keyValue = @"";
    }
    
    NSLog(@"D2D: Core Data %@: %@", keyString, keyValue);
    
    return keyValue;
}


-(NSArray *)getArray:(NSManagedObjectContext *)context setEntityName:(NSString*) entityName
{
    
    
    NSEntityDescription *entityDesc = [NSEntityDescription entityForName:entityName
                                                  inManagedObjectContext:context];
    
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    
    [request setEntity:entityDesc];
    
    NSError *error = nil;
    
    NSArray *results = [context executeFetchRequest:request error:&error];
    
    return results;
    
}


-(NSManagedObject *) getManagedObject:(NSArray *) results setContext:(NSManagedObjectContext *) context
                        setEntityName:(NSString *)entityName
{
    
    NSManagedObject *newManagedObject = nil;
    
    if (results == nil)
    { // g
        
        newManagedObject = [NSEntityDescription
                            insertNewObjectForEntityForName:entityName
                            inManagedObjectContext:context];
        
        // set all the values for the object when I get home.
        
        
        NSLog(@"getManagedObject Point 1");
        
        
        
    }
    else if (results != nil && [results count] == 1) {
        
        newManagedObject = [results objectAtIndex:0];
        
        NSLog(@"getManagedObject Point 2");
        
    }
    else if (results != nil && [results count] == 0) {
        
        newManagedObject = [NSEntityDescription
                            insertNewObjectForEntityForName:entityName
                            inManagedObjectContext:context];
        
        NSLog(@"getManagedObject Point 3");
        
        
    } // g
    
    return newManagedObject;
    
}


-(NSManagedObjectContext *) getManagedObjectContext
{
    
    
    NSManagedObjectContext* context = [fetchedResultsController managedObjectContext];
    
    if (context == nil)
    { // f
        context = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
        NSLog(@"After managedObjectContext: %@",   context);
    } // f
    
    return context;
    
    
}







// END OF CORE DATA SECTION

Thursday, October 17, 2013

Out of Balance

I'm odd.  Because I can't be in balance.  I'm sort of in balance.  But I can't be totally in balance.  That means I can't lift weights (mainly because I don't want to) and be a crackerjack programmer.  Because that's all I want to be, an awesome gobstoppingly good amazing programmer ... and maybe an amazing engineer.

Who knows?  Maybe one day I can build a series of Hyperloops across America.  Or geothermal power plants ... or other awesome stuff.  But I can't do any of those things being balanced.  Being balanced means you have to be mediocre at a lot of things.  I just want to do enough exercise to keep my mood up.  But no more really than that.  And nothing that takes a lot of time.  Tonight I could've programmed a Perl script but I didn't because I told myself I would work out.  Now I haven't worked out nor I have programmed.  Loss day.  Sucks.  I could've been well ahead of the game today.  Instead I'm sitting here typing about being ahead of the game.  Not cool.

I want to finish this iPhone app.  V1.  Get it out.  And then build the website.

Get the site all gussied up and then bring it to this VC I know and beta it out.  Maybe add some more functionality into it (probably as it will allow me to get familiar with pushing changes), and then demo day it and beta it out.  But first I have to get this PERL script done.  Balance is not all it's cracked up to be.

Wednesday, October 16, 2013

Want to get something out there

I just want to get something out there.  I just want to get something done.  I'm working on getting this DoorToDoor DryCleaning app out there and I just want to get it and the website done. 

The app is about 30% done and I started it Friday.  Tomorrow the app should be 50% done.  Then this weekend I'll try to get the other half done.  Then come Monday I'll need to take a day at the Harlem Garage to test the fax capabilities.   Maybe Wednesday.

Then all of next week I'd really like to build the website out and get somebody from some foreign country to build some CSS and some buttons for me to make this thing look presentable.  Then I think I'll be done and ready to beta.  I'm going to shoot for a week and a half.  

Also I'll have to figure out a vendor to run credit card transactions.  Ahhh.  We'll see what I can do.  I might have to build in some more functionality before I can beta it but I'll bring it to this venture capital guy that I know and see if he likes it first.  But I'm hoping to get it all done and ready to beta by the first week of November.  But we'll see.

Tuesday, October 15, 2013

URL Conversion Site

URL Conversion Site

http://www.albionresearch.com/misc/urlencode.php

Google Maps JSON API

https://developers.google.com/maps/documentation/geocoding/

Saturday, October 12, 2013

Last Stopped

Note to self:  Stopped at Login Button's .h (header) file.

Note to self:  Stopped at the PickUpViewController.  It has to be wired to Deliver To/PickUpFrom View Controllers.  Then those have to be wired to the Payment Method which is all ready wired.

Note to self:  Run Perl Script (RESTful Script for Address Verification).  After that look up the values returned from the JSON object.  Then store them in the Core Data Object.  Wash, rinse, and repeat for the work address VC.  Also, add a first and Last name field to the Login Information VC.  Then wire it.  Script name: testConfirmedAddressObject.pl?LA=XXX&MA=XXX&ES=1

Note to self:  Next, test all of the enrollment screens.  As I'm testing build the PERL scripts on the localhost.  Switch URLs to work with the localHost.  Nice, baby, nice.  

Next up:  Build an ability that if an unconfirmed customer is in the system ("Doppelgänger alert") then give them an option to delete this user.  Otherwise if the customer has been confirmed then send an email to the confirmed address to change the password (via an email screen) or to have the confirmation code resent to the cell phone number on file.  Tomorrow just build the alerts that allow this functionality.  You can build the HTML screens and the PERL scripts later.

Next up:  Build the confirmation code PERL script and then build the other half of the app.

Next Up:  Build PERL orders for drop off button and build Table View Controller for drop off (orders all ready in the system).  Also, get the price list of five local dry cleaners and their fax numbers and input them into the database.  Then build out an orderViewController that adds order information.  Also, build the PERL script that sends the orders to the Dry Cleaner selected.  

Next Up:  Recap:

1.  Build an Order View Controller Confirmation Screen.

2.  Build the RESTful script that does the following:

-a. Build the .pl script.

a.  Inputs all the appropriate data into the database for the order

b.  Produces the Text file

c.  Faxes the order

http://www.interfax.net/en/dev/webservice/samples/fax_perl_sendcharfax

http://stackoverflow.com/questions/12312673/how-to-perl-script-to-move-files-with-specific-extension-from-one-folder-to-anot

3.  Build Credit Card processing piece into the ViewController

4.  Build the Nav Bar at the bottom of the screen to allow for account editing, checking on orders, logging out.

-- Account:

-- Allows you to change any address

-- Change password information
a.  Build tblTempPassword (password, timestamp, customerID, verified)
b.  Build PERL script
-- i.  build input script 
-- ii. build object script -- build input data into tblTempPassword
-- iii.  build object script -- build send email procedure
-- iv.  build object script -- if the data was input into the tblTempPassword and the email was successfully sent return JSON object.
-- v.  build email verify input script
-- vi.  build email verify object script -- mark the item in tblTempPassword verified.
-- vii.  build email verify object script -- get the password from tblTempPassword and update the tblCustomers with the new password.
-- viii.  Tell the user the password has been changed
-- viv.  test.

-- Change credit card information

-- Current Orders
-- Allows you to see all of your current orders

-- Log Out

-- Allows you to log out


-- Place order:
-- Allows you to place a pick up or a drop off.

Final Punch List:

1.  Add icons to Navigation Bar
2.  Add order details insert statement to Order Functionality
// a.  three needs:  orderID (check), vendoritempriceid, quantity (check)
// b.  to get vendoritempriceid:
// -- first get item id
// -- get vendor item price id (can do this with a sql statement)
// sql: select vendoritempriceid from tblvendoritemprices where vendorID = $vendorID and itemID = (select itemID from tblitems where itemName = $itemName);
// -- run this SQL statement for each item where the quantity is not equal to zero
// -- retrieve the orderdetailsid
// -- if the orderdetailsid <> 0 and not isnull then 
//    -- store the orderdetailsid in an array and move onto the next item
//   else otherwise delete all of the table entries in tblorderdetails
//    -- if none of the orderdetailsid  == 0 then return 1 to the original item
3.  Add better fax printing mechanism
-- Make sure to add checking for "Home" and "Work" buttons to make sure a home and work address each exist
4.  Check on boundary code for dry cleaners  (dtdPointBoundaryObject.pm)
5.  Add credit card charging mechanism
5b.  Make sure order drop off button has correct functionality
Tomorrow at work work 1/21/2014:
1. Write up Home and Work code
2. Credit Card Charging Mechanism  
3. Check boundary checking code
-- Add a coordinate order column
-- Add the last coordinate that's identical to the first coordinate
-- Retry the code.
Finish all of the credit card charging mechanism.  DONE!!!!

http://www.go-for-me.com/test/testdtdPointBoundaryObject.pl?cid=816&homeAddress=1&workAddress=0&vid=791

3b.  xMake sure the home address and work address pages (Account Information) insert an address if there is no address to be updated.
3c.  Add deliveryDateView Controller
3d.  Make sure the drop off button works and the order selection button.
3e.  Implement the boundary code into the VendorViewController after testing it out.
4. Build first page of website

Tomorrow at Home: Work: 
1. Debug Home and Work Code
    -- Migrate dtdVerifyAddressExists.pl
    -- Migrate dtdVerifyAddressExists.pm
2. Debug Credit Card Charging Mechanism
3. Check on Drop off button functionality
-- Build confirm pickup capability
-- a.  Build six number string to confirm order
-- b.  Put six number string into the order table (confirmation id, order id, confirmation number, order confirmed, time input )
-- create pickupconfirmation table
-- c.  Put the twilio number and the confirmation number at the bottom of the order sheet
-- d.  Build the Webhook: 
--      i.  retrieve the body of the message
--      ii. take the message and use it to look up the confirmation number



#Things to fix
# 1.  Make sure we're picking up the latest confirmation number
# 2.  Make sure we're marking the orderID in the tblorders table as order picked up
# 3.  Pick up the order number from the tblconfirmationcode
# 4.  Use the order number to pick up the customerCellPhoneNumber
# 5.  Use the from number to send the vendor a text message
--      iii.  if the confirmation number matches mark it as order confirmed & send a message to the customer that the order has been confirmed & send a message to the vendor that the pick up has been confirmed.  Mark the order id as order picked up.
--      iv.  if the confirmation number doesn't match send a message to the vendor that the pick up has not been confirmed.  Send an email to us about lack of confirmation -- Call the vendor.  
--    v.  Email the customer the receipt if the order has been sent.
-- Fix the date issue in dtdPlaceOrder.pm

4. Improve order drop off functionality
        // NEXT STEP:  Build a Restful script to find out if this job has been paid for
        // NEXT STEP:  If the order hasn't been paid for then push the paymentViewController
        //              -- after that push the final confirmation view controller with the payment method
        //                 attached.
        // NEXT STEP:  If the order has been paid for push the finalConfirmationViewController

(TONIGHTS GOAL)

        // NEXT STEP:  Modify the final Confirmation View Controller Script to take care of delivery part
                       -- Build a fax
                       -- Send a fax to the dry cleaner
                         (FUTURE FIX:  THE FILE MOVE SUCCESSFUL PART OF THIS SCRIPT IS NOT WORKING PROPERLY.  I CAN BUILD A SWEEP SCRIPT IN THE FUTURE THAT MOVES ALL SUCH FILES INTO DIRECTORIES.)
                       -- Modify the Twilio script to confirm delivery
                       -- Text the customer and the user when the drop off is confirmed
                       -- Email the customer the final receipt.

        NOTE:  When building Twilio script for drop off make sure to update tblOrders (actualDeliveryDate, orderDroppedOff)

        Today:  Make sure the credit piece works on the FinalConfirmationViewController
                     -- Make sure it fails gracefully with a bad credit card number (TEST IN LAST STEP)
                     -- Make sure it succeeds with a good credit card number (TEST IN LAST STEP)
         
        Delivery Test Cases:
                     -- TESTED:  Works with cash (unpaid in the DB and then gets paid in cash)
                     -- TESTED:  Works with credit (paid in the DB and then marked as paid with credit in the model)
                     -- YET TO BE TESTED:  Works with credit (unpaid in the DB and then gets paid in credit)
                     -- YET TO BE TESTED:  Works with cash (paid in the DB and then gets marked in the model)
                 
        // NEXT STEP:  When picking a home or work address to have a delivery dropped off to there must be code that makes sure the address coords are within the delivery area of the vendor  New Coords:  (40.786421, -73.975496)

          -- Check the coordinate code in the UA call.
          -- Check the current (inner) coords.
          -- Check the new (outer) coords.
          -- Fix the code if necessary
     
      // OTHER FIXES:
         -- Get the UITableViewCell to look correct
         -- Display the total price correctly
         -- Change the prices of the items to get decimal places
         -- Get whether the vendor is open or closed to display
         -- Get where the item was picked up from to display
         -- Get the images to show in the uitabview
         -- Change date formatting in the UIAlertViews (check the View Controllers)
     
       // Migrate to AWS:
          -- Create a github account
          -- Back up app to github
          -- Fix the credit card charge for new customers problem  
               --  First: tell the user they have no credit card on file.  Action: Do you want to enter a credit card?   No -- disappear.  Yes -- push the credit card view controller.  
          -- Fix the problem with the Final View Controller on the pickup function
          -- If someone says they don't want to use the credit card with the number on it then ask them if they want to change their credit card number.  If they say yes push the credit card view controller.
          -- When a credit card number is edited add the value back to the orderInfo object in the view controller if it exists.
          -- Don't allow the user to select an order where the order delivery date is in the future.**
              -- Instead of disallowing the ask send an alert update that says "You requested this to be done on <THE DATE>.  This is an early request and your order probably isn't ready yet.  Do you still want to request the order?"  <TODAY>
          -- Add a customer ID on the pList so that the log in password has to be equal to the customer ID. If not, erase all the data there and let them input new info.
          -- On the registration page implement a spinner for waiting <TODAY>
          -- Confirm in code that updating info in pList occurs <TH>
          -- Get rid of the warnings on each controller one-by-one.  <TH>
          -- Make expiration date view controller have proper formatting (with automatic slash input) <TH>  (NICE TO HAVE ... COME BACK LATER)
          -- Fix submit buttton <TODAY>
          -- Correctly check for null values on every view controllers code <TH> (STOPPED HERE -- FOR CODE CONTINUITY ... frankly mass changes scare me.)
          -- App Back up on GitHub <FRI>
          -- CGI Back up on GitHub <FRI>
          -- Create a new app for aws migration <FRI>
          -- Set up AWS instance
         -- Move the DB to AWS <TODAY>
          -- Move the Libraries to AWS <TODAY>
          -- Get test AWS Script to work <TODAY>
          -- Modify CGI scripts for AWS <TODAY>
          -- Build a little website for DTDDC <TODAY>
          -- Move CGI scripts to AWS <TODAY>
          -- Back up new app to github <FRI>
          -- Retest end to end everything <MON>
          -- Take video and send to demo day people <MON>

Business Goals Week of 5/26/2014:

-- Bring Oskar on board
-- Show Todd Layne the new model.  Iterate again.
-- Bring on Sartorius Cleaners.
-- Build Little Big Horn Strategy.

       
BUSINESS TASKS:
-- Order Business Cards
-- Put together pitch deck
-- Get 10 vendors to sign up
    -- Take sales meeting (5/1/2014)
    -- Do follow up calls (1 pm) (5/1/2014)
    -- Book follow up meeting with TC Cleaners (5/1/2014)
    -- Set up sales call list for Saturday (40 vendors) (5/1/2014)
    -- Book five sales meetings for next week (5/1/2014)
-- Get 10 vendors!
    -- Book 3 appointments (3 pm)
    -- Get Khalid and Amos to come make calls (3 pm)
    -- Call Mark Verdejo
    First:
    -- Call dry cleaner and book appointment
    -- Put together this weeks appointment calendar
    -- Call a Spanish caller tonight

-- Get 100 customers moving forward
    -- Come up with prelim marketing plan (5/1/2014)
-- CALL INTERVIEWEES -- set up interviews

TECHNICAL TASKS:
-- GOAL FOR THIS WEEK (Saturday) -- Send app to the app store (TODAY)
-- Test the new app (5/1/2014)
-- Get website up
-- Set up Force Update CGI script and functionality
-- Enable faxing (Test again later) (5/1/2014)
-- Retest everything end to end (5/1/2014)
-- Build out full register piece of DTDCS (5/1/2014)
    -- HomeAddresssViewController
    -- WorkAddressViewController
    -- LoginInfoViewController
    -- Work through next three view controllers
         -- LoginViewController
         -- ConfirmationCodeViewController
         -- DeliverToViewController
         -- VendorsViewController
             -- Troubleshoot VendorViewController
         -- Build itemViewController & sandwichViewController
             -- Build tblItemType
             -- Add itemType to indivVendorItem
             -- Place itemType from DB (Perl script) into indivVendorItem
             -- Get correct view controller to load for each tableViewController
             -- Get itemAdd to work for indivItemViewController
                  -- Get the indivItemVC to look proper
                  -- Get the indivItemVC to load the proper information
                  -- Get the UIStepper to behave properly
                  -- Get addToOrder button to load (build UIAlertView that lets everyone know what the item add costs).  -- STOPPPED HERE ... SEE itemViewController.
                   --  Get addToOrder button to work and pop view controller to last VC
             -- Get tableView choices to load for sandwichViewController
                   -- Build tables for tblVendorSandwich
                   -- Add special instructions section for sandwichViewController
                   -- Add UIScrollbar to View Controller
                   -- Get tableViewControllers to load with the proper information
                   -- Get tableViewControllers to work with checkmark for chosen boxes
                 
                   D2D DRYCLEANING WORK:
                   -- Get bullet points to show
                   -- Get address description
                   -- Get pictures
                   -- Get item tableview to show
                   -- Build out item specialization (multiple tableviews)
                   -- Rebuild order CGI script

                     D2D DRYCLEANING WORK:
                     -- Update the updateOrderDB module in FinalOrderConfirmationViewController
                     -- Change the updateOrder Perl Module to be more flexible
                     -- Change placeOrder module in order to get the special instructions in the DB
                     -- Change the placeOrder createDocumentModule to take specialOrders


                  D2D CORNER STORE WORK:
-- Get Credit Button to work correctly
   -- Work through Credit Button (Go through the code)
-- Get Cash Button to work correctly
   -- Work through Cash Button (Go through the code)
-- Work through FinalConfirmationViewController
   -- Go through the Code
   -- Add special instructions controller
   -- Check out the submit button
   -- Change the http scripts
   -- Gut the pickup pieces of the view controller
   -- Examine the tabs and re-examine the stuff
-- Change all the HTTP Requests
-- Change all the NSStrings necessary for DTDDC to change to DTDCS
-- Get Login Button to work correctly (90 days log out)

-- LEGACY PROBLEMS:
-- Get tableViewControllers to add the price of the sandwich correctly
                   -- Get addToOrder button to work correctly
             -- Add a number of items
             -- Add Submit Button to productViewController
                 -- Add functionality that deletes all items if a different vendor is chosen from StoreTableViewController
                     -- Make sure UIAlertView tells the user beforehand.
             -- Build FinalOrderViewController
             -- Start Building FinalOrderViewController backend functionality
         -- Make tableViewController pretty

Tuesday, May 21, 2013

Goals

Goals

1.  Build Perl RESTful service that inserts all the necessary records into the DB to build a courier.

2.  Build the URL to use the buildCourierObject.pm.

3. Revamp the Customer Flow Screens.

4.  Build the PM for Saved Addresses (use the Jobs Object PM as a template).

5. Use the PM to populate a CoreData object for Saved Addresses.

6.  Populate the SavedAddressViewController.

7.  Fix the buttons.

8.  Replan.