Пример #1
0
        private string GetThumbnailUrl(string img, int w, int h)
        {
            string ext           = Path.GetExtension(img);
            string imageUrlNoExt = img.Remove(img.Length - ext.Length);

            imageUrlNoExt = imageUrlNoExt.Replace("/", "_");
            return("/App_Data/cache/images/" + RP.GetCurrentSettings().ID + "/" + imageUrlNoExt + "_" + w + "_" + h + ext);
        }
        public static List <string> GetMenuGroups()
        {
            var set = RP.GetCurrentSettings();

            if (!string.IsNullOrEmpty(set.MenuGroups))
            {
                return(set.MenuGroups.Split(',').ToList());
            }
            return(new List <string>());
        }
Пример #3
0
        public ActionResult ContentBySeo(string SeoUrl)
        {
            var CurrentSettings = RP.GetCurrentSettings();
            var contentPage     = _db.ContentPages.FirstOrDefault(x => x.SeoUrlName == SeoUrl && x.DomainID == CurrentSettings.ID);

            if (contentPage != null)
            {
                return(PartialView(contentPage));
            }
            return(Content(""));
        }
Пример #4
0
        private static string GetThumbnailUrl(string img, int w, int h)
        {
            string ext           = Path.GetExtension(img);
            string imageUrlNoExt = img.Remove(img.Length - ext.Length);

            imageUrlNoExt = imageUrlNoExt.Replace("/", "_");
            string folder = HostingEnvironment.MapPath("~" + "/Cache/Images/" + RP.GetCurrentSettings().ID);

            if (!Directory.Exists(folder))
            {
                System.IO.Directory.CreateDirectory(folder);
            }
            return("/Cache/Images/" + RP.GetCurrentSettings().ID + "/" + imageUrlNoExt + "_" + w + "_" + h + ext);
        }
        public static string GetFirstMenuGroup()
        {
            var set = RP.GetCurrentSettings();

            if (!string.IsNullOrEmpty(set.MenuGroups))
            {
                var spl = set.MenuGroups.Split(',');
                if (spl.Length > 0)
                {
                    return(spl[0]);
                }
            }
            return(null);
        }
Пример #6
0
        public ActionResult Error404()
        {
            string RawUrl        = Request.RawUrl.Trim();
            string errorsString  = "";
            string errorFileName = "~/App_Data/404.txt";
            string errorFilePath = Server.MapPath(errorFileName);

            if (System.IO.File.Exists(errorFilePath))
            {
                System.IO.StreamReader errorFile = new System.IO.StreamReader(errorFilePath);
                errorsString = errorFile.ReadToEnd();
                errorFile.Close();
            }
            errorsString = errorsString + "\r\n" + RP.GetCurrentSettings().Error404;

            if (!string.IsNullOrEmpty(errorsString) && errorsString.Contains(RawUrl))
            {
                errorsString = errorsString.Replace("\r", "");
                foreach (string item in errorsString.Split('\n'))
                {
                    if (item.Contains(" <-> "))
                    {
                        int    i      = item.IndexOf(" <-> ");
                        string OldUrl = item.Remove(i).Trim();
                        string NewUrl = item.Remove(0, i + 5).Trim();
                        if (OldUrl == RawUrl)
                        {
                            return(RedirectPermanent(NewUrl));
                        }
                    }
                }
            }

            Response.StatusCode = 404;
            return(View());
        }
