-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUser.cpp
More file actions
95 lines (82 loc) · 2.09 KB
/
User.cpp
File metadata and controls
95 lines (82 loc) · 2.09 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
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
//
// Created by layan on 5/19/2023.
//
#include "UserAndGroup.h"
std::shared_ptr<GenreStats> User::getUserGenreViews()
{
return user_genre_views;
}
void User::updateUserGenreViews(std::shared_ptr<GenreStats> group_genre_views, bool sign)
{
user_genre_views->mergeGenreStats(group_genre_views, sign);
}
/*std::shared_ptr<Group> User::getUserGroup()
{
return user_group;
}*/
std::weak_ptr<Group> User::getUserGroup()
{
return user_group;
}
/*void User::setUserGroup(std::shared_ptr<Group> new_group)
{
//should free old pointer or something? ..
if(new_group == nullptr)
{
user_group = nullptr;
return;
}
user_group = new_group;
}*/
void User::setUserGroup(std::weak_ptr<Group> new_group)
{
//should free old pointer or something? ..
user_group = new_group;
}
bool User::isVip()
{
return vip;
}
//returns the field inGroup
bool User::isInGroup()
{
return inGroup;
}
//changes the field inGroup
void User::setInGroup(bool in_group)
{
inGroup = in_group;
}
std::shared_ptr<GenreStats> User::calcActualUserStats()
{
//if(!user_group) return user_genre_views;
if(!inGroup) return user_genre_views;
std::shared_ptr<GenreStats> actual_stats = std::make_shared<GenreStats>();
actual_stats->mergeGenreStats(user_genre_views, true);
actual_stats->mergeGenreStats(user_group.lock()->getExclusiveGroupViews(), true);
return actual_stats;
}
std::shared_ptr<GenreStats> User::getExclusiveWhenJoined()
{
return group_exclusive_views_when_joined;
}
void User::incUserGenreViews(Genre genre)
{
switch(genre)
{
case Genre::DRAMA:
user_genre_views->incDramaStats();
break;
case Genre::ACTION:
user_genre_views->incActionStats();
break;
case Genre::COMEDY:
user_genre_views->incComedyStats();
break;
case Genre::FANTASY:
user_genre_views->incFantasyStats();
break;
case Genre::NONE:
break;
}
}