Ejemplo n.º 1
0
        public async Task <ActionResult> Edit(int?id)
        {
            try
            {
                if (id.HasValue)
                {
                    var listingRes = await _listingRepo.Get(id.Value);

                    if (listingRes != null)
                    {
                        model = await GetDefaultViewModelEntry();

                        model.ExistingListingImages =
                            ListingViewHelperUtilites.SetImagesToListItems
                                (listingRes.ImagesContent.ToList());


                        model.FeaturesListToSelect
                        .SetFeaturesTypesToListItems(listingRes.Features);

                        model.HeatingListToSelect
                        .SetHeatingTypesToListItems(listingRes.Heating);

                        model.InputModel = listingRes;

                        return(View(model));
                    }
                    else
                    {
                        return(HttpNotFound());
                    }
                }
                else
                {
                    return(HttpNotFound());
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(string.Empty, ex.Message);
                return(View(model));
            }
        }
Ejemplo n.º 2
0
        public async Task <ActionResult> Edit(ListingViewModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var listingFromDb = await _listingRepo.Get(model.InputModel.ID);

                    model.InputModel.ImagesContent = listingFromDb.ImagesContent;

                    var modelToUpdate = model.InputModel;

                    if (!_imageHelper.IsPostedFilesListEmpty(model.ListingImageFiles))
                    {
                        if (_imageHelper.HasImageListExceededSizeLimit
                                (model.ListingImageFiles))
                        {
                            ModelState.AddModelError
                                (string.Empty,
                                "File upload limit exceeded (more than 7 files)");

                            model = await GetDefaultViewModelEntry();

                            model.InputModel = modelToUpdate;

                            model.ExistingListingImages =
                                ListingViewHelperUtilites.SetImagesToListItems
                                    (modelToUpdate.ImagesContent.ToList());

                            return(View(model));
                        }

                        if (_imageHelper.isValidFileUpload(model.ListingImageFiles))
                        {
                            var imagesList = model.ListingImageFiles;
                            _imageHelper.SetModelImages
                                (modelToUpdate, imagesList);
                        }
                        else
                        {
                            ModelState.AddModelError
                                (string.Empty,
                                "One or more File uploads was not valid");

                            model = await GetDefaultViewModelEntry();

                            model.InputModel = modelToUpdate;

                            return(View(model));
                        }
                    }

                    _imageHelper.ArchiveCheckedImages
                        (model.ExistingListingImages, modelToUpdate.ImagesContent.ToList());


                    if (modelToUpdate.ImagesContent
                        .Count(i => !i.IsArchived) > 7)
                    {
                        ModelState.AddModelError
                            (string.Empty,
                            "A listing can't have more than 7 Images");

                        model = await GetDefaultViewModelEntry();

                        model.InputModel = modelToUpdate;

                        var imagesContentList =
                            modelToUpdate.ImagesContent.
                            Where(i => i.ID > 0).ToList();


                        model.ExistingListingImages =
                            ListingViewHelperUtilites.SetImagesToListItems
                                (imagesContentList);

                        return(View(model));
                    }


                    var currentLoggedUserId = User.Identity.GetUserId();

                    var currentLoggedUserRes = await UserIdentityManager
                                               .GetUserById(currentLoggedUserId);

                    var tmpModel = ListingViewHelperUtilites
                                   .MapHeatingAndFeaturesToListingModel(model);


                    modelToUpdate.Heating       = tmpModel.Heating;
                    modelToUpdate.Features      = tmpModel.Features;
                    modelToUpdate.DateUpdated   = DateTime.Now;
                    modelToUpdate.UserUpdatorId = currentLoggedUserRes.registeredUser.ID;


                    await _listingRepo.Update(modelToUpdate);

                    model.InputModel = await _listingRepo.Get(modelToUpdate.ID);
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(string.Empty, ex.Message);

                var inputModel = model.InputModel;
                model = await GetDefaultViewModelEntry();

                model.InputModel = inputModel;


                model.FeaturesListToSelect.
                SetFeaturesTypesToListItems(model.InputModel.Features);

                model.HeatingListToSelect.
                SetHeatingTypesToListItems(model.InputModel.Heating);

                return(View(model));
            }

            return(View("Details", model));
        }