/// <summary> /// Adds a track to a conference /// </summary> /// <param name="trackId">Unique identity of a track</param> /// <param name="talkId">Unique identity of a talk</param> /// <param name="title">Title of Talk</param> /// <param name="description">Description of talk</param> /// <param name="duration">Duration/Length of talk</param> /// <returns>An instance of <c>TrackId</c></returns> public Result <TalkId> AddTalkToTrack(TrackId trackId, TalkId talkId, Title title, Description description, Duration duration) { var track = _tracks.FirstOrDefault(t => t.TrackId == trackId); if (track == null) { return(InvalidResult <TalkId> .Create("Invalid track")); } var talkAddedToTrackResult = track.CreateAndAddTalk(talkId, title, description, duration); if (talkAddedToTrackResult.IsFailure) { return(InvalidResult <TalkId> .Create(talkAddedToTrackResult.Error.Value.Message)); } var addedTalk = talkAddedToTrackResult.Data; var talkCreated = new TalkCreated(addedTalk.TalkId, addedTalk.Title, addedTalk.Description, addedTalk.StartTime); AddEvent(talkCreated); var trackAddedToTack = new TalkAddedToTrack(track.TrackId, addedTalk.TalkId, addedTalk.Title, addedTalk.StartTime); AddEvent(trackAddedToTack); return(SuccessResult <TalkId> .Create(talkId)); }
/// <summary> /// Creates an instance of <c>ConferenceId</c> /// </summary> /// <param name="id">Unique identity of conference</param> /// <returns>An instance of <c>ConferenceId</c></returns> public static Result <ConferenceId> Create(Guid id) { if (id == Guid.Empty) { return(InvalidResult <ConferenceId> .Create("Invalid Id")); } var conferenceId = new ConferenceId(id); return(SuccessResult <ConferenceId> .Create(conferenceId)); }
/// <summary> /// Creates an instance of <c>TrackId</c> /// </summary> /// <param name="id">Unique identity of Track</param> /// <returns>An instance of <c>TrackId</c></returns> public static Result <TrackId> Create(Guid id) { if (id == Guid.Empty) { return(InvalidResult <TrackId> .Create("Invalid Id")); } var trackId = new TrackId(id); return(SuccessResult <TrackId> .Create(trackId)); }
/// <summary> /// Creates an instance of <c>Description</c> /// </summary> /// <param name="description">Description</param> /// <returns>An instance of <c>Description</c></returns> public static Result <Description> Create(string description) { if (string.IsNullOrWhiteSpace(description)) { return(InvalidResult <Description> .Create("Invalid description")); } var descriptionObject = new Description(description); return(SuccessResult <Description> .Create(descriptionObject)); }
/// <summary> /// Creates an instance of <c>StartTime</c> /// </summary> /// <param name="startTime">Start time</param> /// <returns>An instance of <c>StartTime</c></returns> public static Result <TalkStartTime> Create(DateTime startTime) { // start time must be between 9-12 or 1-4PM if ((startTime >= MorningSessionStartTime && startTime < MorningSessionEndTime) || (startTime >= AfternoonSessionStartTime && startTime < AfternoonSessionEndTime)) { var startObject = new TalkStartTime(startTime); return(SuccessResult <TalkStartTime> .Create(startObject)); } return(InvalidResult <TalkStartTime> .Create("Invalid start time")); }
public void ReturnsBadRequestObjectResultIfInvalid() { var input = new InvalidResult <string>("error"); var result = controller.FromResult(input); Assert.IsInstanceOfType(result, typeof(BadRequestObjectResult)); var resultCast = result as BadRequestObjectResult; Assert.IsTrue((resultCast.Value as List <string>).FirstOrDefault() == input.Errors.FirstOrDefault()); }
public override void Handle(DeleteDictionaryCommand command) { Dictionary dict = _dbContext.Dictionaries.Find(command.Id); if (dict == null) { _result = new InvalidResult() .WithError("No dictionary of this id has been found"); return; } _dbContext.Dictionaries.Remove(dict); _dbContext.SaveChanges(); _result = new SuccessResult(); }
private static bool TreatmentResolutionIsValidForPickedInventoryItems(IEnumerable <PickedInventoryItem> pickedInventory, LotAttribute lotAttribute, out IResult result) { result = null; var pickedInventoryWithInvalidTreatment = pickedInventory.FirstOrDefault(i => lotAttribute.AttributeName.ValidTreatments.All(t => t.TreatmentId != i.TreatmentId)); if (pickedInventoryWithInvalidTreatment == null) { return(true); } result = new InvalidResult(string.Format(UserMessages.TreatmentOnUnarchivedPickedInventoryDoesNotResolveDefect, pickedInventoryWithInvalidTreatment.Treatment.ShortName, pickedInventoryWithInvalidTreatment.ToPickedInventoryItemKey(), lotAttribute.AttributeName.Name)); return(false); }
/// <summary> /// Creates an instance of <c>Title</c> /// </summary> /// <param name="title">Title</param> /// <returns>An instance of <c>Title</c></returns> public static Result <Title> Create(string title) { if (string.IsNullOrWhiteSpace(title)) { return(InvalidResult <Title> .Create("Invalid title")); } if (title.Any(char.IsDigit)) { return(InvalidResult <Title> .Create("Title with number not allowed")); } var titleObject = new Title(title); return(SuccessResult <Title> .Create(titleObject)); }
/// <summary> /// Creates an instance of <c>Duration</c> /// </summary> /// <param name="span">Interval</param> /// <returns>An instance of <c>Duration</c></returns> public static Result <Duration> Create(TimeSpan span) { if (span.TotalMinutes < MinimumDurationInMinutes) { return(InvalidResult <Duration> .Create($"Duration cannot be less than {MinimumDurationInMinutes} minutes")); } if (span.TotalMinutes > MaximumDurationInMinutes) { return(InvalidResult <Duration> .Create($"Duration cannot be greater than {MaximumDurationInMinutes} minutes")); } var durationObject = new Duration(span); return(SuccessResult <Duration> .Create(durationObject)); }
public override void Handle(DeleteMarkCommand command) { Mark mark = (from t in _dbContext.Marks where t.Id == command.Id && t.DictionaryId == command.DictionaryId select t).SingleOrDefault(); if (mark == null) { _result = new InvalidResult() .WithError("No theme of this id has been found."); } _dbContext.Marks.Remove(mark); _dbContext.SaveChanges(); _result = new SuccessResult(); }
private static bool TreatmentResolutionIsValidForInventory(IEnumerable <Data.Models.Inventory> inventory, LotAttribute lotAttribute, out IResult result) { result = null; var inventoryWithInvalidTreatment = inventory.FirstOrDefault(i => lotAttribute.AttributeName.ValidTreatments.All(t => t.TreatmentId != i.TreatmentId)); if (inventoryWithInvalidTreatment == null) { return(true); } result = new InvalidResult(string.Format(UserMessages.TreatmentOnInventoryDoesNotResolveDefect, inventoryWithInvalidTreatment.Treatment.ShortName, inventoryWithInvalidTreatment.ToInventoryKey(), lotAttribute.AttributeName.Name)); return(false); }
/// <summary> /// Adds a talk to a track /// </summary> /// <param name="talkId">Unique identity of a talk to be added to track</param> /// <param name="title">Title of Talk</param> /// <param name="description">Description of talk</param> /// <param name="duration">Duration/Length of talk</param> /// <returns>An instance of <c>Talk</c></returns> public Result <Talk> CreateAndAddTalk(TalkId talkId, Title title, Description description, Duration duration) { var alreadyExistingTalk = _talks.FirstOrDefault(t => t.TalkId == talkId); if (alreadyExistingTalk != null) { return(InvalidResult <Talk> .Create("Talk already added")); } DateTime startTime; if (_nextMorningSession.TimeOfDay.Add(duration.Value) <= _morningSessionEnd.TimeOfDay) { // Add to morning startTime = _nextMorningSession; _nextMorningSession = _nextMorningSession.Add(duration.Value); } else if (_nextAfternoonSession.TimeOfDay.Add(duration.Value) <= _afternoonSessionEnd.TimeOfDay) { // Add to afternoon startTime = _nextAfternoonSession; _nextAfternoonSession = _nextAfternoonSession.Add(duration.Value); } else { return(InvalidResult <Talk> .Create("No slot available in the track for the specified duration")); } var startTimeResult = TalkStartTime.Create(startTime); if (startTimeResult.IsFailure) { return(InvalidResult <Talk> .Create(startTimeResult.Error.Value.Message)); } var createTalkResult = Talk.Create(talkId, title, description, duration, startTimeResult.Data); if (createTalkResult.IsFailure) { return(InvalidResult <Talk> .Create(createTalkResult.Error.Value.Message)); } _talks.Add(createTalkResult.Data); return(SuccessResult <Talk> .Create(createTalkResult.Data)); }
public override void Handle(ChangeMarkCommand command) { Mark mark = _dbContext.Marks.Find(command.Id); if (mark == null) { _result = new InvalidResult() .WithError("No mark of this id has been found."); } mark.ChangeName(command.Name); mark.ChangeDescription(command.Description); _dbContext.Marks.Update(mark); _dbContext.SaveChanges(); _result = new SuccessResult(); }
public override void Handle(CreateMarkCommand command) { Dictionary dict = _dbContext.Dictionaries.Find(command.DictionaryId); if (dict == null) { _result = new InvalidResult() .WithError("No dictionary of this id has been found."); } Mark newMark = new Mark(command.Name, command.Description, dict); _dbContext.Marks.Add(newMark); _dbContext.SaveChanges(); _result = new SuccessResult(); command.Id = newMark.Id; }
public override void Handle(CreateWordCommand command) { Theme theme = (from d in _dbContext.Themes where d.Id == command.ThemeId && d.DictionaryId == command.DictionaryId select d).SingleOrDefault(); if (theme == null) { _result = new InvalidResult().WithError("No theme of this id has been found."); return; } Word newWord = new Word(command.Term, command.Meaning, theme); _dbContext.Words.Add(newWord); _dbContext.SaveChanges(); _result = new SuccessResult(); }
public override void Handle(EditThemeCommand command) { Theme themeToChange = _dbContext.Themes.Find(command.Id); if (themeToChange == null) { _result = new InvalidResult() .WithError("No theme of this id has been found."); } Theme parent = _dbContext.Themes.Find(command.ParentId); themeToChange.ChangeName(command.Name); themeToChange.ChangeParent(parent); _dbContext.Themes.Update(themeToChange); _dbContext.SaveChanges(); _result = new SuccessResult(); }
/// <summary> /// Adds a track to a conference /// </summary> /// <param name="trackId">Unique identity of a track</param> /// <returns>An instance of <c>TrackId</c></returns> public Result <TrackId> AddTrack(TrackId trackId) { var addTrackResult = Track.Create(trackId); if (addTrackResult.IsFailure) { return(InvalidResult <TrackId> .Create(addTrackResult.Error.Value.Message)); } var addedTrack = addTrackResult.Data; var trackCreated = new TrackCreated(addedTrack.TrackId); AddEvent(trackCreated); _tracks.Add(addedTrack); var trackAddedToConference = new TrackAddedToConference(addedTrack.TrackId, ConferenceId); AddEvent(trackAddedToConference); return(SuccessResult <TrackId> .Create(addedTrack.TrackId)); }
public override void Handle(DeleteThemeCommand command) { Theme theme = (from t in _dbContext.Themes where t.Id == command.Id && t.DictionaryId == command.DictionaryId select t).SingleOrDefault(); if (theme == null) { _result = new InvalidResult() .WithError("No theme of this id has been found."); } foreach (Word word in theme.Words) { _dbContext.Words.Remove(word); } _dbContext.Themes.Remove(theme); _dbContext.SaveChanges(); _result = new SuccessResult(); }
public override void Handle(AddMarkToDictionaryCommand command) { Mark mark = _dbContext.Marks.Find(command.MarkId); Dictionary dictionary = _dbContext.Dictionaries.Find(command.DictionaryId); if (mark == null) { _result = new InvalidResult().WithError("No mark of this id has been found"); return; } if (dictionary == null) { _result = new InvalidResult().WithError("No dictionary of this id has been found"); return; } dictionary.AddMark(mark); _dbContext.SaveChanges(); _result = new SuccessResult(); }
public override void Handle(CreateThemeCommand command) { Dictionary dict = _dbContext.Dictionaries.Find(command.DictionaryId); Theme parent = _dbContext.Themes.Find(command.ParentId); if (dict == null) { _result = new InvalidResult() .WithError("No dictionary of this id has been found."); } Theme newTheme = new ThemeBuilder() .SetName(command.Name) .SetDictionary(dict) .SetParent(parent) .Build(); _dbContext.Themes.Add(newTheme); _dbContext.SaveChanges(); _result = new SuccessResult(); command.Id = newTheme.Id; }
protected virtual void OnInvalidResult(ValidationHandlerArgs e) { InvalidResult?.Invoke(this, e); }