Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }