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); }
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()); } }
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); } } } }