예제 #1
0
        /// <summary>
        /// Az aktuális felhasználóhoz tartozó étterem adatainak szerkesztése.
        /// </summary>
        /// <param name="editRestaurant">Az étterem módosítandó adatai.</param>
        /// <returns>Az étterem módosított részletes adatai.</returns>
        public async Task <RestaurantDetailsDto> EditMyRestaurant(EditRestaurantDto editRestaurant)
        {
            string userId            = httpContext.GetCurrentUserId();
            int    ownerRestaurantId = await userRepository.GetMyRestaurantId(userId);

            return(await restaurantRepository.EditRestaurant(ownerRestaurantId, editRestaurant));
        }
예제 #2
0
        public async Task EditMyRestaurantDetails_WhereUserIsGuest()
        {
            //Arrange
            var editRestaurant = new EditRestaurantDto
            {
                Name                = "Teszt Étterem",
                ShortDescription    = "Az étterem ismertetője.",
                DetailedDescription = "Az étterem leírása.",
                Address             = new CreateOrEditAddressDto
                {
                    ZipCode     = 1018,
                    City        = "Budapest",
                    Street      = "Kossuth utca 11",
                    PhoneNumber = "06-30-192-1234"
                }
            };

            var accessToken = await authServer.GetAccessToken("*****@*****.**", "Test.54321"); //Vendég felhasználó

            var client = webApiServer.CreateClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);

            //Act
            var editRestaurnatResponse = await client.PutAsJsonAsync("/api/restaurant/myrestaurant", editRestaurant);

            //Assert
            Assert.Equal(HttpStatusCode.Forbidden, editRestaurnatResponse.StatusCode);
        }
예제 #3
0
        public ActionResult <Restaurant> Put(int id, [FromBody] EditRestaurantDto dto)
        {
            Request.Headers.TryGetValue("User-Id", out var userId);
            var restaurant = _context.Restaurants
                             .Include(x => x.Location)
                             .SingleOrDefault(x => x.Id == id);

            if (restaurant == null)
            {
                return(NotFound());
            }

            if (restaurant.ManagerId != Guid.Parse(userId))
            {
                return(Forbid());
            }

            restaurant.Name               = dto.Name;
            restaurant.Email              = dto.Email;
            restaurant.Phone              = dto.Phone;
            restaurant.Location.Latitude  = dto.Location.Lat;
            restaurant.Location.Longitude = dto.Location.Lng;
            _context.SaveChanges();
            return(restaurant);
        }
        public ActionResult Edit([FromRoute] int id, [FromBody] EditRestaurantDto dto)
        {
            // atrybut [ApiControler] ogarnia sprawę
            //if (!ModelState.IsValid)
            //{
            //    return BadRequest(ModelState);
            //}

            _restaurantService.Edit(id, dto);

            return(NoContent());
        }
예제 #5
0
        public async Task EditMyRestaurantDetails_WhereUserIsRestaurantOwner()
        {
            //Arrange
            int restaurantId   = 1;
            var editRestaurant = new EditRestaurantDto
            {
                Name                = "Teszt Étterem",
                ShortDescription    = "Az étterem ismertetője.",
                DetailedDescription = "Az étterem leírása.",
                Address             = new CreateOrEditAddressDto
                {
                    ZipCode     = 1018,
                    City        = "Budapest",
                    Street      = "Kossuth utca 11",
                    PhoneNumber = "06-30-192-1234"
                }
            };

            var accessToken = await authServer.GetAccessToken("*****@*****.**", "Test.54321"); //Az 1-es azonosítójú étterem tulajdonosa

            var client = webApiServer.CreateClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);

            //Act
            var editRestaurnatResponse = await client.PutAsJsonAsync("/api/restaurant/myrestaurant", editRestaurant);

            var editedRestaurant = await editRestaurnatResponse.Content.ReadFromJsonAsync <RestaurantDetailsDto>();

            var savedRestaurant = await client.GetAsync("/api/restaurant/" + restaurantId).Result.Content.ReadFromJsonAsync <RestaurantDetailsDto>();

            //Assert
            Assert.Equal(HttpStatusCode.OK, editRestaurnatResponse.StatusCode);
            Assert.Equal(restaurantId, editedRestaurant.Id);
            Assert.Equal(editRestaurant.Name, editedRestaurant.Name);
            Assert.Equal(editRestaurant.ShortDescription, editedRestaurant.ShortDescription);
            Assert.Equal(editRestaurant.DetailedDescription, editedRestaurant.DetailedDescription);
            Assert.Equal(editRestaurant.Address.ZipCode, editedRestaurant.RestaurantAddress.ZipCode);
            Assert.Equal(editRestaurant.Address.City, editedRestaurant.RestaurantAddress.City);
            Assert.Equal(editRestaurant.Address.Street, editedRestaurant.RestaurantAddress.Street);
            Assert.Equal(editRestaurant.Address.PhoneNumber, editedRestaurant.RestaurantAddress.PhoneNumber);

            Assert.Equal(restaurantId, savedRestaurant.Id);
            Assert.Equal(editRestaurant.Name, savedRestaurant.Name);
            Assert.Equal(editRestaurant.ShortDescription, savedRestaurant.ShortDescription);
            Assert.Equal(editRestaurant.DetailedDescription, savedRestaurant.DetailedDescription);
            Assert.Equal(editRestaurant.Address.ZipCode, savedRestaurant.RestaurantAddress.ZipCode);
            Assert.Equal(editRestaurant.Address.City, savedRestaurant.RestaurantAddress.City);
            Assert.Equal(editRestaurant.Address.Street, savedRestaurant.RestaurantAddress.Street);
            Assert.Equal(editRestaurant.Address.PhoneNumber, savedRestaurant.RestaurantAddress.PhoneNumber);
        }
예제 #6
0
        public async Task EditRestaurant_WhichExists()
        {
            //Arrange
            const int editRestaurantId = 1;
            var       editRestaurant   = new EditRestaurantDto
            {
                Name                = "Teszt Étterem",
                ShortDescription    = "Az étterem ismertetõje.",
                DetailedDescription = "Az étterem leírása.",
                Address             = new CreateOrEditAddressDto
                {
                    ZipCode     = 1018,
                    City        = "Budapest",
                    Street      = "Kossuth utca 11",
                    PhoneNumber = "06301921234"
                }
            };

            using (var dbContext = CreateDbContext())
            {
                var repository = helper.CreateRestaurantRepository(dbContext);

                //Act
                var editedRestaurant = await repository.EditRestaurant(editRestaurantId, editRestaurant);

                //Assert
                Assert.Equal(editRestaurant.Name, editedRestaurant.Name);
                Assert.Equal(editRestaurant.ShortDescription, editedRestaurant.ShortDescription);
                Assert.Equal(editRestaurant.DetailedDescription, editedRestaurant.DetailedDescription);
                Assert.Equal(editRestaurant.Address.ZipCode, editedRestaurant.RestaurantAddress.ZipCode);
                Assert.Equal(editRestaurant.Address.City, editedRestaurant.RestaurantAddress.City);
                Assert.Equal(editRestaurant.Address.Street, editedRestaurant.RestaurantAddress.Street);
                Assert.Equal(editRestaurant.Address.PhoneNumber, editedRestaurant.RestaurantAddress.PhoneNumber);
            }

            using (var dbContext = CreateDbContext())
            {
                var savedRestaurant = await dbContext.Restaurants.SingleOrDefaultAsync(r => r.Id == editRestaurantId);

                Assert.Equal(editRestaurant.Name, savedRestaurant.Name);
                Assert.Equal(editRestaurant.ShortDescription, savedRestaurant.ShortDescription);
                Assert.Equal(editRestaurant.DetailedDescription, savedRestaurant.DetailedDescription);
                Assert.Equal(editRestaurant.Address.ZipCode, savedRestaurant.Address.ZipCode);
                Assert.Equal(editRestaurant.Address.City, savedRestaurant.Address.City);
                Assert.Equal(editRestaurant.Address.Street, savedRestaurant.Address.Street);
                Assert.Equal(editRestaurant.Address.PhoneNumber, savedRestaurant.Address.PhoneNumber);
            }
        }
