public dynamic CreateModel(List <ActivityStreamRecord> items, int count, int page, int pageSize)
        {
            var session = this.transactionManager.GetSession();

            // set time zone
            items.ForEach(c =>
            {
                session.Evict(c);
                c.CreationDateTime = CRMHelper.SetSiteTimeZone(this.services.WorkContext, c.CreationDateTime);
            });

            dynamic  model = new ExpandoObject();
            DateTime today = CRMHelper.SetSiteTimeZone(this.services.WorkContext, DateTime.UtcNow);

            // create pager
            var currentSite = this.services.WorkContext.CurrentSite;
            var pager       = new Pager(currentSite, page, pageSize);

            model.Pager = this.services.New.Pager(pager).TotalItemCount(count);

            // contains the list of days, each day will contain the list of items in that day
            List <dynamic> dayModels = new List <dynamic>();

            model.Days = dayModels;
            var groupsByDay = items.GroupBy(c => c.CreationDateTime.Date).OrderByDescending(c => c.Key).ToList();

            foreach (var group in groupsByDay)
            {
                dynamic dayModel = new ExpandoObject();
                dayModels.Add(dayModel);
                dayModel.Date  = group.Key;
                dayModel.Title = group.Key.Date == today.Date ? T("Today").Text : group.Key.ToLongDateString();

                List <dynamic> itemModels = new List <dynamic>();
                dayModel.Items = itemModels;
                foreach (var item in group)
                {
                    dynamic itemModel = this.CreateModel(item);

                    itemModels.Add(itemModel);
                }
            }

            return(model);
        }
        public static CommentsViewModel.CRMCommentViewModel Convert(IOrchardServices services, CRMCommentPartRecord record, IEnumerable <IUser> users)
        {
            var output = new CommentsViewModel.CRMCommentViewModel
            {
                IsEmail        = record.IsEmail,
                Subject        = record.Subject,
                BCC            = record.BCC,
                CC             = record.CC,
                CommentDateUtc = record.CommentDateUtc,
                CommentText    = record.CommentText,
                IsHtml         = record.IsHtml,
                User           = users.FirstOrDefault(c => c.Id == record.User.Id)
            };

            if (output.CommentDateUtc.HasValue && output.CommentDateUtc.Value.Kind == DateTimeKind.Utc)
            {
                output.CommentDateUtc = CRMHelper.SetSiteTimeZone(services, output.CommentDateUtc.Value);
            }

            return(output);
        }
Exemple #3
0
        public IEnumerable <IUser> GetCustomers(string searchPhrase, int pageId, int pageSize, UsersOrderViewModel orderBy, bool decsending)
        {
            if (pageId <= 0)
            {
                pageId = 1;
            }
            var operatorsAndCustomers = this.GetOperatorAndCustomers();

            // cache values
            if (false && operatorsAndCustomers != null)
            {
                var operators = this.GetOperators();
                var customers = operators.Count() > 0 ?
                                operatorsAndCustomers.Where(c => !operators.Any(d => d.Id == c.Id)).ToList() :
                                operatorsAndCustomers;

                // TODO: fix the issue of checking user tags
                if (!string.IsNullOrEmpty(searchPhrase))
                {
                    searchPhrase = searchPhrase.ToLower(CultureInfo.InvariantCulture);
                    customers    = customers.Where(c =>
                                                   c.Email.ToLower().Contains(searchPhrase) ||
                                                   c.UserName.ToLower().Contains(searchPhrase) ||
                                                   CRMHelper.GetFullNameOfUser(c).ToLower().Contains(searchPhrase)).ToList();
                }

                switch (orderBy)
                {
                case UsersOrderViewModel.Default:
                    customers = decsending ? customers.OrderBy(c => c.Id).ToList() : customers.OrderByDescending(c => c.Id).ToList();
                    break;

                case UsersOrderViewModel.Email:
                    customers = decsending ? customers.OrderBy(c => c.Email).ToList() : customers.OrderByDescending(c => c.Email).ToList();
                    break;

                case UsersOrderViewModel.Username:
                    customers = decsending ? customers.OrderBy(c => c.UserName).ToList() : customers.OrderByDescending(c => c.UserName).ToList();
                    break;
                }

                return(customers.Skip((pageId - 1) * pageSize).Take(pageSize));
            }
            else
            {
                var temp = this.rolesPermissionsRepository.Table.Where(c =>
                                                                       c.Permission.Name == Permissions.CustomerPermission.Name &&
                                                                       c.Permission.FeatureName == "Orchard.CRM.Core").ToList();

                var customerRoles = temp.ConvertAll(c => c.Role.Id).ToArray();

                searchPhrase = searchPhrase != null?searchPhrase.ToLower(CultureInfo.InvariantCulture) : string.Empty;

                var customers = (from userRole in this.userRolesRepository.Table
                                 join
                                 user in this.userRepository.Table
                                 on userRole.UserId equals user.Id
                                 join f in fieldRepository.Table
                                 on user.Id equals f.ContentItemRecord.Id

                                 where customerRoles.Contains(userRole.Role.Id) &&
                                 (searchPhrase == null ||
                                  user.UserName.Contains(searchPhrase) ||
                                  user.Email.Contains(searchPhrase) ||
                                  f.StringFieldIndexRecords.Any(d => d.Value.Contains(searchPhrase) && (d.PropertyName == "User.FullName" || d.PropertyName == "User.Tags"))
                                 )
                                 select user);

                switch (orderBy)
                {
                case UsersOrderViewModel.Default:
                    customers = decsending ? customers.OrderBy(c => c.Id) : customers.OrderByDescending(c => c.Id);
                    break;

                case UsersOrderViewModel.Email:
                    customers = decsending ? customers.OrderBy(c => c.Email) : customers.OrderByDescending(c => c.Email);
                    break;

                case UsersOrderViewModel.Username:
                    customers = decsending ? customers.OrderBy(c => c.UserName) : customers.OrderByDescending(c => c.UserName);
                    break;
                }

                List <int> ids = customers.Skip((pageId - 1) * pageSize).Take(pageSize).Select(c => c.Id).ToList();

                return(this.contentManager.GetMany <UserPart>(ids, VersionOptions.Published, new QueryHints()).Select(c => c.As <IUser>()).ToList());
            }
        }
