ScientificReport
PostgraduateDissertationGuidanceService.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;
11 
12 namespace ScientificReport.BLL.Services
13 {
15  {
16  private readonly PostgraduateDissertationGuidanceRepository _postgraduateDissertationGuidanceRepository;
17  private readonly DepartmentRepository _departmentRepository;
18  private readonly UserProfileRepository _userProfileRepository;
19 
21  {
22  _postgraduateDissertationGuidanceRepository = new PostgraduateDissertationGuidanceRepository(context);
23  _departmentRepository = new DepartmentRepository(context);
24  _userProfileRepository = new UserProfileRepository(context);
25  }
26 
27  public virtual IEnumerable<PostgraduateDissertationGuidance> GetAll()
28  {
29  return _postgraduateDissertationGuidanceRepository.All();
30  }
31 
32  public virtual IEnumerable<PostgraduateDissertationGuidance> GetAllWhere(Func<PostgraduateDissertationGuidance, bool> predicate)
33  {
34  return GetAll().Where(predicate);
35  }
36 
37  public virtual IEnumerable<PostgraduateDissertationGuidance> GetItemsByRole(ClaimsPrincipal userClaims)
38  {
39  IEnumerable<PostgraduateDissertationGuidance> items;
40  if (UserHelpers.IsAdmin(userClaims))
41  {
42  items = _postgraduateDissertationGuidanceRepository.All();
43  }
44  else if (UserHelpers.IsHeadOfDepartment(userClaims))
45  {
46  var department = _departmentRepository.Get(r => r.Head.UserName == userClaims.Identity.Name);
47  items = _postgraduateDissertationGuidanceRepository.AllWhere(m => department.Staff.Contains(m.Guide));
48  }
49  else
50  {
51  var user = _userProfileRepository.Get(u => u.UserName == userClaims.Identity.Name);
52  items = _postgraduateDissertationGuidanceRepository.AllWhere(m => m.Guide.Id == user.Id);
53  }
54 
55  return items;
56  }
57 
58  public virtual IEnumerable<PostgraduateDissertationGuidance> GetPageByRole(int page, int count, ClaimsPrincipal userClaims)
59  {
60  return GetItemsByRole(userClaims).Skip((page - 1) * count).Take(count).ToList();
61  }
62 
63  public virtual int GetCountByRole(ClaimsPrincipal userClaims)
64  {
65  return GetItemsByRole(userClaims).Count();
66  }
67 
68  public virtual PostgraduateDissertationGuidance GetById(Guid id)
69  {
70  return _postgraduateDissertationGuidanceRepository.Get(id);
71  }
72 
73  public virtual PostgraduateDissertationGuidance Get(Func<PostgraduateDissertationGuidance, bool> predicate)
74  {
75  return _postgraduateDissertationGuidanceRepository.Get(predicate);
76  }
77 
79  {
80  _postgraduateDissertationGuidanceRepository.Create(new PostgraduateDissertationGuidance
81  {
82  Guide = model.Guide,
83  Speciality = model.Speciality,
84  Dissertation = model.Dissertation,
85  GraduationYear = model.GraduationYear,
86  PostgraduateName = model.PostgraduateName,
87  DateDegreeGained = model.DateDegreeGained
88  });
89  }
90 
92  {
93  var postgraduateDissertationGuidance = GetById(model.Id);
94  if (postgraduateDissertationGuidance == null)
95  {
96  return;
97  }
98 
99  postgraduateDissertationGuidance.Speciality = model.Speciality;
100  postgraduateDissertationGuidance.Dissertation = model.Dissertation;
101  postgraduateDissertationGuidance.GraduationYear = model.GraduationYear;
102  postgraduateDissertationGuidance.PostgraduateName = model.PostgraduateName;
103  postgraduateDissertationGuidance.DateDegreeGained = model.DateDegreeGained;
104  _postgraduateDissertationGuidanceRepository.Update(postgraduateDissertationGuidance);
105  }
106 
107  public virtual void DeleteById(Guid id)
108  {
109  _postgraduateDissertationGuidanceRepository.Delete(id);
110  }
111 
112  public virtual bool Exists(Guid id)
113  {
114  return _postgraduateDissertationGuidanceRepository.Get(id) != null;
115  }
116  }
117 }
virtual void UpdateItem(PostgraduateDissertationGuidanceEditModel model)
static bool IsHeadOfDepartment(ClaimsPrincipal user)
Definition: UserHelpers.cs:13
virtual IEnumerable< PostgraduateDissertationGuidance > GetItemsByRole(ClaimsPrincipal userClaims)
static bool IsAdmin(ClaimsPrincipal user)
Definition: UserHelpers.cs:8
virtual IEnumerable< PostgraduateDissertationGuidance > GetPageByRole(int page, int count, ClaimsPrincipal userClaims)
virtual IEnumerable< PostgraduateDissertationGuidance > GetAllWhere(Func< PostgraduateDissertationGuidance, bool > predicate)
virtual PostgraduateDissertationGuidance Get(Func< PostgraduateDissertationGuidance, bool > predicate)