示例#1
0
        public IActionResult CreateMessage([FromBody] MessageCreateDto createMessage)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new TransActionResponse(ModelState.ToString())));
            }

            var newMessage = _mapper.Map <TraTopicMessage>(createMessage);

            string userGuid = UserHelper.GetUserGuid(_httpContextAccessor);
            var    getUser  = _unitOfWork.User.GetByGuid(userGuid);

            newMessage.UserId = getUser.UserId;

            _unitOfWork.Message.Create(newMessage);

            if (!_unitOfWork.Save())
            {
                return(StatusCode(500, new TransActionResponse("A problem happened while handling your request")));
            }

            var topic = _unitOfWork.Topic.GetTopicById(newMessage.TopicId);

            topic.DbLastUpdateTimestamp = DateTime.Now;
            topic.LastMessageTimestamp  = DateTime.Now;

            if (!_unitOfWork.Save())
            {
                return(StatusCode(500, new TransActionResponse("A problem happened while handling your request")));
            }

            var createMessageResult = _mapper.Map <MessageDto>(newMessage);

            return(CreatedAtRoute("GetMessage", new { id = createMessageResult.TopicMessageId }, new TransActionResponse(createMessageResult)));
        }
示例#2
0
        public async Task <IActionResult> CreateMessage(int userId, [FromBody] MessageCreateDto messageDto)
        {
            var sender = await _repo.GetUser(userId);

            if (sender.Id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            messageDto.SenderId = userId;

            var recipient = await _repo.GetUser(messageDto.RecipientId);

            if (recipient == null)
            {
                return(BadRequest("Could not find user."));
            }

            var message = _mapper.Map <Message>(messageDto);

            _repo.Add(message);

            if (await _repo.SaveAll())
            {
                var messageToReturn = _mapper.Map <MessageReturnDto>(message);
                return(CreatedAtRoute(nameof(GetMessage), new { id = message.Id }, messageToReturn));
            }

            throw new Exception("Creating the message faied on save.");
        }
示例#3
0
        public MessageConfirmationDto Create(MessageCreateDto dto)
        {
            User sender = UserData.Users.FirstOrDefault(e => e.Id == dto.SenderId);

            if (sender == null)
            {
                throw new Exception("User does not exit");
            }

            User reciver = UserData.Users.FirstOrDefault(e => e.Id == dto.ReciverId);

            if (reciver == null)
            {
                throw new Exception("User does not exit");
            }

            Message message = new Message()
            {
                Id        = Guid.NewGuid(),
                Content   = dto.Content,
                IsSeen    = dto.IsSeen,
                ReciverId = dto.ReciverId,
                SenderId  = dto.SenderId
            };

            _context.Messages.Add(message);
            _context.SaveChanges();

            _logger.Log("Message created");

            return(_mapper.Map <MessageConfirmationDto>(message));
        }
示例#4
0
        public async Task <MessageDto> CreateMessage(MessageCreateDto messageCreateDto)
        {
            var userId  = (await _authenticateService.GetAuthUser()).Id;
            var message = new Message
            {
                ChatId    = messageCreateDto.ChatId,
                Text      = messageCreateDto.Text,
                PosterId  = userId,
                Timestamp = DateTime.Now
            };

            _unitOfWork.Repository <Message>().Add(message);
            await _unitOfWork.SaveChangesAsync();

            var posterName = (await _unitOfWork.Repository <User>().GetAll()
                              .Include(u => u.Details)
                              .SingleOrDefaultAsync(u => u.Id == userId)).Details.FirstName;

            var mapper = new MapperConfiguration(cfg => cfg.CreateMap <Message, MessageDto>()
                                                 .ForMember(m => m.PosterName, opt => opt.MapFrom(sm => posterName)))
                         .CreateMapper();

            var messageDto = mapper.Map <Message, MessageDto>(message);

            return(messageDto);
        }
        public async Task <IActionResult> CreateMessage(int userId, MessageCreateDto messageCreateDto)
        {
            var sender = await _repo.GetUser(userId);

            if (sender.Id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            messageCreateDto.SenderId = userId;
            var receipient = await _repo.GetUser(messageCreateDto.RecipientId);

            if (receipient == null)
            {
                return(BadRequest("receipient not found"));
            }
            var message = _mapper.Map <Message>(messageCreateDto);

            _repo.Add(message);
            var messageToReturn = _mapper.Map <MessageReturnDto>(message);


            if (await _repo.SaveAll())
            {
                return(CreatedAtRoute("GetMessage", new { id = message.Id }, messageToReturn));
            }
            throw new Exception("fail to creat message");
        }
示例#6
0
        public MessageConfirmationDto Update(Guid id, MessageCreateDto dto)
        {
            var message = _context.Messages.FirstOrDefault(e => e.Id == id);

            if (message == null)
            {
                throw new Exception("Message with provided id does not exist");
            }

            User sender = UserData.Users.FirstOrDefault(e => e.Id == dto.SenderId);

            if (sender == null)
            {
                throw new Exception("User does not exit");
            }

            User reciver = UserData.Users.FirstOrDefault(e => e.Id == dto.ReciverId);

            if (reciver == null)
            {
                throw new Exception("User does not exit");
            }

            message.Content   = dto.Content;
            message.IsSeen    = dto.IsSeen;
            message.ReciverId = dto.ReciverId;
            message.SenderId  = dto.SenderId;

            _context.SaveChanges();

            _logger.Log("Message  updated");

            return(_mapper.Map <MessageConfirmationDto>(message));
        }
        public MessageReadDto Update(int id, MessageCreateDto dto)
        {
            var user = UserData.Users.FirstOrDefault(e => e.Id == dto.SenderId);

            if (user == null)
            {
                throw new BusinessException("User does not exist", 400);
            }

            var message = _context.Messages.FirstOrDefault(e => e.Id == id);

            if (message == null)
            {
                throw new BusinessException("Message does not exist");
            }

            message.Content        = dto.Content;
            message.SenderId       = dto.SenderId;
            message.ConversationId = dto.ConversationId;
            message.CreatedAt      = dto.CreatedAt;
            message.UpdatedAt      = dto.UpdatedAt;
            message.IsRead         = dto.IsRead;

            _context.SaveChanges();

            _logger.Log("Message updated!");

            return(_mapper.Map <MessageReadDto>(message));
        }
示例#8
0
        public async Task <IActionResult> CreateMessage(int userId, MessageCreateDto messageCreateDto)
        {
            var sender = await _unitOfWork.userRepository.GetEntityWithInclude(u => u.Photos, u => u.ID == userId);

            if (sender.ID != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            messageCreateDto.SenderId = userId;
            var receiver = await _unitOfWork.userRepository.GetEntityWithInclude(u => u.Photos, u => u.ID == messageCreateDto.ReceiverId);

            if (receiver == null)
            {
                return(BadRequest("Could not find receiver"));
            }

            var message = _mapper.Map <Message>(messageCreateDto);

            _unitOfWork.messageRepository.Add(message);

            if (await _unitOfWork.Commit())
            {
                var messageToReturn = _mapper.Map <MessageDetailsDto>(message);
                return(CreatedAtRoute("GetMessage", new { id = message.Id }, messageToReturn));
            }

            throw new Exception("Creating new message failed on save");
        }
示例#9
0
        public async Task <IActionResult> CreateMessage(int userId, MessageCreateDto messageToCreate)
        {
            if (userId != int.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)))
            {
                return(Unauthorized());
            }

            var recipient = await _repo.GetUserAsync(userId);

            if (recipient == null)
            {
                return(BadRequest("Could not find user"));
            }

            var message = _mapper.Map <Message>(messageToCreate);

            _repo.Add(message);

            if (await _repo.SaveChangesAsync())
            {
                return(CreatedAtRoute(nameof(GetMessage), new { id = message.Id }, messageToCreate));
            }

            throw new Exception("Creating message failed on save");
        }
示例#10
0
        public async Task <CreatedResult> Post([FromBody] MessageCreateDto dto)
        {
            _logger.LogInformation("POST to {} {}", "/messages", dto.ToJson());

            var result = await _messageService.CreateMessage(dto);

            return(Created($"/messages/{result.Id}", result));
        }
示例#11
0
        public static Message CreateMessage(this Message u, MessageCreateDto model)
        {
            u.Id = Guid.NewGuid().ToString();

            u.Content   = model.Content;
            u.SenderId  = model.SenderId;
            u.ChannelId = model.ChannelId;


            return(u);
        }
示例#12
0
        public ActionResult <MessageReadDto> AddMessage(MessageCreateDto messageCreateDto)
        {
            var messageModel = _mapper.Map <Message>(messageCreateDto);

            _repository.CreateMessage(messageModel);
            _repository.SaveChanges();

            var messageReadDto = _mapper.Map <MessageReadDto>(messageModel);

            return(CreatedAtRoute(nameof(GetMessageById), new { Id = messageReadDto.Id }, messageReadDto));
        }
示例#13
0
        /// <summary>
        /// Sends the message asynchronous.
        /// </summary>
        /// <param name="messageDto">The message dto.</param>
        /// <returns>Void result.</returns>
        public async Task SendMessage(MessageCreateDto messageDto)
        {
            var message = this.mapper.Map <Message>(messageDto);

            message.Id       = Guid.NewGuid();
            message.PlayerId = this.Context.User.Identity.Name;
            message.Time     = DateTimeOffset.UtcNow;

            await this.chatRepostitory.SaveMessageAsync(message);

            await this.Clients.Group(message.GameId.ToString()).ReceiveMessage(this.mapper.Map <MessageDto>(message));
        }
        public async Task <IActionResult> AddMessage([FromBody] MessageCreateDto messageDto)
        {
            Channel selectedChannel = _messageRepositories.GetChannels().FirstOrDefault(x => x.Name == messageDto.Channel);

            if (selectedChannel == null)
            {
                selectedChannel = new Channel
                {
                    Id   = Guid.NewGuid(),
                    Name = messageDto.Channel
                };
                _messageRepositories.AddChannel(selectedChannel);
            }

            User chatUser = _messageRepositories.GetUser(messageDto.User);

            if (chatUser == null)
            {
                chatUser = new User
                {
                    Id   = Guid.NewGuid(),
                    Name = messageDto.User
                };
                _messageRepositories.AddUser(chatUser);
            }

            Message newMessage = new Message
            {
                Id        = Guid.NewGuid(),
                Value     = messageDto.Value,
                User      = chatUser,
                UserId    = chatUser.Id,
                Channel   = selectedChannel,
                ChannelId = selectedChannel.Id,
                TimeStamp = DateTime.UtcNow
            };

            _messageRepositories.AddMessage(newMessage);

            bool result = _messageRepositories.Save();

            if (!result)
            {
                return(new StatusCodeResult(500));
            }

            var chatMessage = MapMessageToDto(newMessage);

            await _messageHub.Clients.All.SendAsync("NewMessage", chatMessage);

            return(Ok(newMessage));
        }
示例#15
0
        public async Task <int> Update(MotorUpdateDto dto, int id, string userId)
        {
            var oldMotor = await _dbContext.Motors
                           .Include(x => x.Client)
                           .Include(x => x.MaintenanceCycles)
                           .Include(x => x.MaintenanceContracts)
                           .Include(x => x.MaintenanceServices)
                           .Include(x => x.SaleContracts)
                           .Include(x => x.SparePartsSold)
                           .SingleOrDefaultAsync(x => x.Id == id);

            var updatedMotor = _mapper.Map(dto, oldMotor);

            updatedMotor.UpdateAt  = DateTime.Now;
            updatedMotor.UpdatedBy = userId;

            _dbContext.Motors.Update(updatedMotor);

            await _dbContext.SaveChangesAsync();

            // Check Motor if Need to Change Oli

            var hoursDifference = updatedMotor.CurrentCounterReading - updatedMotor.PreviousCounterReading;

            if (hoursDifference >= updatedMotor.OliCounter)
            {
                // Motor Need to Change Oli , Then Push Notification To All Users

                var usersFcmToken = await _dbContext.Users
                                    .Where(x => x.FcmToken != null)
                                    .Select(x => x.FcmToken).ToListAsync();

                var message = new MessageCreateDto()
                {
                    Title    = "اشعار صيانة",
                    Body     = "هناك مولد يحتاج الى تغيير زيت للمحرك",
                    Action   = "Motor",
                    ActionId = updatedMotor.Id
                };

                var notifications = _service.CreateNotifications(message, usersFcmToken);

                await _service.PushNotifications(notifications);
            }


            return(updatedMotor.Id);
        }
        public IActionResult CreateMessage([FromBody] MessageCreateDto createTopic)
        {
            if (createTopic == null)
            {
                return(BadRequest());
            }
            if (createTopic.Body == null)
            {
                return(BadRequest());
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var newMessage = _mapper.Map <TraTopicMessage>(createTopic);

            string userGuid = UserHelper.GetUserGuid(_httpContextAccessor);
            var    getUser  = _transActionRepo.GetUsers().FirstOrDefault(c => c.Guid == userGuid);

            newMessage.UserId = getUser.UserId;



            _transActionRepo.CreateTopicMessage(newMessage);

            if (!_transActionRepo.Save())
            {
                return(StatusCode(500, "A problem happened while handling your request."));
            }

            var topic = _transActionRepo.GetTopic(newMessage.TopicId);

            topic.DbLastUpdateTimestamp = DateTime.Now;

            if (!_transActionRepo.Save())
            {
                return(StatusCode(500, "A problem happened while handling your request."));
            }

            var createdPointOfInterestToReturn = _mapper.Map <MessageDto>(newMessage);

            return(CreatedAtRoute("GetMessage", new { messageId = createdPointOfInterestToReturn.TopicMessageId }, createdPointOfInterestToReturn));
        }
        public MessageReadDto Create(MessageCreateDto dto)
        {
            var user = UserData.Users.FirstOrDefault(e => e.Id == dto.SenderId);

            if (user == null)
            {
                throw new BusinessException("User does not exist", 400);
            }

            var message = _mapper.Map <Message>(dto);

            _context.Messages.Add(message);

            _context.SaveChanges();

            _logger.Log("Message created!");

            return(_mapper.Map <MessageReadDto>(message));
        }
示例#18
0
        public async Task <ActionResult <MessageReadDto> > PostMessages(MessageCreateDto message)
        {
            try
            {
                var messageModel = _mapper.Map <Message>(message);
                messageModel.CreatedDate = DateTime.Now;
                _repository.CreateMessage(messageModel);
                await _repository.SaveChangesAsync();

                var messageDto = _mapper.Map <MessageReadDto>(messageModel);
                _logger.LogInfo("Message created");
                return(CreatedAtRoute(nameof(GetMessageById), new { id = messageDto.Id }, messageDto));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex);
                return(Problem("An error has ocurred, please try again later." + ex.Message));
            }
        }
示例#19
0
        public ActionResult Create(MessageCreateDto msgCreateDto)
        {
            if (msgCreateDto == null)
            {
                return(Problem());
            }
            var msg = _mapper.Map <Message>(msgCreateDto);
            //check if the user has permission
            var user   = HttpContext.User;
            int userId = int.Parse(user.Claims.FirstOrDefault(c => c.Type == "Id").Value);

            if (userId != msgCreateDto.FromUserId)
            {
                return(Forbid());
            }

            _unitOfWork.Messages.Add(msg);
            _unitOfWork.SaveChanges();
            return(NoContent());
        }
示例#20
0
        public async Task NewMessage(MessageCreateDto msg)
        {
            var mesaj = new Message();

            try
            {
                mesaj.CreateMessage(msg);
                _context.Messages.Add(mesaj);
                await _context.SaveChangesAsync();

                mesaj = await _context.Messages.Include(x => x.Sender).FirstOrDefaultAsync(x => x.Id == mesaj.Id);
            }
            catch (Exception ex)
            {
            }

            if (Clients != null)
            {
                await Clients.All.SendAsync("MessageReceived", mesaj);
            }
        }
示例#21
0
        public ActionResult <MessageReadDto> CreateMessage(MessageCreateDto messageCreateDto)
        {
            messageCreateDto.Text = _htmlSanitizer.Sanitize(_profanityFilter.CensorString(messageCreateDto.Text));

            if (messageCreateDto.Text == "")
            {
                messageCreateDto.Text    = "<prázdna po vyfiltrovaní>";
                messageCreateDto.Deleted = true;
            }

            var messageModel = _mapper.Map <Message>(messageCreateDto);

            _onlineDOD.CreateMessage(messageModel);
            _onlineDOD.SaveChanges();

            var messageReadDto = _mapper.Map <MessageReadDto>(messageModel);

            //Serilog.Log.Information($"[{this.Request.Host.Host}] POST /api/messages -> ID - {messageReadDto.Id}");

            return(CreatedAtRoute(nameof(GetMessageById), new { Id = messageReadDto.Id }, messageReadDto));
        }
示例#22
0
        public async Task <MessageDto> CreateMessage(MessageCreateDto dto)
        {
            _logger.LogInformation("Clear cache");

            var removeCacheTask = _cacheService.RemoveAsync();

            var client = _clientFactory.CreateClient();

            var response = await client.PostAsync(GetMicroserviceUri(),
                                                  new StringContent(dto.ToJson(), Encoding.Default, "application/json"));

            if (!response.IsSuccessStatusCode)
            {
                throw new Exception("Something went wrong");
            }

            var content = await response.Content.ReadAsStringAsync();

            await removeCacheTask;

            return(JsonConvert.DeserializeObject <MessageDto>(content));
        }
示例#23
0
        public List <Message> CreateNotifications(MessageCreateDto dto, List <string> tokens)
        {
            var messages = new List <Message>();

            foreach (var token in tokens)
            {
                var message = new Message()
                {
                    Token = token,
                    Data  = new Dictionary <string, string>()
                    {
                        { "Title", dto.Title },
                        { "Body", dto.Body },
                        { "Action", dto.Action },
                        { "ActionId", dto.ActionId.ToString() },
                    },
                };

                messages.Add(message);
            }

            return(messages);
        }
        public async Task <IActionResult> CreateMessage(int userid, MessageCreateDto messageParams)
        {
            try
            {
                var sender = await _datingrepo.GetUser(userid);

                if (sender.UserID != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
                {
                    return(Unauthorized());
                }

                messageParams.SenderID = userid;

                var receiver = await _datingrepo.GetUser(messageParams.ReceiverID);

                if (receiver == null)
                {
                    return(BadRequest("Receiving user does not exists"));
                }

                var message = _mapper.Map <Messages>(messageParams);

                _datingrepo.Add(message);

                if (await _datingrepo.SaveAll())
                {
                    var returnMessage = _mapper.Map <MessageReturnDto>(message);
                    return(CreatedAtRoute("GetMessage", new { userid = userid, messageid = message.MessageID }, returnMessage));
                }

                throw new Exception("Error while creating message");
            }
            catch (Exception ex)
            {
                throw new Exception("Error while creating message");
            }
        }
        public ActionResult <MessageReadDto> Create([FromBody] MessageCreateDto request)
        {
            if (_userRepository.Get(request.SenderId) == null || _userRepository.Get(request.ReceiverId) == null)
            {
                return(StatusCode(StatusCodes.Status400BadRequest, "User doesn't exist."));
            }

            Conversation conversation = _conversationRepository.Get(request.ConversationId);

            if (conversation == null)
            {
                return(StatusCode(StatusCodes.Status400BadRequest, "Conversation doesn't exist."));
            }

            if (conversation.CreatorId != conversation.ParticipantId && request.SenderId == request.ReceiverId)
            {
                return(StatusCode(StatusCodes.Status400BadRequest, "You can't send message to yourself in Conversation with someone else."));
            }

            if ((conversation.CreatorId != request.SenderId &&
                 conversation.CreatorId != request.ReceiverId) ||
                (conversation.ParticipantId != request.SenderId &&
                 conversation.ParticipantId != request.ReceiverId))
            {
                return(StatusCode(StatusCodes.Status403Forbidden, "Cannot create Message for Conversation you're not a part of."));
            }

            Message newEntity = _mapper.Map <Message>(request);

            newEntity.DateTime   = DateTime.UtcNow;
            newEntity.StatusRead = false;

            newEntity = _messageRepository.Create(newEntity);

            return(StatusCode(StatusCodes.Status201Created, _mapper.Map <MessageReadDto>(newEntity)));
        }
示例#26
0
        public async Task <MessageCreateDto> AddMessage(CreateMessagDto dto)
        {
            MessageCreateDto input = new MessageCreateDto()
            {
                Message = dto.Message, CreateTime = DateTime.Now
            };

            if (User.Identity.IsAuthenticated)
            {
                var nameClaim = User.Claims.FirstOrDefault(c => c.Type == "name");
                input.UserName = nameClaim == null ? "佚名" : nameClaim.Value;
            }
            else
            {
                input.UserName = "******";
            }
            var result = await _articleClient.AddMessage(input);

            if (result.State == 1)
            {
                return(input);
            }
            return(null);
        }
示例#27
0
 public IActionResult CreateMessage([FromBody] MessageCreateDto msgToCreate)
 {
     return(Ok("Not Implemented Yet"));
 }
示例#28
0
 public async Task <MessageDto> CreateMessage(MessageCreateDto dto) =>
 _mapper.Map <MessageDto>(await _repository.Create(_mapper.Map <Message>(dto)));
        public ActionResult PutMessage(int id, MessageCreateDto dto)
        {
            var entity = _repository.Update(id, dto);

            return(Ok(entity));
        }
        public ActionResult PostMessage([FromBody] MessageCreateDto dto)
        {
            var entity = _repository.Create(dto);

            return(Ok(entity));
        }