Ejemplo n.º 1
0
        /// <summary>
        /// Constructor for string type.
        /// </summary>
        /// <param name="constructString">Original string.</param>
        /// <param name="source">Source method from compile tree ("requester").</param>
        internal TokenContext(ConstructString constructString, MemberInfo source)
        {
            Module = AppModules.GetModuleByAddress(constructString.HandleModule);
            Source = source;

            TokenType     = TokenKind.String;
            MetadataToken = constructString.MetadataToken;

            if (Module != null)
            {
                Content = Module.ResolveString(MetadataToken);
            }
        }
        /// <summary>
        /// Inserts the change owner activity.
        /// </summary>
        /// <param name="entityId">The entity identifier.</param>
        /// <param name="userId">The user identifier.</param>
        /// <param name="module">The module.</param>
        /// <param name="activityType">Type of the activity.</param>
        public void InsertChangeOwnerActivity(int entityId, int?userId, AppModules module, UserActivityType activityType)
        {
            var db = ObjectContextFactory.Create();
            UserActivityLogsDb activityLog = new UserActivityLogsDb()
            {
                EntityID       = entityId,
                LogDate        = DateTime.Now.ToUniversalTime(),
                UserID         = userId,
                ModuleID       = (byte)module,
                UserActivityID = (byte)activityType
            };

            db.UserActivitiesLog.Add(activityLog);
            db.SaveChanges();
        }
Ejemplo n.º 3
0
        bool ICachingService.IsModulePrivate(AppModules module, int accountId)
        {
            string             cacheKey       = "datasharing" + accountId;
            IEnumerable <byte> privateModules = new List <byte>();

            if (!cacheManager.IsExists(cacheKey))
            {
                privateModules = accountRepository.GetPrivateModules(accountId);
                cacheManager.Add(cacheKey, privateModules, DateTimeOffset.MaxValue);
            }
            else
            {
                privateModules = cacheManager.Get <IEnumerable <byte> >(cacheKey);
            }
            return(privateModules.Contains((byte)module));
        }
