コード例 #1
0
        public ActionResult AdminEditUserAd(int adId, AdminClassifiedAdEdit editItem)
        {
            if (TempData["editUserAdPosted"] == null)
            {
                TempData["editUserAdPosted"] = true;
                if (!ModelState.IsValid)
                {
                    var retItem = AdminManager.ClassifiedManager.GetClassifiedAdWithAll(adId);
                    retItem.ConfigureForm(AdminManager);
                    PhotoFileManager.CreateTempPhotos(retItem.Id, retItem.StringId, retItem.Photos);
                    return(View(retItem));
                }

                // Sanitize description
                editItem.Description = new HtmlSanitizer().Sanitize(editItem.Description);

                // Process the input
                var editedItem = AdminManager.AdminClassifiedAdEdit(editItem);

                if (editedItem == null)
                {
                    var retItem = AdminManager.ClassifiedManager.GetClassifiedAdWithAll(adId);
                    retItem.ConfigureForm(AdminManager);
                    PhotoFileManager.CreateTempPhotos(retItem.Id, retItem.StringId, retItem.Photos);
                    return(View(editItem));
                }
                else
                {
                    return(RedirectToAction("AdminUserAdDetails", "Admin", new { stringId = editedItem.StringId }));
                }
            }
            return(RedirectToAction("ReportQueue", "Admin"));
        }
コード例 #2
0
        /// <summary>
        /// Edit user ads
        /// </summary>
        /// <param name="editItem"></param>
        /// <param name="Server"></param>
        /// <returns></returns>
        public ClassifiedAdBase AdminClassifiedAdEdit(AdminClassifiedAdEdit editItem)
        {
            // 1. Ensure user credibility
            // 2. Attempt to fetch obj
            // 3. Set last edited time
            // 4. Pull existing item
            // 5. Compare photos for changes and add/remove
            // 6. Save changes

            var o = CurrentDbContext.ClassifiedDB.Include("Poster").SingleOrDefault(n => n.StringId == editItem.StringId);

            if (o == null)
            {
                return(null);
            }
            else
            {
                // format adinfo
                var format_EngineSize = o.AdInfo.SingleOrDefault(x => x.Name.Equals("Engine Size"));
                if (format_EngineSize != null)
                {
                    if (!string.IsNullOrEmpty(format_EngineSize.Description))
                    {
                        format_EngineSize.Description.Replace(" ", "");
                    }
                }

                o.EditTimeStamp = DateTime.Now;

                if (o.ContactPrivacy != editItem.ContactPrivacy)
                {
                    o.ContactPrivacy = editItem.ContactPrivacy;
                }

                ///
                /// Upadate Country/Region
                if (o.Country.Id != editItem.CountryId)
                {
                    var country = CurrentDbContext.CountryDB.Include("Regions").Include("Regions.ClassifiedAds").SingleOrDefault(a => a.Id == editItem.CountryId);
                    o.Country = country;
                }

                if (editItem.SubCategoryName.Equals("Lost Pet"))
                {
                    editItem.PriceInfo = editItem.Price = "Please Contact";
                }

                if (editItem.Price == "Please Contact" && editItem.PriceInfo != "Please Contact")
                {
                    editItem.PriceInfo = "Please Contact";
                }

                // update price
                var pri = Convert.ToInt32(editItem.Price.Equals("Please Contact") ? "0" : editItem.Price.Replace(",", ""));
                if (o.Price != pri)
                {
                    o.Price = pri;
                }

                // update desc
                if (o.Description != editItem.Description)
                {
                    o.Description = editItem.Description;
                }

                // update title
                if (o.Title != editItem.Title)
                {
                    o.Title = editItem.Title;
                }

                // update price info
                if (o.PriceInfo != editItem.PriceInfo)
                {
                    o.PriceInfo = editItem.PriceInfo;
                }

                // update AdInfo
                if (editItem.AdInfo != null && o.AdInfo != null)
                {
                    if (editItem.AdInfo.Count > 0 && o.AdInfo.Count > 0)
                    {
                        foreach (var ai in editItem.AdInfo)
                        {
                            if (!ai.Name.Equals("Age") && !ai.Name.Equals("Year"))
                            {
                                var currentai = o.AdInfo.SingleOrDefault(x => x.Name.Equals(ai.Name));
                                if (currentai.Description != null)
                                {
                                    if (!currentai.Description.Equals(ai.Description))
                                    {
                                        currentai.Description = ai.Description;
                                    }
                                }
                                else
                                {
                                    currentai.Description = ai.Description;
                                }
                            }
                        }
                    }
                }

                if (!editItem.AdType.Equals(o.AdType))
                {
                    o.AdType = editItem.AdType;
                }

                if (!editItem.AdContactName.Equals(o.AdContactName))
                {
                    o.AdContactName = editItem.AdContactName;
                }

                if (!editItem.AdContactPhone.Equals(o.AdContactPhone))
                {
                    editItem.AdContactPhone = (editItem.AdContactPhone.Contains("-") ? editItem.AdContactPhone : editItem.AdContactPhone.Insert(3, "-").ToString());
                    o.AdContactPhone        = editItem.AdContactPhone;
                }
                if (!string.IsNullOrEmpty(editItem.AdContactPhone2))
                {
                    if (!editItem.AdContactPhone2.Equals(o.AdContactPhone2))
                    {
                        editItem.AdContactPhone2 = (editItem.AdContactPhone2.Contains("-") ? editItem.AdContactPhone2 : editItem.AdContactPhone2.Insert(3, "-").ToString());
                        o.AdContactPhone2        = editItem.AdContactPhone2;
                    }
                }
                else
                {
                    if (!string.IsNullOrEmpty(o.AdContactPhone2))
                    {
                        o.AdContactPhone2 = null;
                    }
                }
                if (!string.IsNullOrEmpty(editItem.AdContactPhone3))
                {
                    if (!editItem.AdContactPhone3.Equals(o.AdContactPhone3))
                    {
                        editItem.AdContactPhone3 = (editItem.AdContactPhone3.Contains("-") ? editItem.AdContactPhone3 : editItem.AdContactPhone3.Insert(3, "-").ToString());
                        o.AdContactPhone3        = editItem.AdContactPhone3;
                    }
                }
                else
                {
                    if (!string.IsNullOrEmpty(o.AdContactPhone3))
                    {
                        o.AdContactPhone3 = null;
                    }
                }

                if (!editItem.AdContactEmail.Equals(o.AdContactEmail))
                {
                    o.AdContactEmail = editItem.AdContactEmail;
                }

                if (o.Photos != editItem.Photos)
                {
                    var oldp = o.Photos.ToList();
                    LuceneSearch.ClearLuceneIndexRecord(o.Id, oldp);
                    CurrentDbContext.AdPhotosDB.RemoveRange(oldp);
                    foreach (var newpho in Mapper.Map <IEnumerable <ClassifiedAdPhoto> >(editItem.Photos))
                    {
                        o.Photos.Add(newpho);
                    }
                }
                else
                {
                    LuceneSearch.ClearLuceneIndexRecord(o.Id);
                }

                CurrentDbContext.SaveChanges();
                PhotoFileManager.DeleteTempPhotos(o.Id, o.StringId);
                CacheHelper.RemoveFromCache(string.Format("ld-{0}", o.Id));
                // Add to Lucene

                LuceneSearch.AddUpdateLuceneIndex(o);

                return(Mapper.Map <ClassifiedAdBase>(o));
            }
        }