/// <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; }
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(); }
public void ShouldBeAbleToCalculatePricing(ProjectFieldType projectFieldType) { var fieldWithValue = new FieldWithValue(new ProjectField { FieldType = projectFieldType }, null); Should.NotThrow(() => fieldWithValue.GetCurrentFee()); }
/// <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); }
/// <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)), });
/// <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)); } }
/// <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)); } }
public void HasValuesListDecided(ProjectFieldType projectFieldType) => Should.NotThrow(() => projectFieldType.HasValuesList());
public void PricingOnFieldDecided(ProjectFieldType projectFieldType) => Should.NotThrow(() => projectFieldType.SupportsPricingOnField());
public void PricingDecided(ProjectFieldType projectFieldType) { Should.NotThrow(() => projectFieldType.SupportsPricing()); }