Ejemplo n.º 4
0
 public bool CheckPermission(int accountId, int roleId, AppModules module)
 {
     if (accountId != 0 && roleId != 0)
     {
         var userPermissions    = GetUserPermissions(accountId);
         var accountPermissions = GetAccountPermissions(accountId);
         if (userPermissions != null && userPermissions.Any() && accountPermissions != null && accountPermissions.Any())
         {
             return(userPermissions.Any(u => u.RoleId == roleId && u.ModuleId == (byte)module) && accountPermissions.Contains((byte)module));
         }
         else
         {
             return(false);
         }
     }
     else if (accountId != 0 && roleId == 0)   //In-case of automation-engine
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
        /// <summary>
        /// Gets the contacts by activity.
        /// </summary>
        /// <param name="userId">The user identifier.</param>
        /// <param name="moduleName">Name of the module.</param>
        /// <param name="activityName">Name of the activity.</param>
        /// <param name="contactIDs">The contact i ds.</param>
        /// <param name="sort">The sort.</param>
        /// <param name="accountId">The account identifier.</param>
        /// <returns></returns>
        public IList <int> GetContactsByActivity(int userId, AppModules moduleName, UserActivityType activityName, int[] contactIDs, string sort, int accountId)
        {
            var         db         = ObjectContextFactory.Create();
            IList <int> activities = new List <int>();

            /*For Recently Updated */
            if (sort == "1")
            {
                activities = db.UserActivitiesLog
                             .Where(c => c.UserID == userId && c.AccountID == accountId && c.ModuleID == (byte)moduleName &&
                                    c.UserActivityID == (byte)activityName && c.AccountID == accountId).
                             Join(db.Contacts, u => u.EntityID, c => c.ContactID, (u, c) => new { u.EntityID, u.LogDate, c.IsDeleted, c.LastUpdatedOn, c.AccountID })
                             .Where(i => i.IsDeleted == false && i.AccountID == accountId).OrderByDescending(u => u.LastUpdatedOn).Take(1000).Select(i => i.EntityID).ToList();
            }
            /*For Full Name */
            else if (sort == "2")
            {
                activities = db.UserActivitiesLog
                             .Where(c => c.UserID == userId && c.AccountID == accountId && c.ModuleID == (byte)moduleName &&
                                    c.UserActivityID == (byte)activityName && c.AccountID == accountId).
                             Join(db.Contacts, u => u.EntityID, c => c.ContactID, (u, c) => new { u.EntityID, u.LogDate, c.IsDeleted, name = c.FirstName + " " + c.LastName, c.AccountID })
                             .Where(i => i.IsDeleted == false && i.AccountID == accountId).OrderBy(u => u.name).Take(1000).Select(i => i.EntityID).ToList();
            }
            /*For Company Name */
            else if (sort == "3")
            {
                activities = db.UserActivitiesLog
                             .Where(c => c.UserID == userId && c.AccountID == accountId && c.ModuleID == (byte)moduleName &&
                                    c.UserActivityID == (byte)activityName && c.AccountID == accountId).
                             Join(db.Contacts, u => u.EntityID, c => c.ContactID, (u, c) => new { u.EntityID, u.LogDate, c.IsDeleted, c.Company, c.AccountID })
                             .Where(i => i.IsDeleted == false && i.AccountID == accountId).OrderBy(u => u.Company).Take(1000).Select(i => i.EntityID).ToList();
            }
            /*For Recently Viewed */
            else
            {
                activities = db.UserActivitiesLog
                             .Where(c => c.UserID == userId && c.AccountID == accountId && c.ModuleID == (byte)moduleName &&
                                    c.UserActivityID == (byte)activityName && c.AccountID == accountId).
                             Join(db.Contacts, u => u.EntityID, c => c.ContactID, (u, c) => new { u.EntityID, u.LogDate, c.IsDeleted, c.AccountID })
                             .Where(i => i.IsDeleted == false && i.AccountID == accountId).OrderByDescending(u => u.LogDate).Take(1000).Select(i => i.EntityID).ToList();
            }

            var recentlyViewedContactIds = activities.Select(u => u).GroupBy(g => g).Select(f => f.First()).ToList();

            if (sort == "")
            {
                Logger.Current.Informational("RecentlyViewed Contacts Ids: " + recentlyViewedContactIds.Count());
            }
            else if (sort == "1")
            {
                Logger.Current.Informational("RecentlyUpdated Contacts Ids: " + recentlyViewedContactIds.Count());
            }
            else if (sort == "2")
            {
                Logger.Current.Informational("FullName Contacts Ids: " + recentlyViewedContactIds.Count());
            }
            else if (sort == "3")
            {
                Logger.Current.Informational("Company Contacts Ids: " + recentlyViewedContactIds.Count());
            }

            if (contactIDs != null)
            {
                recentlyViewedContactIds = recentlyViewedContactIds.Where(p => contactIDs.Contains(p)).ToList();
            }

            return(recentlyViewedContactIds);
        }
        /// <summary>
        /// Inserts the contact read activity.
        /// </summary>
        /// <param name="entityId">The entity identifier.</param>
        /// <param name="entityName">Name of the entity.</param>
        /// <param name="userId">The user identifier.</param>
        /// <param name="module">The module.</param>
        /// <param name="activityName">Name of the activity.</param>
        /// <param name="accountId">The account identifier.</param>
        public void InsertContactReadActivity(int entityId, string entityName, int userId, AppModules module, UserActivityType activityName, int accountId)
        {
            var db = ObjectContextFactory.Create();
            UserActivityLogsDb userActivityLog = new UserActivityLogsDb()
            {
                EntityID       = entityId,
                EntityName     = entityName,
                LogDate        = DateTime.Now.ToUniversalTime(),
                ModuleID       = (byte)module,
                UserActivityID = (byte)activityName,
                UserID         = userId,
                AccountID      = accountId
            };

            db.UserActivitiesLog.Add(userActivityLog);
            db.SaveChanges();
        }
Ejemplo n.º 7
0
        void analyzeByActivity(IEnumerable <UserActivityLog> logs, int activity, int moduleId, string dateFormat, bool dayOneLogs)
        {
            AppModules module = (AppModules)moduleId;
            var        total  = dayOneLogs == true?logs.Where(l => l.UserActivityID == activity).Count() : logs.Where(l => l.UserActivityID == activity).GroupBy(l => l.EntityID).Count();


            //var total = logs.Where(l => l.UserActivityID == activity).GroupBy(l => l.EntityID).Select(g => g.First()).Count();
            //var entityDetails = logs.Where(l => l.UserActivityID == activity && l.ModuleID == moduleId).Select(l => l.EntityDetail).ToList();
            if (total == 0)
            {
                return;
            }

            string totalInText = string.Empty;

            int[] anEntities = new int[] { 1, 5, 16 };

            if (total == 1)
            {
                totalInText = anEntities.Contains(moduleId) ? "[|an|]" : "[|a|]";
            }
            else
            {
                totalInText = total.ToString();
            }

            //var date = logs.Where(l => l.UserActivityID == activity).First().LogDate;
            //string message = "";
            List <UserActivityViewModel> userActivityModels = new List <UserActivityViewModel>();

            if (dayOneLogs)
            {
                totalInText = anEntities.Contains(moduleId) ? "[|an|]" : "[|a|]";
                var activityLogs = logs.Where(l => l.UserActivityID == activity);
                foreach (var log in activityLogs)
                {
                    UserActivityViewModel userActivityModel = new UserActivityViewModel();
                    userActivityModel.DateFormat = dateFormat;
                    userActivityModel.EntityIds  = new List <int>()
                    {
                        log.EntityID
                    };
                    userActivityModel.Message =
                        ((AppModules)moduleId == AppModules.Reports || (AppModules)moduleId == AppModules.AdvancedSearch && activity == (byte)UserActivityType.LastRunOn) ?
                        "[|Ran|] " + totalInText + " " + ((AppModules)moduleId == AppModules.Reports ? " [|Report|]" : " [|Saved Search|]") + " - " + log.EntityName :
                        (activities[activity] + " " + totalInText + " " + modules[module] + " - " + log.EntityName);
                    userActivityModel.LogDate  = log.LogDate;
                    userActivityModel.ModuleID = (byte)moduleId;
                    if (dateFormat.Contains('/'))
                    {
                        userActivityModel.DateSeperator = dtfi;
                    }
                    userActivityModels.Add(userActivityModel);
                }
                analysis.AddRange(userActivityModels);
            }
            else
            {
                var    date    = logs.Where(l => l.UserActivityID == activity).First().LogDate;
                string message = ((AppModules)moduleId == AppModules.Reports || (AppModules)moduleId == AppModules.AdvancedSearch && activity == (byte)UserActivityType.LastRunOn ?
                                  "[|Ran|]" : activities[activity]) + " " + totalInText + " " + (total > 1 ? modules[module] + "[|s|]" : modules[module]) + " "
                                 + ("- " + logs.Where(l => l.UserActivityID == activity).GroupBy(l => l.EntityID).Select(g => g.FirstOrDefault().EntityName).Aggregate((a, b) => a + ", " + b));
                UserActivityViewModel model = new UserActivityViewModel();
                model.DateFormat = dateFormat;
                model.Message    = message;
                model.EntityIds  = logs.Where(l => l.UserActivityID == activity).Select(s => s.EntityID).Distinct().ToList();
                // model.EntityDetails = entityDetails;
                model.LogDate = date;
                // model.EntityId =
                model.ModuleID = (byte)moduleId;
                if (dateFormat.Contains('/'))
                {
                    model.DateSeperator = dtfi;
                }
                analysis.Add(model);
            }
        }
Ejemplo n.º 8
0
 public SmarttouchAuthorizeAttribute(AppModules module, AppOperations action)
 {
     this._Module        = module;
     this._Action        = action;
     this.cachingService = IoC.Container.GetInstance <ICachingService>();
 }