Advertisement
Guest User

Untitled

a guest
Jul 24th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.75 KB | None | 0 0
  1. func deleteUser(_ req: Request) throws -> Future<HTTPResponse> {
  2.         let authUser = try req.requireAuthenticated(User.self)
  3.         return try req.parameters.next(User.self).flatMap { user in
  4.             if authUser.id == user.id {
  5.                 return try Token
  6.                     .query(on: req)
  7.                     .filter(\Token.userId, .equal, user.requireID())
  8.                     .delete()
  9.                     .flatMap { delete in
  10.                         try user.activity
  11.                             .query(on: req)
  12.                             .all()
  13.                             .flatMap (to: HTTPResponse.self) {activity in
  14.                                 let eventsActive = activity.filter{$0.type == ActivityType.event.rawValue && $0.status == ActivityStatus.active.rawValue}
  15.                                 let eventsInProcess = activity.filter{$0.type == ActivityType.event.rawValue && $0.status == ActivityStatus.inProccess.rawValue}
  16.                                 if eventsActive.count > 0 || eventsInProcess.count > 0 {
  17.                                     throw Abort(.badRequest, reason: "У пользователя есть cобытия (\(eventsActive.count + eventsInProcess.count)) в статусах \(ActivityStatus.active.rawValue) или \(ActivityStatus.inProccess.rawValue)")
  18.                                 } else {
  19.                                     _ = user.status == UserStatus.deleted.rawValue
  20.                                     return user.save(on: req).transform(to: HTTPResponse(status: .ok))
  21.                                 }
  22.                         }
  23.                 }
  24.                
  25.             } else {
  26.                 throw Abort(.badRequest, reason: "Что-то пошло не так")}
  27.         }
  28.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement