BacketGrain.cs
2.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
using Backet.Api.Domain.Event;
using Backet.Api.Grains.Abstraction;
using Orleans.Providers;
using Pole.Core.Grains;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace Backet.Api.Grains
{
[StorageProvider(ProviderName = "ef")]
public class BacketGrain : PoleGrain<Backet.Api.Domain.AggregatesModel.BacketAggregate.Backet>, IBacketGrain
{
public async Task<bool> AddBacket(BacketDto backetDto)
{
//if (State != null) return false;
//Backet.Api.Domain.AggregatesModel.BacketAggregate.Backet backet = new Backet.Api.Domain.AggregatesModel.BacketAggregate.Backet
//{
// Id = backetDto.Id,
// UserId = backetDto.UserId
//};
//if (backetDto.BacketItems == null || backetDto.BacketItems.Count == 0) return false;
//backetDto.BacketItems.ForEach(item =>
//{
// backet.AddBacketItem(item.ProductId, item.ProductName, item.Price);
//});
//Add(backet);
//backet.AddDomainEvent(new BacketCreatedEvent() { BacketId = backet.Id });
//await WriteStateAsync();
return true;
}
public async Task<bool> AddBacketItem(string productId, string productName, long price)
{
if (State == null) return false;
State.AddBacketItem(productId, productName, price);
Update(State);
await WriteStateAsync();
return true;
}
public async Task<bool> RemoveFirstItem()
{
State.RemoveFirstItem();
Update(State);
await WriteStateAsync();
return true;
}
public async Task<bool> UpdateBacket(string userId)
{
if (State == null) return false;
State.UserId = userId;
State.TotalPrice++;
State.ModifyItemProductId(userId);
Update(State);
await WriteStateAsync();
return true;
}
}
}