Пример #1
0
        private async Task <ListingUpdateModel> PopulateListingUpdateModel(Listing listing, ListingUpdateModel model)
        {
            model.ListingItem = listing;

            // Custom fields
            var customFieldCategoryQuery = await _customFieldCategoryService.Query(x => x.CategoryID == listing.CategoryID).Include(x => x.MetaField.ListingMetas).SelectAsync();

            var customFieldCategories = customFieldCategoryQuery.ToList();
            var customFieldModel      = new CustomFieldListingModel()
            {
                ListingID      = listing.ID,
                MetaCategories = customFieldCategories
            };

            model.CustomFields  = customFieldModel;
            model.UserID        = listing.UserID;
            model.CategoryID    = listing.CategoryID;
            model.ListingTypeID = listing.ListingTypeID;

            // Listing types
            model.ListingTypes = CacheHelper.ListingTypes.Where(x => x.CategoryListingTypes.Any(y => y.CategoryID == model.CategoryID)).ToList();

            // Listing Categories
            model.Categories = CacheHelper.Categories;

            return(model);
        }
Пример #2
0
        //http://stackoverflow.com/questions/11774741/load-partial-view-depending-on-dropdown-selection-in-mvc3
        public async Task <ActionResult> ListingPartial(int categoryID)
        {
            // Custom fields
            var customFieldCategoryQuery = await _customFieldCategoryService.Query(x => x.CategoryID == categoryID).Include(x => x.MetaField.ListingMetas).SelectAsync();

            var customFieldCategories = customFieldCategoryQuery.ToList();
            var customFieldModel      = new CustomFieldListingModel()
            {
                MetaCategories = customFieldCategories
            };

            return(PartialView("_CategoryCustomFields", customFieldModel));
        }
Пример #3
0
        public async Task <ActionResult> ListingUpdate(int?id)
        {
            if (CacheHelper.Categories.Count == 0)
            {
                TempData[TempDataKeys.UserMessageAlertState] = "bg-danger";
                TempData[TempDataKeys.UserMessage]           = "[[[There are not categories available yet.]]]";
            }

            Listing item;

            var model = new ListingUpdateModel()
            {
                Categories = CacheHelper.Categories
            };

            if (id.HasValue)
            {
                item = await _listingService.FindAsync(id);

                if (item == null)
                {
                    return(new HttpNotFoundResult());
                }

                // Pictures
                var pictures = await _listingPictureservice.Query(x => x.ListingID == id).SelectAsync();

                var picturesModel = pictures.Select(x =>
                                                    new PictureModel()
                {
                    ID        = x.PictureID,
                    Url       = ImageHelper.GetListingImagePath(x.PictureID),
                    ListingID = x.ListingID,
                    Ordering  = x.Ordering
                }).OrderBy(x => x.Ordering).ToList();

                model.Pictures = picturesModel;
            }
            else
            {
                item = new Listing()
                {
                    CategoryID  = CacheHelper.Categories.Any() ? CacheHelper.Categories.FirstOrDefault().ID : 0,
                    Created     = DateTime.Now.Date,
                    LastUpdated = DateTime.Now.Date,
                    Expiration  = DateTime.Now.AddDays(30),
                    Enabled     = true,
                    Active      = true,
                }
            };

            // Item
            model.ListingItem = item;

            // Custom fields
            var customFieldCategoryQuery = await _customFieldCategoryService.Query(x => x.CategoryID == item.CategoryID).Include(x => x.MetaField.ListingMetas).SelectAsync();

            var customFieldCategories = customFieldCategoryQuery.ToList();
            var customFieldModel      = new CustomFieldListingModel()
            {
                ListingID      = item.ID,
                MetaCategories = customFieldCategories
            };

            model.CustomFields  = customFieldModel;
            model.Users         = UserManager.Users.ToList();
            model.UserID        = item.UserID;
            model.CategoryID    = item.CategoryID;
            model.ListingTypeID = item.ListingTypeID;

            // Listing types
            model.ListingTypes = CacheHelper.ListingTypes.Where(x => x.CategoryListingTypes.Any(y => y.CategoryID == model.CategoryID)).ToList();

            return(View(model));
        }
Пример #4
0
        public async Task <ActionResult> ListingUpdate(int?id)
        {
            if (CacheHelper.Categories.Count == 0)
            {
                TempData[TempDataKeys.UserMessageAlertState] = "bg-danger";
                TempData[TempDataKeys.UserMessage]           = "[[[There are not categories available yet.]]]";
            }

            Listing item;

            var userId = User.Identity.GetUserId();
            var user   = await UserManager.FindByIdAsync(userId);

            var model = new ListingUpdateModel()
            {
                Categories = CacheHelper.Categories
            };

            if (id.HasValue)
            {
                // return unauthorized if not authenticated
                if (!User.Identity.IsAuthenticated)
                {
                    return(new HttpUnauthorizedResult());
                }

                if (await NotMeListing(id.Value))
                {
                    return(new HttpUnauthorizedResult());
                }

                item = await _listingService.FindAsync(id);

                if (item == null)
                {
                    return(new HttpNotFoundResult());
                }

                // Pictures
                var pictures = await _ListingPictureservice.Query(x => x.ListingID == id).SelectAsync();

                var picturesModel = pictures.Select(x =>
                                                    new PictureModel()
                {
                    ID        = x.PictureID,
                    Url       = ImageHelper.GetListingImagePath(x.PictureID),
                    ListingID = x.ListingID,
                    Ordering  = x.Ordering
                }).OrderBy(x => x.Ordering).ToList();

                model.Pictures = picturesModel;
            }
            else
            {
                item = new Listing()
                {
                    CategoryID   = CacheHelper.Categories.Any() ? CacheHelper.Categories.FirstOrDefault().ID : 0,
                    Created      = DateTime.Now.Date,
                    LastUpdated  = DateTime.Now.Date,
                    Expiration   = DateTime.MaxValue,
                    Enabled      = true,
                    Active       = true,
                    ContactEmail = user.Email,
                    ContactName  = string.Format("{0} {1}", user.FirstName, user.LastName),
                    ContactPhone = user.PhoneNumber
                };
            }

            // Item
            model.ListingItem = item;

            // Custom fields
            var customFieldCategoryQuery = await _customFieldCategoryService.Query(x => x.CategoryID == item.CategoryID).Include(x => x.MetaField.ListingMetas).SelectAsync();

            var customFieldCategories = customFieldCategoryQuery.ToList();
            var customFieldModel      = new CustomFieldListingModel()
            {
                ListingID      = item.ID,
                MetaCategories = customFieldCategories
            };

            model.CustomFields  = customFieldModel;
            model.UserID        = item.UserID;
            model.CategoryID    = item.CategoryID;
            model.ListingTypeID = item.ListingTypeID;

            // Listing types
            model.ListingTypes = CacheHelper.ListingTypes.Where(x => x.CategoryListingTypes.Any(y => y.CategoryID == model.CategoryID)).ToList();

            return(View("~/Views/Listing/ListingUpdate.cshtml", model));
        }