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