Example #1
0
        /// <summary>
        /// This method adds the new Bar to the DataBase after checking if it does not exists already
        /// </summary>
        /// <param name="barToCreate">This is the newly created Bar object</param>
        /// <returns>Task</returns>
        public async Task CreateBar(BarDTO barToCreate)
        {
            try
            {
                var barToAdd = _barFactory.CreateNewBar(barToCreate.Name, barToCreate.Address, barToCreate.Information, barToCreate.Picture, barToCreate.MapDirection);

                var barToFind = _context.Bars.SingleOrDefault(bar => bar.Name == barToAdd.Name && bar.Address == barToAdd.Address && !bar.IsDeleted);

                if (barToFind != null)
                {
                    throw new InvalidOperationException("Bar already exists in the database!");
                }
                await _context.Bars.AddAsync(barToAdd);

                await _context.SaveChangesAsync();
            }
            catch (InvalidOperationException)
            {
                throw new InvalidOperationException("Bar already exists in the database!");
            }
            catch (Exception)
            {
                throw new Exception("Wrong parameters for Bar!");
            }
        }
        public async Task <CocktailDTO> Create(CocktailDTO cocktailDTO)
        {
            if (this.context.Bars.Any(b => b.Name == cocktailDTO.Name))
            {
                throw new ArgumentException("The name is already existing");
            }

            if (cocktailDTO.Name == null)
            {
                throw new ArgumentNullException("The name is mandatory");
            }

            var cocktail = new Cocktail
            {
                Id = cocktailDTO.Id,
                AlcoholPercentage = cocktailDTO.AlcoholPercentage,
                Bars        = cocktailDTO.Bars,
                Comments    = cocktailDTO.Comments,
                ImageURL    = cocktailDTO.ImageURL,
                Ingredients = cocktailDTO.Ingredients,
                IsAlcoholic = cocktailDTO.IsAlcoholic,
                Name        = cocktailDTO.Name,
                Rating      = cocktailDTO.Rating,
                Stars       = cocktailDTO.Stars
            };

            await context.Cocktails.AddAsync(cocktail);

            await context.SaveChangesAsync();


            return(cocktail.Map());
        }
Example #3
0
        /// <summary>
        /// Adds the new bar to the database after checking if it does not exists already.
        /// </summary>
        /// <param name="barToCreate">This is the newly created Bar object</param>
        /// <returns>BarDTO</returns>
        public async Task <BarDTO> CreateBar(BarDTO barDTO)
        {
            if (this.context.Bars.Any(b => b.Name == barDTO.Name))
            {
                throw new ArgumentException(Exceptions.NameExists);
            }

            if (barDTO.Name == null)
            {
                throw new ArgumentNullException(Exceptions.MissingName);
            }

            var country = await this.context.Countries
                          .Where(c => c.IsDeleted == false)
                          .FirstOrDefaultAsync(c => c.Id == barDTO.CountryId || c.Name == barDTO.CountryName)
                          ?? throw new ArgumentNullException(Exceptions.EntityNotFound);

            var bar = barDTO.GetEntity();

            await context.Bars.AddAsync(bar);

            await context.SaveChangesAsync();

            return(bar.GetDTO());
        }