Exemple #4
0
        public void FillPermissions(ContentItemSetPermissionsViewModel model, IEnumerable <ContentItem> contentItems, bool onlyAddOwnerPermissions)
        {
            var businessUnits = this.basicDataService.GetBusinessUnits().ToList();
            var teams         = this.basicDataService.GetTeams().ToList();

            if (contentItems != null && contentItems.Count() > 0)
            {
                foreach (var contentItem in contentItems)
                {
                    ContentItemSetPermissionsViewModel.ContentItemPermissionsModel contentItemPermissionModel = new ContentItemSetPermissionsViewModel.ContentItemPermissionsModel();
                    contentItemPermissionModel.ContentItem = contentItem;
                    model.ContentItems.Add(contentItemPermissionModel);

                    var contentPermissionPart = contentItem.As <ContentItemPermissionPart>();
                    if (contentPermissionPart == null)
                    {
                        throw new Security.OrchardSecurityException(T("The ContentItem doesn't have any ContentItemPermissionPart part."));
                    }

                    var allPermissionRecords = contentPermissionPart.Record.Items;

                    if (allPermissionRecords == null)
                    {
                        allPermissionRecords = new List <ContentItemPermissionDetailRecord>();
                    }

                    contentItemPermissionModel.IsCurrentUserOwner = this.crmContentOwnershipService.CurrentUserIsContentItemAssignee(contentItem);

                    // operator permission can access unassigned items
                    contentItemPermissionModel.CurrentUserHasRightToChangePermissions = this.crmContentOwnershipService.CurrentUserCanChangePermission(contentItem, new ModelStateDictionary());

                    if (onlyAddOwnerPermissions)
                    {
                        allPermissionRecords = allPermissionRecords.Where(c => c.AccessType == ContentItemPermissionAccessTypes.Assignee).ToList();
                    }

                    // fill the list of current permission items
                    foreach (var itemPermission in allPermissionRecords)
                    {
                        var itemModel = new ContentItemSetPermissionsViewModel.ItemPermissionViewModel
                        {
                            Id             = itemPermission.Id,
                            ContentItemId  = contentItem.Id,
                            AccessType     = itemPermission.AccessType,
                            BusinessUnitId = itemPermission.BusinessUnit != null ? (int?)itemPermission.BusinessUnit.Id : null,
                            TeamId         = itemPermission.Team != null ? (int?)itemPermission.Team.Id : null,
                            UserId         = itemPermission.User != null ? (int?)itemPermission.User.Id : null,
                        };

                        if (itemPermission.User != null)
                        {
                            var user = this.basicDataService.GetOperatorOrCustomerUser(itemPermission.User.Id);
                            itemModel.Name = CRMHelper.GetFullNameOfUser(user);
                        }
                        else if (itemPermission.Team != null)
                        {
                            var team = teams.FirstOrDefault(c => c.Id == itemPermission.Team.Id);
                            itemModel.Name = team != null?team.As <TeamPart>().Name : string.Empty;
                        }
                        else if (itemPermission.BusinessUnit != null)
                        {
                            var businessUnit = businessUnits.FirstOrDefault(c => c.Id == itemPermission.BusinessUnit.Id);
                            if (businessUnit != null && businessUnit.As <BusinessUnitPart>() != null)
                            {
                                itemModel.Name = businessUnit.As <BusinessUnitPart>().Name;
                            }
                        }

                        // checked the business Unit in the list
                        if (itemModel.BusinessUnitId.HasValue)
                        {
                            var businessUnit = model.BusinessUnits.FirstOrDefault(c => c.BusinessUnitId == itemModel.BusinessUnitId.Value);
                            if (businessUnit != null)
                            {
                                businessUnit.Checked = true;
                            }
                        }

                        // checked the team in the list
                        if (itemModel.TeamId.HasValue)
                        {
                            var team = model.Teams.FirstOrDefault(c => c.TeamId == itemModel.TeamId.Value);
                            if (team != null)
                            {
                                team.Checked = true;
                            }
                        }

                        // checked the user in the list
                        if (itemModel.UserId.HasValue)
                        {
                            var user = model.Users.FirstOrDefault(c => c.Value == itemModel.UserId.Value.ToString(CultureInfo.InvariantCulture));
                            if (user != null)
                            {
                                user.Selected = true;
                            }
                        }

                        contentItemPermissionModel.CurrentPermissions.Add(itemModel);
                    }
                }
            }
        }