Example #1
0
        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);
        }
Example #2
0
        /// <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);
            }
        }
Example #3
0
        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);
        }