ScientificReport
PatentLicenseActivityService.cs
Go to the documentation of this file.
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Security.Claims;
12 
13 namespace ScientificReport.BLL.Services
14 {
16  {
17  private readonly PatentLicenseActivityRepository _patentLicenseActivityRepository;
18  private readonly UserProfileRepository _userProfileRepository;
19  private readonly DepartmentRepository _departmentRepository;
20 
22  {
23  _patentLicenseActivityRepository = new PatentLicenseActivityRepository(context);
24  _userProfileRepository = new UserProfileRepository(context);
25  _departmentRepository = new DepartmentRepository(context);
26  }
27 
28  public virtual IEnumerable<PatentLicenseActivity> GetAll()
29  {
30  return _patentLicenseActivityRepository.All();
31  }
32 
33  public virtual IEnumerable<PatentLicenseActivity> GetAllWhere(Func<PatentLicenseActivity, bool> predicate)
34  {
35  return GetAll().Where(predicate);
36  }
37 
38  public virtual IEnumerable<PatentLicenseActivity> GetItemsByRole(ClaimsPrincipal userClaims)
39  {
40  IEnumerable<PatentLicenseActivity> items;
41  if (UserHelpers.IsAdmin(userClaims))
42  {
43  items = _patentLicenseActivityRepository.All();
44  }
45  else if (UserHelpers.IsHeadOfDepartment(userClaims))
46  {
47  var department = _departmentRepository.Get(r => r.Head.UserName == userClaims.Identity.Name);
48  items = _patentLicenseActivityRepository.AllWhere(
49  a => a.AuthorsPatentLicenseActivities.Any(u => department.Staff.Contains(u.Author)) ||
50  a.ApplicantsPatentLicenseActivities.Any(u => department.Staff.Contains(u.Applicant))
51  );
52  }
53  else
54  {
55  var user = _userProfileRepository.Get(u => u.UserName == userClaims.Identity.Name);
56  items = _patentLicenseActivityRepository.AllWhere(
57  a => a.AuthorsPatentLicenseActivities.Any(u => u.Author.Id == user.Id) ||
58  a.ApplicantsPatentLicenseActivities.Any(u => u.Applicant.Id == user.Id)
59  );
60  }
61 
62  return items;
63  }
64 
65  public virtual IEnumerable<PatentLicenseActivity> GetPageByRole(int page, int count, ClaimsPrincipal userClaims)
66  {
67  return GetItemsByRole(userClaims).Skip((page - 1) * count).Take(count).ToList();
68  }
69 
70  public virtual int GetCountByRole(ClaimsPrincipal userClaims)
71  {
72  return GetItemsByRole(userClaims).Count();
73  }
74 
75  public virtual PatentLicenseActivity GetById(Guid id)
76  {
77  return _patentLicenseActivityRepository.Get(id);
78  }
79 
80  public virtual PatentLicenseActivity Get(Func<PatentLicenseActivity, bool> predicate)
81  {
82  return _patentLicenseActivityRepository.Get(predicate);
83  }
84 
85  public virtual void CreateItem(PatentLicenseActivityModel model)
86  {
87  _patentLicenseActivityRepository.Create(new PatentLicenseActivity
88  {
89  Name = model.Name,
90  Type = model.Type,
91  Number = model.Number,
92  Date = model.DateTime
93  });
94  }
95 
96  public virtual void UpdateItem(PatentLicenseActivityEditModel model)
97  {
98  var patentLicenseActivity = GetById(model.Id);
99  if (patentLicenseActivity == null)
100  {
101  return;
102  }
103 
104  patentLicenseActivity.Name = model.Name;
105  if (patentLicenseActivity.Type != model.Type)
106  {
107  if (model.Type == PatentLicenseActivity.Types.Patent)
108  {
109  var users = patentLicenseActivity.ApplicantsPatentLicenseActivities.Select(u => u.Applicant).ToList();
110  for (var i = 0; i < users.Count; i++)
111  {
112  RemoveApplicant(patentLicenseActivity.Id, users[i]);
113  AddAuthor(patentLicenseActivity, users[i]);
114  }
115  }
116  else
117  {
118  var users = patentLicenseActivity.AuthorsPatentLicenseActivities.Select(u => u.Author).ToList();
119  for (var i = 0; i < users.Count; i++)
120  {
121  RemoveAuthor(patentLicenseActivity.Id, users[i]);
122  AddApplicant(patentLicenseActivity, users[i]);
123  }
124  }
125 
126  patentLicenseActivity.Type = model.Type;
127  }
128  patentLicenseActivity.Number = model.Number;
129  patentLicenseActivity.Date = model.DateTime;
130  _patentLicenseActivityRepository.Update(patentLicenseActivity);
131  }
132 
133  public virtual void DeleteById(Guid id)
134  {
135  _patentLicenseActivityRepository.Delete(id);
136  }
137 
138  public virtual bool Exists(Guid id)
139  {
140  return _patentLicenseActivityRepository.Get(id) != null;
141  }
142 
143  public virtual void AddAuthor(PatentLicenseActivity patentLicenseActivity, UserProfile user)
144  {
145  if (patentLicenseActivity == null)
146  {
147  return;
148  }
149 
151  {
152  Author = user,
153  AuthorId = user.Id,
154  PatentLicenseActivity = patentLicenseActivity,
155  PatentLicenseActivityId = patentLicenseActivity.Id
156  });
157  _patentLicenseActivityRepository.Update(patentLicenseActivity);
158  }
159 
160  public virtual void RemoveAuthor(Guid id, UserProfile user)
161  {
162  var patentLicenseActivity = _patentLicenseActivityRepository.Get(id);
163  if (patentLicenseActivity == null)
164  {
165  return;
166  }
167 
168  patentLicenseActivity.AuthorsPatentLicenseActivities.Remove(patentLicenseActivity.AuthorsPatentLicenseActivities.First(u => u.Author.Id == user.Id));
169  _patentLicenseActivityRepository.Update(patentLicenseActivity);
170  }
171 
172  public virtual void AddApplicant(PatentLicenseActivity patentLicenseActivity, UserProfile user)
173  {
174  if (patentLicenseActivity == null)
175  {
176  return;
177  }
178 
180  {
181  Applicant = user,
182  ApplicantId = user.Id,
183  PatentLicenseActivity = patentLicenseActivity,
184  PatentLicenseActivityId = patentLicenseActivity.Id
185  });
186  _patentLicenseActivityRepository.Update(patentLicenseActivity);
187  }
188 
189  public virtual void RemoveApplicant(Guid id, UserProfile user)
190  {
191  var patentLicenseActivity = _patentLicenseActivityRepository.Get(id);
192  if (patentLicenseActivity == null)
193  {
194  return;
195  }
196 
197  patentLicenseActivity.ApplicantsPatentLicenseActivities.Remove(patentLicenseActivity.ApplicantsPatentLicenseActivities.First(u => u.Applicant.Id == user.Id));
198  _patentLicenseActivityRepository.Update(patentLicenseActivity);
199  }
200 
201  public virtual void AddCoauthor(Guid id, string coauthor)
202  {
203  var patentLicenseActivity = _patentLicenseActivityRepository.Get(id);
204  if (patentLicenseActivity == null)
205  {
206  return;
207  }
208 
209  patentLicenseActivity.CoauthorsPatentLicenseActivities.Add(new CoauthorsPatentLicenseActivities
210  {
211  Coauthor = coauthor,
212  PatentLicenseActivity = patentLicenseActivity,
213  PatentLicenseActivityId = patentLicenseActivity.Id
214  });
215  _patentLicenseActivityRepository.Update(patentLicenseActivity);
216  }
217 
218  public virtual void RemoveCoauthor(Guid id, string coauthor)
219  {
220  var patentLicenseActivity = _patentLicenseActivityRepository.Get(id);
221  if (patentLicenseActivity == null)
222  {
223  return;
224  }
225 
226  patentLicenseActivity.CoauthorsPatentLicenseActivities.Remove(patentLicenseActivity.CoauthorsPatentLicenseActivities.First(u => u.Coauthor == coauthor));
227  _patentLicenseActivityRepository.Update(patentLicenseActivity);
228  }
229 
230  public virtual void AddCoApplicant(Guid id, string coApplicant)
231  {
232  var patentLicenseActivity = _patentLicenseActivityRepository.Get(id);
233  if (patentLicenseActivity == null)
234  {
235  return;
236  }
237 
238  patentLicenseActivity.CoApplicantsPatentLicenseActivities.Add(new CoApplicantsPatentLicenseActivities
239  {
240  CoApplicant = coApplicant,
241  PatentLicenseActivity = patentLicenseActivity,
242  PatentLicenseActivityId = patentLicenseActivity.Id
243  });
244  _patentLicenseActivityRepository.Update(patentLicenseActivity);
245  }
246 
247  public virtual void RemoveCoApplicant(Guid id, string coApplicant)
248  {
249  var patentLicenseActivity = _patentLicenseActivityRepository.Get(id);
250  if (patentLicenseActivity == null)
251  {
252  return;
253  }
254 
255  patentLicenseActivity.CoApplicantsPatentLicenseActivities.Remove(patentLicenseActivity.CoApplicantsPatentLicenseActivities.First(u => u.CoApplicant == coApplicant));
256  _patentLicenseActivityRepository.Update(patentLicenseActivity);
257  }
258 
259  public virtual IEnumerable<UserProfile> GetAuthors(Guid id)
260  {
261  var patentLicenseActivity = _patentLicenseActivityRepository.Get(id);
262  IEnumerable<UserProfile> authors = null;
263  if (patentLicenseActivity != null)
264  {
265  authors = patentLicenseActivity.AuthorsPatentLicenseActivities.Select(u => u.Author);
266  }
267 
268  return authors;
269  }
270 
271  public virtual IEnumerable<UserProfile> GetApplicants(Guid id)
272  {
273  var patentLicenseActivity = _patentLicenseActivityRepository.Get(id);
274  IEnumerable<UserProfile> applicants = null;
275  if (patentLicenseActivity != null)
276  {
277  applicants = patentLicenseActivity.ApplicantsPatentLicenseActivities.Select(u => u.Applicant);
278  }
279 
280  return applicants;
281  }
282 
283  public virtual IEnumerable<string> GetCoauthors(Guid id)
284  {
285  var patentLicenseActivity = _patentLicenseActivityRepository.Get(id);
286  IEnumerable<string> coauthors = null;
287  if (patentLicenseActivity != null)
288  {
289  coauthors = patentLicenseActivity.CoauthorsPatentLicenseActivities.Select(u => u.Coauthor);
290  }
291 
292  return coauthors;
293  }
294 
295  public virtual IEnumerable<string> GetCoApplicants(Guid id)
296  {
297  var patentLicenseActivity = _patentLicenseActivityRepository.Get(id);
298  IEnumerable<string> coApplicants = null;
299  if (patentLicenseActivity != null)
300  {
301  coApplicants = patentLicenseActivity.CoApplicantsPatentLicenseActivities.Select(u => u.CoApplicant);
302  }
303 
304  return coApplicants;
305  }
306  }
307 }
virtual PatentLicenseActivity Get(Func< PatentLicenseActivity, bool > predicate)
virtual void AddAuthor(PatentLicenseActivity patentLicenseActivity, UserProfile user)
static bool IsHeadOfDepartment(ClaimsPrincipal user)
Definition: UserHelpers.cs:13
virtual IEnumerable< PatentLicenseActivity > GetPageByRole(int page, int count, ClaimsPrincipal userClaims)
virtual void AddApplicant(PatentLicenseActivity patentLicenseActivity, UserProfile user)
virtual void UpdateItem(PatentLicenseActivityEditModel model)
virtual IEnumerable< PatentLicenseActivity > GetAllWhere(Func< PatentLicenseActivity, bool > predicate)
static bool IsAdmin(ClaimsPrincipal user)
Definition: UserHelpers.cs:8
virtual void CreateItem(PatentLicenseActivityModel model)
virtual ICollection< ApplicantsPatentLicenseActivities > ApplicantsPatentLicenseActivities
virtual ICollection< AuthorsPatentLicenseActivities > AuthorsPatentLicenseActivities
virtual IEnumerable< PatentLicenseActivity > GetItemsByRole(ClaimsPrincipal userClaims)