Esempio n. 1
0
        public ActionResult Checkin(Guid id) //AssetId
        {
            ViewModels.Assets.CheckinAssetViewModel viewModel;
            Common.Models.Assets.Asset   asset;
            Common.Models.Matters.Matter matter;

            using (IDbConnection conn = Data.Database.Instance.GetConnection())
            {
                asset  = Data.Assets.Asset.Get(id, conn, false);
                matter = Data.Assets.Asset.GetRelatedMatter(id, conn, false);

                viewModel       = new ViewModels.Assets.CheckinAssetViewModel();
                viewModel.Asset = Mapper.Map <ViewModels.Assets.AssetViewModel>(asset);

                if (asset.CheckedOutBy != null && asset.CheckedOutBy.PId.HasValue)
                {
                    asset.CheckedOutBy           = Data.Account.Users.Get(asset.CheckedOutBy.PId.Value, conn, false);
                    viewModel.Asset.CheckedOutBy = Mapper.Map <ViewModels.Account.UsersViewModel>(asset.CheckedOutBy);
                }

                viewModel.Tags = new List <ViewModels.Assets.TagViewModel>();

                Data.Assets.Tag.ListForAsset(asset.Id.Value, conn, false).ForEach(tag =>
                {
                    viewModel.Tags.Add(Mapper.Map <ViewModels.Assets.TagViewModel>(tag));
                });
            }

            viewModel.Files = null;

            ViewBag.Matter = matter;

            return(View(viewModel));
        }
Esempio n. 2
0
        public ActionResult Checkin(Guid id, ViewModels.Assets.CheckinAssetViewModel 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 = null;
            List <Common.FileSystem.File> fsFiles   = new List <Common.FileSystem.File>();

            using (Data.Transaction trans = Data.Transaction.Create())
            {
                try
                {
                    currentUser = Data.Account.Users.Get(User.Identity.Name);

                    // current asset
                    asset = Data.Assets.Asset.Get(trans, id);

                    if (asset.CheckedOutBy == null ||
                        asset.CheckedOutBy.PId.Value == currentUser.PId.Value)
                    {
                        // If files submitted -> new version
                        if (viewModel.Files.Count > 0)
                        {
                            // For some reason, the files input is posting with 1 even when there is none
                            // it is always 1 and always null
                            if (viewModel.Files.Count > 1 ||
                                viewModel.Files[0] != null)
                            {
                                fsAsset = new Common.FileSystem.Asset(asset);

                                version                = Mapper.Map <Common.Models.Assets.Version>(viewModel.Version);
                                version.Asset          = asset;
                                version.Id             = Guid.NewGuid();
                                version.SequenceNumber = Data.Assets.Asset.GetNextVersionSequenceNumber(trans, version.Asset.Id.Value);
                                fsVersion              = new Common.FileSystem.Version(fsAsset, version);

                                version = Data.Assets.Version.Create(trans, version, currentUser);

                                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(),
                                        IsSource      = isSource,
                                        Extension     = System.IO.Path.GetExtension(vmFile.FileName)
                                    };
                                    Common.FileSystem.File fsFile = new Common.FileSystem.File(fsAsset, fsVersion, file);

                                    Data.Assets.File.Create(trans, file, currentUser);

                                    fsFiles.Add(fsFile);

                                    vmFile.SaveAs(fsFile.Path);
                                });
                            }
                        }

                        // Update asset if needed
                        if (viewModel.Asset.IsCourtFiled != asset.IsCourtFiled ||
                            viewModel.Asset.IsFinal != asset.IsFinal)
                        {
                            asset.IsFinal      = viewModel.Asset.IsFinal;
                            asset.IsCourtFiled = viewModel.Asset.IsCourtFiled;
                            asset.CheckedOutAt = null;
                            asset.CheckedOutBy = null;
                            asset = Data.Assets.Asset.Edit(trans, asset, currentUser);
                        }
                        else
                        {
                            // No asset update done -> Checkin
                            Data.Assets.Asset.Checkin(trans, id, currentUser);
                        }
                    }
                    else
                    {   // Wrong user trying to checkin
                        return(RedirectToAction("Checkin", new { Id = id }));
                    }

                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();

                    if (fsVersion != null)
                    {
                        System.IO.Directory.Delete(fsVersion.Path, true);
                    }

                    throw ex;
                }
            }

            return(RedirectToAction("Details", new { Id = id }));
        }
        public ActionResult Checkin(Guid id) //AssetId
        {
            ViewModels.Assets.CheckinAssetViewModel viewModel;
            Common.Models.Assets.Asset asset;
            Common.Models.Matters.Matter matter;

            using (IDbConnection conn = Data.Database.Instance.GetConnection())
            {
                asset = Data.Assets.Asset.Get(id, conn, false);
                matter = Data.Assets.Asset.GetRelatedMatter(id, conn, false);

                viewModel = new ViewModels.Assets.CheckinAssetViewModel();
                viewModel.Asset = Mapper.Map<ViewModels.Assets.AssetViewModel>(asset);

                if (asset.CheckedOutBy != null && asset.CheckedOutBy.PId.HasValue)
                {
                    asset.CheckedOutBy = Data.Account.Users.Get(asset.CheckedOutBy.PId.Value, conn, false);
                    viewModel.Asset.CheckedOutBy = Mapper.Map<ViewModels.Account.UsersViewModel>(asset.CheckedOutBy);
                }

                viewModel.Tags = new List<ViewModels.Assets.TagViewModel>();

                Data.Assets.Tag.ListForAsset(asset.Id.Value, conn, false).ForEach(tag =>
                {
                    viewModel.Tags.Add(Mapper.Map<ViewModels.Assets.TagViewModel>(tag));
                });
            }

            viewModel.Files = null;

            ViewBag.Matter = matter;

            return View(viewModel);
        }