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")); }
/// <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)); } }