예제 #1
0
        public IActionResult UpdateRestaurant(int id, [FromBody] PostRestaurantDTO restaurantDTO)
        {
            _requestLogService.SaveRequest(User.Identity.GetUserId(), "PUT", "api/v1/restaurants/{id}", "UpdateRestaurant");
            if (!ModelState.IsValid)
            {
                return(BadRequest("Invalid fields provided, please double check the parameters"));
            }
            var restaurant = _restaurantService.GetRestaurantById(id);

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

            if (!IsAuthorized(restaurant))
            {
                return(StatusCode(403, "You have to be logged in as one of the restaurant users to update restaurant information."));
            }

            if (!(User.IsInRole("premiumUser") || User.IsInRole("admin")) &&
                restaurantDTO.PromotionId != null && restaurantDTO.PromotionId != restaurant.PromotionId)
            {
                return(StatusCode(403, "Promotions to restaurant can only be added by admin or premium user"));
            }

            return(Ok(_restaurantService.UpdateRestaurant(id, restaurantDTO)));
        }
예제 #2
0
        public IActionResult PostRestaurant([FromBody] PostRestaurantDTO restaurantDTO)
        {
            _requestLogService.SaveRequest(User.Identity.GetUserId(), "POST", "api/v1/restaurants", "PostRestaurant");
            if (!ModelState.IsValid)
            {
                return(BadRequest("Invalid fields provided, please double check the parameters"));
            }

            int userRestaurants = _restaurantService.GetUserRestaurantCount(User.Identity.GetUserId());

            if (!User.IsInRole("premiumUser") && !User.IsInRole("admin"))
            {
                if (userRestaurants >= 1)
                {
                    return(BadRequest("Regular user can only create 1 Restaurant. Please sign up for premium services to add more."));
                }

                if (restaurantDTO.PromotionId != null)
                {
                    return(BadRequest("New menu with promotion can only be added by admin or premium user"));
                }
            }

            var newRestaurant = _restaurantService.AddNewRestaurant(restaurantDTO, User.Identity.GetUserId());

            return(CreatedAtAction(nameof(GetRestaurant), new { id = newRestaurant.RestaurantId }, newRestaurant));
        }
예제 #3
0
        public RestaurantDTO AddNewRestaurant(PostRestaurantDTO restaurantDTO, string userId)
        {
            var newRestaurant = _restaurantFactory.Create(restaurantDTO);

            _uow.Restaurants.Add(newRestaurant);
            _uow.RestaurantUsers.Add(new RestaurantUser {
                RestaurantId = newRestaurant.RestaurantId, UserId = userId
            });
            _uow.SaveChanges();
            return(_restaurantFactory.CreateComplex(newRestaurant));
        }
예제 #4
0
 public Restaurant Create(PostRestaurantDTO restaurantDTO)
 {
     return(new Restaurant
     {
         Name = restaurantDTO.Name,
         Url = restaurantDTO.Url,
         ContactNumber = restaurantDTO.ContactNumber,
         Email = restaurantDTO.Email,
         Address = AddressDTO.CreateFromDTO(restaurantDTO.Address)
     });
 }
예제 #5
0
        public RestaurantDTO UpdateRestaurant(int id, PostRestaurantDTO updatedRestaurantDTO)
        {
            if (_uow.Restaurants.Exists(id))
            {
                Restaurant restaurant = _uow.Restaurants.Find(id);
                restaurant.Name          = updatedRestaurantDTO.Name;
                restaurant.Url           = updatedRestaurantDTO.Url;
                restaurant.ContactNumber = updatedRestaurantDTO.ContactNumber;
                restaurant.Email         = updatedRestaurantDTO.Email;
                _uow.Restaurants.Update(restaurant);
                _uow.SaveChanges();
            }

            return(GetRestaurantById(id));
        }