예제 #7
0
        /// <summary>
        /// A megadott azonosítójú étterem adatainak módosítása.
        /// Ha a megadott azonosítóval étterem nem található, akkor kivételt dobunk.
        /// </summary>
        /// <param name="restaurantId">Az étterem azonosítója.</param>
        /// <param name="editRestaurant">Az étterem módosítandó adatai.</param>
        /// <returns>Az étterem részletes adatai.</returns>
        public async Task <RestaurantDetailsDto> EditRestaurant(int restaurantId, EditRestaurantDto editRestaurant)
        {
            var dbRestaurant = (await dbContext.Restaurants
                                .SingleOrDefaultAsync(r => r.Id == restaurantId))
                               .CheckIfRestaurantNull();

            dbRestaurant.Name                = editRestaurant.Name;
            dbRestaurant.ShortDescription    = editRestaurant.ShortDescription;
            dbRestaurant.DetailedDescription = editRestaurant.DetailedDescription;
            dbRestaurant.Address.ZipCode     = editRestaurant.Address.ZipCode;
            dbRestaurant.Address.City        = editRestaurant.Address.City;
            dbRestaurant.Address.Street      = editRestaurant.Address.Street;
            dbRestaurant.Address.PhoneNumber = editRestaurant.Address.PhoneNumber;

            await dbContext.SaveChangesAsync();

            return(await dbContext.Entry(dbRestaurant).ToRestaurantDetailsDto());
        }
예제 #8
0
        public ActionResult <Restaurant> Post([FromBody] EditRestaurantDto dto)
        {
            Request.Headers.TryGetValue("User-Id", out var userId);
            var restaurant = new Restaurant
            {
                Name     = dto.Name,
                Email    = dto.Email,
                Phone    = dto.Phone,
                Location = new Location
                {
                    Latitude  = dto.Location.Lat,
                    Longitude = dto.Location.Lng
                },
                ManagerId = Guid.Parse(userId)
            };

            _context.Restaurants.Add(restaurant);
            _context.SaveChanges();
            return(Get(restaurant.Id));
        }
예제 #9
0
        public async Task <IActionResult> OnGet(Guid?restaurantId)
        {
            Cuisines = _htmlHelper.GetEnumSelectList <CuisineType>();

            RestaurantDto = new EditRestaurantDto();

            if (restaurantId.HasValue && restaurantId.Value != Guid.Empty)
            {
                var fetchedRestaurant = await _restaurantRepository.GetByIdAsync(id : restaurantId.Value);

                if (RestaurantDto == null)
                {
                    return(RedirectToPage("./NotFound"));
                }

                RestaurantDto.Id          = fetchedRestaurant.Id;
                RestaurantDto.Name        = fetchedRestaurant.Name;
                RestaurantDto.Location    = fetchedRestaurant.Location;
                RestaurantDto.CuisineType = fetchedRestaurant.CuisineType;
            }

            return(Page());
        }
        public void Edit(int id, EditRestaurantDto dto)
        {
            var restaurant = _dbContext.Restaurants
                             .FirstOrDefault(r => r.Id == id);

            if (restaurant is null)
            {
                throw new NotFoundException("Restaurant not found");
            }

            var authorizationResult = _authorizationService.AuthorizeAsync(_userContextService.User, restaurant, new ResourceOperationRequirement(ResourceOperation.Update)).Result;

            if (!authorizationResult.Succeeded)
            {
                throw new ForbidException("Authorization Fault");
            }

            restaurant.Name        = dto.Name;
            restaurant.HasDelivery = dto.HasDelivery;
            restaurant.Description = dto.Description;

            //_dbContext.Restaurants.Add(restaurant);
            _dbContext.SaveChanges();
        }
예제 #11
0
 public async Task <ActionResult <RestaurantDetailsDto> > EditMyRestaurant([FromBody] EditRestaurantDto editRestaurant)
 {
     return(await restaurantManager.EditMyRestaurant(editRestaurant));
 }