Skip to content
This repository was archived by the owner on Apr 21, 2023. It is now read-only.

Commit 434c8a7

Browse files
author
envyvox
committed
Use TimeSpans & background jobs for growing seeds.
1 parent d04f0e1 commit 434c8a7

39 files changed

+4367
-1555
lines changed

Disfarm.Data/Entities/Seed.cs

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,37 @@
66

77
namespace Disfarm.Data.Entities
88
{
9-
public class Seed : IUniqueIdentifiedEntity, INamedEntity, IPricedEntity, ICreatedEntity, IUpdatedEntity
10-
{
11-
public Guid Id { get; set; }
12-
public string Name { get; set; }
13-
public Season Season { get; set; }
14-
public uint GrowthDays { get; set; }
15-
public uint ReGrowthDays { get; set; }
16-
public bool IsMultiply { get; set; }
17-
public uint Price { get; set; }
18-
public DateTimeOffset CreatedAt { get; set; }
19-
public DateTimeOffset UpdatedAt { get; set; }
9+
public class Seed : IUniqueIdentifiedEntity, INamedEntity, IPricedEntity, ICreatedEntity, IUpdatedEntity
10+
{
11+
public Guid Id { get; set; }
12+
public string Name { get; set; }
13+
public Season Season { get; set; }
14+
public TimeSpan Growth { get; set; }
15+
public TimeSpan? ReGrowth { get; set; }
16+
public bool IsMultiply { get; set; }
17+
public uint Price { get; set; }
18+
public DateTimeOffset CreatedAt { get; set; }
19+
public DateTimeOffset UpdatedAt { get; set; }
2020

21-
public Crop Crop { get; set; }
22-
}
21+
public Crop Crop { get; set; }
22+
}
2323

24-
public class SeedConfiguration : IEntityTypeConfiguration<Seed>
25-
{
26-
public void Configure(EntityTypeBuilder<Seed> builder)
27-
{
28-
builder.HasKey(x => x.Id);
29-
builder.HasIndex(x => x.Name).IsUnique();
24+
public class SeedConfiguration : IEntityTypeConfiguration<Seed>
25+
{
26+
public void Configure(EntityTypeBuilder<Seed> builder)
27+
{
28+
builder.HasKey(x => x.Id);
29+
builder.HasIndex(x => x.Name).IsUnique();
3030

31-
builder.Property(x => x.Id).IsRequired().ValueGeneratedNever();
32-
builder.Property(x => x.Name).IsRequired();
33-
builder.Property(x => x.Season).IsRequired();
34-
builder.Property(x => x.GrowthDays).IsRequired();
35-
builder.Property(x => x.ReGrowthDays).IsRequired();
36-
builder.Property(x => x.IsMultiply).IsRequired();
37-
builder.Property(x => x.Price).IsRequired();
38-
builder.Property(x => x.CreatedAt).IsRequired();
39-
builder.Property(x => x.UpdatedAt).IsRequired();
40-
}
41-
}
31+
builder.Property(x => x.Id).IsRequired().ValueGeneratedNever();
32+
builder.Property(x => x.Name).IsRequired();
33+
builder.Property(x => x.Season).IsRequired();
34+
builder.Property(x => x.Growth).IsRequired();
35+
builder.Property(x => x.ReGrowth);
36+
builder.Property(x => x.IsMultiply).IsRequired();
37+
builder.Property(x => x.Price).IsRequired();
38+
builder.Property(x => x.CreatedAt).IsRequired();
39+
builder.Property(x => x.UpdatedAt).IsRequired();
40+
}
41+
}
4242
}

Disfarm.Data/Entities/User/UserFarm.cs

Lines changed: 40 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -6,47 +6,49 @@
66

