Skip to content

Commit aeb152f

Browse files
authored
Merge pull request #101 from iwedaz/feat/dateonly_support
Add DateOnly, TimeOnly and TimeSpan support
2 parents 6748b38 + 576268d commit aeb152f

8 files changed

Lines changed: 53 additions & 17 deletions

File tree

src/DotNetEd.CoreAdmin.DemoAppDotNet6/Models/TestDbContext.cs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,27 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)
3131
var seedData = new List<TestEntity>();
3232
foreach(var i in Enumerable.Range(0, 2000))
3333
{
34-
seedData.Add(new TestEntity() { Id = Guid.NewGuid(), Name = "Test entity " + i, Title = "Test title " + i, Price = new Random().NextDouble() });
34+
seedData.Add(new TestEntity()
35+
{
36+
Id = Guid.NewGuid(),
37+
Name = "Test entity " + i,
38+
Title = "Test title " + i,
39+
DateTime = DateTime.Now,
40+
DateTimeOffset = DateTimeOffset.UtcNow,
41+
Date = DateTime.Now,
42+
DateOnly = DateOnly.FromDateTime(DateTime.Now),
43+
TimeOnly = TimeOnly.FromDateTime(DateTime.Now),
44+
TimeSpan = new TimeSpan(3, 2, 1, 44, 55555),
45+
Price = Random.Shared.NextDouble()
46+
});
3547
}
3648

3749
modelBuilder.Entity<TestEntity>().HasData(seedData);
3850

3951
var seedDataImages = new List<TestEntityWithImage>();
4052

4153
seedDataImages.Add(new TestEntityWithImage() { Id = Guid.NewGuid(), Name = "Handsome person", Image = System.IO.File.ReadAllBytes("DemoAssets/ed-100.png") });
42-
54+
4355
modelBuilder.Entity<TestEntityWithImage>().HasData(seedDataImages);
4456

4557
var seedDataChildren = new List<TestChildEntity>();
@@ -53,7 +65,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)
5365
seedDataParents.Add(new TestParentEntity() { ParentId = Guid.NewGuid(), ChildId = seedDataChildren.First().Id });
5466
modelBuilder.Entity<TestParentEntity>().HasData(seedDataParents);
5567

56-
68+
5769
}
5870
}
5971
}

src/DotNetEd.CoreAdmin.DemoAppDotNet6/Models/TestEntity.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,17 @@ public class TestEntity
1212
public Guid Id { get; set; }
1313

1414
[Required]
15-
15+
1616
[MaxLength(100)]
1717
public string? Name { get; set; }
1818

1919
[Required]
20-
20+
2121
[MaxLength(100)]
2222
public string? Title { get; set; }
2323

2424
[DataType(DataType.MultilineText)]
25-
25+
2626
[MaxLength(300)]
2727
public string? Description { get; set; }
2828

@@ -40,6 +40,10 @@ public class TestEntity
4040
[DataType(DataType.Date)]
4141
public DateTime Date { get; set; }
4242

43+
public DateOnly DateOnly { get; set; }
44+
public TimeOnly TimeOnly { get; set; }
45+
public TimeSpan TimeSpan { get; set; }
46+
4347
public DateTimeOffset DateTimeOffset { get; set; }
4448

4549
public bool IsUseful { get; set; }
Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,28 @@
11
@model object
22

3-
@if (Model is DateTime?)
3+
@switch (Model)
44
{
5-
var date = (DateTime?)Model;
6-
@Html.TextBox("", (date.HasValue ? date.Value.ToString("yyyy-MM-dd") : string.Empty), new { type = "date", @class = "datePicker form-control" })
7-
}
5+
case DateTime dateTimeValue:
6+
{
7+
@Html.TextBox("", dateTimeValue.ToString("yyyy-MM-dd"), new { type = "date", @class = "datePicker form-control" });
8+
break;
9+
}
810

9-
@if (Model is DateTimeOffset?)
10-
{
11-
var date = (DateTimeOffset?)Model;
12-
@Html.TextBox("", (date.HasValue ? date.Value.ToString("yyyy-MM-dd") : string.Empty), new { type = "date", @class = "datePicker form-control" })
13-
}
11+
case DateTimeOffset dateTimeOffsetValue:
12+
{
13+
@Html.TextBox("", dateTimeOffsetValue.ToString("yyyy-MM-dd"), new { type = "date", @class = "datePicker form-control" });
14+
break;
15+
}
1416

17+
case DateOnly dateOnlyValue:
18+
{
19+
@Html.TextBox("", dateOnlyValue.ToString("yyyy-MM-dd"), new { type = "date", @class = "datePicker form-control" });
20+
break;
21+
}
22+
23+
default:
24+
{
25+
@Html.TextBox("", null, new { type = "date", @class = "datePicker form-control" })
26+
break;
27+
}
28+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
@model DateOnly?
2+
@Html.TextBox("", Model?.ToString("yyyy-MM-dd"), new { type = "date", @class = "datePicker form-control" })
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
@model DateTime?
2-
@Html.TextBox("", (Model.HasValue ? Model.Value.ToString("s") : string.Empty), new { type = "datetime-local", @class = "datePicker form-control" })
2+
@Html.TextBox("", Model?.ToLocalTime().ToString("yyyy-MM-ddTHH:mm:ss.fff"), new { type = "datetime-local", @class = "datePicker form-control" })
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
@model DateTimeOffset?
2-
@Html.TextBox("", (Model.HasValue ? Model.Value.ToString("s") : string.Empty), new { type = "datetime-local", @class = "datePicker form-control" })
2+
@Html.TextBox("", Model?.ToLocalTime().ToString("yyyy-MM-ddTHH:mm:ss.fff"), new { type = "datetime-local", @class = "datePicker form-control" })
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
@model TimeOnly?
2+
@Html.TextBox("", Model?.ToString("HH:mm:ss.fff"), new { type = "time", @class = "form-control" })
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
@model TimeSpan?
2+
@Html.TextBox("", Model?.Ticks, new { type = "number", @class = "text-box single-line form-control number-form-control", max = Int64.MaxValue, min = Int64.MinValue })

0 commit comments

Comments
 (0)