示例#1
0
 public MessageEngine(IDaoFactory daoFactory, EngineFactory engineFactory)
     : base(NotifyConstants.Event_NewCommentForMessage, engineFactory)
 {
     this.engineFactory = engineFactory;
     messageDao = daoFactory.GetMessageDao();
     commentDao = daoFactory.GetCommentDao();
 }
 public ProjectEntityEngine(INotifyAction notifyAction, EngineFactory factory)
 {
     SubscriptionProvider = NotifySource.Instance.GetSubscriptionProvider();
     RecipientProvider = NotifySource.Instance.GetRecipientsProvider();
     NotifyAction = notifyAction;
     FileEngine = factory != null ? factory.GetFileEngine() : null;
     Factory = factory;
 }
示例#3
0
 public TaskEngine(IDaoFactory daoFactory, EngineFactory factory)
 {
     _factory = factory;
     _taskDao = daoFactory.GetTaskDao();
     _milestoneDao = daoFactory.GetMilestoneDao();
     _fileEngine = factory.GetFileEngine();
     _subtaskDao = daoFactory.GetSubtaskDao();
 }
示例#4
0
 public TaskEngine(IDaoFactory daoFactory, EngineFactory factory)
     : base(NotifyConstants.Event_NewCommentForTask, factory)
 {
     this.factory = factory;
     taskDao = daoFactory.GetTaskDao();
     milestoneDao = daoFactory.GetMilestoneDao();
     subtaskDao = daoFactory.GetSubtaskDao();
 }
示例#5
0
        internal static List<BaseCalendar> GetUserCalendars(Guid userId)
        {
            if (!DbRegistry.IsDatabaseRegistered(DbId))
                DbRegistry.RegisterDatabase(DbId, WebConfigurationManager.ConnectionStrings[DbId]);

            var tenantId = CoreContext.TenantManager.GetCurrentTenant().TenantId;
            var engineFactory = new EngineFactory(DbId, tenantId);

            var cals = new List<BaseCalendar>();
            var engine = engineFactory.GetProjectEngine();
            var projects = engine.GetByParticipant(userId);

            if (projects != null)
            {
                var team = engine.GetTeam(projects.Select(r => r.ID).ToList());

                foreach (var p in projects)
                {
                    var sharingOptions = new SharingOptions();
                    foreach (var participant in team.Where(r => r.ProjectID == p.ID))
                        sharingOptions.PublicItems.Add(new SharingOptions.PublicItem { Id = participant.ID, IsGroup = false });

                    var index = p.ID % CalendarColors.BaseColors.Count;
                    cals.Add(new ProjectCalendar(engineFactory, userId, p, CalendarColors.BaseColors[index].BackgroudColor, CalendarColors.BaseColors[index].TextColor, sharingOptions, false));
                }
            }

            var folowingProjects = engine.GetFollowing(userId);
            if (folowingProjects != null)
            {
                var team = engine.GetTeam(folowingProjects.Select(r => r.ID).ToList());

                foreach (var p in folowingProjects)
                {
                    if (projects != null && projects.Exists(proj => proj.ID == p.ID))
                        continue;

                    var sharingOptions = new SharingOptions();
                    sharingOptions.PublicItems.Add(new SharingOptions.PublicItem { Id = userId, IsGroup = false });

                    foreach (var participant in team.Where(r => r.ProjectID == p.ID))
                        sharingOptions.PublicItems.Add(new SharingOptions.PublicItem { Id = participant.ID, IsGroup = false });

                    var index = p.ID % CalendarColors.BaseColors.Count;
                    cals.Add(new ProjectCalendar(engineFactory, userId, p, CalendarColors.BaseColors[index].BackgroudColor, CalendarColors.BaseColors[index].TextColor, sharingOptions, true));
                }
            }

            return cals;
        }
        public ProjectCalendar(EngineFactory engine, Guid userId, Project project, string backgroundColor, string textColor, SharingOptions sharingOptions, bool following)
        {
            _project = project;
            _engine = engine;
            _userId = userId;
            _following = following;

            Context.HtmlBackgroundColor = backgroundColor;
            Context.HtmlTextColor = textColor;
            Context.CanChangeAlertType = false;
            Context.CanChangeTimeZone = false;
            Context.GetGroupMethod = () => Web.Projects.Resources.ProjectsCommonResource.ProductName;
            Id = _project.UniqID;
            EventAlertType = EventAlertType.Hour;
            Name = _project.Title;
            Description = _project.Description;
            SharingOptions = sharingOptions;
        }
        private static bool CheckPermission(Project project, UserActivity ua, EngineFactory engineFactory)
        {
            var additionalDataParts = ua.AdditionalData.Split('|');
            if (additionalDataParts.Length == 0) return false;

            var entityType = (EntityType)Enum.Parse(typeof(EntityType), additionalDataParts[0], true);

            if (entityType == EntityType.Message)
            {
                return ProjectSecurity.CanReadMessages(project);
            }
            if (entityType == EntityType.Task || entityType == EntityType.TimeSpend)
            {
                if (ProjectSecurity.CanReadTasks(project))
                {
                    return true;
                }
                if (entityType == EntityType.Task)
                {

                    var match = GetIdParam.Match(ua.URL);
                    int taskId;
                    if (match.Success && match.Groups["value"].Success && int.TryParse(match.Groups["value"].Value, out taskId))
                    {
                        var task = engineFactory.GetTaskEngine().GetByID(taskId);
                        if (ProjectSecurity.CanRead(task))
                            return true;
                    }
                    return false;
                }
                return SecurityContext.CurrentAccount.ID == ua.UserID;
            }
            if (entityType == EntityType.Milestone)
            {
                var match = GetIdParam.Match(ua.URL);
                int milestoneId;
                if (match.Success && match.Groups["value"].Success && int.TryParse(match.Groups["value"].Value, out milestoneId))
                {
                    var milestone = engineFactory.GetMilestoneEngine().GetByID(milestoneId);
                    return ProjectSecurity.CanRead(milestone);
                }
                return false;
            }
            return true;
        }
示例#8
0
 public CommentEngine(bool disableNotifications, EngineFactory factory)
 {
     DisableNotifications = disableNotifications;
     TaskEngine           = factory.TaskEngine;
     MessageEngine        = factory.MessageEngine;
 }
示例#9
0
 public CommentEngine(IDaoFactory daoFactory, EngineFactory factory)
 {
     commentDao   = daoFactory.GetCommentDao();
     this.factory = factory;
 }
示例#10
0
        private static bool CheckAccess(UserActivity activity, EngineFactory engineFactory)
        {
            if (!string.IsNullOrEmpty(activity.SecurityId))
            {
                var data = activity.SecurityId.Split('|');
                if (data.Length == 3)
                {
                    try
                    {
                        var entityType = (EntityType)Enum.Parse(typeof(EntityType), data[0], true);
                        var entityId   = string.IsNullOrEmpty(data[1]) ? -1 : int.Parse(data[1]);
                        var projectId  = 0;
                        if (!int.TryParse(data[2], out projectId))
                        {
                            return(false);
                        }
                        var project = engineFactory.GetProjectEngine().GetByID(projectId);
                        if (project.Private)
                        {
                            //Switch types
                            switch (entityType)
                            {
                            case EntityType.Team:
                            case EntityType.Project:
                                return(ProjectSecurity.CanRead(project));

                            case EntityType.Milestone:
                                return(ProjectSecurity.CanRead(engineFactory.GetMilestoneEngine().GetByID(entityId)));

                            case EntityType.Task:
                                return(ProjectSecurity.CanRead(engineFactory.GetTaskEngine().GetByID(entityId)));

                            case EntityType.Message:
                                return(ProjectSecurity.CanReadMessages(project));

                            case EntityType.File:
                                return(ProjectSecurity.CanReadFiles(project));

                            case EntityType.TimeSpend:
                            {
                                if (entityId < 0)
                                {
                                    return(ProjectSecurity.CanRead(project));
                                }
                                return(ProjectSecurity.CanRead(engineFactory.GetTaskEngine().GetByID(entityId)));
                            }
                            }
                        }
                    }
                    catch (Exception)
                    {
                        return(false);
                    }
                }
            }
            else if (!string.IsNullOrEmpty(activity.ContainerID))
            {
                //Go long way. Parse old data
                int prjId;
                if (int.TryParse(activity.ContainerID, out prjId))
                {
                    var prj = engineFactory.GetProjectEngine().GetByID(prjId);
                    if (prj != null)
                    {
                        if (prj.Private)
                        {
                            try
                            {
                                return(!string.IsNullOrEmpty(activity.AdditionalData) &&
                                       CheckPermission(prj, activity, engineFactory));
                            }
                            catch
                            {
                                return(false);
                            }
                        }
                    }
                }
            }
            return(true);
        }
