public ReleaseEventFindResultContract(ReleaseEventSeries series, ContentLanguagePreference languagePreference, int seriesNumber, string seriesSuffix, string eventName)
 {
     Series       = new ReleaseEventSeriesContract(series, languagePreference);
     SeriesNumber = seriesNumber;
     SeriesSuffix = seriesSuffix;
     EventName    = eventName;
 }
 public ReleaseEventSeriesDetailsContract(ReleaseEventSeries series, ContentLanguagePreference languagePreference)
     : base(series, languagePreference)
 {
     Tags           = series.Tags.ActiveUsages.Select(u => new TagUsageForApiContract(u, languagePreference)).OrderByDescending(t => t.Count).ToArray();
     TranslatedName = new TranslatedStringContract(series.TranslatedName);
     WebLinks       = series.WebLinks.Select(w => new WebLinkContract(w)).OrderBy(w => w.DescriptionOrUrl).ToArray();
 }
 public ReleaseEventFindResultContract(ReleaseEventSeries series, int seriesNumber, string seriesSuffix, string eventName)
 {
     Series       = new ReleaseEventSeriesContract(series);
     SeriesNumber = seriesNumber;
     SeriesSuffix = seriesSuffix;
     EventName    = eventName;
 }
        public ReleaseEventSeriesWithEventsContract(ReleaseEventSeries series, IEnumerable<ReleaseEvent> events, ContentLanguagePreference languagePreference)
            : base(series)
        {
            ParamIs.NotNull(() => events);

            Events = events.OrderBy(e => e.SeriesNumber).Select(e => new ReleaseEventContract(e)).ToArray();
        }
Ejemplo n.º 5
0
        public int UpdateSeries(ReleaseEventSeriesForEditContract contract)
        {
            ParamIs.NotNull(() => contract);

            PermissionContext.VerifyPermission(PermissionToken.ManageEventSeries);

            return(HandleTransaction(session => {
                ReleaseEventSeries series;

                if (contract.Id == 0)
                {
                    series = new ReleaseEventSeries(contract.Name, contract.Description, contract.Aliases);

                    session.Save(series);

                    AuditLog("created " + series, session);
                }
                else
                {
                    series = session.Load <ReleaseEventSeries>(contract.Id);

                    series.Name = contract.Name;
                    series.Description = contract.Description;
                    series.UpdateAliases(contract.Aliases);

                    AuditLog("updated " + series, session);
                }

                return series.Id;
            }));
        }
        public ReleaseEventSeriesWithEventsContract(ReleaseEventSeries series, IEnumerable <ReleaseEvent> events, ContentLanguagePreference languagePreference)
            : base(series)
        {
            ParamIs.NotNull(() => events);

            Events = events.OrderBy(e => e.SeriesNumber).Select(e => new ReleaseEventContract(e)).ToArray();
        }
Ejemplo n.º 7
0
        private ReleaseEventSeries CreateSeries(params string[] aliases)
        {
            var s = new ReleaseEventSeries(ContentLanguageSelection.English, aliases.Select(a => new LocalizedString(a, ContentLanguageSelection.English)).ToArray(), string.Empty);

            _querySource.Add(s);

            return(s);
        }
		public ReleaseEventFindResultContract(ReleaseEventSeries series, int seriesNumber, string seriesSuffix, string eventName) {

			Series = new ReleaseEventSeriesContract(series);
			SeriesNumber = seriesNumber;
			SeriesSuffix = seriesSuffix;
			EventName = eventName;

		}
Ejemplo n.º 9
0
        private ReleaseEventSeries CreateSeries(string name, params string[] aliases)
        {
            var s = new ReleaseEventSeries(name, string.Empty, aliases);

            querySource.Add(s);

            return(s);
        }
Ejemplo n.º 10
0
        private void CreateTrashedEntry(IDatabaseContext ctx, ReleaseEventSeries eventSeries, string notes)
        {
            var archived = new ArchivedEventSeriesContract(eventSeries, new ReleaseEventSeriesDiff(true));
            var data     = XmlHelper.SerializeToXml(archived);
            var trashed  = new TrashedEntry(eventSeries, data, GetLoggedUser(ctx), notes);

            ctx.Save(trashed);
        }
