Beispiel #1
0
        public ActionResult InstitutionJournalLicense(int id, InstitutionJournalLicenseViewModel model)
        {
            // Ensure that only admin and institutional admin users can use the update all journals of a publisher
            if (model.UpdateAllJournalsOfPublisher && (!User.IsInRole(ApplicationRole.Admin) && !User.IsInRole(ApplicationRole.InstitutionAdmin)))
            {
                return(new HttpUnauthorizedResult());
            }

            var journal = journalRepository.Find(id);

            if (ModelState.IsValid)
            {
                var institutionJournalsToModify = new List <InstitutionJournal>();

                if (model.UpdateAllJournalsOfPublisher)
                {
                    var institutionJournals = institutionJournalRepository.FindAll(new InstitutionJournalFilter
                    {
                        InstitutionId = model.Institution,
                        PublisherId   = journal.PublisherId
                    });

                    var publisherJournals = journalRepository.SearchAll(new JournalFilter {
                        PublisherId = journal.PublisherId
                    });

                    foreach (var publisherJournal in publisherJournals)
                    {
                        var institutionJournal = institutionJournals.FirstOrDefault(i => i.JournalId == publisherJournal.Id) ?? new InstitutionJournal();
                        institutionJournal.DateAdded     = DateTime.Now;
                        institutionJournal.Link          = model.Link;
                        institutionJournal.JournalId     = publisherJournal.Id;
                        institutionJournal.UserProfileId = Authentication.CurrentUserId;
                        institutionJournal.InstitutionId = model.Institution;

                        institutionJournalsToModify.Add(institutionJournal);
                    }
                }
                else
                {
                    var institutionJournal = institutionJournalRepository.Find(id, model.Institution) ?? new InstitutionJournal();
                    institutionJournal.DateAdded     = DateTime.Now;
                    institutionJournal.Link          = model.Link;
                    institutionJournal.JournalId     = journal.Id;
                    institutionJournal.UserProfileId = Authentication.CurrentUserId;
                    institutionJournal.InstitutionId = model.Institution;

                    institutionJournalsToModify.Add(institutionJournal);
                }

                foreach (var institutionJournal in institutionJournalsToModify)
                {
                    institutionJournalRepository.InsertOrUpdate(institutionJournal);
                }

                institutionJournalRepository.Save();

                return(Redirect(model.RefererUrl));
            }

            model.JournalTitle     = journal.Title;
            model.JournalLink      = journal.Link;
            model.JournalPublisher = journal.Publisher.Name;

            return(View(model));
        }