private LoadtestValidationSummary OkToAddOrModify(Loadtest loadtest) { LoadtestValidationSummary validationSummary = new LoadtestValidationSummary(); validationSummary.OkToAddOrModify = true; validationSummary.ReasonForValidationFailure = string.Empty; List <Loadtest> loadtestsOnSameAgent = (from l in Loadtests where l.AgentId == loadtest.AgentId && DatesOverlap(l, loadtest) select l).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 = (from l in Loadtests where loadtest.EngineerId.HasValue && l.EngineerId.Value == loadtest.EngineerId.Value && DatesOverlap(l, loadtest) select l).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 = (from l in Loadtests where l.Id == loadtest.Id select l).FirstOrDefault(); if (existing != null) //update { 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("Load test ID {0} (update) validation failed: {1}{2}.", existing.Id, validationSummary.ReasonForValidationFailure, NL)); } } else //insertion { 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)); } } } return(new AddOrUpdateLoadtestsValidationResult(toBeInserted, toBeUpdated, failed, resultSummaryBuilder.ToString())); }
private bool DatesOverlap(Loadtest loadtestOne, Loadtest loadtestTwo) { return(loadtestOne.Parameters.StartDateUtc < loadtestTwo.Parameters.GetEndDateUtc() && loadtestTwo.Parameters.StartDateUtc < loadtestOne.Parameters.GetEndDateUtc()); }