public AdViewModel GetElement(AdBindingModel model) { if (model == null) { return(null); } using (var context = new AdBoardDatabase()) { var user = context.Ads .FirstOrDefault(rec => rec.Id == model.Id); return(user != null ? new AdViewModel { Id = rec.Id, Name = rec.Name, Username = rec.User.Username, Price = rec.Price, Date = rec.Date, Address = rec.Address, Description = rec.Description, Type = rec.Type, SubType = rec.SubType, UserId = rec.UserId } : null); } }
public List <AdViewModel> GetFilteredList(AdBindingModel model) { if (model == null) { return(null); } using (var context = new AdBoardDatabase()) { return(context.Ads .Select(rec => new AdViewModel { Id = rec.Id, Name = rec.Name, Username = rec.User.Username, Price = rec.Price, Date = rec.Date, Address = rec.Address, Description = rec.Description, Type = rec.Type, SubType = rec.SubType, UserId = rec.UserId }) .ToList()); } }
public void Insert(AdBindingModel model) { using (var context = new AdBoardDatabase()) { context.Ads.Add(CreateModel(model, new Ad())); context.SaveChanges(); } }
public void CreateOrUpdate(AdBindingModel model) { if (model.Id.HasValue) { _adStorage.Update(model); } else { _adStorage.Insert(model); } }
public void Delete(AdBindingModel model) { var element = _adStorage.GetElement(new AdBindingModel { Id = model.Id }); if (element == null) { throw new Exception("Объявление не найдено"); } _adStorage.Delete(model); }
private Ad CreateModel(AdBindingModel model, Ad ad) { ad.Id = model.Id; ad.Name = model.Name; ad.Price = model.Price; ad.Date = model.Date; ad.Address = model.Address; ad.Description = model.Description; ad.Type = model.Type; ad.SubType = model.SubType; ad.UserId = model.UserId; return(ad); }
public List <AdViewModel> Read(AdBindingModel model) { if (model == null) { return(_adStorage.GetFullList()); } if (model.Id.HasValue) { return(new List <AdViewModel> { _adStorage.GetElement(model) }); } return(_adStorage.GetFilteredList(model)); }
public void Update(AdBindingModel model) { using (var context = new AdBoardDatabase()) { var element = context.Ads.FirstOrDefault(rec => rec.Id == model.Id); if (element == null) { throw new Exception("Баланс не найден"); } CreateModel(model, element); context.SaveChanges(); } }
public void Delete(AdBindingModel model) { using (var context = new AdBoardDatabase()) { Ad element = context.Ads.FirstOrDefault(rec => rec.Id == model.Id); if (element != null) { context.Ads.Remove(element); context.SaveChanges(); } else { throw new Exception("Клиент не найден"); } } }
public async Task <IHttpActionResult> ChageAdStatus(AdBindingModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var collection = IlevusDBContext.Create().GetAdsCollection(); var filters = Builders <Ad> .Filter; try { if (model.Id != null) { var updates = Builders <Ad> .Update; var result = await collection.UpdateOneAsync( filters.Eq("Id", model.Id), updates.Combine( updates.Set("Active", model.Active) ) ); if (result.MatchedCount == 0) { return(BadRequest("Ad not found.")); } return(Ok(true)); } else { return(BadRequest("Ad not found.")); } } catch (Exception e) { return(InternalServerError(e)); } }
public IHttpActionResult Create(AdBindingModel model) { if (model == null) { return this.BadRequest("No data to create the ad with."); } if (!this.ModelState.IsValid) { return this.BadRequest(this.ModelState); } if (model.Categories == null) { return this.BadRequest("Ad categories are required."); } if (model.Categories.Count() < 1 || model.Categories.Count() > 3) { return this.BadRequest("Ad categories count must be between 1 and 3."); } var currnetUserId = this.UserProvider.GetUserId(); var newAd = new Ad { Name = model.Name, Description = model.Description, Price = model.Price, PostedOn = DateTime.Now, OwnerId = currnetUserId, Categories = new HashSet<Category>() }; foreach (var categoryId in model.Categories) { var existingCategory = this.Data.Categories.Find(categoryId); if (existingCategory == null) { return this.BadRequest("No category with the specified Id."); } newAd.Categories.Add(existingCategory); } var existingType = this.Data.AdTypes.Find(model.TypeId); if (existingType == null) { return this.BadRequest("No adtype with the specified id."); } newAd.Type = existingType; newAd.TypeId = existingType.Id; this.Data.Ads.Add(newAd); this.Data.SaveChanges(); var adViewModel = this.Data.Ads.All() .Where(a => a.Id == newAd.Id) .Select(AdViewModel.ToViewModel) .FirstOrDefault(); return this.Ok(adViewModel); }
public async Task <IHttpActionResult> SaveAd(AdBindingModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var collection = IlevusDBContext.Create().GetAdsCollection(); var filters = Builders <Ad> .Filter; try { if (model.Id != null) { var updates = Builders <Ad> .Update; var strDesktopImageName = model.Image_Desktop_old; if (!string.IsNullOrEmpty(model.Image_Desktop)) { var sd = IlevusDBContext.SystemDefinitions; strDesktopImageName = stroreImage(model.Image_Desktop); JToken token = JObject.Parse(IlevusDBContext.SystemDefinitions.definitions); string path = token.SelectToken("PathAds").ToString(); path = (!path.EndsWith(@"/") ? path + "/" : path); if (System.IO.File.Exists(HttpContext.Current.Server.MapPath(path) + model.Image_Desktop_old)) { System.IO.File.Delete(HttpContext.Current.Server.MapPath(path) + model.Image_Desktop_old); } } var strMobileImageName = model.Image_Mobile_old; if (!string.IsNullOrEmpty(model.Image_Mobile)) { var sd = IlevusDBContext.SystemDefinitions; //updates.Set("ImageMobile", stroreImage(model.Image_Mobile)); strMobileImageName = stroreImage(model.Image_Mobile); JToken token = JObject.Parse(IlevusDBContext.SystemDefinitions.definitions); string path = token.SelectToken("PathAds").ToString(); path = (!path.EndsWith(@"/") ? path + "/" : path); if (System.IO.File.Exists(HttpContext.Current.Server.MapPath(path) + model.Image_Mobile_old)) { System.IO.File.Delete(HttpContext.Current.Server.MapPath(path) + model.Image_Mobile_old); } } var result = await collection.UpdateOneAsync( filters.Eq("Id", model.Id), updates.Combine( updates.Set("Active", model.Active), updates.Set("Headline", model.Headline), updates.Set("Campaign", model.Campaign), updates.Set("Keywords", model.Keywords), updates.Set("DailyBudgetCap", Convert.ToDouble(model.DailyBudgetCap.Replace("R$", "").Replace(".", "").Trim())), updates.Set("Link", model.Link), updates.Set("ImageDesktop", strDesktopImageName), updates.Set("ImageMobile", strMobileImageName), updates.Set("Status", Enums.ModerationAds.WaitingAnalysis), updates.Set("Moderator", new UserModerator() { AnalysisHour = null, Email = "", Id = "" }) ) ); if (result.MatchedCount == 0) { return(BadRequest("Ad not found.")); } return(Ok(true)); } Ad ad = new Ad() { Active = model.Active, Headline = model.Headline, Campaign = model.Campaign, Keywords = model.Keywords, Link = model.Link, DailyBudgetCap = Convert.ToDouble(model.DailyBudgetCap.Replace("R$", "").Replace(".", "").Trim()), Status = Enums.ModerationAds.WaitingAnalysis }; if (!string.IsNullOrEmpty(model.Image_Desktop)) { var sd = IlevusDBContext.SystemDefinitions; ad.ImageDesktop = stroreImage(model.Image_Desktop); } if (!string.IsNullOrEmpty(model.Image_Mobile)) { var sd = IlevusDBContext.SystemDefinitions; ad.ImageMobile = stroreImage(model.Image_Mobile); } await collection.InsertOneAsync(ad); return(Ok(ad)); } catch (Exception e) { return(InternalServerError(e)); } }
public void CreateAd_Should_Successfully_Add_To_Repository() { var ads = new List<Ad>(); var fakeUser = this.mocks.UserRepositoryMock.Object.All() .FirstOrDefault(); if (fakeUser == null) { Assert.Fail("Cannot perform test - no users available."); } this.mocks.AdRepositoryMock.Setup(r => r.Add(It.IsAny<Ad>())) .Callback((Ad ad) => { ad.Owner = fakeUser; ads.Add(ad); }); var mockContext = new Mock<IOnlineShopData>(); mockContext.Setup(c => c.Ads) .Returns(this.mocks.AdRepositoryMock.Object); mockContext.Setup(c => c.AdTypes) .Returns(this.mocks.AdTypeRepositoryMock.Object); mockContext.Setup(c => c.Users) .Returns(this.mocks.UserRepositoryMock.Object); mockContext.Setup(c => c.Categories) .Returns(this.mocks.CategoryRepositoryMock.Object); var mockIdProvider = new Mock<IUserIdProvider>(); mockIdProvider.Setup(ip => ip.GetUserId()) .Returns(fakeUser.Id); var adsController = new AdsController(mockContext.Object, mockIdProvider.Object); this.ConfigureController(adsController); var randomName = Guid.NewGuid().ToString(); var newAd = new AdBindingModel { Name = randomName, Price = 555, TypeId = mockContext.Object.AdTypes.All().FirstOrDefault().Id, Description = "Nothing much to say", Categories = new[] { 1, 2, 3 } }; var response = adsController.Create(newAd) .ExecuteAsync(CancellationToken.None).Result; Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); mockContext.Verify(c => c.SaveChanges(), Times.Once); Assert.AreEqual(1, ads.Count); Assert.AreEqual(randomName, ads[0].Name); }