Skip to content

Commit 3a22511

Browse files
Item assignee definition
1 parent 528e70a commit 3a22511

File tree

70 files changed

+2261
-83
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+2261
-83
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// <auto-generated/>
2+
using System.Runtime.Serialization;
3+
using System;
4+
namespace Bones.Api.Client.AutoGen.Models
5+
{
6+
[global::System.CodeDom.Compiler.GeneratedCode("ReQuesty", "0.0.0")]
7+
#pragma warning disable CS1591
8+
public enum AssignmentType
9+
#pragma warning restore CS1591
10+
{
11+
[EnumMember(Value = "user")]
12+
#pragma warning disable CS1591
13+
User,
14+
#pragma warning restore CS1591
15+
[EnumMember(Value = "role")]
16+
#pragma warning disable CS1591
17+
Role,
18+
#pragma warning restore CS1591
19+
}
20+
}

Core/Bones.Api.Client/AutoGen/Models/CreateItemLayoutRequest.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ namespace Bones.Api.Client.AutoGen.Models
1414
[global::System.CodeDom.Compiler.GeneratedCode("ReQuesty", "0.0.1")]
1515
public partial class CreateItemLayoutRequest : IParsable
1616
{
17+
/// <summary>The assignee definitions to use for the initial layout version</summary>
18+
public List<global::Bones.Api.Client.AutoGen.Models.ItemAssigneeDefinitionModel> AssigneeDefinitions { get; set; } = default!;
1719
/// <summary>The field versions to use for the initial layout version</summary>
1820
public List<global::Bones.Api.Client.AutoGen.Models.Int32GuidKeyValuePair> FieldVersions { get; set; } = default!;
1921
/// <summary>The prefix at the start of a Friendly ID for items using this layout, up to 6 letters.</summary>
@@ -40,6 +42,7 @@ public virtual IDictionary<string, Action<IParseNode>> GetFieldDeserializers()
4042
{
4143
return new Dictionary<string, Action<IParseNode>>
4244
{
45+
{ "assigneeDefinitions", n => { AssigneeDefinitions = n.GetCollectionOfObjectValues<global::Bones.Api.Client.AutoGen.Models.ItemAssigneeDefinitionModel>(global::Bones.Api.Client.AutoGen.Models.ItemAssigneeDefinitionModel.CreateFromDiscriminatorValue)?.AsList() ?? throw new NullReferenceException("Unexpected null value for non-nullable property: 'AssigneeDefinitions'"); } },
4346
{ "fieldVersions", n => { FieldVersions = n.GetCollectionOfObjectValues<global::Bones.Api.Client.AutoGen.Models.Int32GuidKeyValuePair>(global::Bones.Api.Client.AutoGen.Models.Int32GuidKeyValuePair.CreateFromDiscriminatorValue)?.AsList() ?? throw new NullReferenceException("Unexpected null value for non-nullable property: 'FieldVersions'"); } },
4447
{ "friendlyIdPrefix", n => { FriendlyIdPrefix = n.GetStringValue() ?? throw new NullReferenceException("Unexpected null value for non-nullable property: 'FriendlyIdPrefix'"); } },
4548
{ "layoutUse", n => { LayoutUse = n.GetEnumValue<global::Bones.Api.Client.AutoGen.Models.ItemLayoutUse>(); } },
@@ -53,6 +56,7 @@ public virtual IDictionary<string, Action<IParseNode>> GetFieldDeserializers()
5356
public virtual void Serialize(ISerializationWriter writer)
5457
{
5558
_ = writer ?? throw new ArgumentNullException(nameof(writer));
59+
writer.WriteCollectionOfObjectValues<global::Bones.Api.Client.AutoGen.Models.ItemAssigneeDefinitionModel>("assigneeDefinitions", AssigneeDefinitions);
5660
writer.WriteCollectionOfObjectValues<global::Bones.Api.Client.AutoGen.Models.Int32GuidKeyValuePair>("fieldVersions", FieldVersions);
5761
writer.WriteStringValue("friendlyIdPrefix", FriendlyIdPrefix);
5862
writer.WriteEnumValue<global::Bones.Api.Client.AutoGen.Models.ItemLayoutUse>("layoutUse", LayoutUse);

Core/Bones.Api.Client/AutoGen/Models/CreateItemLayoutVersionRequest.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ namespace Bones.Api.Client.AutoGen.Models
1414
[global::System.CodeDom.Compiler.GeneratedCode("ReQuesty", "0.0.1")]
1515
public partial class CreateItemLayoutVersionRequest : IParsable
1616
{
17+
/// <summary>The assignee definitions to use for the initial layout version</summary>
18+
public List<global::Bones.Api.Client.AutoGen.Models.ItemAssigneeDefinitionModel> AssigneeDefinitions { get; set; } = default!;
1719
/// <summary>The field versions to use for this layout version</summary>
1820
public List<global::Bones.Api.Client.AutoGen.Models.Int32GuidKeyValuePair> FieldVersions { get; set; } = default!;
1921
/// <summary>The layoutUse property</summary>
@@ -38,6 +40,7 @@ public virtual IDictionary<string, Action<IParseNode>> GetFieldDeserializers()
3840
{
3941
return new Dictionary<string, Action<IParseNode>>
4042
{
43+
{ "assigneeDefinitions", n => { AssigneeDefinitions = n.GetCollectionOfObjectValues<global::Bones.Api.Client.AutoGen.Models.ItemAssigneeDefinitionModel>(global::Bones.Api.Client.AutoGen.Models.ItemAssigneeDefinitionModel.CreateFromDiscriminatorValue)?.AsList() ?? throw new NullReferenceException("Unexpected null value for non-nullable property: 'AssigneeDefinitions'"); } },
4144
{ "fieldVersions", n => { FieldVersions = n.GetCollectionOfObjectValues<global::Bones.Api.Client.AutoGen.Models.Int32GuidKeyValuePair>(global::Bones.Api.Client.AutoGen.Models.Int32GuidKeyValuePair.CreateFromDiscriminatorValue)?.AsList() ?? throw new NullReferenceException("Unexpected null value for non-nullable property: 'FieldVersions'"); } },
4245
{ "layoutUse", n => { LayoutUse = n.GetEnumValue<global::Bones.Api.Client.AutoGen.Models.ItemLayoutUse>(); } },
4346
{ "name", n => { Name = n.GetStringValue() ?? throw new NullReferenceException("Unexpected null value for non-nullable property: 'Name'"); } },
@@ -50,6 +53,7 @@ public virtual IDictionary<string, Action<IParseNode>> GetFieldDeserializers()
5053
public virtual void Serialize(ISerializationWriter writer)
5154
{
5255
_ = writer ?? throw new ArgumentNullException(nameof(writer));
56+
writer.WriteCollectionOfObjectValues<global::Bones.Api.Client.AutoGen.Models.ItemAssigneeDefinitionModel>("assigneeDefinitions", AssigneeDefinitions);
5357
writer.WriteCollectionOfObjectValues<global::Bones.Api.Client.AutoGen.Models.Int32GuidKeyValuePair>("fieldVersions", FieldVersions);
5458
writer.WriteEnumValue<global::Bones.Api.Client.AutoGen.Models.ItemLayoutUse>("layoutUse", LayoutUse);
5559
writer.WriteStringValue("name", Name);

Core/Bones.Api.Client/AutoGen/Models/GetItemLayoutVersionResponse.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ namespace Bones.Api.Client.AutoGen.Models
1414
[global::System.CodeDom.Compiler.GeneratedCode("ReQuesty", "0.0.1")]
1515
public partial class GetItemLayoutVersionResponse : IParsable
1616
{
17+
/// <summary>The assignee definitions for the layout version</summary>
18+
public List<global::Bones.Api.Client.AutoGen.Models.ItemAssigneeDefinitionModel> AssigneeDefinitions { get; set; } = default!;
1719
/// <summary>The field versions</summary>
1820
public List<global::Bones.Api.Client.AutoGen.Models.Int32GuidKeyValuePair> FieldVersions { get; set; } = default!;
1921
/// <summary>The prefix at the start of a Friendly ID for items using this layout, up to 6 letters.</summary>
@@ -48,6 +50,7 @@ public virtual IDictionary<string, Action<IParseNode>> GetFieldDeserializers()
4850
{
4951
return new Dictionary<string, Action<IParseNode>>
5052
{
53+
{ "assigneeDefinitions", n => { AssigneeDefinitions = n.GetCollectionOfObjectValues<global::Bones.Api.Client.AutoGen.Models.ItemAssigneeDefinitionModel>(global::Bones.Api.Client.AutoGen.Models.ItemAssigneeDefinitionModel.CreateFromDiscriminatorValue)?.AsList() ?? throw new NullReferenceException("Unexpected null value for non-nullable property: 'AssigneeDefinitions'"); } },
5154
{ "fieldVersions", n => { FieldVersions = n.GetCollectionOfObjectValues<global::Bones.Api.Client.AutoGen.Models.Int32GuidKeyValuePair>(global::Bones.Api.Client.AutoGen.Models.Int32GuidKeyValuePair.CreateFromDiscriminatorValue)?.AsList() ?? throw new NullReferenceException("Unexpected null value for non-nullable property: 'FieldVersions'"); } },
5255
{ "friendlyIdPrefix", n => { FriendlyIdPrefix = n.GetStringValue() ?? throw new NullReferenceException("Unexpected null value for non-nullable property: 'FriendlyIdPrefix'"); } },
5356
{ "latestVersion", n => { LatestVersion = n.GetLongValue() ?? throw new NullReferenceException("Unexpected null value for non-nullable property: 'LatestVersion'"); } },
@@ -65,6 +68,7 @@ public virtual IDictionary<string, Action<IParseNode>> GetFieldDeserializers()
6568
public virtual void Serialize(ISerializationWriter writer)
6669
{
6770
_ = writer ?? throw new ArgumentNullException(nameof(writer));
71+
writer.WriteCollectionOfObjectValues<global::Bones.Api.Client.AutoGen.Models.ItemAssigneeDefinitionModel>("assigneeDefinitions", AssigneeDefinitions);
6872
writer.WriteCollectionOfObjectValues<global::Bones.Api.Client.AutoGen.Models.Int32GuidKeyValuePair>("fieldVersions", FieldVersions);
6973
writer.WriteStringValue("friendlyIdPrefix", FriendlyIdPrefix);
7074
writer.WriteLongValue("latestVersion", LatestVersion);
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
// <auto-generated/>
2+
#pragma warning disable CS0618
3+
#nullable enable
4+
using ReQuesty.Runtime.Abstractions.Serialization;
5+
using ReQuesty.Runtime.Extensions;
6+
using System.Collections.Generic;
7+
using System.IO;
8+
using System;
9+
namespace Bones.Api.Client.AutoGen.Models
10+
{
11+
/// <summary>
12+
/// Definition of an item assignee
13+
/// </summary>
14+
[global::System.CodeDom.Compiler.GeneratedCode("ReQuesty", "0.0.1")]
15+
public partial class ItemAssigneeDefinitionModel : IParsable
16+
{
17+
/// <summary>The assignmentType property</summary>
18+
public global::Bones.Api.Client.AutoGen.Models.AssignmentType? AssignmentType { get; set; } = default!;
19+
/// <summary>Name of the assignee definition</summary>
20+
public string Name { get; set; } = default!;
21+
/// <summary>The order number of the assignee definition</summary>
22+
public int OrderNumber { get; set; } = default!;
23+
/// <summary>The selectionType property</summary>
24+
public global::Bones.Api.Client.AutoGen.Models.SelectionType? SelectionType { get; set; } = default!;
25+
/// <summary>
26+
/// Creates a new instance of the appropriate class based on discriminator value
27+
/// </summary>
28+
/// <returns>A <see cref="global::Bones.Api.Client.AutoGen.Models.ItemAssigneeDefinitionModel"/></returns>
29+
/// <param name="parseNode">The parse node to use to read the discriminator value and create the object</param>
30+
public static global::Bones.Api.Client.AutoGen.Models.ItemAssigneeDefinitionModel CreateFromDiscriminatorValue(IParseNode parseNode)
31+
{
32+
_ = parseNode ?? throw new ArgumentNullException(nameof(parseNode));
33+
return new global::Bones.Api.Client.AutoGen.Models.ItemAssigneeDefinitionModel();
34+
}
35+
/// <summary>
36+
/// The deserialization information for the current model
37+
/// </summary>
38+
/// <returns>A IDictionary&lt;string, Action&lt;IParseNode&gt;&gt;</returns>
39+
public virtual IDictionary<string, Action<IParseNode>> GetFieldDeserializers()
40+
{
41+
return new Dictionary<string, Action<IParseNode>>
42+
{
43+
{ "assignmentType", n => { AssignmentType = n.GetEnumValue<global::Bones.Api.Client.AutoGen.Models.AssignmentType>(); } },
44+
{ "name", n => { Name = n.GetStringValue() ?? throw new NullReferenceException("Unexpected null value for non-nullable property: 'Name'"); } },
45+
{ "orderNumber", n => { OrderNumber = n.GetIntValue() ?? throw new NullReferenceException("Unexpected null value for non-nullable property: 'OrderNumber'"); } },
46+
{ "selectionType", n => { SelectionType = n.GetEnumValue<global::Bones.Api.Client.AutoGen.Models.SelectionType>(); } },
47+
};
48+
}
49+
/// <summary>
50+
/// Serializes information the current object
51+
/// </summary>
52+
/// <param name="writer">Serialization writer to use to serialize this model</param>
53+
public virtual void Serialize(ISerializationWriter writer)
54+
{
55+
_ = writer ?? throw new ArgumentNullException(nameof(writer));
56+
writer.WriteEnumValue<global::Bones.Api.Client.AutoGen.Models.AssignmentType>("assignmentType", AssignmentType);
57+
writer.WriteStringValue("name", Name);
58+
writer.WriteIntValue("orderNumber", OrderNumber);
59+
writer.WriteEnumValue<global::Bones.Api.Client.AutoGen.Models.SelectionType>("selectionType", SelectionType);
60+
}
61+
}
62+
}
63+
#nullable restore
64+
#pragma warning restore CS0618
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// <auto-generated/>
2+
using System.Runtime.Serialization;
3+
using System;
4+
namespace Bones.Api.Client.AutoGen.Models
5+
{
6+
[global::System.CodeDom.Compiler.GeneratedCode("ReQuesty", "0.0.0")]
7+
#pragma warning disable CS1591
8+
public enum SelectionType
9+
#pragma warning restore CS1591
10+
{
11+
[EnumMember(Value = "single")]
12+
#pragma warning disable CS1591
13+
Single,
14+
#pragma warning restore CS1591
15+
[EnumMember(Value = "multiple")]
16+
#pragma warning disable CS1591
17+
Multiple,
18+
#pragma warning restore CS1591
19+
}
20+
}

Core/Bones.Api.Client/AutoGen/Project/Item/Layouts/Item/WithLayoutItemRequestBuilder.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,15 @@ public WithLayoutItemRequestBuilder(string rawUrl, IRequestAdapter requestAdapte
3737
/// <summary>
3838
/// Creates a new item layout version in a project
3939
/// </summary>
40-
/// <returns>A <see cref="Guid"/></returns>
40+
/// <returns>A <see cref="Stream"/></returns>
4141
/// <param name="body">API request to create a new item layout version</param>
4242
/// <param name="cancellationToken">Cancellation token to use when cancelling requests</param>
4343
/// <param name="requestConfiguration">Configuration for the request such as headers, query parameters, and middleware options.</param>
4444
/// <exception cref="global::Bones.Api.Client.AutoGen.Models.ErrorResponse">When receiving a 400 status code</exception>
4545
/// <exception cref="global::Bones.Api.Client.AutoGen.Models.ErrorResponse">When receiving a 401 status code</exception>
4646
/// <exception cref="global::Bones.Api.Client.AutoGen.Models.ErrorResponse">When receiving a 403 status code</exception>
4747
/// <exception cref="global::Bones.Api.Client.AutoGen.Models.ErrorResponse">When receiving a 500 status code</exception>
48-
public async Task<Guid?> PostAsync(global::Bones.Api.Client.AutoGen.Models.CreateItemLayoutVersionRequest body, Action<RequestConfiguration<DefaultQueryParameters>>? requestConfiguration = default, CancellationToken cancellationToken = default)
48+
public async Task<Stream?> PostAsync(global::Bones.Api.Client.AutoGen.Models.CreateItemLayoutVersionRequest body, Action<RequestConfiguration<DefaultQueryParameters>>? requestConfiguration = default, CancellationToken cancellationToken = default)
4949
{
5050
_ = body ?? throw new ArgumentNullException(nameof(body));
5151
var requestInfo = ToPostRequestInformation(body, requestConfiguration);
@@ -56,7 +56,7 @@ public WithLayoutItemRequestBuilder(string rawUrl, IRequestAdapter requestAdapte
5656
{ "403", global::Bones.Api.Client.AutoGen.Models.ErrorResponse.CreateFromDiscriminatorValue },
5757
{ "500", global::Bones.Api.Client.AutoGen.Models.ErrorResponse.CreateFromDiscriminatorValue },
5858
};
59-
return await RequestAdapter.SendPrimitiveAsync<Guid>(requestInfo, errorMapping, cancellationToken).ConfigureAwait(false);
59+
return await RequestAdapter.SendPrimitiveAsync<Stream>(requestInfo, errorMapping, cancellationToken).ConfigureAwait(false);
6060
}
6161
/// <summary>
6262
/// Creates a new item layout version in a project

Core/Bones.Api.Client/AutoGen/requesty-lock.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"descriptionHash": "68379FCBE38B852A200FB73B560CDF0ED1FDC894CF2A2E45617F279C6EFBD4167B4035AA94FCD9C0969B9291423767953F1BC98C7539B2E38F9BFC899BD6F1F2",
2+
"descriptionHash": "E9FE5BD03DB61D3877FCF8C2FCFB64FED74D73AAF1C9D2C6CF358841C9125E8AC228E75D12B1E3F6EAC6BC5996EDC631D6E5D1DD9D7CD38D721BFD2F8A6045D2",
33
"descriptionLocation": "../../../Services/Bones.Api/OpenApi/swagger.json",
44
"lockFileVersion": "1.0.0",
55
"reQuestyVersion": "0.0.1",

Core/Bones.Database/DbConsts/TableNames.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,14 @@ internal static class Audit
3232

3333
internal static class Item
3434
{
35+
internal const string Items = "Items";
36+
internal const string ItemAssigneeDefinitions = "ItemAssigneeDefinitions";
3537
internal const string ItemFields = "ItemFields";
3638
internal const string ItemFieldListEntries = "ItemFieldListEntries";
3739
internal const string ItemFieldVersions = "ItemFieldVersions";
38-
3940
internal const string ItemLayouts = "ItemLayouts";
4041
internal const string ItemLayoutFieldVersionLinks = "ItemLayoutFieldVersionLinks";
4142
internal const string ItemLayoutVersions = "ItemLayoutVersions";
42-
43-
internal const string Items = "Items";
4443
internal const string ItemValues = "ItemValues";
4544
internal const string ItemVersions = "ItemVersions";
4645
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
using Bones.Database.DbConsts;
2+
using Bones.Shared.Backend.Enums;
3+
using Microsoft.EntityFrameworkCore.Metadata.Builders;
4+
5+
namespace Bones.Database.DbSets.Items;
6+
7+
8+
/// <summary>
9+
/// Model for the Item.ItemAssigneeDefinitions table
10+
/// </summary>
11+
[Table(TableNames.Item.ItemAssigneeDefinitions, Schema = SchemaNames.Item)]
12+
[PrimaryKey(nameof(Id))]
13+
public class ItemAssigneeDefinition
14+
{
15+
/// <summary>
16+
/// Internal ID for the ItemAssigneeDefinition
17+
/// </summary>
18+
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
19+
public Guid Id { get; init; }
20+
21+
/// <summary>
22+
/// The type of assignment for this assignee definition
23+
/// </summary>
24+
public required AssignmentType AssignmentType { get; set; }
25+
26+
/// <summary>
27+
/// The selection type for this assignee definition, single or multiple
28+
/// </summary>
29+
public required SelectionType SelectionType { get; set; }
30+
31+
/// <summary>
32+
/// The name to display for this assignee definition
33+
/// </summary>
34+
public required string Name { get; set; }
35+
36+
/// <summary>
37+
/// The display order for this assignee definition
38+
/// </summary>
39+
public required int OrderIndex { get; set; }
40+
41+
/// <summary>
42+
/// Disables creating of new items using this assignee definition,
43+
/// and when all items using it are deleted it will be removed.
44+
/// </summary>
45+
public bool DeleteFlag { get; set; } = false;
46+
47+
internal static void BuildTable(EntityTypeBuilder<ItemAssigneeDefinition> builder)
48+
{
49+
// Remove deleted items from being included in default queries
50+
builder.HasQueryFilter(x => !x.DeleteFlag);
51+
}
52+
}

0 commit comments

Comments
 (0)