77
namespace Disfarm.Data.Entities.User
88
{
9-
public class UserFarm : IUniqueIdentifiedEntity, ICreatedEntity, IUpdatedEntity
10-
{
11-
public Guid Id { get; set; }
12-
public long UserId { get; set; }
13-
public uint Number { get; set; }
14-
public FieldState State { get; set; }
15-
public Guid? SeedId { get; set; }
16-
public uint Progress { get; set; }
17-
public bool InReGrowth { get; set; }
18-
public DateTimeOffset CreatedAt { get; set; }
19-
public DateTimeOffset UpdatedAt { get; set; }
9+
public class UserFarm : IUniqueIdentifiedEntity, ICreatedEntity, IUpdatedEntity
10+
{
11+
public Guid Id { get; set; }
12+
public long UserId { get; set; }
13+
public uint Number { get; set; }
14+
public FieldState State { get; set; }
15+
public Guid? SeedId { get; set; }
16+
public bool InReGrowth { get; set; }
17+
public TimeSpan? BeenGrowingFor { get; set; }
18+
public DateTimeOffset? CompleteAt { get; set; }
19+
public DateTimeOffset CreatedAt { get; set; }
20+
public DateTimeOffset UpdatedAt { get; set; }
2021

21-
public User User { get; set; }
22-
public Seed Seed { get; set; }
23-
}
22+
public User User { get; set; }
23+
public Seed Seed { get; set; }
24+
}
2425

25-
public class UserFarmConfiguration : IEntityTypeConfiguration<UserFarm>
26-
{
27-
public void Configure(EntityTypeBuilder<UserFarm> builder)
28-
{
29-
builder.HasKey(x => x.Id);
30-
builder.HasIndex(x => new { x.UserId, x.Number }).IsUnique();
26+
public class UserFarmConfiguration : IEntityTypeConfiguration<UserFarm>
27+
{
28+
public void Configure(EntityTypeBuilder<UserFarm> builder)
29+
{
30+
builder.HasKey(x => x.Id);
31+
builder.HasIndex(x => new { x.UserId, x.Number }).IsUnique();
3132

32-
builder.Property(x => x.Id).IsRequired().ValueGeneratedNever();
33-
builder.Property(x => x.Number).IsRequired();
34-
builder.Property(x => x.State).IsRequired();
35-
builder.Property(x => x.SeedId);
36-
builder.Property(x => x.Progress).IsRequired();
37-
builder.Property(x => x.InReGrowth).IsRequired();
38-
builder.Property(x => x.CreatedAt).IsRequired();
39-
builder.Property(x => x.UpdatedAt).IsRequired();
33+
builder.Property(x => x.Id).IsRequired().ValueGeneratedNever();
34+
builder.Property(x => x.Number).IsRequired();
35+
builder.Property(x => x.State).IsRequired();
36+
builder.Property(x => x.SeedId);
37+
builder.Property(x => x.InReGrowth).IsRequired();
38+
builder.Property(x => x.BeenGrowingFor);
39+
builder.Property(x => x.CompleteAt);
40+
builder.Property(x => x.CreatedAt).IsRequired();
41+
builder.Property(x => x.UpdatedAt).IsRequired();
4042

41-
builder
42-
.HasOne(x => x.User)
43-
.WithMany()
44-
.HasForeignKey(x => x.UserId);
43+
builder
44+
.HasOne(x => x.User)
45+
.WithMany()
46+
.HasForeignKey(x => x.UserId);
4547

46-
builder
47-
.HasOne(x => x.Seed)
48-
.WithMany()
49-
.HasForeignKey(x => x.SeedId);
50-
}
51-
}
48+
builder
49+
.HasOne(x => x.Seed)
50+
.WithMany()
51+
.HasForeignKey(x => x.SeedId);
52+
}
53+
}
5254
}

Disfarm.Data/Enums/Response.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1172,14 +1172,14 @@ private static string Localize(this Response response, Language language)
11721172
},
11731173
Response.UserFarmFieldPlantedTitle => language switch
11741174
{
1175-
Language.English => "{0} {1}, will growth {2}",
1176-
Language.Russian => "{0} {1}, вырастет {2}",
1175+
Language.English => "{0} {1}",
1176+
Language.Russian => "{0} {1}",
11771177
_ => throw new ArgumentOutOfRangeException(nameof(language), language, null)
11781178
},
11791179
Response.UserFarmFieldPlantedDesc => language switch
11801180
{
1181-
Language.English => "Don't forget to water today",
1182-
Language.Russian => "Не забудь сегодня полить",
1181+
Language.English => "Needs to be watered for crop growth",
1182+
Language.Russian => "Необходимо полить для роста урожая",
11831183
_ => throw new ArgumentOutOfRangeException(nameof(language), language, null)
11841184
},
11851185
Response.UserFarmFieldWateredTitle => language switch

0 commit comments

Comments
 (0)