public IActionResult AddPizza(PizzaEditViewModel pizzaEditViewModel)
        {
            //Basic validation
            //if (ModelState.IsValid)
            //{
            //    _pizzaRepository.CreatePizza(pizzaEditViewModel.Pizza);
            //    return RedirectToAction("Index");
            //}

            //custom validation rules
            if (ModelState.GetValidationState("Pizza.Price") == ModelValidationState.Valid ||
                pizzaEditViewModel.Pizza.Price < 0)
            {
                ModelState.AddModelError(nameof(pizzaEditViewModel.Pizza.Price), "The price of the pizza should be higher than 0");
            }

            if (pizzaEditViewModel.Pizza.IsPizzaOfTheWeek && !pizzaEditViewModel.Pizza.InStock)
            {
                ModelState.AddModelError(nameof(pizzaEditViewModel.Pizza.IsPizzaOfTheWeek), "Only pizzas that are in stock should be Pizza of the Week");
            }

            if (ModelState.IsValid)
            {
                _pizzaRepository.CreatePizza(pizzaEditViewModel.Pizza);
                return(RedirectToAction("Index"));
            }

            return(View(pizzaEditViewModel));
        }
        public ActionResult CreatePizza([FromBody] Pizza pizza)
        {
            _pizzaRepository.CreatePizza(pizza);

            return(CreatedAtRoute("GetPizza", new
            {
                PizzaId = pizza.PizzaId
            }, pizza));
        }
        public async Task <Result <PizzaDto> > InsertPizzaAsync(PizzaRequest request)
        {
            Result <Pizza> pizzaOrError = _pizzaRepository.CreatePizza(request);

            if (pizzaOrError.IsFailure)
            {
                return(Result.FromError <PizzaDto>(pizzaOrError));
            }

            _pizzaRepository.Insert(pizzaOrError.Value);

            //fire event here
            await _unitOfWork.SaveAsync();

            return(Result.Ok(pizzaOrError.Value.ToPizzaDto()));
        }
 public async Task CreatePizza(Pizza pizza)
 {
     await _repository.CreatePizza(pizza).ConfigureAwait(false);
 }
 public PizzaViewModel Post([FromBody] PizzaViewModel pizza)
 {
     return(_repository.CreatePizza(pizza));
 }