Skip to content

Commit ca02e07

Browse files
committed
2 parents 841674a + fc09db8 commit ca02e07

File tree

14 files changed

+311
-29
lines changed

14 files changed

+311
-29
lines changed

ProgrammersSpot/Business/ProgrammersSport.Models/Users/Contracts/IRegularUser.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,7 @@ public interface IRegularUser
3636
ICollection<Project> Projects { get; set; }
3737

3838
ICollection<Skill> Skills { get; set; }
39+
40+
ICollection<RegularUser> StarredUsers { get; set; }
3941
}
4042
}

ProgrammersSpot/Business/ProgrammersSport.Models/Users/RegularUser.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,15 @@ public class RegularUser : IRegularUser
2020

2121
private ICollection<UploadedImage> uploadedImages;
2222

23+
private ICollection<RegularUser> starredUsers;
24+
2325
public RegularUser()
2426
{
2527
this.reviews = new HashSet<Review>();
2628
this.projects = new HashSet<Project>();
2729
this.skills = new HashSet<Skill>();
2830
this.uploadedImages = new HashSet<UploadedImage>();
31+
this.starredUsers = new HashSet<RegularUser>();
2932
}
3033

3134
[Key, ForeignKey("User")]
@@ -106,5 +109,17 @@ public virtual ICollection<UploadedImage> UploadedImages
106109
this.uploadedImages = value;
107110
}
108111
}
112+
113+
public virtual ICollection<RegularUser> StarredUsers
114+
{
115+
get
116+
{
117+
return this.starredUsers;
118+
}
119+
set
120+
{
121+
this.starredUsers = value;
122+
}
123+
}
109124
}
110125
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using System;
2+
3+
namespace ProgrammersSpot.Business.MVP.Args
4+
{
5+
public class StarProgrammerEventArgs : EventArgs
6+
{
7+
public string LoggedUserId { get; set; }
8+
9+
public string StarredUserId { get; set; }
10+
}
11+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
using Bytes2you.Validation;
2+
using ProgrammersSpot.Business.MVP.Args;
3+
using ProgrammersSpot.Business.MVP.Views;
4+
using ProgrammersSpot.Business.Services.Contracts;
5+
using WebFormsMvp;
6+
7+
namespace ProgrammersSpot.Business.MVP.Presenters
8+
{
9+
public class ProgrammerDetailsPresenter : Presenter<IProgrammerDetailsView>
10+
{
11+
private readonly IUserService userService;
12+
13+
public ProgrammerDetailsPresenter(IProgrammerDetailsView view, IUserService userService)
14+
: base(view)
15+
{
16+
Guard.WhenArgument(userService, "userService").IsNull().Throw();
17+
18+
this.userService = userService;
19+
20+
view.EventGetProgrammer += this.OnGetProgrammer;
21+
view.EventGetLoggedInUser += this.OnGetLoggedInUser;
22+
view.ProgrammerStarred += this.OnProgrammerStarred;
23+
view.ProgrammerUnstarred += this.OnProgrammerUnstarred;
24+
}
25+
26+
private void OnProgrammerUnstarred(object sender, StarProgrammerEventArgs e)
27+
{
28+
this.userService.UnstarUser(e.LoggedUserId, e.StarredUserId);
29+
}
30+
31+
private void OnProgrammerStarred(object sender, StarProgrammerEventArgs e)
32+
{
33+
this.userService.StarUser(e.LoggedUserId, e.StarredUserId);
34+
}
35+
36+
private void OnGetProgrammer(object sender, FindUserEventArgs e)
37+
{
38+
this.View.Model.Programmer = this.userService.GetRegularUserById(e.Id);
39+
}
40+
41+
private void OnGetLoggedInUser(object sender, FindUserEventArgs e)
42+
{
43+
this.View.Model.LoggedInUser = this.userService.GetRegularUserById(e.Id);
44+
}
45+
}
46+
}

ProgrammersSpot/Business/ProgrammersSpot.Business.MVP/ProgrammersSpot.Business.MVP.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,13 +106,15 @@
106106
<Compile Include="Args\OwinCtxEventArgs.cs" />
107107
<Compile Include="Args\RegistrationEventArgs.cs" />
108108
<Compile Include="Args\SearchEventArgs.cs" />
109+
<Compile Include="Args\StarProgrammerEventArgs.cs" />
109110
<Compile Include="Args\UploadImageEventArgs.cs" />
110111
<Compile Include="Args\UploadProfilePicEventArgs.cs" />
111112
<Compile Include="Args\UserUploadImageEventArgs.cs" />
112113
<Compile Include="Presenters\FirmsPresenter.cs" />
113114
<Compile Include="Presenters\ExternalRegistrationPresenter.cs" />
114115
<Compile Include="Presenters\ImageDetailsPresenter.cs" />
115116
<Compile Include="Presenters\ManageUserProfilePresenter.cs" />
117+
<Compile Include="Presenters\ProgrammerDetailsPresenter.cs" />
116118
<Compile Include="Presenters\ProgrammersPresenter.cs" />
117119
<Compile Include="Presenters\RegistrationPresenter.cs" />
118120
<Compile Include="Presenters\TakeABreakPresenter.cs" />
@@ -125,6 +127,7 @@
125127
<Compile Include="ViewModels\ExternalRegistrationViewModel.cs" />
126128
<Compile Include="ViewModels\ImageDetailsViewModel.cs" />
127129
<Compile Include="ViewModels\ManageUserProfileViewModel.cs" />
130+
<Compile Include="ViewModels\ProgrammerDetailsViewModel.cs" />
128131
<Compile Include="ViewModels\ProgrammersViewModel.cs" />
129132
<Compile Include="ViewModels\RegistrationViewModel.cs" />
130133
<Compile Include="ViewModels\TakeABreakViewModel.cs" />
@@ -134,6 +137,7 @@
134137
<Compile Include="Views\IImageDetailsView.cs" />
135138
<Compile Include="ViewModels\UserProfileViewModel.cs" />
136139
<Compile Include="Views\IManageUserProfileView.cs" />
140+
<Compile Include="Views\IProgrammerDetailsView.cs" />
137141
<Compile Include="Views\IProgrammersView.cs" />
138142
<Compile Include="Views\IRegistrationView.cs" />
139143
<Compile Include="Views\ITakeABreakView.cs" />
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using ProgrammersSpot.Business.Models.Users;
2+
3+
namespace ProgrammersSpot.Business.MVP.ViewModels
4+
{
5+
public class ProgrammerDetailsViewModel
6+
{
7+
public RegularUser Programmer { get; set; }
8+
9+
public RegularUser LoggedInUser { get; set; }
10+
}
11+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using ProgrammersSpot.Business.MVP.Args;
2+
using ProgrammersSpot.Business.MVP.ViewModels;
3+
using System;
4+
using WebFormsMvp;
5+
6+
namespace ProgrammersSpot.Business.MVP.Views
7+
{
8+
public interface IProgrammerDetailsView : IView<ProgrammerDetailsViewModel>
9+
{
10+
event EventHandler<FindUserEventArgs> EventGetProgrammer;
11+
12+
event EventHandler<FindUserEventArgs> EventGetLoggedInUser;
13+
14+
event EventHandler<StarProgrammerEventArgs> ProgrammerStarred;
15+
16+
event EventHandler<StarProgrammerEventArgs> ProgrammerUnstarred;
17+
}
18+
}

ProgrammersSpot/Business/ProgrammersSpot.Business.Services/Contracts/IUserService.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,9 @@ public interface IUserService
2424
void UpdateRegularUserFacebookProfile(string id, string facebook);
2525

2626
void UpdateRegularUserGitHubProfile(string id, string gitHub);
27+
28+
void StarUser(string loggedUserId, string starredUserId);
29+
30+
void UnstarUser(string loggedUserId, string starredUserId);
2731
}
2832
}

