Exemplo n.º 1
0
        public ContentItemSetPermissionsViewModel CreateModel()
        {
            var teams         = this.basicDataService.GetTeams().ToList();
            var businessUnits = this.basicDataService.GetBusinessUnits().ToList();

            var model = new ContentItemSetPermissionsViewModel();

            // fill businessUnits
            foreach (var businessUnit in businessUnits)
            {
                var businessUnitPart  = businessUnit.As <BusinessUnitPart>();
                var businessUnitModel = new BusinessUnitViewModel
                {
                    BusinessUnitId = businessUnitPart.Id,
                    Name           = businessUnitPart.Name,
                    Description    = businessUnitPart.Description,
                };

                foreach (var team in teams)
                {
                    var teamPart = team.As <TeamPart>();

                    if (teamPart.BusinessUnit != null && teamPart.BusinessUnit.Id == businessUnitPart.Id)
                    {
                        var teamViewModel = new TeamViewModel
                        {
                            TeamId         = teamPart.Id,
                            BusinessUnitId = teamPart.BusinessUnit != null ? (int?)teamPart.BusinessUnit.Id : null,
                            Name           = teamPart.Name,
                            Description    = teamPart.Description
                        };

                        model.Teams.Add(teamViewModel);
                        businessUnitModel.Teams.Add(teamViewModel);
                    }
                }

                model.BusinessUnits.Add(businessUnitModel);
            }

            // get users with operator permission
            var users = this.basicDataService.GetOperators().ToList();

            foreach (var user in users)
            {
                model.Users.Add(new SelectListItem
                {
                    Value = user.Id.ToString(CultureInfo.InvariantCulture),
                    Text  = CRMHelper.GetFullNameOfUser(user.As <UserPart>())
                });
            }

            return(model);
        }
Exemplo n.º 2
0
        public MilestoneHandler(
            IRepository <MilestonePartRecord> repository,
            IContentManager contentManager,
            IContentOwnershipHelper contentOwnershipHelper)
        {
            Filters.Add(StorageFilter.For(repository));

            this.OnPublishing <AttachToMilestonePart>((context, part) =>
            {
                if (part.Record.MilestoneId.HasValue)
                {
                    var milestone = contentManager.Get(part.Record.MilestoneId.Value);

                    ContentItemSetPermissionsViewModel milestonePermissions = new ContentItemSetPermissionsViewModel();
                    contentOwnershipHelper.FillPermissions(milestonePermissions, new[] { milestone });

                    ContentItemSetPermissionsViewModel itemPermissions = new ContentItemSetPermissionsViewModel();
                    contentOwnershipHelper.FillPermissions(itemPermissions, new[] { part.ContentItem });

                    EditContentPermissionViewModel editContentPermissionViewModel = new EditContentPermissionViewModel();
                    editContentPermissionViewModel.AccessType          = ContentItemPermissionAccessTypes.SharedForView;
                    editContentPermissionViewModel.RemoveOldPermission = false;

                    // Grant users who don't have access to item
                    foreach (var user in milestonePermissions.Users.Where(c => !itemPermissions.Users.Any(d => d.Value == c.Value)))
                    {
                        editContentPermissionViewModel.Targets.Add(new TargetContentItemPermissionViewModel {
                            UserId = int.Parse(user.Value), Checked = true
                        });
                    }

                    // Grant customer who don't have access to item
                    foreach (var user in milestonePermissions.Customers.Where(c => !itemPermissions.Customers.Any(d => d.Value == c.Value)))
                    {
                        editContentPermissionViewModel.Targets.Add(new TargetContentItemPermissionViewModel {
                            UserId = int.Parse(user.Value), Checked = true
                        });
                    }

                    // Grant businessUnits who don't have access to item
                    foreach (var bussinesUnit in milestonePermissions.BusinessUnits.Where(c => !itemPermissions.BusinessUnits.Any(d => d.BusinessUnitId == c.BusinessUnitId)))
                    {
                        editContentPermissionViewModel.Targets.Add(new TargetContentItemPermissionViewModel {
                            BusinessUnitId = bussinesUnit.BusinessUnitId, Checked = true
                        });
                    }

                    contentOwnershipHelper.Update(editContentPermissionViewModel, new[] { part.ContentItem }, false);
                }
            });
        }
        public void Describe(DescribeContext context)
        {
            Func <IShapeFactory, dynamic> formFactory =
                shapeFactory =>
            {
                var priorities    = this.basicDataService.GetPriorities().ToList();
                var statusRecords = this.basicDataService.GetStatusRecords().ToList().Select(c => new BasicDataRecordViewModel {
                    Id = c.Id, Name = c.Name
                }).ToList();
                var serviceRecords = this.basicDataService.GetServices().Select(c => c.Record).ToList();
                var projects       = this.projectService.GetProjects(null).AsPart <ProjectPart>().ToList();

                Collection <SelectListItem> prioritySelectList = new Collection <SelectListItem>();
                Collection <SelectListItem> statusSelectList   = new Collection <SelectListItem>();
                Collection <SelectListItem> serviceSelectList  = new Collection <SelectListItem>();
                Collection <SelectListItem> projectList        = new Collection <SelectListItem>();

                Converter.Fill(prioritySelectList, null, priorities);
                prioritySelectList.Insert(0, new SelectListItem());

                Converter.Fill(statusSelectList, null, statusRecords);
                statusSelectList.Insert(0, new SelectListItem());

                Converter.Fill(serviceSelectList, null, serviceRecords);
                serviceSelectList.Insert(0, new SelectListItem());

                Converter.FillByIdentity(projectList, projects);

                Collection <SelectListItem> dueDates = CRMHelper.GetDueDateItems(this.T);

                ContentItemSetPermissionsViewModel permissionsViewModel = this.contentOwnershipHelper.CreateModel();
                permissionsViewModel.Users.Insert(0, new SelectListItem());
                var t = this.Shape.Form(_main: this.Shape.CreateTicketActivity(
                                            Priorities: prioritySelectList,
                                            Projects: projectList,
                                            StatusList: statusSelectList,
                                            Services: serviceSelectList,
                                            DueDates: dueDates,
                                            Organization: permissionsViewModel
                                            ));

                return(t);
            };

            context.Form(CreateTicketActivityForm.Name, formFactory);
        }
Exemplo n.º 4
0
        public void RestrictToPeopleWhoHavePermissionInGivenItem(ContentItemSetPermissionsViewModel model, IContent content)
        {
            if (content == null)
            {
                return;
            }

            var contentPermissionPart = content.As <ContentItemPermissionPart>();

            if (contentPermissionPart == null)
            {
                return;
            }

            var items = contentPermissionPart.Record.Items;

            if (items == null || items.Count == 0)
            {
                return;
            }

            var users         = items.Where(c => c.User != null).Select(c => c.User).ToList();
            var businessUnits = items.Where(c => c.BusinessUnit != null).Select(c => c.BusinessUnit).ToList();

            var toRemoveUsers         = model.Users.Where(c => !users.Any(d => d.Id.ToString(CultureInfo.InvariantCulture) == c.Value)).ToList();
            var toRemoveCustomers     = model.Customers.Where(c => !users.Any(d => d.Id.ToString(CultureInfo.InvariantCulture) == c.Value)).ToList();
            var toRemoveBusinessUnits = model.BusinessUnits.Where(c => !businessUnits.Any(d => d.Id == c.BusinessUnitId)).ToList();

            foreach (var toRemove in toRemoveUsers)
            {
                model.Users.Remove(toRemove);
            }

            foreach (var toRemoveCustomer in toRemoveCustomers)
            {
                model.Customers.Remove(toRemoveCustomer);
            }

            foreach (var toRemove in toRemoveBusinessUnits)
            {
                model.BusinessUnits.Remove(toRemove);
            }
        }
Exemplo n.º 5
0
        protected override DriverResult Editor(TicketMenuItemPart part, dynamic shapeHelper)
        {
            var statusRecords = this.basicDataService.GetStatusRecords().ToList().Select(c => new BasicDataRecordViewModel {
                Id = c.Id, Name = c.Name
            }).ToList();
            Collection <SelectListItem> statusSelectList = new Collection <SelectListItem>();

            int?statusId = part.Record.Status != null ? (int?)part.Record.Status.Id : null;

            Converter.Fill(statusSelectList, statusId, statusRecords);
            statusSelectList.Insert(0, new SelectListItem());

            Collection <SelectListItem> dueDates = CRMHelper.GetDueDateItems(this.T);

            if (part.Record.DueDateDays.HasValue)
            {
                dueDates
                .Where(c => c.Value == part.Record.DueDateDays.Value.ToString(CultureInfo.InvariantCulture))
                .ToList()
                .ForEach(c => c.Selected = true);
            }

            ContentItemSetPermissionsViewModel permissionsViewModel = this.contentOwnershipHelper.CreateModel();

            permissionsViewModel.Users.Insert(0, new SelectListItem());
            if (part.Record.User != null)
            {
                permissionsViewModel
                .Users
                .Where(c => c.Value == part.Record.User.Id.ToString(CultureInfo.InvariantCulture))
                .ToList()
                .ForEach(c => c.Selected = true);
            }

            if (part.Record.BusinessUnit != null)
            {
                permissionsViewModel
                .BusinessUnits
                .Where(c => c.BusinessUnitId == part.Record.BusinessUnit.Id)
                .ToList()
                .ForEach(c => c.Checked = true);
            }

            if (part.Record.Team != null)
            {
                permissionsViewModel
                .Teams
                .Where(c => c.TeamId == part.Record.Team.Id)
                .ToList()
                .ForEach(c => c.Checked = true);
            }

            return(ContentShape("Parts_TicketMenuItem_Edit",
                                () =>
            {
                var model = new TicketMenuItemViewModel(
                    statusSelectList,
                    dueDates,
                    permissionsViewModel.Users,
                    permissionsViewModel.BusinessUnits,
                    permissionsViewModel.Teams);

                return shapeHelper.EditorTemplate(TemplateName: "Parts/TicketMenuItem", Model: model, Prefix: Prefix);
            }));
        }
Exemplo n.º 6
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);
                    }
                }
            }
        }
Exemplo n.º 7
0
 public void FillPermissions(ContentItemSetPermissionsViewModel model, IEnumerable <ContentItem> contentItems)
 {
     this.FillPermissions(model, contentItems, false);
 }