Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  1. public func postAddDriver(booking: Booking) -> Promise<Bool> {
  2. guard let driverId = CustomerAccountManager.shared.logged?.customerDetails?.driverId else {
  3. Logger.error(message: "Error: Customer has no DriverID")
  4. return Promise(error: AccountError.customerHasNoDriverIdError)
  5. }
  6. guard booking.customers?.first(where: { $0.type == .driver })?.id == nil else {
  7. Logger.info(message: "Customer is already linked... not doing the add driver")
  8. return Promise(value: false)
  9. }
  10.  
  11. let bookingAddRequestParameters = BookingAddDriverRequestParameters(bookingNumber: booking.number, driverId: driverId, driverType: .driver)
  12.  
  13. return BookingService<EmptyResponseObject>.add(parameters: bookingAddRequestParameters).requestWithResponse()
  14. .then { response, _, _ -> Promise<[Booking]> in
  15. //Save locally the link
  16. booking.customers?.first(where: { $0.type == .driver })?.id = driverId.asInt
  17. guard let bookingParameters = self.bookingGetParameters(from: response.response?.locationHeader) else {
  18. throw BookingDetailNotFoundError(message: "No booking received")
  19. }
  20. return BookingService<Booking>.searchBooking(parameters: bookingParameters).requestArrayPromise()
  21.  
  22. }
  23. .then { updatedBooking -> Bool in
  24. if let first = updatedBooking.first {
  25. booking.copyVars(from: first)
  26. }
  27. return true
  28. }.catch { error in
  29. guard let requestError = error as? RequestError else { return }
  30. switch requestError.code {
  31. case .clientError(let code) where code == 400: self.showLinkErrorPopin(message: requestError.values?.message, booking: booking)
  32. default: self.showLinkErrorPopin(message: nil, booking: booking)
  33. }
  34. }
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement