예제 #1
0
    public static string SaveImageResize(HttpPostedFileBase hpf, string Path, int NewSize, string Orientation)
    {
        ImageCodecInfo    myImageCodecInfo    = GetEncoderInfo("image/jpeg");
        EncoderParameters myEncoderParameters = new EncoderParameters(1);

        myEncoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 100L);

        Bitmap _File = (Bitmap)Bitmap.FromStream(hpf.InputStream);

        if (NewSize > 100)
        {
            _File = Imaging.Resize(_File, NewSize, Orientation);
        }
        if (!Directory.Exists(Path))
        {
            Directory.CreateDirectory(HttpContext.Current.Server.MapPath(Path));
        }

        string imageName = Transliteration.Translit(hpf.FileName.Substring(0, hpf.FileName.IndexOf("."))).Replace(" ", "_");
        string extension = hpf.FileName.Substring(hpf.FileName.IndexOf("."));
        string filePath  = HttpContext.Current.Server.MapPath(Path + imageName + extension);

        if (File.Exists(filePath))
        {
            File.Delete(filePath);
        }
        _File.Save(filePath, myImageCodecInfo, myEncoderParameters);
        _File.Dispose();

        return(Path + imageName + extension);
    }
예제 #2
0
 /// <summary>
 /// Конструктор
 /// </summary>
 static Importer()
 {
     // маппинг объектов и сущностей
     Mapper.Initialize(cfg =>
     {
         cfg.CreateMap <Catalog, import_catalogs>()
         .ForMember(d => d.id, opt => opt.MapFrom(src => src.Id))
         .ForMember(d => d.c_title, opt => opt.MapFrom(src => src.Title))
         .ForMember(d => d.c_alias, opt => opt.MapFrom(src => Transliteration.Translit(src.Title)))
         .ForMember(d => d.d_date, opt => opt.MapFrom(src => DateTime.Now))
         .ForMember(d => d.uui_parent, opt =>
                    opt.MapFrom(src => src.ParentId.Equals("0")
                             ? Guid.Empty : Guid.Parse(src.ParentId)));
         cfg.CreateMap <Product, import_products>()
         .ForMember(d => d.id, opt => opt.MapFrom(src => src.Id))
         .ForMember(d => d.c_title, opt => opt.MapFrom(src => src.Title))
         .ForMember(d => d.c_code, opt => opt.MapFrom(src => src.Code))
         .ForMember(d => d.n_count, opt => opt.MapFrom(src => src.Count))
         .ForMember(d => d.d_date, opt => opt.MapFrom(src => src.Date))
         .ForMember(d => d.c_barcode, opt => opt.MapFrom(src => src.BarcodeList
                                                         .Select(s => s.Value.Trim())
                                                         .FirstOrDefault()))
         .ForMember(d => d.c_price_title, opt =>
                    opt.MapFrom(src => src.PriceList.Select(s => s.Title).FirstOrDefault()))
         .ForMember(d => d.m_price_value, opt =>
                    opt.MapFrom(src => src.PriceList.Select(s => !String.IsNullOrEmpty(s.Value)
                             ? Decimal.Parse(s.Value.Replace(".", ",")) : 0).FirstOrDefault()))
         .ForMember(d => d.c_photo, opt => opt.MapFrom(src => src.ImageList
                                                       .Where(w => w.IsMain || !w.IsMain)
                                                       .Select(s => s.Name.Trim().Replace(" ", ""))
                                                       .FirstOrDefault()));
         cfg.CreateMap <Image, import_product_images>()
         .ForMember(d => d.f_product, opt => opt.MapFrom(src => src.ProductId))
         .ForMember(d => d.c_title, opt => opt.MapFrom(src => src.Name))
         .ForMember(d => d.b_main, opt => opt.MapFrom(src => src.IsMain));
         cfg.CreateMap <Certificate, import_product_certificates>()
         .ForMember(d => d.f_product, opt => opt.MapFrom(src => src.ProductId))
         .ForMember(d => d.c_title, opt => opt.MapFrom(src => src.Name))
         .ForMember(d => d.b_hygienic, opt => opt.MapFrom(src => src.IsHygienic));
         cfg.CreateMap <CatalogProductLink, import_product_categories>()
         .ForMember(d => d.f_product, opt => opt.MapFrom(src => src.ProductId))
         .ForMember(d => d.f_catalog, opt => opt.MapFrom(src => src.CatalogId));
     });
 }
