2 using System.Collections.Generic;
4 using System.Security.Claims;
28 public virtual IEnumerable<ScientificWork>
GetAll()
30 return _scientificWorkRepository.All();
33 public virtual IEnumerable<ScientificWork>
GetAllWhere(Func<ScientificWork, bool> predicate)
35 return _scientificWorkRepository.AllWhere(predicate);
38 public virtual IEnumerable<ScientificWork>
GetItemsByRole(ClaimsPrincipal userClaims)
40 IEnumerable<ScientificWork> items;
43 items = _scientificWorkRepository.All();
47 var department = _departmentRepository.Get(r => r.Head.UserName == userClaims.Identity.Name);
48 items = _scientificWorkRepository.AllWhere(a => a.UserProfilesScientificWorks.Any(u => department.Staff.Contains(u.UserProfile)));
52 var user = _userProfileRepository.Get(u => u.UserName == userClaims.Identity.Name);
53 items = _scientificWorkRepository.AllWhere(a => a.UserProfilesScientificWorks.Any(u => u.UserProfile.Id == user.Id));
59 public virtual IEnumerable<ScientificWork>
GetPageByRole(
int page,
int count, ClaimsPrincipal userClaims)
61 return GetItemsByRole(userClaims).Skip((page - 1) * count).Take(count).ToList();
66 return GetItemsByRole(userClaims).Count();
71 return _scientificWorkRepository.Get(
id);
76 return _scientificWorkRepository.Get(predicate);
81 _scientificWorkRepository.Create(item);
86 _scientificWorkRepository.Update(item);
91 _scientificWorkRepository.Delete(
id);
94 public virtual bool Any(Func<ScientificWork, bool> predicate)
96 return _scientificWorkRepository.AllWhere(predicate).Any();
101 return Any(r => r.Id ==
id);
106 var scientificWork = _scientificWorkRepository.Get(
id);
107 IEnumerable<UserProfile> authors = null;
108 if (scientificWork != null)
110 authors = scientificWork.UserProfilesScientificWorks.Select(u => u.UserProfile);
118 var scientificWork = _scientificWorkRepository.Get(
id);
119 var author = _userProfileRepository.Get(authorId);
120 if (scientificWork.UserProfilesScientificWorks.Any(u => u.UserProfile.Id == authorId))
130 _scientificWorkRepository.Update(scientificWork);
135 var scientificWork = _scientificWorkRepository.Get(
id);
136 if (scientificWork.UserProfilesScientificWorks.All(u => u.UserProfile.Id != authorId))
141 scientificWork.UserProfilesScientificWorks = scientificWork.UserProfilesScientificWorks
142 .Where(u => u.UserProfile.Id != authorId).ToList();
143 _scientificWorkRepository.Update(scientificWork);
virtual IEnumerable< ScientificWork > GetAllWhere(Func< ScientificWork, bool > predicate)
virtual void DeleteById(Guid id)
virtual void CreateItem(ScientificWork item)
virtual void UpdateItem(ScientificWork item)
virtual IEnumerable< ScientificWork > GetPageByRole(int page, int count, ClaimsPrincipal userClaims)
static bool IsHeadOfDepartment(ClaimsPrincipal user)
virtual void AddAuthor(Guid id, Guid authorId)
virtual int GetCountByRole(ClaimsPrincipal userClaims)
virtual bool Any(Func< ScientificWork, bool > predicate)
static bool IsAdmin(ClaimsPrincipal user)
virtual bool Exists(Guid id)
virtual IEnumerable< ScientificWork > GetItemsByRole(ClaimsPrincipal userClaims)
virtual IEnumerable< UserProfile > GetAuthors(Guid id)
ScientificWorkService(ScientificReportDbContext context)
virtual ScientificWork Get(Func< ScientificWork, bool > predicate)
virtual IEnumerable< ScientificWork > GetAll()
virtual ScientificWork GetById(Guid id)
virtual void RemoveAuthor(Guid id, Guid authorId)