Example #4
0
        public async Task <IActionResult> Create(CqasPersona ascqpersona)
        {
            Response response = new Response();

            try
            {
                if (ascqpersona.FechaNacimiento > DateTime.Now)
                {
                    Combox();
                    InicializarMensaje("Fecha de nacimiento incorrecta");
                    return(View(ascqpersona));
                }


                if (!ExistePersona(ascqpersona))
                {
                    _context.CqasPersona.Add(ascqpersona);

                    await _context.SaveChangesAsync();

                    return(RedirectToAction("Index"));
                }
                Combox();
                InicializarMensaje("Numero de cedula registrada");
                return(View(ascqpersona));
            }
            catch (Exception ex)
            {
                Combox();
                return(View(ascqpersona));
            }
        }
        public async Task <Bar> Create(BarDTO barDTO)
        {
            if (this.context.Bars.Any(b => b.Name == barDTO.Name))
            {
                throw new ArgumentException("The name is already existing");
            }

            if (barDTO.Name == null)
            {
                throw new ArgumentNullException("The name is mandatory");
            }

            var bar = new Bar
            {
                Name      = barDTO.Name,
                Country   = barDTO.Country,
                City      = barDTO.City,
                Address   = barDTO.Address,
                Phone     = barDTO.Phone,
                Cocktails = barDTO.Cocktails,
                ImageURL  = barDTO.ImageURL,
                CreatedOn = DateTime.UtcNow
            };

            await context.Bars.AddAsync(bar);

            await context.SaveChangesAsync();


            return(bar);
        }
Example #6
0
        public async Task <CityDTO> CreateCityAsync(CityDTO cityDTO)
        {
            var city = cityDTO.CityDTOMapToModel();
            await _cmContext.AddAsync(city);

            await _cmContext.SaveChangesAsync();

            return(cityDTO);
        }
        public async Task AddIngredient(IngredientDTO ingredientDto) //tested
        {
            ingredientDto.ValidateIfNull(ExceptionMessages.IngredientDtoNull);
            var ingredientCtx = ingredientDto.MapToCtxModel();

            ingredientCtx.ValidateIfNull(ExceptionMessages.IngredientNull);
            _context.Add(ingredientCtx);
            await _context.SaveChangesAsync();
        }
        public async Task SetProfilePictureURL(string userId, string url) //tested
        {
            userId.ValidateIfNull(ExceptionMessages.IdNull);
            var user = await _context.Users.Where(u => u.Id == userId && u.DateDeleted == null)
                       .FirstOrDefaultAsync();

            user.ValidateIfNull(ExceptionMessages.AppUserNull);
            user.ImageURL = url;
            await _context.SaveChangesAsync();
        }
Example #9
0
        public async Task <IActionResult> Create([Bind("ID,Name,DateOfBirth,Notes")] Professor professor)
        {
            if (ModelState.IsValid)
            {
                _context.Add(professor);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(professor));
        }
        public async Task <IActionResult> Create([Bind("ID,Name,Description")] University university)
        {
            if (ModelState.IsValid)
            {
                _context.Add(university);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(university));
        }