Пример #7
0
        public ActionResult FormPage(string InvisibleCaptchaValue, FormCollection formCollection)
        {
            if (!CaptchaController.IsInvisibleCaptchaValid(InvisibleCaptchaValue))
            {
                ModelState.AddModelError(string.Empty, "Captcha error.");
                return(Content("Error: Captcha", "text/html"));
            }

            Contact c = new Contact();

            List <FormField> FormFields = CurrentPage.GetDataFromXML1 <FormField>().OrderBy(r => r.FormFieldOrder).ToList();
            List <FormRool>  FormRools  = CurrentPage.GetDataFromXML2 <FormRool>().OrderBy(r => r.FormRoolOrder).ToList();

            //get name, email and phone
            foreach (Uco.Models.FormField item in FormFields.OrderBy(r => r.FormFieldOrder))
            {
                if (string.IsNullOrEmpty(Request["form_item_" + CurrentPage.ID + "_" + item.FormFieldID.ToString()]))
                {
                    continue;
                }
                string t = Request["form_item_" + CurrentPage.ID + "_" + item.FormFieldID.ToString()];

                if (item.FormFieldType == FormField.FormFildType.Name && string.IsNullOrEmpty(c.ContactName))
                {
                    c.ContactName = t;
                }
                else if (item.FormFieldType == FormField.FormFildType.PhoneNumber && string.IsNullOrEmpty(c.ContactPhone))
                {
                    c.ContactPhone = t;
                }
                else if (item.FormFieldType == FormField.FormFildType.EmailAddress && string.IsNullOrEmpty(c.ContactEmail))
                {
                    c.ContactEmail = t;
                }
                else
                {
                    c.ContactData = c.ContactData + item.FormFieldTitle + ": " + t + "<br />";
                }
            }

            string SendTo = string.Empty;

            //process rools
            foreach (Uco.Models.FormRool item in FormRools.OrderBy(r => r.FormRoolOrder))
            {
                bool MatchingRoolAnd = true;
                bool MatchingRoolOr  = false;
                bool MatchingRun     = false;

                if (!string.IsNullOrEmpty(item.FormRoolItem1) && item.FormRoolItem1 != "null")
                {
                    MatchingRun = true;
                    FormField field = FormFields.FirstOrDefault(r => r.FormFieldTitle.Trim() == item.FormRoolItem1.Trim());
                    if (field == null)
                    {
                        MatchingRoolAnd = false;
                    }
                    else
                    {
                        string FormRoolValue1 = Request["form_item_" + CurrentPage.ID + "_" + field.FormFieldID.ToString()];
                        if (!("," + item.FormRoolValue1 + ",").Contains("," + FormRoolValue1 + ","))
                        {
                            MatchingRoolAnd = false;
                        }
                        else if (item.FormRoolValue1 != FormRoolValue1)
                        {
                            MatchingRoolAnd = false;
                        }
                        else
                        {
                            MatchingRoolOr = true;
                        }
                    }
                }

                if (!string.IsNullOrEmpty(item.FormRoolItem2) && item.FormRoolItem2 != "null")
                {
                    MatchingRun = true;
                    FormField field = FormFields.FirstOrDefault(r => r.FormFieldTitle.Trim() == item.FormRoolItem2.Trim());
                    if (field == null)
                    {
                        MatchingRoolAnd = false;
                    }
                    else
                    {
                        string FormRoolValue2 = Request["form_item_" + CurrentPage.ID + "_" + field.FormFieldID.ToString()];
                        if (!("," + item.FormRoolValue2 + ",").Contains("," + FormRoolValue2 + ","))
                        {
                            MatchingRoolAnd = false;
                        }
                        if (item.FormRoolValue2 != FormRoolValue2)
                        {
                            MatchingRoolAnd = false;
                        }
                        else
                        {
                            MatchingRoolOr = true;
                        }
                    }
                }

                if (!string.IsNullOrEmpty(item.FormRoolItem3) && item.FormRoolItem3 != "null")
                {
                    MatchingRun = true;
                    FormField field = FormFields.FirstOrDefault(r => r.FormFieldTitle.Trim() == item.FormRoolItem3.Trim());
                    if (field == null)
                    {
                        MatchingRoolAnd = false;
                    }
                    {
                        string FormRoolValue3 = Request["form_item_" + CurrentPage.ID + "_" + field.FormFieldID.ToString()];
                        if (!("," + item.FormRoolValue3 + ",").Contains("," + FormRoolValue3 + ","))
                        {
                            MatchingRoolAnd = false;
                        }
                        if (item.FormRoolValue3 != FormRoolValue3)
                        {
                            MatchingRoolAnd = false;
                        }
                        else
                        {
                            MatchingRoolOr = true;
                        }
                    }
                }

                if ((MatchingRun && item.FormRoolAnd && MatchingRoolAnd) || (MatchingRun && !item.FormRoolAnd && MatchingRoolOr))
                {
                    c.RoleDefault = item.FormRoolRole;
                    c.Rool        = item.FormRoolTitle;
                    SendTo        = item.FormRoolEmail;
                    break;
                }
            }
            if (string.IsNullOrEmpty(c.RoleDefault))
            {
                c.RoleDefault = "Admin";
            }

            //get other data
            c.ContactReferal = SF.GetCookie("Referal");
            c.ContactUrl     = "<a target='_blank' href='http://" + Request.ServerVariables["HTTP_HOST"] + Url.Content(CurrentPage.Url) + "'>" + CurrentPage.Title + "</a>";
            c.ContactDate    = DateTime.Now;

            _db.Contacts.Add(c);
            _db.SaveChanges();

            if (string.IsNullOrEmpty(SendTo))
            {
                SendTo = RP.GetCurrentSettings().AdminEmail;
            }

            foreach (string item in SendTo.Split(','))
            {
                if (!SF.isEmail(item.Trim()))
                {
                    continue;
                }

                _db.OutEmails.Add(new OutEmail
                {
                    MailTo  = item.Trim(),
                    Subject = Uco.Models.Resources.SystemModels.ContactMailSubject
                              .Replace("{ID}", c.ID.ToString())
                              .Replace("{HTTP_HOST}", Request.ServerVariables["HTTP_HOST"]),
                    Body = Uco.Models.Resources.SystemModels.ContactMailBody
                           .Replace("{ID}", c.ID.ToString())
                           .Replace("{HTTP_HOST}", Request.ServerVariables["HTTP_HOST"])
                           .Replace("{ContactName}", c.ContactName)
                           .Replace("{ContactEmail}", c.ContactEmail)
                           .Replace("{ContactPhone}", c.ContactPhone)
                           .Replace("{ContactData}", c.ContactData)
                           .Replace("{ContactReferal}", c.ContactReferal)
                           .Replace("{ContactUrl}", c.ContactUrl),
                    TimesSent = 0,
                    LastTry   = DateTime.Now
                });
            }

            _db.SaveChanges();

            if (!string.IsNullOrEmpty(CurrentPage.Text3) && !string.IsNullOrEmpty(c.ContactEmail) && SF.isEmail(c.ContactEmail))
            {
                _db.OutEmails.Add(new OutEmail
                {
                    MailTo  = c.ContactEmail.Trim(),
                    Subject = Uco.Models.Resources.SystemModels.ContactMailSubject
                              .Replace("{HTTP_HOST}", Request.ServerVariables["HTTP_HOST"]),
                    Body = CurrentPage.Text3
                           .Replace("{HTTP_HOST}", Request.ServerVariables["HTTP_HOST"])
                           .Replace("{ContactName}", c.ContactName)
                           .Replace("{ContactEmail}", c.ContactEmail)
                           .Replace("{ContactPhone}", c.ContactPhone)
                           .Replace("{ContactData}", c.ContactData)
                           .Replace("{ContactReferal}", c.ContactReferal)
                           .Replace("{ContactUrl}", c.ContactUrl),
                    TimesSent = 0,
                    LastTry   = DateTime.Now
                });
            }

            return(Content(((FormPage)CurrentPage).Text2, "text/html"));
        }
 public static string GetLangCodeCurrentSettings()
 {
     return(RP.GetCurrentSettings().LanguageCode);
 }
        public static List <ProductShortModel> GetProductAutocomplete(int ShopID, string text)
        {
            var result = new List <ProductShortModel>();

            var sett = RP.GetCurrentSettings();

            if (sett != null && sett.AutocompleteOptions != null)
            {
                result.AddRange(
                    sett.AutocompleteOptions.Split(new char[] { '\n' }).Where(x => x.ToLower().Contains(text.ToLower())).Select(x => new ProductShortModel()
                {
                    Name = x,
                    ID   = 0
                })
                    );
            }

            #region Improving Search
            // "ת","ה","ות" - woman variants


            var source = LS.CurrentEntityContext.Products.AsNoTracking().AsQueryable();


            List <List <string> > searchAndOrList = new List <List <string> >();
            var words      = text.Split(new char[] { ' ', ',', '\n' }, StringSplitOptions.RemoveEmptyEntries).ToList();
            var countWords = words.Count;
            for (var i = 0; i < countWords; i++)
            {
                var listor = new List <string>();
                listor.Add(words[i]);
                searchAndOrList.Add(listor);
            }

            for (var i = 0; i < countWords; i++)
            {
                var word = words[i];
                //1)
                #region woman
                if (word.EndsWith("ת"))
                {
                    var variant1 = word.Remove(word.Length - 1, 1) + "ה";
                    var variant2 = word.Remove(word.Length - 1, 1) + "ות";
                    searchAndOrList[i].Add(variant1);
                    searchAndOrList[i].Add(variant2);
                    continue;
                }
                else if (word.EndsWith("ה"))
                {
                    var variant1 = word.Remove(word.Length - 1, 1) + "ת";
                    var variant2 = word.Remove(word.Length - 1, 1) + "ות";
                    searchAndOrList[i].Add(variant1);
                    searchAndOrList[i].Add(variant2);
                    continue;
                }
                else if (word.EndsWith("ות"))
                {
                    var variant1 = word.Remove(word.Length - 1, 1) + "ה";
                    var variant2 = word.Remove(word.Length - 2, 2) + "ת";
                    searchAndOrList[i].Add(variant1);
                    searchAndOrList[i].Add(variant2);
                    continue;
                }
                #endregion

                #region man couple
                // "ים"
                if (word.EndsWith("ים"))
                {
                    var variant1 = word.Remove(word.Length - 2, 2);
                    //replace
                    //"פ" - "ף"
                    //"נ" - "ן"
                    //"מ" - "ם"
                    // "כ" - "ך"
                    // "צ" - "ץ"
                    if (variant1.EndsWith("פ"))
                    {
                        variant1 = variant1.Remove(variant1.Length - 1, 1) + "ף";
                    }
                    else if (variant1.EndsWith("נ"))
                    {
                        variant1 = variant1.Remove(variant1.Length - 1, 1) + "ן";
                    }
                    else if (variant1.EndsWith("מ"))
                    {
                        variant1 = variant1.Remove(variant1.Length - 1, 1) + "ם";
                    }
                    else if (variant1.EndsWith("כ"))
                    {
                        variant1 = variant1.Remove(variant1.Length - 1, 1) + "ך";
                    }
                    else if (variant1.EndsWith("צ"))
                    {
                        variant1 = variant1.Remove(variant1.Length - 1, 1) + "ץ";
                    }

                    searchAndOrList[i].Add(variant1);
                    continue;
                }
                #endregion

                #region man couple 2

                //"פ" - "ף"
                //"נ" - "ן"
                //"מ" - "ם"
                // "כ" - "ך"
                // "צ" - "ץ"
                if (word.EndsWith("ף"))
                {
                    var variant1 = word.Remove(word.Length - 1, 1) + "פ";
                    variant1 += "ים";
                    searchAndOrList[i].Add(variant1);
                    continue;
                }
                else if (word.EndsWith("ן"))
                {
                    var variant1 = word.Remove(word.Length - 1, 1) + "נ";
                    variant1 += "ים";
                    searchAndOrList[i].Add(variant1);
                    continue;
                }
                else if (word.EndsWith("ם"))
                {
                    var variant1 = word.Remove(word.Length - 1, 1) + "מ";
                    variant1 += "ים";
                    searchAndOrList[i].Add(variant1);
                    continue;
                }
                else if (word.EndsWith("ך"))
                {
                    var variant1 = word.Remove(word.Length - 1, 1) + "כ";
                    variant1 += "ים";
                    searchAndOrList[i].Add(variant1);
                    continue;
                }
                else if (word.EndsWith("ץ"))
                {
                    var variant1 = word.Remove(word.Length - 1, 1) + "צ";
                    variant1 += "ים";
                    searchAndOrList[i].Add(variant1);
                    continue;
                }

                #endregion
            }
            //   var orTextPredicate = words.Where(x => x.Length > 3).ToList(); // select only length > 3, keywords
            //if (orTextPredicate.Count > 0)
            int whatPosition = 0;
            foreach (var orTextPredicate in searchAndOrList)
            {
                Expression <Func <Product, bool> > predicate = null;
                foreach (var s in orTextPredicate)
                {
                    if (whatPosition == 0)
                    {
                        if (predicate != null)
                        {
                            predicate = predicate.MultiSearchOrSql(x => x.Name.StartsWith(s + " ") ||
                                                                   x.SKU.StartsWith(s + " ") ||
                                                                   x.ShortDescription.StartsWith(s + " ") ||
                                                                   x.FullDescription.StartsWith(s + " ")
                                                                   //     || x.Manufacturer.Contains(s)
                                                                   );
                        }
                        else
                        {
                            predicate = x => (x.Name.StartsWith(s) ||
                                              x.SKU.StartsWith(s) ||
                                              x.ShortDescription.StartsWith(s) ||
                                              x.FullDescription.StartsWith(s)
                                              //      || x.Manufacturer.Contains(s)
                                              );
                        }
                    }
                    else
                    {
                        if (predicate != null)
                        {
                            predicate = predicate.MultiSearchOrSql(x => x.Name.Contains(s) ||
                                                                   x.SKU.Contains(s) ||
                                                                   x.ShortDescription.Contains(s) ||
                                                                   x.FullDescription.Contains(s)
                                                                   //     || x.Manufacturer.Contains(s)
                                                                   );
                        }
                        else
                        {
                            predicate = x => (x.Name.Contains(s) ||
                                              x.SKU.Contains(s) ||
                                              x.ShortDescription.Contains(s) ||
                                              x.FullDescription.Contains(s)
                                              //      || x.Manufacturer.Contains(s)
                                              );
                        }
                    }
                }
                if (predicate != null)
                {
                    source = source.Where(predicate);
                }
                whatPosition++;
            }


            #endregion

            result.AddRange((from ps in LS.CurrentEntityContext.ProductShopMap
                             join p in source
                             on ps.ProductID equals p.ID
                             where ps.ShopID == ShopID
                             // && p.Name.Contains(text)
                             select new ProductShortModel
            {
                Name = p.Name,
                ID = ps.ProductID
            }).Take(20).ToList());
            if (result.Count == 0)
            {
                //no result
                UserActivityService.InsertSearchNotFound(text, ShopID, LS.CurrentUser.ID
                                                         , HttpContext.Current.Request.RawUrl,
                                                         HttpContext.Current.Request.UrlReferrer != null ? HttpContext.Current.Request.UrlReferrer.OriginalString : null
                                                         , LS.GetUser_IP(HttpContext.Current.Request));
            }
            return(result);
        }
