-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPLMenu.m
105 lines (91 loc) · 4.09 KB
/
PLMenu.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
//
// PLMenu.m
// Plate
//
// Created by emileleon on 12/10/13.
// Copyright (c) 2013 Plate SF. All rights reserved.
//
#import "PLMenu.h"
#import "PLMenuItem.h"
@implementation PLMenu
@synthesize mains, sides, addons, location, menuDate;
+(NSString *)generateRandomID
{
NSString *alphabet = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXZY0123456789";
NSMutableString *s = [NSMutableString stringWithCapacity:20];
for (NSUInteger i = 0U; i < 20; i++) {
u_int32_t r = arc4random() % [alphabet length];
unichar c = [alphabet characterAtIndex:r];
[s appendFormat:@"%C", c];
}
return s;
}
-(void)readFromJSONDictionary:(NSDictionary *)d
{
if ([self menuType] == MenuTypePlate) {
NSString *sizeSlug = [[self plateSize] slug];
NSString *mainKey = [sizeSlug stringByAppendingString:@"-main"];
NSString *sideKey = [sizeSlug stringByAppendingString:@"-side"];
NSDictionary *mainKeys = [d objectForKey:mainKey];
if (mainKeys && [mainKeys count] > 0) {
NSMutableArray *modifiersArray = (NSMutableArray *)[mainKeys objectForKey:@"modifiers"];
NSMutableArray *mainModifiers = [self parseModifiers:(modifiersArray)];
[self setMains:mainModifiers];
}
NSDictionary *sideKeys = [d objectForKey:sideKey];
if (sideKeys && [sideKeys count] > 0) {
NSMutableArray *modifiersArray = (NSMutableArray *)[sideKeys objectForKey:@"modifiers"];
NSMutableArray *sideModifiers = [self parseModifiers:(modifiersArray)];
[self setSides:sideModifiers];
}
} else if ([self menuType] == MenuTypeALaCarte) {
NSArray *menus = [d objectForKey:@"menus"];
for (NSDictionary * menuDict in menus) {
NSMutableArray *productsDicts = [menuDict objectForKey:@"products"];
NSMutableArray *products = [self parseModifiers:productsDicts];
NSString *slug = [menuDict objectForKey:@"slug"];
if ([slug isEqualToString:@"main-entrees"]) {
for (PLMenuItem *menuItem in products) {
[menuItem setItemType:MenuItemMain];
}
[self setMains:products];
} else if ([slug isEqualToString:@"sides"]) {
for (PLMenuItem *menuItem in products) {
[menuItem setItemType:MenuItemSide];
}
[self setSides:products];
}
}
} else if ([self menuType] == MenuTypeAddOn) {
NSArray *menus = [d objectForKey:@"menus"];
[self setAddons:[[NSMutableArray alloc]init]];
for (NSDictionary * menuDict in menus) {
NSMutableArray *productsDicts = [menuDict objectForKey:@"products"];
NSMutableArray *products = [self parseModifiers:productsDicts];
[[self addons] addObjectsFromArray:products];
}
}
}
-(NSMutableArray *)parseModifiers:(NSMutableArray *)modifiersArray
{
NSMutableArray *result = [[NSMutableArray alloc]init];
for (NSDictionary *modifierDict in modifiersArray) {
PLMenuItem *plmi = [[PLMenuItem alloc] init];
[plmi setName:[modifierDict objectForKey:@"name"]];
[plmi setSlug:[modifierDict objectForKey:@"slug"]];
[plmi setPrice:[[modifierDict objectForKey:@"price"] floatValue]];
NSDictionary *metaDict = [modifierDict objectForKey:@"meta"];
[plmi setName:[metaDict objectForKey:@"name"]];
[plmi setItemDescription:[metaDict objectForKey:@"description"]];
[plmi setAllergies:[metaDict objectForKey:@"alergies"]];
[plmi setIsGlutenFree:[[metaDict objectForKey:@"is_gluten_free"] boolValue]];
[plmi setIsVegan:[[metaDict objectForKey:@"is_vegan"] boolValue]];
[plmi setIsVegetarian:[[metaDict objectForKey:@"is_vegetarian"] boolValue]];
[plmi setIngredients:[metaDict objectForKey:@"ingredients"]];
[plmi setPlateId:(NSString *)[metaDict objectForKey:@"id"]];
[plmi setImageURL:[metaDict objectForKey:@"image"]];
[result addObject:plmi];
}
return result;
}
@end