private LoadTestValidationSummary OkToAddOrModify(LoadTest loadTest) { LoadTestValidationSummary validationSummary = new LoadTestValidationSummary(); validationSummary.OkToAddOrModify = true; validationSummary.ReasonForValidationFailure = string.Empty; List <LoadTest> loadtestsOnSameAgent = LoadTests.Where(l => l.AgentId == loadTest.AgentId && DatesOverlap(l, loadTest)).ToList(); if (loadtestsOnSameAgent.Count >= 2) { validationSummary.OkToAddOrModify = false; validationSummary.ReasonForValidationFailure += "The selected load test agent is already booked for this period."; } if (loadTest.EngineerId.HasValue) { List <LoadTest> loadtestsOnSameEngineer = LoadTests.Where(l => l.EngineerId.Value == loadTest.EngineerId.Value && DatesOverlap(l, loadTest)).ToList(); if (loadtestsOnSameEngineer.Any()) { validationSummary.OkToAddOrModify = false; validationSummary.ReasonForValidationFailure += "The selected load test engineer is already booked for this period."; } } return(validationSummary); }
public AddOrUpdateLoadTestsValidationResult AddOrUpdateLoadTests(IList <LoadTest> loadTestsAddedOrUpdated) { List <LoadTest> toBeInserted = new List <LoadTest>(); List <LoadTest> toBeUpdated = new List <LoadTest>(); List <LoadTest> failed = new List <LoadTest>(); StringBuilder resultSummaryBuilder = new StringBuilder(); string NL = Environment.NewLine; foreach (LoadTest loadtest in loadTestsAddedOrUpdated) { LoadTest existing = LoadTests.FirstOrDefault(l => l.Id == loadtest.Id); if (existing != null) { LoadTestValidationSummary validationSummary = OkToAddOrModify(loadtest); if (validationSummary.OkToAddOrModify) { existing.Update (loadtest.Parameters, loadtest.AgentId, loadtest.CustomerId, loadtest.EngineerId, loadtest.LoadTestTypeId, loadtest.ProjectId, loadtest.ScenarioId); toBeUpdated.Add(existing); resultSummaryBuilder.Append(string.Format("Load test ID {0} (update) successfully validated.{1}", existing.Id, NL)); } else { failed.Add(loadtest); resultSummaryBuilder.Append(string.Format("Loaf test ID {0} (update) validation failed: {1}{2}.", existing.Id, validationSummary.ReasonForValidationFailure, NL)); } } else { LoadTestValidationSummary validationSummary = OkToAddOrModify(loadtest); if (validationSummary.OkToAddOrModify) { LoadTests.Add(loadtest); toBeInserted.Add(loadtest); resultSummaryBuilder.Append(string.Format("Load test ID {0} (insertion) successfully validated.{1}", loadtest.Id, NL)); } else { failed.Add(loadtest); resultSummaryBuilder.Append(string.Format("Load test ID {0} (insertion) validation failed: {1}{2}.", loadtest.Id, validationSummary.ReasonForValidationFailure, NL)); } } } AddOrUpdateLoadTestsValidationResult validationResult = new AddOrUpdateLoadTestsValidationResult(toBeInserted, toBeUpdated, failed, resultSummaryBuilder.ToString()); TimetableChangedEventArgs args = new TimetableChangedEventArgs(validationResult); DomainEventMediator.RaiseEvent(args); return(new AddOrUpdateLoadTestsValidationResult(toBeInserted, toBeUpdated, failed, resultSummaryBuilder.ToString())); }