예제 #3
0
        public ActionResult Create(Guid id, IEnumerable <HttpPostedFileBase> upload)
        {
            string savePath = Settings.UserFiles + Domain + "/sitemap/doc/" + id + "/";

            foreach (HttpPostedFileBase doc in upload)
            {
                if (doc != null && doc.ContentLength > 0)
                {
                    int    idx        = doc.FileName.LastIndexOf('.');
                    string Title      = doc.FileName.Substring(0, idx);
                    string TransTitle = Transliteration.Translit(Title);
                    string FileName   = TransTitle + Path.GetExtension(doc.FileName);

                    if (System.IO.File.Exists(Server.MapPath(Path.Combine(savePath, FileName))))
                    {
                        FileName = TransTitle + "(1)" + Path.GetExtension(doc.FileName);
                        Title    = Title + "(1)";
                    }
                    string FullName = savePath + FileName;
                    if (!Directory.Exists(Server.MapPath(savePath)))
                    {
                        Directory.CreateDirectory(Server.MapPath(savePath));
                    }
                    //сохраняем оригинал
                    doc.SaveAs(Server.MapPath(Path.Combine(savePath, FileName)));


                    DocumentsModel docModel = new DocumentsModel()
                    {
                        FilePath = FullName,
                        Title    = Title,
                        idPage   = id
                    };

                    _cmsRepository.insDocuments(docModel);
                }
            }

            model.List = _cmsRepository.getDocuments(id);
            return(View(model));
        }
예제 #4
0
        /// <summary>
        /// Сохранение изображений
        /// </summary>
        /// <param name="upload"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        private Photo imageWorker(HttpPostedFileBase upload, int type)
        {
            // путь для сохранения изображения
            string savePath = Settings.UserFiles + Domain + Settings.LogoDir;

            int width  = 0; // ширина
            int height = 0; // высота

            switch (type)
            {
            case 1:
                width = 80;
                break;

            case 2:
                height = 290;
                break;
            }

            string fileExtension = upload.FileName.Substring(upload.FileName.LastIndexOf(".")).ToLower();

            var validExtension = (!string.IsNullOrEmpty(Settings.PicTypes)) ? Settings.PicTypes.Split(',') : "jpg,jpeg,png,gif".Split(',');

            if (!validExtension.Contains(fileExtension.Replace(".", "")))
            {
                return(null);
            }

            string fileName = Transliteration.Translit(upload.FileName.Substring(0, upload.FileName.LastIndexOf(".")));

            Photo photoNew = new Photo()
            {
                Name = fileName + fileExtension,
                Size = Files.FileAnliz.SizeFromUpload(upload),
                Url  = Files.SaveImageResizeRename(upload, savePath, fileName, width, height)
            };

            return(photoNew);
        }
예제 #5
0
        public ActionResult Item(Guid id, CategoryViewModel backModel)
        {
            ErrorMessage userMessage = new ErrorMessage();

            userMessage.title = "Информация";

            if (ModelState.IsValid)
            {
                backModel.Item.Id = id;

                string parentParam = Request.Form["Item_ParentId"];

                backModel.Item.Parent = !String.IsNullOrEmpty(parentParam)
                                            ? Guid.Parse(parentParam)
                                            : backModel.Item.Parent;

                if (String.IsNullOrEmpty(backModel.Item.Alias))
                {
                    backModel.Item.Alias = Transliteration.Translit(backModel.Item.Title);
                }
                else
                {
                    backModel.Item.Alias = Transliteration.Translit(backModel.Item.Alias);
                }

                if (_cmsRepository.categoryExists(id))
                {
                    _cmsRepository.updateCategory(backModel.Item);
                    userMessage.info = "Запись обновлена";
                }
                else
                {
                    _cmsRepository.createCategory(backModel.Item);
                    userMessage.info = "Запись добавлена";
                }

                string backUrl = backModel.Item.Parent != null ? "item/" + backModel.Item.Parent : string.Empty;

                userMessage.buttons = new ErrorMassegeBtn[]
                {
                    new ErrorMassegeBtn {
                        url = StartUrl + backUrl, text = "Вернуться в список"
                    },
                    new ErrorMassegeBtn {
                        url = "/Admin/category/item/" + id, text = "ок"
                    }
                };
            }
            else
            {
                userMessage.info = "Ошибка в заполнении формы. Поля в которых допушены ошибки - помечены цветом.";

                userMessage.buttons = new ErrorMassegeBtn[]
                {
                    new ErrorMassegeBtn {
                        url = "#", text = "ок", action = "false"
                    }
                };
            }
            model.Item = _cmsRepository.getCategory(id);

            // хлебные крошки
            model.BreadCrumbs = _cmsRepository.getCategoryBreadCrumbs(model.Item.Parent);

            model.ErrorInfo = userMessage;
            return(View(model));
        }
예제 #6
0
        public ActionResult Save(Guid Id, MaterialsViewModel bindData, HttpPostedFileBase upload)
        {
            ErrorMessage userMessage = new ErrorMessage();

            userMessage.title = "Информация";

            if (ModelState.IsValid)
            {
                var res         = false;
                var getMaterial = _cmsRepository.getMaterial(Id);

                // добавление необходимых полей перед сохранением модели
                bindData.Item.Id = Id;

                #region Сохранение изображения
                var width  = 0;
                var height = 0;
                var defaultPreviewSizes = new string[] { "540", "360" };

                // путь для сохранения изображения //Preview image
                string savePath = Settings.UserFiles + Domain + Settings.MaterialsDir; //+2017_09
                if (upload != null && upload.ContentLength > 0)
                {
                    string fileExtension = upload.FileName.Substring(upload.FileName.LastIndexOf(".")).ToLower();

                    var validExtension = (!string.IsNullOrEmpty(Settings.PicTypes)) ? Settings.PicTypes.Split(',') : "jpg,jpeg,png,gif".Split(',');
                    if (!validExtension.Contains(fileExtension.Replace(".", "")))
                    {
                        model.Item = _cmsRepository.getMaterial(Id);

                        model.ErrorInfo = new ErrorMessage()
                        {
                            title   = "Ошибка",
                            info    = "Вы не можете загружать файлы данного формата",
                            buttons = new ErrorMassegeBtn[]
                            {
                                new ErrorMassegeBtn {
                                    url = "#", text = "ок", action = "false", style = "primary"
                                }
                            }
                        };
                        return(View("Item", model));
                    }

                    var sizes = (!string.IsNullOrEmpty(Settings.MaterialPreviewImgSize)) ? Settings.MaterialPreviewImgSize.Split(',') : defaultPreviewSizes;
                    int.TryParse(sizes[0], out width);
                    int.TryParse(sizes[1], out height);
                    bindData.Item.PreviewImage = new Photo()
                    {
                        Name   = Id.ToString() + fileExtension,
                        Size   = Files.FileAnliz.SizeFromUpload(upload),
                        Url    = Files.SaveImageResizeRename(upload, savePath, Id.ToString(), width, height),
                        Source = bindData.Item.PreviewImage.Source
                    };
                }
                #endregion

                if (String.IsNullOrEmpty(bindData.Item.Alias))
                {
                    bindData.Item.Alias = Transliteration.Translit(bindData.Item.Title);
                }
                else
                {
                    bindData.Item.Alias = Transliteration.Translit(bindData.Item.Alias);
                }

                //Определяем Insert или Update
                if (getMaterial != null)
                {
                    userMessage.info = "Запись обновлена";
                    res = _cmsRepository.updateCmsMaterial(bindData.Item);
                }

                else
                {
                    userMessage.info = "Запись добавлена";
                    res = _cmsRepository.insertCmsMaterial(bindData.Item);
                }
                //Сообщение пользователю
                if (res)
                {
                    string currentUrl = Request.Url.PathAndQuery;

                    userMessage.buttons = new ErrorMassegeBtn[] {
                        new ErrorMassegeBtn {
                            url = StartUrl + Request.Url.Query, text = "Вернуться в список"
                        },
                        new ErrorMassegeBtn {
                            url = currentUrl, text = "ок"
                        }
                    };
                }
                else
                {
                    userMessage.info = "Произошла ошибка";

                    userMessage.buttons = new ErrorMassegeBtn[] {
                        new ErrorMassegeBtn {
                            url = StartUrl + Request.Url.Query, text = "Вернуться в список"
                        },
                        new ErrorMassegeBtn {
                            url = "#", text = "ок", action = "false"
                        }
                    };
                }
            }
            else
            {
                userMessage.info = "Ошибка в заполнении формы. Поля в которых допушены ошибки - помечены цветом.";

                userMessage.buttons = new ErrorMassegeBtn[] {
                    new ErrorMassegeBtn {
                        url = "#", text = "ок", action = "false"
                    }
                };
            }

            model.Item = _cmsRepository.getMaterial(Id);
            if (model.Item != null && model.Item.PreviewImage != null && !string.IsNullOrEmpty(model.Item.PreviewImage.Url))
            {
                var photo = model.Item.PreviewImage;
                model.Item.PreviewImage        = Files.getInfoImage(model.Item.PreviewImage.Url);
                model.Item.PreviewImage.Source = photo.Source;
            }
            model.ErrorInfo = userMessage;

            return(View("Item", model));
        }
예제 #7
0
        public ActionResult Save(Guid Id, SiteSectionViewModel bindData)
        {
            ErrorMessage userMessage = new ErrorMessage();

            userMessage.title = "Информация";

            if (ModelState.IsValid)
            {
                var res            = false;
                var getSiteSection = _cmsRepository.getSiteSectionItem(Id);

                // добавление необходимых полей перед сохранением модели
                bindData.Item.Id = Id;

                if (String.IsNullOrEmpty(bindData.Item.Alias))
                {
                    bindData.Item.Alias = Transliteration.Translit(bindData.Item.Title);
                }
                else
                {
                    bindData.Item.Alias = Transliteration.Translit(bindData.Item.Alias);
                }

                //Определяем Insert или Update
                if (getSiteSection != null)
                {
                    res = _cmsRepository.updateSiteSection(bindData.Item);
                    userMessage.info = "Запись обновлена";
                }
                else
                {
                    res = _cmsRepository.insertSiteSection(bindData.Item);
                    userMessage.info = "Запись добавлена";
                }
                if (!res)
                {
                    userMessage.info = "Произошла ошибка";
                }

                userMessage.buttons = new ErrorMassegeBtn[]
                {
                    new ErrorMassegeBtn {
                        url = StartUrl + Request.Url.Query, text = "Вернуться в список"
                    },
                    new ErrorMassegeBtn {
                        url = "#", text = "ок", action = "false"
                    }
                };
            }
            else
            {
                userMessage.info    = "Ошибка в заполнении формы. Поля в которых допушены ошибки - помечены цветом.";
                userMessage.buttons = new ErrorMassegeBtn[]
                {
                    new ErrorMassegeBtn {
                        url = "#", text = "ок", action = "false"
                    }
                };
            }
            model.Item      = _cmsRepository.getSiteSectionItem(Id);
            model.ErrorInfo = userMessage;

            return(View("Item", model));
        }
예제 #8
0
        public ActionResult Item(Guid id, PageViewModel backModel, string[] Item_MenuGroups, string FaIconList)
        {
            ErrorMessage message = new ErrorMessage
            {
                Title = "Информация"
            };

            string _parent       = backModel.Item.ParentId != null ? $"item/{backModel.Item.ParentId.ToString()}" : "";
            string backToListUrl = $"{StartUrl}{_parent}{Request.Url.Query}";



            if (ModelState.IsValid)
            {
                PageModel parentElement = null;

                if ((backModel.Item.ParentId != null))
                {
                    parentElement = _cmsRepository.GetPage((Guid)backModel.Item.ParentId);
                }

                backModel.Item.Path = (parentElement != null)?$"{parentElement.Path}{parentElement.Alias}/":"/";
                backModel.Item.Id   = id;

                var ControllerId = Request["Item.Controller.Id"];
                if (!String.IsNullOrEmpty(ControllerId) && Guid.TryParse(ControllerId, out Guid result))
                {
                    backModel.Item.ControllerPage = result;
                }

                if (Item_MenuGroups != null)
                {
                    backModel.Item.MenuGroups = Item_MenuGroups.Select(s => Guid.Parse(s)).ToArray();
                }
                if (!String.IsNullOrEmpty(FaIconList))
                {
                    backModel.Item.FaIcon = FaIconList;
                }



                if (String.IsNullOrWhiteSpace(backModel.Item.Alias))
                {
                    backModel.Item.Alias = backModel.Item.Name;
                }
                backModel.Item.Alias = Transliteration.Translit(backModel.Item.Alias);

                //
                backModel.Item.Alias = SpotAlias(backModel.Item.Alias, backModel.Item.Path, id);

                if (_cmsRepository.CheckPageExists(id))
                {
                    _cmsRepository.UpdatePage(backModel.Item);
                    message.Info = "Запись обновлена";
                }
                else
                {
                    _cmsRepository.InsertPage(backModel.Item);
                    message.Info = "Запись добавлена";
                }
                message.Buttons = new ErrorMessageBtnModel[]
                {
                    new ErrorMessageBtnModel {
                        Url = backToListUrl, Text = "вернуться в список"
                    },
                    new ErrorMessageBtnModel {
                        Url = $"{StartUrl}item/{id}", Text = "ок", Action = "false"
                    }
                };
            }
            else
            {
                message.Info    = "Ошибка в заполнении формы. Поля в которых допущены ошибки - помечены цветом";
                message.Buttons = new ErrorMessageBtnModel[]
                {
                    new ErrorMessageBtnModel {
                        Url = $"{StartUrl}item/{id}", Text = "ок", Action = "false"
                    }
                };
            }

            model.Item = _cmsRepository.GetPage(id);
            GetBreadCrumbs(id);
            model.ErrorInfo = message;
            return(View("item", model));
        }
예제 #9
0
        public ActionResult Index(SitesViewModel backModel, HttpPostedFileBase upload, HttpPostedFileBase uploadBack)
        {
            ErrorMessage userMassege = new ErrorMessage
            {
                title = "Информация"
            };

            if (ModelState.IsValid)
            {
                double MapX = 0;
                double MapY = 0;

                if (backModel.Item.CoordX != null)
                {
                    MapX = (double)backModel.Item.CoordX;
                }
                if (backModel.Item.CoordY != null)
                {
                    MapY = (double)backModel.Item.CoordY;
                }
                ViewBag.Xcoord = MapX;
                ViewBag.Ycoord = MapY;

                if (backModel.Item.Adress != String.Empty && (MapX == 0 || MapY == 0))
                {
                    string url  = "http://geocode-maps.yandex.ru/1.x/?format=json&results=1&geocode=" + backModel.Item.Adress;
                    string html = string.Empty;
                    // Отправляем GET запрос и получаем в ответ JSON с данным об адресе
                    HttpWebRequest  myHttpWebRequest  = (HttpWebRequest)HttpWebRequest.Create(url);
                    HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
                    StreamReader    myStreamReader    = new StreamReader(myHttpWebResponse.GetResponseStream());
                    html = myStreamReader.ReadToEnd();

                    string coord   = String.Empty;
                    Regex  ReCoord = new Regex("(?<=\"Point\":{\"pos\":\")(.*)(?=\"})", RegexOptions.IgnoreCase);

                    coord = Convert.ToString(ReCoord.Match(html).Groups[1].Value);

                    coord = coord.Replace(" ", ";");
                    string[] ArrCoord = coord.Split(';');
                    foreach (string qwerty in ArrCoord)
                    {
                        MapX = double.Parse(ArrCoord[1].Replace(".", ","));
                        MapY = double.Parse(ArrCoord[0].Replace(".", ","));
                    }
                    backModel.Item.CoordX = MapX;
                    backModel.Item.CoordY = MapY;
                }

                #region Сохранение изображений

                if (upload != null && upload.ContentLength > 0)
                {
                    var photo = imageWorker(upload, 1);
                    if (photo == null)
                    {
                        return(View("Item", model));
                    }

                    backModel.Item.Logo = photo;
                }

                #region Изображени под слайдером
                if (uploadBack != null && uploadBack.ContentLength > 0)
                {
                    string SavePath   = Settings.UserFiles + Domain + "/logo/";
                    int    idx        = uploadBack.FileName.LastIndexOf('.');
                    string Title      = uploadBack.FileName.Substring(0, idx);
                    string TransTitle = Transliteration.Translit(Title);
                    string FileName   = TransTitle + Path.GetExtension(uploadBack.FileName);


                    string FullName = SavePath + FileName;
                    if (!Directory.Exists(Server.MapPath(SavePath)))
                    {
                        Directory.CreateDirectory(Server.MapPath(SavePath));
                    }
                    uploadBack.SaveAs(Server.MapPath(Path.Combine(SavePath, FileName)));
                    backModel.Item.BackGroundImg = new Photo {
                        Url = FullName
                    };
                }

                #endregion


                #endregion

                _cmsRepository.updateSiteInfo(backModel.Item);
                userMassege.info    = "Запись обновлена";
                userMassege.buttons = new ErrorMassegeBtn[]
                {
                    new ErrorMassegeBtn {
                        url = "/Admin/sitesettings", text = "ок"
                    }
                };
            }
            else
            {
                userMassege.info = "Ошибка в заполнении формы. Поля в которых допушены ошибки - помечены цветом.";

                userMassege.buttons = new ErrorMassegeBtn[]
                {
                    new ErrorMassegeBtn {
                        url = "#", text = "ок", action = "false"
                    }
                };
            }
            model.ErrorInfo = userMassege;
            model.Item      = _cmsRepository.getSite();
            return(View(model));
        }
