public async Task <IHttpActionResult> SendMessageAsync(SendMessageBindingModel model) { var message = new Message { Id = Guid.NewGuid(), Subject = model.Subject, Content = model.Content, Files = model.Files, SentOn = DateTime.UtcNow }; await _messagesRepository.AddAsync(message); foreach (var recipientId in model.Recipients) { var messageRecipient = new MessageRecipient { Id = Guid.NewGuid(), MessageId = message.Id, RecipientId = recipientId, HasBeenRead = false }; await _messageRecipientsRepository.AddAsync(messageRecipient); } return(Ok()); }
public async Task <SendMessageBindingModel> GetMessageBindingModelByOfferIdAsync(string offerId) { if (!await this.context.Offers.AnyAsync(x => x.Id == offerId)) { throw new ArgumentException("Invalid ID"); } var sendMessageViewModel = await this.GetMessageViewModelByOfferIdAsync(offerId); var sendMessageBindingModel = new SendMessageBindingModel { ViewModel = sendMessageViewModel, }; return(sendMessageBindingModel); }
public async Task <SendMessageBindingModel> GetMessageBindingModelByAdIdAsync(int adId) { if (!await context.Ads.AnyAsync(x => x.Id == adId)) { throw new ArgumentException(GlobalConstants.InvalidAdIdErrorMessage); } var sendMessageViewModel = await GetMessageViewModelByAdIdAsync(adId); var sendMessageBindingModel = new SendMessageBindingModel { ViewModel = sendMessageViewModel }; return(sendMessageBindingModel); }
public async Task GetMessageBindingModelByAdIdAsync_WithValidData_ShouldReturnCorrectResult() { //Arrange var expectedResult = new SendMessageBindingModel { ViewModel = new SendMessageViewModel { AdId = 1, AdPrice = 120, AdTitle = "Iphone 6s", RecipientId = "RecipientId", SenderId = "SenderId", SellerPhone = "0895335532" } }; var moqAdsService = new Mock <IAdsService>(); moqAdsService.Setup(x => x.GetAdByIdAsync(1)) .ReturnsAsync(new Ad { Id = 1, Title = "Iphone 6s", Description = "PerfectCondition", ActiveFrom = DateTime.UtcNow, ActiveTo = DateTime.UtcNow.AddDays(30), AvailabilityCount = 1, Price = 120, SellerId = "SellerId", Condition = new Condition { Name = "Brand New" }, Address = new Address { Country = "Bulgaria", City = "Sofia", Street = "Ivan Vazov", District = "Student city", ZipCode = 1000, PhoneNumber = "0895335532", EmailAddress = "*****@*****.**" } }); var moqUsersService = new Mock <IUsersService>(); moqUsersService.Setup(x => x.GetCurrentUserId()) .Returns("SenderId"); var moqMapper = new Mock <IMapper>(); moqMapper.Setup(x => x.Map <SendMessageViewModel>(It.IsAny <Ad>())) .Returns(new SendMessageViewModel { AdId = 1, AdPrice = 120, AdTitle = "Iphone 6s", SellerPhone = "0895335532", RecipientId = "RecipientId" }); var context = InitializeContext.CreateContextForInMemory(); messagesService = new MessagesService(context, moqAdsService.Object, moqUsersService.Object, moqMapper.Object); var testingAd = CreateTestingAd(); await context.Ads.AddAsync(testingAd); await context.SaveChangesAsync(); //Act var actual = await messagesService.GetMessageBindingModelByAdIdAsync(1); Assert.Equal(expectedResult.ViewModel.AdId, actual.ViewModel.AdId); Assert.Equal(expectedResult.ViewModel.AdTitle, actual.ViewModel.AdTitle); Assert.Equal(expectedResult.ViewModel.AdPrice, actual.ViewModel.AdPrice); Assert.Equal(expectedResult.ViewModel.RecipientId, actual.ViewModel.RecipientId); Assert.Equal(expectedResult.ViewModel.SenderId, actual.ViewModel.SenderId); Assert.Equal(expectedResult.ViewModel.SellerPhone, actual.ViewModel.SellerPhone); }