Ejemplo n.º 11
0
		private ReleaseEventSeries CreateSeries(string name, params string[] aliases) {

			var s = new ReleaseEventSeries(name, string.Empty, aliases);
			querySource.Add(s);

			return s;

		}
Ejemplo n.º 12
0
        private ReleaseEvent CreateEvent(ReleaseEventSeries series, int number, string suffix = "")
        {
            var e = CreateEntry.SeriesEvent(series, number, suffix, id: _eventId++);

            _querySource.Add(e);
            series.AllEvents.Add(e);

            return(e);
        }
        public ReleaseEventSeriesContract(ReleaseEventSeries series)
            : this()
        {
            ParamIs.NotNull(() => series);

            Description = series.Description;
            Id = series.Id;
            Name = series.Name;
        }
Ejemplo n.º 14
0
        public ArchivedEventSeriesContract(ReleaseEventSeries series)
        {
            ParamIs.NotNull(() => series);

            Aliases     = series.Aliases.Select(a => a.Name).ToArray();
            Description = series.Description;
            Id          = series.Id;
            Name        = series.Name;
        }
        public ArchivedEventSeriesContract(ReleaseEventSeries series)
        {
            ParamIs.NotNull(() => series);

            Aliases = series.Aliases.Select(a => a.Name).ToArray();
            Description = series.Description;
            Id = series.Id;
            Name = series.Name;
        }
Ejemplo n.º 16
0
        public ReleaseEventSeriesContract(ReleaseEventSeries series)
            : this()
        {
            ParamIs.NotNull(() => series);

            Description = series.Description;
            Id          = series.Id;
            Name        = series.Name;
        }
Ejemplo n.º 17
0
        public ArchivedEventSeriesContract(ReleaseEventSeries series, ReleaseEventSeriesDiff diff)
        {
            ParamIs.NotNull(() => series);

            Aliases     = series.Aliases.Select(a => a.Name).ToArray();
            Description = series.Description;
            Id          = series.Id;
            Name        = series.Name;
            WebLinks    = diff.IsIncluded(ReleaseEventSeriesEditableFields.WebLinks) ? series.WebLinks.Select(l => new ArchivedWebLinkContract(l)).ToArray() : null;
        }
Ejemplo n.º 18
0
        public void FindSeriesWithNumberAndSuffix_Exact()
        {
            _series = CreateSeries("M3");
            CreateEvent(_series, 2013, "Fall");

            var result = Find("M3 2013 Fall");

            result.Should().NotBeNull("Result");
            result.IsKnownEvent.Should().BeTrue("IsKnownEvent");
            result.EventName.Should().Be("M3 2013 Fall", "EventName");
        }
Ejemplo n.º 19
0
        public void FindSeriesWithNumberAndSuffix_Exact()
        {
            series = CreateSeries("M3");
            CreateEvent(series, 2013, "Fall");

            var result = Find("M3 2013 Fall");

            Assert.IsNotNull(result, "Result");
            Assert.IsTrue(result.IsKnownEvent, "IsKnownEvent");
            Assert.AreEqual("M3 2013 Fall", result.EventName, "EventName");
        }
Ejemplo n.º 20
0
        public ReleaseEvent(string description, DateTime? date, ReleaseEventSeries series, int seriesNumber)
            : this()
        {
            ParamIs.NotNull(() => series);

            Description = description;
            Date = date;
            Series = series;
            SeriesNumber = seriesNumber;
            Name = series.GetEventName(seriesNumber);
        }
Ejemplo n.º 21
0
        public void SetUp()
        {
            _querySource = new QuerySourceList();

            _target = new ReleaseEventSearch(_querySource);

            _series = CreateSeries("Comiket", "C", "c", "Comic Market");

            _eventInSeries = CreateEvent(_series, 84);
            _unsortedEvent = CreateEvent("Vocaloid Festa");
        }
Ejemplo n.º 22
0
		private ReleaseEvent CreateEvent(ReleaseEventSeries series, int number, string suffix = "") {

			var e = new ReleaseEvent(string.Empty, null, series, number, suffix) {
				Id = eventId++
			};
			querySource.Add(e);
			series.Events.Add(e);

			return e;

		}