Пример #10
0
 public static void CleanMenuCache()
 {
     RP.CleanMenuRepository(RP.GetCurrentSettings().ID);
     RP.CleanMenuRepository(RP.GetAdminCurrentSettingsRepository().ID);
 }
        public ActionResult _HeaderScripts()
        {
            object r = RP.GetCurrentSettings().HeaderHtml;

            return(View(r));
        }
        public ActionResult _FormAdd(string InvisibleCaptchaValue, int FormID)
        {
            if (!CaptchaController.IsInvisibleCaptchaValid(InvisibleCaptchaValue))
            {
                ModelState.AddModelError(string.Empty, "Captcha error.");
                SF.LogError("_FormAdd Captcha error");
                return(Content("Error: Captcha", "text/html"));
            }

            AbstractPage CurrentPage = _db.FormPages.FirstOrDefault(r => r.ID == FormID);

            if (CurrentPage == null)
            {
                ModelState.AddModelError(string.Empty, "CurrentPage error");
                SF.LogError("_FormAdd CurrentPage error");
                return(Content("Error: CurrentPage error", "text/html"));
            }

            Contact c = new Contact();

            List <FormField> l = CurrentPage.GetDataFromXML1 <FormField>().OrderBy(r => r.FormFieldOrder).ToList();

            foreach (Uco.Models.FormField item in l.OrderBy(r => r.FormFieldOrder))
            {
                if (string.IsNullOrEmpty(Request["form_item_" + item.FormFieldID.ToString()]))
                {
                    continue;
                }
                string t = Request["form_item_" + item.FormFieldID.ToString()];

                if (item.FormFieldType == FormField.FormFildType.Name && string.IsNullOrEmpty(c.ContactName))
                {
                    c.ContactName = t;
                }
                else if (item.FormFieldType == FormField.FormFildType.PhoneNumber && string.IsNullOrEmpty(c.ContactPhone))
                {
                    c.ContactPhone = t;
                }
                else if (item.FormFieldType == FormField.FormFildType.EmailAddress && string.IsNullOrEmpty(c.ContactEmail))
                {
                    c.ContactEmail = t;
                }
                else
                {
                    c.ContactData = c.ContactData + item.FormFieldTitle + ": " + t + "<br />";
                }
            }

            c.ContactReferal = SF.GetCookie("Referal");
            c.ContactUrl     = "<a target='_blank' href='http://" + Request.ServerVariables["HTTP_HOST"] + Request.UrlReferrer.ToString() + "'>" + Request.UrlReferrer.ToString() + "</a>";
            c.ContactDate    = DateTime.Now;

            _db.Contacts.Add(c);
            _db.SaveChanges();

            foreach (string item in RP.GetCurrentSettings().AdminEmail.Split(','))
            {
                if (!SF.isEmail(item.Trim()))
                {
                    continue;
                }

                _db.OutEmails.Add(new OutEmail
                {
                    MailTo  = item.Trim(),
                    Subject = Uco.Models.Resources.SystemModels.ContactMailSubject
                              .Replace("{ID}", c.ID.ToString())
                              .Replace("{HTTP_HOST}", Request.ServerVariables["HTTP_HOST"]),
                    Body = Uco.Models.Resources.SystemModels.ContactMailBody
                           .Replace("{ID}", c.ID.ToString())
                           .Replace("{HTTP_HOST}", Request.ServerVariables["HTTP_HOST"])
                           .Replace("{ContactName}", c.ContactName)
                           .Replace("{ContactEmail}", c.ContactEmail)
                           .Replace("{ContactPhone}", c.ContactPhone)
                           .Replace("{ContactData}", c.ContactData)
                           .Replace("{ContactReferal}", c.ContactReferal)
                           .Replace("{ContactUrl}", c.ContactUrl),
                    TimesSent = 0,
                    LastTry   = DateTime.Now
                });
            }

            _db.SaveChanges();

            return(Content(RP.GetTextComponent("_FormAdd"), "text/html"));
        }
        public ActionResult _SmallFormAdd(ContactSmallForm csf, string InvisibleCaptchaValue)
        {
            if (!CaptchaController.IsInvisibleCaptchaValid(InvisibleCaptchaValue))
            {
                ModelState.AddModelError(string.Empty, "Captcha error.");
                SF.LogError("_SmallFormAdd Captcha error");
                return(Content("Error: Captcha", "text/html"));
            }

            if (ModelState.IsValid)
            {
                Contact c = new Contact();

                c.ContactEmail = csf.ContactEmail;
                c.ContactName  = csf.ContactName;
                c.ContactPhone = csf.ContactPhone;

                c.ContactReferal = SF.GetCookie("Referal");
                string UrlReferrer = UcoString.GetUtf8String(Request.UrlReferrer.ToString());
                c.ContactUrl  = "<a target='_blank' href='" + UrlReferrer + "'>" + UrlReferrer + "</a>";
                c.ContactDate = DateTime.Now;

                _db.Contacts.Add(c);
                _db.SaveChanges();

                foreach (string item in RP.GetCurrentSettings().AdminEmail.Split(','))
                {
                    if (!SF.isEmail(item.Trim()))
                    {
                        continue;
                    }

                    _db.OutEmails.Add(new OutEmail
                    {
                        MailTo  = item.Trim(),
                        Subject = Uco.Models.Resources.SystemModels.ContactMailSubject
                                  .Replace("{ID}", c.ID.ToString())
                                  .Replace("{HTTP_HOST}", Request.ServerVariables["HTTP_HOST"]),
                        Body = Uco.Models.Resources.SystemModels.ContactMailBody
                               .Replace("{ID}", c.ID.ToString())
                               .Replace("{HTTP_HOST}", Request.ServerVariables["HTTP_HOST"])
                               .Replace("{ContactName}", c.ContactName)
                               .Replace("{ContactEmail}", c.ContactEmail)
                               .Replace("{ContactPhone}", c.ContactPhone)
                               .Replace("{ContactData}", c.ContactData)
                               .Replace("{ContactReferal}", c.ContactReferal)
                               .Replace("{ContactUrl}", c.ContactUrl),
                        TimesSent = 0,
                        LastTry   = DateTime.Now
                    });
                }

                _db.SaveChanges();

                return(Content(RP.GetTextComponent("_SmallFormAdd"), "text/html"));
            }
            else
            {
                SF.LogError("_SmallFormAdd Model not valid");
                return(Content("Error: Model not valid", "text/html"));
            }
        }