Esempio n. 1
0
 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);
     }
 }
Esempio n. 2
0
 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());
     }
 }
Esempio n. 3
0
 public void Insert(AdBindingModel model)
 {
     using (var context = new AdBoardDatabase())
     {
         context.Ads.Add(CreateModel(model, new Ad()));
         context.SaveChanges();
     }
 }
Esempio n. 4
0
 public void CreateOrUpdate(AdBindingModel model)
 {
     if (model.Id.HasValue)
     {
         _adStorage.Update(model);
     }
     else
     {
         _adStorage.Insert(model);
     }
 }
Esempio n. 5
0
        public void Delete(AdBindingModel model)
        {
            var element = _adStorage.GetElement(new AdBindingModel
            {
                Id = model.Id
            });

            if (element == null)
            {
                throw new Exception("Объявление не найдено");
            }
            _adStorage.Delete(model);
        }
Esempio n. 6
0
 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);
 }
Esempio n. 7
0
 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));
 }
Esempio n. 8
0
 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();
     }
 }
Esempio n. 9
0
 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("Клиент не найден");
         }
     }
 }
Esempio n. 10
0
        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);
        }
Esempio n. 12
0
        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);
        }