private PartialViewResult ViewDeleteDocument(DocumentLibraryDocument documentLibraryDocument, ConfirmDialogFormViewModel viewModel)
        {
            var confirmMessage = $"Are you sure you wish to delete Document '{documentLibraryDocument.DocumentTitle}'?";

            var viewData = new ConfirmDialogFormViewData(confirmMessage);

            return(RazorPartialView <ConfirmDialogForm, ConfirmDialogFormViewData, ConfirmDialogFormViewModel>(viewData, viewModel));
        }
        private PartialViewResult ViewEditDocument(DocumentLibraryDocument documentLibraryDocument, EditDocumentViewModel viewModel)
        {
            var documentCategories = documentLibraryDocument.DocumentLibrary.DocumentLibraryDocumentCategories.Select(x => x.DocumentCategory)
                                     .ToSelectListWithEmptyFirstRow(x => x.DocumentCategoryID.ToString(CultureInfo.InvariantCulture), x => x.DocumentCategoryDisplayName);
            var viewData = new EditDocumentViewData(documentCategories);

            return(RazorPartialView <EditDocument, EditDocumentViewData, EditDocumentViewModel>(viewData, viewModel));
        }
        public static HtmlString GetViewableRoles(this DocumentLibraryDocument documentLibraryDocument)
        {
            var documentLibraryDocumentRoles = HttpRequestStorage.DatabaseEntities.DocumentLibraryDocumentRoles.Where(x => x.DocumentLibraryDocumentID == documentLibraryDocument.DocumentLibraryDocumentID).ToList();

            return(new HtmlString(documentLibraryDocumentRoles.Any()
                ? string.Join(", ", documentLibraryDocumentRoles.OrderBy(x => x.Role?.SortOrder).Select(x => x.Role == null ? "Anonymous (Public)" : x.Role.GetRoleDisplayName()).ToList())
                : ViewUtilities.NoAnswerProvided));
        }
        public EditDocumentViewModel(DocumentLibraryDocument documentLibraryDocument)
        {
            DocumentLibraryID  = documentLibraryDocument.DocumentLibraryID;
            DocumentTitle      = documentLibraryDocument.DocumentTitle;
            Description        = documentLibraryDocument.DocumentDescription;
            DocumentCategoryID = documentLibraryDocument.DocumentCategoryID;

            ViewableByAnonymous      = documentLibraryDocument.DocumentLibraryDocumentRoles.Any(x => x.RoleID == null);
            ViewableByUnassigned     = documentLibraryDocument.DocumentLibraryDocumentRoles.Any(x => x.RoleID == ProjectFirmaModels.Models.Role.Unassigned.RoleID);
            ViewableByNormal         = documentLibraryDocument.DocumentLibraryDocumentRoles.Any(x => x.RoleID == ProjectFirmaModels.Models.Role.Normal.RoleID);
            ViewableByProjectSteward = documentLibraryDocument.DocumentLibraryDocumentRoles.Any(x => x.RoleID == ProjectFirmaModels.Models.Role.ProjectSteward.RoleID);
        }
        public ActionResult NewDocument(DocumentLibraryPrimaryKey documentLibraryPrimaryKey, NewDocumentViewModel viewModel)
        {
            var documentLibrary = documentLibraryPrimaryKey.EntityObject;

            if (!ModelState.IsValid)
            {
                return(ViewNewDocument(documentLibrary, viewModel));
            }
            var document = new DocumentLibraryDocument(default(int), default(int), null, default(int), DateTime.Now, CurrentPerson.PersonID);

            HttpRequestStorage.DatabaseEntities.DocumentLibraryDocumentRoles.Load();
            var documentLibraryDocumentRoles = HttpRequestStorage.DatabaseEntities.AllDocumentLibraryDocumentRoles.Local;

            viewModel.UpdateModel(document, CurrentFirmaSession, documentLibraryDocumentRoles);
            HttpRequestStorage.DatabaseEntities.AllDocumentLibraryDocuments.Add(document);
            HttpRequestStorage.DatabaseEntities.SaveChanges();
            SetMessageForDisplay($"Document '{document.DocumentTitle}' successfully uploaded.");
            return(new ModalDialogFormJsonResult());
        }
        public virtual void UpdateModel(DocumentLibraryDocument documentLibraryDocument, FirmaSession currentFirmaSession, ICollection <DocumentLibraryDocumentRole> allDocumentLibraryDocumentRoles)
        {
            documentLibraryDocument.DocumentTitle       = DocumentTitle;
            documentLibraryDocument.DocumentDescription = Description;
            documentLibraryDocument.DocumentCategoryID  = DocumentCategoryID;
            documentLibraryDocument.LastUpdateDate      = DateTime.Now;
            documentLibraryDocument.LastUpdatePerson    = currentFirmaSession.Person;

            var newDocumentLibraryDocumentRoles = new List <DocumentLibraryDocumentRole>();

            if (ViewableByAnonymous)
            {
                newDocumentLibraryDocumentRoles.Add(new DocumentLibraryDocumentRole(documentLibraryDocument.DocumentLibraryDocumentID));
            }
            if (ViewableByUnassigned)
            {
                newDocumentLibraryDocumentRoles.Add(new DocumentLibraryDocumentRole(documentLibraryDocument.DocumentLibraryDocumentID)
                {
                    RoleID = ProjectFirmaModels.Models.Role.Unassigned.RoleID
                });
            }
            if (ViewableByNormal)
            {
                newDocumentLibraryDocumentRoles.Add(new DocumentLibraryDocumentRole(documentLibraryDocument.DocumentLibraryDocumentID)
                {
                    RoleID = ProjectFirmaModels.Models.Role.Normal.RoleID
                });
            }
            if (ViewableByProjectSteward)
            {
                newDocumentLibraryDocumentRoles.Add(new DocumentLibraryDocumentRole(documentLibraryDocument.DocumentLibraryDocumentID)
                {
                    RoleID = ProjectFirmaModels.Models.Role.ProjectSteward.RoleID
                });
            }

            documentLibraryDocument.DocumentLibraryDocumentRoles.Merge(newDocumentLibraryDocumentRoles,
                                                                       allDocumentLibraryDocumentRoles,
                                                                       (x, y) => x.DocumentLibraryDocumentID == y.DocumentLibraryDocumentID && x.RoleID == y.RoleID,
                                                                       HttpRequestStorage.DatabaseEntities);
        }
 public override void UpdateModel(DocumentLibraryDocument documentLibraryDocument, FirmaSession currentFirmaSession, ICollection <DocumentLibraryDocumentRole> allDocumentLibraryDocumentRoles)
 {
     documentLibraryDocument.FileResourceInfo  = FileResourceModelExtensions.CreateNewFromHttpPostedFileAndSave(FileResourceData, currentFirmaSession);
     documentLibraryDocument.DocumentLibraryID = DocumentLibraryID;
     base.UpdateModel(documentLibraryDocument, currentFirmaSession, allDocumentLibraryDocumentRoles);
 }
        public static bool HasViewPermission(this DocumentLibraryDocument documentLibraryDocument, FirmaSession currentFirmaSession)
        {
            var viewTypeRoles = documentLibraryDocument.DocumentLibraryDocumentRoles;

            return((currentFirmaSession.Person != null && viewTypeRoles.Select(x => x.Role).Contains(currentFirmaSession.Role)) || new FirmaAdminFeature().HasPermissionByFirmaSession(currentFirmaSession) || (currentFirmaSession.Person == null && viewTypeRoles.Any(x => x.Role == null)));
        }
 public static string GetDeleteUrl(this DocumentLibraryDocument documentLibraryDocument)
 {
     return(DeleteUrlTemplate.ParameterReplace(documentLibraryDocument.DocumentLibraryDocumentID));
 }