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.