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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
using System;
using System.Collections.Generic;
namespace Timeline.Models
{
public enum TimelineVisibility
{
/// <summary>
/// All people including those without accounts.
/// </summary>
Public,
/// <summary>
/// Only people signed in.
/// </summary>
Register,
/// <summary>
/// Only member.
/// </summary>
Private
}
public static class TimelinePostContentTypes
{
public const string Text = "text";
public const string Image = "image";
}
public interface ITimelinePostContent
{
public string Type { get; }
}
public class TextTimelinePostContent : ITimelinePostContent
{
public TextTimelinePostContent(string text) { Text = text; }
public string Type { get; } = TimelinePostContentTypes.Text;
public string Text { get; set; }
}
public class ImageTimelinePostContent : ITimelinePostContent
{
public ImageTimelinePostContent(string dataTag) { DataTag = dataTag; }
public string Type { get; } = TimelinePostContentTypes.Image;
/// <summary>
/// The tag of the data. The tag of the entry in DataManager. Also the etag (not quoted).
/// </summary>
public string DataTag { get; set; }
}
public class TimelinePostInfo
{
public TimelinePostInfo()
{
}
public TimelinePostInfo(long id, ITimelinePostContent? content, DateTime time, UserInfo? author, DateTime lastUpdated, string timelineName)
{
Id = id;
Content = content;
Time = time;
Author = author;
LastUpdated = lastUpdated;
TimelineName = timelineName;
}
public long Id { get; set; }
public ITimelinePostContent? Content { get; set; }
public bool Deleted => Content == null;
public DateTime Time { get; set; }
public UserInfo? Author { get; set; }
public DateTime LastUpdated { get; set; }
public string TimelineName { get; set; } = default!;
}
public class TimelineInfo
{
public TimelineInfo()
{
}
public TimelineInfo(
string uniqueId,
string name,
DateTime nameLastModified,
string title,
string description,
UserInfo owner,
TimelineVisibility visibility,
List<UserInfo> members,
DateTime createTime,
DateTime lastModified)
{
UniqueId = uniqueId;
Name = name;
NameLastModified = nameLastModified;
Title = title;
Description = description;
Owner = owner;
Visibility = visibility;
Members = members;
CreateTime = createTime;
LastModified = lastModified;
}
public string UniqueId { get; set; } = default!;
public string Name { get; set; } = default!;
public DateTime NameLastModified { get; set; } = default!;
public string Title { get; set; } = default!;
public string Description { get; set; } = default!;
public UserInfo Owner { get; set; } = default!;
public TimelineVisibility Visibility { get; set; }
#pragma warning disable CA2227 // Collection properties should be read only
public List<UserInfo> Members { get; set; } = default!;
#pragma warning restore CA2227 // Collection properties should be read only
public DateTime CreateTime { get; set; } = default!;
public DateTime LastModified { get; set; } = default!;
}
public class TimelineChangePropertyRequest
{
public string? Title { get; set; }
public string? Description { get; set; }
public TimelineVisibility? Visibility { get; set; }
}
}
|