ScientificReport
PublicationService.cs
Go to the documentation of this file.
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
9 
10 namespace ScientificReport.BLL.Services
11 {
13  {
14  private readonly PublicationRepository _publicationRepository;
15 
17  {
18  _publicationRepository = new PublicationRepository(context);
19  }
20 
21  public virtual IEnumerable<Publication> GetAll()
22  {
23  return _publicationRepository.All();
24  }
25 
26  public virtual IEnumerable<Publication> GetAllWhere(Func<Publication, bool> predicate)
27  {
28  return _publicationRepository.AllWhere(predicate);
29  }
30 
31  public virtual Publication GetById(Guid id)
32  {
33  return _publicationRepository.Get(id);
34  }
35 
36  public virtual Publication Get(Func<Publication, bool> predicate)
37  {
38  return _publicationRepository.Get(predicate);
39  }
40 
41  public virtual void CreateItem(Publication item)
42  {
43  _publicationRepository.Create(item);
44  }
45 
46  public virtual void UpdateItem(Publication item)
47  {
48  _publicationRepository.Update(item);
49  }
50 
51  public virtual void DeleteById(Guid id)
52  {
53  _publicationRepository.Delete(id);
54  }
55 
56  public virtual bool PublicationExists(Guid id)
57  {
58  return _publicationRepository.Get(id) != null;
59  }
60 
61  public virtual ICollection<UserProfile> GetPublicationAuthors(Guid id)
62  {
63  var publication = _publicationRepository.Get(id);
64  ICollection<UserProfile> result = null;
65  if (publication != null)
66  {
67  result = publication.UserProfilesPublications.Select(item => item.UserProfile).ToList();
68  }
69 
70  return result;
71  }
72 
73  public virtual void AddAuthor(Publication publication, UserProfile user)
74  {
76  {
77  Publication = publication,
78  UserProfile = user,
79  PublicationId = publication.Id,
80  UserProfileId = user.Id
81  });
82  _publicationRepository.Update(publication);
83  }
84 
85  public virtual void RemoveAuthor(Publication publication, UserProfile user)
86  {
87  publication.UserProfilesPublications.Remove(publication.UserProfilesPublications.First(up => up.UserProfile.Id == user.Id));
88  _publicationRepository.Update(publication);
89  }
90 
91  public virtual IEnumerable<Publication> GetUserPublications(UserProfile user)
92  {
93  var allPublications = _publicationRepository.All().ToList();
94 
95  return allPublications.Where(t => t.UserProfilesPublications.Any(u => u.UserProfile.Id == user.Id)).ToList();
96  }
97  }
98 }
virtual Publication Get(Func< Publication, bool > predicate)
virtual void RemoveAuthor(Publication publication, UserProfile user)
virtual ICollection< UserProfile > GetPublicationAuthors(Guid id)
virtual IEnumerable< Publication > GetUserPublications(UserProfile user)
virtual void AddAuthor(Publication publication, UserProfile user)
PublicationService(ScientificReportDbContext context)
virtual IEnumerable< Publication > GetAll()
virtual IEnumerable< Publication > GetAllWhere(Func< Publication, bool > predicate)
virtual ICollection< UserProfilesPublications > UserProfilesPublications
Definition: Publication.cs:40