public ActionResult Find(ReleaseEventFindResultContract model, string query, string EventTarget) { bool skipSeries = false; if (EventTarget != "Series") { skipSeries = true; if (string.IsNullOrEmpty(model.EventName)) { ModelState.AddModelError("EventName", "Name must be specified"); } } if (!ModelState.IsValid) { return(View(model)); } var contract = new ReleaseEventDetailsContract { Name = model.EventName, Series = (skipSeries ? null : model.Series), SeriesNumber = model.SeriesNumber, SeriesSuffix = string.Empty // TODO: add support for entering this }; var ev = queries.Update(contract); return(RedirectToAction("Edit", new { id = ev.Id })); }
public ActionResult Find(ReleaseEventFindResultContract model, string query, string EventTarget) { bool skipSeries = false; if (EventTarget != "Series") { skipSeries = true; if (string.IsNullOrEmpty(model.EventName)) { ModelState.AddModelError("EventName", "Name must be specified"); } } if (!ModelState.IsValid) { return(View(model)); } var contract = new ReleaseEventDetailsContract { Name = model.EventName, Series = (skipSeries ? null : model.Series), SeriesNumber = model.SeriesNumber }; var ev = Service.UpdateEvent(contract); if (query != ev.Name) { Services.Albums.UpdateAllReleaseEventNames(query, ev.Name); } return(RedirectToAction("Edit", new { id = ev.Id })); }
public void Update_ChangeName_Duplicate() { var contract = new ReleaseEventDetailsContract(existingEvent, ContentLanguagePreference.Default); contract.Id = 0; // Simulate new event queries.Update(contract, null); }
public void CopyNonEditableProperties(ReleaseEventDetailsContract contract) { ParamIs.NotNull(() => contract); AllSeries = contract.AllSeries; CopyNonEditableProperties(contract.Series); }
public void CopyNonEditableProperties(ReleaseEventDetailsContract contract) { ParamIs.NotNull(() => contract); OldName = contract.Name; PictureMime = contract.PictureMime; UrlSlug = contract.UrlSlug; Version = contract.Version; }
public EventEdit(ReleaseEventDetailsContract contract) : this() { ParamIs.NotNull(() => contract); Date = contract.Date; Description = contract.Description; Id = contract.Id; Name = contract.Name; SeriesNumber = contract.SeriesNumber; CopyNonEditableProperties(contract); }
public void Create_NoSeries() { var contract = new ReleaseEventDetailsContract { Description = string.Empty, Name = "Vocaloid Paradise", }; var result = CallUpdate(contract); Assert.IsTrue(repository.Contains(result), "Event was saved to repository"); Assert.AreEqual("Vocaloid Paradise", result.Name, "Name"); Assert.IsNull(result.Series, "Series"); }
public void CopyNonEditableProperties(ReleaseEventDetailsContract contract, IUserPermissionContext userContext) { AllowedEntryStatuses = EntryPermissionManager.AllowedEntryStatuses(userContext).ToArray(); if (contract != null) { Deleted = contract.Deleted; OldName = contract.Name; PictureMime = contract.PictureMime; UrlSlug = contract.UrlSlug; Version = contract.Version; } }
public void Update_ChangeSeriesSuffix() { var contract = new ReleaseEventDetailsContract(existingEvent, ContentLanguagePreference.Default); contract.SeriesSuffix = "Fall"; var result = CallUpdate(contract); Assert.AreEqual(2013, contract.SeriesNumber, "SeriesNumber"); Assert.AreEqual("Fall", contract.SeriesSuffix, "SeriesSuffix"); Assert.AreEqual("M3 2013 Fall", result.Name, "Name"); Assert.AreEqual("M3 2013 Fall", album.OriginalReleaseEventName, "OriginalReleaseEventName for album"); }
public void Update_ChangeName_UseSeriesName() { var contract = new ReleaseEventDetailsContract(existingEvent, ContentLanguagePreference.Default); contract.Name = "New name"; var result = CallUpdate(contract); Assert.AreEqual("M3 2013 Spring", result.Name, "Name was not updated"); var archivedVersions = repository.List <ArchivedReleaseEventVersion>(); Assert.AreEqual(1, archivedVersions.Count, "Archived version was created"); Assert.AreEqual(ReleaseEventEditableFields.Nothing, archivedVersions[0].Diff.ChangedFields.Value, "Changed fields in diff"); }
public EventEdit(ReleaseEventDetailsContract contract) : this() { ParamIs.NotNull(() => contract); CustomName = contract.CustomName = contract.CustomName; Date = contract.Date; Description = contract.Description; Id = contract.Id; Name = OldName = contract.Name; Series = contract.Series; SeriesNumber = contract.SeriesNumber; SeriesSuffix = contract.SeriesSuffix; WebLinks = contract.WebLinks; }
public void Create_WithSeriesNoSuffix() { var contract = new ReleaseEventDetailsContract { Description = string.Empty, Series = new ReleaseEventSeriesContract(series), SeriesNumber = 2014, SeriesSuffix = string.Empty, }; var result = CallUpdate(contract); Assert.IsTrue(repository.Contains(result), "Event was saved to repository"); Assert.AreEqual("M3 2014", result.Name, "Name"); Assert.AreEqual(2014, result.SeriesNumber, "SeriesNumber"); Assert.AreEqual(string.Empty, result.SeriesSuffix, "SeriesSuffix"); Assert.AreSame(series, result.Series, "Series"); }
public void Update_ChangeSeriesSuffix() { var contract = new ReleaseEventDetailsContract(existingEvent, ContentLanguagePreference.Default); contract.SeriesSuffix = "Fall"; var result = CallUpdate(contract); Assert.AreEqual(2013, contract.SeriesNumber, "SeriesNumber"); Assert.AreEqual("Fall", contract.SeriesSuffix, "SeriesSuffix"); Assert.AreEqual("M3 2013 Fall", result.Name, "Name"); Assert.AreEqual("M3 2013 Fall", album.OriginalReleaseEvent?.Name, "OriginalReleaseEventName for album"); var archivedVersions = repository.List <ArchivedReleaseEventVersion>(); Assert.AreEqual(1, archivedVersions.Count, "Archived version was created"); Assert.AreEqual(ReleaseEventEditableFields.SeriesSuffix, archivedVersions[0].Diff.ChangedFields.Value, "Changed fields in diff"); }
public EventEdit(ReleaseEventDetailsContract contract) : this() { ParamIs.NotNull(() => contract); CustomName = contract.CustomName = contract.CustomName; Date = contract.Date; Description = contract.Description; Id = contract.Id; Name = OldName = contract.Name; Series = contract.Series; SeriesNumber = contract.SeriesNumber; SeriesSuffix = contract.SeriesSuffix; SongList = contract.SongList; Venue = contract.Venue; WebLinks = contract.WebLinks; CopyNonEditableProperties(contract); }
public void CopyNonEditableProperties(ReleaseEventDetailsContract contract) { ParamIs.NotNull(() => contract); OldName = contract.Name; }
private ReleaseEvent CallUpdate(ReleaseEventDetailsContract contract) { var result = queries.Update(contract, null); return(repository.Load(result.Id)); }
public ReleaseEventContract UpdateEvent(ReleaseEventDetailsContract contract) { ParamIs.NotNull(() => contract); PermissionContext.VerifyPermission(PermissionToken.ManageDatabase); return(HandleTransaction(session => { ReleaseEvent ev; if (contract.Id == 0) { if (contract.Series != null) { var series = session.Load <ReleaseEventSeries>(contract.Series.Id); ev = new ReleaseEvent(contract.Description, contract.Date, series, contract.SeriesNumber); series.Events.Add(ev); } else { ev = new ReleaseEvent(contract.Description, contract.Date, contract.Name); } session.Save(ev); Archive(session, ev, new ReleaseEventDiff(), EntryEditEvent.Created); AuditLog("created " + ev, session); } else { ev = session.Load <ReleaseEvent>(contract.Id); var diff = new ReleaseEventDiff(); if (ev.Date != contract.Date) { diff.Date = true; } if (ev.Description != contract.Description) { diff.Description = true; } if (ev.Name != contract.Name) { diff.Name = true; } if (ev.SeriesNumber != contract.SeriesNumber) { diff.SeriesNumber = true; } ev.Date = contract.Date; ev.Description = contract.Description; ev.Name = contract.Name; ev.SeriesNumber = contract.SeriesNumber; session.Update(ev); Archive(session, ev, diff, EntryEditEvent.Updated); var logStr = string.Format("updated properties for {0} ({1})", CreateEntryLink(ev), diff.ChangedFieldsString); AuditLog(logStr, session); } return new ReleaseEventContract(ev); })); }
/// <summary> /// Updates or creates release event. /// /// Album release event names will be updated as well if the name changed. /// </summary> /// <param name="contract">Updated contract. Cannot be null.</param> /// <returns>Updated release event data. Cannot be null.</returns> public ReleaseEventContract Update(ReleaseEventDetailsContract contract) { ParamIs.NotNull(() => contract); PermissionContext.VerifyManageDatabase(); return(repository.HandleTransaction(session => { ReleaseEvent ev; if (contract.Id == 0) { if (contract.Series != null) { var series = session.OfType <ReleaseEventSeries>().Load(contract.Series.Id); ev = new ReleaseEvent(contract.Description, contract.Date, series, contract.SeriesNumber, contract.SeriesSuffix); series.Events.Add(ev); } else { ev = new ReleaseEvent(contract.Description, contract.Date, contract.Name); } session.Save(ev); Archive(session, ev, new ReleaseEventDiff(), EntryEditEvent.Created); session.AuditLogger.AuditLog("created " + ev); } else { ev = session.Load(contract.Id); var diff = new ReleaseEventDiff(); if (ev.Date != contract.Date) { diff.Date = true; } if (ev.Description != contract.Description) { diff.Description = true; } if (ev.Name != contract.Name) { diff.Name = true; } if (ev.SeriesNumber != contract.SeriesNumber) { diff.SeriesNumber = true; } if (ev.SeriesSuffix != contract.SeriesSuffix) { diff.SeriesSuffix = true; } var oldName = ev.Name; ev.Date = contract.Date; ev.Description = contract.Description; ev.Name = contract.Name; ev.SeriesNumber = contract.SeriesNumber; ev.SeriesSuffix = contract.SeriesSuffix; ev.UpdateNameFromSeries(); UpdateAllReleaseEventNames(session, oldName, ev.Name); session.Update(ev); Archive(session, ev, diff, EntryEditEvent.Updated); var logStr = string.Format("updated properties for {0} ({1})", entryLinkFactory.CreateEntryLink(ev), diff.ChangedFieldsString); session.AuditLogger.AuditLog(logStr); } return new ReleaseEventContract(ev); })); }
/// <summary> /// Updates or creates release event. /// /// Album release event names will be updated as well if the name changed. /// </summary> /// <param name="contract">Updated contract. Cannot be null.</param> /// <returns>Updated release event data. Cannot be null.</returns> public ReleaseEventContract Update(ReleaseEventDetailsContract contract) { ParamIs.NotNull(() => contract); PermissionContext.VerifyManageDatabase(); return(repository.HandleTransaction(session => { ReleaseEvent ev; if (contract.Id == 0) { var diff = new ReleaseEventDiff(); if (!contract.Series.IsNullOrDefault()) { var series = session.OfType <ReleaseEventSeries>().Load(contract.Series.Id); ev = new ReleaseEvent(contract.Description, contract.Date, series, contract.SeriesNumber, contract.SeriesSuffix, contract.Name, contract.CustomName); series.Events.Add(ev); } else { ev = new ReleaseEvent(contract.Description, contract.Date, contract.Name); } var weblinksDiff = WebLink.Sync(ev.WebLinks, contract.WebLinks, ev); if (weblinksDiff.Changed) { diff.WebLinks.Set(); } CheckDuplicateName(session, ev); session.Save(ev); var archived = Archive(session, ev, diff, EntryEditEvent.Created, string.Empty); AddEntryEditedEntry(session.OfType <ActivityEntry>(), archived); session.AuditLogger.AuditLog(string.Format("created {0}", entryLinkFactory.CreateEntryLink(ev))); } else { ev = session.Load(contract.Id); var diff = new ReleaseEventDiff(DoSnapshot(ev, session)); if (!ev.Date.Equals(contract.Date)) { diff.Date.Set(); } if (ev.Description != contract.Description) { diff.Description.Set(); } if (ev.Name != contract.Name && (contract.Series == null || contract.CustomName)) { diff.Name.Set(); } if (!ev.Series.NullSafeIdEquals(contract.Series)) { diff.Series.Set(); } if (ev.SeriesNumber != contract.SeriesNumber) { diff.SeriesNumber.Set(); } if (ev.SeriesSuffix != contract.SeriesSuffix) { diff.SeriesSuffix.Set(); } var oldName = ev.Name; ev.Series = session.OfType <ReleaseEventSeries>().NullSafeLoad(contract.Series); ev.CustomName = contract.CustomName; ev.Date = contract.Date; ev.Description = contract.Description; ev.Name = contract.Name; ev.SeriesNumber = contract.SeriesNumber; ev.SeriesSuffix = contract.SeriesSuffix; ev.UpdateNameFromSeries(); var weblinksDiff = WebLink.Sync(ev.WebLinks, contract.WebLinks, ev); if (weblinksDiff.Changed) { diff.WebLinks.Set(); session.OfType <ReleaseEventWebLink>().Sync(weblinksDiff); } CheckDuplicateName(session, ev); session.Update(ev); var archived = Archive(session, ev, diff, EntryEditEvent.Updated, string.Empty); AddEntryEditedEntry(session.OfType <ActivityEntry>(), archived); var logStr = string.Format("updated properties for {0} ({1})", entryLinkFactory.CreateEntryLink(ev), diff.ChangedFieldsString); session.AuditLogger.AuditLog(logStr); } return new ReleaseEventContract(ev); })); }