Today's Menu  Portugal
journal and plan nutrition
Y4UsdaParamEntryViewController.m
Go to the documentation of this file.
1 //
2 // Y4UsdaParamEntryViewController.m
3 // TodaysMenu
4 //
5 // Created by Don Zeek on 4/20/16.
6 // Copyright © 2016 net.dzeek.y2015.ios.portfolio. All rights reserved.
7 //
8 
10 #import "Z5DataController.h"
11 
13 @property (strong, nonatomic) IBOutlet UITextField *sodiumParamTextField;
14 @property (strong, nonatomic) IBOutlet UITextField *totalFatParamTextField;
15 @property (strong, nonatomic) MenuItem *focusMenuItem;
16 @end
17 
18 @implementation Y4UsdaParamEntryViewController
19 
20 - (id) initWithMenuItem:(MenuItem *)menuItem
21 {
22  self = [super init];
23  _focusMenuItem = menuItem;
24  if (_focusMenuItem) {
25  NSLog(@"UsdaParmeterEntry.initWithMenuItem: usda# %@", [self.focusMenuItem usdaNumbers]);
26 
27  } else {
28  NSLog(@"UsdaParmeterEntry.initWithMenuItem: no focus menu item");
29  }
30  return self;
31 }
32 
33 - (void)viewDidLoad {
34  [super viewDidLoad];
35  // Do any additional setup after loading the view from its nib.
36 
37 
38 }
39 -(void)viewWillAppear:(BOOL)animated
40 {
41  NSLog(@"ParameterEntryController.viewWillAppear: usda#: %@", _focusMenuItem.usdaNumbers);
42 
43  // get the dictionary, to get sodium and total-fat
44  NSDictionary *currentParameters = [[[Z5DataController sharedInstance] localDataController] jsonForUsdaNumbersInMenuItem:_focusMenuItem];
45  NSString *sodiumStr = [currentParameters objectForKey:@"sodium"];
46  if (sodiumStr) {
47  NSString *sodiumNumbers = [sodiumStr stringByTrimmingCharactersInSet:[NSCharacterSet letterCharacterSet]];
48  [self.sodiumParamTextField setText:sodiumNumbers];
49  }
50  NSString *totalFatStr = [currentParameters objectForKey:@"total-fat"];
51  if (totalFatStr) {
52  NSString *totalFatNumbers = [totalFatStr stringByTrimmingCharactersInSet:[NSCharacterSet letterCharacterSet]];
53  [self.totalFatParamTextField setText:totalFatNumbers];
54  }
55 }
56 - (void)viewWillDisappear:(BOOL)animated
57 {
58  [super viewWillDisappear:animated];
59 
60  // NSLog(@"ParameterEntryController.viewWillDisappear: beginning usda#: %@", _focusMenuItem.usdaNumbers);
61  // NSDictionary *jsonDictionary = [[[Z5DataController sharedInstance] localDataController] jsonForUsdaNumbersInMenuItem:[self focusMenuItem]];
62  // NSLog(@"ParameterEntryController.viewWillDisappear: after getting dictionary: usda#: %@", _focusMenuItem.usdaNumbers);
63  // NSLog(@"ParameterEntryController.viewWillDisappear: current usda dictionary: %@", json);
64 
65  /*
66  * Entry data
67  */
68  NSString *sodiumLevel = [self.sodiumParamTextField text];
69  NSString *sodiumKey = [[NSString alloc] initWithFormat:@"%@",@"sodium"];
70  NSString *sodiumValue = [[NSString alloc] initWithFormat:@"%@",sodiumLevel];
71  NSString *totalFatLevel = [self.totalFatParamTextField text];
72  NSString *totalFatKey = [[NSString alloc] initWithFormat:@"%@",@"total-fat"];
73  NSString *totalFatValue = [[NSString alloc] initWithFormat:@"%@",totalFatLevel];
74 
75  NSDictionary *parameterDictionary = [[NSDictionary alloc] initWithObjectsAndKeys:sodiumValue, sodiumKey, totalFatValue, totalFatKey, nil];
76  if([NSJSONSerialization isValidJSONObject:parameterDictionary]) {
77 
78  // serialize json to check correctness
79  NSError *err_writing;
80  NSData *usdaData = [NSJSONSerialization dataWithJSONObject:parameterDictionary options:NSJSONWritingPrettyPrinted error:&err_writing];
81  if (err_writing) {
82  NSLog(@"ParameterEntryController.viewWillDisappear: err_writing: %@", err_writing);
83  } else {
84  // NSString* out = [[NSString alloc] initWithData:usdaData encoding:NSUTF8StringEncoding];
85  // self.focusMenuItem.usdaNumbers = out;
86  NSDictionary *updatedJson = [[[Z5DataController sharedInstance] localDataController] mergeJsonForUsdaNumbers:parameterDictionary inMenuItem:[self focusMenuItem] inContext:self.view];
87  NSLog(@"ParameterEntryController.viewWillDisappear: updatedJson: %@ \nusdaData: %@", updatedJson, usdaData);
88 // self.focusMenuItem.usdaNumbers = [updatedJson descriptionInStringsFileFormat];
89  NSError *error;
90  NSData *jsonData = [NSJSONSerialization dataWithJSONObject:updatedJson
91  options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
92  error:&error];
93 
94  if (! jsonData) {
95  NSLog(@"Got an error: %@", error);
96  } else {
97  self.focusMenuItem.usdaNumbers = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
98  }
99  NSLog(@"ParameterEntryController.viewWillDisappear: updated usdaNumbers: %@", self.focusMenuItem.usdaNumbers);
100  }
101 
102  } else {
103  NSLog(@"ParameterEntryController.viewWillDisappear: parameterDictionary is invalid JSON");
104  }
105 }
107  [super didReceiveMemoryWarning];
108  // Dispose of any resources that can be recreated.
109 }
110 
111 /*
112 #pragma mark - Navigation
113 
114 // In a storyboard-based application, you will often want to do a little preparation before navigation
115 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
116  // Get the new view controller using [segue destinationViewController].
117  // Pass the selected object to the new view controller.
118 }
119 */
120 // !! get current USDA entry for this parameter, if available
121 // - + (id)JSONObjectWithStream:(NSInputStream *)stream
122 // - options:(NSJSONReadingOptions)opt
123 // - error:(NSError * _Nullable *)error
124 
125 @end
MenuItem * focusMenuItem
MenuItem * menuItem
instancetype sharedInstance()
Singleton interface to both core and remote data sources.
void didReceiveMemoryWarning()
void viewDidLoad()