示例#1
0
        public CampaignsResponse GetAllCampaigns()
        {
            List <Client>   clientList    = _context.Client.ToList();
            List <Campaign> campaignsList = _context.Campaign.ToList();
            List <Banner>   bannersList   = _context.Banner.ToList();
            List <CampaignResponseWrapper> campaignResponses = new List <CampaignResponseWrapper>();

            foreach (var campaign in campaignsList)
            {
                var client = _clientDb.GetClientById(campaign.IdClient);
                CampaignResponseWrapper campaignsResponse =
                    CampaignToCampaignResponse.MapToCampaignResponse(campaign, client);
                List <BannerWrapper> bannerWrappers = new List <BannerWrapper>();

                foreach (var banner in campaign.Banner)
                {
                    BannerWrapper bannerWrapper = BannerToBannerWrapper.MapBannerToBannerWrapper(banner);
                    bannerWrappers.Add(bannerWrapper);
                }

                campaignsResponse.Banners = bannerWrappers;
                campaignResponses.Add(campaignsResponse);
            }

            campaignResponses = campaignResponses.OrderByDescending(response => response.StartDate).ToList();
            return(new CampaignsResponse
            {
                Campaigns = campaignResponses
            });
        }
示例#2
0
        private BestPriceWrapper CalculateTotalPrice(List <Building> buildings, decimal pricePerSquareMeter)
        {
            double        bestPrice    = 0.0;
            BannerWrapper firstBanner  = new BannerWrapper();
            BannerWrapper secondBanner = new BannerWrapper();

            for (int i = 0, j = 1; i < buildings.Count && j < buildings.Count; i++, j++)
            {
                firstBanner  = CreateBannersWithPrice(i, j, buildings, pricePerSquareMeter);
                secondBanner = CreateBannersWithPrice(j, buildings.Count, buildings, pricePerSquareMeter);
                if (i == 0)
                {
                    bestPrice = (double)(firstBanner.BannerPrice + secondBanner.BannerPrice);
                }
                else
                {
                    double total = (double)(firstBanner.BannerPrice + secondBanner.BannerPrice);
                    if (total < bestPrice)
                    {
                        bestPrice = total;
                    }
                }
            }

            return(new BestPriceWrapper
            {
                FirstBanner = firstBanner,
                SecondBanner = secondBanner,
                TotalPrice = (decimal)bestPrice
            });
        }
示例#3
0
        private int CreateBanner(BannerWrapper banner, int campaignId)
        {
            int bannerId = GetNewBannerId();

            _context.Banner.Add(new Banner
            {
                IdAdvertisement = bannerId,
                Name            = banner.BannerName,
                Area            = banner.BannerArea,
                Price           = banner.BannerPrice,
                IdCampaign      = campaignId
            });

            _context.SaveChanges();
            return(bannerId);
        }