public IActionResult AddNewCampaign(NewCampaignRequest campaignRequest)
        {
            var errorList = ValidationHelper.ValidateNewCampaignRequest(campaignRequest);

            if (errorList.Count > 0)
            {
                return(BadRequest(errorList));
            }

            try
            {
                var clientExists = _clientDbService.ClientExists(campaignRequest.IdClient);
                if (!clientExists)
                {
                    throw new Exception("Client with id " + campaignRequest.IdClient + " DOESNT EXIST");
                }

                var onSameStreet =
                    _campaignsDbService.BuildingsOnSameStreet(campaignRequest.FromIdBuilding,
                                                              campaignRequest.ToIdBuilding);
                if (!onSameStreet)
                {
                    throw new Exception("Buildings MUST be located on the same street");
                }

                BestPriceWrapper priceWrapper = _campaignsDbService.GetBestPrice(campaignRequest);
                var response = _campaignsDbService.AddNewCampaign(campaignRequest, priceWrapper);
                return(StatusCode(201, response));
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }
示例#2
0
        public void AddNewCampaign_SUCCESS()
        {
            //Arrange
            var request = new NewCampaignRequest
            {
                StartDate      = "2020-07-01",
                EndDate        = "2020-08-01",
                IdClient       = 3,
                FromIdBuilding = 1,
                ToIdBuilding   = 2
            };

            var priceWrapper = new BestPriceWrapper
            {
                FirstBanner = new BannerWrapper
                {
                    BannerName = "abc"
                },
                SecondBanner = new BannerWrapper
                {
                    BannerName = "cba"
                },
                TotalPrice = new decimal(1000)
            };

            var targetResponse = new NewCampaignResponse
            {
                CampaignId = 100
            };

            _clientsMockDbService.Setup(service => service.ClientExists(request.IdClient))
            .Returns(true);
            _campaignsMockDbService.Setup(service =>
                                          service.BuildingsOnSameStreet(request.FromIdBuilding, request.ToIdBuilding))
            .Returns(true);
            _campaignsMockDbService.Setup(service => service.GetBestPrice(request))
            .Returns(priceWrapper);
            _campaignsMockDbService.Setup(service => service.AddNewCampaign(request, priceWrapper))
            .Returns(targetResponse);
            //Act
            var actionResult = _campaignsController.AddNewCampaign(request);

            //Assrt
            var createdObjectResult = actionResult as ObjectResult;

            Assert.NotNull(createdObjectResult);
            Assert.Equal(201, createdObjectResult.StatusCode);

            var resultResponse = createdObjectResult.Value as NewCampaignResponse;

            Assert.Equal(targetResponse, resultResponse);
        }
示例#3
0
        public NewCampaignResponse AddNewCampaign(NewCampaignRequest request, BestPriceWrapper wrapper)
        {
            int campaignId = CreateCampaign(request);

            CreateBanner(wrapper.FirstBanner, campaignId);
            CreateBanner(wrapper.SecondBanner, campaignId);

            return(new NewCampaignResponse
            {
                CampaignId = campaignId,
                FirstBanner = wrapper.FirstBanner,
                SecondBanner = wrapper.SecondBanner,
                TotalPrice = wrapper.TotalPrice
            });
        }