Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func deleteUser(_ req: Request) throws -> Future<HTTPResponse> {
- let authUser = try req.requireAuthenticated(User.self)
- return try req.parameters.next(User.self).flatMap { user in
- if authUser.id == user.id {
- return try Token
- .query(on: req)
- .filter(\Token.userId, .equal, user.requireID())
- .delete()
- .flatMap { delete in
- try user.activity
- .query(on: req)
- .all()
- .flatMap (to: HTTPResponse.self) {activity in
- let eventsActive = activity.filter{$0.type == ActivityType.event.rawValue && $0.status == ActivityStatus.active.rawValue}
- let eventsInProcess = activity.filter{$0.type == ActivityType.event.rawValue && $0.status == ActivityStatus.inProccess.rawValue}
- if eventsActive.count > 0 || eventsInProcess.count > 0 {
- throw Abort(.badRequest, reason: "У пользователя есть cобытия (\(eventsActive.count + eventsInProcess.count)) в статусах \(ActivityStatus.active.rawValue) или \(ActivityStatus.inProccess.rawValue)")
- } else {
- _ = user.status == UserStatus.deleted.rawValue
- return user.save(on: req).transform(to: HTTPResponse(status: .ok))
- }
- }
- }
- } else {
- throw Abort(.badRequest, reason: "Что-то пошло не так")}
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement