public void ToFaher(long idProject, long idActivity, List <dtoLiteMapActivity> activities) { if (UserContext.isAnonymous) { View.DisplaySessionTimeout(); } else { PmActivity activity = Service.GetActivity(idActivity); if (activity == null) { List <dtoMapActivity> dbActivities = Service.GetActivities(idProject, View.ProjectIdCommunity, CurrentIdModule, View.UnknownUser, activities); View.SendUserAction(View.ProjectIdCommunity, CurrentIdModule, idProject, ModuleProjectManagement.ActionType.ActivityToFatherErrors); if (dbActivities != null) { View.LoadActivities(dbActivities); } else { View.DisplayErrorGetActivitiesFromDB(); } } else { long idParent = (activity.Parent != null) ? ((activity.Parent.Parent == null) ? 0 : activity.Parent.Parent.Id) : 0; MoveActivityTo(idProject, idActivity, idParent, activities, ModuleProjectManagement.ActionType.ActivityToFather); } } }
private ProjectAttachment AttachmentGet(Project project, PmActivity activity, long idItem) { ProjectAttachment attachment = null; try { if (activity != null) { attachment = (from a in Manager.GetIQ <ProjectAttachment>() where a.Item != null && a.Project != null && a.Project.Id == project.Id && a.Activity != null && a.Activity.Id == activity.Id && a.Item != null && a.Item.Id == idItem select a).Skip(0).Take(1).ToList().FirstOrDefault(); } else { attachment = (from a in Manager.GetIQ <ProjectAttachment>() where a.Item != null && a.Project != null && a.Project.Id == project.Id && a.Item.Id == idItem select a).Skip(0).Take(1).ToList().FirstOrDefault(); } } catch (Exception ex) { } return(attachment); }
public List <ProjectAttachment> AttachmentsAddFiles(long idProject, long idActivity, List <dtoModuleUploadedItem> files) { List <ProjectAttachment> attachments = null; Boolean isInTransaction = Manager.IsInTransaction(); try { if (!isInTransaction) { Manager.BeginTransaction(); } PmActivity activity = (idActivity > 0) ? Manager.Get <PmActivity>(idProject) : null; Project project = (idActivity == 0 && idProject > 0) ? Manager.Get <Project>(idProject) : ((activity == null) ? null : activity.Project); attachments = AttachmentsAddFiles(project, activity, files); if (!isInTransaction) { Manager.Commit(); } } catch (Exception ex) { if (!isInTransaction) { Manager.RollBack(); } attachments = null; } return(attachments); }
public List <RepositoryItemLink <long> > AttachmentsGetLinkedFiles(String unknownUser, long idProject, long idActivity, Boolean loadDeleted = false) { PmActivity activity = (idActivity > 0) ? Manager.Get <PmActivity>(idProject) : null; Project project = (idActivity == 0 && idProject > 0) ? Manager.Get <Project>(idProject) : ((activity == null) ? null : activity.Project); return(AttachmentsGetLinkedFiles(unknownUser, project, activity, loadDeleted)); }
public void AddFilesToItem(long idProject, long idActivity) { if (UserContext.isAnonymous) { View.DisplayWorkingSessionExpired(); } else { List <lm.Comol.Core.FileRepository.Domain.dtoModuleUploadedItem> files = null; PmActivity activity = (idActivity > 0) ? CurrentManager.Get <PmActivity>(idActivity) : null; Project project = (idProject > 0) ? CurrentManager.Get <Project>(idProject) : ((activity != null) ? activity.Project : null); if (idActivity > 0) { if (activity == null) { View.DisplayActivityNotFound(); View.SendUserAction(View.IdProjectCommunity, CurrentIdModule, idProject, idActivity, ModuleProjectManagement.ActionType.AttachmentsActivityNotFound); return; } else { files = View.UploadFiles(activity, false); } } else if (idProject > 0 && project != null) { files = View.UploadFiles(project, false); } else { View.DisplayProjectNotFound(); View.SendUserAction(View.IdProjectCommunity, CurrentIdModule, idProject, idActivity, ModuleProjectManagement.ActionType.AttachmentsProjectNotFound); return; } if (files != null && files.Any(f => f.IsAdded)) { List <ProjectAttachment> attachments = Service.AttachmentsAddFiles(project, activity, files.Where(f => f.IsAdded).ToList()); if (attachments == null) { View.DisplayItemsNotAdded(); } else { View.DisplayItemsAdded(); } View.SendUserAction(View.IdProjectCommunity, CurrentIdModule, idProject, idActivity, (attachments == null) ? ModuleProjectManagement.ActionType.AttachmentsNotAddedFiles : ModuleProjectManagement.ActionType.AttachmentsAddedFiles); } else { View.DisplayNoFilesToAdd(); } } }
private long AttachmentsGetMaxDisplayOrder(Project project, PmActivity activity = null) { long dOrder = 1; var query = (from s in Manager.GetIQ <ProjectAttachmentLink>() where s.Deleted == BaseStatusDeleted.None && ((activity == null && s.IsForProject) || (!s.IsForProject && s.Activity == activity)) && s.Project == project select s); foreach (ProjectAttachmentLink a in query.ToList().OrderBy(a => a.DisplayOrder).ThenBy(a => a.CreatedOn)) { a.DisplayOrder = dOrder++; } return(dOrder); }
private List <dtoAttachment> AttachmentsGet(Project project, PmActivity activity, Boolean getDeleted, String unknownUser) { List <dtoAttachment> attachments = project.AttachmentLinks.Where(a => ((getDeleted && a.Deleted == BaseStatusDeleted.Manual) || (!getDeleted && a.Deleted == BaseStatusDeleted.None)) && a.Project == project && a.Activity == activity).OrderBy(a => a.DisplayOrder).ThenBy(a => a.Id).Select(a => new dtoAttachment(a)).ToList(); Dictionary <Int32, String> users = GetUsers(attachments.Select(i => i.IdCreatedBy).Distinct().ToList(), unknownUser); foreach (dtoAttachment item in attachments) { item.CreatedBy = users[item.IdCreatedBy]; } return(attachments); }
private ActivityRole AttachmentGetContainerRole(Project project, PmActivity activity, ProjectResource resource, ModuleProjectManagement mPermission) { ActivityRole role = (resource != null) ? resource.ProjectRole : ((!project.isPersonal && mPermission.Administration) ? ActivityRole.Manager : ActivityRole.None); if (resource != null && activity != null && resource.Visibility == ProjectVisibility.InvolvedTasks && role != ActivityRole.Manager && role != ActivityRole.ProjectOwner) { if (activity.IsSummary) { role = (ResourceHasActivityAssignments(resource, activity) ? role : ActivityRole.None); } else { role = (activity.Assignments.Where(a => a.Deleted == BaseStatusDeleted.None && a.Resource == resource).Any()) ? role: ActivityRole.None; } } return(role); }
private Boolean ResourceHasActivityAssignments(ProjectResource resource, PmActivity father) { Boolean result = false; foreach (PmActivity child in father.Children.Where(c => c.Deleted == BaseStatusDeleted.None)) { if (child.IsSummary) { result = ResourceHasActivityAssignments(resource, child); } else { result = child.Assignments.Where(a => a.Deleted == BaseStatusDeleted.None && a.Resource == resource).Any(); } if (result) { return(result); } } return(result); }
//public List<lm.Comol.Core.DomainModel.Repository.RepositoryAttachmentUploadActions> AttachmentsGetAvailableUploadActions() //{ // List<lm.Comol.Core.DomainModel.Repository.RepositoryAttachmentUploadActions> actions = new List<lm.Comol.Core.DomainModel.Repository.RepositoryAttachmentUploadActions>(); // return actions; //} //public List<lm.Comol.Core.DomainModel.Repository.RepositoryAttachmentUploadActions> GetAttachmentsAvailableActions() //{ // ModuleRepository moduleRepository = View.RepositoryPermission(CommunityId); // CoreItemPermission oPermission = Service.GetItemPermission(oItem, module, moduleRepository); // if (oPermission.AllowAddFiles || oPermission.AllowEdit) // { // if (oItem.CommunityOwner == null) // { // View.AllowCommunityUpload = false; // View.AllowCommunityLink = false; // } // View.AllowCommunityUpload = oPermission.AllowEdit && (moduleRepository.Administration || moduleRepository.UploadFile); // View.AllowCommunityLink = oPermission.AllowEdit && (moduleRepository.Administration || moduleRepository.UploadFile || moduleRepository.ListFiles || moduleRepository.DownLoad); // if (oPermission.AllowEdit && (moduleRepository.Administration || moduleRepository.UploadFile)) // { // View.InitializeCommunityUploader(0, CommunityId, moduleRepository); // } // if (oPermission.AllowEdit) // { // View.InitializeModuleUploader(CommunityId); // } // View.AllowUpload = oPermission.AllowAddFiles; // // this.View.BackToDiary = CommunityID; // View.SetBackToItemsUrl(CommunityId, oItem.Id); // View.SetBackToItemUrl(CommunityId, oItem.Id); // View.SetMultipleUploadUrl(oItem.Id); // LoadItemFiles(oItem, oPermission); // } // else // { // this.View.ReturnToItemsList(CommunityId, oItem.Id); // } //} #region "Add" #endregion #region "Manage" //public List<dtoAttachmentItem> GetProjectAttachments(long idProject) // { // List<dtoAttachmentItem> attachments = null; // Boolean isInTransaction = Manager.IsInTransaction(); // try // { // if (!isInTransaction) // Manager.BeginTransaction(); // Project project = Manager.Get<Project>(idProject); // if (project !=null){ // // } // if (!isInTransaction) // Manager.Commit(); // } // catch (Exception ex) // { // if (!isInTransaction) // Manager.RollBack(); // attachments = null; // } // return attachments; // PmActivityPermission pPermissions = GetProjectPermission(idProject, UserContext.CurrentUserID) // } //public List<dtoAttachmentItem> GetProjectAttachments(long idProject, ModuleProjectManagement mPermission) //{ //} public List <dtoAttachmentItem> GetProjectAttachments(long idProject, long idActivity, Boolean getDeleted, String unknownUser, Boolean onlyAvailable = false) { List <dtoAttachmentItem> attachments = null; Boolean isInTransaction = Manager.IsInTransaction(); try { if (!isInTransaction) { Manager.BeginTransaction(); } litePerson person = Manager.Get <litePerson>(UC.CurrentUserID); PmActivity activity = (idActivity > 0) ? Manager.Get <PmActivity>(idActivity) : null; Project project = (activity != null && activity.Project != null) ? activity.Project : Manager.Get <Project>(idProject); if (project != null && person != null && person.TypeID != (int)UserTypeStandard.Guest && (idActivity <= 0 || (idActivity > 0 && activity != null))) { ModuleProjectManagement mPermission = (project.isPortal) ? ModuleProjectManagement.CreatePortalmodule((person == null) ? (Int32)UserTypeStandard.Guest : person.TypeID) : new ModuleProjectManagement(Manager.GetModulePermission(person.Id, (!project.isPortal && project.Community != null) ? project.Community.Id : 0, GetIdModule())); ProjectResource resource = project.Resources.Where(r => r.Deleted == BaseStatusDeleted.None && r.Type == ResourceType.Internal && r.Person == person).FirstOrDefault(); PmActivityPermission rolePermission = GetRolePermissions(AttachmentGetContainerRole(project, activity, resource, mPermission)); attachments = AttachmentsGet(person, project, activity, getDeleted, rolePermission, mPermission, unknownUser); } if (!isInTransaction) { Manager.Commit(); } } catch (Exception ex) { if (!isInTransaction) { Manager.RollBack(); } attachments = null; } return((onlyAvailable && attachments != null) ? attachments.Where(a => a.Permissions.Download || a.Permissions.Play).ToList() : attachments); }
private List <StandardActionType> GetAllowedStandardActionForFile(int idUser, ModuleObject source, ModuleObject destination) { List <StandardActionType> actions = new List <StandardActionType>(); litePerson person = Manager.Get <litePerson>(idUser); Project project = ((Int32)ModuleProjectManagement.ObjectType.Project == source.ObjectTypeID) ? Manager.Get <Project>(source.ObjectLongID) : null; PmActivity activity = ((Int32)ModuleProjectManagement.ObjectType.Task == source.ObjectTypeID) ? Manager.Get <PmActivity>(source.ObjectLongID) : null; if (project == null && activity != null) { project = activity.Project; } if (project != null) { ProjectAttachment attachment = AttachmentGet(project, activity, destination.ObjectLongID); if (attachment != null && attachment.Link != null && destination.ObjectLongID == attachment.Item.Id && destination.FQN == attachment.Item.GetType().FullName) { dtoAttachmentPermission permissions = AttachmentGetPermissions(person, attachment, project, activity); if (permissions.SetMetadata) { actions.Add(StandardActionType.EditMetadata); } if (permissions.Play) { actions.Add(StandardActionType.Play); } if (permissions.ViewMyStatistics) { actions.Add(StandardActionType.ViewPersonalStatistics); } if (permissions.ViewOtherStatistics) { actions.Add(StandardActionType.ViewAdvancedStatistics); } } } return(actions); }
private dtoAttachmentPermission AttachmentGetPermissions(litePerson person, dtoAttachment attachment, PmActivity activity, PmActivityPermission rolePermissions, ModuleProjectManagement mPermission, ModuleRepository repositoryPermissions) { dtoAttachmentPermission result = new dtoAttachmentPermission(); switch (attachment.Type) { case AttachmentType.file: result.Download = (attachment.File != null && (attachment.File.IsDownloadable || attachment.File.Type == ItemType.Link)) && (HasPermission(rolePermissions, PmActivityPermission.ViewAttachments) || HasPermission(rolePermissions, PmActivityPermission.DownloadAttacchments)); result.Play = (attachment.File != null && (attachment.File.Type == ItemType.Multimedia || attachment.File.Type == ItemType.ScormPackage || attachment.File.Type == ItemType.VideoStreaming)) && (HasPermission(rolePermissions, PmActivityPermission.ViewAttachments) || HasPermission(rolePermissions, PmActivityPermission.DownloadAttacchments)); switch (attachment.File.Type) { case ItemType.ScormPackage: case ItemType.Multimedia: result.ViewMyStatistics = HasPermission(rolePermissions, PmActivityPermission.ViewAttachments); if (attachment.File.IsInternal || (repositoryPermissions.Administration || (repositoryPermissions.EditOthersFiles || (repositoryPermissions.EditMyFiles && attachment.File.IdOwner == person.Id)))) { result.ViewOtherStatistics = HasPermission(rolePermissions, PmActivityPermission.ManageAttachments) || (HasPermission(rolePermissions, PmActivityPermission.ManageActivityAttachments) && attachment.IdCreatedBy == person.Id); result.SetMetadata = result.ViewOtherStatistics; } break; case ItemType.Link: result.Play = result.Download; break; } result.Edit = false; break; case AttachmentType.url: result.Download = HasPermission(rolePermissions, PmActivityPermission.ViewAttachments) || HasPermission(rolePermissions, PmActivityPermission.DownloadAttacchments); result.Play = result.Download; result.Edit = HasPermission(rolePermissions, PmActivityPermission.ManageAttachments) || (HasPermission(rolePermissions, PmActivityPermission.ManageActivityAttachments) && attachment.IdCreatedBy == person.Id); break; } result.Delete = false; result.UnDelete = (attachment.Deleted != BaseStatusDeleted.None) && (HasPermission(rolePermissions, PmActivityPermission.VirtualUnDeleteAttachments) || (HasPermission(rolePermissions, PmActivityPermission.ManageActivityAttachments) && attachment.IdCreatedBy == person.Id)); result.Unlink = (attachment.InSharing && attachment.Deleted == BaseStatusDeleted.None) && (HasPermission(rolePermissions, PmActivityPermission.VirtualDeleteAttachments) || HasPermission(rolePermissions, PmActivityPermission.ManageAttachments) || (HasPermission(rolePermissions, PmActivityPermission.ManageActivityAttachments) && attachment.CreatedBy != null && attachment.IdCreatedBy == person.Id)); result.VirtualDelete = (attachment.Deleted == BaseStatusDeleted.None) && (HasPermission(rolePermissions, PmActivityPermission.VirtualDeleteAttachments) || HasPermission(rolePermissions, PmActivityPermission.ManageAttachments) || (HasPermission(rolePermissions, PmActivityPermission.ManageActivityAttachments) && attachment.IdCreatedBy == person.Id)); return(result); }
private ProjectAttachmentLink GenerateLink(ProjectAttachment attachment, long displayOrder, litePerson person = null, Project project = null, PmActivity activity = null) { ProjectAttachmentLink link = new ProjectAttachmentLink(); if (person != null && project != null) { link.CreateMetaInfo(person.Id, UC.IpAddress, UC.ProxyIpAddress); link.Project = project; link.Activity = activity; link.Attachment = attachment; link.DisplayOrder = displayOrder; link.Type = AttachmentLinkType.Shared; link.IsForProject = (activity == null); } else { link = ProjectAttachmentLink.CreateFromAttachment(attachment, displayOrder++); } return(link); }
public List <RepositoryItemLink <long> > AttachmentsGetLinkedFiles(String unknownUser, Project project, PmActivity activity, Boolean loadDeleted = false) { List <RepositoryItemLink <long> > items = new List <RepositoryItemLink <long> >(); try { List <ProjectAttachment> attachments = project.Attachments.Where(a => (loadDeleted || (!loadDeleted && a.Deleted == BaseStatusDeleted.None)) && a.Type == AttachmentType.file && ((activity == null && a.IsForProject) || (activity != null && !a.IsForProject && a.Activity == activity))).ToList(); attachments.ForEach(a => items.Add(new RepositoryItemLink <long>() { IdCreatedBy = a.IdCreatedBy, CreatedOn = a.CreatedOn, Deleted = a.Deleted, File = new RepositoryItemObject(a.Item), IdObjectLink = a.Id, IdStatus = 0, Link = a.Link, IdModifiedBy = a.IdModifiedBy, ModifiedOn = a.ModifiedOn, IdOwner = a.IdCreatedBy, IsVisible = (a.Deleted == BaseStatusDeleted.None && a.Item != null && a.Item.Deleted == BaseStatusDeleted.None && (a.Version == null || a.Version.Deleted == BaseStatusDeleted.None)) })); if (activity != null) { (from s in Manager.GetIQ <ProjectAttachmentLink>() where (loadDeleted || (!loadDeleted && s.Deleted == BaseStatusDeleted.None)) && s.Activity == activity && s.Attachment != null select s).ToList().Where(s => s.Attachment.Activity != activity).ToList().ForEach(s => items.Add(new RepositoryItemLink <long>() { IdCreatedBy = s.IdCreatedBy, CreatedOn = s.CreatedOn, Deleted = s.Deleted, File = new RepositoryItemObject(s.Attachment.Item), IdObjectLink = s.Id, AlwaysLastVersion = true, IdStatus = 0, Link = s.Attachment.Link, IdModifiedBy = s.IdModifiedBy, ModifiedOn = s.ModifiedOn, IdOwner = s.IdCreatedBy, IsVisible = (s.Deleted == BaseStatusDeleted.None && s.Attachment.Item != null && s.Attachment.Item.Deleted == BaseStatusDeleted.None && (s.Attachment.Version == null || s.Attachment.Version.Deleted == BaseStatusDeleted.None)) })); } } catch (Exception ex) { } Dictionary <Int32, String> users = GetUsers(items.Select(i => i.IdOwner).Distinct().ToList(), items.Select(i => i.IdModifiedBy).Distinct().ToList(), items.Select(i => i.IdCreatedBy).Distinct().ToList(), unknownUser); foreach (RepositoryItemLink <long> item in items) { item.Owner = users[item.IdOwner]; item.ModifiedBy = users[item.IdModifiedBy]; item.CreatedBy = users[item.IdCreatedBy]; } List <RepositoryItemLink <long> > orderedFiles; orderedFiles = (from f in items where f.File == null || f.Link == null orderby f.CreatedOn select f).ToList(); orderedFiles.AddRange((from f in items where f.File != null && f.Link != null orderby f.File.DisplayName select f).ToList()); return(orderedFiles); }
public List <RepositoryItemLinkBase <long> > AttachmentsGetBaseLinkedFiles(Project project, PmActivity activity, Boolean loadDeleted = false) { List <RepositoryItemLinkBase <long> > items = new List <RepositoryItemLinkBase <long> >(); try { List <ProjectAttachment> attachments = project.Attachments.Where(a => (loadDeleted || (!loadDeleted && a.Deleted == BaseStatusDeleted.None)) && a.Type == AttachmentType.file && ((activity == null && a.IsForProject) || (activity != null && !a.IsForProject && a.Activity == activity))).ToList(); attachments.ForEach(a => items.Add(new RepositoryItemLinkBase <long>() { Deleted = a.Deleted, File = new RepositoryItemObject(a.Item), IdObjectLink = a.Id, AlwaysLastVersion = true, IsVisible = (a.Deleted == BaseStatusDeleted.None && a.Item != null && a.Item.Deleted == BaseStatusDeleted.None && (a.Version == null || a.Version.Deleted == BaseStatusDeleted.None)) })); if (activity != null) { (from s in Manager.GetIQ <ProjectAttachmentLink>() where (loadDeleted || (!loadDeleted && s.Deleted == BaseStatusDeleted.None)) && s.Activity == activity && s.Attachment != null select s).ToList().Where(s => s.Attachment.Activity != activity).ToList().ForEach(s => items.Add(new RepositoryItemLinkBase <long>() { Deleted = s.Deleted, File = new RepositoryItemObject(s.Attachment.Item), IdObjectLink = s.Id, AlwaysLastVersion = true, IsVisible = (s.Deleted == BaseStatusDeleted.None && s.Attachment.Item != null && s.Attachment.Item.Deleted == BaseStatusDeleted.None && (s.Attachment.Version == null || s.Attachment.Version.Deleted == BaseStatusDeleted.None)) })); } } catch (Exception ex) { } return(items); }
public List <ProjectAttachment> AttachmentsLinkFiles(long idProject, long idActivity, List <ModuleActionLink> links) { List <ProjectAttachment> attachments = null; Boolean isInTransaction = Manager.IsInTransaction(); try { if (!isInTransaction) { Manager.BeginTransaction(); } PmActivity activity = (idActivity > 0) ? Manager.Get <PmActivity>(idProject) : null; Project project = (idActivity == 0 && idProject > 0) ? Manager.Get <Project>(idProject) : ((activity == null) ? null : activity.Project); Person person = Manager.GetPerson(UC.CurrentUserID); if (links.Any() && project != null && (idActivity == 0 || activity != null) && person != null && person.TypeID != (int)UserTypeStandard.Guest && person.TypeID != (int)UserTypeStandard.PublicUser) { DateTime date = DateTime.Now; long dOrder = AttachmentsGetMaxDisplayOrder(project, activity); attachments = new List <ProjectAttachment>(); foreach (ModuleActionLink link in links) { ProjectAttachment attachment = (from a in project.Attachments.Where(a => (idActivity == 0 && a.IsForProject) || (!a.IsForProject && a.Activity == activity)) select a).ToList().Where(a => a.Item == (liteRepositoryItem)link.ModuleObject.ObjectOwner).Skip(0).Take(1).ToList().FirstOrDefault(); if (attachment == null) { attachment = new ProjectAttachment(); attachment.CreateMetaInfo(person.Id, UC.IpAddress, UC.ProxyIpAddress, date); attachment.Activity = activity; attachment.Description = ""; attachment.IsForProject = (activity == null); attachment.Project = project; attachment.Type = AttachmentType.file; attachment.Item = (liteRepositoryItem)link.ModuleObject.ObjectOwner; attachment.Version = null; Manager.SaveOrUpdate(attachment); ProjectAttachmentLink aLink = GenerateLink(attachment, dOrder++); Manager.SaveOrUpdate(aLink); attachment.SharedItems.Add(aLink); Manager.SaveOrUpdate(attachment); ModuleLink mLink = new ModuleLink(link.Description, link.Permission, link.Action); mLink.CreateMetaInfo(person, UC.IpAddress, UC.ProxyIpAddress, date); mLink.DestinationItem = (ModuleObject)link.ModuleObject; mLink.AutoEvaluable = false; if (attachment.IsForProject) { mLink.SourceItem = ModuleObject.CreateLongObject(project.Id, project, (int)ModuleProjectManagement.ObjectType.Project, (project.Community != null) ? project.Community.Id : 0, ModuleProjectManagement.UniqueCode, GetIdModule()); } else { mLink.SourceItem = ModuleObject.CreateLongObject(activity.Id, activity, (int)ModuleProjectManagement.ObjectType.Task, (project.Community != null) ? project.Community.Id : 0, ModuleProjectManagement.UniqueCode, GetIdModule()); } Manager.SaveOrUpdate(mLink); attachment.Link = Manager.Get <liteModuleLink>(mLink.Id); Manager.SaveOrUpdate(attachment); if (activity == null) { project.Attachments.Add(attachment); } project.AttachmentLinks.Add(aLink); } else if (attachment.Deleted != BaseStatusDeleted.None) { attachment.RecoverMetaInfo(person.Id, UC.IpAddress, UC.ProxyIpAddress, date); foreach (ProjectAttachmentLink l in attachment.SharedItems.Where(s => s.Type == AttachmentLinkType.Owner)) { l.DisplayOrder = dOrder++; l.RecoverMetaInfo(person.Id, attachment.ModifiedIpAddress, attachment.ModifiedProxyIpAddress, attachment.ModifiedOn); } } attachments.Add(attachment); } } if (!isInTransaction) { Manager.Commit(); } } catch (Exception ex) { if (!isInTransaction) { Manager.RollBack(); } attachments = null; } return(attachments); }
public List <ProjectAttachment> AttachmentsAddFiles(Project project, PmActivity activity, List <dtoModuleUploadedItem> items) { List <ProjectAttachment> attachments = null; Boolean isInTransaction = Manager.IsInTransaction(); try { if (!isInTransaction) { Manager.BeginTransaction(); } Person person = Manager.GetPerson(UC.CurrentUserID); if (items.Any() && project != null && person != null && person.TypeID != (int)UserTypeStandard.Guest && person.TypeID != (int)UserTypeStandard.PublicUser) { long dOrder = AttachmentsGetMaxDisplayOrder(project, activity); attachments = new List <ProjectAttachment>(); DateTime date = DateTime.Now; foreach (dtoModuleUploadedItem item in items) { ProjectAttachment attachment = new ProjectAttachment(); attachment.CreateMetaInfo(person.Id, UC.IpAddress, UC.ProxyIpAddress, date); attachment.Activity = activity; attachment.Description = ""; attachment.IsForProject = (activity == null); attachment.Project = project; attachment.Type = AttachmentType.file; attachment.Item = item.ItemAdded; Manager.SaveOrUpdate(attachment); ProjectAttachmentLink aLink = GenerateLink(attachment, dOrder++); Manager.SaveOrUpdate(aLink); attachment.SharedItems.Add(aLink); Manager.SaveOrUpdate(attachment); ModuleLink link = new ModuleLink(item.Link.Description, item.Link.Permission, item.Link.Action); link.CreateMetaInfo(person, UC.IpAddress, UC.ProxyIpAddress, date); link.DestinationItem = (ModuleObject)item.Link.ModuleObject; link.AutoEvaluable = false; if (attachment.IsForProject) { link.SourceItem = ModuleObject.CreateLongObject(project.Id, project, (int)ModuleProjectManagement.ObjectType.Project, (project.Community != null) ? project.Community.Id : 0, ModuleProjectManagement.UniqueCode, GetIdModule()); } else { link.SourceItem = ModuleObject.CreateLongObject(activity.Id, activity, (int)ModuleProjectManagement.ObjectType.Task, (project.Community != null) ? project.Community.Id : 0, ModuleProjectManagement.UniqueCode, GetIdModule()); } Manager.SaveOrUpdate(link); attachment.Link = Manager.Get <liteModuleLink>(link.Id); Manager.SaveOrUpdate(attachment); attachments.Add(attachment); if (activity == null) { project.Attachments.Add(attachment); } project.AttachmentLinks.Add(aLink); } } if (!isInTransaction) { Manager.Commit(); } } catch (Exception ex) { if (!isInTransaction) { Manager.RollBack(); } attachments = null; } return(attachments); }
public List <ProjectAttachment> AttachmentsAddUrl(long idProject, long idActivity, List <dtoUrl> urls) { List <ProjectAttachment> attachments = null; Boolean isInTransaction = Manager.IsInTransaction(); try { if (!isInTransaction) { Manager.BeginTransaction(); } Person person = Manager.GetPerson(UC.CurrentUserID); if (urls != null && urls.Where(u => !String.IsNullOrEmpty(u.Address)).Any() && person != null && person.TypeID != (int)UserTypeStandard.Guest && person.TypeID != (int)UserTypeStandard.PublicUser) { PmActivity activity = (idActivity > 0) ? Manager.Get <PmActivity>(idActivity) : null; Project project = (idActivity == 0 && idProject > 0) ? Manager.Get <Project>(idProject) : ((activity == null) ? null : activity.Project); if (project != null && (idActivity == 0 || activity != null)) { long dOrder = AttachmentsGetMaxDisplayOrder(project, activity); DateTime date = DateTime.Now; attachments = new List <ProjectAttachment>(); foreach (dtoUrl item in urls.Where(u => !String.IsNullOrEmpty(u.Address) && Uri.IsWellFormedUriString(u.Address, UriKind.RelativeOrAbsolute))) { ProjectAttachment attachment = new ProjectAttachment(); attachment.CreateMetaInfo(person.Id, UC.IpAddress, UC.ProxyIpAddress, date); attachment.Activity = activity; attachment.Description = ""; attachment.IsForProject = (activity == null); attachment.Project = project; attachment.Type = AttachmentType.url; attachment.Url = item.Address; attachment.UrlName = item.Name; Manager.SaveOrUpdate(attachment); ProjectAttachmentLink aLink = GenerateLink(attachment, dOrder++); Manager.SaveOrUpdate(aLink); attachment.SharedItems.Add(aLink); attachments.Add(attachment); if (idActivity == 0) { project.Attachments.Add(attachment); } project.AttachmentLinks.Add(aLink); } } } if (!isInTransaction) { Manager.Commit(); } } catch (Exception ex) { if (!isInTransaction) { Manager.RollBack(); } attachments = null; } return(attachments); }
private dtoAttachmentPermission AttachmentGetPermissions(litePerson person, ProjectAttachment attachment, Project project, PmActivity activity) { dtoAttachmentPermission result = new dtoAttachmentPermission(); if (attachment != null && project != null) { lm.Comol.Core.FileRepository.Domain.ModuleRepository repositoryPermissions = GetRepositoryPermissions((project.isPortal) ? 0 : (project.Community == null) ? -1 : project.Community.Id, person.Id); ModuleProjectManagement mPermission = (project.isPortal) ? ModuleProjectManagement.CreatePortalmodule((person == null) ? (Int32)UserTypeStandard.Guest : person.TypeID) : new ModuleProjectManagement(Manager.GetModulePermission(person.Id, (!project.isPortal && project.Community != null) ? project.Community.Id : 0, GetIdModule())); ProjectResource resource = project.Resources.Where(r => r.Deleted == BaseStatusDeleted.None && r.Type == ResourceType.Internal && r.Person == person).FirstOrDefault(); PmActivityPermission rolePermissions = GetRolePermissions(AttachmentGetContainerRole(project, activity, resource, mPermission)); switch (attachment.Type) { case AttachmentType.file: result.Download = (attachment.Item != null && attachment.Item.IsDownloadable || attachment.Item.Type == ItemType.Link) && (HasPermission(rolePermissions, PmActivityPermission.ViewAttachments) || HasPermission(rolePermissions, PmActivityPermission.DownloadAttacchments)); result.Play = (attachment.Item != null && (attachment.Item.Type == ItemType.Multimedia || attachment.Item.Type == ItemType.ScormPackage || attachment.Item.Type == ItemType.VideoStreaming)) && (HasPermission(rolePermissions, PmActivityPermission.ViewAttachments) || HasPermission(rolePermissions, PmActivityPermission.DownloadAttacchments)); switch (attachment.Item.Type) { case ItemType.ScormPackage: case ItemType.Multimedia: result.ViewMyStatistics = HasPermission(rolePermissions, PmActivityPermission.ViewAttachments); if (attachment.Item.IsInternal || (repositoryPermissions.Administration || (repositoryPermissions.EditOthersFiles || (repositoryPermissions.EditMyFiles && attachment.Item.IdOwner == person.Id)))) { result.ViewOtherStatistics = HasPermission(rolePermissions, PmActivityPermission.ManageAttachments) || (HasPermission(rolePermissions, PmActivityPermission.ManageActivityAttachments) && attachment.IdCreatedBy == person.Id); result.SetMetadata = result.ViewOtherStatistics; } break; case ItemType.Link: result.Play = result.Download; break; } result.Edit = false; break; case AttachmentType.url: result.Download = HasPermission(rolePermissions, PmActivityPermission.ViewAttachments) || HasPermission(rolePermissions, PmActivityPermission.DownloadAttacchments); result.Play = result.Download; result.Edit = HasPermission(rolePermissions, PmActivityPermission.ManageAttachments) || (HasPermission(rolePermissions, PmActivityPermission.ManageActivityAttachments) && attachment.IdCreatedBy == person.Id); break; } result.Delete = false; result.UnDelete = (attachment.Deleted != BaseStatusDeleted.None) && (HasPermission(rolePermissions, PmActivityPermission.VirtualUnDeleteAttachments) || (HasPermission(rolePermissions, PmActivityPermission.ManageActivityAttachments) && attachment.IdCreatedBy == person.Id)); result.Unlink = (attachment.SharedItems.Any() && activity != null && attachment.SharedItems.Where(s => s.Deleted == BaseStatusDeleted.None && s.Activity != null && s.Activity.Id == activity.Id && s.Type == AttachmentLinkType.Shared).Any() && attachment.Deleted == BaseStatusDeleted.None) && (HasPermission(rolePermissions, PmActivityPermission.VirtualDeleteAttachments) || HasPermission(rolePermissions, PmActivityPermission.ManageAttachments) || (HasPermission(rolePermissions, PmActivityPermission.ManageActivityAttachments) && attachment.IdCreatedBy == person.Id)); result.VirtualDelete = (attachment.Deleted == BaseStatusDeleted.None) && (HasPermission(rolePermissions, PmActivityPermission.VirtualDeleteAttachments) || HasPermission(rolePermissions, PmActivityPermission.ManageAttachments) || (HasPermission(rolePermissions, PmActivityPermission.ManageActivityAttachments) && attachment.IdCreatedBy == person.Id)); } return(result); }
private List <dtoAttachmentItem> AttachmentsGet(litePerson person, Project project, PmActivity activity, Boolean getDeleted, PmActivityPermission rolePermission, ModuleProjectManagement mPermission, String unknownUser) { List <dtoAttachmentItem> items = null; Boolean isInTransaction = Manager.IsInTransaction(); try { if (!isInTransaction) { Manager.BeginTransaction(); } if (activity != null || project != null) { items = new List <dtoAttachmentItem>(); List <dtoAttachment> attachments = AttachmentsGet(project, activity, getDeleted, unknownUser); ModuleRepository repositoryPermissions = GetRepositoryPermissions((project.isPortal) ? 0 : (project.Community == null) ? -1 : project.Community.Id); items = attachments.Where(a => a.IdAttachment > 0).OrderBy(a => a.DisplayOrder).ThenBy(a => a.DisplayName).Select(a => new dtoAttachmentItem() { Attachment = a, Permissions = AttachmentGetPermissions(person, a, activity, rolePermission, mPermission, repositoryPermissions) }).ToList(); } if (!isInTransaction) { Manager.Commit(); } } catch (Exception ex) { if (!isInTransaction) { Manager.RollBack(); } items = null; } return(items); }