예제 #10
0
        public ActionResult Item(Guid id, SiteMapViewModel back_model, HttpPostedFileBase upload)
        {
            ErrorMessage userMessage = new ErrorMessage
            {
                title = "Информация"
            };

            #region Данные необходимые для сохранения
            back_model.Item.Id = id;
            if (string.IsNullOrEmpty(Request.Form["Item_ParentId"]))
            {
                back_model.Item.ParentId = null;
            }
            else
            {
                back_model.Item.ParentId = back_model.Item.ParentId != null ? back_model.Item.ParentId : Guid.Parse(Request.Form["Item_ParentId"]); // родительский id
            }

            var p = back_model.Item.ParentId != null?_cmsRepository.getSiteMapItem((Guid)back_model.Item.ParentId) : null;

            back_model.Item.Path = p == null ? "/" : p.Path + p.Alias + "/";


            back_model.Item.Site = Domain;

            if (String.IsNullOrEmpty(back_model.Item.Alias))
            {
                back_model.Item.Alias = Transliteration.Translit(back_model.Item.Title);
            }
            else
            {
                back_model.Item.Alias = Transliteration.Translit(back_model.Item.Alias);
            }


            if (_cmsRepository.existSiteMap(back_model.Item.Path, back_model.Item.Alias, back_model.Item.Id))// && back_model.Item.OldId!=null
            {
                model.ErrorInfo = new ErrorMessage()
                {
                    title   = "Ошибка",
                    info    = "Такой алиас на данном уровне уже существует, введите иное значение в поле Алиас",
                    buttons = new ErrorMassegeBtn[]
                    {
                        new ErrorMassegeBtn {
                            url = "#", text = "ок", action = "false", style = "primary"
                        }
                    }
                };
                model.Item = back_model.Item;
                // хлебные крошки
                model.BreadCrumbs   = _cmsRepository.getSiteMapBreadCrumbs(back_model.Item.ParentId);
                model.Item.ParentId = back_model.Item.ParentId;
                var _mg = new MultiSelectList(model.MenuTypes, "value", "text", model.Item?.MenuGroups);
                ViewBag.GroupMenu = _mg;
                return(View("Item", model));
            }


            // хлебные крошки
            model.BreadCrumbs = _cmsRepository.getSiteMapBreadCrumbs(back_model.Item.ParentId);

            // список дочерних элементов
            model.Childrens = _cmsRepository.getSiteMapChildrens(id);
            #endregion
            //определяем занятость входного url
            if (!_cmsRepository.ckeckSiteMapAlias(back_model.Item.Alias, back_model.Item.ParentId.ToString(), id))
            {
                if (ModelState.IsValid)
                {
                    #region Сохранение изображение
                    // путь для сохранения изображения
                    string savePath = Settings.UserFiles + Domain + Settings.SiteMapDir;

                    int width  = 264;
                    int height = 70;

                    if (upload != null && upload.ContentLength > 0)
                    {
                        string fileExtension = upload.FileName.Substring(upload.FileName.LastIndexOf(".")).ToLower();

                        var validExtension = (!string.IsNullOrEmpty(Settings.PicTypes)) ? Settings.PicTypes.Split(',') : "jpg,jpeg,png,gif".Split(',');
                        if (!validExtension.Contains(fileExtension.Replace(".", "")))
                        {
                            model.Item = _cmsRepository.getSiteMapItem(id);

                            model.ErrorInfo = new ErrorMessage()
                            {
                                title   = "Ошибка",
                                info    = "Вы не можете загружать файлы данного формата",
                                buttons = new ErrorMassegeBtn[]
                                {
                                    new ErrorMassegeBtn {
                                        url = "#", text = "ок", action = "false", style = "primary"
                                    }
                                }
                            };

                            return(View("Item", model));
                        }

                        Photo photoNew = new Photo()
                        {
                            Name = id.ToString() + fileExtension,
                            Size = Files.FileAnliz.SizeFromUpload(upload),
                            Url  = Files.SaveImageResizeRename(upload, savePath, id.ToString(), width, height)
                        };

                        back_model.Item.Photo = photoNew;
                    }
                    #endregion

                    if (_cmsRepository.checkSiteMap(id))
                    {
                        //Если запись заблокирована от редактирования некоторых полей
                        var siteMapItem = _cmsRepository.getSiteMapItem(id);
                        if (siteMapItem.Blocked && !model.Account.Group.ToLower().Equals("developer") && !model.Account.Group.ToLower().Equals("administrator"))
                        {
                            siteMapItem.Disabled     = back_model.Item.Disabled;
                            siteMapItem.DisabledMenu = back_model.Item.DisabledMenu;
                            siteMapItem.Keyw         = back_model.Item.Keyw;
                            siteMapItem.Desc         = back_model.Item.Desc;
                            siteMapItem.Text         = back_model.Item.Text;
                            siteMapItem.Url          = back_model.Item.Url;
                            siteMapItem.ParentId     = back_model.Item.ParentId;
                            siteMapItem.MenuGroups   = back_model.Item.MenuGroups;
                            siteMapItem.Path         = back_model.Item.Path;

                            _cmsRepository.updateSiteMapItem(id, siteMapItem);
                        }
                        else
                        {
                            _cmsRepository.updateSiteMapItem(id, back_model.Item); //, AccountInfo.id, RequestUserInfo.IP
                        }

                        userMessage.info = "Запись обновлена";
                    }
                    else
                    {
                        _cmsRepository.createSiteMapItem(id, back_model.Item); //, AccountInfo.id, RequestUserInfo.IP
                        userMessage.info = "Запись добавлена";
                    }



                    string backUrl = back_model.Item.ParentId != null ? "item/" + back_model.Item.ParentId : string.Empty;

                    userMessage.buttons = new ErrorMassegeBtn[]
                    {
                        new ErrorMassegeBtn {
                            url = StartUrl + backUrl, text = "Вернуться в список"
                        },
                        new ErrorMassegeBtn {
                            url = "/Admin/sitemap/item/" + id, text = "ок"
                        }
                    };
                }
                else
                {
                    userMessage.info = "Ошибка в заполнении формы. Поля в которых допушены ошибки - помечены цветом.";

                    userMessage.buttons = new ErrorMassegeBtn[]
                    {
                        new ErrorMassegeBtn {
                            url = "#", text = "ок", action = "false"
                        }
                    };
                }
            }
            else
            {
                userMessage.info = "Элемент с таким алиасом на этом уровне уже существует";

                userMessage.buttons = new ErrorMassegeBtn[]
                {
                    new ErrorMassegeBtn {
                        url = "#", text = "ок", action = "false"
                    }
                };
            }
            model.Item = _cmsRepository.getSiteMapItem(id);

            var mg = new MultiSelectList(model.MenuTypes, "value", "text", model.Item?.MenuGroups);
            ViewBag.GroupMenu = mg;

            var aviable = (model.MenuTypes != null) ?
                          (model.MenuTypes.Where(t => t.available).Any()) ?
                          model.MenuTypes.Where(t => t.available).ToArray() : new Catalog_list[] { }
                                        : new Catalog_list[] { };



            var mgAviable = new MultiSelectList(aviable, "value", "text", model.Item != null ? model.Item.MenuGroups : null);
            ViewBag.GroupMenuAviable = mgAviable;


            model.Item.MenuGroups = null;
            model.ErrorInfo       = userMessage;

            return(View(model));
        }
