private async Task AddHostelClaim(AddHostelClaim command) { using (var context = Context.CreateScope()) { var userManager = context.ServiceProvider.GetRequiredService <UserManager <HostelUser> >(); var payload = command.Payload; var response = new Dictionary <string, string>(); try { var user = await userManager.FindByEmailAsync(payload["Email"]); if (user != null) { var userClaims = new List <Claim>(); var userHostel = payload["Hostel"]; userClaims.Add(new Claim("Hostel", userHostel)); var claim = await userManager.AddClaimsAsync(user, userClaims); if (!claim.Succeeded) { response["Created"] = "false"; response["Errors"] = string.Join(", ", claim.Errors); response["Message"] = "Your account created was aborted"; } } else { response["Created"] = "false"; response["Errors"] = $"No user with '{payload["Email"]}' was found!"; response["Message"] = $"No user with '{payload["Email"]}' was found!"; } } catch (Exception e) { response["Success"] = "false"; response["Errors"] = e.Message; response["Message"] = e.Message; } var @event = new MassTransitEvent("AddedHostelClaim", command.Commander, command.CommandId, response); await SendToPortalQueue(@event); await Self.GracefulStop(TimeSpan.FromSeconds(10)); } }
private void PrepareCommand(IMassTransitCommand command) { switch (command.Command.ToLower()) { case "createaccount": { var createAccount = new CreateAccount(command.Command, command.Commander, command.CommandId, command.Payload); Self.Tell(createAccount); } break; case "addhostelclaim": { var createAccount = new AddHostelClaim(command.Command, command.Commander, command.CommandId, command.Payload); Self.Tell(createAccount); } break; } }