Saving Dates Into Array for Uploading to a Firestore Document

39 views Asked by At

I have a customer app where they request services. On the screen I'm working on, they can choose up to three dates. However, what I'm having trouble with is I'm unable to append the selected dates to the array and then upload it to the Firestore document. How would you go about this? Should I rewrite my handleDateCreationTapped() function to add to my array? Thank you!

var firstDayAndTimes: String?
var secondDayAndTimes: String?
var thirdDayAndTimes: String?

// MARK: - Selectors

    @objc func handleDateCreationTapped() {
        
        controller.continueCallback = { [weak self] isSelected in
            guard let self = self else { return }
            if controller.selectedCardViewCount == 1 {
                self.dateLabel.text = controller.viewModel.selectedDate
                self.timeOfDayLabel.text = controller.viewModel.selectTimesOfDay.joined(separator: ", ")
            } else if controller.selectedCardViewCount == 2 {
                self.dateLabel.text = controller.viewModel.selectedDate
                self.timeOfDayLabel.text = controller.viewModel.selectTimesOfDay.joined(separator: ", ")
                self.secondDateLabel.text = controller.viewModel.selectedSecondDate
                self.secondTimeOfDayLabel.text = controller.viewModel.selectSecondTimesOfDay.joined(separator: ", ")
            } else if controller.selectedCardViewCount == 3 {
                self.dateLabel.text = controller.viewModel.selectedDate
                self.timeOfDayLabel.text = controller.viewModel.selectTimesOfDay.joined(separator: ", ")
                self.secondDateLabel.text = controller.viewModel.selectedSecondDate
                self.secondTimeOfDayLabel.text = controller.viewModel.selectSecondTimesOfDay.joined(separator: ", ")
                self.thirdDateLabel.text = controller.viewModel.selectedThirdDate
                self.thirdTimeOfDayLabel.text = controller.viewModel.selectThirdTimesOfDay.joined(separator: ", ")
            }
            
            firstDayAndTimes = controller.selectedCardViewCount >= 1 ? (controller.viewModel.selectedDate + " | " + controller.viewModel.selectTimesOfDay.joined(separator: ", ")) : nil
            
            secondDayAndTimes = controller.selectedCardViewCount >= 2 ? (controller.viewModel.selectedSecondDate + " | " + controller.viewModel.selectSecondTimesOfDay.joined(separator: ", ")) : nil

            thirdDayAndTimes = controller.selectedCardViewCount == 3 ? (controller.viewModel.selectedThirdDate + " | " + controller.viewModel.selectThirdTimesOfDay.joined(separator: ", ")) : nil
    }

// MARK: - Helper Functions

    func handleJobRequestCreation(customer: Customer, fullAddress: String) {
        
        var dayAndTimesArray: [String] = []

        if let firstDayAndTimes = firstDayAndTimes {
            dayAndTimesArray.append(firstDayAndTimes)
        }

        if !secondDateContainer.isHidden, let secondDayAndTimes = secondDayAndTimes {
            dayAndTimesArray.append(secondDayAndTimes)
        }

        if !thirdDateContainer.isHidden, let thirdDayAndTimes = thirdDayAndTimes {
            dayAndTimesArray.append(thirdDayAndTimes)
        }
        
        var data: [String: Any] = [
            "dayAndTimesArray": dayAndTimesArray,
        ]

        if let firstDayAndTimes = firstDayAndTimes {
            data["firstDayAndTimes"] = firstDayAndTimes
        }

        if let secondDayAndTimes = secondDayAndTimes {
            data["secondDayAndTimes"] = secondDayAndTimes
        }

        if let thirdDayAndTimes = thirdDayAndTimes {
            data["thirdDayAndTimes"] = thirdDayAndTimes
        }
    }

I tried to add the values to the document by checking the containers isHidden, but that didn't help.

0

There are 0 answers