public async void Send(int buildingId, int userId, string name, string message) { try { var user = _userService.GetUserApiDtoAsyncById(userId); if (user == null) { return; } var buidlingMessage = new BuildingMessageDto() { BuildingId = buildingId, IsReport = 0, MessageText = message, UserId = userId }; var buildingApiDto = await _buildingService.PostAsyncBuildingMessage(buidlingMessage); if (buildingApiDto == null) { return; } // Call the broadcastMessage method to update clients. await Clients.All.SendAsync("broadcastMessage", name, message); } catch (Exception ex) { _logger.LogError(ex, ex.Message, "An error occurred while sending message."); throw new Exception(ex.Message, ex); } }
public async Task <IActionResult> Post([FromBody] BuildingMessageDto buildingMessageDto) { //Get header token if (Request.Headers.TryGetValue("Authorization", out StringValues headerValues)) { var token = _customEncoder.DecodeBearerAuth(headerValues.First()); if (token != null) { var user = await _userService.GetUserAsyncByToken(token); if (user != null) { //Verify if the token exist and is not expire if ((await _authenticationService.CheckIfTokenIsValidAsync(token) && user.IsAdmin == 1) || await _authenticationService.CheckIfTokenIsValidAsync(token, user.UserId)) { var buildingMessageApiDto = await _buildingService.PostAsyncBuildingMessage(buildingMessageDto); if (buildingMessageApiDto == null) { return(StatusCode(404, "Unable to create building message.")); } return(Ok(buildingMessageApiDto)); } return(StatusCode(401, "Invalid token.")); } return(StatusCode(403, "Invalid user.")); } return(StatusCode(401, "Invalid authorization.")); } return(StatusCode(401, "Invalid authorization.")); }
/// <summary> /// Posts the async building message. /// </summary> /// <returns>The async building message.</returns> /// <param name="buildingMessageDto">Building message dto.</param> public async Task <BuildingMessageApiDto> PostAsyncBuildingMessage(BuildingMessageDto buildingMessageDto) { var buildingMessageApiDto = await _dal.PostAsyncBuildingMessage(buildingMessageDto); return(buildingMessageApiDto); }