public IHttpActionResult Send(SendMessageRequestDto dto) { var currentProfile = uow.Accounts .GetAll() .Include(x=> x.Profiles) .Where(x => x.Email == User.Identity.Name) .Single().Profiles.First(); var conversation = uow.Conversations .GetAll() .Where(x => x.Profiles.Any(p => p.Id == currentProfile.Id)) .Where(x => x.Profiles.Any(p => p.Id == dto.OtherProfileId)) .FirstOrDefault(); if (conversation == null) { conversation = new Conversation(); conversation.Profiles.Add(currentProfile); conversation.Profiles.Add(uow.Profiles.GetById(dto.OtherProfileId)); uow.Conversations.Add(conversation); } var message = new Message(); message.FromProfileId = currentProfile.Id; message.ToProfileId = dto.OtherProfileId; message.Content = dto.Content; conversation.Messages.Add(message); uow.SaveChanges(); return Ok(new MessageDto(message)); }
public ConversationDto(Conversation conversation) { this.Messages = conversation.Messages.Select(x => new MessageDto(x)).ToList(); this.Profiles = conversation.Profiles.Select(x => new ProfileDto(x)).ToList(); }