ScientificReport
PostgraduateGuidanceService.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 PostgraduateGuidanceRepository _postgraduateGuidanceRepository;
17  private readonly DepartmentRepository _departmentRepository;
18  private readonly UserProfileRepository _userProfileRepository;
19 
21  {
22  _postgraduateGuidanceRepository = new PostgraduateGuidanceRepository(context);
23  _departmentRepository = new DepartmentRepository(context);
24  _userProfileRepository = new UserProfileRepository(context);
25  }
26 
27  public virtual IEnumerable<PostgraduateGuidance> GetAll()
28  {
29  return _postgraduateGuidanceRepository.All();
30  }
31 
32  public virtual IEnumerable<PostgraduateGuidance> GetAllWhere(Func<PostgraduateGuidance, bool> predicate)
33  {
34  return GetAll().Where(predicate);
35  }
36 
37  public virtual IEnumerable<PostgraduateGuidance> GetItemsByRole(ClaimsPrincipal userClaims)
38  {
39  IEnumerable<PostgraduateGuidance> items;
40  if (UserHelpers.IsAdmin(userClaims))
41  {
42  items = _postgraduateGuidanceRepository.All();
43  }
44  else if (UserHelpers.IsHeadOfDepartment(userClaims))
45  {
46  var department = _departmentRepository.Get(r => r.Head.UserName == userClaims.Identity.Name);
47  items = _postgraduateGuidanceRepository.AllWhere(m => department.Staff.Contains(m.Guide));
48  }
49  else
50  {
51  var user = _userProfileRepository.Get(u => u.UserName == userClaims.Identity.Name);
52  items = _postgraduateGuidanceRepository.AllWhere(m => m.Guide.Id == user.Id);
53  }
54 
55  return items;
56  }
57 
58  public virtual IEnumerable<PostgraduateGuidance> 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 PostgraduateGuidance GetById(Guid id)
69  {
70  return _postgraduateGuidanceRepository.Get(id);
71  }
72 
73  public virtual PostgraduateGuidance Get(Func<PostgraduateGuidance, bool> predicate)
74  {
75  return _postgraduateGuidanceRepository.Get(predicate);
76  }
77 
78  public virtual void CreateItem(PostgraduateGuidanceModel model)
79  {
80  _postgraduateGuidanceRepository.Create(new PostgraduateGuidance
81  {
82  Guide = model.Guide,
83  PostgraduateInfo = model.PostgraduateInfo,
84  PostgraduateName = model.PostgraduateName
85  });
86  }
87 
88  public virtual void UpdateItem(PostgraduateGuidanceEditModel model)
89  {
90  var postgraduateGuidance = GetById(model.Id);
91  if (postgraduateGuidance == null)
92  {
93  return;
94  }
95 
96  postgraduateGuidance.Guide = model.Guide;
97  postgraduateGuidance.PostgraduateInfo = model.PostgraduateInfo;
98  postgraduateGuidance.PostgraduateName = model.PostgraduateName;
99  _postgraduateGuidanceRepository.Update(postgraduateGuidance);
100  }
101 
102  public virtual void DeleteById(Guid id)
103  {
104  _postgraduateGuidanceRepository.Delete(id);
105  }
106 
107  public virtual bool Exists(Guid id)
108  {
109  return _postgraduateGuidanceRepository.Get(id) != null;
110  }
111  }
112 }
virtual PostgraduateGuidance Get(Func< PostgraduateGuidance, bool > predicate)
virtual void UpdateItem(PostgraduateGuidanceEditModel model)
virtual IEnumerable< PostgraduateGuidance > GetItemsByRole(ClaimsPrincipal userClaims)
static bool IsHeadOfDepartment(ClaimsPrincipal user)
Definition: UserHelpers.cs:13
virtual IEnumerable< PostgraduateGuidance > GetPageByRole(int page, int count, ClaimsPrincipal userClaims)
static bool IsAdmin(ClaimsPrincipal user)
Definition: UserHelpers.cs:8
virtual void CreateItem(PostgraduateGuidanceModel model)
virtual IEnumerable< PostgraduateGuidance > GetAllWhere(Func< PostgraduateGuidance, bool > predicate)