public async Task <IActionResult> Create(AdvertisementCreationModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    int.TryParse(model.CategoryId, out int categoryId);

                    //check category
                    var category = _repository.GetCategory(categoryId);

                    if (User.Identity.IsAuthenticated)
                    {
                        // get logged in user
                        var user = await _userManager.GetUserAsync(User);

                        // create new advertisement
                        var advertisement = new Advertisement()
                        {
                            Title       = model.Title,
                            Description = model.Description,
                            Category    = category,
                            User        = user
                        };

                        // Add new advertisement
                        _repository.AddEntity(advertisement);

                        //save and redirect to created advertisement detail page
                        if (_repository.SaveAll())
                        {
                            return(RedirectToAction("Details", new { id = advertisement.AdvertisementId }));
                        }
                    }
                    else
                    {
                        // user is not logged in so return badrequest
                        return(BadRequest());
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("Failed to create a new advertisement: ", ex);
            }

            return(View(model));

            //if (ModelState.IsValid)
            //{
            //    _context.Add(advertisement);
            //    await _context.SaveChangesAsync();
            //    return RedirectToAction(nameof(Index));
            //}
            //ViewData["CategoryId"] = new SelectList(_context.Categories, "CategoryId", "CategoryId", advertisement.CategoryId);
            //return View(advertisement);
        }
        public IActionResult Create([FromBody] AdvertisementCreationModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    int.TryParse(model.CategoryId, out int categoryId);

                    // get category
                    var category = _repository.GetCategory(categoryId);

                    var advertisement = new Advertisement()
                    {
                        Title       = model.Title,
                        Description = model.Description,
                        Category    = category
                    };

                    _repository.AddEntity(advertisement);

                    if (_repository.SaveAll())
                    {
                        // Saved and return the body
                        return(Created($"/api/advertisements/{advertisement.AdvertisementId}", _mapper.Map <Advertisement, AdvertisementViewModel>(advertisement)));
                    }
                    else
                    {
                        return(BadRequest("Could not save for some reason"));
                    }
                }
                else
                {
                    return(BadRequest(ModelState));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError($"Failed to save a new advertisement: {ex}");
            }
            return(BadRequest("Creating new advertisement failed!"));
        }