public static async Task <ReturnedSaveFuncInfo> DeleteAsync(string advName, string rootPath = "") { var monitor = new PerfMonitor(); var ret = new ReturnedSaveFuncInfo(); try { if (string.IsNullOrEmpty(rootPath)) { rootPath = ConfigurationManager.AppSettings.Get("RootPath"); } #region validation if (string.IsNullOrEmpty(advName)) { ret.AddReturnedValue(ReturnedState.Error, "نام آگهی مشخص نشده است"); return(ret); } if (string.IsNullOrEmpty(rootPath)) { ret.AddReturnedValue(ReturnedState.Error, "مسیر آگهی مشخص نشده است"); return(ret); } var deletePath = Path.Combine(rootPath, advName); if (!Directory.Exists(deletePath)) { ret.AddReturnedValue(ReturnedState.Warning, "آگهی مورد نظر برای حذف، وجود ندارد"); return(ret); } #endregion await Task.Run(() => { Directory.Delete(deletePath, true); }); //حذف داده در جدول آگهی های مجاز برای ویزیتور var visitorAdv = await VisitorAdvBusiness.GetAllAsync(advName); if (visitorAdv != null && visitorAdv.Count != 0) { foreach (var item in visitorAdv) { await VisitorAdvBusiness.RemoveByVisitorGuidAsync(item.VisitorGuid); } } return(ret); } catch (Exception ex) { WebErrorLog.ErrorLogInstance.StartLog(ex); ret.AddReturnedValue(ex); } finally { monitor.Dispose(); } return(ret); }
/// <summary> /// اگر مسیر داده نشود از مسیر پیش فرض استفاده خواهد شد /// </summary> /// <param name="rootPath"></param> /// <returns></returns> public static async Task <List <Advertise> > GetAllAsync(string rootPath = "", Guid visitorGuid = new Guid()) { var ret = new List <Advertise>(); try { if (string.IsNullOrEmpty(rootPath)) { rootPath = ConfigurationManager.AppSettings.Get("RootPath"); } if (string.IsNullOrEmpty(rootPath) || !Directory.Exists(rootPath)) { return(ret); } if (visitorGuid != new Guid()) { var lst = await VisitorAdvBusiness.GetAllAsync(visitorGuid); var visitorAdvList = lst.Select(p => p.AdvName).ToList(); foreach (var dir in Directory.GetDirectories(rootPath)) { var lastFolderName = Path.GetFileName(dir); if (visitorAdvList.IndexOf(lastFolderName) >= 0) { var newAdv = new Advertise(lastFolderName, rootPath); ret.Add(newAdv); } } } else { foreach (var dir in Directory.GetDirectories(rootPath)) { string lastFolderName = Path.GetFileName(dir); var newAdv = new Advertise(lastFolderName, rootPath); ret.Add(newAdv); } } return(ret.Where(p => p != null && p.Titles.Any() && !string.IsNullOrEmpty(p.Content) && p.Content.Length > 50)?.ToList() ?? new List <Advertise>()); } catch (Exception ex) { WebErrorLog.ErrorLogInstance.StartLog(ex); return(ret); } }
public async Task <ReturnedSaveFuncInfo> SaveAsync() { var monitor = new PerfMonitor(); var ret = new ReturnedSaveFuncInfo(); try { if (string.IsNullOrEmpty(RootPath)) { RootPath = ConfigurationManager.AppSettings.Get("RootPath"); } #region validation if (string.IsNullOrEmpty(AdvName)) { ret.AddReturnedValue(ReturnedState.Error, "آگهی فاقد نام است"); } if (string.IsNullOrEmpty(Content)) { ret.AddReturnedValue(ReturnedState.Error, "آگهی فاقد محتوا می باشد"); } if (string.IsNullOrEmpty(Price.ToString(CultureInfo.CurrentCulture))) { ret.AddReturnedValue(ReturnedState.Error, "آگهی فاقد قیمت می باشد"); } if (Titles?.Count < 1) { ret.AddReturnedValue(ReturnedState.Error, "آگهی فاقد عنوان است"); } if (Images?.Count < 1) { ret.AddReturnedValue(ReturnedState.Error, "آگهی فاقد تصویر است"); } #endregion var advPath = Path.Combine(RootPath, AdvName); if (!_isEdit && Directory.Exists(advPath)) { ret.AddReturnedValue(ReturnedState.Error, "نام آگهی تکراری است"); } if (ret.HasError) { return(ret); } //ذخیره آگهی await Task.Run(() => { var picturePath = Path.Combine(advPath, "Pictures"); if (!Directory.Exists(picturePath)) { Directory.CreateDirectory(picturePath); } //حذف عسکهای اضافی if (_isEdit) { //حذف عکسهایی که اکنون در لیست عکسهای آگهی نیستند //بعبارتی کاربر هنگام ویرایش آنها را حذف کرده است var oldImages = GetFiles(picturePath); if (oldImages?.Count > 0) { foreach (var image in oldImages) { if (Images.IndexOf(image) < 0) { File.Delete(image); } } } } var contentPath = Path.Combine(advPath, "Content.txt"); File.WriteAllText(contentPath, Content); var titlesPath = Path.Combine(advPath, "Titles.txt"); if (Titles != null) { File.WriteAllLines(titlesPath, Titles); } var divCatPath = Path.Combine(advPath, "DivarCat.txt"); if (DivarCategories != null) { File.WriteAllLines(divCatPath, DivarCategories); } var sheyCatPath = Path.Combine(advPath, "SheypoorCat.txt"); if (SheypoorCategories != null) { File.WriteAllLines(sheyCatPath, SheypoorCategories); } var niazCatPath = Path.Combine(advPath, "NiazKadeCat.txt"); if (NiazKadeCategories != null) { File.WriteAllLines(niazCatPath, NiazKadeCategories); } var niazmandyHaCatPath = Path.Combine(advPath, "NiazmandyHaCat.txt"); if (NiazmandyHaCategories != null) { File.WriteAllLines(niazmandyHaCatPath, NiazmandyHaCategories); } var pricePath = Path.Combine(advPath, "Price.txt"); File.WriteAllText(pricePath, Price.ToString(CultureInfo.CurrentCulture)); var pishNevisPath = Path.Combine(advPath, "PishNevis.txt"); if (PishNevis) { File.WriteAllText(pishNevisPath, "True"); } else if (File.Exists(pishNevisPath)) { File.Delete(pishNevisPath); } //ذخیره عکسهای جدید کاربر if (Images?.Count > 0) { var oldImages = GetFiles(picturePath); foreach (var image in Images) { if (oldImages.IndexOf(image) < 0) { File.Copy(image, Path.Combine(picturePath, $"{Guid.NewGuid()}.jpg")); } } } //حذف آگهی قدیمی :در صورتیکه نام آگهی تغییر کند if (!string.IsNullOrEmpty(OldAdvName)) { var deleteResult = DeleteAsync(OldAdvName, RootPath); if (deleteResult.Result.HasError) { foreach (var error in deleteResult.Result.ErrorList) { ret.AddReturnedValue(ReturnedState.Error, error); } } } }); //ویرایش نام آگهی در جدول آگهی های مجاز برای ویزیتور var visitorAdv = await VisitorAdvBusiness.GetAllAsync(OldAdvName); if (visitorAdv != null && visitorAdv.Count != 0) { foreach (var item in visitorAdv) { item.AdvName = AdvName; await item.SaveAsync(); } } } catch (Exception ex) { WebErrorLog.ErrorLogInstance.StartLog(ex); ret.AddReturnedValue(ex); } finally { monitor.Dispose(); } return(ret); }