예제 #11
0
        static void Main(string[] args)
        {
            //args = new string[] { @"C:\Users\htc\Desktop\дом", @"C:\Users\htc\Desktop\test", "resizefolder", "W3siZm9sZGVyX25hbWUiOiJtZWRpdW0iLCJ3aWR0aCI6NTAwLCJoZWlnaHQiOjMwMCwiY3JvcGVkIjoiY292ZXIifV0=" };

            OpenCL.IsEnabled = false;
            string inFileOrFolder  = PathToUnix(args[0]);
            string outFileOrFolder = PathToUnix(args[1]);
            string cmd             = args[2].ToLower().Trim();

            #region resizefolder
            if (cmd == "resizefolder")
            {
                foreach (var md in JsonConvert.DeserializeObject <List <ResizeFolderModel> >(Base64.Decode(args[3])))
                {
                    Parallel.ForEach(Directory.GetFiles(inFileOrFolder, "*.*", SearchOption.AllDirectories), new ParallelOptions()
                    {
                        MaxDegreeOfParallelism = 8
                    }, inFile =>
                    {
                        string outFolder = PathToUnix(Path.GetDirectoryName(PathToUnix(inFile).Replace(inFileOrFolder, $"{outFileOrFolder}/{md.folder_name}")));
                        Directory.CreateDirectory(outFolder);
                        string outFile = $"{outFolder}/{Transliteration.Translit(Path.GetFileName(inFile))}";

                        using (MagickImage image = new MagickImage(inFile))
                        {
                            #region Локальная функция - "GetModelOfExistingFile"
                            ResizeFolderModel GetModelOfExistingFile(string path)
                            {
                                using (MagickImage img = new MagickImage(path))
                                {
                                    return(new ResizeFolderModel()
                                    {
                                        width = img.Width,
                                        height = img.Height
                                    });
                                }
                            }
                            #endregion

                            if (md.croped == "cover")
                            {
                                // Привью нету
                                // Размер привью не совпадает по высоте или ширине
                                if (!File.Exists(outFile) || (GetModelOfExistingFile(outFile) is ResizeFolderModel existSmallImg && (md.width != existSmallImg.width || md.height != existSmallImg.height)))
                                {
                                    // Размер изображения оригинал
                                    float image_w = image.Width;
                                    float image_h = image.Height;

                                    // Какой нужен
                                    float resize_w = md.width;
                                    float resize_h = md.height;

                                    //
                                    float ratio_w = resize_w / image_w;
                                    float ratio_h = resize_h / image_h;
                                    float ratio   = Math.Max(ratio_w, ratio_h);

                                    // Новый размер изображения
                                    int new_width  = (int)Math.Ceiling(image_w * ratio);
                                    int new_height = (int)Math.Ceiling(image_h * ratio);

                                    // Куда двигать, да бы было по центру
                                    int offset_left = (int)Math.Ceiling((new_width - resize_w) / 2);
                                    int offset_top  = (int)Math.Ceiling((new_height - resize_h) / 2);

                                    // Сохраняем изображение
                                    image.Resize(new_width, new_height);
                                    image.Crop(offset_left, offset_top, (int)resize_w, (int)resize_h);
                                    image.Write(outFile);
                                }
                            }
                            else
                            {
                                // Изображение нету
                                // Размер изображения не совпадает по высоте и ширине
                                if (!File.Exists(outFile) || (GetModelOfExistingFile(outFile) is ResizeFolderModel existImg && (md.width != existImg.width && md.height != existImg.height)))
                                {
                                    image.Resize(md.width, md.height);
                                    image.Write(outFile);
                                }
                            }
                        }