public ParseFileResult ParseFile(Stream fileStream, LocationInfo targetLocation, IFieldDataResultsAppender appender, ILog logger) { var parser = new AquaCalcCsvParser(fileStream) { Settings = appender.GetPluginConfigurations() }; if (!parser.CanParse()) { return(ParseFileResult.CannotParse()); } var parsedData = parser.Parse(); if (targetLocation == null) { targetLocation = appender.GetLocationByIdentifier(parsedData.GageId); } var visitDetails = new VisitMapper(parsedData).GetVisitDetails(targetLocation.UtcOffset); logger.Info($"Got visit details: '{visitDetails.StartDate:s}@{targetLocation.LocationIdentifier}'"); var visitInfo = appender.AddFieldVisit(targetLocation, visitDetails); AppendActivity(appender, parsedData, visitInfo, logger); return(ParseFileResult.SuccessfullyParsedAndDataValid()); }
public void GetVisitDetails_ReturnsCorrectVisitDateAndParty() { var mapper = new VisitMapper(_parsedData); var utcOffset = TimeSpan.FromHours(-8); var visitDetails = mapper.GetVisitDetails(utcOffset); Assert.That(visitDetails.StartDate, Is.EqualTo(new DateTimeOffset(2018, 01, 03, 0, 0, 0, utcOffset))); Assert.That(visitDetails.Party, Is.EqualTo("1482")); }
public ActionResult <IEnumerable <Visit> > GetAll() { var result = _visitManager.GetAll(); if (result.IsInvalid) { return(new StatusCodeResult(500)); } return(result.Object .Select(entity => VisitMapper.ToModel(entity)) .ToList()); }
private VisitsController SetupController(IEnumerable <Visit> visits = null, StringBuilder stringBuilder = null) { visits = visits ?? new List <Visit>(); var visitDataStore = new MockVisitStore(visits.Select(model => VisitMapper.ToEntity(model)).ToList()); var campaigns = CampaignSamples.Get().Select(model => CampaignMapper.ToEntity(model)).ToList(); var campaignStore = new MockCampaignStore(campaigns); var campaignSearch = new SimpleCampaignSearch(campaignStore); var stringWriter = new StringWriter(stringBuilder ?? new StringBuilder()); var pushNotificationProviderFactory = new PushNotificationProviderFactory(stringWriter); var manager = new VisitManager(visitDataStore, campaignSearch, pushNotificationProviderFactory); return(new VisitsController(manager, logger: null)); }
public ActionResult PostBatch([FromBody] IEnumerable <Visit> visits) { var validations = visits.Select(campaign => campaign.Validate()).ToArray(); var summaryValidation = new CommandNotification(validations); if (summaryValidation.IsInvalid) { return(StatusCode(500, summaryValidation.Notifications)); } var entities = visits.Select(model => VisitMapper.ToEntity(model)).ToList(); var result = _visitManager.Load(entities); if (result.IsInvalid) { return(StatusCode(500, result.Notifications)); } return(Ok()); }