ProgrammersSpot/Business/ProgrammersSpot.Business.Services/UserService.cs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,5 +116,37 @@ public void AddProjectToRegularUser(string userId, Project project)
116116
unitOfWork.SaveChanges();
117117
}
118118
}
119+
120+
public void StarUser(string loggedUserId, string starredUserId)
121+
{
122+
var loggedUser = this.GetRegularUserById(loggedUserId);
123+
var starredUser = this.GetRegularUserById(starredUserId);
124+
125+
starredUser.StarsCount++;
126+
loggedUser.StarredUsers.Add(starredUser);
127+
128+
using (var unitOfWork = this.unitOfWork)
129+
{
130+
this.regularUsersRepo.Update(starredUser);
131+
this.regularUsersRepo.Update(loggedUser);
132+
unitOfWork.SaveChanges();
133+
}
134+
}
135+
136+
public void UnstarUser(string loggedUserId, string starredUserId)
137+
{
138+
var loggedUser = this.GetRegularUserById(loggedUserId);
139+
var starredUser = this.GetRegularUserById(starredUserId);
140+
141+
starredUser.StarsCount--;
142+
loggedUser.StarredUsers.Remove(starredUser);
143+
144+
using (var unitOfWork = this.unitOfWork)
145+
{
146+
this.regularUsersRepo.Update(starredUser);
147+
this.regularUsersRepo.Update(loggedUser);
148+
unitOfWork.SaveChanges();
149+
}
150+
}
119151
}
120152
}

ProgrammersSpot/Clients/ProgrammersSpot.WebClient/Content/profiles-list.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@
117117
}
118118

119119
.companies-group .company h5 small {
120-
color: #008fd5;
120+
color: #63C1AE;
121121
font-weight: bold;
122122
font-size: 0.8em;
123123
font-style: italic;

0 commit comments

Comments
 (0)