ERPUtils.m 11 KB

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