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"); }
public ArchivedEventContract(ReleaseEvent ev) { ParamIs.NotNull(() => ev); Date = ev.Date; Description = ev.Description; Id = ev.Id; Name = ev.Name; Series = (ev.Series != null ? new ObjectRefContract(ev.Series) : null); SeriesNumber = ev.SeriesNumber; }
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); }
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); }
public ArchivedEventContract(ReleaseEvent ev, ReleaseEventDiff diff) { ParamIs.NotNull(() => ev); ParamIs.NotNull(() => diff); Date = ev.Date; Description = ev.Description; Id = ev.Id; Name = ev.Name; Series = ObjectRefContract.Create(ev.Series); SeriesNumber = ev.SeriesNumber; WebLinks = diff.IsIncluded(ReleaseEventEditableFields.WebLinks) ? ev.WebLinks.Select(l => new ArchivedWebLinkContract(l)).ToArray() : null; }
/// <summary> /// Returns a release event if it can be uniquely identified (by either name or ID). /// Otherwise attempts to create a new event based on given name. /// Makes an intelligent guess to create either standalone event or series event. /// This also makes sure no event with a duplicate name is created. /// </summary> /// <param name="ctx">Database context.</param> /// <param name="userContext">User context.</param> /// <param name="contract">Release event data.</param> /// <param name="forEntry">Which entry the release event will be created for. Optional, can be null.</param> /// <returns>The release event. Can be null if no name or ID is specified. Returned event can be either a new event or existing event.</returns> public ReleaseEvent FindOrCreate(IDatabaseContext ctx, IUserPermissionContext userContext, IReleaseEvent contract, IEntryBase forEntry) { if (contract == null || (contract.Id == 0 && string.IsNullOrWhiteSpace(contract.Name))) { return(null); } var existing = ctx.NullSafeLoad <ReleaseEvent>(contract); if (existing != null) { return(existing); } var searchResult = new ReleaseEventSearch(ctx).Find(contract.Name, userContext.LanguagePreference); if (searchResult.IsKnownEvent) { return(ctx.Load <ReleaseEvent>(searchResult.EventId)); } var series = ctx.NullSafeLoad <ReleaseEventSeries>(searchResult.Series); ReleaseEvent newEvent; LocalizedStringContract[] names; if (series == null) { var nameValue = searchResult.EventName.EmptyToNull() ?? contract.Name; var name = new LocalizedStringContract(nameValue, ContentLanguageSelection.English); names = new[] { name }; newEvent = new ReleaseEvent(string.Empty, null, ContentLanguageSelection.English); } else { names = new LocalizedStringContract[0]; newEvent = new ReleaseEvent(string.Empty, null, series, searchResult.SeriesNumber, searchResult.SeriesSuffix, ContentLanguageSelection.Unspecified, false); } ctx.Save(newEvent); new UpdateEventNamesQuery().UpdateNames(ctx, newEvent, series, false, searchResult.SeriesNumber, searchResult.SeriesSuffix, names); var eventDiff = new ReleaseEventDiff(ReleaseEventEditableFields.OriginalName | ReleaseEventEditableFields.Names); var archivedVersion = ArchivedReleaseEventVersion.Create(newEvent, eventDiff, ctx.OfType <User>().CreateAgentLoginData(userContext), EntryEditEvent.Created, "Created for " + forEntry); ctx.Save(archivedVersion); return(newEvent); }
public ReleaseEventContract(ReleaseEvent ev, bool includeSeries = false) : this() { ParamIs.NotNull(() => ev); Date = ev.Date; Description = ev.Description; Id = ev.Id; Name = ev.Name; if (includeSeries && ev.Series != null) { Series = new ReleaseEventSeriesContract(ev.Series); } }
/// <summary> /// Returns a release event if it can be uniquely identified (by either name or ID). /// Otherwise attempts to create a new event based on given name. /// Makes an intelligent guess to create either standalone event or series event. /// This also makes sure no event with a duplicate name is created. /// </summary> /// <param name="ctx">Database context.</param> /// <param name="userContext">User context.</param> /// <param name="contract">Release event data.</param> /// <param name="forEntry">Which entry the release event will be created for. Optional, can be null.</param> /// <returns>The release event. Can be null if no name or ID is specified. Returned event can be either a new event or existing event.</returns> public ReleaseEvent FindOrCreate(IDatabaseContext ctx, IUserPermissionContext userContext, IReleaseEvent contract, IEntryBase forEntry) { if (contract == null || (contract.Id == 0 && string.IsNullOrWhiteSpace(contract.Name))) { return(null); } var existing = ctx.NullSafeLoad <ReleaseEvent>(contract); if (existing != null) { return(existing); } var searchResult = new ReleaseEventSearch(ctx).Find(contract.Name); if (searchResult.IsKnownEvent) { return(ctx.Load <ReleaseEvent>(searchResult.EventId)); } var series = ctx.NullSafeLoad <ReleaseEventSeries>(searchResult.Series); ReleaseEvent newEvent; if (series == null) { newEvent = new ReleaseEvent(string.Empty, null, searchResult.EventName.EmptyToNull() ?? contract.Name); } else { newEvent = new ReleaseEvent(string.Empty, null, series, searchResult.SeriesNumber, searchResult.SeriesSuffix, null, false); } ctx.Save(newEvent); var eventDiff = new ReleaseEventDiff(ReleaseEventEditableFields.Name); eventDiff.Name.Set(); var archivedVersion = ArchivedReleaseEventVersion.Create(newEvent, eventDiff, ctx.OfType <User>().CreateAgentLoginData(userContext), EntryEditEvent.Created, "Created for " + forEntry); ctx.Save(archivedVersion); return(newEvent); }
private IEnumerator ProjectRoutine() { int reCacluateCount = 1; float lastSpeed = 0f; for (float i = 0f; i < ShootingTime; i += Time.deltaTime * Time.timeScale * _Speed) { if (i >= reCacluateCount * 0.5f) { Vector2 nowPosition = _Target.position; Vector2 between = (nowPosition - _LastTargetPoint); reCacluateCount++; __PointD += between; _LastTargetPoint = nowPosition; } Vector3 caculatedCurve = CaculateCurve(Mathf.Min(1f, i / ShootingTime)); lastSpeed = (caculatedCurve - transform.localPosition).magnitude; transform.localPosition = caculatedCurve; if (_ProjectBreak) { break; } yield return(null); } Vector3 dir = (__PointD - __PointC).normalized; while (!_ProjectBreak) { transform.localPosition += dir * lastSpeed; yield return(null); } ReleaseEvent?.Invoke(this); MainCamera.Instance.CameraShake(0.2f, 0.15f); _ReleaseEffect.Play(); _Collider.enabled = false; _Renderer.enabled = false; SoundManager.Instance.Play(_DestroySoundEffect); _PathEffect.Stop(); }
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)); }
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()); }
public ReleaseEventDetailsContract(ReleaseEvent releaseEvent, ContentLanguagePreference languagePreference, IUserPermissionContext userContext, IUserIconFactory userIconFactory, IEntryTypeTagRepository entryTypeTags = null) : base(releaseEvent, languagePreference, true, true) { ParamIs.NotNull(() => releaseEvent); CanRemoveTagUsages = EntryPermissionManager.CanRemoveTagUsages(userContext, releaseEvent); DefaultNameLanguage = releaseEvent.TranslatedName.DefaultLanguage; PVs = releaseEvent.PVs.Select(p => new PVContract(p)).ToArray(); SeriesNumber = releaseEvent.SeriesNumber; SeriesSuffix = releaseEvent.SeriesSuffix; Tags = releaseEvent.Tags.ActiveUsages.Select(u => new TagUsageForApiContract(u, languagePreference)).OrderByDescending(t => t.Count).ToArray(); TranslatedName = new TranslatedStringContract(releaseEvent.TranslatedName); WebLinks = releaseEvent.WebLinks.Select(w => new WebLinkContract(w)).OrderBy(w => w.DescriptionOrUrl).ToArray(); var categoryTag = entryTypeTags?.GetTag(Domain.EntryType.ReleaseEvent, InheritedCategory); InheritedCategoryTag = categoryTag != null ? new TagBaseContract(categoryTag, languagePreference) : null; Albums = releaseEvent.Albums .Select(a => new AlbumContract(a, languagePreference)) .OrderBy(a => a.Name) .ToArray(); Artists = releaseEvent.AllArtists .Select(a => new ArtistForEventContract(a, languagePreference)) .OrderBy(a => a.Artist != null ? a.Artist.Name : a.Name) .ToArray(); Songs = releaseEvent.Songs .Select(s => new SongForApiContract(s, languagePreference, SongOptionalFields.AdditionalNames | SongOptionalFields.ThumbUrl)) .OrderBy(s => s.Name) .ToArray(); UsersAttending = releaseEvent.Users .Where(u => u.RelationshipType == UserEventRelationshipType.Attending) .Select(u => new UserForApiContract(u.User, userIconFactory, UserOptionalFields.MainPicture)) .ToArray(); if (releaseEvent.SongList != null) { SongListSongs = releaseEvent.SongList.SongLinks.OrderBy(s => s.Order).Select(s => new SongInListContract(s, languagePreference)).ToArray(); } }
public ReleaseEventDetailsContract(ReleaseEvent releaseEvent, ContentLanguagePreference languagePreference) : base(releaseEvent, true) { ParamIs.NotNull(() => releaseEvent); SeriesNumber = releaseEvent.SeriesNumber; SeriesSuffix = releaseEvent.SeriesSuffix; WebLinks = releaseEvent.WebLinks.Select(w => new WebLinkContract(w)).OrderBy(w => w.DescriptionOrUrl).ToArray(); Albums = releaseEvent.Albums .Select(a => new AlbumContract(a, languagePreference)) .OrderBy(a => a.Name) .ToArray(); Songs = releaseEvent.Songs .Select(s => new SongForApiContract(s, languagePreference, SongOptionalFields.AdditionalNames | SongOptionalFields.ThumbUrl)) .OrderBy(s => s.Name) .ToArray(); }
public EntryForApiContract(ReleaseEvent releaseEvent, IEntryThumbPersister thumbPersister, bool ssl, EntryOptionalFields includedFields) : this(releaseEvent, ContentLanguagePreference.Default, includedFields) { ActivityDate = releaseEvent.Date.DateTime; ReleaseEventSeriesName = releaseEvent.Series != null ? releaseEvent.Series.Name : null; UrlSlug = releaseEvent.UrlSlug; if (includedFields.HasFlag(EntryOptionalFields.MainPicture)) { if (!string.IsNullOrEmpty(releaseEvent.PictureMime)) { MainPicture = new EntryThumbForApiContract(EntryThumb.Create(releaseEvent), thumbPersister, ssl); } else if (!string.IsNullOrEmpty(releaseEvent.Series?.PictureMime)) { MainPicture = new EntryThumbForApiContract(EntryThumb.Create(releaseEvent.Series), thumbPersister, ssl); } } }
public EntryForApiContract(ReleaseEvent releaseEvent, ContentLanguagePreference languagePreference, IEntryThumbPersister thumbPersister, EntryOptionalFields includedFields) : this(releaseEvent, languagePreference, includedFields) { ActivityDate = releaseEvent.Date.DateTime; EventCategory = releaseEvent.InheritedCategory; ReleaseEventSeriesName = releaseEvent.Series?.TranslatedName[languagePreference]; Status = releaseEvent.Status; UrlSlug = releaseEvent.UrlSlug; if (includedFields.HasFlag(EntryOptionalFields.MainPicture)) { MainPicture = EntryThumbForApiContract.Create(EntryThumb.Create(releaseEvent) ?? EntryThumb.Create(releaseEvent.Series), thumbPersister); } if (includedFields.HasFlag(EntryOptionalFields.WebLinks)) { WebLinks = releaseEvent.WebLinks.Select(w => new ArchivedWebLinkContract(w)).ToArray(); } }
public ArchivedEventContract(ReleaseEvent ev, ReleaseEventDiff diff) { ParamIs.NotNull(() => ev); ParamIs.NotNull(() => diff); Artists = diff.IncludeArtists ? ev.Artists.Select(l => new ArchivedArtistForEventContract(l)).ToArray() : null; Category = ev.Category; Date = ev.Date; Description = ev.Description; Id = ev.Id; MainPictureMime = ev.PictureMime; Names = diff.IncludeNames ? ev.Names.Names.Select(n => new LocalizedStringContract(n)).ToArray() : null; PVs = diff.IncludePVs ? ev.PVs.Select(p => new ArchivedPVContract(p)).ToArray() : null; Series = ObjectRefContract.Create(ev.Series); SeriesNumber = ev.SeriesNumber; SongList = ObjectRefContract.Create(ev.SongList); TranslatedName = new ArchivedTranslatedStringContract(ev.TranslatedName); VenueName = ev.VenueName; WebLinks = diff.IncludeWebLinks ? ev.WebLinks.Select(l => new ArchivedWebLinkContract(l)).ToArray() : null; }
private bool SaveNames(IDatabaseContext ctx, ReleaseEvent ev, IEnumerable <ILocalizedString> names) { // Make sure deletions are flushed to database BEFORE new names are added, to make sure there's no duplicates var diff = ev.Names.SyncByContent(names, ev, deleted => { foreach (var name in deleted) { ctx.Delete(name); } ctx.Flush(); } ); foreach (var n in diff.Added) { ctx.Save(n); } return(diff.Changed); }
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); }
public ReleaseEventContract(ReleaseEvent ev, bool includeSeries = false) : this() { ParamIs.NotNull(() => ev); CustomName = ev.CustomName; Date = ev.Date; Description = ev.Description; Id = ev.Id; Name = ev.Name; PictureMime = ev.PictureMime; SongList = ObjectHelper.Convert(ev.SongList, s => new SongListBaseContract(s)); UrlSlug = ev.UrlSlug; Venue = ev.Venue; Version = ev.Version; if (includeSeries && ev.Series != null) { Series = new ReleaseEventSeriesContract(ev.Series); } }
public ReleaseEventForApiContract(ReleaseEvent rel, ReleaseEventOptionalFields fields) { Date = rel.Date; Id = rel.Id; Name = rel.Name; SeriesNumber = rel.SeriesNumber; SeriesSuffix = rel.SeriesSuffix; if (rel.Series != null) { SeriesId = rel.Series.Id; } if (fields.HasFlag(ReleaseEventOptionalFields.Description)) { Description = rel.Description; } if (fields.HasFlag(ReleaseEventOptionalFields.Series) && rel.Series != null) { Series = new ReleaseEventSeriesContract(rel.Series); } }
public ReleaseEventForApiContract(ReleaseEvent rel, ContentLanguagePreference languagePreference, ReleaseEventOptionalFields fields, IAggregatedEntryImageUrlFactory thumbPersister) { Category = rel.Category; Date = rel.Date; EndDate = rel.EndDate; Id = rel.Id; Name = rel.TranslatedName[languagePreference]; SeriesNumber = rel.SeriesNumber; SeriesSuffix = rel.SeriesSuffix; Status = rel.Status; UrlSlug = rel.UrlSlug; VenueName = rel.VenueName; Version = rel.Version; if (rel.HasSeries) { SeriesId = rel.Series.Id; } if (fields.HasFlag(ReleaseEventOptionalFields.AdditionalNames)) { AdditionalNames = rel.Names.GetAdditionalNamesStringForLanguage(languagePreference); } if (fields.HasFlag(ReleaseEventOptionalFields.Artists)) { Artists = rel.Artists.Select(a => new ArtistForEventContract(a, languagePreference)).ToArray(); } if (fields.HasFlag(ReleaseEventOptionalFields.Description)) { Description = rel.Description; } if (thumbPersister != null && fields.HasFlag(ReleaseEventOptionalFields.MainPicture)) { MainPicture = EntryThumbForApiContract.Create(EntryThumb.Create(rel) ?? EntryThumb.Create(rel.Series), thumbPersister); } if (fields.HasFlag(ReleaseEventOptionalFields.Names)) { Names = rel.Names.Select(n => new LocalizedStringContract(n)).ToArray(); } if (fields.HasFlag(ReleaseEventOptionalFields.Series) && rel.HasSeries) { Series = new ReleaseEventSeriesContract(rel.Series, languagePreference); } if (fields.HasFlag(ReleaseEventOptionalFields.SongList) && rel.SongList != null) { SongList = new SongListBaseContract(rel.SongList); } if (fields.HasFlag(ReleaseEventOptionalFields.Tags)) { Tags = rel.Tags.ActiveUsages.Select(t => new TagUsageForApiContract(t, languagePreference)).ToArray(); } if (fields.HasFlag(ReleaseEventOptionalFields.Venue) && rel.Venue != null) { Venue = new VenueForApiContract(rel.Venue, languagePreference, VenueOptionalFields.None); } if (fields.HasFlag(ReleaseEventOptionalFields.WebLinks)) { WebLinks = rel.WebLinks.Select(w => new WebLinkForApiContract(w)).ToArray(); } }
public ReleaseEventForEditContract(ReleaseEvent releaseEvent, ContentLanguagePreference languagePreference, IUserPermissionContext userContext, IUserIconFactory userIconFactory) : base(releaseEvent, languagePreference, userContext, userIconFactory) { Names = releaseEvent.Names.Select(n => new LocalizedStringWithIdContract(n)).ToArray(); }
public void UnregisterReleaseHook(ReleaseEvent methodObject) { if (lockReleaseEvents.Contains(methodObject)) { lockReleaseEvents.Remove(methodObject); } }
public void RegisterReleaseHook(ReleaseEvent methodObject) { lockReleaseEvents.Add(methodObject); }
public ReleaseEventWithArchivedVersionsContract(ReleaseEvent ev, ContentLanguagePreference languagePreference) : base(ev, languagePreference) { ArchivedVersions = ev.ArchivedVersionsManager.Versions.Select( a => new ArchivedEventVersionContract(a)).ToArray(); }
private ReleaseEventForEditContract Contract(ReleaseEvent releaseEvent) { return(new ReleaseEventForEditContract(releaseEvent, ContentLanguagePreference.Default, permissionContext, null)); }
private void AreEqual(ReleaseEvent expected, ReleaseEventFindResultContract actual) { actual.Should().NotBeNull("Result"); actual.EventName.Should().Be(expected.DefaultName, "EventName"); actual.EventId.Should().Be(expected.Id, "EventId"); }
public ReleaseEventWithArchivedVersionsContract(ReleaseEvent ev) : base(ev) { ArchivedVersions = ev.ArchivedVersionsManager.Versions.Select( a => new ArchivedEventVersionContract(a)).ToArray(); }
protected void OnReleased() { ReleaseEvent?.Invoke(this, EventArgs.Empty); }
private object ConvertPayload() { switch (Event) { case PingEvent.EventString: return(PingEvent.FromJson(PayloadText)); case CommitCommentEvent.EventString: return(CommitCommentEvent.FromJson(PayloadText)); case CreateEvent.EventString: return(CreateEvent.FromJson(PayloadText)); case DeleteEvent.EventString: return(DeleteEvent.FromJson(PayloadText)); case DeploymentEvent.EventString: return(DeploymentEvent.FromJson(PayloadText)); case DeploymentStatusEvent.EventString: return(DeploymentStatusEvent.FromJson(PayloadText)); case ForkEvent.EventString: return(ForkEvent.FromJson(PayloadText)); case GollumEvent.EventString: return(GollumEvent.FromJson(PayloadText)); case InstallationEvent.EventString: return(InstallationEvent.FromJson(PayloadText)); case InstallationRepositoriesEvent.EventString: return(InstallationRepositoriesEvent.FromJson(PayloadText)); case IssueCommentEvent.EventString: return(IssueCommentEvent.FromJson(PayloadText)); case IssuesEvent.EventString: return(IssuesEvent.FromJson(PayloadText)); case LabelEvent.EventString: return(LabelEvent.FromJson(PayloadText)); case MemberEvent.EventString: return(MemberEvent.FromJson(PayloadText)); case MembershipEvent.EventString: return(MembershipEvent.FromJson(PayloadText)); case MilestoneEvent.EventString: return(MilestoneEvent.FromJson(PayloadText)); case OrganizationEvent.EventString: return(OrganizationEvent.FromJson(PayloadText)); case OrgBlockEvent.EventString: return(OrgBlockEvent.FromJson(PayloadText)); case PageBuildEvent.EventString: return(PageBuildEvent.FromJson(PayloadText)); case ProjectCardEvent.EventString: return(ProjectCardEvent.FromJson(PayloadText)); case ProjectColumnEvent.EventString: return(ProjectColumnEvent.FromJson(PayloadText)); case ProjectEvent.EventString: return(ProjectEvent.FromJson(PayloadText)); case PublicEvent.EventString: return(PublicEvent.FromJson(PayloadText)); case PullRequestEvent.EventString: return(PullRequestEvent.FromJson(PayloadText)); case PullRequestReviewEvent.EventString: return(PullRequestReviewEvent.FromJson(PayloadText)); case PullRequestReviewCommentEvent.EventString: return(PullRequestReviewCommentEvent.FromJson(PayloadText)); case PushEvent.EventString: return(PushEvent.FromJson(PayloadText)); case ReleaseEvent.EventString: return(ReleaseEvent.FromJson(PayloadText)); case RepositoryEvent.EventString: return(RepositoryEvent.FromJson(PayloadText)); case StatusEvent.EventString: return(StatusEvent.FromJson(PayloadText)); case WatchEvent.EventString: return(WatchEvent.FromJson(PayloadText)); default: throw new NotImplementedException( $"Event Type: `{Event}` is not implemented. Want it added? Open an issue at https://github.com/promofaux/GithubWebhooks"); } }
protected void Release() { ReleaseEvent?.Invoke((T)this); }