public ActionResult Edit(Guid id, ViewModels.Assets.AssetViewModel viewModel) { Common.Models.Account.Users currentUser; // FS layout // Asset/Version/File Common.Models.Assets.Asset asset; asset = Mapper.Map <Common.Models.Assets.Asset>(viewModel); using (Data.Transaction trans = Data.Transaction.Create()) { try { currentUser = Data.Account.Users.Get(User.Identity.Name); Common.Models.Matters.Matter matter = Data.Matters.Matter.Get(trans, id); Data.Assets.Asset.Edit(trans, asset, currentUser); viewModel.Tags = new List <ViewModels.Assets.TagViewModel>(); Request.Params["Tags"].Split(',').ToList().ForEach(x => { viewModel.Tags.Add(new ViewModels.Assets.TagViewModel() { Name = x.Trim() }); }); // Disassociate all asset_asset_tags for this asset Data.Assets.AssetTag.DeleteAllForAsset(trans, asset.Id.Value); foreach (ViewModels.Assets.TagViewModel tag in viewModel.Tags) { if (tag != null) { Common.Models.Assets.Tag mTag = Mapper.Map <Common.Models.Assets.Tag>(tag); Data.Assets.Tag.Create(trans, mTag, currentUser); Data.Assets.AssetTag.Create(trans, new Common.Models.Assets.AssetTag() { Asset = asset, Tag = mTag }, currentUser); } } trans.Commit(); } catch (Exception ex) { trans.Rollback(); } } return(RedirectToAction("Details", new { Id = asset.Id })); }
public ActionResult Create(Guid id, ViewModels.Assets.CreateAssetViewModel viewModel) { Common.Models.Account.Users currentUser; // FS layout // Asset/Version/File Common.Models.Assets.Asset asset; Common.Models.Assets.Version version; List <Common.Models.Assets.File> files = new List <Common.Models.Assets.File>(); Common.FileSystem.Asset fsAsset; Common.FileSystem.Version fsVersion; List <Common.FileSystem.File> fsFiles = new List <Common.FileSystem.File>(); asset = Mapper.Map <Common.Models.Assets.Asset>(viewModel.Asset); if (!asset.Id.HasValue) { asset.Id = Guid.NewGuid(); } fsAsset = new Common.FileSystem.Asset(asset); if (!System.IO.Directory.Exists(fsAsset.Path)) { System.IO.Directory.CreateDirectory(fsAsset.Path); } version = new Common.Models.Assets.Version() { Asset = asset, Id = Guid.NewGuid(), SequenceNumber = 1, ChangeDetails = "Initial version." }; fsVersion = new Common.FileSystem.Version(fsAsset, version); if (!System.IO.Directory.Exists(fsVersion.Path)) { System.IO.Directory.CreateDirectory(fsVersion.Path); } viewModel.Files.ForEach(vmFile => { bool isSource = false; if (viewModel.SourceFiles != null && viewModel.SourceFiles.Select(x => x == vmFile.FileName).Count() > 0) { isSource = true; } Common.Models.Assets.File file = new Common.Models.Assets.File() { Version = version, Id = Guid.NewGuid(), ContentLength = vmFile.ContentLength, ContentType = vmFile.ContentType.ToContentType(), //ContentType = (Common.Models.Assets.ContentType)Enum.Parse(typeof(Common.Models.Assets.ContentType), vmFile.ContentType.Substring(vmFile.ContentType.LastIndexOf('/') + 1), true), IsSource = isSource, Extension = System.IO.Path.GetExtension(vmFile.FileName) }; Common.FileSystem.File fsFile = new Common.FileSystem.File(fsAsset, fsVersion, file); files.Add(file); fsFiles.Add(fsFile); vmFile.SaveAs(fsFile.Path); }); using (Data.Transaction trans = Data.Transaction.Create()) { try { currentUser = Data.Account.Users.Get(User.Identity.Name); Common.Models.Matters.Matter matter = Data.Matters.Matter.Get(trans, id); asset = Data.Assets.Asset.Create(trans, asset, currentUser); Data.Assets.AssetMatter.Create(trans, new Common.Models.Assets.AssetMatter() { Asset = asset, Matter = matter }, currentUser); version = Data.Assets.Version.Create(trans, version, currentUser); files.ForEach(file => { Data.Assets.File.Create(trans, file, currentUser); }); while (string.Join("", viewModel.Tags).Contains(",")) { List <string> bldr = new List <string>(); foreach (string str in viewModel.Tags) { bldr.AddRange(str.Split(',')); } bldr.ForEach(x => x = x.Trim()); viewModel.Tags = bldr.ToArray(); } foreach (string tag in viewModel.Tags) { if (!string.IsNullOrEmpty(tag)) { Common.Models.Assets.Tag mTag = new Common.Models.Assets.Tag() { Name = tag }; Data.Assets.Tag.Create(trans, mTag, currentUser); Data.Assets.AssetTag.Create(trans, new Common.Models.Assets.AssetTag() { Asset = asset, Tag = mTag }, currentUser); } } trans.Commit(); } catch (Exception ex) { trans.Rollback(); System.IO.Directory.Delete(fsAsset.Path, true); } } return(RedirectToAction("Details", new { Id = asset.Id })); }
public ActionResult Create(Guid id, ViewModels.Assets.CreateAssetViewModel viewModel) { Common.Models.Account.Users currentUser; // FS layout // Asset/Version/File Common.Models.Assets.Asset asset; Common.Models.Assets.Version version; List<Common.Models.Assets.File> files = new List<Common.Models.Assets.File>(); Common.FileSystem.Asset fsAsset; Common.FileSystem.Version fsVersion; List<Common.FileSystem.File> fsFiles = new List<Common.FileSystem.File>(); asset = Mapper.Map<Common.Models.Assets.Asset>(viewModel.Asset); if (!asset.Id.HasValue) asset.Id = Guid.NewGuid(); fsAsset = new Common.FileSystem.Asset(asset); if(!System.IO.Directory.Exists(fsAsset.Path)) System.IO.Directory.CreateDirectory(fsAsset.Path); version = new Common.Models.Assets.Version() { Asset = asset, Id = Guid.NewGuid(), SequenceNumber = 1, ChangeDetails = "Initial version." }; fsVersion = new Common.FileSystem.Version(fsAsset, version); if (!System.IO.Directory.Exists(fsVersion.Path)) System.IO.Directory.CreateDirectory(fsVersion.Path); viewModel.Files.ForEach(vmFile => { bool isSource = false; if (viewModel.SourceFiles != null && viewModel.SourceFiles.Select(x => x == vmFile.FileName).Count() > 0) isSource = true; Common.Models.Assets.File file = new Common.Models.Assets.File() { Version = version, Id = Guid.NewGuid(), ContentLength = vmFile.ContentLength, ContentType = vmFile.ContentType.ToContentType(), //ContentType = (Common.Models.Assets.ContentType)Enum.Parse(typeof(Common.Models.Assets.ContentType), vmFile.ContentType.Substring(vmFile.ContentType.LastIndexOf('/') + 1), true), IsSource = isSource, Extension = System.IO.Path.GetExtension(vmFile.FileName) }; Common.FileSystem.File fsFile = new Common.FileSystem.File(fsAsset, fsVersion, file); files.Add(file); fsFiles.Add(fsFile); vmFile.SaveAs(fsFile.Path); }); using (Data.Transaction trans = Data.Transaction.Create()) { try { currentUser = Data.Account.Users.Get(User.Identity.Name); Common.Models.Matters.Matter matter = Data.Matters.Matter.Get(trans, id); asset = Data.Assets.Asset.Create(trans, asset, currentUser); Data.Assets.AssetMatter.Create(trans, new Common.Models.Assets.AssetMatter() { Asset = asset, Matter = matter }, currentUser); version = Data.Assets.Version.Create(trans, version, currentUser); files.ForEach(file => { Data.Assets.File.Create(trans, file, currentUser); }); while (string.Join("", viewModel.Tags).Contains(",")) { List<string> bldr = new List<string>(); foreach (string str in viewModel.Tags) { bldr.AddRange(str.Split(',')); } bldr.ForEach(x => x = x.Trim()); viewModel.Tags = bldr.ToArray(); } foreach (string tag in viewModel.Tags) { if (!string.IsNullOrEmpty(tag)) { Common.Models.Assets.Tag mTag = new Common.Models.Assets.Tag() { Name = tag }; Data.Assets.Tag.Create(trans, mTag, currentUser); Data.Assets.AssetTag.Create(trans, new Common.Models.Assets.AssetTag() { Asset = asset, Tag = mTag }, currentUser); } } trans.Commit(); } catch (Exception ex) { trans.Rollback(); System.IO.Directory.Delete(fsAsset.Path, true); } } return RedirectToAction("Details", new { Id = asset.Id }); }