Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func configureItemFetchedResultsController() {
- print("configureItemFetchedResultsController(): started")
- let itemFetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Item")
- itemFetchRequest.sortDescriptors = [NSSortDescriptor(key: "category", ascending: true),NSSortDescriptor(key: "itemId", ascending: true)]
- let user = NSPredicate(format: "order.user.name == %@", UserDetails.fullName ?? "")
- let dateFrom = Conversions.dateConvert(dateString: dateToFetchMin)!
- let dateTo = Conversions.dateConvert(dateString: dateToFetchMax)!
- print(dateFrom)
- let from = NSPredicate(format: "date >= %@", dateFrom as CVarArg)
- let to = NSPredicate(format: "date <= %@", dateTo as CVarArg)
- itemFetchRequest.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [user,from,to])
- itemFetchRequest.propertiesToFetch = ["category","itemId","itemName"]]
- itemFetchRequest.returnsDistinctResults = true
- itemFetchRequest.propertiesToGroupBy = ["category","itemId","itemName"]
- itemFetchRequest.resultType = NSFetchRequestResultType.dictionaryResultType
- itemFetchedResultController = NSFetchedResultsController(fetchRequest: itemFetchRequest, managedObjectContext: context, sectionNameKeyPath: "category", cacheName: nil) as? NSFetchedResultsController<Item>
- do {
- try itemFetchedResultController?.performFetch()
- let resultsDict = itemFetchedResultController!.fetchedObjects!
- print(resultsDict as NSArray)
- print("configureItemFetchedResultsController(): sold items fetched")
- } catch {
- // fatalError("failed to fetch entities: (error)")
- print("configureItemFetchedResultsController(): failed to fetch Item entities: (error)")
- }
- self.statisticsTableView.reloadData()
- }
- func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
- let cell = tableView.dequeueReusableCell(withIdentifier: "statisticsCell", for: indexPath) as! StatisticsTableViewCell
- let item = itemFetchedResultController?.object(at: indexPath).itemName!
- // let item = itemResultsArray[indexPath.row]
- let productRequest: NSFetchRequest<Product> = Product.fetchRequest()
- productRequest.sortDescriptors = [NSSortDescriptor(key: "name", ascending: true)]
- productRequest.predicate = NSPredicate(format: "name == %@", item!)
- productRequest.fetchLimit = 1
- do {
- let fetch = try context.fetch(productRequest)
- cell.idInfoLabel.text = fetch[0].productId
- cell.nameInfoLabel.text = fetch[0].name
- cell.productImageView.image = UIImage(data: (fetch[0].productImage! as Data))
- cell.minimumStockInfoLabel.text = fetch[0].minimumStock
- let productPrice = fetch[0].price
- //fetch item for amount of single object
- let itemId = itemFetchedResultController?.object(at: indexPath).itemId!
- let itemRequest = NSFetchRequest<Item>(entityName: "Item")
- itemRequest.sortDescriptors = [NSSortDescriptor(key: "itemName", ascending: true)]
- itemRequest.predicate = NSPredicate(format: "date BEGINSWITH %@", dateToFetchMin)
- itemRequest.predicate = NSPredicate(format: "itemId == %@", itemId!)
- do {
- let itemFetch = try context.fetch(itemRequest)
- print(productPrice!)
- print(itemFetch, itemFetch.count)
- cell.soldQuantityInfoLabel.text = String(describing: itemFetch.count)
- let amount = Double(productPrice!)! * Double(itemFetch.count)
- cell.salesAmountInfoLabel.text = String(describing: amount)
- } catch {
- print("Error in fetching sold items for cell: (error)")
- }
- } catch {
- print("Error in fetching product for cell: (error)")
- }
- return cell
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement