private async Task <Advertisement> ParseAdvertisementAsync(AdvertisementForm model)
        {
            Advertisement advertisement = new Advertisement(
                title: model.Title !,
                isPriorized: false,
                createdDate: DateTime.Now,
                daysToLive: (int)model.DaysToLive !,
                description: model.Description !,
                condition: (bool)model.IsUsed ! ? DAL.Entities.Condition.Used : DAL.Entities.Condition.New,
                status: DAL.Entities.Status.New,
                categoryId: (int)model.CategoryId !,
                cityId: (int)model.CityId !)
            {
                Price = model.Price
            };

            string userName = User.Identity.Name !;
            var    user     = await _userService.GetUserByEmailAsync(userName);

            if ((bool)model.IsBuying !)
            {
                advertisement.CustomerId = user.Id;
            }
            else
            {
                advertisement.SellerId = user.Id;
            }

            SetPropertiesToAdvertisement(advertisement, model.PropertyInputs);

            if (model.Images.Any())
            {
                foreach (var image in model.Images)
                {
                    var imagePath = Path.Combine(@"~/images/advertisementPhotos", Path.GetFileName(image.FileName));
                    advertisement.AdvertisementImagePaths.Add(imagePath);
                }
            }
            else
            {
                foreach (var image in model.OriginalImagePaths)
                {
                    var imagePath = Path.Combine(@"~/images/advertisementPhotos", Path.GetFileName(image));
                    advertisement.AdvertisementImagePaths.Add(imagePath);
                }
            }

            return(advertisement);
        }
        public async Task <IActionResult> CreateAdvertisement()
        {
            if (User.Identity.IsAuthenticated)
            {
                var user = await _userService.GetUserByEmailAsync(User.Identity.Name !);

                AdvertisementForm advertisementForm = new AdvertisementForm {
                    CityId = user.City?.Id
                };
                return(View(advertisementForm));
            }
            else
            {
                return(RedirectToAction("Login", "Account"));
            }
        }
        public async Task <IActionResult> CreateAdvertisement(AdvertisementForm model)
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Login", "Account"));
            }

            if (!ModelState.IsValid)
            {
                return(View("CreateAdvertisement", model));
            }

            Advertisement advertisement = await ParseAdvertisementAsync(model);

            advertisement = await _advertisementService.InsertAdvertisementAsync(advertisement);
            await UploadImages(model.Images);

            return(Redirect($"{advertisement.Id}"));
        }