示例#11
0
        public ImportFromBasecamp(string url, string token, HttpContext context, Guid initiatorId, bool withClosed,bool disableNotifications, EngineFactory engineFactory)
        {
            NewUsersID = new List<UserIDWrapper>();
            NewProjectsID = new List<ProjectIDWrapper>();
            NewMilestonesID = new List<MilestoneIDWrapper>();
            NewMessagesID = new List<MessageIDWrapper>();
            NewTasksID = new List<TaskIDWrapper>();
            NewFileCategoriesID = new List<FileCategoryIDWrapper>();
            NewFilesID = new List<FileIDWrapper>();
            Attachments = new List<IAttachment>();


            _url = PrepUrl(url).ToString().TrimEnd('/');
            _token = token;
            Context = context;
            _initiatorId = initiatorId;
            _withClosed = withClosed;
            _disableNotifications = disableNotifications;
            _engineFactory = engineFactory;
            _engineFactory.DisableNotifications = disableNotifications;
            Status = new ImportStatus(_url, _token);
            Id = CoreContext.TenantManager.GetCurrentTenant().TenantId;
            _log = LogManager.GetLogger("ASC.Project.BasecampImport");
            _principal = Thread.CurrentPrincipal;
        }
示例#12
0
 public SearchEngine(EngineFactory factory)
 {
     searchItems   = new List <SearchItem>();
     CommentEngine = factory.CommentEngine;
     TaskEngine    = factory.TaskEngine;
 }
示例#13
0
 public MilestoneEngine(IDaoFactory daoFactory, EngineFactory engineFactory)
 {
     _engineFactory = engineFactory;
     _milestoneDao = daoFactory.GetMilestoneDao();
 }
 public CachedProjectEngine(IDaoFactory daoFactory, EngineFactory factory)
     : base(daoFactory, factory)
 {
 }
示例#15
0
 public ProjectEngine(IDaoFactory daoFactory, EngineFactory factory)
 {
     this.factory   = factory;
     projectDao     = daoFactory.GetProjectDao();
     participantDao = daoFactory.GetParticipantDao();
 }
示例#16
0
 public ProjectEngine(IDaoFactory daoFactory, EngineFactory factory)
 {
     this.factory = factory;
     projectDao = daoFactory.GetProjectDao();
     participantDao = daoFactory.GetParticipantDao();
 }
示例#17
0
 private static bool CheckAccess(UserActivity activity, EngineFactory engineFactory)
 {
     if (!string.IsNullOrEmpty(activity.SecurityId))
     {
         var data = activity.SecurityId.Split('|');
         if (data.Length == 3)
         {
             try
             {
                 var entityType = (EntityType)Enum.Parse(typeof(EntityType), data[0], true);
                 var entityId = string.IsNullOrEmpty(data[1]) ? -1 : int.Parse(data[1]);
                 var projectId = 0;
                 if (!int.TryParse(data[2], out projectId))
                 {
                     return false;
                 }
                 var project = engineFactory.GetProjectEngine().GetByID(projectId);
                 if (project.Private)
                 {
                     //Switch types
                     switch (entityType)
                     {
                         case EntityType.Team:
                         case EntityType.Project:
                             return ProjectSecurity.CanRead(project);
                         case EntityType.Milestone:
                             return ProjectSecurity.CanRead(engineFactory.GetMilestoneEngine().GetByID(entityId));
                         case EntityType.Task:
                             return ProjectSecurity.CanRead(engineFactory.GetTaskEngine().GetByID(entityId));
                         case EntityType.Message:
                             return ProjectSecurity.CanReadMessages(project);
                         case EntityType.File:
                             return ProjectSecurity.CanReadFiles(project);
                         case EntityType.TimeSpend:
                             {
                                 if (entityId < 0)
                                 {
                                     return ProjectSecurity.CanRead(project);
                                 }
                                 return ProjectSecurity.CanRead(engineFactory.GetTaskEngine().GetByID(entityId));
                             }
                     }
                 }
             }
             catch (Exception)
             {
                 return false;
             }
         }
     }
     else if (!string.IsNullOrEmpty(activity.ContainerID))
     {
         //Go long way. Parse old data
         int prjId;
         if (int.TryParse(activity.ContainerID, out prjId))
         {
             var prj = engineFactory.GetProjectEngine().GetByID(prjId);
             if (prj != null)
             {
                 if (prj.Private)
                 {
                     try
                     {
                         return !string.IsNullOrEmpty(activity.AdditionalData) &&
                                CheckPermission(prj, activity, engineFactory);
                     }
                     catch
                     {
                         return false;
                     }
                 }
             }
         }
     }
     return true;
 }