Ejemplo n.º 23
0
        public ArchivedEventSeriesContract(ReleaseEventSeries series, ReleaseEventSeriesDiff diff)
        {
            ParamIs.NotNull(() => series);

            Category        = series.Category;
            Description     = series.Description;
            Id              = series.Id;
            MainPictureMime = series.PictureMime;
            Names           = diff.IncludeNames ? series.Names.Names.Select(n => new LocalizedStringContract(n)).ToArray() : null;
            TranslatedName  = new ArchivedTranslatedStringContract(series.TranslatedName);
            WebLinks        = diff.IncludeWebLinks ? series.WebLinks.Select(l => new ArchivedWebLinkContract(l)).ToArray() : null;
        }
Ejemplo n.º 24
0
		public void SetUp() {

			querySource = new QuerySourceList();

			target = new ReleaseEventSearch(querySource);

			series = CreateSeries("Comiket", "C", "c", "Comic Market");

			eventInSeries = CreateEvent(series, 84);
			unsortedEvent = CreateEvent("Vocaloid Festa");

		}
Ejemplo n.º 25
0
        private ReleaseEvent CreateEvent(ReleaseEventSeries series, int number, string suffix = "")
        {
            var e = new ReleaseEvent(string.Empty, null, series, number, suffix, null, false)
            {
                Id = eventId++
            };

            querySource.Add(e);
            series.Events.Add(e);

            return(e);
        }
Ejemplo n.º 26
0
        public static ReleaseEvent SeriesEvent(ReleaseEventSeries series, int seriesNumber, string seriesSuffix = "", int id = 0)
        {
            var ev = new ReleaseEvent(string.Empty, null, series, seriesNumber, seriesSuffix, ContentLanguageSelection.English, false)
            {
                Id = id
            };

            foreach (var name in ev.GetNamesFromSeries())
            {
                ev.CreateName(name);
            }
            return(ev);
        }
Ejemplo n.º 27
0
        private void SaveImage(ReleaseEventSeries series, EntryPictureFileContract pictureData)
        {
            if (pictureData != null)
            {
                var parsed = ImageHelper.GetOriginal(pictureData.UploadedFile, pictureData.ContentLength, pictureData.Mime);
                series.PictureMime = parsed.Mime;

                pictureData.Id        = series.Id;
                pictureData.EntryType = EntryType.ReleaseEventSeries;
                var thumbGenerator = new ImageThumbGenerator(imagePersister);
                thumbGenerator.GenerateThumbsAndMoveImage(pictureData.UploadedFile, pictureData, ReleaseEventSeries.ImageSizes, originalSize: Constants.RestrictedImageOriginalSize);
            }
        }
Ejemplo n.º 28
0
		public ReleaseEvent(string description, DateTime? date, ReleaseEventSeries series, int seriesNumber, string seriesSuffix)
			: this() {

			ParamIs.NotNull(() => series);

			Description = description;
			Date = date;
			Series = series;
			SeriesNumber = seriesNumber;
			SeriesSuffix = seriesSuffix;

			UpdateNameFromSeries();

		}
Ejemplo n.º 29
0
		public void SetUp() {

			series = CreateEntry.EventSeries("M3");
			existingEvent = new ReleaseEvent(string.Empty, null, series, 2013, "Spring");

			repository = new FakeEventRepository();
			repository.Save(series);
			repository.Save(existingEvent);

			album = CreateEntry.Album(name: "Day's Footsteps");
			album.OriginalReleaseEventName = "M3 2013 Spring";
			repository.Save(album);

			var user = CreateEntry.User();
			repository.Save(user);
			queries = new EventQueries(repository, new FakeEntryLinkFactory(), new FakePermissionContext(user));

		}
Ejemplo n.º 30
0
        public void SetUp()
        {
            series        = CreateEntry.EventSeries("M3");
            existingEvent = new ReleaseEvent(string.Empty, null, series, 2013, "Spring", null, false);

            repository = new FakeEventRepository();
            repository.Save(series);
            repository.Save(existingEvent);

            album = CreateEntry.Album(name: "Day's Footsteps");
            album.OriginalReleaseEvent = existingEvent;
            repository.Save(album);

            user = CreateEntry.User(group: UserGroupId.Trusted);
            repository.Save(user);
            permissionContext = new FakePermissionContext(user);
            queries           = new EventQueries(repository, new FakeEntryLinkFactory(), permissionContext, new InMemoryImagePersister());
        }
Ejemplo n.º 31
0
        public void SetUp()
        {
            series        = CreateEntry.EventSeries("M3");
            existingEvent = new ReleaseEvent(string.Empty, null, series, 2013, "Spring");

            repository = new FakeEventRepository();
            repository.Save(series);
            repository.Save(existingEvent);

            album = CreateEntry.Album(name: "Day's Footsteps");
            album.OriginalReleaseEventName = "M3 2013 Spring";
            repository.Save(album);

            var user = CreateEntry.User();

            repository.Save(user);
            queries = new EventQueries(repository, new FakeEntryLinkFactory(), new FakePermissionContext(user));
        }
Ejemplo n.º 32
0
        public void SetUp()
        {
            series        = CreateEntry.EventSeries("M3");
            existingEvent = CreateEntry.SeriesEvent(series, 2013, "Spring");
            series.AllEvents.Add(existingEvent);

            repository = new FakeEventRepository();
            repository.Save(series);
            repository.Save(existingEvent);
            repository.SaveNames(series);
            repository.SaveNames(existingEvent);

            album = CreateEntry.Album(name: "Day's Footsteps");
            album.OriginalReleaseEvent = existingEvent;
            repository.Save(album);

            user = CreateEntry.User(group: UserGroupId.Trusted);
            repository.Save(user);
            permissionContext = new FakePermissionContext(user);
            queries           = new EventQueries(repository, new FakeEntryLinkFactory(), permissionContext, new InMemoryImagePersister(), new FakeUserIconFactory(), new EnumTranslations(), mailer);
        }
Ejemplo n.º 33
0
        public ReleaseEventSeriesContract(ReleaseEventSeries series, ContentLanguagePreference languagePreference, bool includeLinks = false)
            : this()
        {
            ParamIs.NotNull(() => series);

            AdditionalNames = series.Names.GetAdditionalNamesStringForLanguage(languagePreference);
            Category        = series.Category;
            Deleted         = series.Deleted;
            Description     = series.Description;
            Id          = series.Id;
            Name        = series.TranslatedName[languagePreference];
            PictureMime = series.PictureMime;
            Status      = series.Status;
            UrlSlug     = series.UrlSlug;
            Version     = series.Version;

            if (includeLinks)
            {
                WebLinks = series.WebLinks.Select(w => new WebLinkContract(w)).OrderBy(w => w.DescriptionOrUrl).ToArray();
            }
        }
        public ReleaseEventSeriesForApiContract(ReleaseEventSeries series, ContentLanguagePreference languagePreference, ReleaseEventSeriesOptionalFields fields, IAggregatedEntryImageUrlFactory thumbPersister)
        {
            Category = series.Category;
            Id       = series.Id;
            Name     = series.TranslatedName[languagePreference];
            Status   = series.Status;
            UrlSlug  = series.UrlSlug;
            Version  = series.Version;

            if (fields.HasFlag(ReleaseEventSeriesOptionalFields.AdditionalNames))
            {
                AdditionalNames = series.Names.GetAdditionalNamesStringForLanguage(languagePreference);
            }

            if (fields.HasFlag(ReleaseEventSeriesOptionalFields.Description))
            {
                Description = series.Description;
            }

            if (fields.HasFlag(ReleaseEventSeriesOptionalFields.Events))
            {
                Events = series.Events.Select(e => new ReleaseEventForApiContract(e, languagePreference, ReleaseEventOptionalFields.None, thumbPersister)).ToArray();
            }

            if (thumbPersister != null && fields.HasFlag(ReleaseEventSeriesOptionalFields.MainPicture))
            {
                MainPicture = EntryThumbForApiContract.Create(EntryThumb.Create(series), thumbPersister);
            }

            if (fields.HasFlag(ReleaseEventSeriesOptionalFields.Names))
            {
                Names = series.Names.Select(n => new LocalizedStringContract(n)).ToArray();
            }

            if (fields.HasFlag(ReleaseEventSeriesOptionalFields.WebLinks))
            {
                WebLinks = series.WebLinks.Select(w => new WebLinkForApiContract(w)).ToArray();
            }
        }
Ejemplo n.º 35
0
        private ReleaseEventFindResultContract AttemptSeriesMatch(string seriesName, ReleaseEventSeries series, string query, ContentLanguagePreference languagePreference)
        {
            var queryWithoutSeries = query.Remove(0, seriesName.Length).TrimStart();
            var match = eventNumberRegex.Match(queryWithoutSeries);

            if (!match.Success)
            {
                return(null);
            }

            var seriesNumber = Convert.ToInt32(match.Groups[1].Value);
            var seriesSuffix = (match.Groups.Count >= 3 ? match.Groups[2].Value : string.Empty);

            var ev = Query <ReleaseEvent>().FirstOrDefault(e => e.Series != null && e.Series.Id == series.Id && e.SeriesNumber == seriesNumber && e.SeriesSuffix == seriesSuffix);

            if (ev != null)
            {
                return(new ReleaseEventFindResultContract(ev, languagePreference));
            }
            else
            {
                return(new ReleaseEventFindResultContract(series, languagePreference, seriesNumber, seriesSuffix, query));
            }
        }
Ejemplo n.º 36
0
		public int UpdateSeries(ReleaseEventSeriesForEditContract contract) {

			ParamIs.NotNull(() => contract);

			PermissionContext.VerifyPermission(PermissionToken.ManageEventSeries);

			return HandleTransaction(session => {

				ReleaseEventSeries series;

				if (contract.Id == 0) {

					series = new ReleaseEventSeries(contract.Name, contract.Description, contract.Aliases);

					session.Save(series);

					AuditLog("created " + series, session);

				} else {

					series = session.Load<ReleaseEventSeries>(contract.Id);

					series.Name = contract.Name;
					series.Description = contract.Description;
					series.UpdateAliases(contract.Aliases);

					AuditLog("updated " + series, session);

				}

				return series.Id;

			});

		}
 public ReleaseEventSeriesWithEventsContract(ReleaseEventSeries series, ContentLanguagePreference languagePreference)
     : base(series)
 {
     Events = series.Events.Select(e => new ReleaseEventContract(e)).ToArray();
 }
Ejemplo n.º 38
0
		public void FindSeriesWithNumberAndSuffix_Exact() {

			series = CreateSeries("M3");
			CreateEvent(series, 2013, "Fall");

			var result = Find("M3 2013 Fall");

			Assert.IsNotNull(result, "Result");
			Assert.IsTrue(result.IsKnownEvent, "IsKnownEvent");
			Assert.AreEqual("M3 2013 Fall", result.EventName, "EventName");

		}
Ejemplo n.º 39
0
        public int UpdateSeries(ReleaseEventSeriesForEditContract contract, EntryPictureFileContract pictureData)
        {
            ParamIs.NotNull(() => contract);

            PermissionContext.VerifyManageDatabase();

            return(HandleTransaction(session => {
                ReleaseEventSeries series;

                if (contract.Id == 0)
                {
                    series = new ReleaseEventSeries(contract.DefaultNameLanguage, contract.Names, contract.Description)
                    {
                        Category = contract.Category,
                        Status = contract.Status
                    };
                    session.Save(series);

                    var diff = new ReleaseEventSeriesDiff(ReleaseEventSeriesEditableFields.OriginalName | ReleaseEventSeriesEditableFields.Names);

                    diff.Description.Set(!string.IsNullOrEmpty(contract.Description));

                    var weblinksDiff = WebLink.Sync(series.WebLinks, contract.WebLinks, series);

                    if (weblinksDiff.Changed)
                    {
                        diff.WebLinks.Set();
                        session.OfType <ReleaseEventWebLink>().Sync(weblinksDiff);
                    }

                    if (pictureData != null)
                    {
                        diff.Picture.Set();
                        SaveImage(series, pictureData);
                        session.Update(series);
                    }

                    session.Update(series);

                    Archive(session, series, diff, EntryEditEvent.Created, string.Empty);

                    AuditLog(string.Format("created {0}", entryLinkFactory.CreateEntryLink(series)), session);
                }
                else
                {
                    series = session.Load <ReleaseEventSeries>(contract.Id);
                    permissionContext.VerifyEntryEdit(series);
                    var diff = new ReleaseEventSeriesDiff(ReleaseEventSeriesEditableFields.Nothing);

                    if (series.TranslatedName.DefaultLanguage != contract.DefaultNameLanguage)
                    {
                        series.TranslatedName.DefaultLanguage = contract.DefaultNameLanguage;
                        diff.OriginalName.Set();
                    }

                    var nameDiff = series.Names.Sync(contract.Names, series);
                    session.Sync(nameDiff);

                    if (nameDiff.Changed)
                    {
                        diff.Names.Set();
                    }


                    if (series.Category != contract.Category)
                    {
                        diff.Category.Set();
                        series.Category = contract.Category;
                    }

                    if (series.Description != contract.Description)
                    {
                        diff.Description.Set();
                        series.Description = contract.Description;
                    }

                    if (series.Status != contract.Status)
                    {
                        diff.Status.Set();
                        series.Status = contract.Status;
                    }

                    if (pictureData != null)
                    {
                        diff.Picture.Set();
                        SaveImage(series, pictureData);
                    }

                    var weblinksDiff = WebLink.Sync(series.WebLinks, contract.WebLinks, series);

                    if (weblinksDiff.Changed)
                    {
                        diff.WebLinks.Set();
                        session.OfType <ReleaseEventWebLink>().Sync(weblinksDiff);
                    }

                    session.Update(series);

                    if (diff.Names.IsChanged || diff.OriginalName.IsChanged)
                    {
                        var eventNamesQuery = new UpdateEventNamesQuery();
                        foreach (var ev in series.Events.Where(e => !e.CustomName))
                        {
                            eventNamesQuery.UpdateNames(session, ev, series, ev.CustomName, ev.SeriesNumber, ev.SeriesSuffix, ev.Names);
                            session.Update(ev);
                        }
                    }

                    Archive(session, series, diff, EntryEditEvent.Updated, string.Empty);

                    AuditLog(string.Format("updated {0}", entryLinkFactory.CreateEntryLink(series)), session);
                }

                return series.Id;
            }));
        }
Ejemplo n.º 40
0
        private void SaveImage(ReleaseEventSeries series, EntryPictureFileContract pictureData)
        {
            var parsed = SaveImage((IEntryImageInformation)series, pictureData);

            series.PictureMime = parsed.Mime;
        }
Ejemplo n.º 41
0
 public ReleaseEventSeriesAlias(ReleaseEventSeries series, string name)
 {
     Series = series;
     Name = name;
 }
 public ReleaseEventSeriesDetailsContract(ReleaseEventSeries series, ContentLanguagePreference languagePreference)
     : base(series, languagePreference)
 {
     Aliases = series.Aliases.Select(a => a.Name).ToArray();
 }
 public ReleaseEventSeriesForEditContract(ReleaseEventSeries series)
     : base(series)
 {
     Aliases = series.Aliases.Select(a => a.Name).ToArray();
 }
 public ReleaseEventSeriesWithEventsContract(ReleaseEventSeries series, ContentLanguagePreference languagePreference)
     : base(series)
 {
     Events = series.Events.Select(e => new ReleaseEventContract(e)).ToArray();
 }
Ejemplo n.º 45
0
        private ArchivedReleaseEventSeriesVersion Archive(IDatabaseContext <ReleaseEvent> ctx, ReleaseEventSeries releaseEvent, ReleaseEventSeriesDiff diff, EntryEditEvent reason, string notes)
        {
            var agentLoginData = ctx.OfType <User>().CreateAgentLoginData(permissionContext);
            var archived       = ArchivedReleaseEventSeriesVersion.Create(releaseEvent, diff, agentLoginData, reason, notes);

            ctx.Save(archived);
            return(archived);
        }
 public ReleaseEventSeriesForEditContract(ReleaseEventSeries series, ContentLanguagePreference languagePreference) : base(series, languagePreference)
 {
     DefaultNameLanguage = series.TranslatedName.DefaultLanguage;
     Names    = series.Names.Select(n => new LocalizedStringWithIdContract(n)).ToArray();
     WebLinks = series.WebLinks.Select(w => new WebLinkContract(w)).OrderBy(w => w.DescriptionOrUrl).ToArray();
 }