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(); }
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()); }
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); }
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, "файл не был передан")); }
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, "файл не был передан")); }