ERPUtils.m 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330
  1. //
  2. // ERPUtils.m
  3. // iSales-NPD
  4. //
  5. // Created by Jack on 2017/2/13.
  6. // Copyright © 2017年 United Software Applications, Inc. All rights reserved.
  7. //
  8. #import "ERPUtils.h"
  9. #import "AppDelegate.h"
  10. #import "RASingleton.h"
  11. #ifdef GOOGLE_ANALYTICS
  12. #import "GoogleAnalyst.h"
  13. #endif
  14. #import "RANetwork.h"
  15. @implementation ERPUtils
  16. + (NSString *)orderStatus:(NSInteger)statusCode {
  17. __block NSString *status = nil;
  18. AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
  19. NSDictionary *filter = nil;
  20. switch (appDelegate.user_type) {
  21. case USER_ROLE_EMPLOYEE: {
  22. filter = appDelegate.OrderFilter;
  23. }
  24. break;
  25. case USER_ROLE_CUSTOMER: {
  26. if ([RASingleton sharedInstance].customer_order_type == 0) {
  27. filter = [RASingleton sharedInstance].shop_order_status_filter;
  28. } else {
  29. filter = [RASingleton sharedInstance].sales_order_status_filter;
  30. }
  31. }
  32. break;
  33. case USER_ROLE_UNKNOWN: {
  34. }
  35. default:
  36. break;
  37. }
  38. [filter enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
  39. if ([obj isKindOfClass:[NSDictionary class]]) {
  40. NSDictionary *orderStatusDic = (NSDictionary *)obj;
  41. if ([[orderStatusDic objectForKey:@"value_id"] integerValue] == statusCode) {
  42. status = [orderStatusDic objectForKey:@"value"];
  43. *stop = YES;
  44. }
  45. }
  46. }];
  47. return status;
  48. }
  49. + (NSString *)screenOfRequestString:(NSString *)urlString {
  50. // Home View
  51. // URL_LOAD_HOME // home
  52. // URL_ITEM_SEARCH // particular category
  53. // URL_ITEMSEARCHADDALL // add all
  54. if ([urlString isEqualToString:URL_LOAD_HOME]) {
  55. return @"HomeView";
  56. }
  57. if ([urlString isEqualToString:URL_ITEM_SEARCH] || [urlString isEqualToString:URL_ITEMSEARCHADDALL]) {
  58. return @"Particular Category";
  59. }
  60. // Category
  61. // URL_REQUEST_CATMENU // category menu
  62. // URL_CATEGORY_LOADMORE // category
  63. // URL_CATEGORY // category
  64. // URL_CATEGORYADDALL // add all
  65. if ([urlString isEqualToString:URL_REQUEST_CATMENU] || [urlString isEqualToString:URL_CATEGORY_LOADMORE] || [urlString isEqualToString:URL_CATEGORY] || [urlString isEqualToString:URL_CATEGORYADDALL]) {
  66. return @"Category";
  67. }
  68. // Cart
  69. // URL_CART
  70. // URL_CART_SET_PRICE
  71. // URL_CART_ITEM_NOTES
  72. // URL_CART_GENERAL_NOTES
  73. // URL_CART_INCRESEMENT
  74. // URL_CARTDELIVERY
  75. // URL_CART_REMOVE
  76. // URL_CART2WISH
  77. // URL_CUSTOMER_PENDINGORDER
  78. // URL_EMAIL_CART
  79. if ([urlString isEqualToString:URL_CART] || [urlString isEqualToString:URL_CART_SET_PRICE] || [urlString isEqualToString:URL_CART_ITEM_NOTES] || [urlString isEqualToString:URL_CART_GENERAL_NOTES] || [urlString isEqualToString:URL_CART_INCRESEMENT] || [urlString isEqualToString:URL_CARTDELIVERY] || [urlString isEqualToString:URL_CART_REMOVE] || [urlString isEqualToString:URL_CART_REMOVE] || [urlString isEqualToString:URL_CART2WISH] || [urlString isEqualToString:URL_CUSTOMER_PENDINGORDER] || [urlString isEqualToString:URL_EMAIL_CART]) {
  80. return @"Cart";
  81. }
  82. // Order List
  83. // URL_ORDER_LIST // order list
  84. // URL_NEW_ORDER
  85. // URL_DELETE_ORDER
  86. // URL_CANCEL_ORDER
  87. if ([urlString isEqualToString:URL_ORDER_LIST] || [urlString isEqualToString:URL_NEW_ORDER] || [urlString isEqualToString:URL_DELETE_ORDER] || [urlString isEqualToString:URL_CANCEL_ORDER]) {
  88. return @"Order List";
  89. }
  90. // Search
  91. // URL_SEARCH // search
  92. // URL_SEARCHADDALL // add all
  93. if ([urlString isEqualToString:URL_SEARCH] || [urlString isEqualToString:URL_SEARCHADDALL]) {
  94. return @"Search";
  95. }
  96. // Account
  97. // URL_CUSTOMER_ADV_SEARCH // contact advanced search
  98. // URL_CONTACT_LIST
  99. // URL_SHIPTO_LIST
  100. // URL_NEW_CUSTOMER
  101. if ([urlString isEqualToString:URL_CUSTOMER_ADV_SEARCH] || [urlString isEqualToString:URL_CONTACT_LIST] || [urlString isEqualToString:URL_SHIPTO_LIST] || [urlString isEqualToString:URL_NEW_CUSTOMER]) {
  102. return @"Customer List";
  103. }
  104. // Contact Info
  105. // URL_CUSTOMER_INFO
  106. // URL_EDIT_CUSTOMER
  107. // URL_CUSTOMER_SAVE
  108. // URL_CUSTOMER_UPDATE
  109. // URL_UPDATE_CUSTOMER_BCARD // Update image
  110. // URL_UPLOAD_IMG
  111. //
  112. if ([urlString isEqualToString:URL_CUSTOMER_INFO] || [urlString isEqualToString:URL_EDIT_CUSTOMER] || [urlString isEqualToString:URL_CUSTOMER_SAVE] || [urlString isEqualToString:URL_CUSTOMER_UPDATE] || [urlString isEqualToString:URL_UPDATE_CUSTOMER_BCARD] || [urlString isEqualToString:URL_UPLOAD_IMG]) {
  113. return @"Customer Information";
  114. }
  115. // Wish List
  116. // URL_WISH2CART
  117. // URL_WATCHLIST
  118. // URL_WATCHLIST_REMOVE
  119. if ([urlString isEqualToString:URL_WISH2CART] || [urlString isEqualToString:URL_WATCHLIST] || [urlString isEqualToString:URL_WATCHLIST_REMOVE]) {
  120. return @"Wish List";
  121. }
  122. // Model Detail
  123. // URL_ITEM_DETAIL
  124. // URL_ADD_TO_WATCHLIST
  125. // URL_ADD_TO_PORTFOLIO
  126. // URL_NOTIFY_ME
  127. if ([urlString isEqualToString:URL_NOTIFY_ME] || [urlString isEqualToString:URL_ADD_TO_PORTFOLIO] || [urlString isEqualToString:URL_ADD_TO_WATCHLIST] || [urlString isEqualToString:URL_ITEM_DETAIL] || [urlString isEqualToString:URL_ADD_TO_CART]) {
  128. return @"Model Information";
  129. }
  130. // Portfolio
  131. // URL_PORTFOLIO_REMOVE
  132. // URL_PORTFOLIO
  133. // URL_PORTFOLIO_SET_PRICE
  134. // URL_DM_PARAMS // Create Porfolio
  135. // URL_REQUEST_DM // Save PDF
  136. // URL_SAVE_DM // preview Save PDF
  137. // URL_REQUEST_MODEL_QTY // Edit Portfolio
  138. if ([urlString isEqualToString:URL_PORTFOLIO] || [urlString isEqualToString:URL_PORTFOLIO_REMOVE] || [urlString isEqualToString:URL_PORTFOLIO_SET_PRICE] || [urlString isEqualToString:URL_DM_PARAMS] || [urlString isEqualToString:URL_REQUEST_DM] || [urlString isEqualToString:URL_SAVE_DM] || [urlString isEqualToString:URL_REQUEST_MODEL_QTY]) {
  139. return @"Portfolio";
  140. }
  141. // Portfolio List
  142. // URL_DM_LIST
  143. // URL_PORTFOLIOLIST_REMOVE
  144. if ([urlString isEqualToString:URL_DM_LIST] || [urlString isEqualToString:URL_PORTFOLIOLIST_REMOVE]) {
  145. return @"View Portfolio";
  146. }
  147. // login logout
  148. // URL_UPDATE_AUTH
  149. // URL_LOGOUT
  150. // URL_RETRIEVE_PASS // forget password
  151. // URL_REQUEST_LOGIN // request login
  152. #if defined(BUILD_NPD) || defined(BUILD_USAI) || defined(BUILD_UWAVER) || defined (BUILD_CONTRAST)
  153. if ([urlString isEqualToString:URL_REQUEST_LOGIN] || [urlString isEqualToString:URL_RETRIEVE_PASS] || [urlString isEqualToString:URL_UPDATE_AUTH]) {
  154. return @"Login View";
  155. }
  156. #else
  157. if ([urlString isEqualToString:URL_RETRIEVE_PASS] || [urlString isEqualToString:URL_UPDATE_AUTH]) {
  158. return @"Login View";
  159. }
  160. #endif
  161. // Place order
  162. // URL_COMMIT_ORDER // place order
  163. // URL_SAVE_ORDER // place order
  164. // URL_UPDATE_ORDERCUSTOMER // place order
  165. // URL_ADDRESS_EDOTOR // Address Editor
  166. // URL_ADDRESS_SAVE // save address
  167. // URL_CREDITCARD_EDOTOR // creditcard
  168. // URL_CREDITCARD_SAVE //
  169. if ([urlString isEqualToString:URL_CREDITCARD_SAVE] || [urlString isEqualToString:URL_CREDITCARD_EDOTOR] || [urlString isEqualToString:URL_ADDRESS_SAVE] || [urlString isEqualToString:URL_ADDRESS_EDOTOR] || [urlString isEqualToString:URL_UPDATE_ORDERCUSTOMER] || [urlString isEqualToString:URL_SAVE_ORDER] || [urlString isEqualToString:URL_COMMIT_ORDER]) {
  170. return @"Place Order";
  171. }
  172. // Order Detail
  173. // URL_ORDER_DETAIL // order detail
  174. // URL_COPY_ORDER // order detail
  175. // URL_SIGN_ORDER // order detail
  176. // URL_OPEN_ORDER
  177. // URL_RELEASE_ORDER
  178. if ([urlString isEqualToString:URL_RELEASE_ORDER] || [urlString isEqualToString:URL_OPEN_ORDER] || [urlString isEqualToString:URL_SIGN_ORDER] || [urlString isEqualToString:URL_COPY_ORDER] || [urlString isEqualToString:URL_ORDER_DETAIL]) {
  179. return @"Order Information";
  180. }
  181. // Add To Cart
  182. // URL_ADD_TO_CART
  183. // offline
  184. // URL_CHECK_OFFLINE
  185. // URL_UPLOAD_OFFLINE
  186. // URL_DOWNLOAD_OFFLINE
  187. // URL_FINISH_DOWNLOAD_OFFLINE
  188. // Price Setting
  189. // URL_SET_PRICE_TYPE
  190. // URL_GET_CIVEN_PRICE
  191. // URL_SET_GIVEN_PRICE
  192. if ([urlString isEqualToString:URL_SET_GIVEN_PRICE] || [urlString isEqualToString:URL_GET_CIVEN_PRICE] || [urlString isEqualToString:URL_SET_PRICE_TYPE]) {
  193. return @"Price Setting";
  194. }
  195. // Convert Order To NPD
  196. // URL_SET_MERGE_ORDER
  197. if ([urlString isEqualToString:URL_SET_MERGE_ORDER]) {
  198. return @"Order List";
  199. }
  200. // NPD Policy
  201. // URL_NPD_POLICY
  202. return nil;
  203. }
  204. + (void)googleAnalyticsSendRequestString:(NSString *)urlString WithScreen:(NSString *)screenName Action:(NSString *)action Extra:(NSDictionary *)extra {
  205. #ifndef GOOGLE_ANALYTICS
  206. return;
  207. #else
  208. //#if defined(BUILD_NPD) || defined(BUILD_USAI) || defined(BUILD_UWAVER)
  209. if (!screenName && !action && !extra) {
  210. return;
  211. }
  212. // NSString *preScreenName = [GoogleAnalyst currentTrackScreen];
  213. [GoogleAnalyst clearTracker];
  214. // 1. Track all screens and sessions.
  215. [GoogleAnalyst trackScreen:screenName];
  216. if (action) {
  217. NSString *label = nil;
  218. if ([action isEqualToString:@"Login"]) { // 2. Track user login and timing
  219. NSString *user = [extra objectForKey:@"user"];
  220. [GoogleAnalyst trackSignInUserID:user];
  221. } else if ([action isEqualToString:@"Add To Cart"]) { // 3. When user clicks on “Add to cart”
  222. if (extra) {
  223. NSString *name = [extra objectForKey:@"ModelName"];
  224. NSNumber *count = [extra objectForKey:@"Count"];
  225. label = name;
  226. [GoogleAnalyst trackProduct:name action:action count:count];
  227. }
  228. } else if ([action isEqualToString:@"Open A Model"]) { // 4. user is just opening a model information to check on the item
  229. if (extra) {
  230. NSString *name = [extra objectForKey:@"ModelName"];
  231. label = name;
  232. [GoogleAnalyst trackProduct:name action:action count:nil];
  233. }
  234. } else if ([action isEqualToString:@"Filter"] || [action isEqualToString:@"Search"]) { // 5. user is using search/filter conditions on the app
  235. } else if ([action isEqualToString:@"Brow A Particular Category On Home"]){ // 6. If user is browsing a particular category on home screen(new collection, dining…..)
  236. if (extra) {
  237. NSString *coverName = extra[@"CoverName"];
  238. label = coverName;
  239. }
  240. } else {
  241. }
  242. [GoogleAnalyst trackEventCategory:screenName action:action label:label value:nil];
  243. }
  244. #endif
  245. }
  246. @end