public async Task <ActionResult <MealToReturnDto> > CreateMeal(MealCreateDto mealToCreate)
        {
            var email = HttpContext.User.RetrieveEmailFromPrincipal();
            var user  = await _userManager.FindByEmailAsync(email);

            var restaurants = await _unitOfWork.Repository <Restaurant>().ListAllAsync();

            foreach (var restaurant in restaurants)
            {
                if (restaurant.Name == user.DisplayName)
                {
                    mealToCreate.RestaurantId = restaurant.Id;
                }
            }
            ;

            var meal = _mapper.Map <MealCreateDto, Meal>(mealToCreate);

            _unitOfWork.Repository <Meal>().Add(meal);

            var result = await _unitOfWork.Complete();

            if (result <= 0)
            {
                return(BadRequest(new ApiResponse(400, "Problem creating meal")));
            }

            return(_mapper.Map <Meal, MealToReturnDto>(meal));
        }
예제 #2
0
        public ActionResult <MealReadDto> CreateMeal(MealCreateDto mealCreateDto)
        {
            var mealModel = _mapper.Map <Meal>(mealCreateDto);

            _repository.CreateMeal(mealModel);
            _repository.SaveChanges();

            var mealReadDto = _mapper.Map <MealReadDto>(mealModel);

            return(CreatedAtRoute(nameof(GetMealById), new { Id = mealReadDto.Id }, mealReadDto));
        }
        public async Task <ActionResult <MealToReturnDto> > UpdateMeal(int id, MealCreateDto mealToUpdate)
        {
            var email = HttpContext.User.RetrieveEmailFromPrincipal();
            var user  = await _userManager.FindByEmailAsync(email);

            var restaurants = await _unitOfWork.Repository <Restaurant>().ListAllAsync();

            foreach (var restaurant in restaurants)
            {
                if (restaurant.Name == user.DisplayName)
                {
                    if (mealToUpdate.RestaurantId != restaurant.Id)
                    {
                        return(BadRequest(403));
                    }
                }
            }
            ;

            if (mealToUpdate.Stock < 0)
            {
                mealToUpdate.Stock = 100;
            }

            var meal = await _unitOfWork.Repository <Meal>().GetByIdAsync(id);

            _mapper.Map(mealToUpdate, meal);

            _unitOfWork.Repository <Meal>().Update(meal);

            var result = await _unitOfWork.Complete();

            if (result <= 0)
            {
                return(BadRequest(new ApiResponse(400, "Problem updating meal")));
            }

            return(_mapper.Map <Meal, MealToReturnDto>(meal));
        }