Example #1
0
        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."));
        }
Example #3
0
        /// <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);
        }