示例#1
0
        static void Main(string[] args)
        {
            IProductRepository       productRepository       = new ProductRepository();
            ICacheStorage            cacheStorage            = new SystemRuntimeCacheStorage();
            IConfigurationRepository configurationRepository = new ConfigFileConfigurationRepository();
            IContextService          contextService          = new ThreadContextService();
            IFileService             fileService             = new DefaultFileService();
            ILoggingService          loggingService          = new Log4NetLoggingService(configurationRepository, contextService);
            // loggingService = new ConsoleLoggingService();
            IEmailService emailService   = new EmailService();
            var           productService = new ProductService(productRepository, cacheStorage, configurationRepository, loggingService);

            var response = productService.GetProduct(new GetProductRequest {
                Id = 12
            });

            if (response.Success)
            {
                Console.WriteLine(string.Concat("Product name: ", response.Product.Name));
            }
            else
            {
                Console.WriteLine(response.Exception);
            }

            Console.ReadKey();
        }
示例#2
0
        public virtual ActionResult Delete(int id)
        {
            var entity = Repository.GetByPrimaryKey(id);

            try
            {
                // удаляем файлы
                foreach (var field in Settings.FormSettings.Fields.Where(settings => settings is UploadFileSettings))
                {
                    var value = TypeHelpers.GetPropertyValue(entity, field.Name);


                    if (value is IEnumerable)
                    {
                        // aganzha
                        var toDelete = new List <IFileEntity>();
                        foreach (IFileEntity file in (IEnumerable)value)
                        {
                            toDelete.Add(file);
                        }
                        while (toDelete.Count > 0)
                        {
                            var file = toDelete.FirstOrDefault();
                            DefaultFileService.DeleteFile(file, HttpContext);
                            ((IObjectContextAdapter)Repository.DataContext).ObjectContext.DeleteObject(file);
                            toDelete.Remove(file);
                        }
                        //var propType = value.GetType();
                        //MethodInfo methodInfo = propType.GetMethod("Clear");
                        //object[] parametersArray = new object[] { file };
                        //methodInfo.Invoke(propValue, parametersArray);
                        //((IObjectContextAdapter)Repository.DataContext).ObjectContext.DeleteObject(file);

                        //    var list = ((IListSource) value).GetList();
                        //    foreach (var file in list.Cast<IFileEntity>().ToList())
                        //    {
                        //        DefaultFileService.DeleteFile(file, HttpContext);
                        //        ((IObjectContextAdapter)Repository.DataContext).ObjectContext.DeleteObject(file);
                        //    }
                        //    list.Clear();
                    }
                    else if (value != null)
                    {
                        DefaultFileService.DeleteFile((IFileEntity)value, HttpContext);
                        ((IObjectContextAdapter)Repository.DataContext).ObjectContext.DeleteObject(value);
                    }
                }
                // удаляем элемент
                Repository.Delete(entity);
            }
            catch (Exception e)
            {
                Logger.Instance.LogException(e);
            }

            return(ToIndex());
        }
示例#3
0
    public App()
    {
        var broadcastFactory      = new ChainerFactory(16384);
        var networkServiceFactory = new NetworkServiceFactory();

        _watcher          = networkServiceFactory.CreateWatcher();
        _broadcastService = new BroadcastService(broadcastFactory, _watcher, networkServiceFactory.CreateUtility());
        InitializeBroadcastService(networkServiceFactory, _broadcastService);
        var frameworkDialogFactory = new DefaultFrameworkDialogFactory();
        var dialogService          = new DefaultDialogService(frameworkDialogFactory);
        var fileService            = new DefaultFileService(new [] { ".lpsnp" });

        _paintDataContext = new PaintViewModel(_broadcastService, dialogService, fileService, networkServiceFactory);
    }
示例#4
0
        public virtual ActionResult UploadFileCollectionItem(FineUpload upload, int id, string propName, int parentId)
        {
            // id - айдишник корневого элемента, который мы сейчас редактируем
            // parentId - айдишник элемента, которому принадлежит файл (элемента в коллекции)
            // propName - полный путь к элементу и файлу (root.items.innerCollection.File, например)

            // каким-то образом мне надо добраться до элемента

            //var root = Repository.GetByPrimaryKey(id);
            //propName
            if (upload.InputStream != null && upload.InputStream.Length != 0)
            {
                try
                {
                    var entity   = Repository.GetByPrimaryKey(id);
                    var path     = propName.Split('.');
                    var parent   = GetParent(entity, path, 0, parentId);      // возвращает элемент коллекции innerCollection с id=parentId
                    var fileprop = path[path.Length - 1];                     // свойство в котором хранится файл
                    var file     = (IFileEntity)TypeHelpers.GetPropertyValue(parent, fileprop);
                    var settings = Settings.GetFormSettingsItem(propName);
                    if (file == null)
                    {
                        var propType = TypeHelpers.GetPropertyType(parent, fileprop);
                        file = (IFileEntity)Activator.CreateInstance(propType);
                        ((IObjectContextAdapter)Repository.DataContext).ObjectContext.AddObject(TypeHelpers.GetEntitySetName(file, Repository.DataContext), file);
                        TypeHelpers.SetPropertyValue(parent, fileprop, file);
                    }

                    DefaultFileService.DeleteFile(file, HttpContext);
                    var defaultPath = AppConfig.GetValue(AppConfig.BasePathForImages);
                    var filepath    = Server.MapPath(defaultPath);
                    var filename    = string.Format("{0}{1}", Guid.NewGuid(), Path.GetExtension(upload.Filename));
                    var fullname    = Path.Combine(filepath, filename);
                    DefaultFileService.ResaveImage(upload, fullname, (UploadFileSettings)settings);
                    file.Name = Path.Combine(defaultPath, filename);
                    file.Date = DateTime.Now;

                    Repository.Save();
                    return(new FineUploaderResult(true, new
                    {
                        Url = Url.Content(file.Name)
                    }));
                }
                catch (Exception exception)
                {
                    return(new FineUploaderResult(false, null, exception.Message));
                }
            }
            return(new FineUploaderResult(false, null, "файл не был передан"));
        }
示例#5
0
        public virtual FineUploaderResult UploadFile(FineUpload upload, int id, string propName)
        {
            var settings = GetFileSettings(propName);

            if (upload.InputStream != null && upload.InputStream.Length != 0 && settings != null)
            {
                try
                {
                    var entity = Repository.GetByPrimaryKey(id);
                    var value  = TypeHelpers.GetPropertyValue(entity, propName);

                    Func <IFileEntity> saveImage = () =>
                    {
                        // надо создать новое value и добавить его в базу
                        var t    = TypeHelpers.GetPropertyType(entity, propName);
                        var file = (IFileEntity)Activator.CreateInstance(t);

                        // формируем пути
                        var defaultPath = AppConfig.GetValue(AppConfig.BasePathForImages);
                        if (String.IsNullOrEmpty(defaultPath))
                        {
                            defaultPath = "~/Content/";
                        }
                        var relativePath = settings.PathToSave ?? defaultPath;
                        if (string.IsNullOrEmpty(relativePath))
                        {
                            throw new Exception("Не указан путь сохранения файла");
                        }
                        var path     = Server.MapPath(relativePath);
                        var filename = string.Format("{0}{1}", Guid.NewGuid(), Path.GetExtension(upload.Filename));
                        var fullname = Path.Combine(path, filename);

                        // сохраняем файл
                        if (settings.IsImage)
                        {
                            DefaultFileService.ResaveImage(upload, fullname, settings);
                        }
                        else
                        {
                            upload.SaveAs(fullname);
                        }

                        file.Name       = Path.Combine(relativePath, filename);
                        file.SourceName = upload.Filename;
                        file.Date       = DateTime.Now;
                        file.Visibility = true;
                        file.Size       = new FileInfo(fullname).Length;
                        var entitySetName = TypeHelpers.GetEntitySetName(file, Repository.DataContext);
                        ((IObjectContextAdapter)Repository.DataContext).ObjectContext.AddObject(entitySetName, file);
                        return(file);
                    };

                    IFileEntity result;
                    if (value is IEnumerable)
                    {
                        result = saveImage();
                        var        type            = value.GetType();
                        MethodInfo methodInfo      = type.GetMethod("Add");
                        object[]   parametersArray = new object[] { result };
                        methodInfo.Invoke(value, parametersArray);
                        // aganzha
                        //var set = (System.Collections.Generic.HashSet<object>)value;


                        //var type = result.GetType();
                        //var list = ((IListSource)value).GetList();
                        //var sortList = list.Cast<IFileEntity>().ToList();
                        //if (sortList.Any())
                        //{
                        //    result.Sort = sortList.Max(fileEntity => fileEntity.Sort) + 1;
                        //}
                        //list.Add(result);
                    }
                    else
                    {
                        result = (IFileEntity)value;
                        if (result != null)
                        {
                            DefaultFileService.DeleteFile(result, ControllerContext.HttpContext);
                            ((IObjectContextAdapter)Repository.DataContext).ObjectContext.DeleteObject(result);
                        }
                        result = saveImage();
                        TypeHelpers.SetPropertyValue(entity, propName, result);
                    }
                    Repository.Save();
                    return(new FineUploaderResult(true, new
                    {
                        result.Id,
                        Url = Url.Content(result.Name),
                        result.Alt,
                        result.Title,
                        result.Description,
                        result.Visibility,
                        result.SourceName
                    }));
                }
                catch (Exception exception)
                {
                    return(new FineUploaderResult(false, null, exception.Message));
                }
            }
            return(new FineUploaderResult(false, null, "файл не был передан"));
        }