Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public func postAddDriver(booking: Booking) -> Promise<Bool> {
- guard let driverId = CustomerAccountManager.shared.logged?.customerDetails?.driverId else {
- Logger.error(message: "Error: Customer has no DriverID")
- return Promise(error: AccountError.customerHasNoDriverIdError)
- }
- guard booking.customers?.first(where: { $0.type == .driver })?.id == nil else {
- Logger.info(message: "Customer is already linked... not doing the add driver")
- return Promise(value: false)
- }
- let bookingAddRequestParameters = BookingAddDriverRequestParameters(bookingNumber: booking.number, driverId: driverId, driverType: .driver)
- return BookingService<EmptyResponseObject>.add(parameters: bookingAddRequestParameters).requestWithResponse()
- .then { response, _, _ -> Promise<[Booking]> in
- //Save locally the link
- booking.customers?.first(where: { $0.type == .driver })?.id = driverId.asInt
- guard let bookingParameters = self.bookingGetParameters(from: response.response?.locationHeader) else {
- throw BookingDetailNotFoundError(message: "No booking received")
- }
- return BookingService<Booking>.searchBooking(parameters: bookingParameters).requestArrayPromise()
- }
- .then { updatedBooking -> Bool in
- if let first = updatedBooking.first {
- booking.copyVars(from: first)
- }
- return true
- }.catch { error in
- guard let requestError = error as? RequestError else { return }
- switch requestError.code {
- case .clientError(let code) where code == 400: self.showLinkErrorPopin(message: requestError.values?.message, booking: booking)
- default: self.showLinkErrorPopin(message: nil, booking: booking)
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement