コード例 #1
0
 /// <inheritdoc />
 public CreateFieldRequest(int projectId,
                           ProjectFieldType fieldType,
                           string name,
                           string fieldHint,
                           bool canPlayerEdit,
                           bool canPlayerView,
                           bool isPublic,
                           FieldBoundTo fieldBoundTo,
                           MandatoryStatus mandatoryStatus,
                           IReadOnlyCollection <int> showForGroups,
                           bool validForNpc,
                           bool includeInPrint,
                           bool showForUnapprovedClaims,
                           int price,
                           string masterFieldHint,
                           string programmaticValue) : base(projectId,
                                                            name,
                                                            fieldHint,
                                                            canPlayerEdit,
                                                            canPlayerView,
                                                            isPublic,
                                                            mandatoryStatus,
                                                            showForGroups,
                                                            validForNpc,
                                                            includeInPrint,
                                                            showForUnapprovedClaims,
                                                            price,
                                                            masterFieldHint,
                                                            programmaticValue)
 {
     FieldType    = fieldType;
     FieldBoundTo = fieldBoundTo;
 }
コード例 #2
0
        public async Task AddField(int projectId, ProjectFieldType fieldType, string name, string fieldHint, bool canPlayerEdit, bool canPlayerView, bool isPublic, FieldBoundTo fieldBoundTo, MandatoryStatus mandatoryStatus, List <int> showForGroups, bool validForNpc, bool includeInPrint, bool showForUnapprovedClaims)
        {
            var project = await ProjectRepository.GetProjectAsync(projectId);

            project.RequestMasterAccess(CurrentUserId, acl => acl.CanChangeFields);

            var field = new ProjectField
            {
                FieldName       = Required(name),
                Description     = new MarkdownString(fieldHint),
                CanPlayerEdit   = canPlayerEdit,
                CanPlayerView   = canPlayerView,
                ValidForNpc     = validForNpc,
                IsPublic        = isPublic,
                ProjectId       = projectId,
                Project         = project, //We require it for CreateOrUpdateSpecailGroup
                FieldType       = fieldType,
                FieldBoundTo    = fieldBoundTo,
                IsActive        = true,
                MandatoryStatus = mandatoryStatus,
                AvailableForCharacterGroupIds = await ValidateCharacterGroupList(projectId, showForGroups),
                IncludeInPrint         = includeInPrint,
                ShowOnUnApprovedClaims = showForUnapprovedClaims
            };


            CreateOrUpdateSpecialGroup(field);

            UnitOfWork.GetDbSet <ProjectField>().Add(field);
            await UnitOfWork.SaveChangesAsync();
        }
コード例 #3
0
        public void ShouldBeAbleToCalculatePricing(ProjectFieldType projectFieldType)
        {
            var fieldWithValue = new FieldWithValue(new ProjectField {
                FieldType = projectFieldType
            }, null);

            Should.NotThrow(() => fieldWithValue.GetCurrentFee());
        }
コード例 #4
0
        /// <summary>
        /// Adds the project field.
        /// </summary>
        /// <param name="readProjects">The read projects.</param>
        /// <param name="projectField">The project field.</param>
        /// <returns>ReadProjects.</returns>
        public static ReadProjects AddProjectField(this ReadProjects readProjects, ProjectFieldType projectField)
        {
            var fieldtypes = new List <ProjectFieldType>(readProjects.Field)
            {
                projectField
            };

            readProjects.Field = fieldtypes.ToArray();
            return(readProjects);
        }
コード例 #5
0
 /// <summary>
 /// Returns true if field values could be mass added and doesn't require special setup
 /// </summary>
 public static bool SupportsMassAdding(this ProjectFieldType self)
 {
     return(self switch
     {
         ProjectFieldType.Dropdown => true,
         ProjectFieldType.MultiSelect => true,
         ProjectFieldType.ScheduleRoomField => true,
         ProjectFieldType.ScheduleTimeSlotField => false,
         ProjectFieldType.String => false,
         ProjectFieldType.Text => false,
         ProjectFieldType.Checkbox => false,
         ProjectFieldType.Header => false,
         ProjectFieldType.Number => false,
         ProjectFieldType.Login => false,
         ProjectFieldType.PinCode => false,
         _ => throw new ArgumentException(self.ToString(), nameof(self)),
     });
コード例 #6
0
        /// <summary>
        /// Returns true if field supports price calculations
        /// </summary>
        public static bool SupportsPricing(this ProjectFieldType self)
        {
            switch (self)
            {
            case ProjectFieldType.Dropdown:
            case ProjectFieldType.MultiSelect:
            case ProjectFieldType.Checkbox:
            case ProjectFieldType.Number:
                return(true);

            case ProjectFieldType.String:
            case ProjectFieldType.Text:
            case ProjectFieldType.Header:
            case ProjectFieldType.Login:
                return(false);

            default:
                throw new ArgumentException(nameof(self));
            }
        }
コード例 #7
0
        /// <summary>
        /// Returns true if field has predefined values
        /// </summary>
        public static bool HasValuesList(this ProjectFieldType self)
        {
            switch (self)
            {
            case ProjectFieldType.Dropdown:
            case ProjectFieldType.MultiSelect:
            case ProjectFieldType.ScheduleRoomField:
            case ProjectFieldType.ScheduleTimeSlotField:
                return(true);

            case ProjectFieldType.String:
            case ProjectFieldType.Text:
            case ProjectFieldType.Checkbox:
            case ProjectFieldType.Header:
            case ProjectFieldType.Number:
            case ProjectFieldType.Login:
                return(false);

            default:
                throw new ArgumentException(self.ToString(), nameof(self));
            }
        }
コード例 #8
0
 public void HasValuesListDecided(ProjectFieldType projectFieldType) => Should.NotThrow(() => projectFieldType.HasValuesList());
コード例 #9
0
 public void PricingOnFieldDecided(ProjectFieldType projectFieldType) => Should.NotThrow(() => projectFieldType.SupportsPricingOnField());
コード例 #10
0
 public void PricingDecided(ProjectFieldType projectFieldType)
 {
     Should.NotThrow(() => projectFieldType.SupportsPricing());
 }