public async Task <MessageHandlerResult> HandleAsync(Events.AccountCreateFailed payload, string trackingId) { ThreadContext.Properties[INTERNAL_ID] = payload.InternalId; try { if (Validator.IsAllowedEvent(payload)) { _logger.EventReceived(trackingId, payload); if (Validator.IsValidPayload(payload)) { var operationFailed = Mapper.Map <AccountCreateFailedTransferObject>(payload); // only StarChef account can be found by loginId, so this filters messages and only StarChef related will make effect var isUserExists = await DbCommands.IsUserExists(operationFailed.LoginId); if (isUserExists) { _logger.DisablingUser(operationFailed); await DbCommands.DisableLogin(operationFailed.LoginId); } await MessagingLogger.ReceivedFailedMessage(operationFailed, trackingId); _logger.Processed(trackingId, payload); } else { var errors = Validator.GetErrors(); _logger.InvalidModel(trackingId, payload, errors); await MessagingLogger.ReceivedInvalidModel(trackingId, payload, errors); return(MessageHandlerResult.Fatal); } } } catch (Exception e) { _logger.Error(e); return(MessageHandlerResult.Fatal); } finally { ThreadContext.Properties.Remove(INTERNAL_ID); } return(MessageHandlerResult.Success); }
public async Task <MessageHandlerResult> HandleAsync(Events.AccountStatusChanged payload, string trackingId) { ThreadContext.Properties[EXTERNAL_ID] = payload.ExternalId; try { if (Validator.IsAllowedEvent(payload)) { _logger.EventReceived(trackingId, payload); if (Validator.IsValidPayload(payload)) { try { var statusChanged = Mapper.Map <AccountStatusChangedTransferObject>(payload); var isUserExists = await DbCommands.IsUserExists(externalLoginId : statusChanged.ExternalLoginId); if (isUserExists) { if (statusChanged.IsActive) { _logger.EnablingUser(statusChanged); await DbCommands.EnableLogin(externalLoginId : statusChanged.ExternalLoginId); } else { _logger.DisablingUser(statusChanged); await DbCommands.DisableLogin(externalLoginId : statusChanged.ExternalLoginId); } } await MessagingLogger.MessageProcessedSuccessfully(payload, trackingId); _logger.Processed(trackingId, payload); } catch (ListenerException ex) { _logger.ListenerException(ex, trackingId, payload); return(MessageHandlerResult.Fatal); } } else { var errors = Validator.GetErrors(); _logger.InvalidModel(trackingId, payload, errors); await MessagingLogger.ReceivedInvalidModel(trackingId, payload, errors); return(MessageHandlerResult.Fatal); } } } catch (Exception e) { _logger.Error(e); return(MessageHandlerResult.Fatal); } finally { ThreadContext.Properties.Remove(EXTERNAL_ID); } return(MessageHandlerResult.Success); }