public void NewCampaign_Correct() { RegCampaignRequest request = new RegCampaignRequest { IdClient = 1, StartDate = DateTime.Now, EndDate = DateTime.Now.AddDays(20), PricePerSquareMeter = 3, FromIdBuilding = 1, ToIdBuilding = 2, }; var con = new ValidationContext(request, null, null); var res = new List <ValidationResult>(); Assert.IsTrue(Validator.TryValidateObject(request, con, res, true)); }
public IActionResult RegisterCampaign([FromBody] RegCampaignRequest req) { var exists = _context.Clients.Where(c => c.IdClient == req.IdClient).ToList(); if (exists.Count == 0) { return(StatusCode(401)); } var street1 = _context.Buildings.Where(p => p.IdBuilding == req.FromIdBuilding) .Select(p => p.Street); var street2 = _context.Buildings.Where(p => p.IdBuilding == req.ToIdBuilding) .Select(p => p.Street); if (!street1.Equals(street1)) { return(StatusCode(400)); } return(_service.RegisterCampaign(_context, req)); }
public IActionResult RegisterCampaign(MyDbContext _context, RegCampaignRequest request) { try { Building buildingF = _context.Buildings.Where(p => p.IdBuilding == request.FromIdBuilding).ToList().First(); Building buildingT = _context.Buildings.Where(p => p.IdBuilding == request.ToIdBuilding).ToList().First(); List <Building> allCampaignBuildings = _context.Buildings .Where(p => p.StreetNumber >= buildingF.StreetNumber && p.StreetNumber <= buildingT.StreetNumber) .OrderByDescending(p => p.StreetNumber).ToList(); decimal high1 = 0; decimal high2 = 0; var sortByHigh = allCampaignBuildings.OrderByDescending(p => p.Height).ToList(); Building highestBuilding = sortByHigh[0]; Building hightestBuilding2 = sortByHigh[1]; if ((highestBuilding.IdBuilding == buildingF.IdBuilding) || highestBuilding.IdBuilding == buildingT.IdBuilding) { high1 = highestBuilding.Height * 1; high2 = hightestBuilding2.Height * (sortByHigh.Count - 1); } else { if (highestBuilding.StreetNumber < hightestBuilding2.StreetNumber) { high1 = (highestBuilding.StreetNumber - buildingF.StreetNumber) * highestBuilding.Height; high2 = (highestBuilding.StreetNumber - buildingT.StreetNumber) * hightestBuilding2.Height; } else { high1 = (highestBuilding.StreetNumber - buildingT.StreetNumber) * highestBuilding.Height; high2 = (highestBuilding.StreetNumber - buildingF.StreetNumber) * hightestBuilding2.Height; } } decimal priceForBanner1 = high1 * request.PricePerSquareMeter; decimal priceForBanner2 = high2 * request.PricePerSquareMeter; Campaign camp = new Campaign { IdClient = request.IdClient, StartDate = request.StartDate, EndDate = request.EndDate, PricePerSquareMeter = request.PricePerSquareMeter, FromIdBuilding = request.FromIdBuilding, ToIdBuilding = request.ToIdBuilding }; _context.Campaigns.Add(camp); _context.SaveChanges(); Banner b1 = new Banner { Name = 1, Price = priceForBanner1, IdCampaign = camp.IdCampaign, Area = high1 }; Banner b2 = new Banner { Name = 2, Price = priceForBanner2, IdCampaign = camp.IdCampaign, Area = high2 }; _context.Banners.Add(b1); _context.Banners.Add(b2); _context.SaveChanges(); _context.Campaigns.ToList(); return(StatusCode(201, new CampaignResponse { IdCampaign = camp.IdCampaign, IdClient = camp.IdClient, EndDate = camp.EndDate, StartDate = camp.StartDate, FromIdBuilding = camp.FromIdBuilding, PricePerSquareMeter = camp.PricePerSquareMeter, ToIdBuilding = camp.ToIdBuilding, Banners = camp.Banners })); } catch (Exception e) { return(BadRequest()); } }