Example #11
0
        public async Task <IActionResult> Create([Bind("ID,Name,Content,UniversityID")] StudyPlan studyPlan)
        {
            if (ModelState.IsValid)
            {
                _context.Add(studyPlan);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["UniversityID"] = new SelectList(_context.Universities, "ID", "ID", studyPlan.UniversityID);
            return(View(studyPlan));
        }
        public async Task <CocktailReviewLikeDTO> AddCocktailReviewLike(Guid cocktailReviewId, string userName)
        {
            var cReview = await _cmContext.CocktailReviews
                          .FirstOrDefaultAsync(cr => cr.Id == cocktailReviewId);

            if (cReview == null)
            {
                throw new ArgumentNullException("Cocktail review not found!");
            }

            var user = await _cmContext.Users
                       .FirstOrDefaultAsync(u => u.UserName == userName);

            if (user == null)
            {
                throw new ArgumentNullException("User not found!");
            }

            var cocktailReviewLike = await _cmContext.CocktailReviewLikes
                                     .FirstOrDefaultAsync(cr => cr.CocktailReviewId == cocktailReviewId && cr.UserId == user.Id);

            if (cocktailReviewLike == null)
            {
                var cocktailReviewLikeNew = new CocktailReviewLike
                {
                    CocktailReviewId = cReview.Id,
                    UserId           = user.Id,
                    IsLiked          = true
                };
                try
                {
                    await _cmContext.CocktailReviewLikes.AddAsync(cocktailReviewLikeNew);

                    await _cmContext.SaveChangesAsync();

                    var cocktailReviewLikeNewDTO = cocktailReviewLikeNew.CocktailReviewLikeMapToDTO();
                    return(cocktailReviewLikeNewDTO);
                }
                catch (Exception)
                {
                    throw new InvalidOperationException("Cannot add into database!");
                }
            }
            else
            {
                cocktailReviewLike.IsLiked = true;
                await _cmContext.SaveChangesAsync();
            }

            var cocktailReviewLikeDTO = cocktailReviewLike.CocktailReviewLikeMapToDTO();

            return(cocktailReviewLikeDTO);
        }
Example #13
0
        public async Task AddIngredientAsync(IngredientDTO ingredient)
        {
            if (!CheckIfIngredientExist(ingredient.Name))
            {
                await _context.Ingredients.AddAsync(ingredient.ToEntity());

                await _context.SaveChangesAsync();
            }
            else
            {
                throw new ArgumentException("Ingredient already exists!");
            }
        }
        public async Task <IActionResult> Create([Bind("Id,BarId,UserId,Rating,Comment,DeletedOn,ReviewedOn")] BarReview barReview)
        {
            if (ModelState.IsValid)
            {
                barReview.Id = Guid.NewGuid();
                _context.Add(barReview);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["BarId"]  = new SelectList(_context.Bars, "Id", "Address", barReview.BarId);
            ViewData["UserId"] = new SelectList(_context.Users, "Id", "Email", barReview.UserId);
            return(View(barReview));
        }
Example #15
0
        public async Task <IActionResult> Create(CqasUsuario cqasUsuario)
        {
            try
            {
                _context.CqasUsuario.Add(cqasUsuario);
                await _context.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                return(View(cqasUsuario));
            }
        }
        public async Task <CocktailDTO> CreateCocktail(CocktailDTO cocktailDTO)
        {
            if (cocktailDTO == null)
            {
                throw new ArgumentNullException("Cocktail doesn't exist!");
            }

            var cocktail = cocktailDTO.CocktailDTOMapToModel();

            await _cmContext.Cocktails.AddAsync(cocktail);

            await _cmContext.SaveChangesAsync();

            return(cocktailDTO);
        }
Example #17
0
        public async Task <IActionResult> Create(CqasMenu cqasMenu)
        {
            try
            {
                cqasMenu.Estado = 1;
                _context.CqasMenu.Add(cqasMenu);
                await _context.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                return(View(cqasMenu));
            }
        }
Example #18
0
        public async Task <IngredientDTO> CreateIngredient(IngredientDTO ingredientDTO)
        {
            if (ingredientDTO == null)
            {
                throw new ArgumentNullException("Ingredient doesn't exist!");
            }

            var ingredient = ingredientDTO.IngredientDTOMapToModel();

            await _cmContext.Ingredients.AddAsync(ingredient);

            await _cmContext.SaveChangesAsync();

            return(ingredientDTO);
        }
        public async Task <BarReviewDTO> CreateBarReviewAsync(Guid barId, Guid userId, int rating, string comment)
        {
            var barReviewExists = await _cmContext.BarReviews.AnyAsync(br => br.UserId == userId && br.BarId == barId && br.DeletedOn == null);

            if (barReviewExists)
            {
                throw new ArgumentException("This bar has already been reviewed by the user");
            }

            var bar = await _cmContext.Bars.Where(b => b.Id == barId && b.UnlistedOn == null).FirstOrDefaultAsync();

            if (bar == null)
            {
                throw new ArgumentNullException("Bar is not available.");
            }

            var userExists = await _cmContext.Users.AnyAsync(u => u.Id == userId && u.DeletedOn == null);

            if (!userExists)
            {
                throw new ArgumentNullException("User is not available");
            }
            if (rating < 1 || rating > 5)
            {
                throw new ArgumentOutOfRangeException("Rating must be bewtween 1 and 5.");
            }
            var barReview = new BarReview();

            barReview.BarId      = barId;
            barReview.UserId     = userId;
            barReview.Rating     = rating;
            barReview.Comment    = comment;
            barReview.ReviewedOn = DateTime.UtcNow;
            try
            {
                bar.AvgRating = await this.CalculateAvgRating(barId, rating);

                _cmContext.BarReviews.Add(barReview);
                await _cmContext.SaveChangesAsync();
            }
            catch (Exception)
            {
                throw;
            }
            var barReviewDTO = barReview.BarMapReviewDTO();

            return(barReviewDTO);
        }
Example #20
0
        public async Task ExcludeDeletedCocktails_WhenCalled()
        {
            var options = TestUtils.GetOptions(nameof(ExcludeDeletedCocktails_WhenCalled));

            using (var arrangeContext = new CMContext(options))
            {
                for (int i = 0; i < 4; i++)
                {
                    arrangeContext.Add(new Cocktail());
                }
                ;
                arrangeContext.Add(new Cocktail()
                {
                    DateDeleted = DateTime.Now
                });
                arrangeContext.Add(new Cocktail()
                {
                    DateDeleted = DateTime.Now
                });
                await arrangeContext.SaveChangesAsync();
            }
            using (var assertContext = new CMContext(options))
            {
                var sut = new CocktailServices(assertContext, _fileUploadService.Object,
                                               _ingredientServices.Object, _recipeServices.Object);
                var result = await sut.GetPageCountForCocktials(2);

                Assert.AreEqual(2, result);
            }
        }
Example #21
0
        public async Task CallNotificationManagerForEditNewCocktail_WithCorrectParameters()
        {
            var options = TestUtils.GetOptions(nameof(CallNotificationManagerForEditNewCocktail_WithCorrectParameters));

            var adminName    = "pesho";
            var id           = "1";
            var oldName      = "oldCocktail";
            var cocktailName = "newCocktail";

            var admin = new AppUser
            {
                Id       = id,
                UserName = adminName
            };

            _userServices.Setup(x => x.GetUsernameById(id))
            .ReturnsAsync(admin.UserName);
            _userServices.Setup(x => x.GetAdmin())
            .ReturnsAsync(admin);
            _iNotificationManager.Setup(x => x.CocktailEditedDescription(adminName, oldName, cocktailName))
            .Returns($"LALALALA");

            using (var arrangeContext = new CMContext(options))
            {
                arrangeContext.Add(admin);
                await arrangeContext.SaveChangesAsync();

                var sut = new NotificationServices(arrangeContext, _userServices.Object,
                                                   _iNotificationManager.Object);
                await sut.CocktailEditNotificationToAdminAsync(id, oldName, cocktailName);

                _iNotificationManager.Verify(x => x.CocktailEditedDescription(adminName, oldName, cocktailName), Times.Once());
            }
        }
Example #22
0
        public async Task AddNotificationToDBForEditCocktailWithCorrectDecription_WithCorrectParameters()
        {
            var options = TestUtils.GetOptions(nameof(AddNotificationToDBForEditCocktailWithCorrectDecription_WithCorrectParameters));

            var adminName    = "pesho";
            var id           = "1";
            var oldName      = "oldCocktail";
            var cocktailName = "newCocktail";
            var admin        = new AppUser
            {
                Id       = id,
                UserName = adminName
            };

            _userServices.Setup(x => x.GetUsernameById(id))
            .ReturnsAsync(admin.UserName);
            _userServices.Setup(x => x.GetAdmin())
            .ReturnsAsync(admin);
            _iNotificationManager.Setup(x => x.CocktailEditedDescription(adminName, oldName, cocktailName))
            .Returns("LALALALALA");

            using (var arrangeContext = new CMContext(options))
            {
                arrangeContext.Add(admin);
                await arrangeContext.SaveChangesAsync();

                Assert.AreEqual(0, arrangeContext.Notifications.Count());
                var sut = new NotificationServices(arrangeContext, _userServices.Object,
                                                   _iNotificationManager.Object);
                await sut.CocktailEditNotificationToAdminAsync(id, oldName, cocktailName);

                Assert.AreEqual("LALALALALA", arrangeContext.Notifications.First().Description);
                Assert.AreEqual(adminName, arrangeContext.Notifications.First().Username);
            }
        }
        public async Task CreateCocktail_Throws_When_NameExists()
        {
            //Arrange
            var options = Utils.GetOptions(nameof(CreateCocktail_Throws_When_NameExists));

            var cocktail = new Cocktail
            {
                Id   = Guid.NewGuid(),
                Name = "Cuba Libre"
            };

            var cocktailDTO = new CocktailDTO
            {
                Name = "Cuba Libre"
            };

            using (var arrangeContext = new CMContext(options))
            {
                await arrangeContext.Cocktails.AddAsync(cocktail);

                await arrangeContext.SaveChangesAsync();
            }

            //Act, Assert
            using (var assertContext = new CMContext(options))
            {
                var sut = new CocktailServices(assertContext);

                await Assert.ThrowsExceptionAsync <ArgumentException>(() => sut.CreateCocktail(cocktailDTO));
            }
        }
        public async Task ThrowCorrectMessage_WhenPassedBarIsNull()
        {
            var options = TestUtils.GetOptions(nameof(ThrowCorrectMessage_WhenPassedBarIsNull));
            var user    = new AppUser {
                Id = "1"
            };
            var barReviewDTO = new BarReviewDTO
            {
                Rating      = 10,
                Description = "10",
                UserID      = "1",
                BarId       = "2"
            };

            using (var arrangeContext = new CMContext(options))
            {
                var sut = new ReviewServices(arrangeContext);
                arrangeContext.Add(user);
                await arrangeContext.SaveChangesAsync();

                var ex = await Assert.ThrowsExceptionAsync <MagicException>(
                    async() => await sut.CreateBarReview(barReviewDTO)
                    );

                Assert.AreEqual(ExceptionMessages.BarNull, ex.Message);
            }
        }
        public async Task SetsNewRating_WhenValidModelIsPassed()
        {
            var options = TestUtils.GetOptions(nameof(SetsNewRating_WhenValidModelIsPassed));
            var user    = new AppUser {
                Id = "1"
            };
            var bar = new Bar {
                Id = "2"
            };
            var barReviewDTO = new BarReviewDTO
            {
                Rating      = 8,
                Description = "10",
                UserID      = "1",
                BarId       = "2"
            };
            var review = new BarReview {
                Rating = 10, Description = "0100101", BarId = "2"
            };

            using (var arrangeContext = new CMContext(options))
            {
                var sut = new ReviewServices(arrangeContext);
                arrangeContext.Add(user);
                arrangeContext.Add(bar);
                arrangeContext.Add(review);
                await arrangeContext.SaveChangesAsync();

                await sut.CreateBarReview(barReviewDTO);

                Assert.AreEqual(9, arrangeContext.Bars.First().BarRating);
            }
        }
        public async Task ThrowExceptionWithCorrectMessage_WhenUserAlreadyReviewedBar()
        {
            var options = TestUtils.GetOptions(nameof(ThrowExceptionWithCorrectMessage_WhenUserAlreadyReviewedBar));
            var user    = new AppUser {
                Id = "1"
            };
            var bar = new Bar {
                Id = "2"
            };
            var barReviewDTO = new BarReviewDTO
            {
                Rating      = 10,
                Description = "10",
                UserID      = "1",
                BarId       = "2"
            };
            var review = new BarReview {
                Rating = 5, Description = "0100101", UserId = "1", BarId = "2"
            };

            using (var arrangeContext = new CMContext(options))
            {
                var sut = new ReviewServices(arrangeContext);
                arrangeContext.Add(user);
                arrangeContext.Add(bar);
                arrangeContext.Add(review);
                await arrangeContext.SaveChangesAsync();

                var ex = await Assert.ThrowsExceptionAsync <MagicException>(
                    async() => await sut.CreateBarReview(barReviewDTO)
                    );

                Assert.AreEqual("You have already reviewed this bar!", ex.Message);
            }
        }
        public async Task AddCorrectReviewToDB_WhenValidModelIsPassed()
        {
            var options = TestUtils.GetOptions(nameof(AddCorrectReviewToDB_WhenValidModelIsPassed));
            var user    = new AppUser {
                Id = "1"
            };
            var bar = new Bar {
                Id = "2"
            };
            var barReviewDTO = new BarReviewDTO
            {
                Rating      = 10,
                Description = "10",
                UserID      = "1",
                BarId       = "2"
            };

            using (var arrangeContext = new CMContext(options))
            {
                var sut = new ReviewServices(arrangeContext);
                arrangeContext.Add(user);
                arrangeContext.Add(bar);
                await arrangeContext.SaveChangesAsync();

                await sut.CreateBarReview(barReviewDTO);

                Assert.AreEqual(10, arrangeContext.BarReviews.First().Rating);
                Assert.AreEqual("10", arrangeContext.BarReviews.First().Description);
                Assert.AreEqual("1", arrangeContext.BarReviews.First().UserId);
                Assert.AreEqual("2", arrangeContext.BarReviews.First().BarId);
            }
        }
Example #28
0
        public async Task <BarDTO> CreateBarAsync(BarDTO barDTO)
        {
            try
            {
                var bar = barDTO.BarDTOMapToModel();
                await _cmContext.Bars.AddAsync(bar);

                await _cmContext.SaveChangesAsync();

                return(barDTO);
            }
            catch (Exception)
            {
                throw;
            }
        }
Example #29
0
        public async Task GetCityAsync_Correct()
        {
            //Arrange
            var options = Utils.GetOptions(nameof(GetCityAsync_Correct));
            var cityId  = Guid.Parse("cc44371d-594f-4c47-a82b-e606bede8d3b");
            var city    = new City()
            {
                Id   = cityId,
                Name = "Varna"
            };

            using (var arrangeContext = new CMContext(options))
            {
                arrangeContext.Cities.Add(city);
                await arrangeContext.SaveChangesAsync();
            }

            //Act,Assert
            using (var assertContext = new CMContext(options))
            {
                var sut = new CityService(assertContext);

                var result = await sut.GetCityAsync(cityId);

                Assert.AreEqual(cityId, result.Id);
                Assert.IsInstanceOfType(result, typeof(CityDTO));
            }
        }
        public async Task LikeCocktailReview_WhenValidBarIdIsPassed()
        {
            var options = TestUtils.GetOptions(nameof(LikeCocktailReview_WhenValidBarIdIsPassed));

            var cocktail = new Cocktail {
                Id = "2"
            };
            var user = new AppUser {
                Id = "1"
            };
            var review1 = new CocktailReview {
                Id = "1", Rating = 6, Description = "0100101", UserId = user.Id, CocktailId = "2"
            };
            var review2 = new CocktailReview {
                Id = "2", Rating = 10, Description = "0100101", UserId = user.Id, CocktailId = "2"
            };

            //var like1 = new BarReviewLike { Id = "1", BarReviewID = "1" , AppUserID = "1"};
            //var like2 = new BarReviewLike { Id = "2", BarReviewID = "2", AppUserID="1" };
            using (var arrangeContext = new CMContext(options))
            {
                var sut = new ReviewServices(arrangeContext);
                arrangeContext.Add(cocktail);
                arrangeContext.Add(user);
                arrangeContext.Add(review1);
                arrangeContext.Add(review2);
                await arrangeContext.SaveChangesAsync();

                await sut.LikeCocktailReview(cocktail.Id, user.Id);

                Assert.AreEqual("1", arrangeContext.CocktailReviews.First().UserId);
                Assert.AreEqual("2", arrangeContext.CocktailReviews.First().CocktailId);
            }
        }