public ActionResult Create()
        {
            var advertisement = new CreateAdvertisementViewModel();

            InitCreateAdvertismentViewModelOptions(advertisement);
            return(View(advertisement));
        }
示例#2
0
        public async Task <IActionResult> Create(CreateAdvertisementViewModel model, IFormFile imageFile)
        {
            if (ModelState.IsValid)
            {
                var createAdvertModel = _mapper.Map <CreateAdvertisement>(model);
                createAdvertModel.UserName = User.Identity.Name;

                var apiCallResponse = await _advertApiClient.CreateAsync(createAdvertModel);

                var id = apiCallResponse.Id;

                bool   isOkToConfirmAd = true;
                string filePath        = string.Empty;
                if (imageFile != null)
                {
                    var fileName = !string.IsNullOrEmpty(imageFile.FileName) ? Path.GetFileName(imageFile.FileName) : id;
                    filePath = $"{id}/{fileName}";

                    try
                    {
                        using var readStream = imageFile.OpenReadStream();
                        var result = await _fileUploader.UploadFileAsync(filePath, readStream);

                        if (!result)
                        {
                            throw new Exception(
                                      "Could not upload the image to file repository. Please see the logs for details.");
                        }
                    }
                    catch (Exception)
                    {
                        isOkToConfirmAd = false;
                        var confirmModel = new ConfirmAdvertRequest()
                        {
                            Id       = id,
                            FilePath = filePath,
                            Status   = AdvertisementStatus.Pending
                        };
                        await _advertApiClient.ConfirmAsync(confirmModel);
                    }
                }

                if (isOkToConfirmAd)
                {
                    var confirmModel = new ConfirmAdvertRequest()
                    {
                        Id       = id,
                        FilePath = filePath,
                        Status   = AdvertisementStatus.Active
                    };
                    await _advertApiClient.ConfirmAsync(confirmModel);
                }

                return(RedirectToAction("Index", "Home"));
            }

            return(View(model));
        }
示例#3
0
        public CreateAdvertisementViewModel RebuildModelAdvertisement()
        {
            var advertisementModel = new CreateAdvertisementViewModel();

            advertisementModel.CityList     = advertisementService.getAllCity();
            advertisementModel.CategoryList = advertisementService.getAllCategory();

            return(advertisementModel);
        }
 private void InitCreateAdvertismentViewModelOptions(CreateAdvertisementViewModel adv)
 {
     adv.RegionOptions           = _regionRepository.GetRegions();
     adv.BrandOptions            = _brandRepository.GetBrands();
     adv.VehiclTypeOptions       = _vehiclTypeRepository.GetVehiclTypes();
     adv.TransmissionTypeOptions = _transmissionRepository.GetTransmissionTypes();
     adv.FuelOptions             = _fuelRepository.GetFuels();
     adv.CurrencyOptions         = _currencyRepository.GetCurrencies();
 }
示例#5
0
        public ActionResult Create(CreateAdvertisementViewModel model)
        {
            if (ModelState.IsValid)
            {
                newAdvertisement.CreateNewAdvertisement(model, User.Identity.GetUserId());
                return(RedirectToAction("UserAdvertisement", "User"));
            }

            return(View(newAdvertisement.RebuildModelAdvertisement()));
        }
 //[ChildActionOnly]
 //[ValidateAntiForgeryToken]
 public void Create(CreateAdvertisementViewModel model)
 {
     if (ModelState.IsValid)
     {
         Advertisement advertisement = Advertisements.Create(Security.UserId, model.Text, model.Title, Convert.FromBase64String(model.Image));
         dynamic       rez           = new ExpandoObject();
         rez.Id          = advertisement.Id;
         rez.Title       = advertisement.Title;
         rez.Text        = advertisement.Text;
         rez.Author      = advertisement.Author.Profile.Name;
         rez.Image       = Convert.ToBase64String(advertisement.Image);
         rez.DateCreated = advertisement.DateCreated;
         var result = new List <dynamic> {
             rez
         };
         AdvertisementSearch.AddUpdateLuceneIndex(advertisement);
         ResponseData.WriteList(Response, "result", result);
     }
 }
示例#7
0
        public void CreateNewAdvertisement(CreateAdvertisementViewModel model, string UserId)
        {
            Advertisement advertisement = new Advertisement
            {
                AdvertisementName = model.AdvertisementName,
                Description       = model.AdvertisementDescription,
                Cost       = model.Cost,
                CityId     = model.CityId,
                CategoryId = model.CategoryId,
                DateBegin  = DateTime.Now,
                DateEnd    = model.DateEnd,
                Status     = Status.Aktywny.ToString(),
                Visitor    = 0,
                Id         = UserId
            };

            advertisementService.insertAdvertisement(advertisement);
            advertisementService.save();
            newImage.CreateNewImage(model.ImageUpload, advertisement.AdvertisementId);
        }
        public ActionResult Create(CreateAdvertisementViewModel adv)
        {
            if (!ModelState.IsValid)
            {
                foreach (var key in ModelState.Keys)
                {
                    var errors = ModelState[key].Errors.ToList();
                    if (errors.Count == 0)
                    {
                        continue;
                    }
                    foreach (var error in errors)
                    {
                        ModelState.AddModelError(key, error.ErrorMessage);
                    }
                }
                ModelState.AddModelError("", "The form is invalid! Please try again");
                InitCreateAdvertismentViewModelOptions(adv);
                return(View(adv));
            }

            var rootFolder   = ConfigurationManager.AppSettings["advertismentsRootFolder"];
            var imagesFolder = Path.Combine(rootFolder, Guid.NewGuid().ToString());
            var fullPath     = Path.Combine(imagesFolder, adv.Image.FileName);

            var advertisement = new Advertisement
            {
                CreatedDate    = DateTime.Now,
                ExpirationDate = DateTime.Today.AddDays(30),
                IsActive       = false,
                Region         = new Region {
                    Id = adv.RegionId
                },
                Vehicl = new Vehicl
                {
                    Brand = new Brand {
                        Id = adv.BrandId
                    },
                    Engine = new Engine
                    {
                        Volume = adv.EngineVolume,
                        Fuels  = adv.Fuels.Select(x => new Fuel {
                            Id = x
                        })
                    },
                    TransmissionType = new TransmissionType {
                        Id = adv.TransmissionTypeId
                    },
                    VehiclType = new VehiclType {
                        Id = adv.VehiclTypeId
                    }
                },
                User      = UserManager.FindByLogin(User.Identity.Name),
                ImagePath = fullPath,
                Price     = adv.Price,
                Currency  = new Currency {
                    Id = adv.CurrencyId
                }
            };

            _contentProvider.Upload(fullPath, adv.Image.InputStream);

            _advertisementRepository.Create(advertisement);

            return(RedirectToAction("Index", "Home"));
        }