示例#18
0
 public static bool IsAllowedToView(UserActivity activity, EngineFactory engineFactory)
 {
     if (activity != null)
     {
         activity.SecurityFiltered = true;//Set to true to miss later checks
         //Root key is project id. will be used to drop cache
         return ActivitySecurityCache.Get(activity.ContainerID, SecurityContext.CurrentAccount.ID + activity.ID.ToString(), () => CheckAccess(activity, engineFactory));
     }
     //If empty - then don't care
     return true;
 }
示例#19
0
 public MessageEngine(IDaoFactory daoFactory, EngineFactory engineFactory)
 {
     _engineFactory = engineFactory;
     _messageDao = daoFactory.GetMessageDao();
     _commentDao = daoFactory.GetCommentDao();
 }
示例#20
0
 public SubtaskEngine(IDaoFactory daoFactory, EngineFactory factory)
 {
     _factory    = factory;
     _subtaskDao = daoFactory.GetSubtaskDao();
     _taskDao    = daoFactory.GetTaskDao();
 }
示例#21
0
 public SubtaskEngine(IDaoFactory daoFactory, EngineFactory factory)
 {
     _factory = factory;
     _subtaskDao = daoFactory.GetSubtaskDao();
     _taskDao = daoFactory.GetTaskDao();
 }
 public ProjectActivityEngine(IDaoFactory daoFactory, EngineFactory engineFactory)
 {
 }
 public CachedProjectEngine(bool disableNotificationParameter, EngineFactory factory)
     : base(disableNotificationParameter, factory)
 {
 }
		public TemplateEngine(IDaoFactory daoFactory, EngineFactory factory)
		{
		    _factory = factory;
		    _dao = daoFactory.GetTemplateDao();			
		}
示例#25
0
 public ReportEngine(IDaoFactory daoFactory, EngineFactory factory)
 {
     reportDao    = daoFactory.GetReportDao();
     this.factory = factory;
 }
 public MilestoneEngine(IDaoFactory daoFactory, EngineFactory engineFactory)
 {
     _engineFactory = engineFactory;
     _milestoneDao  = daoFactory.GetMilestoneDao();
 }
 public CachedProjectEngine(IDaoFactory daoFactory, EngineFactory factory)
     : base(daoFactory, factory)
 {
 }
        public ImportFromBasecamp(string url, string userName, string password, Guid initiatorId, bool withClosed, bool disableNotifications, bool importUsersAsCollaborators, EngineFactory engineFactory, IEnumerable<int> projects)
        {
            _newUsersID = new List<UserIDWrapper>();
            _newProjectsID = new List<ProjectIDWrapper>();
            _newMilestonesID = new List<MilestoneIDWrapper>();
            _newMessagesID = new List<MessageIDWrapper>();
            _newTasksID = new List<TaskIDWrapper>();
            _newFilesID = new List<FileIDWrapper>();

            _url = (PrepUrl(url).ToString().TrimEnd('/') + "/api/v1");
            _userName = userName;
            _password = password;
            _initiatorId = initiatorId;
            _withClosed = withClosed;
            _disableNotifications = disableNotifications;
            _importUsersAsCollaborators = importUsersAsCollaborators;
            _engineFactory = engineFactory;
            _engineFactory.DisableNotifications = disableNotifications;
            Status = new ImportStatus(_url);
            Id = TenantProvider.CurrentTenantID;
            _log = LogManager.GetLogger("ASC.Project.BasecampImport");
            _principal = Thread.CurrentPrincipal;
            _projects = projects;
        }
示例#29
0
 public TemplateEngine(IDaoFactory daoFactory, EngineFactory factory)
 {
     _factory = factory;
     _dao     = daoFactory.GetTemplateDao();
 }
示例#30
0
 public MessageEngine(IDaoFactory daoFactory, EngineFactory engineFactory)
 {
     _engineFactory = engineFactory;
     _messageDao    = daoFactory.GetMessageDao();
     _commentDao    = daoFactory.GetCommentDao();
 }