Advertisement
Guest User

Untitled

a guest
Jun 13th, 2016
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.82 KB | None | 0 0
  1. //
  2. // InventoryTableViewController.swift
  3. // msp
  4. //
  5. // Created by user on 12.06.2016.
  6. // Copyright © 2016 Intellisoft. All rights reserved.
  7. //
  8.  
  9. import Foundation
  10. import UIKit
  11. import DGElasticPullToRefresh
  12. class InventoryTableViewController : UITableViewController{
  13.  
  14. var inventories = [InventoryHolder]()
  15. var inventoriesFiltered = [InventoryHolder]()
  16. var currentPage = 0;
  17. let maxPageSize = 10
  18. var currentSearchText = ""
  19. var lastItemReached = false;
  20.  
  21. let searchController = UISearchController(searchResultsController: nil)
  22. override func viewDidLoad() {
  23. super.viewDidLoad()
  24. loadData("",filtered: false)
  25. searchController.searchResultsUpdater = self
  26. searchController.dimsBackgroundDuringPresentation = false
  27. definesPresentationContext = true
  28. tableView.tableHeaderView = searchController.searchBar
  29.  
  30.  
  31. let loadingView = DGElasticPullToRefreshLoadingViewCircle()
  32. loadingView.tintColor = UIColor(red: 78/255.0, green: 221/255.0, blue: 200/255.0, alpha: 1.0)
  33. tableView.dg_addPullToRefreshWithActionHandler({ [weak self] () -> Void in
  34. // Add your logic here
  35. // Do not forget to call dg_stopLoading() at the end
  36. self?.tableView.dg_stopLoading()
  37. }, loadingView: loadingView)
  38. tableView.dg_setPullToRefreshFillColor(UIColor(red: 57/255.0, green: 67/255.0, blue: 89/255.0, alpha: 1.0))
  39. tableView.dg_setPullToRefreshBackgroundColor(tableView.backgroundColor!)
  40.  
  41. }
  42.  
  43. override func viewWillAppear(animated: Bool) {
  44.  
  45. self.tableView.reloadData()
  46. }
  47.  
  48. override func didReceiveMemoryWarning() {
  49. super.didReceiveMemoryWarning()
  50.  
  51. }
  52.  
  53. func filterContentForSearchText(searchText: String, scope: String = "All") {
  54.  
  55. print("Searching with: \(searchText)")
  56. if (searchText.characters.count > 0){
  57. currentPage = 0;
  58. LoadingAlert.shared.showOverlay(self.view)
  59. loadData(searchText,filtered: true)
  60. }
  61. currentSearchText = searchText
  62.  
  63.  
  64. tableView.reloadData()
  65. }
  66.  
  67. func loadData(searchText : String,filtered: Bool){
  68. var helper = WebServiceHelper()
  69. var details = GetAllInventoryDetails()
  70. details.username = AppConfiguration.username
  71. details.password = AppConfiguration.password
  72. details.searchContent = searchText
  73. details.limit = self.maxPageSize;
  74. details.page = self.currentPage
  75.  
  76.  
  77. helper.callGetAllInventoryWebService(details, completionHandler: { (resp:GetAllInventoryResponse, err:NSError?) -> () in
  78.  
  79. LoadingAlert.shared.hideOverlayView()
  80. if resp.status == ResponseStatus.FAILED{
  81. var errorMessage:String = ""
  82. if (resp.code == ResponseCode.ERROR_INTERNAL_SERVER_ERROR){
  83. errorMessage = "Internal server error"
  84. }
  85. if (resp.code == ResponseCode.ERROR_INVALID_USERNAME){
  86. errorMessage = "Invalid user name"
  87. }
  88. if (resp.code == ResponseCode.ERROR_INVALID_PASSWORD){
  89. errorMessage = "Invalid password"
  90. }
  91. if (resp.code == ResponseCode.ERROR_INVALID_USER){
  92. errorMessage = "Invalid user"
  93. }
  94. if (resp.code == ResponseCode.ERROR_PASSWORDS_DO_NOT_MATCH){
  95. errorMessage = "Invalid password."
  96. }
  97. if (resp.code == ResponseCode.ERROR_INVALID_CUSTOMER_ID){
  98. errorMessage = "Invalid customer id"
  99. }
  100.  
  101.  
  102. SweetAlert().showAlert("Error", subTitle: errorMessage, style: AlertStyle.Error)
  103.  
  104. }else{
  105. var inventoriesList = resp.inventoryList!
  106. var index = 0;
  107. for inventory in inventoriesList{
  108.  
  109. if let id = inventory.inventoryEntity?.InventoryID{
  110. for i in 0...5 {
  111. inventoriesList.append(inventory)
  112. }
  113. print("ID Is ok: \(id)")
  114. }else{
  115. inventoriesList.removeAtIndex(index)
  116. }
  117. index++;
  118. }
  119.  
  120.  
  121.  
  122.  
  123. print("Inventory list: \(self.inventories.count)")
  124. if (filtered == true){
  125. if (self.inventoriesFiltered.count>0){
  126. self.inventoriesFiltered.appendContentsOf(inventoriesList)
  127. }else{
  128. self.inventoriesFiltered = inventoriesList
  129. }
  130.  
  131. }else{
  132. SweetAlert().showAlert("Success",subTitle: "Successfully selected \(inventoriesList.count) inventory items", style: AlertStyle.Success)
  133.  
  134. if (self.inventories.count > 0){
  135. self.inventories.appendContentsOf(inventoriesList)
  136. }else{
  137. self.inventories = inventoriesList
  138. }
  139. }
  140. self.tableView.reloadData()
  141.  
  142.  
  143. /*SweetAlert().showAlert("Success", subTitle: "Successfully selected \(self.cases.count) cases", style: AlertStyle.Success)
  144. print ("downloaded cases : \(self.cases.count)");
  145. self.tableView.reloadData()*/
  146. }
  147. })
  148.  
  149.  
  150. }
  151.  
  152.  
  153.  
  154. override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
  155. return 1
  156. }
  157. override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  158. if searchController.active && searchController.searchBar.text != "" {
  159. return inventoriesFiltered.count
  160. }
  161. return inventories.count
  162. }
  163.  
  164. override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
  165. let cellIdentifier = "InventoryTableViewCell"
  166. let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! InventoryTableViewCell
  167. let inventory : InventoryHolder
  168.  
  169. print("Inventories list count: \(self.inventories.count)")
  170. if searchController.active && searchController.searchBar.text != "" {
  171. inventory = inventoriesFiltered[indexPath.row]
  172. if (indexPath.row == self.inventoriesFiltered.count-1 && inventoriesFiltered.count > self.maxPageSize){
  173.  
  174. if (!lastItemReached){
  175. self.currentPage++
  176. loadData(self.currentSearchText, filtered: true)
  177. lastItemReached = true;
  178. }
  179.  
  180. }
  181.  
  182. } else {
  183. inventory = inventories[indexPath.row]
  184. if (indexPath.row == self.inventories.count-1 && inventories.count > self.maxPageSize){
  185.  
  186. if (!lastItemReached){
  187. self.currentPage++
  188. loadData("", filtered: false)
  189. lastItemReached = true
  190.  
  191. }
  192. }
  193.  
  194. }
  195.  
  196. print("inventory index: \(indexPath.row)")
  197.  
  198.  
  199. //print("ID: \(inventory.inventoryEntity?.InventoryID)");
  200. if let id = inventory.inventoryEntity?.InventoryID{
  201. cell.inventoryIDLabel.text = "ID: " + String(id)
  202. }
  203.  
  204.  
  205. var inventoryTitle = ""
  206.  
  207.  
  208. if let entityType = inventory.customerInventoryDetailEntity?.EntityType{
  209. print("Entity type: \(entityType)");
  210. inventoryTitle = inventoryTitle + entityType
  211. }
  212. if let inventoryName = inventory.inventoryEntity?.Name {
  213. inventoryTitle = inventoryTitle + " " + inventoryName
  214. }
  215.  
  216.  
  217. cell.inventoryTitleLabel.text = inventoryTitle
  218.  
  219. var modifiedDate = inventory.inventoryEntity?.LastModifiedDate
  220. var createdDate = inventory.inventoryEntity?.CreationDate
  221.  
  222. print ("ModifiedDate: \(modifiedDate)");
  223. modifiedDate = modifiedDate!.substringWithRange(Range<String.Index>(start: modifiedDate!.startIndex.advancedBy(0), end: modifiedDate!.startIndex.advancedBy(10)))
  224.  
  225. createdDate = createdDate!.substringWithRange(Range<String.Index>(start: createdDate!.startIndex.advancedBy(0), end: createdDate!.startIndex.advancedBy(10)))
  226. cell.inventoryDatesLabel.text = "C: " + createdDate! + " M: " + modifiedDate!
  227. cell.inventoryDatesLabel.textColor = UIColor(rgba: "#808080")
  228. cell.inventoryIDLabel.textColor = UIColor(rgba: "#808080")
  229.  
  230. return cell
  231. }
  232.  
  233. override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
  234. let selectedIndex = self.tableView.indexPathForCell(sender as! InventoryTableViewCell)
  235. var model : InventoryHolder
  236. if searchController.active && searchController.searchBar.text != "" {
  237. model = self.inventoriesFiltered[selectedIndex!.row]
  238. }else{
  239. model = self.inventories[selectedIndex!.row]
  240. }
  241. AppConfiguration.selectedInventory = model
  242.  
  243. }
  244.  
  245.  
  246. }
  247.  
  248. extension InventoryTableViewController : UISearchResultsUpdating {
  249. func updateSearchResultsForSearchController(searchController: UISearchController) {
  250. filterContentForSearchText(searchController.searchBar.text!)
  251. }
  252. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement